From 40b1f7d37f91e4897ddc908616c1e82ea82ce0e4 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 11:58:53 +0800 Subject: [PATCH 001/178] update --- LFLiveKit.podspec | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 26791 -> 25193 bytes LFLiveKit/Info.plist | 2 +- Podfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index efc62471..574dae84 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.4" + s.version = "1.6.5" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -19,7 +19,7 @@ Pod::Spec.new do |s| s.requires_arc = true s.dependency "CocoaAsyncSocket", "~> 7.4.1" - s.dependency 'LMGPUImage', '~> 0.1.9' + s.dependency "GPUImage", :git=>"https://github.com/BradLarson/GPUImage" s.dependency "pili-librtmp", "~> 1.0.2" end diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 6eb8b39f0cbc2d04d2aab78dac65cb78d3b65cff..63d898c0030e36f0b9dc37dead478ef58f482376 100644 GIT binary patch delta 10180 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 LYW;q5bvFJF7%Fhc delta 11571 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 Vd*4+d7}ob2${N{s(|@f#^grY{1W^D0 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index f1ed6f98..336748bf 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.4 + 1.6.5 CFBundleSignature ???? CFBundleVersion diff --git a/Podfile b/Podfile index 83e7bfa0..384583de 100755 --- a/Podfile +++ b/Podfile @@ -5,6 +5,6 @@ target "LFLiveKit" do pod 'CocoaAsyncSocket', '~> 7.4.1' pod 'pili-librtmp', '~> 1.0.2' -pod 'LMGPUImage', '~> 0.1.9' +pod 'GPUImage', :git=>’https://github.com/BradLarson/GPUImage’ end \ No newline at end of file From 3539bae752331900b58c44e67d711af25d38f6d4 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 12:01:14 +0800 Subject: [PATCH 002/178] Revert "update" This reverts commit 40b1f7d37f91e4897ddc908616c1e82ea82ce0e4. --- LFLiveKit.podspec | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 25193 -> 26791 bytes LFLiveKit/Info.plist | 2 +- Podfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 574dae84..efc62471 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.5" + s.version = "1.6.4" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -19,7 +19,7 @@ Pod::Spec.new do |s| s.requires_arc = true s.dependency "CocoaAsyncSocket", "~> 7.4.1" - s.dependency "GPUImage", :git=>"https://github.com/BradLarson/GPUImage" + s.dependency 'LMGPUImage', '~> 0.1.9' s.dependency "pili-librtmp", "~> 1.0.2" end diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 63d898c0030e36f0b9dc37dead478ef58f482376..6eb8b39f0cbc2d04d2aab78dac65cb78d3b65cff 100644 GIT binary patch delta 11571 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 Vd*4+d7}ob2${N{s(|@f#^grY{1W^D0 delta 10180 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 LYW;q5bvFJF7%Fhc diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 336748bf..f1ed6f98 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.5 + 1.6.4 CFBundleSignature ???? CFBundleVersion diff --git a/Podfile b/Podfile index 384583de..83e7bfa0 100755 --- a/Podfile +++ b/Podfile @@ -5,6 +5,6 @@ target "LFLiveKit" do pod 'CocoaAsyncSocket', '~> 7.4.1' pod 'pili-librtmp', '~> 1.0.2' -pod 'GPUImage', :git=>’https://github.com/BradLarson/GPUImage’ +pod 'LMGPUImage', '~> 0.1.9' end \ No newline at end of file From a140408a6aaea96d02613d5b42af956ffc13b5bd Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 12:17:23 +0800 Subject: [PATCH 003/178] test --- LFLiveKit.podspec | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 26791 -> 25680 bytes LFLiveKit/Info.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 118277 -> 118345 bytes 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index efc62471..c8517574 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.4" + s.version = "1.6.6" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source_files = "LFLiveKit/**/*.{*}" s.public_header_files = "LFLiveKit/**/*.h" - s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" + s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit","CFNetwork","OpenGLES","QuartzCore","Security" s.library = "z" s.requires_arc = true diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 6eb8b39f0cbc2d04d2aab78dac65cb78d3b65cff..b42a3bec98e5f5984b4f2342212c73d445ffb51b 100644 GIT binary patch delta 10290 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 Sf+RbBeL8-)=Zm*0&Hn)g+_iWB delta 11482 zcmZ`e2Vhf0*l%Cjw9V?CNk`JO&1h3-x|6hN(xy$)tg=gK0~AV&9mo)pV}pvoLj+~D zl#LU?feHwSI1pJ1qJRq(94J$U|D^@g|Mzdwmv{HRb>F^sN8iUceTpxRpg1Eq^-E&p z`0|&_1cXmR=8^-*fuw;fBg;u6SxY)dC+Q;Hq=&2{2a!#rmmE!wA;*%<vLF47q|_Nj^(HM{XiFlUvBGA+C*)pwop4L->cM4Y8SPa+DE-heMEgs9ifg< zr>O6#i_{O)kCdJIiTZ`QLj6wtL0zS8(li}J2h(9Rj~3D4bTl19C(wy>GMz%p=ybY( zE~Ja-V!DJbrFFEPHqe9U!SoP%C_RiGPLH7L>5+5;J&JCmo9R}168$Lc^U;3#3HnKT z5&aasnC_w1)4lWtdLzAw-b`FcW-+sbS<0}?bIdAcHM4BTx9n1i8 z!91`8ECtKKDzF-KgC4LEYy#WBi{K^jGS~^;0B?f#z#;HHI1D}jr@&|6b8s4*0q4O5 za1mSvSHU%K9oz$daWD?W3Fh!PQ5;D$Cx#>8By&IP%1Q%V4F zF2s2dkAiq2#FHT|g}4&p10bFcaXrKhK|!~IXz^EGH%$*zbLur1L+xP#S4q_AH{7Y1ML16Weex1p&@c4CZ>O^6A?)6hu5 zUXSAMm>IK;%U(;9u-3Fq>^`X^BZf@Gq`kyd;u>+CxZ%I*zvjR0ztKx3kz%5XL^4tk zr~R)%oMA&`vW#?65da@Yj3-)%3I2Ee`~3&}2YX2+sY2k{5a&QVC;%SJ4wq&5^2nn9 z1TQ8_5V#KFArKD@fQR{&Df+iH_KZhdWrL=vv&7l?+0zG2%hu*)iPh7OV?kIj#w9CA z3nE9FNHbYURzaK(aRJ1I5Eu25)npAKX@ht;#3KSEBat2cNSVgwrl-jVlOqC%L&%}z zFmgD=qahvx@mPq*^^*1ENTQ0^1@U-@C$NdhkR|2OzVYP5|CiMxWIJNj3GpO|ivz4A zebVQi-x~RG^ss3IGy?}@iE{?zWltYGZD8&IH28Z7Q%T={YQ#@ML~|CzQy`w|e~pC5 zXb~Bi$_3=2fE)|S$H^ziCm}9_csj)85YOl(pCT6{oTU)Ygm_j!4h4H9Wx6%@XJ9BB zGi+L(Mx#M;XmYej4(&kAzf`%3><-XfO|Bu=lItL@g18#u$bdP$WDmK%Un3fb=k{r& zFf%IS1#-uKO8zRj6G?%%4}^GLKngAUSZ0RuZSvg!gLlY1y#48|f z3ZR)0+6*>UAtt{ee_$_&!$steVkJh=2%5qvf+8st0JRWzK->v&S1-j-fT*H^Ant~^C%~YtPxhJ0G`Wb1{{NUz zF;r|nlfe)l!X8yh)DlV>fc`JbQZgzXG0A}VFo+KiFd2cId8H~{rlxW*X*Y%JG_spQ z<{9Nz9>+`=7c*m(SQVuW#6QFv*dJ8Ifz>0MnZf% z+m)T{@KUXqa5FWU8bghxnyGQrc&de(0CDtfg?JmpCqn!Yh_^$$1LB>VsWvPLsi&Rl zpgO583`Jp=KO~@~Nf3V&;*%jhh5a%6KzcSxBHD)0xuf&*8wTWNXREUtbJgk`ZIgGv zz@}X9fV_sLe6@PuX!c}IQrcWIn*k-3*973-RaJ z7)@Ixi}^NC%c!TR<I)C>Ow_9FEX^)kfgLVO;?=cD|h!}|Yf#co4ab4$|$Hm^~; z{|o;u>g@oVg%E$-uMME{`_UZ*;s==fsY95w@c&BqK6RM-0ODxXiy;0K!Y%!+AGZ+` zrxBR=81)Hqh@;e}J2D2e5x&L!mOf6M7;bgebagh2YVnpgbT+J~j#DQwhsWv+j2m>c@nsNydLvTOdFlf7HM*YfQ`K^aKLhcV5Jxx5 z{mOcNa%H(u-`LqashKU-Mz9L4&vyw4b(#9P&gxWlHc#-Pa+3Sy!N)GX1@RUA68=j4 z)-Q~=hx!$BwDEbE3v0ugum)@jCPvpzOl;*k%~&p0fMsLZ{BiYsepy>%TZ6u1N^7ID zt#Q1!^H`t|QP(hEHx}k6{fhqaEzDQ36)VN(;ftxe)II7i8l!QVph zDez!vynt;>K=V=k^Bd~<&c4DQSs2NQ@1NVmO5)1dpn_1Yq<><|-&9jVXleiCwt9X= zAFI#^KKp7Mzq+sB(sDW*lWw9j=uA3`R?tdXMWZV5JjBtGUWE8d5Jx`x3dDD8qH|~s zor{IhnSt1Z_^S}#35lmsS;Jr0kyu3G+}LT;@^W)fK~k$(WpT8xjIP0?Tj+AyNLSD% z+Duo{RkVe!hWIXsqhNj=;%`9wO^EM?I5Ohf5PxS2ZN-vkJ6%gVXeYXJ(;kTL@uMbU zFU0pj{17A*Xhh^e0{MJBKT_Y((cID5(AsHiYVK@n@2GB=($>|9%vxCb;Brc3wxn>nQu6n=*QBxdmH#zJzrE^QQbVrYiaIOPHt>#@=k1T z8+YHW=_YzK%C*=ee{wfH2IBAfm3@vukHdUD^mw`j;` zEj`#hy3=ok_yNB>MYmut3b!T)CzTfEkW30_nhI=$_!&d&Dc)-mjQi?x*AMn8{A0KFaJr@Cq6N1yrS^?V+}@ieq_ zc{}tSu6D2Y!Gd0)UqyPQcR>8}ZW`sY)2zBW+(*Ajzx6i_5oz7q<7LE(nuw!t@sM!=K|wT`Zz)SJeu_@ z2R}6Xi2HZG=1!Nlqw^u5ll18Tp;HJIalFt+>+1j^^ywQQ+K5oy#I8{-%^hPsqnlfh zQXYtLf&Q*vjBn^~`=HVFyMF8+9$5P&c6PYzzJDy@XZp9ma(@YMx`@Dg z=qrKS0H$9#Y+`duv!bPWRD0)yi4XW)r*8!?cG5TdsQ(zay)UL;Io#PbabjD0r#N81 z4p)b_+`WACdGjF!nq&iJs7_2aEa(*>C0A)S8EBBr>WAM+4Y--$?# z>gx11-AAIB5~h?bx93h^^ca_JU<|{oPDexQ7;jlyS8FH4|LUhx&KQT>Z={^w&K{-$ zbNpj`tZx-&CI=GuKZLLD6Zt-2DB;Yo^dcv_MY8R&v=-TD9bW+^ipOp zGlUt+3}c2fBba(fFo75+03%89wpardGCNonphZ`B;e)VJ?djOA0 zDdR(>l<`ACbibA|voPO!W;Qd2nG1<|e4SG!dWVkgYH6uK!PhXx+gC`K zU081q^BVIyB$6SK<}WydZDw{eZ!vE(?;s`a!8S2_nSIQ=%zkD+-9Xuy1I$6Jk~zp6 zs^^EJ3fSI>@^4vNOV@-}YuAKP-u8OF(A(PdequEER7N}GzcZavV zL&d5JVjtKdx8J2cU_PwpN0obAF7M>d^8cl~^~^`i$C%@90Cr%uwD7;x^9gg5`Sf4v zIRObNKbnusl^PJI{O{f<&~b&C`j!6~=3D1ijBt7YUis zS@d97*@{Lb2&}fbpYNCd43zWzg9py}4TH)?f5*Xm4+-V{j)VCz5I#RKmzc|tP(cFa zjRF1PlN5-yUzy+k*-J2gFjpa=hD5es&I(FIY>AT}%iLn_{0rzVgA%O<61nVHrzD#M z%s-z35FjzIk3?T%WpsCiHQcy2R`ZPO$I3=pYnCp_~N501xni00@By zgo6lxydobG1&}C&L=hy4AyEQ}Qb_0^p+`9h#GsB3l>(3e5qK{ z-fn;%Tl@tNur0ueIxJ8PYJe5kfF0BV2PCQ?Q3DB-yls%ML!uTEj!nP?+`t3s&}T3h z0tqK1T#y(Bi7|cOv5;tHujpRR23{~86K=qcVxMBiP^Wmpuk-8u27j5qd;@5~J_D_w z4Lbt~x4!}s9!S)&$MsqV=nBX-2@-?+1t+kL*d}Z<#syQrRLp~IhXmp`*dOW74{V*# zdrSLM59IfOnW$yJc{tzi^1FM$EL;SMq5eAbQUY=#B2I$&U;!eu5Ihc^08fHN;3=?} zoo8@_5h&b8Kw>l`hC^Z$d(n_r0oZ^H%OFvY^aGv&D-hyJq{iolR5qcM*gU$~+wSgr ztpJIUeR^&9y94XX2Vf0Y%PuTSB749(c79oQ7+4Q_u}VlZLBi|DSi4ZdmKFpdm*cX0 z4o!j0U<><6Sri4fVh(f@xwITjZU@h^LFHKlc!A9;e$KVL~1QP9#=zv5gB)WQ0FKxxqW(K)4zK4CpI9mw50AB{2@hl`B?WR$u zzlQ}C302^0@GY9|+hc(5ATi~B#DgEu9s~RceuBhQNKAiNE5Xm;w|@od74SPGra|H{ zwzVS82X25r|MmDbxC4n9kns8CgB{Id#&&v|y^p5oW}E-H!{Fc?;$NK}hvuNxuN(W; zZ|df7ATjg4R2(jniW9;Kg~TjK%zY>ohtClO*a{zPeK_G9RLEyTVh$T?ijU>QauWV2 z7AKK|lJh)B%xCSUL_Q~#lg5!^T#gK@&&Q3W-Jij>$f0jYrwR$7p&PJDx&abP17fm%6t5@~b8G?PawNCEpwFv0 zPL7McV$P&EZses`%o#!b({-Fd?2Jk&*~1ykK318|>&G67uxa$#_XU>cituqpavI#u z&W28}AICUY43>;#Vgt}yj8e4G>_XeYg=k;5ita{7NgL1s(sueqbcFOi{VRP3b?Bj} zI~SnNJOXvwG3baW104^km>kq0Yti9QF**`@1fBdmjm~z?FxQytfJEmvAs`H;?kErg z;!ra7iNO#s3p|g`TK0kc;2=70IRcJ?W8efjarp*ZLaufT+y-|!1?V8f%BkZF=ZxZv z=S=2I*Bh(Be-L@lep8lbGVDRz1(fw zz1+jxkGMy;N4Xccm$=tL@DMVD4gn!SAr&FEkYOPWA&nv4kZ~a`A*~@3Lwt{h%m`sa zR)=g1c`xMSke@@z(2!6;Xkw@&G$m9TnjV@FY72FRHiV7}Z4C8>wuep+^@YOFS)p@6 z=Y=i}T^71LbVca1p{qjIgdPdK6_y@W7v>LpHf&Sa*0AkiFNVDwwj=CN*wL_)VV{Ma z4*MePhp?Z+ehs@4c0KH7*q>o{c)>ni0#DDg@|-+3uZ}m2H-a~kH;UKDo6Li}*}S>D z`Mj09=Xk4mYkA$gt-RNGZ}HyY?d2Wh9pWA4eaJh;JI(urcau-^89v|#@gw<3dPnL_v)!FIt;!MlP(g2RFj1xE$P1SbTi1m^^o1y=-r2(AhK6xpzs6XN5Uh*uJuG@e^vLK@(JP`iL~n}T61^=3 ziwTY4#Ry_Vz8G&zdrW7{q?pMu>tdddc`@eYm>n@c$NU*{C+1!(7Hf#L#n#3;W8JYU zVmHKYiro^sE%s9E&DcL<@5J7V)5aO&OmUTQmbk@ntK-(jb;qrbyBv2b?snYWxWD4f z@$UG#_`&f*Qud|n zPx&b2NXpTaV<{(6PNkenxtwwC`o; z+frZmrS41JpL#I$Q0n2-W2q-nPo;jIdM5R3>W#F-w5&8&+VHe7X%o|?r_D{9pSCdV ziL^y&&!jz@wmNNXT2ESU+McxU)2>S6rD;;7R4X+~tx~(xA$3VT(t7DAsaHBiI!@Xm z?UMSW3#7}XYo*=N_0kQ}P12X7JEXg$uS<7JeQ!(Olb(>ClU|lylirZtlHQiyl`*m) zS%@r5CXk6_@v=0TQdTG{mziW$vKpCPHdr=HRxfLiHOWTHplq{jm+ULqMcGx^y>xDR zczRTNYOlNVlgynm#A}`Se}sd(%HoKb3wu{cQTV^smz|rT^kf zzmon(`t|gia$FuJkCvy&m2$N_N1iJmC@+;83PM3CLKS?4ND-lkR>Ue&6lz6*PhnEn6;6dm zF<3E7;Z=-Pj8{xhv?(4@OjXQMELN;ktWvC1^e8qcUQoQOcvZ1W@rGiz;*{d9lB?7x zioicPZaczNOrwd|&yY@`&=N z^0@M(@+;*}%4;e@<)c*`6;~Ce;;Rx=Nh*mdRW(>OTGgy-QMIYsRh_EEs+Fo$s^CjEmB9QqtvnL6tzm7tJbM2)uYtS>Y3^l>J946>TT*5 z)Gw=dsQ0NqRDZ7iQGHqctNM5KHT6yPZS}ouJX@F@;meN7j>(SCPRdTsPRo{M%d<7v zCE0b^t=Y4(S7g7GeK`AMjvyy0Cov~IXFyI-PHB!I$Cy){W6N>mxO3`q7Upcoc_-&k z&as@6IiKfzk@Ho~g`974e#^O$^JmUo4Wv}><8l*oGjnrt2jpsV z3v&&*#$0o*CATKmlRG?jbZ+aw;{#6(JU8&?fma9K&g0}o26;dAWIc zc?EgJdAhu^yox+?-h{lRd2i)?pZ9Ct4K1c6wIM#ONE@xq*A{B6+B)qJ?J(^K?HKK2 z+8J8EcBXcYcE0v;?IP_G?K15%+LhXk+RfUn+UKW zcNXt2K3M!k@ejq9ihnNtt@w}PYsL3U$P%U`sD$e)i7rVfNh*<)NK4X7GD{RC153(E z%q3MN)g`qh&Js__ppu4?){;j{rj|@E@t4dhd7|X0lBFe2m#ipxw&d-S^CeeH!%HQl z>QYVVz|#EEqSDe*L#eUURa#d%q;z;`eQ85!Q|Xw}=F-Wf3ro98_m+NJ`j<|rtI#=h z9^GJ_Z$;?y&A7-KV+} zy3cf{bzkW&>3-K;)7{kF))RVK&(U-Bq53GjRIkw&=!^9_eVM*WU!%9{oqD%^xV}mM zh<>tuntp~J>gVep*Dum9(X;wh`fmLTKK%~;F8v$&cl7)82lVghkL%CtztjJqzoh?7 z|A+p%{-%L3a1GIhI76aAVn{Ve4H`qPVSpjeP;MA%7-48IG#SPi#u+9UCK@^nlMGV~ zj~Q6Qa>Gi)D#Kbsk70vhvtgUz1;a~*9fqBT@5@5Uv}Ltr-m<64-YGj-cCFkORz9G- zwA@@?Tka~aD<4@tu6#myYx$$)3(6OluPpB=f2aIl`GxZ9<$oDNj67qsF~yi})EJA5 zrAC9%Vze4<#zDrR#wO!rqtD11*BJL1j~Fi)zcpSo{$%{w_?z($<8|XL4+ms@PxgdBv|4H!E&c+%eH6p()0cWJ)*5 zOi_GxKwPCRgTFS}LuT_DW}^yRxowNagCvjg@;V4^>{M zyip~tN~ub#l2v6?WmT!F+N-8jJytcN>dC5GRktmag|=`k0*lZRVM(^6S!9+Bi^8I^ zXf34{gU@2Lm@QS7I?FK22+K%|*D}^J-ZH`Bw=A$Mw>)QAZCPvSwQRC%wQRS%Y1wZ% zYB_27%yQcDmF0rvTg&&BTh-EP4SE?~SzTRit9Deos|QsNtsYU`P~BNQsd`HFwCWkv zuzGg&yy}J3PgXxw-BZ20`f&C6>Pt0vO=^v{##dHjuW{CRY6jN~s~J%$cstw{1skpW05?PT4-UU9kOP`@?q4cEfhZ z_Lm*EllEx4!mhL1?4#^6?9e{jKF_|;{-k}6{eAm~_9OPA_Al)}*nhEKv0t^{sKsl8 zYvr}d+L~HVZDZ}|+UDBvwd-oP)b6SE9jHB1`;8;aA##*B%#N9kryNThtYf)jt)s`W z!LiA)*YUCAl;gDHtmB;HYsV$WFODmYtBxCvTTa3m;*4^toJCHf)9kc3tipe#&3VJcbw#`4TnR3*E5()OQo1xg*FaaktI%b3 z)wpb~T9?N)*fq>G!ZpS<(KX#Q(>2>Q*Y&t-k!y*Ib**-7bnS4x>e}gg&2_+a$aUED zk?RxJr>--ubFQyl-?=WjuDWiyZoBTf2{-NLxP#r{?gV#+TjkDnYus9Qp}WMbb35Ea z-7RkDe$Kti{f67O+x?DvpZkpa8~0D{>z)`-nn&iz@F+ZLkI`fHSUgrwt;gjV?iuN6 z^msk(o-WU1&os{*&mzxro;99s&w9^Wo;{v@o&%ouJfC=uc}{vh^PH~>uH)6^*BR=@ o)=j8m>sHmRt?Q}lt=m<%yKZ0KD=Ca1`hSI-QT;a$u66tW2ba9$(EtDd diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index f1ed6f98..075db1c4 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.4 + 1.6.6 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index cb63c595442b9b598068e7a4c82aefc79bb6b02d..1d84a659395a0df459bdaebe45108d365bb80c9d 100644 GIT binary patch literal 118345 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ℑ}P^X&oP0gc1)MA}l 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 Z2T|W?heiK={O#z!kN?~L|0hiA_78NG%q{=` literal 118277 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
  • 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ℜ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 Let!LbsBZp02TMrX From 09a462788648b38b0448db3ca996bc585a41f320 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 12:19:08 +0800 Subject: [PATCH 004/178] Revert "test" This reverts commit a140408a6aaea96d02613d5b42af956ffc13b5bd. --- LFLiveKit.podspec | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 25680 -> 26791 bytes LFLiveKit/Info.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 118345 -> 118277 bytes 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index c8517574..efc62471 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.6" + s.version = "1.6.4" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source_files = "LFLiveKit/**/*.{*}" s.public_header_files = "LFLiveKit/**/*.h" - s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit","CFNetwork","OpenGLES","QuartzCore","Security" + s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" s.library = "z" s.requires_arc = true diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index b42a3bec98e5f5984b4f2342212c73d445ffb51b..6eb8b39f0cbc2d04d2aab78dac65cb78d3b65cff 100644 GIT binary patch delta 11482 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 delta 10290 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 Sf+RbBeL8-)=Zm*0&Hn)g+_iWB diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 075db1c4..f1ed6f98 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.6 + 1.6.4 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 1d84a659395a0df459bdaebe45108d365bb80c9d..cb63c595442b9b598068e7a4c82aefc79bb6b02d 100644 GIT binary patch literal 118277 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

  • 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ℜ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 Let!LbsBZp02TMrX literal 118345 zcmcd!2Vm1y^VfTlEZLH5Cmujs+ORv=o0hgXi32WKjT0b@x&Z>DgoGx6LZPj$d+$9N z-Fxr7_uhN&y?6ibWXqP~5j*hxztKW+_j~v5-P`wmTDY>crL$}F=$ARdQI6*XPUIYY z#6FHWgI70qbhfm&%^BRjaKGk7U7d}Cn>rRPYhgdGAKcZxvX~=BZn&<<@V<4xMf@mw;#8hYvopO zZCpFIlG~pobhT|}4A7TQYNX$M_J*U)wJU<&kb zdK5jDo-G<}Y~NME6^ z)3@lm^aJ`a{fvG|zoFmLpXjgj5BfL#kEguI%e=z7`6AxW_u;qU`|~CIAbu#n6F;0E z#gFAD@RRx7_&xX#U(QeG_u{MgT0Y9p;v4z-e2ibnH}lK*<$N2zKi|b4z#qsT#OwTF z{E_@I{PFxr{HgpI{Mr0@{Du5R{$l6({!RWJ{(b%<{!{)7{%ig_{zv{7{&)T_{$GIzf*=VlK@+@!PY4SAgzbbKgn_~k zVMk#XVWcod7%xl`b`^FPrU_+2g%A-cg&LtwXb|QI^MrkbCSkF#RM<~gA*>WSh1J4Z zVZCsOaHw#EaI|ooaH4REaJq1oaISEHutC@?Tq;~4TrFHD+$h{4+%DWD+$%gFJS;pW zJSjXQJTJT?yehmQye+&Zd?BVMmo?wqt>#$LS-MxcPr6@vKzc-aMgCs?N&Z#-L;hR-&qzv@6?A*<{hco0XcTRWi<*ahnI-|~6&PL~aXUw_K+3Z~AT<&ah z?(gh!9^gFCd5}|g9_BpKd5rUT=Sj{}oo6`DcAn?F(7DlhvGX$LmCkFN*E?@=-s-%= zdAIXE=Y!5ioR2%7az5*P!TGZDHRqeocbxA#KXQKR{KEOQ^E>B{&R?9rJO6V2>mn|} zCAnNK&E<9ZTtQbq*LJQQTmxN0TsyjUagB71agBFPa_#Ec-8Ics=BjW-T$QdGSDmZD zHODp2wU4XGwb-@PwV!K+Yo)8xwc54Twcd4z>rmGbuA^PYxlVMQ;yT@Rmg`*C1+ERQ z&8|ybSGcZrUFW*db&KnE*IllAT@Sb(c0J~L()En%dDly>S6y$o-gdp``q1@>>vPvv zu5VpGxPEs1=K9n1kHRUu;!vE5s(6%QC7|?GwpF%Q1}KA-Vam?R2xYV~PMN4oQKl+; zDy2$TnW4;7s+GN!dS$jUS6QI!t1MEMC@o5>(ynwUtCTg$I^|#ml*5&ylw*|>l#`Xy zlrxocl=GE~lugPd%H_&c%C*W3%FW7c%ALwR%Kgei%A?8?%G1ho%8SY?%InHo%Dc)3 z%E!uQ%9qMF%J<4o%CE{F%HPU=Dpf^QRu$E)7O8%)nxDR(9AuH(zxyHgqwXi%PrILUzvzC&{kr=t z_q*;7+#kC?bARdn#{IqfC-<-JKiq%2|MO6f=#f2&$L%Td_&t3*+j#nWN<4!+Lp?ir zhI>YN#(E}rCVO`C?BNM{%01IPdwHrnwVtSFmZ#A(-xKpJ^fY^xd6s+HJo|gPJO_9V z^c>{TJ%@RY^c>?k-gA=YRL>cnvpwf|F7#~lT{?fK60qvsdT@1DOr|9Xj6@Je2nSMz$k zK5x+5&%2#>2k$`d5buuOUA!Z`W4z7mU%0@5pSip##`rY@Xqnh^X}tq z@-Fr+_3r0g;a%zN^se@<^{)3G;yu)Rg!gFgao!WXr+82Ip5;B)dx3X@ceD3W?-kyw zz1Mkf^xopV-Fuh!Uhf0mhrN$^pY%TCect<$_f_v3-nYH)c|Y`i;{DwFmG@ik58j`> zzj^=k{!_#i@kNdzXOUXuDJm`s77Z*KR5Z9~NYT)u;YDMLrWEa3v|G{CqTP$aMHNNU zi)I$p7VTYBS2Vw9LD4=%v7&v878i9DttwhwbU@LXqP0Z_7N1#sPVxE07Zq;J;->tqoe0Tfq^F8Q$#P_)GDc`fc7kn@K zUh}=_d&l>_?<3!*zAt=V`@Zx2==;U@yYDaGzkcEu{F2}0*Zf|;&mZ*n^Ka+h!9UPH z#J{6|7yn5A82@%4d-Tl-2W&R3(#9!&J@z?nq{B!*C{QLNu{EPid{rmY>_*eQn z{j2?J{pr0%Ib8!l%avrXDc6D^*^5(UjbJ@QWyNFqX7qvEZ zc5dP{&aG3O-^6*jB3%IThh84@4lWIkA3M5y+>{aJ6Gx99F}{5Kgb`E5Pb?czF=2dZ zc*6Jz;VENB$GrYXd3bhv$MVjVO^ce#+ZU}`(cIQ$mK@}^=Z0R!_2K$*{kUzoZMp5Z z{<^3;bV-+Wr|!~~%eWo55^ex9p$|8h8=|W~egpD5Ge^|>0y$fc#Jqc0i>Pl}Sk~Uw z)zRMC+T0PFSP>pmK6!F@1hZw*i1Fd_F(X1{A!hRU@YvB4$A`+xCzbAl>Md=H+YhMd zXj;)6^A2D?sOebT+|j%^X}JxyGv*y`Ei4mW&c&pk;Sa0ElXOM8QvY3cxX`< z+mU5PjCuPdt*CErZ(Z2b5$T-O(%G`Gl^N7G^}D8prIufrejLT^$_>4e8_kX3#&YAh z@!SM%A~%Vf%uUfX-K~3cuU@1V>ptDD2lU{T+-}U5yK{SRdvepb5c_i(SFZQb`|ACG z+yUf1AYTCa3H|#kkhOYb9xI)U2(HJE1TA~uj-0<`&3p` zvNoF8(pBEPqJ89=MeU25S9Y}T=QJH1NnUV6f-*$OZL)^h6*;6R=IW4%61kJMK+wX~VP)w#pD;>{dzhjNGMJL)^> zJ8$NWU_L!c-^Fm_@i-RkWGj$)s;fE5qO)zO@yGHO*7MrinmSl4#JmB!Y;!9+Flk=g z{pZu0+gCJqb*z2S7$HyKPTI(ws1FCS&a~?k?i?JtPUTMHPUp_x&g9PG&elihBlS`G zXnl-6Rv&j6cP@7xcRqIk`|m~E27SCf0m#8XjyC>x43J~>$b1aS@}{n)`n4;Y=fy2E zY-XK4WE|l%u@S)DFsxnTy@mZI($&18+8DI@nPY2)-)(FDF1&`dGoBQs#-@4Z?;7eV zSqE6uzG7t4%9X9n@!%hc(a#)Y*7_>$2Cn!L?rQED?pp3T?s|QqK1rXfPtkY1gu9Wu ziMyG*g}YVXO`odorOyO%5H`+;IoOTH)y9$Hb*$}ZUft5Zs?+wvGMsH<-W@Z@kL+w; z)v>6#k_GC>P8>N_8zaZ?45B7~c&-y#lefMz>V5r}(@4k_HP~QXlN>TZ&`egUQ=Io4z+@stRo4Cig z$Mrq+us*{Cc#3tD2U!wREjw z@7v7$fcsFd(5LI=wS%Ue`nsiv&$!R`sg72y>cTJ&b#yeX-OPQ)eZjrO zmLtYr@;G4b&JNXmKDvNT}>-i&Rd*Vs<3XM*XY%H6_E8YZ}}3|Uw0ifYE(lf8#YHZEnd;m zHYz!3r2d4{hy8D<$z;@^&^;4=d+>+5mzeJQhY)V)X6|3^Kf>v?`rdloWkWEjcA}rmGDB@()=*2v?}DURXiSeDA}aF`(ezoVF^+giA8zQSq=*y~AMuj_3F@=; zIeMc$SD&ZPzm)VP{fzmoob=Zh06D;%+SmklAjbBfGPVk9TG`pWxWwo%C9E1Nn>)JJ zmXxs(dTD!nK<;ODLA#JKSP#xx&+-;F4m7Qe&v1h*VrCh$np#&i+obwir0jh+j$(DH ziGqWx1;hv@GL(Dbx*}HlVPr?L6WN*ULWYwOWF#3yMw2mQEEz|}lL=%ZnM5X&DP&i& z8<|RWCwq`R$utrorKF6MlQ5|u)5#1HA$yUTq>@yTYEnaL$=;-nL`gkqAhXD9GKVyh zxnv%hPZp4UNQ~@Dn#e-3h%6?}WC>YHmXQ{+A6ZUX$qLd&+Q~|?Kj|Qyq>HQ~tH}Xm z4OvSLB9k+;b^HNA zbx?`Q)Ja`bp(@p=n|i317SUqrqkbBoLE4A*rTyqObX&R|?N7I-JJ1q3fDWXC=wLd8 z4yD8Bj&vuwGu?#_rz7Y{I*N{_W9V2qj*h1j=tMe+PNq}nu5>p#mF`aW(D%{z)tmH% z`XYU?-mEXtm+H&(7JWZ`x!$U;(A)HOeWkv?-l2EuUHU40wSIuUMqjHRsISx4>j&uv z>xbyN4*H?`Vfx|v5&Dt(QToyPG5WFkar*K43HpipN&3n9Df+4UY5M8<8Ty&}S^C-f zIr_Q!dHVVK1^R{hMfwJPqrOSstY55OqF<_CreCgKpz9 zq~EOHqTj0Drr)mLq2HrT?w}qyMY_2ZRH{ zLYM;Kfv}yZ2*d$I0wM!(0&xLRfUrHH2E+}-1H=oY2uLvy9}qu~0FWS%K0w$qydRKl zfNTq7J0SgmY!74yASFNs02v5m5Rkz@h5#7~WEhYgf$RiiXCQ3V$(Dg5fQ$q(3dm?6 zV}OhWG7iXiAZ&#<5y&JUlYvYDvMZ3?fJ_ClJCHqq><0c zK=uXF1Y{wQML-q&@WF?UOfph@r1kwd$6_C~X zj2AhDhG;1*Yh;H3on0Mlk)y}hCYBgW(k`|hT*WpD>({gGbEG~}Qyr>|MaySKjk%hJ zX+_NINzT<#Lwz&*@pNOM5dXVb!d{3QNW-lwo59fHMpU6lpY9^8yt)VTA1%o4c^e(P+3nRvRjt z8LJ9aM=HY6`WUX9YwN-lkvXP0ji@v{sT8g%Wj3T#qp?Ue)2JzLD65Z^HdL2ahE2`+ ziHanO3s;9qE5osx>R5T0l~*3C3rA}j>dL~&io{T1OtPp9lB_V+O010{)zSJ;Wo4{B zG(D-l5Y>0dsg6|(*O$$R)zp=T>r6wNQL!J1&+ExW$NKfr#wu&WEXyKRQ@WQ`Y&nVz z$$&N^REN!17cQ%*s*T3VBS{0=P-XjsO3g}R%esDjX+xy4JT@y-7YS9@Cu_Ms%5K|T zc6wP^Y*x4~$|BgTRTm15>Mm%sAKOF6%4(|X!`1c1zeCKOvFPkbMKTBv$Y@cb2}>jO zWi{o=c0LeghjlM#dbm1V7pf0qa8yJpBh}McQ7NT^P-$9srKEEr)n%0p<>AWDV7J6fo=wlY!{!fqW4&tbJi_ryZA5f+4%ji#RtL*236 zb)#h=Cdwi#9-}cOD0OQP&NhmA1n*JD*<(a3aGaCLp8 zzA{|J{+(1g233YPb8t7!n)(^xI>Wp1A}cB_z2YR)7}QOJ z`EXVQy@AaVZ=hszo{9>6NO|+h*7mh{!pS;9eO;v1hI$4HZD$h-Rn~{=s|BU~J7y8A4cApgqF6W9T-azP{6^F&v1yfuYb$FS zv1wwJHSs_(r7uS5q1mKsYohhcZEWm{G7p+Mm!Zx!HXU=Evbp5S>~c1TT!V7kXT(Ey z#IQxovad&3zfHEBHJfE#xd|ou*(6NstPyrAiVd-eRfWoGqI1}=o%B|HsBU^VIau6* zDkE$vW(Y^w2#um_z$p*Uij*;JQrER$}zQTpo%X2g#u+}|S1 zCdb6Ek3FE)G8FxSqQg?6Z2q0e=7{o0lr0|{qqyLkUdg%wx;WVwzoXLdloFebqv5() zVHSmELAd^k#&Gq<2K&?!^sjE!VC$B6<;@Ys+LZsI@PJe?>5{Qh)~yp>af3@i%U@W1GB^Y)oW(5zp^}8Ur(G z#9O%0EMHay^QVUY9l7*?kL_b<&G$8_C%CggKrv&S;iqdm@Q7q zP}CBFM)0vFi&QkmEK54RqMM-&)ybyI)XgK^44oaSGnTU5IzT0gS^UY|Z;9<%o24}< zJA~9WEn42R)EMJ&`_PzJgR@PpG5J|nlzbhkjI^qh)rB#*Bh?i(Z0o`H)969mbTIwW zNOh>r+;#8`sJo3-m(8PW3}QpGG5MKIG6&^Kta9Nw;j)H$V=tZD)R@xqP`ZB>X%-== zeLcSqitb_+O*6$%Qhm`rzwyS& zjLj!0ldOZ!eh6vvdrB@o5VEQ!mgj84X6q3vP!O{ zi_h@U*o+Fc*bLQ&Or1keXP8yT9J$T)UqwwNTl-jdr~IL)G|;M)GT&6UHslc~Z|ifc z)hs7TF?QR}w$Bxj)EIv>s_bAb!c>VDWnDD#$DwfFOv0A+2!A3<4Yo-ceHSf_v6Vr3 zOq_xmHiyX=g(XT+^sojLbbBrSzJYpe#n!8X>FY(ExbcMz-wUA zvO$cU{NrhxY1tbHHZ@<%5=Y9$d1)C|GBiE8$#@%)CiIMihu=7uvONmB^axpw$z_b;Ew+-u<~O#OX4O7Kw9*36j4ozY&FBe9SABwb*Z=90#`xf!?2vTgoL?EzJ zit2DB9u|fxYibeRH0}ok+qq|FVNZ)y*4LPNKcn8bp7qd(x-bsYiHX?+_zeLj<_Ex9 zhiy))SO+U*C(3w_Xx#kqeqjP*YnUsfx^v_f+OxV3iJxIC)u_Fk0^O`bE9)6PHHkno!~&EvH984P+eEU zE@difYHCg23Qp9|qmRdZiw&H~zloL-R7A_rCs%cLwXY~CYhSUFrA>8|RJ1lNW$UZN z)r)nDA$YQQCMQB|Wdl2!YlzyAiV-P8M5IWeE&6TUUBj@cnhMMJf1wIWPGko4}J(Z{u+DD!8x=|Px^2WFSq)_CRkNy#5G#GTn%gof z*6eU7>9-{amfjOsO8?4^_C;*}XY8vJ+KJtZQNgO{^k}#`IeoSu&faMi?1qCKiVc!% zt%x}ZY-eUUjbt&+61$>oR%daX7><*1(u(lutuec)0~1+FYTH{|7P0i@c*EifgMrLo zmzlWLs*EL;97(ixL`(0sInZjuuBo@a#X>T2qe=Bz@n znQ6XDfOWFI8ES1UX-zDJtd%UA5oT#|EF}t)#iDHGYfIn})*x{D&OQ&|P$@f6WUYhk zz);K6XQXwAU0Hz9@t8K+ro5)ixF(D59B?PXHc&}-9E`|W+d6|gEXd)iT6TL~T2tO= z_7*7APK;5*$_keDXRI(oWq7^F4mp^IEp{G`$mv}t5AU)CN_p~(L^uj@!oBlkDZ6n+ z%j^eT!m$V$=^dn5&kV39Y=Nb?sK@|$GD4R3&Qe@Krq}&6L@XreE#VWX!c;sqY8W|j z>DXr?c75-xt!}8SG_J$yYjFC;zh-`K*jfib=pXD9W^`rm-ag^b|I`X~AwOGTt&~lvf~QY zp=%mg0=U_?)4TO;SVB{Q0UV#z+2T8qIK^(^OpjnNBo`g&^ZlJz+=AW}XI8@8AsQDD zn5~D~lJuhP!J?`PEXtVuunzI%g|Ru0u~Cbii&fW~S#-kv2;Hk*&rAW zC7+C(hY&P<8J|7GlabReFHmnNx_-cy_=tPNwgV}a+Xez1TI$EK{bY zf*rM&)tQ$M!pDf2elnB8gY0-_^qkb~e$u+n5Gm)>mtor+-xL^k-I&E!#?E*{Y%7?$ zV-vna*qmFWY_PHNhWPV}aE!(DjGA)1WGFLVDhS^oaL)BsHsH9S=6D>cufc0CwiaMn z5A~L#)$g~g0CO3W0B$tSj@d#flJxjbg}EjfXKZ844wB;Y7durpUcl7Xl+~Emt-`Op zw%oFBOnS-KnZ~CnvuFH)1>~GTY`#xgo;ZeJ`2q3kU0Z|xji5Q#x0ylNn=p2j&z2qK zED0kHY})xBLgt*5Y><{2#Hc;KZiulTCf7$IMZh_^CM64C2_qpXVaGq_0ie-Y3}BXm z5Z|pB&oQDi*ng`KH$PrK$U~5hclYZpLFm zb{G<>tid;8iPT<}YVu$}TB2{?FWXb;${fN42fvE9|KkH4K z*ava;=o!a6F=TJhV(bJ2vy+m~WfDC@+y=3x=8eS$o4WWoz$QwTcN(cQ2OF_JBK5iz ztT&~mZ6$~}v1i+C?aDUJ?Dda1wu*xgV^V<_*g@H?M-pTxf{ev0StFmOwt9LAa?s#G zmL-iBBg#mtVZXPfUx+)Q{>Yy6aZqG=>r5H*oJ}VTN8QFqTUT?(62=A==X+rH!cj&Y zwRT}UBR9$z>nuH<-L@uUoUPE~A%I!KWex0g3d^EkIX}rNj>2L}dshq#&U*IfF;<<* z$rr~WUZ{6?8A5&n!cFZRob9MqoQz1j_YSFBZ0&|nd-M*fdx-6USYv9Up~S^M3$0S* z%Snx1aj&36yj5*OLI~Bz#pg#nt!4|R5PQnr$a2WcfSry=HF+RqL@|=}@$Gg3)`;5VTVruA z1mAs&z)d@=5UM;K%1CNsPKb1NuEP6>xS3`x+4dk*ZX}W6A6P$1r8A1Ph*(-MVpX`R zrjET*U`0$f##Yn9DB@KXjE65wD_K%c;vpEDD-%CS9wCae5V>kgk>f}8Z0@vC5pPx&*~takh~&a7*~rG?EL6|3Jk0wdaUtS` z(=Ey$uR2;*VT?s)C7Tg4Lr=*cGQRdVw?)pQMahEaE)x7Ih&2uwZ(=eR^Mec>|)tOJpfTN zbi|}Xqs@y}bujwJv~h?%_-Uxahn_}44(6#Dz^QTgK!lFu@NCb}EWwH$p0OQ6>gkqv z5W>#cB3PEuiN=TVeITxs*$rrzB_!jmgy|O@ONnl^QrN@r+S%+$R%*R-7#2{w)e5MZ ziRs&By1jTLqHkHVTAftK@^Vbi9D~rg292JZ)e6lPon^J=RjYVBf>&=fugqdEoLHU$ zzr_?vi+crJUc66Ypk zv|~uO*qw}Uvv{6(KGNLf7Gp0Q80}woCMfSrHkW-;%z$y;R3@>4QFEq#%pN{Q+7>sjsaay`rhW(H2p~F;qktR& znHW=1c{SgAYPTbtP)pY6KQ2Z_2m1c!r(J47HCY;;IKF3iD3 z>QERPsY7*WKrRBZDal9b@H%`}qECn45dgxB+NhT&TVl|(BXooE(=2%#M}M2r_NcVk zP)fC$DLlwAI6i8bKN#lNiP>#%s5%%Q+od|oUSwhA7=b2^bc_OW8IUVeCXRJXu$4B^ z!RXm82Xcj8-pGO>9_xdqop8I&#;J}yZCcYDjJEA6AXg)!t%vEE)W}GtJZRed`wi`v z9Tkr0jv36Fhb^yhRAz)`c;{;%#wae9tzd%tJ!X1p70VbqkQ&fLv#pE*x_ljW}I680Fl}K(04O z_nYEPun+6m4n{(ELu#ycEX1)I$c>qX=A6T+t(J~fR?i0ZF`xTH)+cX8>u$pl7aM+m zES1sbG1sg!Mjgj0$7=RMkTp_rQn68p+goFk;{Y5;^A(Smu-0)Pd!Ly{37Z`25IrAJ zGr$jW9FppoI*>cf2tN!X{BQ@GR__9GPb$KXb{uDoRqg}F2|8mHyjw3HH0_wnZDDlw37V)Rcge%SbKgF{jFGyD($D~xr-?$)ru#9I9Hj`me6 znSwtxgN~grg-xK7M;~-hylXt>czgqp=i)K@q~j?@-JIZBX8gCC9Zx!*=H6oSGy6+i z{#jEV`_&8F6B}@ai+_IE`is}%e<`39-*SA&h=d()JKk};>v)f~Go3~pJ6-Uw;w9pVl)S2*d8##Lan%-Hp;>P-JNP5@?9Bd8gz-#dQfiZ?ob0P^-m z$4@}sF=vbTf*@oVYzqJ8_yha-??B$&==c-JdwRsaNHYchl^8wrCdYpg8};4?^1&vF z;vd<{=Y#GlwFwkQ+04^pxbHP1;V{K83LZkk3;X10^<_C+ck2qeo2m9i^REjRCZ4y(rgq55v zR@bc?KW@VClCf<3z}5KVDQq=9X3XgEiP1z_z$RL*kIq(%=2sA;CaHye1wmRUEs_>X z&C(KSsl=FOSupg*JjEou|NxU~`iW%Pues%)f$*$fq zfwSga&OU8whqC|80v!L+k#wH4ksF%%^A*x2?k4GC=@RZ%po%^fs0x&AcMihl%Kl-8 zT)#7BPU$MvX{4)xx>>JDetAH;PP!hyJOI=S)Pv^->k}UZkOr6ya*K2aHVFGDfOI>4 z6aZ+^X6a7pF6nNd#Xx;P{b-w&wBAl?Zyw`x+GmxXO@0tfeh4Vrl_fj+qtY{M2G9B_ z0O?ujIrCEhK!d=uZP;4#f9zWTabLU|=gpU1lU|qJklvKulHQiyk=~Wwlirs;kUo?? zl0KF`kv^3^lRlTekiL|@lD?L{k-n9_lfIXJkbabYl75zck$#nalYW=}kp7hZlKz(d zk^YtblR25lROV$t7G;Ml$+GN}U9uvpvL?G_kL;C;5ki<$m%u^0xAJ za({Vyc?Y>f9v}~t2g!rwA@Wdpn7pIBlf1LMi#%K&A&-qGCJYJq4Pn0Lg zljSM$uJUg3RC#xK4|z{{njDf#GB!!netik+44E^x$=4P`SJzwh4Mx626>~rN!~19EMFpD zDqkjFE?*&EDPJXDEng#FD_dEE#D*GE8i#I zFFznZC_f}WEI%SYDnBMaEEPo<@Dt{(_E`K3^DSst@Eq^0_3$zbVHevJwx((26 zfo=!1KhW)g?f|p|=m4Mtfer#X80Zk7LxBzhx+Bn?fbI-*7ofv|jsQ9m=qRA0fsO$> z7U(#jBS3TQRZ8lbg6Sy!zC8UE=L1~;bRVEGp!))C z0=f|BBA|!V50De5s6M&uw z^dz7s13d-ksX$KydOFZEfSw8TETCrtJqPHyK+gkuKF|w*UI_Fepc{a01iA_6W}p`X zy#(l`KraJ&InXPBUJ3LnpjQLE2I#dwuLF8L&>Mi>2=pePHv_!|=&e9+1A05qJAmE^ z^e&)x1HA|6y+H2+dOy$yfIbNHA)pTfeFW&EKpzA8IM646J_+w*Q2=phQKLh;*=&wM31NuAAKY;!T^e>=) z1N{f+zd-*3o&%l$Pl4xw7l0RmcK|N|F9Yucp3SQY@G9^c@NVEezgI|08l z@Vfv%9QYByk4#=y$UoxUNY8Zs1`UV&3kv7t=$C&-ksdhu<-bs<0FHk7UsTA0qu)tT zut1J}r+`Ym;plftiHhXQ(eHGj!kC;S`-wLQ?3$LPqOiAE7LI?v4sQaP&K;p-?^?{m!ynl2%H3X9Y^yNzGHd|BOPwd^+NcpkSdK{mx3%%9o?x zS%cDcN^=WedTl0-erFx(^vu!kY{)KWbI2T&%a5bqIS*xXar8U)L5UtY`khTERuD(O zb1|y)ilg7TG~K8S9R1GyP%JNwe&-4lErg@rxe_&c;^=pFqErDK{m#{>U=QaM=Q8H~ zn&anM6dYCprnsG=-1#sHSqReOLTMcR&c{&B61PdR%B&py&L>gD;zsrg!l2P%++gPW0_QU* zV_`_o!O`!09%Uz`VuA%w!5sb0mk^{7j(+E>sF6QMzw?cr<*oe0&bLwC66&m4IXL>A z@1eNGW2yNfjicZBA<9}Jz-$5Q8v*Ah-OA6+(eL~m#e3xFcYcLpmT@RMN5Au16t#q4 z7LI=B58VvS&C&1txtpPhrxmeo9pE<chC~M;j?}?+|`46htxZ?BX z=y!3bYhz>2$kFfOQO?H3o`a*`^t<*(g*-X>UG*ruH8}cR zvoj&F*EaaA$bvZfU2_pBAC7+40+j6DW)1iyh3p*tu6ka5eoF4qu;dz^$X$X zceS8KejNR-R+KG>quRm0<(BS_Kvi9pE8(eFAR!P2>q)11|fqu+HA>TLl>ziSf$WME2X`9mev z&tYIKvT*dfE@wji&`5m$%&AOqu+H8B4voY%t+=Y*lx}Jnd@T`5BJQ`?|KLkdd<=AdKA^uo41<*S!u&v zPoREJB<`6w`dv?>X0JH2+~vYX51`)kWcaEl{J3e9jVs4arC=BMv(OG zp3%n{Ir?3nAwv4RWJgHn=y!dIdRv8~-}MbbrH{p?35@x`!ljpsqu=#CB4zKa8IWuo z{jQ%-KYPD1^(_;AMvi{huZWYqS+d|*IQm_GAi~@u)S4dnaX887IX9~6k)akN53K>P&$vA#g9o=jl4Me6&V53r|WEh@mV_?N57&V+ScLd zSKNq|zFf_1S)w@&`Vb2Rno@*d={=zvw|+t!@9)?b#taZUN5A4noc|d|ztRWc(_14! zB3U3uzp@RYrFYvLXx%vamHvp3-UgWwdf@0+N)Rk30cGzv`jtTloW8TSP;X`f?vbNk z8H(72FkHub2(JEOIXU{3oe()|TNlXDuM98LP8{?ND|_JRS4JUnde_OryEcw~Wh~<4 zWR>jJN)}IM=IB=@AY@La)a;OqH7SbUB1k8YS0-u#8n&Q2#Gd_2cnWJBsjs+AF zZOH<%ar7&DA!JUj)oeB=8EDfu`jx6eUER%26FMtLzfy}O6f%NkDS@4Q*g5)@C?Xfq z{jwn2Ir^1Z2%CO7lUMYmbMz~XTUdXSkv@&1Uzv}{g^b|I`e)$iS7M0P%TAXUN58TV zOZb1|=vSJtxc?W9eq|XJ^*`b0SC%7muX=rUj((*LLDQG<*+V=TIhi^7mHiPgC!=|{ zvB@%GXW{5qy0*YbcCMHD;8Eh{TR8v$d(~euaP%t&B3dC+s>O$fdEGhsm4mj_J}XDR zqHn4Dx^eU?haq74-qsQ{mU9JTX_u3uUpcbJ>e^ZGb8_@6$K+>SvJraV=vR(Myqpnj zw=NHke&r;@Oh1{);lV5%{mQ9`lymB{?ZYj-E&e_F%pCp783>zmifVqreiwq?HPv_`YE-cJ7$vEqYqhHzBYs>TF=vOYr0&>nE zHs2>LPaH#-RQk4$E-05FXwLO*X3*>${mPXHnR8OIL0V$kh>12TO|-eFdI}M@jH6$97BRMvqhEOeL3+>8ue^-RZ6k zuY899TZ5xt`4N#akO-%-{l{lnc2a3&`p?bLul$1GyGMKelt6ZHb9DI~p)&A|_nM<$ z`3n&<(8BkCn2n=f`4{p27aaX6LF5b^(mhz(jr~6pN53i{^pAN1&e5;>5PU0h^s7Mx&CqA^x40WezuFHG zw>C$=x*ei!QDb%I=vQ~xVnZ`<^s56AHA6>CI<#lT^(-9y>JWt9>Ky&*jtKj|=IB>< z!BYN*9R2D@EZ~2|(XWm{^et;vE0Mm1qhB45(76VUo+HKz&357`j(&9#g8wf#`qe3n zqhH+>_|Zwy8`ZexOCuvO^QhQI>)C_j1o@geO|4)=acW2{Rm;?JH4OY%;KuR#$h;3ok;8Tb(Jr69B;CEExaVS1dSkEKVfZfRfDnIQO&|FEpJsgv;v z?wCP-WT(O9SJ~3pHL`PMYfIN^#s$gp$ufwV(Dh9nOPjlF$eF}V-cpkQFi8`a+3;Ar zMB@Wac7C~BL~^Dd>(yC|)KhH$e#%C5Ht@Tme~Q>g3X&Y`5#(_-=;73PjNe$DuPy+7 zH{kb7a(t@$s*4!arrM+~1b!;;yKhn#bI$|6hhD~5IvG~#Ljd>@gIV=RidogPw5_FU z6*3_XNV(EhYD&$tcDdTtt)O=9L*S?B)AjP&T-A-+zl!nZsjGo!6rw4rKXt8opt_Dx z{qYsRvp6beTz~8|HWQ^`WkrE}iK7^4p!Di*k50YJtbwi`&PW4QP!ClP1AaR2Gk}k5 zR*z7RRF49FFW_0cR_c-2i7=cMj~4dqDQhby!=peJLG>i`#>v1lazm3vP(4jOm$3+{ zr>keEXR2qZXRGG`Uk!W>@U_724SXH&(M!2<^?c+KR4*d^kwTEKPY?<6vlz=i22kQF z7#U(RPV(Q+jPb;G$5?GwHg|NjAieV7tTiofVI8e$Z5(2dMJ%Dd)*$hgW(!n2fUdwn>q_7oQiImDI70R?XvLMUkCQ8^H>fwNH>o$P zx2U(Ox2dVpoZ>evq@2Kyp@2T&rAE+OyAE_U!pQxXzpQ)d# zU#MTIU#VZK->BcJ->KiLKd3*dKdC>fzo@^ezp1~gf2e<|f2n_~|ET|}|7n~?G^+8M zpoyA8lQda#YA#LDR87;|nn&|$MOv}u)BIXM3u=9|zFI$R8*N){JFUOAy|#l^q7Bdn zYJ;@F+7NB1HcZ=5+ezD5+eI6$jnGDFqqNc57;UUJP8+XH&?ah=w8`2OZC7nKZK}4r zwuiQ-Hcbm@rCOO*u7$Me0ZCbmwQrlna&^om)ZI!lK zJ3w2bt7?O5$N?Rf13?L_S)?PTo~ z?NseF?R4!7?M&?~?QHEF?Og3V?R@P5?LzG$ZG*N^+oWyQF4iv5F4Zp6F4wNmuGFs5 zuGX&6uGOy7uGenRZq#nlZq{zmZq;tnZrAS6?$qwm?$++n?$z$o?$;jB9@HMv9@ZYw z9@QSx9tWNc%X5Hl1b!~?^MIcZJR5=c0X_!&zQ8vD&xYMaz%K^A8Tci@F9m)X@GZda z2mEs2TY+Bzd>ioXz^?>;f8aZS?*zUJ_*KBO;qU<9*8tD@@qxgv1Aaa52LXRD@P`1e z0}sF-3OpOE4hQ}S;Ex2J4OB-1e+=-)0)HIv#{+)?@FxO)67Xy|IR*GrfjF`M_TQ{Dr_@1pEfzHv+#2_|3py4E!a)UkdzXz+Vph6~MEe zb`|hf1Ah(h*8+bX@Ye%>1MoKje-rRG1Ahzfw*r3~@V5hh2k>_Se;4p~1AhD)6rX|2pt*0RJZNZvp={@b3WsF7WRG|32^^0RJKI9|8X{@SgzxDe#{G|2gnq z0RJWMUjhF$@ZSLcE%4s~|2^Z10e(g zTX&U#P!2*EgbEO*gD?Yx2nc(DFcXAI5UN0^2B8LoS`hXIp$>#72=yQ|fG`V$*&xgT zp%H|+Aj|_{J_rjy*aw6d2>XK21j0fP7J;xBgk}(yfUp#VWgxVGupbD^L1+bG1qf}) zAzL$EXXHt)s2T4ua*``*##4(P$Q3o?NkswVikk6eA`fy!&3Ft^Ai1LUE>2s$Ay?Fl z#}BL``I0MY#zTiONd@+~&GIn&{v^I^j@C5PvG3;^-@c24Dl?HQYQ`&vUXUwl#xsW= z$rUx@2}1@kcF|`cSJaI62?dcWYQ~dTK z_9aDwB`Y$$IvMVah^LapJks?feC;+;_6s3bbQ{U}1&}Mcjdc4S$Q9j27JWYCif$uY zKAWVKOVDkk!rR&CGLkF0jnwu+$ras3(t5t+if$tj-OfeV6S<<>NH_19T+wYLk7t&% zImAc~&yQTuZDf7tB3E=93EVxBE4q!O?1IP@-NtcDugDeMMpCuis0`$aZX+`~FLFh< zk>gwlxuV-hVeW}s(QV`;7eKD)Hd2i3;hZANvXCpfjf~*}$ras3K5#d4a*->#jf`J= zK=(wh=r(eB^Cwqy8`-*rkSn^4?AtuZ72VA^WadMz=r+<`vq4(O72QS>YkuU4?lvsm zLS>eTT+wahn_5WfdL~zN8|kEZk}JB6R8b45S$1+ow~+^0Ai1L3NcHRuxuV-h>$FrO z7rCO_NZGV7&gCXobQ>9&7VKQ)if$v}G6%V$+sL4_umWZvS9BX0k%f^fx{ch&oaBmb zBabl`xuV-hNX&;^(QRZFTH-MixuW|*3|b4bT^4dhw~_2;iQ6R0NLF%1w~@YQaU*;E z+?`y}ZDiwFsO@r)E4qy|yDcPFbQ`I4g^(+{jWoIZ$ras3&RcGIE4iZENMN&sdTw$> zw~>x!@mOlUNF!Ht8;NF?2ryf~N+stu^2RLX=O$Nl8|h&^k}J9&!ML)FL)pm{-9~Dc zB?PmOE4qz@EsLSK$rattq6HR1OHlljx!XPI|(D3sTbsm zZX+ek&S`6NXdXdzd08yQD7zo+DSAXju7IYtGLE4q!mp)7?l zkFwlsb}kXEsbgmq6~;3>_Jq>(v5_d0rLcHw*vS>$MjnvO0~yH`-Tz|z+oB@nfs|1R zGdxDlj*SbjM{-4vk&IIyxuVC&y~&?k(PL!V*!moEXHIfOkC9B1C%K}>NR#P_T+w6X zyA(pM=rNL6Y!2;_T+w5ss}xGE=rPh!Y`rHNxuVBNGwDv$*8{nt$H*cnh+NS#1Y<9M zaz&4k_E7-2qQ}VK$dg>rGZL-Y8sv%|BlDs=Qg6r=Jw~EMKIDoXBWt32oAp4h=-Cyk zoP%7^vpWj(o?Ov04fP8lSM-#jMt5TXxx$VhDuIO2cXz7m) zbE9P^SM=&-c@ek9Sw=la@^6ik?FeE}gS24GtaK zom|m#1S)SSxuWN2M9HI@qX{|56+OoxQaYhm#>!+MSM;2S`g!#6xNmzPSM;2MXc_us zWNaqUTc7>=n79=L%F!=l8K2-7~qO=W4`B@2Ga1#L(BBT+wqK zDyL638I|)OSM=PN4_^M{ik@2#Zwtv4J+~uBPtBWYv+TJmpW@9c>n!Aoo_i4_y}M`h zaYk}Q&jW~%J}=o3(#aJ)52M~zAy@P~hEVBav1x)yMHn9dbCD~0oSR2!p}&q=y@J-vNuZ>91FRk=Osj#n?~1U@kuw*!}yzcN0N&!q z; z03iet5+anK*|=+=NO7k?O9d|!EmGXwi#x?B-+yCoLLBIQp6}lKyM13Wv-a9+ubCu3 zRxhh)pJ%vY`l~8d^eN7Ga=2pphbmh1$2N{=9}HJa|5!zceg-i|h-bKB`e!OwoRdR77yzW+ORtB-RITY* zwRUSSCMQ>|$-la;awE^Wp7k2Nf9PMTz|p_6k2EtSw!rZYSF{KfJ29il-aH|%(~fhv zq9v({9P3#pa=4-;Sz_~iU)*?xD_T;j$k8921XMT5a79ZR6(`PdARnAkq)Ns-T+xzV zg^Y8=P3$3KAFgOIJ|WYXhbvm_Dr90NK}FhpjKdWz8CAr@G=1cVaSvCtIH}l;qJ6fG z{m3K5PS9{gOE$GaoU=qeIJx)jny}%DmYiyV#B|&H1!5bnXmL>?;~bI`Th8xC2SppM zXvv${Qh$)=yU?)?SF{vRDrou-5-I)Y+U-aRM zmg1kd|5%4BT1u(NiFt#+-+v6l6)her+DATg2^y|wDW_KWKO3%Ssi>CwKN+rQsiKzp zPlhX6JXPqAdg@~zu4t*Lf=2%`KK2%W-#IZ4SG3et0plD+_rbd<(i=OL;fj`epO9os z!xb%Gs(>H$yu>hE(b7moOU$R#NHvUcxT2-$r{))VxT2-Sr6^Y z(b7F}rFq|H@eNnB^!(_|6E2=Vy>8wSS*^T*DPDQU#6k>)V)v#y(upGC+ll z^OI7Pkdb;i=HZH#!7AW?JzUW;Os(>t4p+2{{5(sfZl+xT57(wan)mu4q}Q;(fN^ik3Ah z+~*jsX!%`5`Ygj0Eq|y`pJ%wDWwVO)(Zdxj+tlr!FkI2HLk0L8!xb%msYo$QfBGE5 z6)k&J@Xs<_(Q-hAieXS(JOc*R&qBTaOJwRl@Kav=$oRYW)nOGehIxMRM2u~?qUD&1 z_g@TGw479tV;KGwPo@bNu4p-8GkTb(egk={M^G8Ess>x zPdcm*hbvm1esZEQ3|F+gP*G!e5Z@Ox{!w|c3|F+gQlUTla78_d3j1FVSJXAN%6~Xq zQBR>3_^*a5>Zw)qPdnDg6A&W}SJcy~&~d#q;_sNqp`#2})O8j7GY?mMJ7-R}>Nb&Q z=FEs%?|vbJo<-!Dt7p_R>6vw=0Ckn-U}+AK=Fqu%Ry~`ZU1t_hm^Am1=Dt!}qNce0 ze>(Q?-H!9>`5A4POp~T*vvfuob&II=dJvoL${0hvu+BK6Z=|```!R-kF})>M-1NWlNtb9MsFs?mEopku-P`y78_@K@F4U;nF-pnnz0WC}|!&Uk}i`sA-0x8q*BTW2CnD?KDFs8@`!l z=$xP-g8yeT4dWZGn9ym4de7Gb2{Y-v^xk?Oy{{gjOTC}oUmu_k)CcK<^&$FDeV9I6 zAEA%bN9m*WG5T12oIYOvR-d3x)W6dw>67&-`c(aUeVRU9pP|pxXX&%`Ir?0Eo<3h+ zpfA)H>5KIr^dNbT z>6`T}`c{3L{-?fO-=Xi+cj6i7t^(*>S{hEGVzoFmMZ|S%7JNjMyo_=3{pg+|A(I4rL^(XpM z{h9t;f1$tB|J7d^!Y~<0jHHIy(2Qh8awCP2(nw{bHqsbrjdVtO!(!-$VOR~DVK*E` z1|y@9$;fOt8Ci_1Mm8h6k;BMoJ zxKY9=X_PYDjnamPQN}21lrzd36^x2TC8M%Y#i(jjGdzvzMh&B;QOo$ksBP3S>KgTo z`bGoeOQWITWi&Dx8%>O+Ml++i(ZXnHd}XvUzBXDLZ47UttHWmNd_n<~h+$EEp%G@q2_Q__4|n$Jk{S!q5e&F7{0f;3;0=1bCiS(^Wr<}1>CRhq9! z^L1&yA(9N%MVaejv>crTHIeek9G0rTK|8^DcfS&CjLzg*3mE z=6|L6mDGgPOj1iCwWLxrOHGqnGN~n(S_-M9lv*mOrIuP6sil=#I;o|Xnnh~5)C{Rv zrDl_wU1|=gWsq7%sb!K{W~n(zEsNB$N-dkzvP&(8)N)EKm(-l4<|4J+Qp+Q?yi&_2 zwfs^mAhm*0Dms#4sRc=`tJH#}79zD!sf9_co7BFMT6d|1ORb00dP=RA z)Ot&;kJS1~EkbHiYW<|vUupxSHc)DVq&8S;L!>rTYQv;9TxuhvHd1P%q&8Y=W281# zYU89fUTWV;ZGzM$O6@zTO_JJVsZEjERH=P0wP{kDF0~m_n<=$fQkyNcIZ~S|wRuvT zFSP|yTPU?f@23(Plhjv(37kr3OjQ@hIhD|ut}cmZDxon;U6hEagvMNTLjtA}8Vl5g ziJVGkELJyt%v3^S>D!GYbSk0ole*!frxF^!sM|kcDxtAL-5A5TL4KGj(zrombu5=f zol0n|Q1WY9~wyFz1aw?&*J;sdQ{fNh#x$kd(*U#9c zu1(}rLSv7*>2pmbH1?}#A2*fIIHd0V_^E`(QFVW!rV<(_)GdWfuYc|?QBw(x)9TK| zOeHkVsXG!emC(4TZir_pq4Br6D7IOHH5%4$+~8ezT#M_<$V2#yo9fD_W87k#N@(0s z7bbQpp>bc`mC&h##y{%ns6*W1n@VUrQTN0=Z7@nnp2vP&l!E-Lu1nZdLaRw#8`o4q zt65zUbpW9H$zuKvMdZ1c*5vB4L`@~Mrc$?j)Ko%i+UQBeFqP11QI{oXDxuY?E=|l- zLaRgF5#LloYbJHo2V(#$H>}~=h=0>?HP0rss(SMCzjbTXY5unHty$C!QQP@{Q>G$K zCA4N&7bbElp*2?w>BKda(3)G_5VfJ>n@VWSr|wDkR6=V(b$w!{5?TwZJ7OClSg&$j z&v(@Z`7d)Q>SuCA4-@7eyKg7t2&aYk;~gQs2HG&k^fXLTiw^B~lsr zvEdJ=5?VvlHIZh*#W9u8+D%>iiBk!!;VMXCrV?6vsXOAHGN@ic@BV<>+Bg2|BTpr? z_EXnKYW29M5?TkU%Oh3nf1fX+O(nDrQP)Q5fOjVlc`BiG_y_C9J(bWpN?jgl*q@hY zRsMXxnrFk-QKF7jmqmIH#XgnL`mMS&QVYg1mC*X#2Z_c#mC!ongGApAWQaPI&^k?B z7O9?bOeM6=RM$qCkQU!mLhBrLOO%0i37$%5ov-eVGJh_{sf5-=>bfZN=OWD+{BSCv zb&0w<$`G?iSHJnu{&$~He^i%##8g7-&+5hmPbIYe7A>X!{ebrepWjxgOQY1}f3x-? zO(nFhRo6wS`~R+sXDXp}y}CD+L4oxfH)_zhQR_FOo8HxFV;qZ7(YU4(TDQcp*qhUc zI+f7+r@A3Z1!9~^Xx*ugp&%^x~aLXx*poN#s;Q>p^u>!lx2i zkErXTJah3)CA1z_wL z>fcUMwJ~22H}P!kwllBpT!jEV}=Y`U#dt688T=S z>dFs~Af6$EwxsH&IED<`lBo+me#oFLrMf>cLk4YW)Ex;MGH6S$u1(aCL7Sm&N$8M4 zn?0VZqYN3eWsEiTXhQ~VPU_kO4;i#&Qk# zsc6xE=q~PPu@4!v6<6`1&*X?PUW`KqZKV>izj%iX+B_1mzXS{!w3Sow640co`fnQ{ z)**woiYi$2VNTJC^}&!qTNQQRCkz?1d8z<0jCxDNkU?8b6(jnOu}4e(&Ep#RM>}E~ zGH9!4A?1w`JZS~a6pE_jF_N9uFfX7^=5a*CVTO$=I`e3UVHxt8N25s$P z-p{+qN%0REv~^GsK6=QY%}?DP{dhk}Al4y+Hh*=0d{gLR8Zu}LRCj*VkU?9px;6To zo2W_0KV;Arrs70@P@~3q`|A5}$e^vex;gr%n;36Sz>q;(&xFKF_>e(c9~JKthYZ@J z3KHM(#`L|fZ9qbnfA=TQu?!is4OT&-KkhNsIL0A^wqYtl^v_FCBSarEXd9{S`z%8S zZDUlZ=pTasU{x`|NFQhgSHuJo!B2zGW}qkw;dVFkU`sQ74MUW4BF(~OmY1-I^4BD2dXrE`upl!K|75&TA zxHEfuoF5JuwEe1rMSl_!J7mzdQpNeth78))sPNHGqHJ2wCzo7p6`nr&yYde0Tns=qmzK@Mj0|_JFMcwITquCQ;Jl{ zn1>A7j;WAwj(UkbWb8u*Z6`k=)0l@0+RmtuiJ6ELY4b4-8MK{O5fjt&kt4=EWYBg= z#cmYsvvur89w~N$h78)Ss1@Rzsqw+dy>Hiq4H>juR|_Pj+ukn_+mJ!qEfq4(VKK4g z{C}7GyNNCJ2YJ2=9qW)m+XJ;iV%}h}tPpL;pzV>0oS4TimdH_u4BDQmu+e{a zCPCd7eaN8g#V77R)**woS1NL1-r(=|AH$GAdlD7xBOkg14H>j+YK8x^A%pf5YPtWD zA%phRYN`KZ$e=x)3jI+}ee6R9?YasY{mb~+Tl{_J#5`osZc_o{9Le^&yYcT5fv}aj*gmL0)`CQi>a8=e`h9+ z3dS;I&|XqSit|%nl<&hMJ#BFf8MK#HVdMN3DYme24;i$VRe|IDdMmcT2^%tKukdLL zy!$dH)**xT%84t@`#y_r$e_L2M`xa}A%pfBYJoUEgG8zQ`^*__P^)Sq{;ouw*ME<% zHUC1osx{yKr6BtkDrlTv-^Ls?_927zx+-LxpOm76jMURH4;i#KPyzqzA%k`=waR}w zWYFH^^DGg^kU@KMwM0T6(2p20X#Ywr@X_P#Vi+=LZ>=JJ?jeKrwkqnU4;i%ks5qZz z$e_KWiuE~$4B9)ZNFRL)k^dz6-HV`$iuh?m2JKx{j87agXb)9EK7Poc{Tp@v#|;^@ z_fYr#=R*eVz11?GZ^)oMLdE-RLk8{rRk+VFWY9iHMfxm52JJ&tsLwNG&^|)N`sg8p z_R;G0PZ%<2AEyF*jv<5g2`W+yQ;lrD z%(aUrVr)YO?Xy(8|6<6XeXfce!w{@^GEKmcLHhy~`csDt+83)RpE6|7zEnks;V|Bh zZ+rh0UxJ1V+J92&Y_7y7lXC5+WU#)`1@XRDU;}3=m z+SjRwpL@uleS?bnNr&~}kU{&VPfj$3A%pgX-H`qjKzznLb&Zyvq7@|?OdLkw5G znR${*q_$rWJ7(E0O6`aDBXR7n|J*IwsFHVoE$hu-khde~?APqqqYON>-?HChCY}AZ z{f_;v)Rsx@C#n5B$9~`b!2VEbze;VL)c#;TqP9z<*8b8qXnX8WBZM?D?B_?`UmrOo zuSgR=pKq!Lb_op*^!N7(E*ua!{=aYIFXuJ>vGLzb=;N<~bYr2y9V3NzBz+tHm(LbH z;B9ps$sDPf9_dK#Na0B7NF}x3q_#q8E2Xw-t|N^jt;p?2FSXTDTO&=)o299}K3U08rmm(WIj0X`w2-T^`Ue8>kMYT_5-*Vf;sYDe#2?{=X+!418;`1-V} z>DS(eKL>d8-sHzVKDf!t$KQvG+ef|2x$^JHx9cde@5w6 zN5!|ty^U{VySu)g&gkkN=v$^p5sxa>Jlx&gJX}kZC|;HSSIpD3v|D92*D6&?S1DPd zTGi4eJlx(@ql%-NTBNGfw$E~SN^OTayZ5sU-yPojv5c>WEjns3Y|+7Bubm8AJS=zW;+^K;I8{G{@1#;Vn+a`f+|-s#=pqAKvw@dhHxO z!kFb?D%svy4yKarV^ApT)bkGT@d^$0>*5=AROP$dIy*vzvC!e~2yk?91UiBoT^+#= zrj;F#+CixulGLa&WtjexW>LVZj7>`-^XaRQC?>^ABeRLF54ZT}2;%^*8UMt;qYZU9eB6PfNd` zj)7f#0z*6s7w0c3w(l0&{&h~SZ+^W@N%s<^Jls9pO1OEnFI~#Jw2ylUcMtc{#oRoK zc@%Z)P`s$SM~U|BiWh6_9UM@qL=(RTDq8b5|0q?c*t_bEaE#&2?-=PAetOLG`yitP+)Lq)xdxtf1gmlz%E{40qX7b z<`lhreAO$Al4Xo`OZ^~qIUiCD7ByNUzfgalH&4uDv16WNieswdd&e{fW8p4I?S|Cu zNbP~tp1dDH>zL)3r&6EonB$l$waZfbTWVM4IOaPRIG7f9RchCyc3q{OC)#3BGUZ(v z7|gEtsq45etm56SvzJd0FW%6=;MSJ>abNvrjn@yMbEOooXVZ#yB1i5dB1g=PzTEL! zO#4~kSm{_LwVP7ACAHhU4J*BgCBDqjxJsCxfBSbwx!$oUru#QLwm7y*jnC`%q;_B3 zZ+R1-VVPJG+2z<9Q=om0{SF>Fz99HVYL5t1@otn|9dH~KsU620$D7vkD%{>X)Vsc( z#Jg>fzh6kGo7*8%lB8xWS=n;UT)O!LhtLJhTmsv6;)w}q?&7VU9)7uz3v+c1VHz}Z zY4Q~5Et#FNxa2Naw1j(Omo8!c{s&X0N}VQcx@PtG!dSg7nz*#{_YMj9s-9QnP=29p zSg21(M3RU!5lNeSg|%zvy2FpIg{GC~LOtsdD7Z<;<^p`StK&)ehDDy?sOY@9K@^Tq)0+&Fg6` z5y>M`(9(rp|FtTw@Q_fSfX1~{uquK6?GNP1n=gNhH>q~v#%6E+qmK%tu9=;$0I}bE zH-4~?YpTLU+{mG+dYiDb*SUBFdAIYa;wJdF7pEdzvEuKNoL#H{|Gi`>F0AIqvl-Zh zr*L*j^^2uFcnw9WO#3%An_Z?rjKAL6lD?i-ZJ%(T_OIV$oW=g~6&eKx28KqML<*sc z%)(i?iekcDc#7Jhp=c@Eia^m-gorTFR}2!P#ANZkm@a0DIbxnzAQp+A#452-Y!~~* zF>zj85`T-UCX*?dNjGISpP| ztN-@yDLL!-n>ok4HO@OOIOaMoIe2mKe@~_MjMsw8RbyHU69P=tM zF$nXe)LyCo@Mg|&uDBomM&Uuc+T*#1w74j5+>z8pUZLUYb5lH5sxKN}UwOdsfCurR z;~&-bq5P`)qU>nRIwu`c`}a+;9y^}Asf*8S$769a(4vc?qLe7|T4|9(c#BYxqh4yS zn*4e(QAQLO#Vnm#)TvveLE~Bh-o9_&)GzryM5N`R<4-U7z9fT*Y2jifUxk^N1iCe% zW(;kWA$f)rjlDwI6`dvMEg>=?7Yd>z%7AlDQyX96Yji+YbVqOWg~T8X!ElVkuh@lS zxPoiAfm^tPdw76fGNeQrqyz89v(o(i1?r>s zfkb}{!g#P(opp8A)mc|(uR43x*{l8&Hh?|r>{;K29rz1-aR7&K9=C)r$ic{h(rALV zpuPt6HNM3}Ou`hfZ-aUpi|_-M;zuk8y=bh!-$Gc~kF^p4L7l8?u^sfPmAYH0la)NI zG%o2Os#t51kQ!Ky*b2!tf2k(G$JV7ZUw3 z5Q8xk!!Z)0F&5)70pDRVreYdqU>4?J9u{B`e!x=vh~@YNzhNa-V=aEi25iJ;Y{j40 zfnC^*z1WX~IEj*~czvpA27xQr{fh8wtrJGh4j_y>>i6wmPzuY_fuW?LQ}LrE3`p7bbufH5r|-f zp*wn_4~t5@*NOM26SZ~X9qL3~ zvm}9r6iAJ9(80ScO9o^{R^)&)@*qD7p$LkhBub+!Dxfl|p$5J{T{M6fnxHwpLTj{z z4?3a~LeLw1F$;^a4(vS(d(OgMvmC`8Ji#*|vXX07a?F|?oMl$dFe~e2?SgL*jyYHY z>YMd6{>D`yva#Q6>@!;?kY_gX%hn8oFdAdA6f3X_hrs>W&I*w|IV_+DvlmA>u>b7r zEjxS4?u*IbjI+>^0}Nn1&fxjZGj%&WpH-+k9!677k=YDO3dKm5Ug;=;K_}E7ufIuUzv$zPXO# zI3D4Z5Y8rKLtfAe&YZC`xjQ!oah!?cOdRL&_#V?i-#W7o=lw#saKB3`q(MHg9~bK9 zLJSvb=khfMVid-J=fdSza0V`?a2Z#G$W85Xrvqn@n|kD~3Qu%KD7t}K)E^tK=e2EsI7Wsm~dnF&a&hc{8dm5)HFZ+nBNcVDgS7U#cI$e`RSAVr|~zg3Q-^> z=<5PD)I(FSrveceisASP++ScV&fywv@U06u6eNd&37~kwc-(3eHHuZR=KzX2|R6^fxO z%A+;dyBm9V8;DUDgO&ILoTVFQ;Pw!YgeaO51yBfe&={O$QHfy~0rp;$y%*hpOQ4^M z-Vvgh9odir^ii?es0;2XHUZz^2-tJ6^MY@S!I>3LjgqKn5BqWikPLy!=3uOr$S|XfjStCNtgm+xnIR~ zAxakldoJyc_6R^AIM>qjMd_bFex>h&y?T@eaXrY@BMf~IfwkCzZG7vmAssAWKV|Bn z0mg&(YMJRc4EA5agEJlJ2kn?jV&2I^Lxx|Jtx`EL-8_4pGzgs6}dX^;-(!E;}sCi-DGMuPoS*p0n- z!EbM{&x*-W1MIJ2L-1~@NR2D9&x-U&#S=IsL?xc5O1VJpm0F@bc%CY4#$VVYL}e?o zfP5>r0JW&>gE?3NYEhXpsQeO~a}|2K3cX#WE=GaAu0jo}oWv#kEkspk6hdLJm#XZg zDtoEA568i^)eJZxD_Wx?I)R?5wh`p$X#*ekh6f3}*HB*9|YO-d{ℑ}P^X&oP0gc1)MA}l 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 Z2T|W?heiK={O#z!kN?~L|0hiA_78NG%q{=` From d7b981c516e78009b71f8b2955b4343cd771c63b Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 17:30:17 +0800 Subject: [PATCH 005/178] =?UTF-8?q?fix=20=E5=86=85=E5=AD=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 26791 -> 26912 bytes LFLiveKit/upload/LFStreamRtmpSocket.m | 57 ++++++++---------- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 6eb8b39f0cbc2d04d2aab78dac65cb78d3b65cff..bd8b48708a7861a995dfa5d99d8cfcdc11d9ff94 100644 GIT binary patch delta 13533 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 delta 13582 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 L-*^9K?VkSw{Ftk~ diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index f7706abd..9b549a44 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -46,7 +46,6 @@ @interface LFStreamRtmpSocket () @property (nonatomic, weak) id delegate; @property (nonatomic, strong) LFLiveStreamInfo *stream; @property (nonatomic, strong) LFStreamingBuffer *buffer; -@property (nonatomic, strong) dispatch_queue_t socketQueue; @property (nonatomic, strong) LFLiveDebug *debugInfo; //错误信息 @property (nonatomic, assign) RTMPError error; @@ -83,36 +82,31 @@ - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream video } - (void) start{ - dispatch_async(self.socketQueue, ^{ - if(!_stream) return; - if(_isConnecting) return; - if(_rtmp != NULL) return; - self.debugInfo.streamId = self.stream.streamId; - self.debugInfo.uploadUrl = self.stream.url; - self.debugInfo.isRtmp = YES; - [self clean]; - [self RTMP264_Connect:(char*)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; - }); + if(!_stream) return; + if(_isConnecting) return; + if(_rtmp != NULL) return; + self.debugInfo.streamId = self.stream.streamId; + self.debugInfo.uploadUrl = self.stream.url; + self.debugInfo.isRtmp = YES; + [self clean]; + [self RTMP264_Connect:(char*)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; } - (void) stop{ - dispatch_async(self.socketQueue, ^{ - if(_rtmp != NULL){ - PILI_RTMP_Close(_rtmp, &_error); - PILI_RTMP_Free(_rtmp); - _rtmp = NULL; - } - }); + if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ + [self.delegate socketStatus:self status:LFLiveStop]; + } + if(_rtmp != NULL){ + PILI_RTMP_Close(_rtmp, &_error); + PILI_RTMP_Free(_rtmp); + _rtmp = NULL; + } } - (void) sendFrame:(LFFrame*)frame{ - __weak typeof(self) _self = self; - dispatch_async(self.socketQueue, ^{ - __strong typeof(_self) self = _self; - if(!frame) return; - [self.buffer appendObject:frame]; - [self sendFrame]; - }); + if(!frame) return; + [self.buffer appendObject:frame]; + [self sendFrame]; } - (void) setDelegate:(id)delegate{ @@ -398,7 +392,10 @@ - (NSInteger)RtmpPacketSend:(PILI_RTMPPacket*)packet{ int success = PILI_RTMP_SendPacket(_rtmp,packet,0,&_error); if(success){ self.isSending = NO; - [self sendFrame]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self sendFrame]; + }); + } return success; } @@ -461,7 +458,7 @@ void RTMPErrorCallback(RTMPError *error, void *userData){ socket.isConnected = NO; socket.isConnecting = NO; socket.isReconnecting = YES; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(socket.reconnectInterval * NSEC_PER_SEC)), socket.socketQueue, ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(socket.reconnectInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [socket reconnect]; }); }else if(socket.retryTimes4netWorkBreaken >= socket.reconnectCount){ @@ -480,12 +477,6 @@ void ConnectionTimeCallback(PILI_CONNECTION_TIME* conn_time, void *userData){ } #pragma mark -- Getter Setter -- (dispatch_queue_t)socketQueue{ - if(!_socketQueue){ - _socketQueue = dispatch_queue_create("com.youku.LaiFeng.live.socketQueue", NULL); - } - return _socketQueue; -} - (LFStreamingBuffer*)buffer{ if(!_buffer){ From 41fe9d1070d84a2940e1ac94d8ce4beba322ece8 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 17:30:51 +0800 Subject: [PATCH 006/178] update version --- LFLiveKit.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 26912 -> 26802 bytes LFLiveKit/Info.plist | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index efc62471..3639be9f 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.4" + s.version = "1.6.7" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index bd8b48708a7861a995dfa5d99d8cfcdc11d9ff94..76aa693867ce6f1c8419d776e92a5c416cb1bda3 100644 GIT binary patch delta 12722 zcmaL72VB#~|399)_X=TTv1h_a2!sG(D0>q~Ac2GgH=>}RC|1#`wdQ?Vt$V#|^`os7 z#9dcib?;rbR_k7MRjamYUDe+u)Yg6<{r?%^#`ATr*S+p_uh;ADn12d@m;pcEK^ z4OD^-pfl(Kx`SHK3-kt!U;y|C3l_AQ%ioVHi}x zNT`M}Fdk}QGHeIaU^>i(Ij|HOp$V43a%hGYSOKlD8uoxaVGXQ>ya~OZXA~L;w*;L=q|@iijrEL=2&^6R|`Zkxpa~nS`D&5G6z@(UIsxbSAnGU5Rc) z715n&Ao>ygiAG`o@ewhQ7)jU(mO#WPVl?p?F@~5<%pf@83t~ReOtcUSh*n}Dv4~hq ztR>bF>xm7-M&f&76S0rjPaGf)5@(3B#E--|;ym#aae=r<*zXW`iF?F-;uqop@sRkH zctyM>-VlG1E~J2TC4ER=(vS2f1IR!!hzus9$Y@ecwkK1_R5FcBCo{-QGK(xAi%C6M zMwXLSvMbq>>`gY11Ia;T6FH6?Pfj2wl9R~E

    r$IgOl7&LBDR3vwp;4LP4|wv#R7 zGIAZcp4>ogB)=y&k$cF!cs`BHvV5EV>?Qel*milo$33>8mlsbs1hl}4pgM#@B$QRS4GvQQP2m9kL{R6nXe z)kqDXKBBnuM4Na(UdPx0B zy`WxFuc+75J6cRjXesSUd(qys5A93)(Mmd!R?#uEmQJA4=yW=lE~NFefi9uT=yKXj z+vrYoXSz3CN7vJR=)UyF^iX;jJ={)zLL+)CJ%yf1Pornk|D)&7^XX=KA-$YlO@B{s zqBqmK={@vb`Y?T*K1ZLYuhG}(hxD)XBl2!>=RhGrPXo$+A286U=%Q7}p- zl2I{HOf-|kBs1-pEGC;NVu~3PV__|>5H$C#7MkIV(;3Ui&g#oT9pVIDD$`81#5 z^Z71(0pFGH#&_p?@P&K{-<$8p59EjNL-~<>4L_ORj^Cc2&ClWI^7VWJzXbA2IYecF zZQL%(?mi5G5eQ5`U^xQca;5ZDaxemoTpY6=bXKWc5-eTSo+{OnkJR9#@*20=uZ#E??XIpa4xaH5}06nqpK4J&3jofNs7>!SkmhuOI z={&_MQ4rT%nwSTsfT>^_JA@s|4rfQOBUzRm#eT+)Wyi4-*h%aZb{ac_{eu0Hoz2c+ zzhdXH^Vt@*m0iRxVVAMrvMU|qoRcQjgKxnKu##QPZen+_huEX+S@tsfGy9Nz%>Kc? zLx4d*h=3FU9|S@WP#~Z|K#M>s0yzj2AW({c6@iWjbU~m7f!>aV)bU(-MZ9939;{_~ ztS9?%m8gu1_mAWr`6#(9;+Rf=fK&&(peu}B}&5(Pwtp^g5XDI)0j4@NG`!g z!CZ7UeU3SF6qTpv|)5L$8Jh^&b8FSy+Jej-hSHK64oRz8EG~ZmoQ)hX4 zmB@^l26L}`vzeF9CJxKhP4L!Po>?V|aCRT?lkg$oY@5Yt{EZCXS^giFm1cB>?#{~G zDp3XoM{;C2xUF&@4)wgePILa z$L?nLuzT5kt*{Xe!1#gee)a&yA9Uh($wHMQAo@@IC^#D9$FPUlBN+b!Cy=X^6X7%m zb`qQnr@*P~G4?onf<4&^r^6W-`vrT7J&mzvoMT^*E0y!$0tfyZI3G5{7WPN>9DAPq zsTH=ug&4n>y}(|?_)DBTW+b;LRH0l0H#qR$!L@K5T+d!%ud>(J>#cAj{2t>svp3kA z7=Oz-{(!Jx**RAkR_!jC39{Yy<6XV}vS>|a3gb-s1SHg{OCp-|~Apj77 z2;lTdM2ImS`wDYxF8@vz_pbKBf>Em_Bw6| zxI4%^oMZ>Axf+l8JVhBn1Hx0%8Y=gp(+hQCUR31O9&vh$tWmF}w%?PXxRi zaBr@sQmru(7KczKqKqgf%n0}*;D>-e0s*Z=1!2V`l?VhP5ab{Ub_$gmDT}EldO65? z5Iu<+q80%e0(eHD2!yo~y@@)9iV+A$AmVQ&pH=y21`$IYR87QSVhHgu0!joT5l|rz z)k+K_hGS+pct<0kb})-^GMg0@5jB>W_@7gnL`=pcQxS+oAkIM&&)trS*32a4IJkUC z%pztJ|3e@FfkXt75J+w%<`Q3Fl6eTUL!iBbB*n>PYjkML5@LmeY$>sfSWbM4KpFz+ z2xK6T*-ES=R<%tj3xVvvr!-#e9krR*@t?BoBz9p&dl1M)AkV=lpF5~J4h}QSBR^`H3W3PI{0+65C)`1iB$mg+TXKQbJ0hp7cVX z8i5`TCOw^MJ{}tp6GDdne=>?76>W^LMfGwrlE(#UVo0rnk%o*VJX?$pbr9l zTge165i?3gpaJ0w0yFCGU?fe>S<`2BVb@RMwMohC)G}@RqV;Y#B}e1@_-J{}Q)A*ac1WEIa9A3>_g9^B~on7EHm z@r*nZSwq%#Hd>1N*VGOzt8S`mA$#%6A2zh1>d1QTT6_S}hwRI}jZYExBO7^=X0ks5 z!<)$g2z5J8B{VlMtA^ zfSgNyMShLI6a zTXF@t5`k$5Oh;hG0&+FEhPNI84uLP&_6~(BxS*6^?r`Ej`(FtuxtZMlUz9t@oeojH zL|_&ch1G;*JJVPmuUux$9bDf~^Pc_ydE~$7e;|)KIL|>~u7h(}wy2HXoGNot=HaC~ zO`iKN((~j`*G}Pu-H&rhnZ<0Ur%r>LNQF|}$9r9P6Vi8umAUSpx&kbhPh zEt;nKezlHMP1ebhQ`nZ4v`P4m;*t#|$u*G2tf9KDXGv7mC<@>ZN z(c9aNa%Ox8to|USgp{0{nwHH)rMdH+2_FLMaC&FrJ5xObHaOB&H_DmlA@Kb_nO!vB znd~9387Je_E|fFPLtv{jH@u$itYZb7=v3u6$WQ2jnN~)TtSW0!EI#Qje&Quqw zE7gsvqPin+0D*%D975nQ0!I+|0RbEcjv;V-Db<4)Le)^UR4=MGF4a@m$(>-`5V($@ z2EjxGr{Ef#jo|-SO;^041vT|ejRSKA)>d;TGo^u5BJZ3*gX#x0Rrhad>l##2J*;tX zQKZ@JukA6o zckf!KkY}iw)R)vOo+~w*S4_>J=5mR}hA?oK4zNY5k-fyV+R5M1*rdrAF z)Iw?z*HUZ@0e2C&kH94n?<}>1T8eSYsO8kR)Cy`PwTfEJW#(DjZy|66fjbCXM&Kql zFRy*UTI{8%bqHK#Q%_SHsqZn_CamKvor-H}`#071s;?brb^2Zet~nG9ZgeauEU6z- zYp8E>ZUbsNwS()LA40THJGsvJ@?fd`UE9}b$K?QTF|~)<%PU3zhvC~SkDJC%a%m$x zNFCzdxp`A9)M1_(mjX!Y2kIy{qCibj$8gJtg6NEYO_@4@C*4Xd!k>8G-gBr0pT^qu z*jdLsuy?x1rnZg#6Lo=mtdAzCi+HHV`l!E{UZ$>apBfZc+N<0rhFA%8ow|wR7IwB50#6XY zpT94lo?_KKN8qW`B!yhhoSN=$9D@Ccz%#7iw)+s8NAvMsq5%zQf+lH-rfCKNO!o%@ zIP-Xkz$*k^Bk*Q1?LrG^SK1AKd(c7z@HlS~q!Gksj(^+{^x%}aGb(&~Hulq04;au; zs~Os}v8GltU|?gP+MZ4CIr`Hwo@62K1n(qP*J<7vHk-|1bJ;vLe<3aBouk9(a2~eY zcWfboJOlyTfmLzc1^$kUAFETrbQGQk9gQIT;P!&n(6Nr29|TE+53~Q={pi{EoD=DG zAKv}Y?eQf7r10gBP~>C(z)z=Of7f+e~Sl!%Pu$ z`M*~A|8IZ)SZ|exOJv%IeduQQv?Vw{xAClW@a%w~h>I-@OYK5qht*1VrMuBpbaw={kLg+jy%7v>1Qi&@YC4qE_G+@#*M7`37y9ZtwRxISyf_`r^}Xwy zJ@1v&K!4;IyC2=3Zlnhw=!2jyf_@14w?aKt11!7{N7iwj?aTdAINC6R9*K>UH-rss zrtJs@vYIx5N8!6JdNlnRf5}Xy#YZLf>GSDq9FSgdi%e6chEZ#R3jL} zs;Wdn?4m#Pn_<~qb~-bP_xjvNANX5A2N8^YFUt{!EI-gk5sX7n`;ROq=+hr^ao7Ge_D}Sse`Dz@4rqb{+JFAPpf~6{j%B?`-=cq}ZzGt5U^0U35NzK{ z-=*)-_vv2{OhK>`!A}t!>BvK59h}>jn^_{}N~|v2q>^s=^l$V_oa4~H(@*JV^mFaa^fUM| zAw0!G#-9mb0+}EN+Y)vhIs}UlEJjf8==tm0*@HX(`e8L?6=jVzgZ|lu+&-f$Le1c- z+Xa|L!^AqVB?y)}>RKkjS;rbK;{+!E{Ps+mL$VacA3+oDYH=`X8=loz>P?pS6U$-n zLEq7f<;Tp+KLB!drl4>=Q}WNmOA)lNs`sR2OnIAabLUG#>{h1oA0T!Iwts+~nXcH* z7!g)dvr~${udkVErh%te#`Iu%GBr#s(~IfN)G_r;AEqyYc#w_=c0#Z-f?W{oieNVc zs}RIqrFt3DkE&rB@$W~>Kp?k zc1C(jZPNl~95bF1TjloC%tW3mGl`kZOkt*WFj_241MB!Csx(@&!v%YLBZ#$${pCQe!5k@G#4Ki(FiV+b%yQ;iW(Bj7 zTWF5&(}-X{5shF2g8gllVS}1#`{C59XJh}SfsG9nwL_co8XFo1o@Tyd7Gv?(GV7RS zIOVUbt8c2!jpK<31RLAL-pG89JDlhiW+TshhS|()!6aLG#mshQ2eXsQwnU3WI1+v& zf^8(bnLXSvOQ32uvzKSaT#c5p>Veh02UZWLvosBBs6E5%XAUq2@gRqo!^{!p2ku(3 zJk1T;6ILqDN+p^cM@(;%+FD$Qg>D=8ICBCYJskBG<~YyX)_96J&1F;sQVWj{@AC9 zyFFoEAvg-b(Fo#LHU`15OQD|mlX=U$ zgL*#TL;OiPeB0*;jze&Qqc{=4Nshmhxh>XXb`f8Ujbpr1FMKKA6Wi-wCrO8K;}$QT z*@}(17V8tgYVm#E;~f=$o_+pbM>l@ZhaIxE%3t&4hw&rcM;X2X;Tz+&Fw9r+67384 zQT%8=4p`F=Hq4@;A4e+f#6KeUMY{y z;}`y`SLdLeg=rm8QG}zSwW+?LzNx-;kmJl#C5qzar^&cdHvv&4l5%VKQhVEUjX1NR zvK;5JROe1K)DEky$r;$Q4(Ig)Px3AN3ah25x~Y~0JU-8l7s`v~CGk>uS=2DfPEDe| zz$cJJ_-wHPpDWhkhuuxo7U~rB5~s0V__5ZH4xoeR5L%A2N-dp8C(|kTxi$+w*cQ-s z9ZsJGVh2KK+`KA00{Azx0egl6ne-!^S{#gDv{x<$${tx_P{1Yyei^L_w zMeY*j65*nBQMp9Bw70vYx}>{gx@5cLy5zeQx(sn?b~)klP7o{TAQ&jH3q}b(6MQZh zFPJF!MzBP%La<7(MzB_}Q?O5PKyXNKOmISQN^nMSL-5Si&o$IF+O@rFhO6GyfAMWn%-tGbJk?zs% zG465hTK7cvj_%#u`?@!{_j7M_AL0JF`*`<>?vvf8x=(li%6*>ueD@ajR`*5jOWeYXggdK!kg;m08VJ~5wu#d1o*iSf0I8iu7I88W1xInm2xLCMUxLmkSxJ$TScu;s) zcwBf=cv^T?cu9Cu_(B9lLXk)$7D+`ikxCRTiV?+%;zg+P}(FNA{{CnE*&8qDP^Uj zq@PL0O2aI(&R_B+yh(qE(xrH`afq`ym_N&k?(l)je!DShV&Jtm!jr`Xfe)5p`_Gssis8Rn_*RC%gBV?DK=iJm#0d7cHHI?p+ti#?ZmF85sFMRy+0SuOGbwyd%A%yw%DBcJ%G#Tj$%yx50Oj?^@sW zz8ifv`9AV}tO0WZ76&X1SRSw<;CUbsNCh&1 zE`jF2s=(^No`JQ23j@CkTohaKR7VBM{r~C(BR?0BZ5Z;v%%woCk9Uro*FzomctJ%0r7nZJ{GWKM$Q5IzMzp=!VemLpO(R4c#7kAoNh^k|f7#lV|Y+~5tu&H6w!#I1`%CNIxH^W`SJ;Q^; zBg2!zGsCmPbHnq)3&Ty}<>8iaYj|aN$M7EEjo~B0$Ao_#K0bV6_~h^}!)J%j3I8g5 zUikd*E#Wu9A4m8`$RjinX%YDmg%L#&`iPPUYeZ#4$B51mT_dU@hDS6nZusdBk;g>r*(lX9zayKOr#*vJyIAciS&#Nij0m-j?A-1mPDE&&5_o~4w2Q7HIcm| z>mwT?`$vwCTphVR@^<8-$QLT0@=*Dx{8d3JnJP@BR>i8cszg)S##lQRAbysQFP#qn1alh*}l3 zCTerkwkZ3~sNGTfq7Fozh`JngH|kl`+h`C?Ml;cZXlb-}v|n^Uba1pRIxV_K^nmEu z(aq7zqt{38jy@87Ec#^hndo!T*P?Gm-;TZ;eLwnvno(=i>FOGFKlKpxX!RuZ6!kRq z4D}c4uhsL_3)BnMOVrEMYt=i|ht=oQ*VH%Fx7GLT>Idp)>KE$Q>OW(6F)$`5CO^g; zGdyN=%*2=(G2g^2iCG@AGGu|ctlSXHb#RudZ^n-FV^9UMD4c6sc&*j=$lV$a83kG&OpC-#2q z!`SDsFJs@tzK!F>!8q4Auei{-=r~PWd|YB&ySVJQytu-+qBuibXF{z&|>_>=Kh;(yapT1M-lb<=ujH;Y42$7YaePKYkyB56PN^-1lI(Q1aX3Af=_~9LO?=9LR>;| zg1vjf;DiYYEeTr^4kQwZE{UQ<|3qb?CNVxSF|l1@W@1iaexfe1IB`Vcti;ucn-cdX z9!NZ#cr@`u;_1Y*i8m7OB|b=el=xfX%fvT{?~*_gk)%%Qlr%PJYSNcU3zC*4tw>s( zv^HsT(zc|XNqds^B^^sTk@REI&7}KD50f4z{ccZsmGoyaFBvA2$?nObv8aZeGYNK?F1{8AJt zsuXofY>GA|DW!c%YD!hgXDKUF&Zk^YxtH==%CnTWsZ^>UH99pWH90jUH7zwGwJ^1F zYS&bIRcepa+SIz#zN!6FKT2&%{Wx`4>e$qAsS{Esr=Ci^ntDC;X6o%UkFTbs5sZFkzkWTs?V zGY4c&&YY9EB6D@-+RP1^n=-d%?#SGoxi9lz=Eck_nb$IJX5P-cm-!&`*UTrGPcxrq zky$=jaarB724%Hmt*5j<-vz}+Y%zBgcE*oZ3+5BwR?BHy9c6hcTTa~TO zj?LC)CuQ5)Wv684XLrr+n>{Lfa`uAk{n;0?A7;PJk>WgIa_mf zP>@{Ez96GOUr=69QBYaXsi3-`rl5C0pMr*h*#)Z$4i=m&I8$)0;HQGy116c!iO6b>!?qVT)I?S!A z!smrA3Sa3c9bYHVx$8taiOy4}(dFq%bS9lySD~xb)#>```so^VLv>?x6LgbwQ*@l} zOWkbU9NjA2UfluRVck*P3EgSkCEZos4c#r>6Wvq0?hoCoBC^Q6$iFD4NLCbDq%P`J zG^l8B(Z@x@i$)iXEgD}mv8c6ZP0{9}ZACka_7v?eI$m_D=xovXqKieBi*6UaEp{oE z7R!oN#p>eNVr_9!ab|ILab9sjv97qdxOeeq#fyt~79TA>QGBZSZ1MTx3&l5!?-u`3 z{A=;!;y?9v{3xua^{#pky;v{R2kImAT75fxiat%BtWlPdeP?~0zOTN&{v&;p zeu#d8ewKc={(t(p`X&11`W5=s`nCG?`tABX`u+Mt`Xl=D`pf#O`s@1J`g{5Z`d{@g z48Y)FkQ%%UK88R;h#}MvZb&v{8A=Q$L%H2hVW>28H1sg^HuN#{Gc+1T7?5GKVT@sd zVUl60VY*?CVX@&`!%D+y!+OI;!)C))!#=|)!$rdt!*#4VZorN5Ov zGxCgtkv6&*-Hbw`*eEgj80E$&V~VlRSZXXYT8uVhS7Uc$Ph&4*opF$HsBw&Of^o8O znsKIawsEfUYh$x=Lr@t*O4@saU2<5LqbK@(x3Oo1kq zNo|TXX-!F{cBXuj&ZIY$n#xROQpE|j`d$rURT~&KDvBL z`P}l>@-^k_$~Ts8F5gprwERT*#qwL_&&&Tb(`KpJ-yCF?nZwLc<`{FFIl-J{&M=pm zE6ok&q2@7W&OFyV&)jTYU|wWiYF=&LV?JR%Z@y^0Y`$i`XMSRSZec7EORy!*qO~Mi z+F4R8xt1=Lo|YkY%jcFUmRXj0mc^E3mKB!OmVK6Ema~=%mYbG$6?8>tMZ1ck3QI+o zimHmbia`}aD@IpLs+d|aqhfBwyozrszO7hQ@mBldSEnX;!1P%xbaPtR1bLt=+8E)}B^-FKeB3v~`wsxplMkl=Zd^ z+I(ypTRU5OTbeE3R&MKH>t^e1tF!gBHQ5H+KDMzoWc$oE**3*C-8RqGY+GPkWLs)m zZd+&DV%u)pW!r1pZ#!)}Z@XZ-WV>#=WxHd$XM0mgRZ1#-D*Y-0DrJ>nm5R#9%H+zd z%96_R>`F_ewX#!X*UIjdJt_xRwp4y!xvO$-<$=mWl@}|oRo-@9!}B0)`^&es{eAyg HdH4STAXVUF delta 13199 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 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index f1ed6f98..9283e2f8 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.4 + 1.6.7 CFBundleSignature ???? CFBundleVersion From 8b0224626ad62ddd63128faaac72e4a9da1d8a19 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 13 Jul 2016 17:40:23 +0800 Subject: [PATCH 007/178] update demo --- .../UserInterfaceState.xcuserstate | Bin 118277 -> 96333 bytes LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 2 +- LFLiveKitDemo/Podfile | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index cb63c595442b9b598068e7a4c82aefc79bb6b02d..8560e0619a83b04812c156825f9d1ffa770eb16b 100644 GIT binary patch literal 96333 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 s`n{H%YbCf8`PRCMY0Nt8oWdHyG literal 118277 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

  • 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ℜ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 Let!LbsBZp02TMrX diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index f449d64f..ec3b5da3 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -310,7 +310,7 @@ - (UIButton*)startLiveButton{ if(_self.startLiveButton.selected){ [_self.startLiveButton setTitle:@"结束直播" forState:UIControlStateNormal]; LFLiveStreamInfo *stream = [LFLiveStreamInfo new]; - stream.url = @"rtmp://30.96.179.95:1935/live/1234"; + stream.url = @"rtmp://live.hkstv.hk.lxdns.com:1935/live/stream789"; //stream.url = @"rtmp://daniulive.com:1935/live/stream2399"; [_self.session startLive:stream]; }else{ diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index a39728ec..d5102b69 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -3,6 +3,6 @@ platform :ios,'8.0' target "LFLiveKitDemo" do -pod 'LFLiveKit', '~> 1.5.2' +pod 'LFLiveKit', '~> 1.6.7' end \ No newline at end of file From 3ea70b4780f8a82d4724baa3aaca3a8e5089efca Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 16:50:44 +0800 Subject: [PATCH 008/178] =?UTF-8?q?=E7=9F=AD=E7=BA=BF=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/upload/LFStreamRtmpSocket.m | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index 9b549a44..b783eb8a 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -437,12 +437,9 @@ - (void)sendAudio:(LFFrame*)frame { -(void) reconnect { _isReconnecting = NO; if(_isConnected) return; - if(_rtmp){ - PILI_RTMP_ReconnectStream(_rtmp, 0, &_error); - }else{ - [self stop]; - [self start]; - } + + [self stop]; + [self start]; } #pragma mark -- CallBack From d198058ce3f03468791cba201776e83ac5208ef3 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 17:57:27 +0800 Subject: [PATCH 009/178] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E7=9B=B4=E6=92=AD=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 26802 -> 27234 bytes LFLiveKit/upload/LFStreamRtmpSocket.m | 7 +------ .../UserInterfaceState.xcuserstate | Bin 96333 -> 97112 bytes LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 6 ++++-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 76aa693867ce6f1c8419d776e92a5c416cb1bda3..b493d93e1ca17783eef894b138c420299eb2f9ec 100644 GIT binary patch delta 13634 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 MwEyk+T|VLe0klr^xBvhE delta 13268 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•J9+G*drO#|X;_ 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 diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index b783eb8a..9a3bf5c6 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -445,12 +445,7 @@ -(void) reconnect { #pragma mark -- CallBack void RTMPErrorCallback(RTMPError *error, void *userData){ LFStreamRtmpSocket *socket = (__bridge LFStreamRtmpSocket*)userData; - if(error->code == RTMPErrorSocketClosedByPeer){ - [socket stop]; - if(socket.delegate && [socket.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [socket.delegate socketStatus:socket status:LFLiveError]; - } - }else{ + if(error->code < 0){ if(socket.retryTimes4netWorkBreaken++ < socket.reconnectCount && !socket.isReconnecting){ socket.isConnected = NO; socket.isConnecting = NO; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 8560e0619a83b04812c156825f9d1ffa770eb16b..0c7f868b56644c8e94b92dbb9d5af47f0c1a6ba0 100644 GIT binary patch literal 97112 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 literal 96333 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 s`n{H%YbCf8`PRCMY0Nt8oWdHyG diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index ec3b5da3..221c78a5 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -59,7 +59,9 @@ - (void)requestAccessForVideo{ } case AVAuthorizationStatusAuthorized:{ // 已经开启授权,可继续 - [_self.session setRunning:YES]; + dispatch_async(dispatch_get_main_queue(), ^{ + [_self.session setRunning:YES]; + }); break; } case AVAuthorizationStatusDenied: @@ -218,7 +220,7 @@ - (LFLiveSession*)session{ */ - _session.running = YES; + _session.delegate = self; _session.preView = self; } return _session; From 8f57142e5a26775eab1db14011276110811db8e8 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 19:28:56 +0800 Subject: [PATCH 010/178] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=85=E5=AD=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 27234 -> 26342 bytes LFLiveKit/upload/LFStreamRtmpSocket.m | 61 +++++++++++------- LFLiveKitDemo/Podfile | 1 + Podfile | 2 +- 4 files changed, 39 insertions(+), 25 deletions(-) diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index b493d93e1ca17783eef894b138c420299eb2f9ec..77381d5c4daee5847b6806c23ca90235f023f643 100644 GIT binary patch delta 10460 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 delta 11234 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 nWonJBrf)delegate{ @@ -435,11 +446,13 @@ - (void)sendAudio:(LFFrame*)frame { // 断线重连 -(void) reconnect { - _isReconnecting = NO; - if(_isConnected) return; - - [self stop]; - [self start]; + dispatch_async(YYRtmpSendQueue(), ^{ + _isReconnecting = NO; + if(_isConnected) return; + + [self stop]; + [self start]; + }); } #pragma mark -- CallBack diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index d5102b69..98dd2d34 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -4,5 +4,6 @@ platform :ios,'8.0' target "LFLiveKitDemo" do pod 'LFLiveKit', '~> 1.6.7' +pod 'YYDispatchQueuePool' end \ No newline at end of file diff --git a/Podfile b/Podfile index 83e7bfa0..798a7c0d 100755 --- a/Podfile +++ b/Podfile @@ -6,5 +6,5 @@ target "LFLiveKit" do pod 'CocoaAsyncSocket', '~> 7.4.1' pod 'pili-librtmp', '~> 1.0.2' pod 'LMGPUImage', '~> 0.1.9' - +pod 'YYDispatchQueuePool' end \ No newline at end of file From fbbf5d9da50676043637a052946825e221942569 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 19:37:36 +0800 Subject: [PATCH 011/178] =?UTF-8?q?=E9=BA=A6=E5=85=8B=E9=A3=8E=E8=A2=AB?= =?UTF-8?q?=E5=8D=A0=E7=94=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 26342 -> 27257 bytes LFLiveKit/Info.plist | 2 +- LFLiveKit/capture/LFAudioCapture.m | 2 ++ 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 3639be9f..7ad8423e 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.7" + s.version = "1.6.8" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 77381d5c4daee5847b6806c23ca90235f023f643..ebcaa4e4b24e05c4349bda6bdd41111dc3b8e9e2 100644 GIT binary patch delta 13283 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 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 9283e2f8..e09a8cff 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.7 + 1.6.8 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index 4f297557..ebd509c8 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -169,6 +169,8 @@ - (void)handleRouteChange:(NSNotification *)notification { break; } NSLog(@"handleRouteChange reason is %@",seccReason); + + [[AVAudioSession sharedInstance] setActive:YES error:nil]; AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count]?session.currentRoute.inputs:nil objectAtIndex:0]; if (input.portType == AVAudioSessionPortHeadsetMic) { From ed2d37e6f4e180cc04f5921a1748a62c418a3026 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 19:39:50 +0800 Subject: [PATCH 012/178] update --- LFLiveKit.podspec | 3 ++- .../UserInterfaceState.xcuserstate | Bin 27257 -> 27449 bytes LFLiveKit/Info.plist | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 7ad8423e..fc672b61 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.6.8" + s.version = "1.7.0" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -21,5 +21,6 @@ Pod::Spec.new do |s| s.dependency "CocoaAsyncSocket", "~> 7.4.1" s.dependency 'LMGPUImage', '~> 0.1.9' s.dependency "pili-librtmp", "~> 1.0.2" + s.dependency "YYDispatchQueuePool" end diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index ebcaa4e4b24e05c4349bda6bdd41111dc3b8e9e2..878f9cf77f411a8447fe6ec0493a58d76b85664c 100644 GIT binary patch delta 8723 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 MDeceq_s#+T2YX=^)c^nh delta 8697 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 z zg-Vg3=%TPI#ww;MHYv6$epDP&Tu@wB+)~_C+*dqOyi~kS!_s`xh%}hSPK!trrpeQk zY3XTQ(z4R@X+>!zY38)jwDPn;X;j*Zw4c-3(mcPV-AZdud!xjagpyPSD0#{-Wu!7% z8LQ+g#Y&Y@t28Rj%2K6G=}`7iRxA4``zmXd1Ci zzEW*d?N=RAomE{{y-;K7NVP(pqt>bm)P-uJ+N7>j_f`*8BlQ&ZRP_w?EcI+PrCy+3 ztX{AFT)k2KrTT027WH@P9qOIx-Rgtt)9U-_AU!HwkzSl$ojy2yUHZoKZ_;JGGNxrTX3Wi)pRp)o zc}8=_s*E)m>oVFj3{9#gU6ZXbYRWWrjZ;&p>8a_h>8q*L4AeAeMry`urfX(vD9r-R zVoj5#MYCG7Rq^$$Y%JR+o5&`!1G0m%IoZ7Iu;+vHxJ~Id0~0(yzzM(@($Kfx!*JX1rVuYA3dzEN!k|Jtl`tC(9HQXE?>DwY)I6c-k|i>r$J z7mp|&U+gKKRQy5lN5zfBbBpH}FDzbO{8jPR;v=5oUy5%OKP`S`WEg#ngpo7`7`etI zqtcjZ%rWK}^Nl8>-RL&f8XJsW<6PrB;{xMi<0raupTcDGhpds%C&{jCG7gROPeu~rXdU19y!y4QNn`d2Bt zG@(>oYAo$tIhhbb4uX>4ws;O203?Tzaqce(9sqr=`!!m}UGjd0Bp0kFx5r zK4tyN29ymhTVA%dY(v=>Wt+-&l>Jn8r0jUv$+9zLm&~ubXO(|jzQa>~(}vl6ZNTPd3$XEQVYWzHv@OY2YOAnKv`w{rZu`o1)^^Qy z({{)9hwY*5u|3KzvP^1iO_5t<<_Al%|+K<}X z?5FH!>{soN?d|qI?SI+dRNxgv1z8bR5m^ya!LLZD@CYl!6_N^RMP@}|MRmo9ia8Y< zE4Edfs`$O)Ud8>2hZT=2o>n|_;10q89sUlcgXQ2jBo3{^=rB7<9p#Q*jv7aQ#{kD5 z#|XzH$5h93$4tj;2j!UWSm^l7vD@*3W545ohbD(pGbC`3u^CRbCXR~vabFFiO^9$z|=XcH>&Rx#E&V9}!&g;&H z&X+FI#c}amVXjD5j7#Vexg;*BOYTZ@mAVGG8eMB$n_b_!zH{wx?Q-pL9dsRYop7CY zopoJv-FDq|{o#7-YIptVdg=CcGu@s@cbq%ko!}O^C2pBp;m&jyxXavjx6@te?(Xj4 zu6KLfUN>@2cF%TG?)mOT?oZsGx>vh5xW90J>27uJa_@8RcmM1@;y&&^=|1hgyb>WtYm5%F;?l=OqaP#~F;!jwXrTcD(zpbp0Pz CKn>9V diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index e09a8cff..01a700fd 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.6.8 + 1.7.0 CFBundleSignature ???? CFBundleVersion From 1e6e42f2c66dc18e1f7f0a327b39d585531c9a73 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 19:58:26 +0800 Subject: [PATCH 013/178] =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E5=8F=98=E4=B8=BA?= =?UTF-8?q?=E5=8D=95=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/upload/LFStreamRtmpSocket.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index f6445092..c7aa9a53 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -14,7 +14,9 @@ static const NSInteger RetryTimesMargin = 3; static dispatch_queue_t YYRtmpSendQueue() { - return YYDispatchQueueGetForQOS(NSQualityOfServiceUserInitiated); + YYDispatchQueuePool *pool = [[YYDispatchQueuePool alloc] initWithName:@"com.youku.laifeng.rtmpsendQueue" queueCount:1 qos:NSQualityOfServiceDefault]; + dispatch_queue_t queue = [pool queue]; + return queue; } #define DATA_ITEMS_MAX_COUNT 100 From 13bc9ad1eb1ab0645d8e60b66b33927093ff667c Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 19:59:01 +0800 Subject: [PATCH 014/178] update version --- LFLiveKit.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 27449 -> 27754 bytes LFLiveKit/Info.plist | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index fc672b61..fbec7d5a 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.7.0" + s.version = "1.7.1" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 878f9cf77f411a8447fe6ec0493a58d76b85664c..da734362387a58330752a4ee4d932a89975448e3 100644 GIT binary patch delta 10163 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 delta 9994 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 FMWK CFBundleShortVersionString - 1.7.0 + 1.7.1 CFBundleSignature ???? CFBundleVersion From 48dac15d544a56575a8fd517b7c5783ea652ad0a Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 20:51:16 +0800 Subject: [PATCH 015/178] update demo version --- LFLiveKitDemo/Podfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index 98dd2d34..baf8731a 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -3,7 +3,7 @@ platform :ios,'8.0' target "LFLiveKitDemo" do -pod 'LFLiveKit', '~> 1.6.7' +pod 'LFLiveKit', '~> 1.7.1' pod 'YYDispatchQueuePool' end \ No newline at end of file From 510d796ab1107a3f9c35ecae5decaeeb076a24bc Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 21:14:01 +0800 Subject: [PATCH 016/178] commit reconnect --- LFLiveKit/upload/LFStreamRtmpSocket.m | 44 ++++++++++++++++----------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index c7aa9a53..b4716a0d 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -90,30 +90,38 @@ - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream video - (void) start{ dispatch_async(YYRtmpSendQueue(), ^{ - if(!_stream) return; - if(_isConnecting) return; - if(_rtmp != NULL) return; - self.debugInfo.streamId = self.stream.streamId; - self.debugInfo.uploadUrl = self.stream.url; - self.debugInfo.isRtmp = YES; - [self clean]; - [self RTMP264_Connect:(char*)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; + [self _start]; }); } +- (void)_start{ + if(!_stream) return; + if(_isConnecting) return; + if(_rtmp != NULL) return; + self.debugInfo.streamId = self.stream.streamId; + self.debugInfo.uploadUrl = self.stream.url; + self.debugInfo.isRtmp = YES; + [self clean]; + [self RTMP264_Connect:(char*)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; +} + - (void) stop{ dispatch_async(YYRtmpSendQueue(), ^{ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveStop]; - } - if(_rtmp != NULL){ - PILI_RTMP_Close(_rtmp, &_error); - PILI_RTMP_Free(_rtmp); - _rtmp = NULL; - } + [self _stop]; }); } +- (void)_stop{ + if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ + [self.delegate socketStatus:self status:LFLiveStop]; + } + if(_rtmp != NULL){ + PILI_RTMP_Close(_rtmp, &_error); + PILI_RTMP_Free(_rtmp); + _rtmp = NULL; + } +} + - (void) sendFrame:(LFFrame*)frame{ dispatch_async(YYRtmpSendQueue(), ^{ if(!frame) return; @@ -452,8 +460,8 @@ -(void) reconnect { _isReconnecting = NO; if(_isConnected) return; - [self stop]; - [self start]; + [self _stop]; + [self _start]; }); } From 14a3b2eb4bdcc50b5138e96a202f6ed944db0f26 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 21:37:08 +0800 Subject: [PATCH 017/178] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=BA=94=E7=94=A8?= =?UTF-8?q?=EF=BC=88=E4=BE=8B=E5=A6=82=E5=BE=AE=E4=BF=A1=E8=A7=86=E9=A2=91?= =?UTF-8?q?=EF=BC=89=20=20=E5=9B=9E=E5=88=B0=E5=89=8D=E5=8F=B0=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=A3=B0=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/capture/LFAudioCapture.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index ebd509c8..b700be2f 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -170,7 +170,9 @@ - (void)handleRouteChange:(NSNotification *)notification { } NSLog(@"handleRouteChange reason is %@",seccReason); + [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; + AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count]?session.currentRoute.inputs:nil objectAtIndex:0]; if (input.portType == AVAudioSessionPortHeadsetMic) { From 1e56fc2941f7bd35ca1f5fe5127768f93e48baf0 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 21:50:20 +0800 Subject: [PATCH 018/178] =?UTF-8?q?=E8=BF=99=E6=A0=B7=E6=94=B9=E4=B9=9F?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=93=A6=20=20=F0=9F=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/capture/LFAudioCapture.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index b700be2f..2931b2b5 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -32,7 +32,7 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura self.taskQueue = dispatch_queue_create("com.youku.Laifeng.audioCapture.Queue", NULL); AVAudioSession *session = [AVAudioSession sharedInstance]; - [session setActive:YES withOptions:kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation error:nil]; + [session setActive:YES error:nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleRouteChange:) @@ -45,7 +45,7 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura NSError *error = nil; - [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:nil]; + [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; [session setMode:AVAudioSessionModeVideoRecording error:&error]; @@ -170,9 +170,6 @@ - (void)handleRouteChange:(NSNotification *)notification { } NSLog(@"handleRouteChange reason is %@",seccReason); - [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; - [[AVAudioSession sharedInstance] setActive:YES error:nil]; - AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count]?session.currentRoute.inputs:nil objectAtIndex:0]; if (input.portType == AVAudioSessionPortHeadsetMic) { From b109289bc1dcf34ae0e6dc55f5791b9bc1d54f7d Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 14 Jul 2016 21:55:36 +0800 Subject: [PATCH 019/178] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/upload/LFStreamRtmpSocket.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index b4716a0d..da5a61c1 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -18,7 +18,7 @@ static dispatch_queue_t YYRtmpSendQueue() { dispatch_queue_t queue = [pool queue]; return queue; } - +#define RTMP_RECEIVE_TIMEOUT 2 #define DATA_ITEMS_MAX_COUNT 100 #define RTMP_DATA_RESERVE_SIZE 400 #define RTMP_HEAD_SIZE (sizeof(RTMPPacket)+RTMP_MAX_HEADER_SIZE) @@ -224,6 +224,7 @@ -(NSInteger) RTMP264_Connect:(char *)push_url{ _rtmp->m_connCallback = ConnectionTimeCallback; _rtmp->m_userData = (__bridge void*)self; _rtmp->m_msgCounter = 1; + _rtmp->Link.timeout = RTMP_RECEIVE_TIMEOUT; //设置可写,即发布流,这个函数必须在连接前使用,否则无效 PILI_RTMP_EnableWrite(_rtmp); From 21335ed3f0de0716c739d2812e2ac31cd67c398e Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 12:10:31 +0800 Subject: [PATCH 020/178] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=AA=E7=AB=96?= =?UTF-8?q?=E5=B1=8F=E6=8E=A5=E5=8F=A3=20=EF=BC=8C=E5=8F=AA=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=A8=AA=E5=B1=8F=E6=88=96=E8=80=85=E7=AB=96=E5=B1=8F?= =?UTF-8?q?=EF=BC=8C=E5=86=85=E9=83=A8=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=97=8B?= =?UTF-8?q?=E8=BD=AC=EF=BC=8C=E4=BD=86=E6=9A=82=E6=97=B6=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=A8=AA=E7=AB=96=E5=88=87=E6=8D=A2=EF=BC=88=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E9=9C=80=E8=A6=81=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=AF=94=E8=BE=83=E5=A4=8D=E6=9D=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/capture/LFVideoCapture.m | 46 +++++++++++++++++-- .../configuration/LFLiveVideoConfiguration.h | 6 +-- .../configuration/LFLiveVideoConfiguration.m | 46 +++++++++---------- .../LFLiveKitDemo.xcodeproj/project.pbxproj | 12 ----- LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m | 9 ++++ 5 files changed, 77 insertions(+), 42 deletions(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index c7661d19..3304e3e4 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -34,7 +34,27 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura if(self = [super init]){ _configuration = configuration; _videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:_configuration.avSessionPreset cameraPosition:AVCaptureDevicePositionFront]; - _videoCamera.outputImageOrientation = _configuration.orientation; + UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; + if(configuration.landscape){ + if(statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight){ + NSLog(@"当前设置方向出错"); + NSLog(@"当前设置方向出错"); + NSLog(@"当前设置方向出错"); + _videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; + }else{ + _videoCamera.outputImageOrientation = statusBar; + } + }else{ + if(statusBar != UIInterfaceOrientationPortrait && statusBar != UIInterfaceOrientationPortraitUpsideDown){ + NSLog(@"当前设置方向出错"); + NSLog(@"当前设置方向出错"); + NSLog(@"当前设置方向出错"); + _videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; + }else{ + _videoCamera.outputImageOrientation = statusBar; + } + } + _videoCamera.horizontallyMirrorFrontFacingCamera = NO; _videoCamera.horizontallyMirrorRearFacingCamera = NO; _videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; @@ -46,7 +66,7 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; - + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarChanged:) name:UIApplicationWillChangeStatusBarOrientationNotification object:nil]; self.beautyFace = YES; self.beautyLevel = 0.5; self.brightLevel = 0.5; @@ -200,7 +220,7 @@ - (void)setBeautyFace:(BOOL)beautyFace{ } if (_configuration.isClipVideo) { - if (_configuration.orientation == UIInterfaceOrientationPortrait || _configuration.orientation == UIInterfaceOrientationPortraitUpsideDown){ + if (_configuration.landscape){ _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0.125, 0, 0.75, 1)]; } else { _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0, 0.125, 1, 0.75)]; @@ -235,7 +255,7 @@ - (void)processVideo:(GPUImageOutput *)output{ if(pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]){ [_self.delegate captureOutput:_self pixelBuffer:pixelBuffer]; } - + } } @@ -254,4 +274,22 @@ - (void)willEnterForeground:(NSNotification*)notification{ [UIApplication sharedApplication].idleTimerDisabled = YES; } +- (void)statusBarChanged:(NSNotification*)notification{ + NSLog(@"UIApplicationWillChangeStatusBarOrientationNotification. UserInfo: %@", notification.userInfo); + UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; + if(_configuration.landscape){ + if(statusBar == UIInterfaceOrientationLandscapeLeft){ + self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight; + }else if(statusBar == UIInterfaceOrientationLandscapeRight){ + self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; + } + }else{ + if(statusBar == UIInterfaceOrientationPortrait){ + self.videoCamera.outputImageOrientation = UIInterfaceOrientationPortraitUpsideDown; + }else if(statusBar == UIInterfaceOrientationPortraitUpsideDown){ + self.videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; + } + } +} + @end diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/configuration/LFLiveVideoConfiguration.h index 46e39c07..c2261215 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.h +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.h @@ -50,8 +50,8 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){ /// 视频配置(质量) + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality; -/// 视频配置(质量 & 方向) -+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality orientation:(UIInterfaceOrientation)orientation; +/// 视频配置(质量 & 是否是横屏) ++ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape; #pragma mark - Attribute ///============================================================================= @@ -61,7 +61,7 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){ @property (nonatomic, assign) CGSize videoSize; /// 视频输出方向 -@property (nonatomic, assign) UIInterfaceOrientation orientation; +@property (nonatomic, assign) BOOL landscape; /// 视频的帧率,即 fps @property (nonatomic, assign) NSUInteger videoFrameRate; diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index 2fd56504..0c06ed37 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -18,14 +18,14 @@ + (instancetype)defaultConfiguration{ } + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality{ - LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:videoQuality orientation:UIInterfaceOrientationPortrait]; + LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:videoQuality landscape:NO]; return configuration; } -+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality orientation:(UIInterfaceOrientation)orientation{ ++ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape{ LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration new]; switch (videoQuality) { - case LFLiveVideoQuality_Low1: + case LFLiveVideoQuality_Low1: { configuration.sessionPreset = LFCaptureSessionPreset360x640; configuration.videoFrameRate = 15; @@ -37,7 +37,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(360, 640); } break; - case LFLiveVideoQuality_Low2: + case LFLiveVideoQuality_Low2: { configuration.sessionPreset = LFCaptureSessionPreset360x640; configuration.videoFrameRate = 24; @@ -49,7 +49,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(360, 640); } break; - case LFLiveVideoQuality_Low3: + case LFLiveVideoQuality_Low3: { configuration.sessionPreset = LFCaptureSessionPreset360x640; configuration.videoFrameRate = 30; @@ -61,7 +61,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(360, 640); } break; - case LFLiveVideoQuality_Medium1: + case LFLiveVideoQuality_Medium1: { configuration.sessionPreset = LFCaptureSessionPreset540x960; configuration.videoFrameRate = 15; @@ -73,7 +73,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(540, 960); } break; - case LFLiveVideoQuality_Medium2: + case LFLiveVideoQuality_Medium2: { configuration.sessionPreset = LFCaptureSessionPreset540x960; configuration.videoFrameRate = 24; @@ -85,7 +85,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(540, 960); } break; - case LFLiveVideoQuality_Medium3: + case LFLiveVideoQuality_Medium3: { configuration.sessionPreset = LFCaptureSessionPreset540x960; configuration.videoFrameRate = 30; @@ -97,7 +97,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(540, 960); } break; - case LFLiveVideoQuality_High1: + case LFLiveVideoQuality_High1: { configuration.sessionPreset = LFCaptureSessionPreset720x1280; configuration.videoFrameRate = 15; @@ -109,7 +109,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(720, 1280); } break; - case LFLiveVideoQuality_High2: + case LFLiveVideoQuality_High2: { configuration.sessionPreset = LFCaptureSessionPreset720x1280; configuration.videoFrameRate = 24; @@ -121,7 +121,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(720, 1280); } break; - case LFLiveVideoQuality_High3: + case LFLiveVideoQuality_High3: { configuration.sessionPreset = LFCaptureSessionPreset720x1280; configuration.videoFrameRate = 30; @@ -138,12 +138,12 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality } configuration.sessionPreset = [configuration supportSessionPreset:configuration.sessionPreset]; configuration.videoMaxKeyframeInterval = configuration.videoFrameRate*2; - configuration.orientation = orientation; + configuration.landscape = landscape; CGSize size = configuration.videoSize; - if(orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown){ - configuration.videoSize = CGSizeMake(size.width, size.height); - }else{ + if(landscape){ configuration.videoSize = CGSizeMake(size.height, size.width); + }else{ + configuration.videoSize = CGSizeMake(size.width, size.height); } return configuration; } @@ -152,17 +152,17 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality - (NSString*)avSessionPreset{ NSString *avSessionPreset = nil; switch (self.sessionPreset) { - case LFCaptureSessionPreset360x640: + case LFCaptureSessionPreset360x640: { avSessionPreset = AVCaptureSessionPreset640x480; } break; - case LFCaptureSessionPreset540x960: + case LFCaptureSessionPreset540x960: { avSessionPreset = AVCaptureSessionPresetiFrame960x540; } break; - case LFCaptureSessionPreset720x1280: + case LFCaptureSessionPreset720x1280: { avSessionPreset = AVCaptureSessionPreset1280x720; } @@ -225,7 +225,7 @@ - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:@(self.videoMaxKeyframeInterval) forKey:@"videoMaxKeyframeInterval"]; [aCoder encodeObject:@(self.videoBitRate) forKey:@"videoBitRate"]; [aCoder encodeObject:@(self.sessionPreset) forKey:@"sessionPreset"]; - [aCoder encodeObject:@(self.orientation) forKey:@"orientation"]; + [aCoder encodeObject:@(self.landscape) forKey:@"landscape"]; } - (id)initWithCoder:(NSCoder *)aDecoder { @@ -235,7 +235,7 @@ - (id)initWithCoder:(NSCoder *)aDecoder { _videoMaxKeyframeInterval = [[aDecoder decodeObjectForKey:@"videoMaxKeyframeInterval"] unsignedIntegerValue]; _videoBitRate = [[aDecoder decodeObjectForKey:@"videoBitRate"] unsignedIntegerValue]; _sessionPreset = [[aDecoder decodeObjectForKey:@"sessionPreset"] unsignedIntegerValue]; - _orientation = [[aDecoder decodeObjectForKey:@"orientation"] unsignedIntegerValue]; + _landscape = [[aDecoder decodeObjectForKey:@"landscape"] unsignedIntegerValue]; return self; } @@ -252,7 +252,7 @@ - (NSUInteger)hash { @(self.isClipVideo), self.avSessionPreset, @(self.sessionPreset), - @(self.orientation),]; + @(self.landscape),]; for (NSObject *value in values) { hash ^= value.hash; @@ -279,7 +279,7 @@ - (BOOL)isEqual:(id)other object.isClipVideo == self.isClipVideo && [object.avSessionPreset isEqualToString:self.avSessionPreset] && object.sessionPreset == self.sessionPreset && - object.orientation == self.orientation; + object.landscape == self.landscape; } } @@ -302,7 +302,7 @@ - (NSString *)description{ [desc appendFormat:@" isClipVideo:%zi",self.isClipVideo]; [desc appendFormat:@" avSessionPreset:%@",self.avSessionPreset]; [desc appendFormat:@" sessionPreset:%zi",self.sessionPreset]; - [desc appendFormat:@" orientation:%zi",self.orientation]; + [desc appendFormat:@" landscape:%zi",self.landscape]; return desc; } diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index 7c9f92df..174937c2 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ 840762F11D07C7D0000FD0BF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762F01D07C7D0000FD0BF /* main.m */; }; 840762F41D07C7D0000FD0BF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762F31D07C7D0000FD0BF /* AppDelegate.m */; }; 840762F71D07C7D0000FD0BF /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762F61D07C7D0000FD0BF /* ViewController.m */; }; - 840762FA1D07C7D0000FD0BF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 840762F81D07C7D0000FD0BF /* Main.storyboard */; }; 840762FC1D07C7D0000FD0BF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 840762FB1D07C7D0000FD0BF /* Assets.xcassets */; }; 840762FF1D07C7D0000FD0BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 840762FD1D07C7D0000FD0BF /* LaunchScreen.storyboard */; }; 840763291D07C894000FD0BF /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 840763241D07C894000FD0BF /* UIControl+YYAdd.m */; }; @@ -37,7 +36,6 @@ 840762F31D07C7D0000FD0BF /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 840762F51D07C7D0000FD0BF /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; 840762F61D07C7D0000FD0BF /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - 840762F91D07C7D0000FD0BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 840762FB1D07C7D0000FD0BF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 840762FE1D07C7D0000FD0BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 840763001D07C7D0000FD0BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -111,7 +109,6 @@ 840762F31D07C7D0000FD0BF /* AppDelegate.m */, 840762F51D07C7D0000FD0BF /* ViewController.h */, 840762F61D07C7D0000FD0BF /* ViewController.m */, - 840762F81D07C7D0000FD0BF /* Main.storyboard */, 840762FB1D07C7D0000FD0BF /* Assets.xcassets */, 840762FD1D07C7D0000FD0BF /* LaunchScreen.storyboard */, 840763001D07C7D0000FD0BF /* Info.plist */, @@ -250,7 +247,6 @@ 840763381D07C899000FD0BF /* camra_beauty_close@3x.png in Resources */, 8407633C1D07C899000FD0BF /* close_preview@3x.png in Resources */, 8407633B1D07C899000FD0BF /* close_preview@2x.png in Resources */, - 840762FA1D07C7D0000FD0BF /* Main.storyboard in Resources */, 840763391D07C899000FD0BF /* camra_preview@2x.png in Resources */, 840763361D07C899000FD0BF /* camra_beauty@3x.png in Resources */, ); @@ -323,14 +319,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - 840762F81D07C7D0000FD0BF /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 840762F91D07C7D0000FD0BF /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; 840762FD1D07C7D0000FD0BF /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( diff --git a/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m b/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m index 1ffb3826..417d94a0 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m +++ b/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m @@ -7,6 +7,7 @@ // #import "AppDelegate.h" +#import "ViewController.h" @interface AppDelegate () @@ -17,9 +18,17 @@ @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; +// UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]]; +// nav.navigationBarHidden = YES; + self.window.rootViewController = [[ViewController alloc] init]; + [self.window makeKeyAndVisible]; + return YES; } + - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. From e63026415abcc582676363eb197ace590936a3c9 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 12:18:02 +0800 Subject: [PATCH 021/178] =?UTF-8?q?demo=E6=94=AF=E6=8C=81=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E4=BC=A0=E8=BE=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj | 5 +++++ LFLiveKitDemo/LFLiveKitDemo/Info.plist | 6 ++++-- LFLiveKitDemo/LFLiveKitDemo/ViewController.m | 10 ++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index 174937c2..53f5fa37 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -213,6 +213,11 @@ TargetAttributes = { 840762EB1D07C7D0000FD0BF = { CreatedOnToolsVersion = 7.3; + SystemCapabilities = { + com.apple.BackgroundModes = { + enabled = 1; + }; + }; }; }; }; diff --git a/LFLiveKitDemo/LFLiveKitDemo/Info.plist b/LFLiveKitDemo/LFLiveKitDemo/Info.plist index 40c6215d..aee0eac8 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/Info.plist +++ b/LFLiveKitDemo/LFLiveKitDemo/Info.plist @@ -22,10 +22,12 @@ 1 LSRequiresIPhoneOS + UIBackgroundModes + + audio + UILaunchStoryboardName LaunchScreen - UIMainStoryboardFile - Main UIRequiredDeviceCapabilities armv7 diff --git a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m index 609ca50b..97ac3c2f 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m +++ b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m @@ -26,4 +26,14 @@ - (void)didReceiveMemoryWarning { // Dispose of any resources that can be recreated. } +- (UIInterfaceOrientationMask)supportedInterfaceOrientations +{ + return UIInterfaceOrientationMaskPortrait; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation +{ + return YES; +} + @end From 4865bdc5085c218500131e06c9072011ce9edadf Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 14:06:50 +0800 Subject: [PATCH 022/178] connect error --- LFLiveKit/upload/LFStreamRtmpSocket.m | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/upload/LFStreamRtmpSocket.m index da5a61c1..a8a06c84 100644 --- a/LFLiveKit/upload/LFStreamRtmpSocket.m +++ b/LFLiveKit/upload/LFStreamRtmpSocket.m @@ -215,7 +215,7 @@ -(NSInteger) RTMP264_Connect:(char *)push_url{ PILI_RTMP_Init(_rtmp); //设置URL - if (PILI_RTMP_SetupURL(_rtmp, push_url, &_error) < 0){ + if (PILI_RTMP_SetupURL(_rtmp, push_url, &_error) == FALSE){ //log(LOG_ERR, "RTMP_SetupURL() failed!"); goto Failed; } @@ -229,12 +229,12 @@ -(NSInteger) RTMP264_Connect:(char *)push_url{ PILI_RTMP_EnableWrite(_rtmp); //连接服务器 - if (PILI_RTMP_Connect(_rtmp, NULL, &_error) < 0){ + if (PILI_RTMP_Connect(_rtmp, NULL, &_error) == FALSE){ goto Failed; } //连接流 - if (PILI_RTMP_ConnectStream(_rtmp, 0, &_error) < 0) { + if (PILI_RTMP_ConnectStream(_rtmp, 0, &_error) == FALSE) { goto Failed; } @@ -254,6 +254,13 @@ -(NSInteger) RTMP264_Connect:(char *)push_url{ Failed: PILI_RTMP_Close(_rtmp, &_error); PILI_RTMP_Free(_rtmp); + _rtmp = NULL; + if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ + [self.delegate socketDidError:self errorCode:LFLiveSocketError_ConnectSocket]; + } + if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ + [self.delegate socketStatus:self status:LFLiveError]; + } return -1; } From 659dfb81d099fcc7979d4232fde1ee035da77b32 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 14:10:49 +0800 Subject: [PATCH 023/178] =?UTF-8?q?=E5=88=A0=E9=99=A4flv=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=20=20=E5=8F=AA=E4=BF=9D=E7=95=99rtmp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit.podspec | 4 +- LFLiveKit.xcodeproj/project.pbxproj | 142 +- .../UserInterfaceState.xcuserstate | Bin 27754 -> 27311 bytes LFLiveKit/Info.plist | 2 +- LFLiveKit/LFLiveSession.h | 9 +- LFLiveKit/LFLiveSession.m | 12 +- LFLiveKit/packet/LFFlvPackage.h | 20 - LFLiveKit/packet/LFFlvPackage.m | 345 ----- LFLiveKit/packet/LFStreamPackage.h | 21 - LFLiveKit/packet/flv/amf.c | 1166 ----------------- LFLiveKit/packet/flv/amf.h | 231 ---- LFLiveKit/packet/flv/avc.c | 298 ----- LFLiveKit/packet/flv/avc.h | 42 - LFLiveKit/packet/flv/flv.c | 498 ------- LFLiveKit/packet/flv/flv.h | 202 --- LFLiveKit/packet/flv/info.c | 626 --------- LFLiveKit/packet/flv/info.h | 86 -- LFLiveKit/packet/flv/types.c | 92 -- LFLiveKit/packet/flv/types.h | 141 -- .../{upload => publish}/LFStreamRtmpSocket.h | 0 .../{upload => publish}/LFStreamRtmpSocket.m | 0 .../{upload => publish}/LFStreamSocket.h | 0 .../{upload => publish}/LFStreamingBuffer.h | 0 .../{upload => publish}/LFStreamingBuffer.m | 0 .../NSMutableArray+LFAdd.h | 0 .../NSMutableArray+LFAdd.m | 0 LFLiveKit/upload/LFStreamTcpSocket.h | 19 - LFLiveKit/upload/LFStreamTcpSocket.m | 331 ----- 28 files changed, 38 insertions(+), 4249 deletions(-) delete mode 100755 LFLiveKit/packet/LFFlvPackage.h delete mode 100755 LFLiveKit/packet/LFFlvPackage.m delete mode 100755 LFLiveKit/packet/LFStreamPackage.h delete mode 100755 LFLiveKit/packet/flv/amf.c delete mode 100755 LFLiveKit/packet/flv/amf.h delete mode 100755 LFLiveKit/packet/flv/avc.c delete mode 100755 LFLiveKit/packet/flv/avc.h delete mode 100755 LFLiveKit/packet/flv/flv.c delete mode 100755 LFLiveKit/packet/flv/flv.h delete mode 100755 LFLiveKit/packet/flv/info.c delete mode 100755 LFLiveKit/packet/flv/info.h delete mode 100755 LFLiveKit/packet/flv/types.c delete mode 100755 LFLiveKit/packet/flv/types.h rename LFLiveKit/{upload => publish}/LFStreamRtmpSocket.h (100%) rename LFLiveKit/{upload => publish}/LFStreamRtmpSocket.m (100%) rename LFLiveKit/{upload => publish}/LFStreamSocket.h (100%) rename LFLiveKit/{upload => publish}/LFStreamingBuffer.h (100%) rename LFLiveKit/{upload => publish}/LFStreamingBuffer.m (100%) rename LFLiveKit/{upload => publish}/NSMutableArray+LFAdd.h (100%) rename LFLiveKit/{upload => publish}/NSMutableArray+LFAdd.m (100%) delete mode 100644 LFLiveKit/upload/LFStreamTcpSocket.h delete mode 100644 LFLiveKit/upload/LFStreamTcpSocket.m diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index fbec7d5a..db7a69f2 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.7.1" + s.version = "1.7.2" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.platform = :ios, "8.0" s.ios.deployment_target = "8.0" s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" } - s.source_files = "LFLiveKit/**/*.{*}" + s.source_files = "LFLiveKit/**/*.{*.h,*.m}" s.public_header_files = "LFLiveKit/**/*.h" s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 95de7bcd..e752a979 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -40,34 +40,19 @@ 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; - 84001FEF1D0016380026C63F /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FCA1D0016380026C63F /* LFStreamingBuffer.h */; }; - 84001FF01D0016380026C63F /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FCB1D0016380026C63F /* LFStreamingBuffer.m */; }; - 84001FF11D0016380026C63F /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FCC1D0016380026C63F /* LFStreamRtmpSocket.h */; }; - 84001FF21D0016380026C63F /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FCD1D0016380026C63F /* LFStreamRtmpSocket.m */; }; - 84001FF31D0016380026C63F /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FCE1D0016380026C63F /* LFStreamSocket.h */; }; - 84001FF41D0016380026C63F /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FCF1D0016380026C63F /* NSMutableArray+LFAdd.h */; }; - 84001FF51D0016380026C63F /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FD01D0016380026C63F /* NSMutableArray+LFAdd.m */; }; 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; - 840762C51D07BC7D000FD0BF /* LFStreamTcpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762C31D07BC7D000FD0BF /* LFStreamTcpSocket.h */; }; - 840762C61D07BC7D000FD0BF /* LFStreamTcpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762C41D07BC7D000FD0BF /* LFStreamTcpSocket.m */; }; - 840762D61D07BC8B000FD0BF /* amf.c in Sources */ = {isa = PBXBuildFile; fileRef = 840762C91D07BC8B000FD0BF /* amf.c */; }; - 840762D71D07BC8B000FD0BF /* amf.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762CA1D07BC8B000FD0BF /* amf.h */; }; - 840762D81D07BC8B000FD0BF /* avc.c in Sources */ = {isa = PBXBuildFile; fileRef = 840762CB1D07BC8B000FD0BF /* avc.c */; }; - 840762D91D07BC8B000FD0BF /* avc.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762CC1D07BC8B000FD0BF /* avc.h */; }; - 840762DA1D07BC8B000FD0BF /* flv.c in Sources */ = {isa = PBXBuildFile; fileRef = 840762CD1D07BC8B000FD0BF /* flv.c */; }; - 840762DB1D07BC8B000FD0BF /* flv.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762CE1D07BC8B000FD0BF /* flv.h */; }; - 840762DC1D07BC8B000FD0BF /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = 840762CF1D07BC8B000FD0BF /* info.c */; }; - 840762DD1D07BC8B000FD0BF /* info.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762D01D07BC8B000FD0BF /* info.h */; }; - 840762DE1D07BC8B000FD0BF /* types.c in Sources */ = {isa = PBXBuildFile; fileRef = 840762D11D07BC8B000FD0BF /* types.c */; }; - 840762DF1D07BC8B000FD0BF /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762D21D07BC8B000FD0BF /* types.h */; }; - 840762E01D07BC8B000FD0BF /* LFFlvPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762D31D07BC8B000FD0BF /* LFFlvPackage.h */; }; - 840762E11D07BC8B000FD0BF /* LFFlvPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762D41D07BC8B000FD0BF /* LFFlvPackage.m */; }; - 840762E21D07BC8B000FD0BF /* LFStreamPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 840762D51D07BC8B000FD0BF /* LFStreamPackage.h */; }; + 8493627A1D38B542002C8F13 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362701D38B542002C8F13 /* LFStreamingBuffer.h */; }; + 8493627B1D38B542002C8F13 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 849362711D38B542002C8F13 /* LFStreamingBuffer.m */; }; + 8493627C1D38B542002C8F13 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362721D38B542002C8F13 /* LFStreamRtmpSocket.h */; }; + 8493627D1D38B542002C8F13 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 849362731D38B542002C8F13 /* LFStreamRtmpSocket.m */; }; + 8493627E1D38B542002C8F13 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362741D38B542002C8F13 /* LFStreamSocket.h */; }; + 849362811D38B542002C8F13 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362781D38B542002C8F13 /* NSMutableArray+LFAdd.h */; }; + 849362821D38B542002C8F13 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 849362791D38B542002C8F13 /* NSMutableArray+LFAdd.m */; }; AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; /* End PBXBuildFile section */ @@ -118,34 +103,19 @@ 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; - 84001FCA1D0016380026C63F /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamingBuffer.h; sourceTree = ""; }; - 84001FCB1D0016380026C63F /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamingBuffer.m; sourceTree = ""; }; - 84001FCC1D0016380026C63F /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamRtmpSocket.h; sourceTree = ""; }; - 84001FCD1D0016380026C63F /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamRtmpSocket.m; sourceTree = ""; }; - 84001FCE1D0016380026C63F /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamSocket.h; sourceTree = ""; }; - 84001FCF1D0016380026C63F /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+LFAdd.h"; sourceTree = ""; }; - 84001FD01D0016380026C63F /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+LFAdd.m"; sourceTree = ""; }; 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 840762C31D07BC7D000FD0BF /* LFStreamTcpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamTcpSocket.h; sourceTree = ""; }; - 840762C41D07BC7D000FD0BF /* LFStreamTcpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamTcpSocket.m; sourceTree = ""; }; - 840762C91D07BC8B000FD0BF /* amf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amf.c; sourceTree = ""; }; - 840762CA1D07BC8B000FD0BF /* amf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amf.h; sourceTree = ""; }; - 840762CB1D07BC8B000FD0BF /* avc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = avc.c; sourceTree = ""; }; - 840762CC1D07BC8B000FD0BF /* avc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = avc.h; sourceTree = ""; }; - 840762CD1D07BC8B000FD0BF /* flv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = flv.c; sourceTree = ""; }; - 840762CE1D07BC8B000FD0BF /* flv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flv.h; sourceTree = ""; }; - 840762CF1D07BC8B000FD0BF /* info.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = ""; }; - 840762D01D07BC8B000FD0BF /* info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = info.h; sourceTree = ""; }; - 840762D11D07BC8B000FD0BF /* types.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = types.c; sourceTree = ""; }; - 840762D21D07BC8B000FD0BF /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - 840762D31D07BC8B000FD0BF /* LFFlvPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFlvPackage.h; sourceTree = ""; }; - 840762D41D07BC8B000FD0BF /* LFFlvPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFlvPackage.m; sourceTree = ""; }; - 840762D51D07BC8B000FD0BF /* LFStreamPackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamPackage.h; sourceTree = ""; }; + 849362701D38B542002C8F13 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamingBuffer.h; sourceTree = ""; }; + 849362711D38B542002C8F13 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamingBuffer.m; sourceTree = ""; }; + 849362721D38B542002C8F13 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamRtmpSocket.h; sourceTree = ""; }; + 849362731D38B542002C8F13 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamRtmpSocket.m; sourceTree = ""; }; + 849362741D38B542002C8F13 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamSocket.h; sourceTree = ""; }; + 849362781D38B542002C8F13 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+LFAdd.h"; sourceTree = ""; }; + 849362791D38B542002C8F13 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+LFAdd.m"; sourceTree = ""; }; A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -222,8 +192,7 @@ 84001FA41D0016380026C63F /* capture */, 84001FA91D0016380026C63F /* coder */, 84001FB51D0016380026C63F /* filter */, - 840762C71D07BC8B000FD0BF /* packet */, - 84001FC91D0016380026C63F /* publish */, + 8493626F1D38B542002C8F13 /* publish */, 84001F8F1D0015D10026C63F /* Info.plist */, ); path = LFLiveKit; @@ -301,50 +270,18 @@ path = objects; sourceTree = ""; }; - 84001FC91D0016380026C63F /* publish */ = { + 8493626F1D38B542002C8F13 /* publish */ = { isa = PBXGroup; children = ( - 84001FCE1D0016380026C63F /* LFStreamSocket.h */, - 84001FCA1D0016380026C63F /* LFStreamingBuffer.h */, - 84001FCB1D0016380026C63F /* LFStreamingBuffer.m */, - 84001FCC1D0016380026C63F /* LFStreamRtmpSocket.h */, - 84001FCD1D0016380026C63F /* LFStreamRtmpSocket.m */, - 840762C31D07BC7D000FD0BF /* LFStreamTcpSocket.h */, - 840762C41D07BC7D000FD0BF /* LFStreamTcpSocket.m */, - 84001FCF1D0016380026C63F /* NSMutableArray+LFAdd.h */, - 84001FD01D0016380026C63F /* NSMutableArray+LFAdd.m */, - ); - name = publish; - path = upload; - sourceTree = ""; - }; - 840762C71D07BC8B000FD0BF /* packet */ = { - isa = PBXGroup; - children = ( - 840762C81D07BC8B000FD0BF /* flv */, - 840762D31D07BC8B000FD0BF /* LFFlvPackage.h */, - 840762D41D07BC8B000FD0BF /* LFFlvPackage.m */, - 840762D51D07BC8B000FD0BF /* LFStreamPackage.h */, - ); - name = packet; - path = LFLiveKit/packet; - sourceTree = SOURCE_ROOT; - }; - 840762C81D07BC8B000FD0BF /* flv */ = { - isa = PBXGroup; - children = ( - 840762C91D07BC8B000FD0BF /* amf.c */, - 840762CA1D07BC8B000FD0BF /* amf.h */, - 840762CB1D07BC8B000FD0BF /* avc.c */, - 840762CC1D07BC8B000FD0BF /* avc.h */, - 840762CD1D07BC8B000FD0BF /* flv.c */, - 840762CE1D07BC8B000FD0BF /* flv.h */, - 840762CF1D07BC8B000FD0BF /* info.c */, - 840762D01D07BC8B000FD0BF /* info.h */, - 840762D11D07BC8B000FD0BF /* types.c */, - 840762D21D07BC8B000FD0BF /* types.h */, - ); - path = flv; + 849362701D38B542002C8F13 /* LFStreamingBuffer.h */, + 849362711D38B542002C8F13 /* LFStreamingBuffer.m */, + 849362721D38B542002C8F13 /* LFStreamRtmpSocket.h */, + 849362731D38B542002C8F13 /* LFStreamRtmpSocket.m */, + 849362741D38B542002C8F13 /* LFStreamSocket.h */, + 849362781D38B542002C8F13 /* NSMutableArray+LFAdd.h */, + 849362791D38B542002C8F13 /* NSMutableArray+LFAdd.m */, + ); + path = publish; sourceTree = ""; }; EDD4B76A07A6817C79BB4E5C /* Pods */ = { @@ -363,34 +300,26 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 840762DD1D07BC8B000FD0BF /* info.h in Headers */, 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, - 840762E01D07BC8B000FD0BF /* LFFlvPackage.h in Headers */, + 8493627C1D38B542002C8F13 /* LFStreamRtmpSocket.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, - 840762D71D07BC8B000FD0BF /* amf.h in Headers */, 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, - 840762C51D07BC7D000FD0BF /* LFStreamTcpSocket.h in Headers */, - 840762DF1D07BC8B000FD0BF /* types.h in Headers */, + 8493627A1D38B542002C8F13 /* LFStreamingBuffer.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, - 840762E21D07BC8B000FD0BF /* LFStreamPackage.h in Headers */, - 840762DB1D07BC8B000FD0BF /* flv.h in Headers */, - 84001FF11D0016380026C63F /* LFStreamRtmpSocket.h in Headers */, 84001FE71D0016380026C63F /* LFFrame.h in Headers */, - 84001FEF1D0016380026C63F /* LFStreamingBuffer.h in Headers */, 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, - 84001FF41D0016380026C63F /* NSMutableArray+LFAdd.h in Headers */, 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + 849362811D38B542002C8F13 /* NSMutableArray+LFAdd.h in Headers */, + 8493627E1D38B542002C8F13 /* LFStreamSocket.h in Headers */, 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, - 840762D91D07BC8B000FD0BF /* avc.h in Headers */, - 84001FF31D0016380026C63F /* LFStreamSocket.h in Headers */, 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -526,29 +455,22 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 840762DA1D07BC8B000FD0BF /* flv.c in Sources */, 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, - 840762DE1D07BC8B000FD0BF /* types.c in Sources */, 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, - 840762D81D07BC8B000FD0BF /* avc.c in Sources */, 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - 840762D61D07BC8B000FD0BF /* amf.c in Sources */, - 84001FF01D0016380026C63F /* LFStreamingBuffer.m in Sources */, - 84001FF51D0016380026C63F /* NSMutableArray+LFAdd.m in Sources */, + 849362821D38B542002C8F13 /* NSMutableArray+LFAdd.m in Sources */, + 8493627B1D38B542002C8F13 /* LFStreamingBuffer.m in Sources */, 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, - 84001FF21D0016380026C63F /* LFStreamRtmpSocket.m in Sources */, - 840762E11D07BC8B000FD0BF /* LFFlvPackage.m in Sources */, + 8493627D1D38B542002C8F13 /* LFStreamRtmpSocket.m in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, - 840762DC1D07BC8B000FD0BF /* info.c in Sources */, 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, - 840762C61D07BC7D000FD0BF /* LFStreamTcpSocket.m in Sources */, 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index da734362387a58330752a4ee4d932a89975448e3..6c1d3220881b1fa42eedf69f05350b402d67281e 100644 GIT binary patch delta 13359 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 delta 13569 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 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index e0e5a833..01ad03a2 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.7.1 + 1.7.2 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 4472179f..86077f4b 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -17,13 +17,6 @@ typedef void (^ LFRequestComplete)(_Nullable id info,NSError *_Nullable errorMsg); -/// 流类型 -typedef NS_ENUM(NSUInteger, LFLiveType){ - /// rtmp格式 - LFLiveRTMP = 0, - /// tcp 传输flv格式 - LFLiveFLV = 1, -}; @class LFLiveSession; @protocol LFLiveSessionDelegate @@ -104,7 +97,7 @@ typedef NS_ENUM(NSUInteger, LFLiveType){ The designated initializer. Multiple instances with the same configuration will make the capture unstable. */ -- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration*)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration*)videoConfiguration liveType:(LFLiveType)liveType NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration*)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration*)videoConfiguration NS_DESIGNATED_INITIALIZER; /** The start stream .*/ - (void)startLive:(nonnull LFLiveStreamInfo*)streamInfo; diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 869cf6df..2255b16d 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -12,7 +12,6 @@ #import "LFHardwareVideoEncoder.h" #import "LFHardwareAudioEncoder.h" #import "LFStreamRtmpSocket.h" -#import "LFStreamTcpSocket.h" #import "LFLiveStreamInfo.h" #import "LFGPUImageBeautyFilter.h" @@ -22,8 +21,6 @@ @interface LFLiveSession ())socket{ if(!_socket){ - if(self.liveType == LFLiveRTMP){ - _socket = [[LFStreamRtmpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; - }else if(self.liveType == LFLiveFLV){ - _socket = [[LFStreamTcpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; - } + _socket = [[LFStreamRtmpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; [_socket setDelegate:self]; } return _socket; diff --git a/LFLiveKit/packet/LFFlvPackage.h b/LFLiveKit/packet/LFFlvPackage.h deleted file mode 100755 index c7a97733..00000000 --- a/LFLiveKit/packet/LFFlvPackage.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// LFFlvPackage.h -// LFLiveKit -// -// Created by 倾慕 on 16/5/2. -// Copyright © 2016年 倾慕. All rights reserved. -// - -#import "LFStreamPackage.h" - -@interface LFFlvPackage : NSObject - -#pragma mark - Initializer -///============================================================================= -/// @name Initializer -///============================================================================= -- (nullable instancetype)init UNAVAILABLE_ATTRIBUTE; -+ (nullable instancetype)new UNAVAILABLE_ATTRIBUTE; - -@end diff --git a/LFLiveKit/packet/LFFlvPackage.m b/LFLiveKit/packet/LFFlvPackage.m deleted file mode 100755 index 521871f9..00000000 --- a/LFLiveKit/packet/LFFlvPackage.m +++ /dev/null @@ -1,345 +0,0 @@ -// -// LFFlvPackage.m -// LFLiveKit -// -// Created by 倾慕 on 16/5/2. -// Copyright © 2016年 倾慕. All rights reserved. -// - -#import "LFFlvPackage.h" -#include "flv/flv.h" -#include "flv/info.h" - -#define kTagLength (4) -#define kAVCPacketHeaderSize (5) -static const byte kAudioDataHeader = 0xAF; -#define swap_uint32_ htonl - -@interface LFFlvPackage (){ - dispatch_semaphore_t _lock; - NSData *_sps; - NSData *_pps; - NSData *_spec; - CGSize _videoSize; - FILE *fp; - BOOL enabledWriteVideoFile; - BOOL enabledWriteFlvHeaderVideoFile; -} - -@end - -@implementation LFFlvPackage - -- (instancetype)initWithVideoSize:(CGSize)videoSize{ - if(CGSizeEqualToSize(videoSize, CGSizeZero)) @throw [NSException exceptionWithName:@"LFFlvPackage init error" reason:@"video size is zero" userInfo:nil]; - if(self = [super init]){ - _videoSize = videoSize; - _lock = dispatch_semaphore_create(1); -#ifdef DEBUG - enabledWriteVideoFile = NO; - [self initForFilePath]; -#endif - } - return self; -} - -- (void)dealloc{ - -} - -#pragma mark -- LFStreamPackage Delegate -- (NSData*)aaCPacket:(LFAudioFrame*)audioFrame{ - NSMutableData *result = [[NSMutableData alloc] init]; - - dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); - - if(!_spec){ - _spec = audioFrame.audioInfo; - } - - if(!_sps || !_pps){ - dispatch_semaphore_signal(_lock); - return nil; - } - - // write audio data - uint32 kAACPacketSize = 2; - - NSInteger buffer_size = kAACPacketSize + audioFrame.data.length + FLV_TAG_SIZE; - NSInteger packet_size = buffer_size + kTagLength; - - [result appendData:[[self class] flvTagHeader:FLV_TAG_TYPE_AUDIO size:(int32_t)audioFrame.data.length + kAACPacketSize timeStamp:(uint32)audioFrame.timestamp]]; - - byte format[2] = { kAudioDataHeader, 0x01}; - [result appendBytes:format length:sizeof(format)]; - [result appendData:audioFrame.data]; - - uint32 pre_size = swap_uint32_(packet_size-4); - [result appendBytes:&pre_size length:sizeof(uint32)]; - - audioFrame.header = [[self class] flvHeads:_videoSize.width videoHeight:_videoSize.height sps:_sps pps:_pps audioHeader:_spec]; - if(enabledWriteVideoFile){ - if(!enabledWriteFlvHeaderVideoFile){ - enabledWriteFlvHeaderVideoFile = YES; - fwrite(audioFrame.header.bytes, 1,audioFrame.header.length,self->fp); - } - } - - if(enabledWriteVideoFile) { - fwrite(result.bytes, 1, result.length,self->fp); - } - - dispatch_semaphore_signal(_lock); - return result; -} - -- (NSData*)h264Packet:(LFVideoFrame*)videoFrame{ - NSMutableData *result = [[NSMutableData alloc] init]; - - dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); - - if(!_sps || !_pps){ - _sps = videoFrame.sps; - _pps = videoFrame.pps; - } - - if(!_spec){ - dispatch_semaphore_signal(_lock); - return nil; - } - - videoFrame.header = [[self class] flvHeads:_videoSize.width videoHeight:_videoSize.height sps:_sps pps:_pps audioHeader:_spec]; - if(enabledWriteVideoFile){ - if(!enabledWriteFlvHeaderVideoFile){ - enabledWriteFlvHeaderVideoFile = YES; - fwrite(videoFrame.header.bytes, 1,videoFrame.header.length,self->fp); - } - } - - // write video data - // Size + buffer size(4 bytes) - uint32 kAVCPacketSize = kAVCPacketHeaderSize + 4; - - size_t buffer_size = kAVCPacketSize + videoFrame.data.length + FLV_TAG_SIZE; - size_t packet_size = buffer_size + kTagLength; - - [result appendData:[[self class] flvTagHeader:FLV_TAG_TYPE_VIDEO size:(int32_t)videoFrame.data.length + kAVCPacketSize timeStamp:(uint32)videoFrame.timestamp]]; - [result appendData:[[self class] h264PacketHeader:videoFrame.isKeyFrame nalu:true]]; - - // write length - size_t size = videoFrame.data.length; - byte length[4] = { 0x00, 0x00, 0x00, 0x00 }; - length[0] = (size >> 24) & 0xff; - length[1] = (size >> 16) & 0xff; - length[2] = (size >> 8) & 0xff; - length[3] = (size >> 0) & 0xff; - [result appendBytes:length length:sizeof(length)]; - - // write tag data - [result appendData:videoFrame.data]; - - uint32 pre_size = swap_uint32_(packet_size-4); - [result appendBytes:&pre_size length:sizeof(uint32)]; - - if(enabledWriteVideoFile) { - fwrite(result.bytes, 1, result.length,self->fp); - } - - dispatch_semaphore_signal(_lock); - return result; -} - -#pragma mark -- FLV -int stream_buffer_write_offset = 0; -static size_t stream_buffer_write(const void * in_buffer, size_t size, void * user_data) { - memcpy(user_data+stream_buffer_write_offset, in_buffer, size); - stream_buffer_write_offset += size; - return size; -} - -+ (NSData*)flvHeader{ - NSMutableData *result = [[NSMutableData alloc] init]; - // 写入 flv header信息 /*<464c5601 05000000 09000000 00>*/ - flv_header header = { }; - uint32_be offset = swap_uint32_(FLV_HEADER_SIZE); - byte extend[kTagLength] = { 0x00, 0x00, 0x00, 0x00 }; - - [result appendBytes:FLV_SIGNATURE length:sizeof(header.signature)]; - uint8 version[] = {FLV_VERSION}; - [result appendBytes:&version length:1]; - uint8 flag[] = {FLV_FLAG_VIDEO | FLV_FLAG_AUDIO}; - [result appendBytes:&flag length:1]; - [result appendBytes:&offset length:sizeof(uint32_be)]; - [result appendBytes:extend length:kTagLength]; - - return result; -} - -+ (NSData*)flvTagHeader:(uint8)type size:(uint32)size timeStamp:(uint32)timeStamp{ - flv_tag tag; - tag.type = type; - tag.body_length = uint32_to_uint24_be(size); - flv_tag_set_timestamp(&tag, timeStamp); - tag.stream_id = uint32_to_uint24_be(0); - - return [NSData dataWithBytes:&tag length:FLV_TAG_SIZE]; -} - -+ (NSData*)h264PacketHeader:(BOOL)keyFrame nalu:(BOOL)nalu{ - byte header[kAVCPacketHeaderSize] = { 0x00, 0x00, 0x00, 0x00, 0x00 }; - header[0] = (keyFrame ? 0x10 : 0x20) | 0x07; - header[1] = nalu ? 0x01 : 0x00; // 1: AVC NALU 0: AVC sequence header - // 后三个字节为Composition time,在AVC中无用 - return [NSData dataWithBytes:header length:sizeof(header)]; -} - -+ (NSData*)metaData:(NSInteger)width height:(NSInteger)height{ - NSMutableData *result = [[NSMutableData alloc] init]; - - flv_metadata meta; - meta.on_metadata_name = amf_str("onMetaData"); - meta.on_metadata = amf_associative_array_new(); - amf_associative_array_add(meta.on_metadata, "width", - amf_number_new(width)); - amf_associative_array_add(meta.on_metadata, "height", - amf_number_new(height)); - amf_associative_array_add(meta.on_metadata, "videocodecid", - amf_number_new((number64)FLV_VIDEO_TAG_CODEC_AVC)); - //usage = base::IntToString(params_.audio_sample_rate); - //amf_associative_array_add(meta.on_metadata, "audiosamplerate", - // amf_str(usage.c_str())); - //usage = base::IntToString(params_.audio_sample_size); - //amf_associative_array_add(meta.on_metadata, "audiosamplesize", - // amf_str(usage.c_str())); - amf_associative_array_add(meta.on_metadata, "stereo", amf_boolean_new(1)); // 对AAC格式: 总为 1 - amf_associative_array_add(meta.on_metadata, "audiocodecid", - amf_number_new((number64)FLV_AUDIO_TAG_SOUND_FORMAT_AAC)); - // create the onMetaData tag - uint32 on_metadata_name_size = (uint32)amf_data_size(meta.on_metadata_name); - uint32 on_metadata_size = (uint32)amf_data_size(meta.on_metadata); - uint32 meta_size = on_metadata_name_size + on_metadata_size; - - size_t buffer_size = meta_size + FLV_TAG_SIZE; - size_t packet_size = true ? buffer_size + kTagLength : buffer_size; - [result appendData:[[self class] flvTagHeader:FLV_TAG_TYPE_META size:meta_size timeStamp:0]]; - - byte metaName[1024] = {0}; - byte metaData[1024] = {0}; - - stream_buffer_write_offset = 0; - size_t metanamelen = amf_data_write(meta.on_metadata_name, stream_buffer_write, metaName); - - stream_buffer_write_offset = 0; - size_t metalen = amf_data_write(meta.on_metadata, stream_buffer_write, metaData); - - amf_data_free(meta.on_metadata_name); - amf_data_free(meta.on_metadata); - - [result appendBytes:metaName length:metanamelen]; - [result appendBytes:metaData length:metalen]; - uint32 pre_size = swap_uint32_(packet_size-4);//为解决第一个pretagsize多了4个而减去4 - [result appendBytes:&pre_size length:sizeof(uint32)]; - - return result; -} - -+ (NSData*)flvTagWithVideoHeader:(NSData*)sps pps:(NSData*)pps{ - NSMutableData *result = [[NSMutableData alloc] init]; - // 封装AVC sequence header - const size_t kExtendSize = 11; - size_t buffer_size = sps.length + pps.length + kExtendSize; - - // AVCPacket header size - size_t body_size = kAVCPacketHeaderSize + buffer_size; - size_t packet_size = body_size + FLV_TAG_SIZE; - // AVCDecoderConfigurationRecord - [result appendData:[[self class] flvTagHeader:FLV_TAG_TYPE_VIDEO size:(UInt32)body_size timeStamp:0]]; - [result appendData:[[self class] h264PacketHeader:YES nalu:NO]]; - - uint8 configuration1[] = {0x01}; - [result appendBytes:&configuration1 length:1]; - [result appendBytes:&sps.bytes[1] length:1]; - [result appendBytes:&sps.bytes[2] length:1]; - [result appendBytes:&sps.bytes[3] length:1]; - uint8 configuration2[] = {0xff}; - [result appendBytes:&configuration2 length:1]; - - // sps - uint8 sps1[] = {0xe1}; - [result appendBytes:&sps1 length:1]; - uint8 sps2[] = {(sps.length >> 8) & 0xff}; - [result appendBytes:&sps2 length:1]; - uint8 sps3[] = {sps.length & 0xff}; - [result appendBytes:&sps3 length:1]; - [result appendBytes:sps.bytes length:sps.length]; - - - // pps - uint8 pps1[] = {0x01}; - [result appendBytes:&pps1 length:1]; - uint8 pps2[] = {(pps.length >> 8) & 0xff}; - [result appendBytes:&pps2 length:1]; - uint8 pps3[] = {pps.length & 0xff}; - [result appendBytes:&pps3 length:1]; - [result appendBytes:pps.bytes length:pps.length]; - - uint32 pre_size = swap_uint32_(packet_size); - [result appendBytes:&pre_size length:sizeof(uint32)]; - - return result; -} - -+ (NSData*)flvTagWithAudioHeader:(NSData*)audioInfo timeStamp:(uint32)timeStamp{ - NSMutableData *result = [[NSMutableData alloc] init]; - const size_t kAACPacketHeaderSize = 2; - - size_t body_size = kAACPacketHeaderSize + audioInfo.length; - size_t packet_size = body_size + FLV_TAG_SIZE; - - [result appendData:[[self class] flvTagHeader:FLV_TAG_TYPE_AUDIO size:(UInt32)body_size timeStamp:timeStamp]]; - - byte format[kAACPacketHeaderSize] = { kAudioDataHeader, 0x01}; - format[1] = 0x00; - [result appendBytes:format length:sizeof(format)]; - [result appendBytes:audioInfo.bytes length:audioInfo.length]; - - uint32 pre_size = swap_uint32_(packet_size); - [result appendBytes:&pre_size length:sizeof(uint32)]; - - return result; -} - -+ (NSData*)flvHeads:(NSInteger)videoWidth videoHeight:(NSInteger)videoHeight sps:(NSData*)sps pps:(NSData*)pps audioHeader:(NSData*)audioHeader{ - NSMutableData *result = [[NSMutableData alloc] init]; - // 写FLV头 - [result appendData:[[self class] flvHeader]]; - // 写 Meta 相关信息 - [result appendData:[[self class] metaData:videoWidth height:videoHeight]]; - // 写音频编码头信息 - [result appendData:[[self class] flvTagWithAudioHeader:audioHeader timeStamp:0]]; - // 写视频编码头信息 - [result appendData:[[self class] flvTagWithVideoHeader:sps pps:pps]]; - - return result; -} - - -#pragma mark -- Debug.. store video to local -- (void)initForFilePath{ - NSString *path = [self GetFilePathByfileName:"flv_publish_x1.flv"]; - [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; - self->fp = fopen([path cStringUsingEncoding:NSUTF8StringEncoding],"wb"); -} - -- (NSString*)GetFilePathByfileName:(char*)filename{ - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES); - NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *strName = [NSString stringWithFormat:@"%s",filename]; - - NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; - - - return writablePath; -} - -@end diff --git a/LFLiveKit/packet/LFStreamPackage.h b/LFLiveKit/packet/LFStreamPackage.h deleted file mode 100755 index 26473236..00000000 --- a/LFLiveKit/packet/LFStreamPackage.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// LFStreamPackage.h -// LFLiveKit -// -// Created by 倾慕 on 16/5/2. -// Copyright © 2016年 倾慕. All rights reserved. -// - -#import -#import -#import "LFAudioFrame.h" -#import "LFVideoFrame.h" - -/// 编码器抽象的接口 -@protocol LFStreamPackage -@required -- (nullable instancetype)initWithVideoSize:(CGSize)videoSize; -- (nullable NSData*)aaCPacket:(nullable LFAudioFrame*)audioFrame; -- (nullable NSData*)h264Packet:(nullable LFVideoFrame*)videoFrame; -@end - diff --git a/LFLiveKit/packet/flv/amf.c b/LFLiveKit/packet/flv/amf.c deleted file mode 100755 index 7f400ced..00000000 --- a/LFLiveKit/packet/flv/amf.c +++ /dev/null @@ -1,1166 +0,0 @@ -/* - $Id: amf.c 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include - -#include "amf.h" - -/* function common to all array types */ -static void amf_list_init(amf_list * list) { - if (list != NULL) { - list->size = 0; - list->first_element = NULL; - list->last_element = NULL; - } -} - -static amf_data * amf_list_push(amf_list * list, amf_data * data) { - amf_node * node = (amf_node*)malloc(sizeof(amf_node)); - if (node != NULL) { - node->data = data; - node->next = NULL; - node->prev = NULL; - if (list->size == 0) { - list->first_element = node; - list->last_element = node; - } - else { - list->last_element->next = node; - node->prev = list->last_element; - list->last_element = node; - } - ++(list->size); - return data; - } - return NULL; -} - -static amf_data * amf_list_insert_before(amf_list * list, amf_node * node, amf_data * data) { - if (node != NULL) { - amf_node * new_node = (amf_node*)malloc(sizeof(amf_node)); - if (new_node != NULL) { - new_node->next = node; - new_node->prev = node->prev; - - if (node->prev != NULL) { - node->prev->next = new_node; - node->prev = new_node; - } - if (node == list->first_element) { - list->first_element = new_node; - } - ++(list->size); - new_node->data = data; - return data; - } - } - return NULL; -} - -static amf_data * amf_list_insert_after(amf_list * list, amf_node * node, amf_data * data) { - if (node != NULL) { - amf_node * new_node = (amf_node*)malloc(sizeof(amf_node)); - if (new_node != NULL) { - new_node->next = node->next; - new_node->prev = node; - - if (node->next != NULL) { - node->next->prev = new_node; - node->next = new_node; - } - if (node == list->last_element) { - list->last_element = new_node; - } - ++(list->size); - new_node->data = data; - return data; - } - } - return NULL; -} - -static amf_data * amf_list_delete(amf_list * list, amf_node * node) { - amf_data * data = NULL; - if (node != NULL) { - if (node->next != NULL) { - node->next->prev = node->prev; - } - if (node->prev != NULL) { - node->prev->next = node->next; - } - if (node == list->first_element) { - list->first_element = node->next; - } - if (node == list->last_element) { - list->last_element = node->prev; - } - data = node->data; - free(node); - --(list->size); - } - return data; -} - -static amf_data * amf_list_get_at(const amf_list * list, uint32 n) { - if (n < list->size) { - uint32 i; - amf_node * node = list->first_element; - for (i = 0; i < n; ++i) { - node = node->next; - } - return node->data; - } - return NULL; -} - -static amf_data * amf_list_pop(amf_list * list) { - return amf_list_delete(list, list->last_element); -} - -static amf_node * amf_list_first(const amf_list * list) { - return list->first_element; -} - -static amf_node * amf_list_last(const amf_list * list) { - return list->last_element; -} - -static void amf_list_clear(amf_list * list) { - amf_node * tmp; - amf_node * node = list->first_element; - while (node != NULL) { - amf_data_free(node->data); - tmp = node; - node = node->next; - free(tmp); - } - list->size = 0; -} - -static amf_list * amf_list_clone(const amf_list * list, amf_list * out_list) { - amf_node * node; - node = list->first_element; - while (node != NULL) { - amf_list_push(out_list, amf_data_clone(node->data)); - node = node->next; - } - return out_list; -} - -/* structure used to mimic a stream with a memory buffer */ -typedef struct __buffer_context { - byte * start_address; - byte * current_address; - size_t buffer_size; -} buffer_context; - -/* callback function to mimic fread using a memory buffer */ -static size_t buffer_read(void * out_buffer, size_t size, void * user_data) { - buffer_context * ctxt = (buffer_context *)user_data; - if (ctxt->current_address >= ctxt->start_address && - ctxt->current_address + size <= ctxt->start_address + ctxt->buffer_size) { - - memcpy(out_buffer, ctxt->current_address, size); - ctxt->current_address += size; - return size; - } - else { - return 0; - } -} - -/* callback function to mimic fwrite using a memory buffer */ -static size_t buffer_write(const void * in_buffer, size_t size, void * user_data) { - buffer_context * ctxt = (buffer_context *)user_data; - if (ctxt->current_address >= ctxt->start_address && - ctxt->current_address + size <= ctxt->start_address + ctxt->buffer_size) { - - memcpy(ctxt->current_address, in_buffer, size); - ctxt->current_address += size; - return size; - } - else { - return 0; - } -} - -/* allocate an AMF data object */ -amf_data * amf_data_new(byte type) { - amf_data * data = (amf_data*)malloc(sizeof(amf_data)); - if (data != NULL) { - data->type = type; - data->error_code = AMF_ERROR_OK; - } - return data; -} - -/* read AMF data from buffer */ -amf_data * amf_data_buffer_read(byte * buffer, size_t maxbytes) { - buffer_context ctxt; - ctxt.start_address = ctxt.current_address = buffer; - ctxt.buffer_size = maxbytes; - return amf_data_read(buffer_read, &ctxt); -} - -/* write AMF data to buffer */ -size_t amf_data_buffer_write(amf_data * data, byte * buffer, size_t maxbytes) { - buffer_context ctxt; - ctxt.start_address = ctxt.current_address = buffer; - ctxt.buffer_size = maxbytes; - return amf_data_write(data, buffer_write, &ctxt); -} - -/* callback function to read data from a file stream */ -static size_t file_read(void * out_buffer, size_t size, void * user_data) { - return fread(out_buffer, sizeof(byte), size, (FILE *)user_data); -} - -/* callback function to write data to a file stream */ -static size_t file_write(const void * in_buffer, size_t size, void * user_data) { - return fwrite(in_buffer, sizeof(byte), size, (FILE *)user_data); -} - -/* load AMF data from a file stream */ -amf_data * amf_data_file_read(FILE * stream) { - return amf_data_read(file_read, stream); -} - -/* write AMF data into a file stream */ -size_t amf_data_file_write(const amf_data * data, FILE * stream) { - return amf_data_write(data, file_write, stream); -} - -/* read a number */ -static amf_data * amf_number_read(amf_read_proc read_proc, void * user_data) { - number64_be val; - if (read_proc(&val, sizeof(number64_be), user_data) == sizeof(number64_be)) { - return amf_number_new(swap_number64(val)); - } - else { - return amf_data_error(AMF_ERROR_EOF); - } -} - -/* read a boolean */ -static amf_data * amf_boolean_read(amf_read_proc read_proc, void * user_data) { - uint8 val; - if (read_proc(&val, sizeof(uint8), user_data) == sizeof(uint8)) { - return amf_boolean_new(val); - } - else { - return amf_data_error(AMF_ERROR_EOF); - } -} - -/* read a string */ -static amf_data * amf_string_read(amf_read_proc read_proc, void * user_data) { - uint16_be strsize; - byte * buffer; - - if (read_proc(&strsize, sizeof(uint16_be), user_data) < sizeof(uint16_be)) { - return amf_data_error(AMF_ERROR_EOF); - } - - strsize = swap_uint16(strsize); - if (strsize == 0) { - return amf_string_new(NULL, 0); - } - - buffer = (byte*)calloc(strsize, sizeof(byte)); - if (buffer == NULL) { - return NULL; - } - - if (read_proc(buffer, strsize, user_data) == strsize) { - amf_data * data = amf_string_new(buffer, strsize); - free(buffer); - return data; - } - else { - free(buffer); - return amf_data_error(AMF_ERROR_EOF); - } -} - -/* read an object */ -static amf_data * amf_object_read(amf_read_proc read_proc, void * user_data) { - amf_data * name; - amf_data * element; - byte error_code; - amf_data * data; - - data = amf_object_new(); - if (data == NULL) { - return NULL; - } - - while (1) { - name = amf_string_read(read_proc, user_data); - error_code = amf_data_get_error_code(name); - if (error_code != AMF_ERROR_OK) { - /* invalid name: error */ - amf_data_free(name); - amf_data_free(data); - return amf_data_error(error_code); - } - - element = amf_data_read(read_proc, user_data); - error_code = amf_data_get_error_code(element); - if (error_code == AMF_ERROR_END_TAG || error_code == AMF_ERROR_UNKNOWN_TYPE) { - /* end tag or unknown element: end of data, exit loop */ - amf_data_free(name); - amf_data_free(element); - break; - } - else if (error_code != AMF_ERROR_OK) { - amf_data_free(name); - amf_data_free(data); - amf_data_free(element); - return amf_data_error(error_code); - } - - if (amf_object_add(data, (char *)amf_string_get_bytes(name), element) == NULL) { - amf_data_free(name); - amf_data_free(element); - amf_data_free(data); - return NULL; - } - else { - amf_data_free(name); - } - } - - return data; -} - -/* read an associative array */ -static amf_data * amf_associative_array_read(amf_read_proc read_proc, void * user_data) { - amf_data * name; - amf_data * element; - uint32_be size; - byte error_code; - amf_data * data; - - data = amf_associative_array_new(); - if (data == NULL) { - return NULL; - } - - /* we ignore the 32 bits array size marker */ - if (read_proc(&size, sizeof(uint32_be), user_data) < sizeof(uint32_be)) { - amf_data_free(data); - return amf_data_error(AMF_ERROR_EOF); - } - - while(1) { - name = amf_string_read(read_proc, user_data); - error_code = amf_data_get_error_code(name); - if (error_code != AMF_ERROR_OK) { - /* invalid name: error */ - amf_data_free(name); - amf_data_free(data); - return amf_data_error(error_code); - } - - element = amf_data_read(read_proc, user_data); - error_code = amf_data_get_error_code(element); - - if (amf_string_get_size(name) == 0 || error_code == AMF_ERROR_END_TAG || error_code == AMF_ERROR_UNKNOWN_TYPE) { - /* end tag or unknown element: end of data, exit loop */ - amf_data_free(name); - amf_data_free(element); - break; - } - else if (error_code != AMF_ERROR_OK) { - amf_data_free(name); - amf_data_free(data); - amf_data_free(element); - return amf_data_error(error_code); - } - - if (amf_associative_array_add(data, (char *)amf_string_get_bytes(name), element) == NULL) { - amf_data_free(name); - amf_data_free(element); - amf_data_free(data); - return NULL; - } - else { - amf_data_free(name); - } - } - - return data; -} - -/* read an array */ -static amf_data * amf_array_read(amf_read_proc read_proc, void * user_data) { - size_t i; - amf_data * element; - byte error_code; - amf_data * data; - uint32 array_size; - - data = amf_array_new(); - if (data == NULL) { - return NULL; - } - - if (read_proc(&array_size, sizeof(uint32), user_data) < sizeof(uint32)) { - amf_data_free(data); - return amf_data_error(AMF_ERROR_EOF); - } - - array_size = swap_uint32(array_size); - - for (i = 0; i < array_size; ++i) { - element = amf_data_read(read_proc, user_data); - error_code = amf_data_get_error_code(element); - if (error_code != AMF_ERROR_OK) { - amf_data_free(element); - amf_data_free(data); - return amf_data_error(error_code); - } - - if (amf_array_push(data, element) == NULL) { - amf_data_free(element); - amf_data_free(data); - return NULL; - } - } - - return data; -} - -/* read a date */ -static amf_data * amf_date_read(amf_read_proc read_proc, void * user_data) { - number64_be milliseconds; - sint16_be timezone; - if (read_proc(&milliseconds, sizeof(number64_be), user_data) == sizeof(number64_be) && - read_proc(&timezone, sizeof(sint16_be), user_data) == sizeof(sint16_be)) { - return amf_date_new(swap_number64(milliseconds), swap_sint16(timezone)); - } - else { - return amf_data_error(AMF_ERROR_EOF); - } -} - -/* load AMF data from stream */ -amf_data * amf_data_read(amf_read_proc read_proc, void * user_data) { - byte type; - if (read_proc(&type, sizeof(byte), user_data) < sizeof(byte)) { - return amf_data_error(AMF_ERROR_EOF); - } - - switch (type) { - case AMF_TYPE_NUMBER: - return amf_number_read(read_proc, user_data); - case AMF_TYPE_BOOLEAN: - return amf_boolean_read(read_proc, user_data); - case AMF_TYPE_STRING: - return amf_string_read(read_proc, user_data); - case AMF_TYPE_OBJECT: - return amf_object_read(read_proc, user_data); - case AMF_TYPE_NULL: - return amf_null_new(); - case AMF_TYPE_UNDEFINED: - return amf_undefined_new(); - /*case AMF_TYPE_REFERENCE:*/ - case AMF_TYPE_ASSOCIATIVE_ARRAY: - return amf_associative_array_read(read_proc, user_data); - case AMF_TYPE_ARRAY: - return amf_array_read(read_proc, user_data); - case AMF_TYPE_DATE: - return amf_date_read(read_proc, user_data); - /*case AMF_TYPE_SIMPLEOBJECT:*/ - case AMF_TYPE_XML: - case AMF_TYPE_CLASS: - return amf_data_error(AMF_ERROR_UNSUPPORTED_TYPE); - case AMF_TYPE_END: - return amf_data_error(AMF_ERROR_END_TAG); /* end of composite object */ - default: - return amf_data_error(AMF_ERROR_UNKNOWN_TYPE); - } -} - -/* determines the size of the given AMF data */ -size_t amf_data_size(const amf_data * data) { - size_t s = 0; - amf_node * node; - if (data != NULL) { - s += sizeof(byte); - switch (data->type) { - case AMF_TYPE_NUMBER: - s += sizeof(number64_be); - break; - case AMF_TYPE_BOOLEAN: - s += sizeof(uint8); - break; - case AMF_TYPE_STRING: - s += sizeof(uint16) + (size_t)amf_string_get_size(data); - break; - case AMF_TYPE_OBJECT: - node = amf_object_first(data); - while (node != NULL) { - s += sizeof(uint16) + (size_t)amf_string_get_size(amf_object_get_name(node)); - s += (size_t)amf_data_size(amf_object_get_data(node)); - node = amf_object_next(node); - } - s += sizeof(uint16) + sizeof(uint8); - break; - case AMF_TYPE_NULL: - case AMF_TYPE_UNDEFINED: - break; - /*case AMF_TYPE_REFERENCE:*/ - case AMF_TYPE_ASSOCIATIVE_ARRAY: - s += sizeof(uint32); - node = amf_associative_array_first(data); - while (node != NULL) { - s += sizeof(uint16) + (size_t)amf_string_get_size(amf_associative_array_get_name(node)); - s += (size_t)amf_data_size(amf_associative_array_get_data(node)); - node = amf_associative_array_next(node); - } - s += sizeof(uint16) + sizeof(uint8); - break; - case AMF_TYPE_ARRAY: - s += sizeof(uint32); - node = amf_array_first(data); - while (node != NULL) { - s += (size_t)amf_data_size(amf_array_get(node)); - node = amf_array_next(node); - } - break; - case AMF_TYPE_DATE: - s += sizeof(number64) + sizeof(sint16); - break; - /*case AMF_TYPE_SIMPLEOBJECT:*/ - case AMF_TYPE_XML: - case AMF_TYPE_CLASS: - case AMF_TYPE_END: - break; /* end of composite object */ - default: - break; - } - } - return s; -} - -/* write a number */ -static size_t amf_number_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - number64 n = swap_number64(data->number_data); - return write_proc(&n, sizeof(number64_be), user_data); -} - -/* write a boolean */ -static size_t amf_boolean_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - return write_proc(&(data->boolean_data), sizeof(uint8), user_data); -} - -/* write a string */ -static size_t amf_string_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - uint16 s; - size_t w = 0; - - s = swap_uint16(data->string_data.size); - w = write_proc(&s, sizeof(uint16_be), user_data); - if (data->string_data.size > 0) { - w += write_proc(data->string_data.mbstr, (size_t)(data->string_data.size), user_data); - } - - return w; -} - -/* write an object */ -static size_t amf_object_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - amf_node * node; - size_t w = 0; - uint16_be filler = swap_uint16(0); - uint8 terminator = AMF_TYPE_END; - - node = amf_object_first(data); - while (node != NULL) { - w += amf_string_write(amf_object_get_name(node), write_proc, user_data); - w += amf_data_write(amf_object_get_data(node), write_proc, user_data); - node = amf_object_next(node); - } - - /* empty string is the last element */ - w += write_proc(&filler, sizeof(uint16_be), user_data); - /* an object ends with 0x09 */ - w += write_proc(&terminator, sizeof(uint8), user_data); - - return w; -} - -/* write an associative array */ -static size_t amf_associative_array_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - amf_node * node; - size_t w = 0; - uint32_be s; - uint16_be filler = swap_uint16(0); - uint8 terminator = AMF_TYPE_END; - - s = swap_uint32(data->list_data.size) / 2; - w += write_proc(&s, sizeof(uint32_be), user_data); - node = amf_associative_array_first(data); - while (node != NULL) { - w += amf_string_write(amf_associative_array_get_name(node), write_proc, user_data); - w += amf_data_write(amf_associative_array_get_data(node), write_proc, user_data); - node = amf_associative_array_next(node); - } - - /* empty string is the last element */ - w += write_proc(&filler, sizeof(uint16_be), user_data); - /* an object ends with 0x09 */ - w += write_proc(&terminator, sizeof(uint8), user_data); - - return w; -} - -/* write an array */ -static size_t amf_array_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - amf_node * node; - size_t w = 0; - uint32_be s; - - s = swap_uint32(data->list_data.size); - w += write_proc(&s, sizeof(uint32_be), user_data); - node = amf_array_first(data); - while (node != NULL) { - w += amf_data_write(amf_array_get(node), write_proc, user_data); - node = amf_array_next(node); - } - - return w; -} - -/* write a date */ -static size_t amf_date_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - size_t w = 0; - number64_be milli; - sint16_be tz; - - milli = swap_number64(data->date_data.milliseconds); - w += write_proc(&milli, sizeof(number64_be), user_data); - tz = swap_sint16(data->date_data.timezone); - w += write_proc(&tz, sizeof(sint16_be), user_data); - - return w; -} - -/* write amf data to stream */ -size_t amf_data_write(const amf_data * data, amf_write_proc write_proc, void * user_data) { - size_t s = 0; - if (data != NULL) { - s += write_proc(&(data->type), sizeof(byte), user_data); - switch (data->type) { - case AMF_TYPE_NUMBER: - s += amf_number_write(data, write_proc, user_data); - break; - case AMF_TYPE_BOOLEAN: - s += amf_boolean_write(data, write_proc, user_data); - break; - case AMF_TYPE_STRING: - s += amf_string_write(data, write_proc, user_data); - break; - case AMF_TYPE_OBJECT: - s += amf_object_write(data, write_proc, user_data); - break; - case AMF_TYPE_NULL: - case AMF_TYPE_UNDEFINED: - break; - /*case AMF_TYPE_REFERENCE:*/ - case AMF_TYPE_ASSOCIATIVE_ARRAY: - s += amf_associative_array_write(data, write_proc, user_data); - break; - case AMF_TYPE_ARRAY: - s += amf_array_write(data, write_proc, user_data); - break; - case AMF_TYPE_DATE: - s += amf_date_write(data, write_proc, user_data); - break; - /*case AMF_TYPE_SIMPLEOBJECT:*/ - case AMF_TYPE_XML: - case AMF_TYPE_CLASS: - case AMF_TYPE_END: - break; /* end of composite object */ - default: - break; - } - } - return s; -} - -/* data type */ -byte amf_data_get_type(const amf_data * data) { - return (data != NULL) ? data->type : AMF_TYPE_NULL; -} - -/* error code */ -byte amf_data_get_error_code(const amf_data * data) { - return (data != NULL) ? data->error_code : AMF_ERROR_NULL_POINTER; -} - -/* clone AMF data */ -amf_data * amf_data_clone(const amf_data * data) { - /* we copy data recursively */ - if (data != NULL) { - switch (data->type) { - case AMF_TYPE_NUMBER: return amf_number_new(amf_number_get_value(data)); - case AMF_TYPE_BOOLEAN: return amf_boolean_new(amf_boolean_get_value(data)); - case AMF_TYPE_STRING: - if (data->string_data.mbstr != NULL) { - return amf_string_new((byte *)strdup((char *)amf_string_get_bytes(data)), amf_string_get_size(data)); - } - else { - return amf_str(NULL); - } - case AMF_TYPE_NULL: return NULL; - case AMF_TYPE_UNDEFINED: return NULL; - /*case AMF_TYPE_REFERENCE:*/ - case AMF_TYPE_OBJECT: - case AMF_TYPE_ASSOCIATIVE_ARRAY: - case AMF_TYPE_ARRAY: - { - amf_data * d = amf_data_new(data->type); - if (d != NULL) { - amf_list_init(&d->list_data); - amf_list_clone(&data->list_data, &d->list_data); - } - return d; - } - case AMF_TYPE_DATE: return amf_date_new(amf_date_get_milliseconds(data), amf_date_get_timezone(data)); - /*case AMF_TYPE_SIMPLEOBJECT:*/ - case AMF_TYPE_XML: return NULL; - case AMF_TYPE_CLASS: return NULL; - } - } - return NULL; -} - -/* free AMF data */ -void amf_data_free(amf_data * data) { - if (data != NULL) { - switch (data->type) { - case AMF_TYPE_NUMBER: break; - case AMF_TYPE_BOOLEAN: break; - case AMF_TYPE_STRING: - if (data->string_data.mbstr != NULL) { - free(data->string_data.mbstr); - } break; - case AMF_TYPE_NULL: break; - case AMF_TYPE_UNDEFINED: break; - /*case AMF_TYPE_REFERENCE:*/ - case AMF_TYPE_OBJECT: - case AMF_TYPE_ASSOCIATIVE_ARRAY: - case AMF_TYPE_ARRAY: amf_list_clear(&data->list_data); break; - case AMF_TYPE_DATE: break; - /*case AMF_TYPE_SIMPLEOBJECT:*/ - case AMF_TYPE_XML: break; - case AMF_TYPE_CLASS: break; - default: break; - } - free(data); - } -} - -/* dump AMF data into a stream as text */ -void amf_data_dump(FILE * stream, const amf_data * data, int indent_level) { - if (data != NULL) { - amf_node * node; - time_t time; - struct tm * t = NULL; - char datestr[128]; - switch (data->type) { - case AMF_TYPE_NUMBER: - fprintf(stream, "%.12g", data->number_data); - break; - case AMF_TYPE_BOOLEAN: - fprintf(stream, "%s", (data->boolean_data) ? "true" : "false"); - break; - case AMF_TYPE_STRING: - fprintf(stream, "\'%.*s\'", data->string_data.size, data->string_data.mbstr); - break; - case AMF_TYPE_OBJECT: - node = amf_object_first(data); - fprintf(stream, "{\n"); - while (node != NULL) { - fprintf(stream, "%*s", (indent_level+1)*4, ""); - amf_data_dump(stream, amf_object_get_name(node), indent_level+1); - fprintf(stream, ": "); - amf_data_dump(stream, amf_object_get_data(node), indent_level+1); - node = amf_object_next(node); - fprintf(stream, "\n"); - } - fprintf(stream, "%*s", indent_level*4 + 1, "}"); - break; - case AMF_TYPE_NULL: - fprintf(stream, "null"); - break; - case AMF_TYPE_UNDEFINED: - fprintf(stream, "undefined"); - break; - /*case AMF_TYPE_REFERENCE:*/ - case AMF_TYPE_ASSOCIATIVE_ARRAY: - node = amf_associative_array_first(data); - fprintf(stream, "{\n"); - while (node != NULL) { - fprintf(stream, "%*s", (indent_level+1)*4, ""); - amf_data_dump(stream, amf_associative_array_get_name(node), indent_level+1); - fprintf(stream, " => "); - amf_data_dump(stream, amf_associative_array_get_data(node), indent_level+1); - node = amf_associative_array_next(node); - fprintf(stream, "\n"); - } - fprintf(stream, "%*s", indent_level*4 + 1, "}"); - break; - case AMF_TYPE_ARRAY: - node = amf_array_first(data); - fprintf(stream, "[\n"); - while (node != NULL) { - fprintf(stream, "%*s", (indent_level+1)*4, ""); - amf_data_dump(stream, node->data, indent_level+1); - node = amf_array_next(node); - fprintf(stream, "\n"); - } - fprintf(stream, "%*s", indent_level*4 + 1, "]"); - break; - case AMF_TYPE_DATE: - time = amf_date_to_time_t(data); - tzset(); - localtime_r(&time,t); - strftime(datestr, sizeof(datestr), "%a, %d %b %Y %H:%M:%S %z", t); - fprintf(stream, "%s", datestr); - break; - /*case AMF_TYPE_SIMPLEOBJECT:*/ - case AMF_TYPE_XML: break; - case AMF_TYPE_CLASS: break; - default: break; - } - } -} - -/* return a null AMF object with the specified error code attached to it */ -amf_data * amf_data_error(byte error_code) { - amf_data * data = amf_null_new(); - if (data != NULL) { - data->error_code = error_code; - } - return data; -} - -/* number functions */ -amf_data * amf_number_new(number64 value) { - amf_data * data = amf_data_new(AMF_TYPE_NUMBER); - if (data != NULL) { - data->number_data = value; - } - return data; -} - -amf_data * amf_number_double(double value) { - amf_data * data = amf_data_new(AMF_TYPE_NUMBER); - if (data != NULL) { - data->number_data = value; - } - return data; -} - -number64 amf_number_get_value(const amf_data * data) { - return (data != NULL) ? data->number_data : 0; -} - -void amf_number_set_value(amf_data * data, number64 value) { - if (data != NULL) { - data->number_data = value; - } -} - -/* boolean functions */ -amf_data * amf_boolean_new(uint8 value) { - amf_data * data = amf_data_new(AMF_TYPE_BOOLEAN); - if (data != NULL) { - data->boolean_data = value; - } - return data; -} - -uint8 amf_boolean_get_value(const amf_data * data) { - return (data != NULL) ? data->boolean_data : 0; -} - -void amf_boolean_set_value(amf_data * data, uint8 value) { - if (data != NULL) { - data->boolean_data = value; - } -} - -/* string functions */ -amf_data * amf_string_new(byte * str, uint16 size) { - amf_data * data = amf_data_new(AMF_TYPE_STRING); - if (data != NULL) { - if (str == NULL) { - data->string_data.size = 0; - } - else { - data->string_data.size = size; - } - data->string_data.mbstr = (byte*)calloc(size+1, sizeof(byte)); - if (data->string_data.mbstr != NULL) { - if (data->string_data.size > 0) { - memcpy(data->string_data.mbstr, str, data->string_data.size); - } - } - else { - amf_data_free(data); - return NULL; - } - } - return data; -} - -amf_data * amf_str(const char * str) { - return amf_string_new((byte *)str, (uint16)(str != NULL ? strlen(str) : 0)); -} - -uint16 amf_string_get_size(const amf_data * data) { - return (data != NULL) ? data->string_data.size : 0; -} - -byte * amf_string_get_bytes(const amf_data * data) { - return (data != NULL) ? data->string_data.mbstr : NULL; -} - -/* object functions */ -amf_data * amf_object_new(void) { - amf_data * data = amf_data_new(AMF_TYPE_OBJECT); - if (data != NULL) { - amf_list_init(&data->list_data); - } - return data; -} - -uint32 amf_object_size(const amf_data * data) { - return (data != NULL) ? data->list_data.size / 2 : 0; -} - -amf_data * amf_object_add(amf_data * data, const char * name, amf_data * element) { - if (data != NULL) { - if (amf_list_push(&data->list_data, amf_str(name)) != NULL) { - if (amf_list_push(&data->list_data, element) != NULL) { - return element; - } - else { - amf_data_free(amf_list_pop(&data->list_data)); - } - } - } - return NULL; -} - -amf_data * amf_object_get(const amf_data * data, const char * name) { - if (data != NULL) { - amf_node * node = amf_list_first(&(data->list_data)); - while (node != NULL) { - if (strncmp((char*)(node->data->string_data.mbstr), name, (size_t)(node->data->string_data.size)) == 0) { - node = node->next; - return (node != NULL) ? node->data : NULL; - } - /* we have to skip the element data to reach the next name */ - node = node->next->next; - } - } - return NULL; -} - -amf_data * amf_object_set(amf_data * data, const char * name, amf_data * element) { - if (data != NULL) { - amf_node * node = amf_list_first(&(data->list_data)); - while (node != NULL) { - if (strncmp((char*)(node->data->string_data.mbstr), name, (size_t)(node->data->string_data.size)) == 0) { - node = node->next; - if (node != NULL && node->data != NULL) { - amf_data_free(node->data); - node->data = element; - return element; - } - } - /* we have to skip the element data to reach the next name */ - node = node->next->next; - } - } - return NULL; -} - -amf_data * amf_object_delete(amf_data * data, const char * name) { - if (data != NULL) { - amf_node * node = amf_list_first(&data->list_data); - while (node != NULL) { - node = node->next; - if (strncmp((char*)(node->data->string_data.mbstr), name, (size_t)(node->data->string_data.size)) == 0) { - amf_node * data_node = node->next; - amf_data_free(amf_list_delete(&data->list_data, node)); - return amf_list_delete(&data->list_data, data_node); - } - else { - node = node->next; - } - } - } - return NULL; -} - -amf_node * amf_object_first(const amf_data * data) { - return (data != NULL) ? amf_list_first(&data->list_data) : NULL; -} - -amf_node * amf_object_last(const amf_data * data) { - if (data != NULL) { - amf_node * node = amf_list_last(&data->list_data); - if (node != NULL) { - return node->prev; - } - } - return NULL; -} - -amf_node * amf_object_next(amf_node * node) { - if (node != NULL) { - amf_node * next = node->next; - if (next != NULL) { - return next->next; - } - } - return NULL; -} - -amf_node * amf_object_prev(amf_node * node) { - if (node != NULL) { - amf_node * prev = node->prev; - if (prev != NULL) { - return prev->prev; - } - } - return NULL; -} - -amf_data * amf_object_get_name(amf_node * node) { - return (node != NULL) ? node->data : NULL; -} - -amf_data * amf_object_get_data(amf_node * node) { - if (node != NULL) { - amf_node * next = node->next; - if (next != NULL) { - return next->data; - } - } - return NULL; -} - -/* associative array functions */ -amf_data * amf_associative_array_new(void) { - amf_data * data = amf_data_new(AMF_TYPE_ASSOCIATIVE_ARRAY); - if (data != NULL) { - amf_list_init(&data->list_data); - } - return data; -} - -/* array functions */ -amf_data * amf_array_new(void) { - amf_data * data = amf_data_new(AMF_TYPE_ARRAY); - if (data != NULL) { - amf_list_init(&data->list_data); - } - return data; -} - -uint32 amf_array_size(const amf_data * data) { - return (data != NULL) ? data->list_data.size : 0; -} - -amf_data * amf_array_push(amf_data * data, amf_data * element) { - return (data != NULL) ? amf_list_push(&data->list_data, element) : NULL; -} - -amf_data * amf_array_pop(amf_data * data) { - return (data != NULL) ? amf_list_pop(&data->list_data) : NULL; -} - -amf_node * amf_array_first(const amf_data * data) { - return (data != NULL) ? amf_list_first(&data->list_data) : NULL; -} - -amf_node * amf_array_last(const amf_data * data) { - return (data != NULL) ? amf_list_last(&data->list_data) : NULL; -} - -amf_node * amf_array_next(amf_node * node) { - return (node != NULL) ? node->next : NULL; -} - -amf_node * amf_array_prev(amf_node * node) { - return (node != NULL) ? node->prev : NULL; -} - -amf_data * amf_array_get(amf_node * node) { - return (node != NULL) ? node->data : NULL; -} - -amf_data * amf_array_get_at(const amf_data * data, uint32 n) { - return (data != NULL) ? amf_list_get_at(&data->list_data, n) : NULL; -} - -amf_data * amf_array_delete(amf_data * data, amf_node * node) { - return (data != NULL) ? amf_list_delete(&data->list_data, node) : NULL; -} - -amf_data * amf_array_insert_before(amf_data * data, amf_node * node, amf_data * element) { - return (data != NULL) ? amf_list_insert_before(&data->list_data, node, element) : NULL; -} - -amf_data * amf_array_insert_after(amf_data * data, amf_node * node, amf_data * element) { - return (data != NULL) ? amf_list_insert_after(&data->list_data, node, element) : NULL; -} - -/* date functions */ -amf_data * amf_date_new(number64 milliseconds, sint16 timezone) { - amf_data * data = amf_data_new(AMF_TYPE_DATE); - if (data != NULL) { - data->date_data.milliseconds = milliseconds; - data->date_data.timezone = timezone; - } - return data; -} - -number64 amf_date_get_milliseconds(const amf_data * data) { - return (data != NULL) ? data->date_data.milliseconds : (number64)0.0; -} - -sint16 amf_date_get_timezone(const amf_data * data) { - return (data != NULL) ? data->date_data.timezone : 0; -} - -time_t amf_date_to_time_t(const amf_data * data) { - return (time_t)((data != NULL) ? data->date_data.milliseconds / 1000 : 0); -} diff --git a/LFLiveKit/packet/flv/amf.h b/LFLiveKit/packet/flv/amf.h deleted file mode 100755 index cf045d2f..00000000 --- a/LFLiveKit/packet/flv/amf.h +++ /dev/null @@ -1,231 +0,0 @@ -/* - $Id: amf.h 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef __AMF_H__ -#define __AMF_H__ - -#include -#include -#include - -#include "types.h" - -/* AMF data types */ -#define AMF_TYPE_NUMBER ((byte)0x00) -#define AMF_TYPE_BOOLEAN ((byte)0x01) -#define AMF_TYPE_STRING ((byte)0x02) -#define AMF_TYPE_OBJECT ((byte)0x03) -#define AMF_TYPE_NULL ((byte)0x05) -#define AMF_TYPE_UNDEFINED ((byte)0x06) -/* #define AMF_TYPE_REFERENCE ((byte)0x07) */ -#define AMF_TYPE_ASSOCIATIVE_ARRAY ((byte)0x08) -#define AMF_TYPE_END ((byte)0x09) -#define AMF_TYPE_ARRAY ((byte)0x0A) -#define AMF_TYPE_DATE ((byte)0x0B) -/* #define AMF_TYPE_SIMPLEOBJECT ((byte)0x0D) */ -#define AMF_TYPE_XML ((byte)0x0F) -#define AMF_TYPE_CLASS ((byte)0x10) - -/* AMF error codes */ -#define AMF_ERROR_OK ((byte)0x00) -#define AMF_ERROR_EOF ((byte)0x01) -#define AMF_ERROR_UNKNOWN_TYPE ((byte)0x02) -#define AMF_ERROR_END_TAG ((byte)0x03) -#define AMF_ERROR_NULL_POINTER ((byte)0x04) -#define AMF_ERROR_MEMORY ((byte)0x05) -#define AMF_ERROR_UNSUPPORTED_TYPE ((byte)0x06) - -typedef struct __amf_node * p_amf_node; - -/* string type */ -typedef struct __amf_string { - uint16 size; - byte * mbstr; -} amf_string; - -/* array type */ -typedef struct __amf_list { - uint32 size; - p_amf_node first_element; - p_amf_node last_element; -} amf_list; - -/* date type */ -typedef struct __amf_date { - number64 milliseconds; - sint16 timezone; -} amf_date; - -/* XML string type */ -typedef struct __amf_xmlstring { - uint32 size; - byte * mbstr; -} amf_xmlstring; - -/* class type */ -typedef struct __amf_class { - amf_string name; - amf_list elements; -} amf_class; - -/* structure encapsulating the various AMF objects */ -typedef struct __amf_data { - byte type; - byte error_code; - union { - number64 number_data; - uint8 boolean_data; - amf_string string_data; - amf_list list_data; - amf_date date_data; - amf_xmlstring xmlstring_data; - amf_class class_data; - }; -} amf_data; - -/* node used in lists, relies on amf_data */ -typedef struct __amf_node { - amf_data * data; - p_amf_node prev; - p_amf_node next; -} amf_node; - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Pluggable backend support */ -typedef size_t (*amf_read_proc)(void * out_buffer, size_t size, void * user_data); -typedef size_t (*amf_write_proc)(const void * in_buffer, size_t size, void * user_data); - -/* read AMF data */ -amf_data * amf_data_read(amf_read_proc read_proc, void * user_data); - -/* write AMF data */ -size_t amf_data_write(const amf_data * data, amf_write_proc write_proc, void * user_data); - -/* generic functions */ - -/* allocate an AMF data object */ -amf_data * amf_data_new(byte type); -/* load AMF data from buffer */ -amf_data * amf_data_buffer_read(byte * buffer, size_t maxbytes); -/* load AMF data from stream */ -amf_data * amf_data_file_read(FILE * stream); -/* AMF data size */ -size_t amf_data_size(const amf_data * data); -/* write encoded AMF data into a buffer */ -size_t amf_data_buffer_write(amf_data * data, byte * buffer, size_t maxbytes); -/* write encoded AMF data into a stream */ -size_t amf_data_file_write(const amf_data * data, FILE * stream); -/* get the type of AMF data */ -byte amf_data_get_type(const amf_data * data); -/* get the error code of AMF data */ -byte amf_data_get_error_code(const amf_data * data); -/* return a new copy of AMF data */ -amf_data * amf_data_clone(const amf_data * data); -/* release the memory of AMF data */ -void amf_data_free(amf_data * data); -/* dump AMF data into a stream as text */ -void amf_data_dump(FILE * stream, const amf_data * data, int indent_level); - -/* return a null AMF object with the specified error code attached to it */ -amf_data * amf_data_error(byte error_code); - -/* number functions */ -amf_data * amf_number_new(number64 value); -amf_data * amf_number_double(double value); -number64 amf_number_get_value(const amf_data * data); -void amf_number_set_value(amf_data * data, number64 value); - -/* boolean functions */ -amf_data * amf_boolean_new(uint8 value); -uint8 amf_boolean_get_value(const amf_data * data); -void amf_boolean_set_value(amf_data * data, uint8 value); - -/* string functions */ -amf_data * amf_string_new(byte * str, uint16 size); -amf_data * amf_str(const char * str); -uint16 amf_string_get_size(const amf_data * data); -byte * amf_string_get_bytes(const amf_data * data); - -/* object functions */ -amf_data * amf_object_new(void); -uint32 amf_object_size(const amf_data * data); -amf_data * amf_object_add(amf_data * data, const char * name, amf_data * element); -amf_data * amf_object_get(const amf_data * data, const char * name); -amf_data * amf_object_set(amf_data * data, const char * name, amf_data * element); -amf_data * amf_object_delete(amf_data * data, const char * name); -amf_node * amf_object_first(const amf_data * data); -amf_node * amf_object_last(const amf_data * data); -amf_node * amf_object_next(amf_node * node); -amf_node * amf_object_prev(amf_node * node); -amf_data * amf_object_get_name(amf_node * node); -amf_data * amf_object_get_data(amf_node * node); - -/* null functions */ -#define amf_null_new() amf_data_new(AMF_TYPE_NULL) - -/* undefined functions */ -#define amf_undefined_new() amf_data_new(AMF_TYPE_UNDEFINED) - -/* associative array functions */ -amf_data * amf_associative_array_new(void); -#define amf_associative_array_size(d) amf_object_size(d) -#define amf_associative_array_add(d, n, e) amf_object_add(d, n, e) -#define amf_associative_array_get(d, n) amf_object_get(d, n) -#define amf_associative_array_set(d, n, e) amf_object_set(d, n, e) -#define amf_associative_array_delete(d, n) amf_object_delete(d, n) -#define amf_associative_array_first(d) amf_object_first(d) -#define amf_associative_array_last(d) amf_object_last(d) -#define amf_associative_array_next(n) amf_object_next(n) -#define amf_associative_array_prev(n) amf_object_prev(n) -#define amf_associative_array_get_name(n) amf_object_get_name(n) -#define amf_associative_array_get_data(n) amf_object_get_data(n) - -/* array functions */ -amf_data * amf_array_new(void); -uint32 amf_array_size(const amf_data * data); -amf_data * amf_array_push(amf_data * data, amf_data * element); -amf_data * amf_array_pop(amf_data * data); -amf_node * amf_array_first(const amf_data * data); -amf_node * amf_array_last(const amf_data * data); -amf_node * amf_array_next(amf_node * node); -amf_node * amf_array_prev(amf_node * node); -amf_data * amf_array_get(amf_node * node); -amf_data * amf_array_get_at(const amf_data * data, uint32 n); -amf_data * amf_array_delete(amf_data * data, amf_node * node); -amf_data * amf_array_insert_before(amf_data * data, amf_node * node, amf_data * element); -amf_data * amf_array_insert_after(amf_data * data, amf_node * node, amf_data * element); - -/* date functions */ -amf_data * amf_date_new(number64 milliseconds, sint16 timezone); -number64 amf_date_get_milliseconds(const amf_data * data); -sint16 amf_date_get_timezone(const amf_data * data); -time_t amf_date_to_time_t(const amf_data * data); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __AMF_H__ */ diff --git a/LFLiveKit/packet/flv/avc.c b/LFLiveKit/packet/flv/avc.c deleted file mode 100755 index ee0e95fe..00000000 --- a/LFLiveKit/packet/flv/avc.c +++ /dev/null @@ -1,298 +0,0 @@ -/* - $Id: avc.c 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include - -#include "avc.h" - -/** - bit buffer handling -*/ -typedef struct __bit_buffer { - byte * start; - size_t size; - byte * current; - uint8 read_bits; -} bit_buffer; - -static void skip_bits(bit_buffer * bb, size_t nbits) { - bb->current = bb->current + ((nbits + bb->read_bits) / 8); - bb->read_bits = (uint8)((bb->read_bits + nbits) % 8); -} - -static uint8 get_bit(bit_buffer * bb) { - uint8 ret; - ret = (*(bb->current) >> (7 - bb->read_bits)) & 0x1; - if (bb->read_bits == 7) { - bb->read_bits = 0; - bb->current++; - } - else { - bb->read_bits++; - } - return ret; -} - -static uint32 get_bits(bit_buffer * bb, size_t nbits) { - uint32 i, ret; - ret = 0; - for (i = 0; i < nbits; i++) { - ret = (ret << 1) + get_bit(bb); - } - return ret; -} - -static uint32 exp_golomb_ue(bit_buffer * bb) { - uint8 bit, significant_bits; - significant_bits = 0; - bit = get_bit(bb); - while (bit == 0) { - significant_bits++; - bit = get_bit(bb); - } - return (1 << significant_bits) + get_bits(bb, significant_bits) - 1; -} - -static sint32 exp_golomb_se(bit_buffer * bb) { - sint32 ret; - ret = exp_golomb_ue(bb); - if ((ret & 0x1) == 0) { - return -(ret >> 1); - } - else { - return (ret + 1) >> 1; - } -} - -/* AVC type definitions */ - -#define AVC_SEQUENCE_HEADER 0 -#define AVC_NALU 1 -#define AVC_END_OF_SEQUENCE 2 - -typedef struct __AVCDecoderConfigurationRecord { - uint8 configurationVersion; - uint8 AVCProfileIndication; - uint8 profile_compatibility; - uint8 AVCLevelIndication; - uint8 lengthSizeMinusOne; - uint8 numOfSequenceParameterSets; -} AVCDecoderConfigurationRecord; - -int read_avc_decoder_configuration_record(flv_stream * f, AVCDecoderConfigurationRecord * adcr) { - if (flv_read_tag_body(f, &adcr->configurationVersion, 1) == 1 - && flv_read_tag_body(f, &adcr->AVCProfileIndication, 1) == 1 - && flv_read_tag_body(f, &adcr->profile_compatibility, 1) == 1 - && flv_read_tag_body(f, &adcr->AVCLevelIndication, 1) == 1 - && flv_read_tag_body(f, &adcr->lengthSizeMinusOne, 1) == 1 - && flv_read_tag_body(f, &adcr->numOfSequenceParameterSets, 1) == 1) { - return FLV_OK; - } - else { - return FLV_ERROR_EOF; - } -} - - -static void parse_scaling_list(uint32 size, bit_buffer * bb) { - uint32 last_scale, next_scale, i; - sint32 delta_scale; - last_scale = 8; - next_scale = 8; - for (i = 0; i < size; i++) { - if (next_scale != 0) { - delta_scale = exp_golomb_se(bb); - next_scale = (last_scale + delta_scale + 256) % 256; - } - if (next_scale != 0) { - last_scale = next_scale; - } - } -} - -/** - Parses a SPS NALU to retrieve video width and height -*/ -static void parse_sps(byte * sps, size_t sps_size, uint32 * width, uint32 * height) { - bit_buffer bb; - uint32 profile, pic_order_cnt_type, width_in_mbs, height_in_map_units; - uint32 i, size, left, right, top, bottom; - uint8 frame_mbs_only_flag; - - bb.start = sps; - bb.size = sps_size; - bb.current = sps; - bb.read_bits = 0; - - /* skip first byte, since we already know we're parsing a SPS */ - skip_bits(&bb, 8); - /* get profile */ - profile = get_bits(&bb, 8); - /* skip 4 bits + 4 zeroed bits + 8 bits = 32 bits = 4 bytes */ - skip_bits(&bb, 16); - - /* read sps id, first exp-golomb encoded value */ - exp_golomb_ue(&bb); - - if (profile == 100 || profile == 110 || profile == 122 || profile == 144) { - /* chroma format idx */ - if (exp_golomb_ue(&bb) == 3) { - skip_bits(&bb, 1); - } - /* bit depth luma minus8 */ - exp_golomb_ue(&bb); - /* bit depth chroma minus8 */ - exp_golomb_ue(&bb); - /* Qpprime Y Zero Transform Bypass flag */ - skip_bits(&bb, 1); - /* Seq Scaling Matrix Present Flag */ - if (get_bit(&bb)) { - for (i = 0; i < 8; i++) { - /* Seq Scaling List Present Flag */ - if (get_bit(&bb)) { - parse_scaling_list(i < 6 ? 16 : 64, &bb); - } - } - } - } - /* log2_max_frame_num_minus4 */ - exp_golomb_ue(&bb); - /* pic_order_cnt_type */ - pic_order_cnt_type = exp_golomb_ue(&bb); - if (pic_order_cnt_type == 0) { - /* log2_max_pic_order_cnt_lsb_minus4 */ - exp_golomb_ue(&bb); - } - else if (pic_order_cnt_type == 1) { - /* delta_pic_order_always_zero_flag */ - skip_bits(&bb, 1); - /* offset_for_non_ref_pic */ - exp_golomb_se(&bb); - /* offset_for_top_to_bottom_field */ - exp_golomb_se(&bb); - size = exp_golomb_ue(&bb); - for (i = 0; i < size; i++) { - /* offset_for_ref_frame */ - exp_golomb_se(&bb); - } - } - /* num_ref_frames */ - exp_golomb_ue(&bb); - /* gaps_in_frame_num_value_allowed_flag */ - skip_bits(&bb, 1); - /* pic_width_in_mbs */ - width_in_mbs = exp_golomb_ue(&bb) + 1; - /* pic_height_in_map_units */ - height_in_map_units = exp_golomb_ue(&bb) + 1; - /* frame_mbs_only_flag */ - frame_mbs_only_flag = get_bit(&bb); - if (!frame_mbs_only_flag) { - /* mb_adaptive_frame_field */ - skip_bits(&bb, 1); - } - /* direct_8x8_inference_flag */ - skip_bits(&bb, 1); - /* frame_cropping */ - left = right = top = bottom = 0; - if (get_bit(&bb)) { - left = exp_golomb_ue(&bb) * 2; - right = exp_golomb_ue(&bb) * 2; - top = exp_golomb_ue(&bb) * 2; - bottom = exp_golomb_ue(&bb) * 2; - if (!frame_mbs_only_flag) { - top *= 2; - bottom *= 2; - } - } - /* width */ - *width = width_in_mbs * 16 - (left + right); - /* height */ - *height = height_in_map_units * 16 - (top + bottom); - if (!frame_mbs_only_flag) { - *height *= 2; - } -} - -/** - Tries to read the resolution of the current video packet. - We assume to be at the first byte of the video data. -*/ -int read_avc_resolution(flv_stream * f, uint32 body_length, uint32 * width, uint32 * height) { - byte avc_packet_type; - uint24 composition_time; - AVCDecoderConfigurationRecord adcr; - uint16 sps_size; - byte * sps_buffer; - - /* make sure we have enough bytes to read in the current tag */ - if (body_length < sizeof(byte) + sizeof(uint24) + sizeof(AVCDecoderConfigurationRecord)) { - return FLV_OK; - } - - /* determine whether we're reading an AVCDecoderConfigurationRecord */ - if (flv_read_tag_body(f, &avc_packet_type, 1) < 1) { - return FLV_ERROR_EOF; - } - if (avc_packet_type != AVC_SEQUENCE_HEADER) { - return FLV_OK; - } - - /* read the composition time */ - if (flv_read_tag_body(f, &composition_time, sizeof(uint24)) < sizeof(uint24)) { - return FLV_ERROR_EOF; - } - - /* we need to read an AVCDecoderConfigurationRecord */ - if (read_avc_decoder_configuration_record(f, &adcr) == FLV_ERROR_EOF) { - return FLV_ERROR_EOF; - } - - /* number of SequenceParameterSets */ - if ((adcr.numOfSequenceParameterSets & 0x1F) == 0) { - /* no SPS, return */ - return FLV_OK; - } - - /** read the first SequenceParameterSet found */ - /* SPS size */ - if (flv_read_tag_body(f, &sps_size, sizeof(uint16)) < sizeof(uint16)) { - return FLV_ERROR_EOF; - } - sps_size = swap_uint16(sps_size); - - /* read the SPS entirely */ - sps_buffer = (byte *) malloc((size_t)sps_size); - if (sps_buffer == NULL) { - return FLV_ERROR_MEMORY; - } - if (flv_read_tag_body(f, sps_buffer, (size_t)sps_size) < (size_t)sps_size) { - free(sps_buffer); - return FLV_ERROR_EOF; - } - - /* parse SPS to determine video resolution */ - parse_sps(sps_buffer, (size_t)sps_size, width, height); - - free(sps_buffer); - return FLV_OK; -} diff --git a/LFLiveKit/packet/flv/avc.h b/LFLiveKit/packet/flv/avc.h deleted file mode 100755 index 833706f7..00000000 --- a/LFLiveKit/packet/flv/avc.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - $Id: avc.h 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef __AVC_H__ -#define __AVC_H__ - -#include - -#include "types.h" -#include "flv.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -int read_avc_resolution(flv_stream * f, uint32 body_length, uint32 * width, uint32 * height); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __AVC_H__ */ diff --git a/LFLiveKit/packet/flv/flv.c b/LFLiveKit/packet/flv/flv.c deleted file mode 100755 index 5ea4516c..00000000 --- a/LFLiveKit/packet/flv/flv.c +++ /dev/null @@ -1,498 +0,0 @@ -/* - $Id: flv.c 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include "flv.h" - -#include - -void flv_tag_set_timestamp(flv_tag * tag, uint32 timestamp) { - tag->timestamp = uint32_to_uint24_be(timestamp); - tag->timestamp_extended = (uint8)((timestamp & 0xFF000000) >> 24); -} - -/* FLV stream functions */ -flv_stream * flv_open(const char * file) { - flv_stream * stream = (flv_stream *) malloc(sizeof(flv_stream)); - if (stream == NULL) { - return NULL; - } - stream->flvin = fopen(file, "rb"); - if (stream->flvin == NULL) { - free(stream); - return NULL; - } - stream->current_tag_body_length = 0; - stream->current_tag_body_overflow = 0; - stream->current_tag_offset = 0; - stream->state = FLV_STREAM_STATE_START; - return stream; -} - -int flv_read_header(flv_stream * stream, flv_header * header) { - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin) - || stream->state != FLV_STREAM_STATE_START) { - return FLV_ERROR_EOF; - } - - if (fread(&header->signature, sizeof(header->signature), 1, stream->flvin) == 0 - || fread(&header->version, sizeof(header->version), 1, stream->flvin) == 0 - || fread(&header->flags, sizeof(header->flags), 1, stream->flvin) == 0 - || fread(&header->offset, sizeof(header->offset), 1, stream->flvin) == 0) { - return FLV_ERROR_EOF; - } - - if (header->signature[0] != 'F' - || header->signature[1] != 'L' - || header->signature[2] != 'V') { - return FLV_ERROR_NO_FLV; - } - - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - return FLV_OK; -} - -int flv_read_prev_tag_size(flv_stream * stream, uint32 * prev_tag_size) { - uint32_be val; - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin)) { - return FLV_ERROR_EOF; - } - - /* skip remaining tag body bytes */ - if (stream->state == FLV_STREAM_STATE_TAG_BODY) { - lfs_fseek(stream->flvin, stream->current_tag_offset + FLV_TAG_SIZE + uint24_be_to_uint32(stream->current_tag.body_length), SEEK_SET); - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - } - - if (stream->state == FLV_STREAM_STATE_PREV_TAG_SIZE) { - if (fread(&val, sizeof(uint32_be), 1, stream->flvin) == 0) { - return FLV_ERROR_EOF; - } - else { - stream->state = FLV_STREAM_STATE_TAG; - *prev_tag_size = swap_uint32(val); - return FLV_OK; - } - } - else { - return FLV_ERROR_EOF; - } -} - -int flv_read_tag(flv_stream * stream, flv_tag * tag) { - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin)) { - return FLV_ERROR_EOF; - } - - /* skip header */ - if (stream->state == FLV_STREAM_STATE_START) { - lfs_fseek(stream->flvin, FLV_HEADER_SIZE, SEEK_CUR); - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - } - - /* skip current tag body */ - if (stream->state == FLV_STREAM_STATE_TAG_BODY) { - lfs_fseek(stream->flvin, stream->current_tag_offset + FLV_TAG_SIZE + uint24_be_to_uint32(stream->current_tag.body_length), SEEK_SET); - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - } - - /* skip previous tag size */ - if (stream->state == FLV_STREAM_STATE_PREV_TAG_SIZE) { - lfs_fseek(stream->flvin, sizeof(uint32_be), SEEK_CUR); - stream->state = FLV_STREAM_STATE_TAG; - } - - if (stream->state == FLV_STREAM_STATE_TAG) { - stream->current_tag_offset = lfs_ftell(stream->flvin); - - if (fread(&tag->type, sizeof(tag->type), 1, stream->flvin) == 0 - || fread(&tag->body_length, sizeof(tag->body_length), 1, stream->flvin) == 0 - || fread(&tag->timestamp, sizeof(tag->timestamp), 1, stream->flvin) == 0 - || fread(&tag->timestamp_extended, sizeof(tag->timestamp_extended), 1, stream->flvin) == 0 - || fread(&tag->stream_id, sizeof(tag->stream_id), 1, stream->flvin) == 0) { - return FLV_ERROR_EOF; - } - else { - memcpy(&stream->current_tag, tag, sizeof(flv_tag)); - stream->current_tag_body_length = uint24_be_to_uint32(tag->body_length); - stream->current_tag_body_overflow = 0; - stream->state = FLV_STREAM_STATE_TAG_BODY; - return FLV_OK; - } - } - else { - return FLV_ERROR_EOF; - } -} - -int flv_read_audio_tag(flv_stream * stream, flv_audio_tag * tag) { - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin) - || stream->state != FLV_STREAM_STATE_TAG_BODY) { - return FLV_ERROR_EOF; - } - - if (stream->current_tag_body_length == 0) { - return FLV_ERROR_EMPTY_TAG; - } - - if (fread(tag, sizeof(flv_audio_tag), 1, stream->flvin) == 0) { - return FLV_ERROR_EOF; - } - - if (stream->current_tag_body_length >= sizeof(flv_audio_tag)) { - stream->current_tag_body_length -= sizeof(flv_audio_tag); - } - else { - stream->current_tag_body_overflow = sizeof(flv_audio_tag) - stream->current_tag_body_length; - stream->current_tag_body_length = 0; - } - - if (stream->current_tag_body_length == 0) { - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - if (stream->current_tag_body_overflow > 0) { - lfs_fseek(stream->flvin, -(file_offset_t)stream->current_tag_body_overflow, SEEK_CUR); - } - } - - return FLV_OK; -} - -int flv_read_video_tag(flv_stream * stream, flv_video_tag * tag) { - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin) - || stream->state != FLV_STREAM_STATE_TAG_BODY) { - return FLV_ERROR_EOF; - } - - if (stream->current_tag_body_length == 0) { - return FLV_ERROR_EMPTY_TAG; - } - - if (fread(tag, sizeof(flv_video_tag), 1, stream->flvin) == 0) { - return FLV_ERROR_EOF; - } - - if (stream->current_tag_body_length >= sizeof(flv_video_tag)) { - stream->current_tag_body_length -= sizeof(flv_video_tag); - } - else { - stream->current_tag_body_overflow = sizeof(flv_video_tag) - stream->current_tag_body_length; - stream->current_tag_body_length = 0; - } - - if (stream->current_tag_body_length == 0) { - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - if (stream->current_tag_body_overflow > 0) { - lfs_fseek(stream->flvin, -(file_offset_t)stream->current_tag_body_overflow, SEEK_CUR); - } - } - - return FLV_OK; -} - -int flv_read_metadata(flv_stream * stream, amf_data ** name, amf_data ** data) { - amf_data * d; - byte error_code; - size_t data_size; - - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin) - || stream->state != FLV_STREAM_STATE_TAG_BODY) { - return FLV_ERROR_EOF; - } - - if (stream->current_tag_body_length == 0) { - return FLV_ERROR_EMPTY_TAG; - } - - /* read metadata name */ - d = amf_data_file_read(stream->flvin); - *name = d; - error_code = amf_data_get_error_code(d); - if (error_code == AMF_ERROR_EOF) { - return FLV_ERROR_EOF; - } - else if (error_code != AMF_ERROR_OK) { - return FLV_ERROR_INVALID_METADATA_NAME; - } - - /* if only name can be read, metadata are invalid */ - data_size = amf_data_size(d); - if (stream->current_tag_body_length > data_size) { - stream->current_tag_body_length -= (uint32)data_size; - } - else { - stream->current_tag_body_length = 0; - stream->current_tag_body_overflow = (uint32)data_size - stream->current_tag_body_length; - - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - if (stream->current_tag_body_overflow > 0) { - lfs_fseek(stream->flvin, -(file_offset_t)stream->current_tag_body_overflow, SEEK_CUR); - } - - return FLV_ERROR_INVALID_METADATA; - } - - /* read metadata contents */ - d = amf_data_file_read(stream->flvin); - *data = d; - error_code = amf_data_get_error_code(d); - if (error_code == AMF_ERROR_EOF) { - return FLV_ERROR_EOF; - } - if (error_code != AMF_ERROR_OK) { - return FLV_ERROR_INVALID_METADATA; - } - - data_size = amf_data_size(d); - if (stream->current_tag_body_length >= data_size) { - stream->current_tag_body_length -= (uint32)data_size; - } - else { - stream->current_tag_body_overflow = (uint32)data_size - stream->current_tag_body_length; - stream->current_tag_body_length = 0; - } - - if (stream->current_tag_body_length == 0) { - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - if (stream->current_tag_body_overflow > 0) { - lfs_fseek(stream->flvin, -(file_offset_t)stream->current_tag_body_overflow, SEEK_CUR); - } - } - - return FLV_OK; -} - -size_t flv_read_tag_body(flv_stream * stream, void * buffer, size_t buffer_size) { - size_t bytes_number; - - if (stream == NULL - || stream->flvin == NULL - || feof(stream->flvin) - || stream->state != FLV_STREAM_STATE_TAG_BODY) { - return 0; - } - - bytes_number = (buffer_size > stream->current_tag_body_length) ? stream->current_tag_body_length : buffer_size; - bytes_number = fread(buffer, sizeof(byte), bytes_number, stream->flvin); - - stream->current_tag_body_length -= (uint32)bytes_number; - - if (stream->current_tag_body_length == 0) { - stream->state = FLV_STREAM_STATE_PREV_TAG_SIZE; - } - - return bytes_number; -} - -file_offset_t flv_get_current_tag_offset(flv_stream * stream) { - return (stream != NULL) ? stream->current_tag_offset : 0; -} - -file_offset_t flv_get_offset(flv_stream * stream) { - return (stream != NULL) ? lfs_ftell(stream->flvin) : 0; -} - -void flv_reset(flv_stream * stream) { - /* go back to beginning of file */ - if (stream != NULL && stream->flvin != NULL) { - stream->current_tag_body_length = 0; - stream->current_tag_offset = 0; - stream->state = FLV_STREAM_STATE_START; - - lfs_fseek(stream->flvin, 0, SEEK_SET); - } -} - -void flv_close(flv_stream * stream) { - if (stream != NULL) { - if (stream->flvin != NULL) { - fclose(stream->flvin); - } - free(stream); - } -} - -/* FLV stdio writing helper functions */ -size_t flv_write_header(FILE * out, const flv_header * header) { - if (fwrite(&header->signature, sizeof(header->signature), 1, out) == 0) - return 0; - if (fwrite(&header->version, sizeof(header->version), 1, out) == 0) - return 0; - if (fwrite(&header->flags, sizeof(header->flags), 1, out) == 0) - return 0; - if (fwrite(&header->offset, sizeof(header->offset), 1, out) == 0) - return 0; - return 1; -} - -size_t flv_write_tag(FILE * out, const flv_tag * tag) { - if (fwrite(&tag->type, sizeof(tag->type), 1, out) == 0) - return 0; - - if (fwrite(&tag->body_length, sizeof(tag->body_length), 1, out) == 0) - return 0; - - if (fwrite(&tag->timestamp, sizeof(tag->timestamp), 1, out) == 0) - return 0; - if (fwrite(&tag->timestamp_extended, sizeof(tag->timestamp_extended), 1, out) == 0) - return 0; - if (fwrite(&tag->stream_id, sizeof(tag->stream_id), 1, out) == 0) - return 0; - return 1; -} - -/* FLV event based parser */ -int flv_parse(const char * file, flv_parser * parser) { - flv_header header; - flv_tag tag; - flv_audio_tag at; - flv_video_tag vt; - amf_data * name, * data; - uint32 prev_tag_size; - int retval; - - if (parser == NULL) { - return FLV_ERROR_EOF; - } - - parser->stream = flv_open(file); - if (parser->stream == NULL) { - return FLV_ERROR_OPEN_READ; - } - - retval = flv_read_header(parser->stream, &header); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - - if (parser->on_header != NULL) { - retval = parser->on_header(&header, parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - - while (flv_read_tag(parser->stream, &tag) == FLV_OK) { - if (parser->on_tag != NULL) { - retval = parser->on_tag(&tag, parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - - if (tag.type == FLV_TAG_TYPE_AUDIO) { - retval = flv_read_audio_tag(parser->stream, &at); - if (retval == FLV_ERROR_EOF) { - flv_close(parser->stream); - return retval; - } - if (retval != FLV_ERROR_EMPTY_TAG && parser->on_audio_tag != NULL) { - retval = parser->on_audio_tag(&tag, at, parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - } - else if (tag.type == FLV_TAG_TYPE_VIDEO) { - retval = flv_read_video_tag(parser->stream, &vt); - if (retval == FLV_ERROR_EOF) { - flv_close(parser->stream); - return retval; - } - if (retval != FLV_ERROR_EMPTY_TAG && parser->on_video_tag != NULL) { - retval = parser->on_video_tag(&tag, vt, parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - } - else if (tag.type == FLV_TAG_TYPE_META) { - name = data = NULL; - retval = flv_read_metadata(parser->stream, &name, &data); - if (retval == FLV_ERROR_EOF) { - amf_data_free(name); - amf_data_free(data); - flv_close(parser->stream); - return retval; - } - else if (retval == FLV_OK && parser->on_metadata_tag != NULL) { - retval = parser->on_metadata_tag(&tag, name, data, parser); - if (retval != FLV_OK) { - amf_data_free(name); - amf_data_free(data); - flv_close(parser->stream); - return retval; - } - } - amf_data_free(name); - amf_data_free(data); - } - else { - if (parser->on_unknown_tag != NULL) { - retval = parser->on_unknown_tag(&tag, parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - } - retval = flv_read_prev_tag_size(parser->stream, &prev_tag_size); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - if (parser->on_prev_tag_size != NULL) { - retval = parser->on_prev_tag_size(prev_tag_size, parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - } - - if (parser->on_stream_end != NULL) { - retval = parser->on_stream_end(parser); - if (retval != FLV_OK) { - flv_close(parser->stream); - return retval; - } - } - - flv_close(parser->stream); - return FLV_OK; -} diff --git a/LFLiveKit/packet/flv/flv.h b/LFLiveKit/packet/flv/flv.h deleted file mode 100755 index 1f9b5232..00000000 --- a/LFLiveKit/packet/flv/flv.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - $Id: flv.h 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef __FLV_H__ -#define __FLV_H__ - -/* Configuration of the sources */ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "types.h" -#include "amf.h" - -/* error statuses */ -#define FLV_OK 0 -#define FLV_ERROR_OPEN_READ 1 -#define FLV_ERROR_NO_FLV 2 -#define FLV_ERROR_EOF 3 -#define FLV_ERROR_MEMORY 4 -#define FLV_ERROR_EMPTY_TAG 5 -#define FLV_ERROR_INVALID_METADATA_NAME 6 -#define FLV_ERROR_INVALID_METADATA 7 - -/* flv file format structure and definitions */ - -/* FLV file header */ -#define FLV_SIGNATURE "FLV" -#define FLV_VERSION ((uint8)0x01) - -#define FLV_FLAG_VIDEO ((uint8)0x01) -#define FLV_FLAG_AUDIO ((uint8)0x04) - -typedef struct __flv_header { - byte signature[3]; /* always "FLV" */ - uint8 version; /* should be 1 */ - uint8_bitmask flags; - uint32_be offset; /* always 9 */ -} flv_header; - -#define FLV_HEADER_SIZE 9 - -#define flv_header_has_video(header) ((header).flags & FLV_FLAG_VIDEO) -#define flv_header_has_audio(header) ((header).flags & FLV_FLAG_AUDIO) -#define flv_header_get_offset(header) (swap_uint32((header).offset)) - -/* FLV tag */ -#define FLV_TAG_TYPE_AUDIO ((uint8)0x08) -#define FLV_TAG_TYPE_VIDEO ((uint8)0x09) -#define FLV_TAG_TYPE_META ((uint8)0x12) - -typedef struct __flv_tag { - uint8 type; - uint24_be body_length; /* in bytes, total tag size minus 11 */ - uint24_be timestamp; /* milli-seconds */ - uint8 timestamp_extended; /* timestamp extension */ - uint24_be stream_id; /* reserved, must be "\0\0\0" */ - /* body comes next */ -} flv_tag; - -#define FLV_TAG_SIZE 11 - -#define flv_tag_get_body_length(tag) (uint24_be_to_uint32((tag).body_length)) -#define flv_tag_get_timestamp(tag) \ - (uint24_be_to_uint32((tag).timestamp) + ((tag).timestamp_extended << 24)) -#define flv_tag_get_stream_id(tag) (uint24_be_to_uint32((tag).stream_id)) - -/* audio tag */ -#define FLV_AUDIO_TAG_SOUND_TYPE_MONO 0 -#define FLV_AUDIO_TAG_SOUND_TYPE_STEREO 1 - -#define FLV_AUDIO_TAG_SOUND_SIZE_8 0 -#define FLV_AUDIO_TAG_SOUND_SIZE_16 1 - -#define FLV_AUDIO_TAG_SOUND_RATE_5_5 0 -#define FLV_AUDIO_TAG_SOUND_RATE_11 1 -#define FLV_AUDIO_TAG_SOUND_RATE_22 2 -#define FLV_AUDIO_TAG_SOUND_RATE_44 3 - -#define FLV_AUDIO_TAG_SOUND_FORMAT_LINEAR_PCM 0 -#define FLV_AUDIO_TAG_SOUND_FORMAT_ADPCM 1 -#define FLV_AUDIO_TAG_SOUND_FORMAT_MP3 2 -#define FLV_AUDIO_TAG_SOUND_FORMAT_LINEAR_PCM_LE 3 -#define FLV_AUDIO_TAG_SOUND_FORMAT_NELLYMOSER_16_MONO 4 -#define FLV_AUDIO_TAG_SOUND_FORMAT_NELLYMOSER_8_MONO 5 -#define FLV_AUDIO_TAG_SOUND_FORMAT_NELLYMOSER 6 -#define FLV_AUDIO_TAG_SOUND_FORMAT_G711_A 7 -#define FLV_AUDIO_TAG_SOUND_FORMAT_G711_MU 8 -#define FLV_AUDIO_TAG_SOUND_FORMAT_RESERVED 9 -#define FLV_AUDIO_TAG_SOUND_FORMAT_AAC 10 -#define FLV_AUDIO_TAG_SOUND_FORMAT_SPEEX 11 -#define FLV_AUDIO_TAG_SOUND_FORMAT_MP3_8 14 -#define FLV_AUDIO_TAG_SOUND_FORMAT_DEVICE_SPECIFIC 15 - -typedef byte flv_audio_tag; - -#define flv_audio_tag_sound_type(tag) (((tag) & 0x01) >> 0) -#define flv_audio_tag_sound_size(tag) (((tag) & 0x02) >> 1) -#define flv_audio_tag_sound_rate(tag) (((tag) & 0x0C) >> 2) -#define flv_audio_tag_sound_format(tag) (((tag) & 0xF0) >> 4) - -/* video tag */ -#define FLV_VIDEO_TAG_CODEC_JPEG 1 -#define FLV_VIDEO_TAG_CODEC_SORENSEN_H263 2 -#define FLV_VIDEO_TAG_CODEC_SCREEN_VIDEO 3 -#define FLV_VIDEO_TAG_CODEC_ON2_VP6 4 -#define FLV_VIDEO_TAG_CODEC_ON2_VP6_ALPHA 5 -#define FLV_VIDEO_TAG_CODEC_SCREEN_VIDEO_V2 6 -#define FLV_VIDEO_TAG_CODEC_AVC 7 - -#define FLV_VIDEO_TAG_FRAME_TYPE_KEYFRAME 1 -#define FLV_VIDEO_TAG_FRAME_TYPE_INTERFRAME 2 -#define FLV_VIDEO_TAG_FRAME_TYPE_DISPOSABLE_INTERFRAME 3 -#define FLV_VIDEO_TAG_FRAME_TYPE_GENERATED_KEYFRAME 4 -#define FLV_VIDEO_TAG_FRAME_TYPE_COMMAND_FRAME 5 - -typedef byte flv_video_tag; - -#define flv_video_tag_codec_id(tag) (((tag) & 0x0F) >> 0) -#define flv_video_tag_frame_type(tag) (((tag) & 0xF0) >> 4) - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* FLV helper functions */ -void flv_tag_set_timestamp(flv_tag * tag, uint32 timestamp); - -/* FLV stream */ -#define FLV_STREAM_STATE_START 0 -#define FLV_STREAM_STATE_TAG 1 -#define FLV_STREAM_STATE_TAG_BODY 2 -#define FLV_STREAM_STATE_PREV_TAG_SIZE 3 - -typedef struct __flv_stream { - FILE * flvin; - uint8 state; - flv_tag current_tag; - file_offset_t current_tag_offset; - uint32 current_tag_body_length; - uint32 current_tag_body_overflow; -} flv_stream; - -/* FLV stream functions */ -flv_stream * flv_open(const char * file); -int flv_read_header(flv_stream * stream, flv_header * header); -int flv_read_prev_tag_size(flv_stream * stream, uint32 * prev_tag_size); -int flv_read_tag(flv_stream * stream, flv_tag * tag); -int flv_read_audio_tag(flv_stream * stream, flv_audio_tag * tag); -int flv_read_video_tag(flv_stream * stream, flv_video_tag * tag); -int flv_read_metadata(flv_stream * stream, amf_data ** name, amf_data ** data); -size_t flv_read_tag_body(flv_stream * stream, void * buffer, size_t buffer_size); -file_offset_t flv_get_current_tag_offset(flv_stream * stream); -file_offset_t flv_get_offset(flv_stream * stream); -void flv_reset(flv_stream * stream); -void flv_close(flv_stream * stream); - -/* FLV stdio writing helper functions */ -size_t flv_write_header(FILE * out, const flv_header * header); -size_t flv_write_tag(FILE * out, const flv_tag * tag); - -/* FLV event based parser */ -typedef struct __flv_parser { - flv_stream * stream; - void * user_data; - int (* on_header)(flv_header * header, struct __flv_parser * parser); - int (* on_tag)(flv_tag * tag, struct __flv_parser * parser); - int (* on_metadata_tag)(flv_tag * tag, amf_data * name, amf_data * data, struct __flv_parser * parser); - int (* on_audio_tag)(flv_tag * tag, flv_audio_tag audio_tag, struct __flv_parser * parser); - int (* on_video_tag)(flv_tag * tag, flv_video_tag audio_tag, struct __flv_parser * parser); - int (* on_unknown_tag)(flv_tag * tag, struct __flv_parser * parser); - int (* on_prev_tag_size)(uint32 size, struct __flv_parser * parser); - int (* on_stream_end)(struct __flv_parser * parser); -} flv_parser; - -int flv_parse(const char * file, flv_parser * parser); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __FLV_H__ */ diff --git a/LFLiveKit/packet/flv/info.c b/LFLiveKit/packet/flv/info.c deleted file mode 100755 index e8f099df..00000000 --- a/LFLiveKit/packet/flv/info.c +++ /dev/null @@ -1,626 +0,0 @@ -/* - $Id: info.c 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include "info.h" -#include "avc.h" - -#include - -#pragma warning(disable:4244) -/* - compute Sorensen H.263 video size -*/ -static int compute_h263_size(flv_stream * flv_in, flv_info * info, uint32 body_length) { - byte header[9]; - uint24_be psc_be; - uint32 psc; - - /* make sure we have enough bytes to read in the current tag */ - if (body_length >= 9) { - if (flv_read_tag_body(flv_in, header, 9) < 9) { - return FLV_ERROR_EOF; - } - psc_be.b[0] = header[0]; - psc_be.b[1] = header[1]; - psc_be.b[2] = header[2]; - psc = uint24_be_to_uint32(psc_be) >> 7; - if (psc == 1) { - uint32 psize = ((header[3] & 0x03) << 1) + ((header[4] >> 7) & 0x01); - switch (psize) { - case 0: - info->video_width = ((header[4] & 0x7f) << 1) + ((header[5] >> 7) & 0x01); - info->video_height = ((header[5] & 0x7f) << 1) + ((header[6] >> 7) & 0x01); - break; - case 1: - info->video_width = ((header[4] & 0x7f) << 9) + (header[5] << 1) + ((header[6] >> 7) & 0x01); - info->video_height = ((header[6] & 0x7f) << 9) + (header[7] << 1) + ((header[8] >> 7) & 0x01); - break; - case 2: - info->video_width = 352; - info->video_height = 288; - break; - case 3: - info->video_width = 176; - info->video_height = 144; - break; - case 4: - info->video_width = 128; - info->video_height = 96; - break; - case 5: - info->video_width = 320; - info->video_height = 240; - break; - case 6: - info->video_width = 160; - info->video_height = 120; - break; - default: - break; - } - } - } - return FLV_OK; -} - -/* - compute Screen video size -*/ -static int compute_screen_size(flv_stream * flv_in, flv_info * info, uint32 body_length) { - byte header[4]; - - /* make sure we have enough bytes to read in the current tag */ - if (body_length >= 4) { - if (flv_read_tag_body(flv_in, header, 4) < 4) { - return FLV_ERROR_EOF; - } - - info->video_width = ((header[0] & 0x0f) << 8) + header[1]; - info->video_height = ((header[2] & 0x0f) << 8) + header[3]; - } - return FLV_OK; -} - -/* - compute On2 VP6 video size -*/ -static int compute_vp6_size(flv_stream * flv_in, flv_info * info, uint32 body_length) { - byte header[7], offset; - - /* make sure we have enough bytes to read in the current tag */ - if (body_length >= 7) { - if (flv_read_tag_body(flv_in, header, 7) < 7) { - return FLV_ERROR_EOF; - } - - /* two bytes offset if VP6 0 */ - offset = (header[1] & 0x01 || !(header[2] & 0x06)) << 1; - info->video_width = (header[4 + offset] << 4) - (header[0] >> 4); - info->video_height = (header[3 + offset] << 4) - (header[0] & 0x0f); - - } - return FLV_OK; -} - -/* - compute On2 VP6 with Alpha video size -*/ -static int compute_vp6_alpha_size(flv_stream * flv_in, flv_info * info, uint32 body_length) { - byte header[10], offset; - - /* make sure we have enough bytes to read in the current tag */ - if (body_length >= 10) { - if (flv_read_tag_body(flv_in, header, 10) < 10) { - return FLV_ERROR_EOF; - } - - /* two bytes offset if VP6 0 */ - offset = (header[4] & 0x01 || !(header[5] & 0x06)) << 1; - info->video_width = (header[7 + offset] << 4) - (header[0] >> 4); - info->video_height = (header[6 + offset] << 4) - (header[0] & 0x0f); - } - return FLV_OK; -} - -/* - compute AVC (H.264) video size (experimental) -*/ -static int compute_avc_size(flv_stream * flv_in, flv_info * info, uint32 body_length) { - return read_avc_resolution(flv_in, body_length, &(info->video_width), &(info->video_height)); -} - -/* - compute video width and height from the first video frame -*/ -static int compute_video_size(flv_stream * flv_in, flv_info * info, uint32 body_length) { - switch (info->video_codec) { - case FLV_VIDEO_TAG_CODEC_SORENSEN_H263: - return compute_h263_size(flv_in, info, body_length); - case FLV_VIDEO_TAG_CODEC_SCREEN_VIDEO: - case FLV_VIDEO_TAG_CODEC_SCREEN_VIDEO_V2: - return compute_screen_size(flv_in, info, body_length); - case FLV_VIDEO_TAG_CODEC_ON2_VP6: - return compute_vp6_size(flv_in, info, body_length); - case FLV_VIDEO_TAG_CODEC_ON2_VP6_ALPHA: - return compute_vp6_alpha_size(flv_in, info, body_length); - case FLV_VIDEO_TAG_CODEC_AVC: - return compute_avc_size(flv_in, info, body_length); - default: - return FLV_OK; - } -} - -/* - read the flv file thoroughly to get all necessary information. - - we need to check : - - timestamp of first audio for audio delay - - whether we have audio and video - - first frames codecs (audio, video) - - total audio and video data sizes - - keyframe offsets and timestamps - - whether the last video frame is a keyframe - - last keyframe timestamp - - onMetaData tag total size - - total tags size - - first tag after onMetaData offset - - last timestamp - - real video data size, number of frames, duration to compute framerate and video data rate - - real audio data size, duration to compute audio data rate - - video headers to find width and height. (depends on the encoding) -*/ -int get_flv_info(flv_stream * flv_in, flv_info * info) { - uint32 prev_timestamp_video; - uint32 prev_timestamp_audio; - uint32 prev_timestamp_meta; - uint8 timestamp_extended_video; - uint8 timestamp_extended_audio; - uint8 timestamp_extended_meta; - uint8 have_video_size; - uint8 have_first_timestamp; - uint32 tag_number; - int result; - flv_tag ft; - - info->have_video = 0; - info->have_audio = 0; - info->video_width = 0; - info->video_height = 0; - info->video_codec = 0; - info->video_frames_number = 0; - info->audio_codec = 0; - info->audio_size = 0; - info->audio_rate = 0; - info->audio_stereo = 0; - info->video_data_size = 0; - info->audio_data_size = 0; - info->meta_data_size = 0; - info->real_video_data_size = 0; - info->real_audio_data_size = 0; - info->video_first_timestamp = 0; - info->audio_first_timestamp = 0; - info->first_timestamp = 0; - info->can_seek_to_end = 0; - info->have_keyframes = 0; - info->last_keyframe_timestamp = 0; - info->on_metadata_size = 0; - info->on_metadata_offset = 0; - info->biggest_tag_body_size = 0; - info->last_timestamp = 0; - info->video_frame_duration = 0; - info->audio_frame_duration = 0; - info->total_prev_tags_size = 0; - info->have_on_last_second = 0; - info->original_on_metadata = NULL; - info->keyframes = NULL; - info->times = NULL; - info->filepositions = NULL; - - /* - read FLV header - */ - - if (flv_read_header(flv_in, &(info->header)) != FLV_OK) { - return FLV_ERROR_NO_FLV; - } - - info->keyframes = amf_object_new(); - info->times = amf_array_new(); - info->filepositions = amf_array_new(); - amf_object_add(info->keyframes, "times", info->times); - amf_object_add(info->keyframes, "filepositions", info->filepositions); - - /* first empty previous tag size */ - info->total_prev_tags_size = sizeof(uint32_be); - - /* first timestamp */ - have_first_timestamp = 0; - - /* extended timestamp initialization */ - prev_timestamp_video = 0; - prev_timestamp_audio = 0; - prev_timestamp_meta = 0; - timestamp_extended_video = 0; - timestamp_extended_audio = 0; - timestamp_extended_meta = 0; - tag_number = 0; - have_video_size = 0; - - while (flv_read_tag(flv_in, &ft) == FLV_OK) { - file_offset_t offset; - uint32 body_length; - uint32 timestamp; - - offset = flv_get_current_tag_offset(flv_in); - body_length = flv_tag_get_body_length(ft); - timestamp = flv_tag_get_timestamp(ft); - - /* extended timestamp fixing */ - if (ft.type == FLV_TAG_TYPE_META) { - if (timestamp < prev_timestamp_meta - && prev_timestamp_meta - timestamp > 0xF00000) { - ++timestamp_extended_meta; - } - prev_timestamp_meta = timestamp; - if (timestamp_extended_meta > 0) { - timestamp += timestamp_extended_meta << 24; - } - } - else if (ft.type == FLV_TAG_TYPE_AUDIO) { - if (timestamp < prev_timestamp_audio - && prev_timestamp_audio - timestamp > 0xF00000) { - ++timestamp_extended_audio; - } - prev_timestamp_audio = timestamp; - if (timestamp_extended_audio > 0) { - timestamp += timestamp_extended_audio << 24; - } - } - else if (ft.type == FLV_TAG_TYPE_VIDEO) { - if (timestamp < prev_timestamp_video - && prev_timestamp_video - timestamp > 0xF00000) { - ++timestamp_extended_video; - } - prev_timestamp_video = timestamp; - if (timestamp_extended_video > 0) { - timestamp += timestamp_extended_video << 24; - } - } - - /* non-zero starting timestamp handling */ - if (!have_first_timestamp && ft.type != FLV_TAG_TYPE_META) { - info->first_timestamp = timestamp; - have_first_timestamp = 1; - } - if (timestamp > 0) { - timestamp -= info->first_timestamp; - } - - /* update the info struct only if the tag is valid */ - if (ft.type == FLV_TAG_TYPE_META - || ft.type == FLV_TAG_TYPE_AUDIO - || ft.type == FLV_TAG_TYPE_VIDEO) { - if (info->biggest_tag_body_size < body_length) { - info->biggest_tag_body_size = body_length; - } - info->last_timestamp = timestamp; - } - - if (ft.type == FLV_TAG_TYPE_META) { - amf_data *tag_name, *data; - int retval; - tag_name = data = NULL; - - if (body_length == 0) { - } else { - retval = flv_read_metadata(flv_in, &tag_name, &data); - if (retval == FLV_ERROR_EOF) { - amf_data_free(tag_name); - amf_data_free(data); - return FLV_ERROR_EOF; - } else if (retval == FLV_ERROR_INVALID_METADATA_NAME) { - } else if (retval == FLV_ERROR_INVALID_METADATA) { - } - } - - /* check metadata name */ - if (body_length > 0 && amf_data_get_type(tag_name) == AMF_TYPE_STRING) { - char * name = (char *)amf_string_get_bytes(tag_name); - size_t len = (size_t)amf_string_get_size(tag_name); - - /* get info only on the first onMetaData we read */ - if (info->on_metadata_size == 0 && !strncmp(name, "onMetaData", len)) { - info->on_metadata_size = body_length + FLV_TAG_SIZE + sizeof(uint32_be); - info->on_metadata_offset = offset; - - amf_data_free(data); - } - else { - if (!strncmp(name, "onLastSecond", len)) { - info->have_on_last_second = 1; - } - info->meta_data_size += (body_length + FLV_TAG_SIZE); - info->total_prev_tags_size += sizeof(uint32_be); - if (data != NULL) { - amf_data_free(data); - } - } - } - /* just ignore metadata that don't have a proper name */ - else { - info->meta_data_size += (body_length + FLV_TAG_SIZE); - info->total_prev_tags_size += sizeof(uint32_be); - amf_data_free(data); - } - amf_data_free(tag_name); - } - else if (ft.type == FLV_TAG_TYPE_VIDEO) { - flv_video_tag vt; - - /* do not take video frame into account if body length is zero and we ignore errors */ - if (body_length == 0) { - } else { - if (flv_read_video_tag(flv_in, &vt) != FLV_OK) { - return FLV_ERROR_EOF; - } - - if (info->have_video != 1) { - info->have_video = 1; - info->video_codec = flv_video_tag_codec_id(vt); - info->video_first_timestamp = timestamp; - } - - if (have_video_size != 1 - && flv_video_tag_frame_type(vt) == FLV_VIDEO_TAG_FRAME_TYPE_KEYFRAME) { - /* read first video frame to get critical info */ - result = compute_video_size(flv_in, info, body_length - sizeof(flv_video_tag)); - if (result != FLV_OK) { - return result; - } - - if (info->video_width > 0 && info->video_height > 0) { - have_video_size = 1; - } - /* if we cannot fetch that information from the first tag, we'll try - for each following video key frame */ - } - - /* add keyframe to list */ - if (flv_video_tag_frame_type(vt) == FLV_VIDEO_TAG_FRAME_TYPE_KEYFRAME) { - /* do not add keyframe if the previous one has the same timestamp */ - if (!info->have_keyframes - || (info->have_keyframes && info->last_keyframe_timestamp != timestamp)) { - info->have_keyframes = 1; - info->last_keyframe_timestamp = timestamp; - amf_array_push(info->times, amf_number_new(timestamp / 1000.0)); - amf_array_push(info->filepositions, amf_number_new((number64)offset)); - } - /* is last frame a key frame ? if so, we can seek to end */ - info->can_seek_to_end = 1; - } - else { - info->can_seek_to_end = 0; - } - - info->real_video_data_size += (body_length - 1); - } - - info->video_frames_number++; - - /* - we assume all video frames have the same size as the first one: - probably bogus but only used in case there's no audio in the file - */ - if (info->video_frame_duration == 0) { - info->video_frame_duration = timestamp - info->video_first_timestamp; - } - - info->video_data_size += (body_length + FLV_TAG_SIZE); - info->total_prev_tags_size += sizeof(uint32_be); - } - else if (ft.type == FLV_TAG_TYPE_AUDIO) { - flv_audio_tag at; - - /* do not take audio frame into account if body length is zero and we ignore errors */ - if (body_length == 0) { - } else { - if (flv_read_audio_tag(flv_in, &at) != FLV_OK) { - return FLV_ERROR_EOF; - } - - if (info->have_audio != 1) { - info->have_audio = 1; - info->audio_codec = flv_audio_tag_sound_format(at); - info->audio_rate = flv_audio_tag_sound_rate(at); - info->audio_size = flv_audio_tag_sound_size(at); - info->audio_stereo = flv_audio_tag_sound_type(at); - info->audio_first_timestamp = timestamp; - } - /* we assume all audio frames have the same size as the first one */ - if (info->audio_frame_duration == 0) { - info->audio_frame_duration = timestamp - info->audio_first_timestamp; - } - - info->real_audio_data_size += (body_length - 1); - } - - info->audio_data_size += (body_length + FLV_TAG_SIZE); - info->total_prev_tags_size += sizeof(uint32_be); - } - else { - return 7; - } - ++tag_number; - } - - return FLV_OK; -} - -/* - compute the metadata -*/ -void compute_metadata(flv_info * info, flv_metadata * meta) { - uint32 new_on_metadata_size, on_last_second_size; - file_offset_t data_size, total_filesize; - number64 duration, video_data_rate, framerate; - amf_data * amf_total_filesize; - amf_data * amf_total_data_size; - amf_node * node_t; - amf_node * node_f; - - meta->on_last_second_name = amf_str("onLastSecond"); - meta->on_last_second = amf_associative_array_new(); - meta->on_metadata_name = amf_str("onMetaData"); - meta->on_metadata = amf_associative_array_new(); - - amf_associative_array_add(meta->on_metadata, "hasMetadata", amf_boolean_new(1)); - amf_associative_array_add(meta->on_metadata, "hasVideo", amf_boolean_new(info->have_video)); - amf_associative_array_add(meta->on_metadata, "hasAudio", amf_boolean_new(info->have_audio)); - - if (info->have_audio) { - duration = (info->last_timestamp - info->first_timestamp + info->audio_frame_duration) / 1000.0; - } - else { - duration = (info->last_timestamp - info->first_timestamp + info->video_frame_duration) / 1000.0; - } - amf_associative_array_add(meta->on_metadata, "duration", amf_number_new(duration)); - - amf_associative_array_add(meta->on_metadata, "lasttimestamp", amf_number_new(info->last_timestamp / 1000.0)); - amf_associative_array_add(meta->on_metadata, "lastkeyframetimestamp", amf_number_new(info->last_keyframe_timestamp / 1000.0)); - - if (info->video_width > 0) - amf_associative_array_add(meta->on_metadata, "width", amf_number_new(info->video_width)); - if (info->video_height > 0) - amf_associative_array_add(meta->on_metadata, "height", amf_number_new(info->video_height)); - - video_data_rate = ((info->real_video_data_size / 1024.0) * 8.0) / duration; - amf_associative_array_add(meta->on_metadata, "videodatarate", amf_number_new(video_data_rate)); - - framerate = info->video_frames_number / duration; - amf_associative_array_add(meta->on_metadata, "framerate", amf_number_new(framerate)); - - if (info->have_audio) { - number64 audio_khz, audio_sample_rate; - number64 audio_data_rate = ((info->real_audio_data_size / 1024.0) * 8.0) / duration; - amf_associative_array_add(meta->on_metadata, "audiodatarate", amf_number_new(audio_data_rate)); - - audio_khz = 0.0; - switch (info->audio_rate) { - case FLV_AUDIO_TAG_SOUND_RATE_5_5: audio_khz = 5500.0; break; - case FLV_AUDIO_TAG_SOUND_RATE_11: audio_khz = 11000.0; break; - case FLV_AUDIO_TAG_SOUND_RATE_22: audio_khz = 22050.0; break; - case FLV_AUDIO_TAG_SOUND_RATE_44: audio_khz = 44100.0; break; - } - amf_associative_array_add(meta->on_metadata, "audiosamplerate", amf_number_new(audio_khz)); - audio_sample_rate = 0.0; - switch (info->audio_size) { - case FLV_AUDIO_TAG_SOUND_SIZE_8: audio_sample_rate = 8.0; break; - case FLV_AUDIO_TAG_SOUND_SIZE_16: audio_sample_rate = 16.0; break; - } - amf_associative_array_add(meta->on_metadata, "audiosamplesize", amf_number_new(audio_sample_rate)); - amf_associative_array_add(meta->on_metadata, "stereo", amf_boolean_new(info->audio_stereo == FLV_AUDIO_TAG_SOUND_TYPE_STEREO)); - } - - /* to be computed later */ - amf_total_filesize = amf_number_new(0); - amf_associative_array_add(meta->on_metadata, "filesize", amf_total_filesize); - - if (info->have_video) { - amf_associative_array_add(meta->on_metadata, "videosize", amf_number_new((number64)info->video_data_size)); - } - if (info->have_audio) { - amf_associative_array_add(meta->on_metadata, "audiosize", amf_number_new((number64)info->audio_data_size)); - } - - /* to be computed later */ - amf_total_data_size = amf_number_new(0); - amf_associative_array_add(meta->on_metadata, "datasize", amf_total_data_size); - - amf_associative_array_add(meta->on_metadata, "metadatacreator", amf_str("xingmeng")); - - amf_associative_array_add(meta->on_metadata, "metadatadate", amf_date_new((number64)time(NULL)*1000, 0)); - if (info->have_audio) { - amf_associative_array_add(meta->on_metadata, "audiocodecid", amf_number_new((number64)info->audio_codec)); - } - if (info->have_video) { - amf_associative_array_add(meta->on_metadata, "videocodecid", amf_number_new((number64)info->video_codec)); - } - if (info->have_audio && info->have_video) { - number64 audio_delay = ((sint32)info->audio_first_timestamp - (sint32)info->video_first_timestamp) / 1000.0; - amf_associative_array_add(meta->on_metadata, "audiodelay", amf_number_new((number64)audio_delay)); - } - amf_associative_array_add(meta->on_metadata, "canSeekToEnd", amf_boolean_new(info->can_seek_to_end)); - - /* only add empty cuepoints if we don't preserve existing tags OR if the existing tags don't have cuepoints */ - if ((amf_associative_array_get(info->original_on_metadata, "cuePoints") == NULL)) { - amf_associative_array_add(meta->on_metadata, "hasCuePoints", amf_boolean_new(0)); - amf_associative_array_add(meta->on_metadata, "cuePoints", amf_array_new()); - } - amf_associative_array_add(meta->on_metadata, "hasKeyframes", amf_boolean_new(info->have_keyframes)); - amf_associative_array_add(meta->on_metadata, "keyframes", info->keyframes); - - /* - When we know the final size, we can recompute te offsets for the filepositions, and the final datasize. - */ - new_on_metadata_size = FLV_TAG_SIZE + sizeof(uint32_be) + - (uint32)(amf_data_size(meta->on_metadata_name) + amf_data_size(meta->on_metadata)); - on_last_second_size = (uint32)(amf_data_size(meta->on_last_second_name) + amf_data_size(meta->on_last_second)); - - node_t = amf_array_first(info->times); - node_f = amf_array_first(info->filepositions); - while (node_t != NULL || node_f != NULL) { - amf_data * amf_filepos = amf_array_get(node_f); - number64 offset = amf_number_get_value(amf_filepos) + new_on_metadata_size - info->on_metadata_size; - number64 timestamp = amf_number_get_value(amf_array_get(node_t)); - - /* after the onLastSecond event we need to take in account the tag size */ - if (!info->have_on_last_second && (info->last_timestamp - timestamp * 1000) <= 1000) { - offset += (FLV_TAG_SIZE + on_last_second_size + sizeof(uint32_be)); - } - - amf_number_set_value(amf_filepos, offset); - node_t = amf_array_next(node_t); - node_f = amf_array_next(node_f); - } - - /* compute data size, ie. size of metadata excluding prev_tag_size */ - data_size = info->meta_data_size + FLV_TAG_SIZE + - (uint32)(amf_data_size(meta->on_metadata_name) + amf_data_size(meta->on_metadata)); - if (!info->have_on_last_second) { - data_size += (uint32)on_last_second_size + FLV_TAG_SIZE; - } - amf_number_set_value(amf_total_data_size, (number64)data_size); - - /* compute total file size */ - total_filesize = FLV_HEADER_SIZE + info->total_prev_tags_size + info->video_data_size + - info->audio_data_size + info->meta_data_size + new_on_metadata_size; - - if (!info->have_on_last_second) { - /* if we have to add onLastSecond, we must count the header and new prevTagSize we add */ - total_filesize += (uint32)(FLV_TAG_SIZE + on_last_second_size + sizeof(uint32_be)); - } - - amf_number_set_value(amf_total_filesize, (number64)total_filesize); -} - - diff --git a/LFLiveKit/packet/flv/info.h b/LFLiveKit/packet/flv/info.h deleted file mode 100755 index 5be20c0b..00000000 --- a/LFLiveKit/packet/flv/info.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - $Id: info.h 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef __INFO_H__ -#define __INFO_H__ -#include "flv.h" - -typedef struct __flv_info { - flv_header header; - uint8 have_video; - uint8 have_audio; - uint32 video_width; - uint32 video_height; - uint8 video_codec; - uint32 video_frames_number; - uint8 audio_codec; - uint8 audio_size; - uint8 audio_rate; - uint8 audio_stereo; - file_offset_t video_data_size; - file_offset_t audio_data_size; - file_offset_t meta_data_size; - file_offset_t real_video_data_size; - file_offset_t real_audio_data_size; - uint32 video_first_timestamp; - uint32 audio_first_timestamp; - uint32 first_timestamp; - uint8 can_seek_to_end; - uint8 have_keyframes; - uint32 last_keyframe_timestamp; - uint32 on_metadata_size; - file_offset_t on_metadata_offset; - uint32 biggest_tag_body_size; - uint32 last_timestamp; - uint32 video_frame_duration; - uint32 audio_frame_duration; - file_offset_t total_prev_tags_size; - uint8 have_on_last_second; - amf_data * original_on_metadata; - amf_data * keyframes; - amf_data * times; - amf_data * filepositions; -} flv_info; - -typedef struct __flv_metadata { - amf_data * on_last_second_name; - amf_data * on_last_second; - amf_data * on_metadata_name; - amf_data * on_metadata; -} flv_metadata; - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -int get_flv_info(flv_stream * flv_in, flv_info * info); - -void compute_metadata(flv_info * info, flv_metadata * meta); - -void compute_current_metadata(flv_info * info, flv_metadata * meta); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __INFO_H__ */ diff --git a/LFLiveKit/packet/flv/types.c b/LFLiveKit/packet/flv/types.c deleted file mode 100755 index d417299b..00000000 --- a/LFLiveKit/packet/flv/types.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - $Id: types.c 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include "types.h" - -#ifndef WORDS_BIGENDIAN - -/* swap 64 bits doubles */ -typedef union __convert_u { - uint64 i; - number64 f; -} convert_u; - -number64 swap_number64(number64 n) { - convert_u c; - c.f = n; - c.i = (((c.i & 0x00000000000000FFULL) << 56) | - ((c.i & 0x000000000000FF00ULL) << 40) | - ((c.i & 0x0000000000FF0000ULL) << 24) | - ((c.i & 0x00000000FF000000ULL) << 8) | - ((c.i & 0x000000FF00000000ULL) >> 8) | - ((c.i & 0x0000FF0000000000ULL) >> 24) | - ((c.i & 0x00FF000000000000ULL) >> 40) | - ((c.i & 0xFF00000000000000ULL) >> 56)); - return c.f; -} -#endif /* !defined WORDS_BIGENDIAN */ - -/* convert native integers into 24 bits big endian integers */ -uint24_be uint32_to_uint24_be(uint32 l) { - uint24_be r; - r.b[0] = (uint8)((l & 0x00FF0000U) >> 16); - r.b[1] = (uint8)((l & 0x0000FF00U) >> 8); - r.b[2] = (uint8) (l & 0x000000FFU); - return r; -} - -#ifdef WIN32 - -/* - These functions assume fpos_t is a 64-bit signed integer -*/ - -file_offset_t lfs_ftell(FILE * stream) { - fpos_t p; - if (fgetpos(stream, &p) == 0) { - return (file_offset_t)p; - } - else { - return -1LL; - } -} - -int lfs_fseek(FILE * stream, file_offset_t offset, int whence) { - fpos_t p; - if (fgetpos(stream, &p) == 0) { - switch (whence) { - case SEEK_CUR: p += offset; break; - case SEEK_SET: p = offset; break; - /*case SEEK_END:; not implemented here */ - default: - return -1; - } - fsetpos(stream, &p); - return 0; - } - else { - return -1; - } -} - -#endif /* WIN32 */ diff --git a/LFLiveKit/packet/flv/types.h b/LFLiveKit/packet/flv/types.h deleted file mode 100755 index 496e35b2..00000000 --- a/LFLiveKit/packet/flv/types.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - $Id: types.h 231 2011-06-27 13:46:19Z marc.noirot $ - - FLV Metadata updater - - Copyright (C) 2007-2012 Marc Noirot - - This file is part of FLVMeta. - - FLVMeta is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - FLVMeta is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with FLVMeta; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef __TYPES_H__ -#define __TYPES_H__ - -#include - -#include - -typedef uint8_t byte, uint8, uint8_bitmask; - -typedef uint16_t uint16, uint16_be, uint16_le; - -typedef int16_t sint16, sint16_be, sint16_le; - -typedef uint32_t uint32, uint32_be, uint32_le; - -typedef int32_t sint32, sint32_be, sint32_le; - -typedef struct __uint24 { - uint8 b[3]; -} uint24, uint24_be, uint24_le; - -typedef uint64_t uint64, uint64_le, uint64_be; - -typedef int64_t sint64, sint64_le, sint64_be; - -//typedef -//#if SIZEOF_FLOAT == 8 -//float -//#elif SIZEOF_DOUBLE == 8 -//double -//#elif SIZEOF_LONG_DOUBLE == 8 -//long double -//#else -//uint64_t -//#endif -//number64, number64_le, number64_be; - -typedef double number64, number64_le, number64_be; - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifdef WORDS_BIGENDIAN - -# define swap_uint16(x) (x) -# define swap_sint16(x) (x) -# define swap_uint32(x) (x) -# define swap_number64(x) (x) - -#else /* !defined WORDS_BIGENDIAN */ - -/* swap 16 bits integers */ -# define swap_uint16(x) ((uint16)((((x) & 0x00FFU) << 8) | \ - (((x) & 0xFF00U) >> 8))) -# define swap_sint16(x) ((sint16)((((x) & 0x00FF) << 8) | \ - (((x) & 0xFF00) >> 8))) - -/* swap 32 bits integers */ -# define swap_uint32(x) ((uint32)((((x) & 0x000000FFU) << 24) | \ - (((x) & 0x0000FF00U) << 8) | \ - (((x) & 0x00FF0000U) >> 8) | \ - (((x) & 0xFF000000U) >> 24))) - -/* swap 64 bits doubles */ -number64 swap_number64(number64); - -#endif /* WORDS_BIGENDIAN */ - -/* convert big endian 24 bits integers to native integers */ -# define uint24_be_to_uint32(x) ((uint32)(((x).b[0] << 16) | \ - ((x).b[1] << 8) | (x).b[2])) - -/* convert native integers into 24 bits big endian integers */ -uint24_be uint32_to_uint24_be(uint32); - -/* large file support */ -#ifdef HAVE_FSEEKO -# define lfs_ftell ftello -# define lfs_fseek fseeko - -# define FILE_OFFSET_T_64_BITS 1 -typedef off_t file_offset_t; - -#else /* !HAVE_SEEKO */ - -# ifdef WIN32 - -# define FILE_OFFSET_T_64_BITS 1 -typedef long long int file_offset_t; - -/* Win32 large file support */ -file_offset_t lfs_ftell(FILE * stream); -int lfs_fseek(FILE * stream, file_offset_t offset, int whence); - -# else /* !defined WIN32 */ - -# define lfs_ftell ftell -# define lfs_fseek fseek - -typedef long file_offset_t; - -# endif /* WIN32 */ - -#endif /* HAVE_FSEEKO */ - -/* file offset printf specifier */ -#ifdef FILE_OFFSET_T_64_BITS -# define FILE_OFFSET_PRINTF_FORMAT "ll" -#else -# define FILE_OFFSET_PRINTF_FORMAT "l" -#endif - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __TYPES_H__ */ diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.h b/LFLiveKit/publish/LFStreamRtmpSocket.h similarity index 100% rename from LFLiveKit/upload/LFStreamRtmpSocket.h rename to LFLiveKit/publish/LFStreamRtmpSocket.h diff --git a/LFLiveKit/upload/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m similarity index 100% rename from LFLiveKit/upload/LFStreamRtmpSocket.m rename to LFLiveKit/publish/LFStreamRtmpSocket.m diff --git a/LFLiveKit/upload/LFStreamSocket.h b/LFLiveKit/publish/LFStreamSocket.h similarity index 100% rename from LFLiveKit/upload/LFStreamSocket.h rename to LFLiveKit/publish/LFStreamSocket.h diff --git a/LFLiveKit/upload/LFStreamingBuffer.h b/LFLiveKit/publish/LFStreamingBuffer.h similarity index 100% rename from LFLiveKit/upload/LFStreamingBuffer.h rename to LFLiveKit/publish/LFStreamingBuffer.h diff --git a/LFLiveKit/upload/LFStreamingBuffer.m b/LFLiveKit/publish/LFStreamingBuffer.m similarity index 100% rename from LFLiveKit/upload/LFStreamingBuffer.m rename to LFLiveKit/publish/LFStreamingBuffer.m diff --git a/LFLiveKit/upload/NSMutableArray+LFAdd.h b/LFLiveKit/publish/NSMutableArray+LFAdd.h similarity index 100% rename from LFLiveKit/upload/NSMutableArray+LFAdd.h rename to LFLiveKit/publish/NSMutableArray+LFAdd.h diff --git a/LFLiveKit/upload/NSMutableArray+LFAdd.m b/LFLiveKit/publish/NSMutableArray+LFAdd.m similarity index 100% rename from LFLiveKit/upload/NSMutableArray+LFAdd.m rename to LFLiveKit/publish/NSMutableArray+LFAdd.m diff --git a/LFLiveKit/upload/LFStreamTcpSocket.h b/LFLiveKit/upload/LFStreamTcpSocket.h deleted file mode 100644 index d9b7da5a..00000000 --- a/LFLiveKit/upload/LFStreamTcpSocket.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// LFStreamTcpSocket.h -// LFLiveKit -// -// Created by admin on 16/5/3. -// Copyright © 2016年 倾慕. All rights reserved. -// - -#import "LFStreamSocket.h" - -@interface LFStreamTcpSocket : NSObject -#pragma mark - Initializer -///============================================================================= -/// @name Initializer -///============================================================================= -- (nullable instancetype)init UNAVAILABLE_ATTRIBUTE; -+ (nullable instancetype)new UNAVAILABLE_ATTRIBUTE; - -@end diff --git a/LFLiveKit/upload/LFStreamTcpSocket.m b/LFLiveKit/upload/LFStreamTcpSocket.m deleted file mode 100644 index 779b4a28..00000000 --- a/LFLiveKit/upload/LFStreamTcpSocket.m +++ /dev/null @@ -1,331 +0,0 @@ -// -// LFStreamTcpSocket.m -// LFLiveKit -// -// Created by admin on 16/5/3. -// Copyright © 2016年 倾慕. All rights reserved. -// - -#import "LFStreamTcpSocket.h" -#import "GCDAsyncSocket.h" -#import "LFFlvPackage.h" - -static const NSInteger RetryTimesBreaken = 20;///< 重连3分钟 3秒一次 一共60次 -static const NSInteger RetryTimesMargin = 3; -const NSInteger TCP_RECEIVE_TIMEOUT = -1; - -@interface LFStreamTcpSocket () - -@property (nonatomic, strong) GCDAsyncSocket * socket; -@property (nonatomic, strong) dispatch_queue_t socketQueue; -@property (nonatomic, strong) LFStreamingBuffer *buffer; -@property (nonatomic, strong) LFLiveStreamInfo *stream; -@property (nonatomic, weak) id delegate; -@property (nonatomic, strong) id package; -@property (nonatomic, strong) LFLiveDebug *debugInfo; -@property (nonatomic, assign) CGSize videoSize; - -@property (nonatomic, assign) BOOL isSending; -@property (nonatomic, assign) BOOL isConnecting; -@property (nonatomic, assign) BOOL isReconnecting; -@property (nonatomic, assign) BOOL isConnected; -@property (nonatomic, assign) NSInteger retryTimes4netWorkBreaken; -@property (nonatomic, assign) NSInteger reconnectInterval; -@property (nonatomic, assign) NSInteger reconnectCount; -@property (nonatomic, assign) BOOL needSendHeader; - -@end - -@implementation LFStreamTcpSocket - -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount{ - if(!stream) @throw [NSException exceptionWithName:@"LFStreamTcpSocket init error" reason:@"stream is nil" userInfo:nil]; - if(CGSizeEqualToSize(videoSize, CGSizeZero)) @throw [NSException exceptionWithName:@"LFStreamTcpSocket init error" reason:@"videoSize is zero" userInfo:nil]; - if(self = [super init]){ - _stream = stream; - _videoSize = videoSize; - if(reconnectInterval > 0) _reconnectInterval = reconnectInterval; - else _reconnectInterval = RetryTimesMargin; - - if(reconnectCount > 0) _reconnectCount = reconnectCount; - else _reconnectCount = RetryTimesBreaken; - } - return self; -} - -#pragma mark -- LFStreamSocket -- (void) start{ - if(!_stream) return; - if(_isConnecting) return; - if(_socket.isConnected) return; - [self clean]; - - self.debugInfo.streamId = self.stream.streamId; - self.debugInfo.uploadUrl = self.stream.url; - self.debugInfo.videoSize = self.videoSize; - self.debugInfo.isRtmp = NO; - - if(![self.socket connectToHost:_stream.host onPort:_stream.port withTimeout:5 error:nil]){ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveError]; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ - [self.delegate socketDidError:self errorCode:LFLiveSocketError_ConnectSocket]; - } - return; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLivePending]; - } - _isConnecting = YES; - -} - -- (void) stop{ - [self.socket disconnect]; - [self clean]; -} - -- (void)sendFrame:(LFFrame *)frame{ - __weak typeof(self) _self = self; - dispatch_async(self.socketQueue, ^{ - __strong typeof(_self) self = _self; - if(!frame) return; - if([frame isKindOfClass:[LFAudioFrame class]]){ - NSData *packageData = [self.package aaCPacket:(LFAudioFrame*)frame];///< 打包flv - if(!packageData) return; - frame.data = packageData; - }else{ - NSData *packageData = [self.package h264Packet:(LFVideoFrame*)frame];///< 打包flv - if(!packageData) return; - frame.data = packageData; - } - - [self.buffer appendObject:frame]; - [self sendFrame]; - }); -} - -- (void)setDelegate:(id)delegate{ - _delegate = delegate; -} - -#pragma mark -- CustomMethod -- (void)sendFrame{ - if(!self.isSending && self.buffer.list.count > 0 && _isConnected){ - self.isSending = YES; - LFFrame *frame = [self.buffer popFirstObject]; - if(self.needSendHeader){///< flvHeader 插入到队列最前面去 - NSMutableData * mutableData = [[NSMutableData alloc] init]; - [mutableData appendData:frame.header]; - [mutableData appendData:frame.data]; - frame.data = mutableData; - self.needSendHeader = NO; - } - [self.socket writeData:frame.data withTimeout:TCP_RECEIVE_TIMEOUT tag:1]; - - self.debugInfo.dataFlow += frame.data.length; - if(CACurrentMediaTime()*1000 - self.debugInfo.timeStamp < 1000) { - self.debugInfo.bandwidth += frame.data.length; - if([frame isKindOfClass:[LFAudioFrame class]]){ - self.debugInfo.capturedAudioCount ++; - }else{ - self.debugInfo.capturedVideoCount ++; - } - self.debugInfo.unSendCount = self.buffer.list.count; - }else { - self.debugInfo.currentBandwidth = self.debugInfo.bandwidth; - self.debugInfo.currentCapturedAudioCount = self.debugInfo.capturedAudioCount; - self.debugInfo.currentCapturedVideoCount = self.debugInfo.capturedVideoCount; - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDebug:debugInfo:)]){ - [self.delegate socketDebug:self debugInfo:self.debugInfo]; - } - - self.debugInfo.bandwidth = 0; - self.debugInfo.capturedAudioCount = 0; - self.debugInfo.capturedVideoCount = 0; - self.debugInfo.timeStamp = CACurrentMediaTime()*1000; - } - - } -} - -- (void)clean{ - _isConnected = NO; - _isConnecting = NO; - _isReconnecting = NO; - _isSending = NO; - _retryTimes4netWorkBreaken = 0; - _needSendHeader = NO; - self.debugInfo = nil; - [self.buffer removeAllObject]; -} - -// 断线重连 --(void) reconnect { - _isReconnecting = NO; - if(_isConnected) return; - if([self.socket isConnected]) return; - - if(![self.socket connectToHost:_stream.host onPort:_stream.port withTimeout:5 error:nil]){ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveError]; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ - [self.delegate socketDidError:self errorCode:LFLiveSocketError_ConnectSocket]; - } - return; - } -} - - -#pragma mark -- GCDAsyncSocketDelegate -- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{ - NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port); - [sock readDataWithTimeout:-1 tag:0]; - if(_isConnected) return; - [self.socket writeData:self.verificationData withTimeout:-1 tag:0]; -} - -- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag { - [sock readDataWithTimeout:-1 tag:0]; - if(_isConnected) return; - if([self verificationDataValid:data]){ - NSLog(@"服务器验证成功,准备发送数据"); - _isConnected = YES; - _isConnecting = NO; - _isReconnecting = NO; - _retryTimes4netWorkBreaken = 0;// 计数器清零 - _needSendHeader = YES; - self.isSending = NO; - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveStart]; - } - }else{ - NSLog(@"服务器验证失败"); - [self clean]; - [self.socket disconnect]; - - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveError]; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ - [self.delegate socketDidError:self errorCode:LFLiveSocketError_Verification]; - } - } -} - -- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err { - NSLog(@"onSocket:%p socketDidDisconnectWithError:%@", sock, err); - if(err){ - if(self.retryTimes4netWorkBreaken++ < _reconnectCount && !self.isReconnecting){ - _isConnected = NO; - _isConnecting = NO; - _isReconnecting = YES; - - [self.socket disconnect]; - ///< 连接超时 - if(err.code == 3){ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveError]; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ - [self.delegate socketDidError:self errorCode:LFLiveSocketError_ConnectSocket]; - } - return; - } - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_reconnectInterval * NSEC_PER_SEC)), self.socketQueue, ^{ - [self reconnect]; - }); - - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLivePending]; - } - }else if(self.retryTimes4netWorkBreaken >= _reconnectCount){ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveError]; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ - [self.delegate socketDidError:self errorCode:LFLiveSocketError_ReConnectTimeOut]; - } - } - }else{ - [self clean]; - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ - [self.delegate socketStatus:self status:LFLiveStop]; - } - } -} - -- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{ - if(tag > 0){ - self.isSending = NO; - [self sendFrame]; - } -} - -#pragma mark --BufferDelegate -- (void)streamingBuffer:(nullable LFStreamingBuffer*)buffer bufferState:(LFLiveBuffferState)state{ - if(self.isConnected){ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketBufferStatus:status:)]){ - [self.delegate socketBufferStatus:self status:state]; - } - } -} - -#pragma mark -- Getter Setter -- (dispatch_queue_t)socketQueue{ - if(!_socketQueue){ - _socketQueue = dispatch_queue_create("com.youku.LaiFeng.live.socketQueue", NULL); - } - return _socketQueue; -} - -- (GCDAsyncSocket*)socket{ - if(!_socket){ - _socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:self.socketQueue socketQueue:self.socketQueue]; - } - return _socket; -} - -- (LFStreamingBuffer*)buffer{ - if(!_buffer){ - _buffer = [[LFStreamingBuffer alloc] init]; - _buffer.delegate = self; - } - return _buffer; -} - -- (id)package{ - if(!_package){ - _package = [[LFFlvPackage alloc] initWithVideoSize:self.videoSize]; - } - return _package; -} - -- (LFLiveDebug*)debugInfo{ - if(!_debugInfo){ - _debugInfo = [[LFLiveDebug alloc] init]; - } - return _debugInfo; -} - -#pragma mark -- 服务器验证 -- (NSData*)verificationData{ - /** 结构体专为NSData **/ - if(!self.stream) return nil; - #warning TODO send verficationData to server - return nil; -} - -- (BOOL)verificationDataValid:(NSData*)data{ - /** NSData专为结构体 **/ - if(!self.stream) return NO; - if(!data) return NO; - #warning TODO server give client data,verification - return NO; -} - - -@end From 5cc50b6d47d101fd96f63e659215cda91a267010 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 14:13:35 +0800 Subject: [PATCH 024/178] =?UTF-8?q?=E4=BF=AE=E6=94=B9pod=20spec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index db7a69f2..2a55c17b 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.platform = :ios, "8.0" s.ios.deployment_target = "8.0" s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" } - s.source_files = "LFLiveKit/**/*.{*.h,*.m}" + s.source_files = "LFLiveKit/**/*.{h,m}" s.public_header_files = "LFLiveKit/**/*.h" s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" From 91e72e22114b99a13f94fe21205e22b859f433af Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 14:32:55 +0800 Subject: [PATCH 025/178] update 1.7.3 --- LFLiveKit.podspec | 2 +- LFLiveKit/Info.plist | 2 +- LFLiveKit/LFLiveSession.h | 2 -- .../configuration/LFLiveVideoConfiguration.m | 9 ++++++ LFLiveKit/publish/LFStreamRtmpSocket.m | 2 +- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 28 +++++++++++-------- LFLiveKitDemo/Podfile | 3 +- 7 files changed, 30 insertions(+), 18 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 2a55c17b..0592c47f 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.7.2" + s.version = "1.7.3" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 01ad03a2..d069424d 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.7.2 + 1.7.3 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 86077f4b..933260dd 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -15,8 +15,6 @@ #import "LFLiveVideoConfiguration.h" #import "LFLiveDebug.h" -typedef void (^ LFRequestComplete)(_Nullable id info,NSError *_Nullable errorMsg); - @class LFLiveSession; @protocol LFLiveSessionDelegate diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index 0c06ed37..8f41bf5c 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -195,6 +195,15 @@ - (void)setVideoMinFrameRate:(NSUInteger)videoMinFrameRate{ _videoMinFrameRate = videoMinFrameRate; } +- (void)setLandscape:(BOOL)landscape{ + _landscape = landscape; + CGSize size = self.videoSize; + if(landscape){ + self.videoSize = CGSizeMake(size.height, size.width); + }else{ + self.videoSize = CGSizeMake(size.width, size.height); + } +} #pragma mark -- Custom Method - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{ diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index a8a06c84..3364cb7c 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -26,7 +26,7 @@ static dispatch_queue_t YYRtmpSendQueue() { #define SAVC(x) static const AVal av_##x = AVC(#x) static const AVal av_setDataFrame = AVC("@setDataFrame"); -static const AVal av_SDKVersion = AVC("LFLiveKit 1.6"); +static const AVal av_SDKVersion = AVC("LFLiveKit 1.7.3"); SAVC(onMetaData); SAVC(duration); SAVC(width); diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 221c78a5..151babd9 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -59,9 +59,9 @@ - (void)requestAccessForVideo{ } case AVAuthorizationStatusAuthorized:{ // 已经开启授权,可继续 - dispatch_async(dispatch_get_main_queue(), ^{ + //dispatch_async(dispatch_get_main_queue(), ^{ [_self.session setRunning:YES]; - }); + //}); break; } case AVAuthorizationStatusDenied: @@ -132,9 +132,16 @@ - (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErro #pragma mark -- Getter Setter - (LFLiveSession*)session{ if(!_session){ + /** 发现大家有不会用横屏的请注意啦,横屏需要在ViewController supportedInterfaceOrientations修改方向 默认竖屏 ****/ + /** 发现大家有不会用横屏的请注意啦,横屏需要在ViewController supportedInterfaceOrientations修改方向 默认竖屏 ****/ + /** 发现大家有不会用横屏的请注意啦,横屏需要在ViewController supportedInterfaceOrientations修改方向 默认竖屏 ****/ + + + /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2] liveType:LFLiveRTMP]; - _session.delegate = self; + + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; + /**   自己定制单声道 */ /* @@ -142,7 +149,7 @@ - (LFLiveSession*)session{ audioConfiguration.numberOfChannels = 1; audioConfiguration.audioBitrate = LFLiveAudioBitRate_64Kbps; audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration] liveType:LFLiveRTMP]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; */ /**   自己定制高质量音频96K */ @@ -151,7 +158,7 @@ - (LFLiveSession*)session{ audioConfiguration.numberOfChannels = 2; audioConfiguration.audioBitrate = LFLiveAudioBitRate_96Kbps; audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration] liveType:LFLiveRTMP]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; */ /**   自己定制高质量音频96K 分辨率设置为540*960 方向竖屏 */ @@ -172,7 +179,7 @@ - (LFLiveSession*)session{ videoConfiguration.orientation = UIInterfaceOrientationPortrait; videoConfiguration.sessionPreset = LFCaptureSessionPreset540x960; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration liveType:LFLiveRTMP]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; */ @@ -194,7 +201,7 @@ - (LFLiveSession*)session{ videoConfiguration.orientation = UIInterfaceOrientationPortrait; videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration liveType:LFLiveRTMP]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; */ @@ -213,13 +220,12 @@ - (LFLiveSession*)session{ videoConfiguration.videoMinBitRate = 500*1024; videoConfiguration.videoFrameRate = 15; videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.orientation = UIInterfaceOrientationLandscapeLeft; + videoConfiguration.landscape = YES; videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration liveType:LFLiveRTMP]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; */ - _session.delegate = self; _session.preView = self; } diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index baf8731a..fd929428 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -3,7 +3,6 @@ platform :ios,'8.0' target "LFLiveKitDemo" do -pod 'LFLiveKit', '~> 1.7.1' -pod 'YYDispatchQueuePool' +pod 'LFLiveKit', '~> 1.7.2' end \ No newline at end of file From 531c92df51a7701c66056f4b7458308e3db9ae68 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 14:36:43 +0800 Subject: [PATCH 026/178] update read --- README.md | 58 +++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 3502436d..da2218e2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ LFLiveKit - LFLiveKit IOS mobile phone push code,Default format support RTMP and FLV,At the same time, the structure is very easy to extend. + LFLiveKit IOS mobile phone push code,Default format support RTMP,At the same time, the structure is very easy to extend. Podfile To integrate LFLiveKit into your Xcode project using CocoaPods, specify it in your Podfile: @@ -43,41 +43,41 @@ Architecture capture: LFAudioCapture and LFVideoCapture encode: LFHardwareAudioEncoder and LFHardwareVideoEncoder - publish: LFStreamRtmpSocket LFStreamTcpSocket + publish: LFStreamRtmpSocket Usage - (LFLiveSession*)session{ - if(!_session){ -_session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration] liveType:LFLiveRTMP]; - _session.running = YES; - _session.preView = self; - } - return _session; + if(!_session){ + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; + _session.preView = self; + _session.delegate = self; + } + return _session; } - (LFLiveSession*)session{ - if(!_session){ - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 2; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - - LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(1280, 720); - videoConfiguration.videoBitRate = 800*1024; - videoConfiguration.videoMaxBitRate = 1000*1024; - videoConfiguration.videoMinBitRate = 500*1024; - videoConfiguration.videoFrameRate = 15; - videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.orientation = UIInterfaceOrientationLandscapeLeft; - videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; - - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration liveType:LFLiveRTMP]; - _session.running = YES; - _session.preView = self; - } - return _session; + if(!_session){ + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; + audioConfiguration.numberOfChannels = 2; + audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; + audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + + LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; + videoConfiguration.videoSize = CGSizeMake(1280, 720); + videoConfiguration.videoBitRate = 800*1024; + videoConfiguration.videoMaxBitRate = 1000*1024; + videoConfiguration.videoMinBitRate = 500*1024; + videoConfiguration.videoFrameRate = 15; + videoConfiguration.videoMaxKeyframeInterval = 30; + videoConfiguration.landscape = YES; + videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; + + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; + _session.running = YES; + _session.preView = self; + } + return _session; } LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new]; From 0e7b2475d749ca46931e1f7b59bbef6ff8004451 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 14:52:14 +0800 Subject: [PATCH 027/178] update --- LFLiveKit.podspec | 2 +- LFLiveKit/Info.plist | 2 +- LFLiveKit/configuration/LFLiveVideoConfiguration.m | 10 ---------- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 6 +++--- LFLiveKitDemo/LFLiveKitDemo/ViewController.m | 2 +- LFLiveKitDemo/Podfile | 2 +- 6 files changed, 7 insertions(+), 17 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 0592c47f..704e27ce 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.7.3" + s.version = "1.8.0" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index d069424d..9e0be357 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.7.3 + 1.8.0 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index 8f41bf5c..ac8a6ed1 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -195,16 +195,6 @@ - (void)setVideoMinFrameRate:(NSUInteger)videoMinFrameRate{ _videoMinFrameRate = videoMinFrameRate; } -- (void)setLandscape:(BOOL)landscape{ - _landscape = landscape; - CGSize size = self.videoSize; - if(landscape){ - self.videoSize = CGSizeMake(size.height, size.width); - }else{ - self.videoSize = CGSizeMake(size.width, size.height); - } -} - #pragma mark -- Custom Method - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{ NSString *avSessionPreset = [self avSessionPreset]; diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 151babd9..645e9b46 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -140,7 +140,7 @@ - (LFLiveSession*)session{ /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; + //_session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; /**   自己定制单声道 */ @@ -207,7 +207,7 @@ - (LFLiveSession*)session{ /**   自己定制高质量音频128K 分辨率设置为720*1280 方向横屏 */ - /* + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; audioConfiguration.numberOfChannels = 2; audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; @@ -224,7 +224,7 @@ - (LFLiveSession*)session{ videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ + _session.delegate = self; _session.preView = self; diff --git a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m index 97ac3c2f..ee92b04a 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m +++ b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m @@ -28,7 +28,7 @@ - (void)didReceiveMemoryWarning { - (UIInterfaceOrientationMask)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskPortrait; + return UIInterfaceOrientationMaskLandscape; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index fd929428..c712d2e2 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -3,6 +3,6 @@ platform :ios,'8.0' target "LFLiveKitDemo" do -pod 'LFLiveKit', '~> 1.7.2' +pod 'LFLiveKit', '~> 1.7.3' end \ No newline at end of file From 320307bc2af1cf1764fb0ba52e0900689f504c95 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 15:10:24 +0800 Subject: [PATCH 028/178] update demo --- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 6 +++--- LFLiveKitDemo/LFLiveKitDemo/ViewController.m | 2 +- LFLiveKitDemo/Podfile | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 645e9b46..151babd9 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -140,7 +140,7 @@ - (LFLiveSession*)session{ /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - //_session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; /**   自己定制单声道 */ @@ -207,7 +207,7 @@ - (LFLiveSession*)session{ /**   自己定制高质量音频128K 分辨率设置为720*1280 方向横屏 */ - + /* LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; audioConfiguration.numberOfChannels = 2; audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; @@ -224,7 +224,7 @@ - (LFLiveSession*)session{ videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - + */ _session.delegate = self; _session.preView = self; diff --git a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m index ee92b04a..97ac3c2f 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m +++ b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m @@ -28,7 +28,7 @@ - (void)didReceiveMemoryWarning { - (UIInterfaceOrientationMask)supportedInterfaceOrientations { - return UIInterfaceOrientationMaskLandscape; + return UIInterfaceOrientationMaskPortrait; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index c712d2e2..42f30d57 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -3,6 +3,6 @@ platform :ios,'8.0' target "LFLiveKitDemo" do -pod 'LFLiveKit', '~> 1.7.3' +pod 'LFLiveKit', '~> 1.8.0' end \ No newline at end of file From 3c58ff7e49bdce209a827959495f0bbd33d6da78 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 15 Jul 2016 15:26:06 +0800 Subject: [PATCH 029/178] =?UTF-8?q?=E5=81=9C=E6=AD=A2=E5=90=8Eclean?= =?UTF-8?q?=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/publish/LFStreamRtmpSocket.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index 3364cb7c..59372e1a 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -101,7 +101,6 @@ - (void)_start{ self.debugInfo.streamId = self.stream.streamId; self.debugInfo.uploadUrl = self.stream.url; self.debugInfo.isRtmp = YES; - [self clean]; [self RTMP264_Connect:(char*)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; } @@ -120,6 +119,7 @@ - (void)_stop{ PILI_RTMP_Free(_rtmp); _rtmp = NULL; } + [self clean]; } - (void) sendFrame:(LFFrame*)frame{ From d57d987e67f057f645c887cbb1e54bc53ce0e3f6 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Mon, 18 Jul 2016 15:01:51 +0800 Subject: [PATCH 030/178] format code style with unscrusify --- LFLiveKit.xcodeproj/project.pbxproj | 3016 +++++++++++++---- LFLiveKit/LFLiveSession.h | 28 +- LFLiveKit/LFLiveSession.m | 106 +- LFLiveKit/capture/LFAudioCapture.h | 10 +- LFLiveKit/capture/LFAudioCapture.m | 193 +- LFLiveKit/capture/LFVideoCapture.h | 10 +- LFLiveKit/capture/LFVideoCapture.m | 114 +- LFLiveKit/coder/LFAudioEncoding.h | 6 +- LFLiveKit/coder/LFHardwareAudioEncoder.m | 88 +- LFLiveKit/coder/LFHardwareVideoEncoder.m | 170 +- LFLiveKit/coder/LFVideoEncoding.h | 4 +- .../configuration/LFLiveAudioConfiguration.h | 10 +- .../configuration/LFLiveAudioConfiguration.m | 174 +- .../configuration/LFLiveVideoConfiguration.h | 10 +- .../configuration/LFLiveVideoConfiguration.m | 361 +- LFLiveKit/filter/LFGPUImageBeautyFilter.m | 433 ++- LFLiveKit/filter/LFGPUImageEmptyFilter.m | 51 +- LFLiveKit/objects/LFLiveDebug.h | 4 + LFLiveKit/objects/LFLiveStreamInfo.h | 14 +- LFLiveKit/publish/LFStreamRtmpSocket.m | 359 +- LFLiveKit/publish/LFStreamSocket.h | 24 +- LFLiveKit/publish/LFStreamingBuffer.h | 15 +- LFLiveKit/publish/LFStreamingBuffer.m | 130 +- LFLiveKit/publish/NSMutableArray+LFAdd.h | 8 +- .../LFLiveKitDemo.xcodeproj/project.pbxproj | 369 +- .../AppIcon.appiconset/Contents.json | 5 + LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.h | 1 - LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 325 +- LFLiveKitDemo/LFLiveKitDemo/ViewController.m | 6 +- LFLiveKitDemo/Podfile | 6 +- uncrustify.cfg | 643 ++++ 31 files changed, 4503 insertions(+), 2190 deletions(-) create mode 100644 uncrustify.cfg diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index e752a979..4b27d3e4 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -1,678 +1,2338 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; - 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001F991D0015D10026C63F /* LFLiveKitTests.m */; }; - 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA51D0016380026C63F /* LFAudioCapture.h */; }; - 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA61D0016380026C63F /* LFAudioCapture.m */; }; - 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA71D0016380026C63F /* LFVideoCapture.h */; }; - 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA81D0016380026C63F /* LFVideoCapture.m */; }; - 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAA1D0016380026C63F /* LFAudioEncoding.h */; }; - 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */; }; - 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */; }; - 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */; }; - 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */; }; - 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAF1D0016380026C63F /* LFVideoEncoding.h */; }; - 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */; }; - 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */; }; - 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */; }; - 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */; }; - 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */; }; - 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; - 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; }; - 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; - 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; }; - 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; - 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; - 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; - 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; - 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; - 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; - 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; - 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; - 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; - 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; - 8493627A1D38B542002C8F13 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362701D38B542002C8F13 /* LFStreamingBuffer.h */; }; - 8493627B1D38B542002C8F13 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 849362711D38B542002C8F13 /* LFStreamingBuffer.m */; }; - 8493627C1D38B542002C8F13 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362721D38B542002C8F13 /* LFStreamRtmpSocket.h */; }; - 8493627D1D38B542002C8F13 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 849362731D38B542002C8F13 /* LFStreamRtmpSocket.m */; }; - 8493627E1D38B542002C8F13 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362741D38B542002C8F13 /* LFStreamSocket.h */; }; - 849362811D38B542002C8F13 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 849362781D38B542002C8F13 /* NSMutableArray+LFAdd.h */; }; - 849362821D38B542002C8F13 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 849362791D38B542002C8F13 /* NSMutableArray+LFAdd.m */; }; - AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 84001F961D0015D10026C63F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 84001F811D0015D10026C63F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 84001F891D0015D10026C63F; - remoteInfo = LFLiveKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; - 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LFLiveKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 84001F991D0015D10026C63F /* LFLiveKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitTests.m; sourceTree = ""; }; - 84001F9B1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 84001FA51D0016380026C63F /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; - 84001FA61D0016380026C63F /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; - 84001FA71D0016380026C63F /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; - 84001FA81D0016380026C63F /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; - 84001FAA1D0016380026C63F /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; - 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; - 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; - 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; - 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; - 84001FAF1D0016380026C63F /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; - 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; - 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; - 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; - 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; - 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; - 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; - 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; - 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; - 84001FBA1D0016380026C63F /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; - 84001FBB1D0016380026C63F /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; - 84001FBD1D0016380026C63F /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; - 84001FBE1D0016380026C63F /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; - 84001FBF1D0016380026C63F /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; - 84001FC01D0016380026C63F /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; - 84001FC11D0016380026C63F /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; - 84001FC21D0016380026C63F /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; - 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; - 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; - 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; - 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; - 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; - 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 849362701D38B542002C8F13 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamingBuffer.h; sourceTree = ""; }; - 849362711D38B542002C8F13 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamingBuffer.m; sourceTree = ""; }; - 849362721D38B542002C8F13 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamRtmpSocket.h; sourceTree = ""; }; - 849362731D38B542002C8F13 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamRtmpSocket.m; sourceTree = ""; }; - 849362741D38B542002C8F13 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamSocket.h; sourceTree = ""; }; - 849362781D38B542002C8F13 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+LFAdd.h"; sourceTree = ""; }; - 849362791D38B542002C8F13 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+LFAdd.m"; sourceTree = ""; }; - A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; - B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; - B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 84001F861D0015D10026C63F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 840020011D0017850026C63F /* libz.tbd in Frameworks */, - 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */, - 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */, - 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, - 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, - 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, - AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F911D0015D10026C63F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0C07D14560B9E91EA1B59306 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 840020001D0017850026C63F /* libz.tbd */, - 84001FFE1D00176C0026C63F /* VideoToolbox.framework */, - 84001FFC1D0017680026C63F /* AudioToolbox.framework */, - 84001FFA1D0017630026C63F /* UIKit.framework */, - 84001FF81D00175D0026C63F /* Foundation.framework */, - 84001FF61D0017590026C63F /* AVFoundation.framework */, - B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 84001F801D0015D10026C63F = { - isa = PBXGroup; - children = ( - 84001F8C1D0015D10026C63F /* LFLiveKit */, - 84001F981D0015D10026C63F /* LFLiveKitTests */, - 84001F8B1D0015D10026C63F /* Products */, - EDD4B76A07A6817C79BB4E5C /* Pods */, - 0C07D14560B9E91EA1B59306 /* Frameworks */, - ); - sourceTree = ""; - }; - 84001F8B1D0015D10026C63F /* Products */ = { - isa = PBXGroup; - children = ( - 84001F8A1D0015D10026C63F /* LFLiveKit.framework */, - 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 84001F8C1D0015D10026C63F /* LFLiveKit */ = { - isa = PBXGroup; - children = ( - 84001F8D1D0015D10026C63F /* LFLiveKit.h */, - 84001FBA1D0016380026C63F /* LFLiveSession.h */, - 84001FBB1D0016380026C63F /* LFLiveSession.m */, - 84001FBC1D0016380026C63F /* objects */, - 84001FB01D0016380026C63F /* configuration */, - 84001FA41D0016380026C63F /* capture */, - 84001FA91D0016380026C63F /* coder */, - 84001FB51D0016380026C63F /* filter */, - 8493626F1D38B542002C8F13 /* publish */, - 84001F8F1D0015D10026C63F /* Info.plist */, - ); - path = LFLiveKit; - sourceTree = ""; - }; - 84001F981D0015D10026C63F /* LFLiveKitTests */ = { - isa = PBXGroup; - children = ( - 84001F991D0015D10026C63F /* LFLiveKitTests.m */, - 84001F9B1D0015D10026C63F /* Info.plist */, - ); - path = LFLiveKitTests; - sourceTree = ""; - }; - 84001FA41D0016380026C63F /* capture */ = { - isa = PBXGroup; - children = ( - 84001FA51D0016380026C63F /* LFAudioCapture.h */, - 84001FA61D0016380026C63F /* LFAudioCapture.m */, - 84001FA71D0016380026C63F /* LFVideoCapture.h */, - 84001FA81D0016380026C63F /* LFVideoCapture.m */, - ); - path = capture; - sourceTree = ""; - }; - 84001FA91D0016380026C63F /* coder */ = { - isa = PBXGroup; - children = ( - 84001FAA1D0016380026C63F /* LFAudioEncoding.h */, - 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */, - 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */, - 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */, - 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */, - 84001FAF1D0016380026C63F /* LFVideoEncoding.h */, - ); - path = coder; - sourceTree = ""; - }; - 84001FB01D0016380026C63F /* configuration */ = { - isa = PBXGroup; - children = ( - 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */, - 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */, - 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */, - 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */, - ); - path = configuration; - sourceTree = ""; - }; - 84001FB51D0016380026C63F /* filter */ = { - isa = PBXGroup; - children = ( - 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */, - 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */, - 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */, - 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */, - ); - path = filter; - sourceTree = ""; - }; - 84001FBC1D0016380026C63F /* objects */ = { - isa = PBXGroup; - children = ( - 84001FBD1D0016380026C63F /* LFAudioFrame.h */, - 84001FBE1D0016380026C63F /* LFAudioFrame.m */, - 84001FBF1D0016380026C63F /* LFFrame.h */, - 84001FC01D0016380026C63F /* LFFrame.m */, - 84001FC11D0016380026C63F /* LFLiveDebug.h */, - 84001FC21D0016380026C63F /* LFLiveDebug.m */, - 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */, - 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */, - 84001FC51D0016380026C63F /* LFVideoFrame.h */, - 84001FC61D0016380026C63F /* LFVideoFrame.m */, - ); - path = objects; - sourceTree = ""; - }; - 8493626F1D38B542002C8F13 /* publish */ = { - isa = PBXGroup; - children = ( - 849362701D38B542002C8F13 /* LFStreamingBuffer.h */, - 849362711D38B542002C8F13 /* LFStreamingBuffer.m */, - 849362721D38B542002C8F13 /* LFStreamRtmpSocket.h */, - 849362731D38B542002C8F13 /* LFStreamRtmpSocket.m */, - 849362741D38B542002C8F13 /* LFStreamSocket.h */, - 849362781D38B542002C8F13 /* NSMutableArray+LFAdd.h */, - 849362791D38B542002C8F13 /* NSMutableArray+LFAdd.m */, - ); - path = publish; - sourceTree = ""; - }; - EDD4B76A07A6817C79BB4E5C /* Pods */ = { - isa = PBXGroup; - children = ( - A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */, - B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 84001F871D0015D10026C63F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, - 8493627C1D38B542002C8F13 /* LFStreamRtmpSocket.h in Headers */, - 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, - 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, - 8493627A1D38B542002C8F13 /* LFStreamingBuffer.h in Headers */, - 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, - 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, - 84001FE71D0016380026C63F /* LFFrame.h in Headers */, - 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, - 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, - 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, - 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, - 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, - 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, - 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, - 849362811D38B542002C8F13 /* NSMutableArray+LFAdd.h in Headers */, - 8493627E1D38B542002C8F13 /* LFStreamSocket.h in Headers */, - 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, - 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 84001F891D0015D10026C63F /* LFLiveKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; - buildPhases = ( - 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */, - 84001F851D0015D10026C63F /* Sources */, - 84001F861D0015D10026C63F /* Frameworks */, - 84001F871D0015D10026C63F /* Headers */, - 84001F881D0015D10026C63F /* Resources */, - 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = LFLiveKit; - productName = LFLiveKit; - productReference = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 84001F931D0015D10026C63F /* LFLiveKitTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */; - buildPhases = ( - 84001F901D0015D10026C63F /* Sources */, - 84001F911D0015D10026C63F /* Frameworks */, - 84001F921D0015D10026C63F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 84001F971D0015D10026C63F /* PBXTargetDependency */, - ); - name = LFLiveKitTests; - productName = LFLiveKitTests; - productReference = 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 84001F811D0015D10026C63F /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0730; - ORGANIZATIONNAME = admin; - TargetAttributes = { - 84001F891D0015D10026C63F = { - CreatedOnToolsVersion = 7.3; - }; - 84001F931D0015D10026C63F = { - CreatedOnToolsVersion = 7.3; - }; - }; - }; - buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 84001F801D0015D10026C63F; - productRefGroup = 84001F8B1D0015D10026C63F /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 84001F891D0015D10026C63F /* LFLiveKit */, - 84001F931D0015D10026C63F /* LFLiveKitTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 84001F881D0015D10026C63F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F921D0015D10026C63F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 84001F851D0015D10026C63F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, - 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, - 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, - 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, - 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, - 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - 849362821D38B542002C8F13 /* NSMutableArray+LFAdd.m in Sources */, - 8493627B1D38B542002C8F13 /* LFStreamingBuffer.m in Sources */, - 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, - 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, - 8493627D1D38B542002C8F13 /* LFStreamRtmpSocket.m in Sources */, - 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, - 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, - 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, - 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, - 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, - 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F901D0015D10026C63F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 84001F971D0015D10026C63F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 84001F891D0015D10026C63F /* LFLiveKit */; - targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 84001F9C1D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 84001F9D1D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 84001F9F1D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = LFLiveKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 84001FA01D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = LFLiveKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 84001FA21D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = LFLiveKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 84001FA31D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = LFLiveKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001F9C1D0015D10026C63F /* Debug */, - 84001F9D1D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001F9F1D0015D10026C63F /* Debug */, - 84001FA01D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001FA21D0015D10026C63F /* Debug */, - 84001FA31D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 84001F811D0015D10026C63F /* Project object */; -} + + + + + archiveVersion + 1 + classes + + objectVersion + 46 + objects + + 0C07D14560B9E91EA1B59306 + + children + + 840020001D0017850026C63F + 84001FFE1D00176C0026C63F + 84001FFC1D0017680026C63F + 84001FFA1D0017630026C63F + 84001FF81D00175D0026C63F + 84001FF61D0017590026C63F + B8CB02D2A92EA1F5A262F154 + B5758EB2A15DAA132D8BF380 + + isa + PBXGroup + name + Frameworks + sourceTree + <group> + + 817C22141AD3F2EB34365AA3 + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + 📦 Copy Pods Resources + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + "${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh" + + showEnvVarsInLog + 0 + + 84001F801D0015D10026C63F + + children + + 84001F8C1D0015D10026C63F + 84001F981D0015D10026C63F + 84001F8B1D0015D10026C63F + EDD4B76A07A6817C79BB4E5C + 0C07D14560B9E91EA1B59306 + + isa + PBXGroup + sourceTree + <group> + + 84001F811D0015D10026C63F + + attributes + + LastUpgradeCheck + 0730 + ORGANIZATIONNAME + admin + TargetAttributes + + 84001F891D0015D10026C63F + + CreatedOnToolsVersion + 7.3 + + 84001F931D0015D10026C63F + + CreatedOnToolsVersion + 7.3 + + + + buildConfigurationList + 84001F841D0015D10026C63F + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 + isa + PBXProject + knownRegions + + en + + mainGroup + 84001F801D0015D10026C63F + productRefGroup + 84001F8B1D0015D10026C63F + projectDirPath + + projectReferences + + projectRoot + + targets + + 84001F891D0015D10026C63F + 84001F931D0015D10026C63F + + + 84001F841D0015D10026C63F + + buildConfigurations + + 84001F9C1D0015D10026C63F + 84001F9D1D0015D10026C63F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 84001F851D0015D10026C63F + + buildActionMask + 2147483647 + files + + 840762DA1D07BC8B000FD0BF + 84001FE21D0016380026C63F + 84001FE41D0016380026C63F + 84001FE61D0016380026C63F + 840762DE1D07BC8B000FD0BF + 84001FDC1D0016380026C63F + 840762D81D07BC8B000FD0BF + 84001FD41D0016380026C63F + 84001FE81D0016380026C63F + 840762D61D07BC8B000FD0BF + 84001FF01D0016380026C63F + 84001FF51D0016380026C63F + 84001FDE1D0016380026C63F + 84001FD21D0016380026C63F + 84001FF21D0016380026C63F + 840762E11D07BC8B000FD0BF + 84001FD91D0016380026C63F + 84001FEC1D0016380026C63F + 84001FEA1D0016380026C63F + 840762DC1D07BC8B000FD0BF + 84001FEE1D0016380026C63F + 84001FD71D0016380026C63F + 840762C61D07BC7D000FD0BF + 84001FE01D0016380026C63F + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F861D0015D10026C63F + + buildActionMask + 2147483647 + files + + 840020011D0017850026C63F + 84001FFF1D00176C0026C63F + 84001FFD1D0017680026C63F + 84001FFB1D0017630026C63F + 84001FF91D00175D0026C63F + 84001FF71D0017590026C63F + AD7F89B4621A7EFEBEA72D49 + BE55DA79155500CDEF87FB5C + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F871D0015D10026C63F + + buildActionMask + 2147483647 + files + + 840762DD1D07BC8B000FD0BF + 84001FDB1D0016380026C63F + 840762E01D07BC8B000FD0BF + 84001FDD1D0016380026C63F + 840762D71D07BC8B000FD0BF + 84001FE31D0016380026C63F + 840762C51D07BC7D000FD0BF + 840762DF1D07BC8B000FD0BF + 84001FEB1D0016380026C63F + 84001FE91D0016380026C63F + 840762E21D07BC8B000FD0BF + 840762DB1D07BC8B000FD0BF + 84001FF11D0016380026C63F + 84001FE71D0016380026C63F + 84001FEF1D0016380026C63F + 84001FD61D0016380026C63F + 84001FDF1D0016380026C63F + 84001FD31D0016380026C63F + 84001FD11D0016380026C63F + 84001FF41D0016380026C63F + 84001FE11D0016380026C63F + 84001FDA1D0016380026C63F + 84001FE51D0016380026C63F + 84001FED1D0016380026C63F + 84001FD81D0016380026C63F + 84001FD51D0016380026C63F + 840762D91D07BC8B000FD0BF + 84001FF31D0016380026C63F + 84001F8E1D0015D10026C63F + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F881D0015D10026C63F + + buildActionMask + 2147483647 + files + + isa + PBXResourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F891D0015D10026C63F + + buildConfigurationList + 84001F9E1D0015D10026C63F + buildPhases + + 98F2C3F394BD79A6D6B8424F + 8EE9401DCA9508E918B7FB68 + 84001F851D0015D10026C63F + 84001F861D0015D10026C63F + 84001F871D0015D10026C63F + 84001F881D0015D10026C63F + 817C22141AD3F2EB34365AA3 + 8A5D8B623E50AAC1575D1741 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + LFLiveKit + productName + LFLiveKit + productReference + 84001F8A1D0015D10026C63F + productType + com.apple.product-type.framework + + 84001F8A1D0015D10026C63F + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + path + LFLiveKit.framework + sourceTree + BUILT_PRODUCTS_DIR + + 84001F8B1D0015D10026C63F + + children + + 84001F8A1D0015D10026C63F + 84001F941D0015D10026C63F + + isa + PBXGroup + name + Products + sourceTree + <group> + + 84001F8C1D0015D10026C63F + + children + + 84001F8D1D0015D10026C63F + 84001FBA1D0016380026C63F + 84001FBB1D0016380026C63F + 84001FBC1D0016380026C63F + 84001FB01D0016380026C63F + 84001FA41D0016380026C63F + 84001FA91D0016380026C63F + 84001FB51D0016380026C63F + 840762C71D07BC8B000FD0BF + 84001FC91D0016380026C63F + 84001F8F1D0015D10026C63F + + isa + PBXGroup + path + LFLiveKit + sourceTree + <group> + + 84001F8D1D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveKit.h + sourceTree + <group> + + 84001F8E1D0015D10026C63F + + fileRef + 84001F8D1D0015D10026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001F8F1D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 84001F901D0015D10026C63F + + buildActionMask + 2147483647 + files + + 84001F9A1D0015D10026C63F + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F911D0015D10026C63F + + buildActionMask + 2147483647 + files + + 84001F951D0015D10026C63F + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F921D0015D10026C63F + + buildActionMask + 2147483647 + files + + isa + PBXResourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F931D0015D10026C63F + + buildConfigurationList + 84001FA11D0015D10026C63F + buildPhases + + 84001F901D0015D10026C63F + 84001F911D0015D10026C63F + 84001F921D0015D10026C63F + + buildRules + + dependencies + + 84001F971D0015D10026C63F + + isa + PBXNativeTarget + name + LFLiveKitTests + productName + LFLiveKitTests + productReference + 84001F941D0015D10026C63F + productType + com.apple.product-type.bundle.unit-test + + 84001F941D0015D10026C63F + + explicitFileType + wrapper.cfbundle + includeInIndex + 0 + isa + PBXFileReference + path + LFLiveKitTests.xctest + sourceTree + BUILT_PRODUCTS_DIR + + 84001F951D0015D10026C63F + + fileRef + 84001F8A1D0015D10026C63F + isa + PBXBuildFile + + 84001F961D0015D10026C63F + + containerPortal + 84001F811D0015D10026C63F + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 84001F891D0015D10026C63F + remoteInfo + LFLiveKit + + 84001F971D0015D10026C63F + + isa + PBXTargetDependency + target + 84001F891D0015D10026C63F + targetProxy + 84001F961D0015D10026C63F + + 84001F981D0015D10026C63F + + children + + 84001F991D0015D10026C63F + 84001F9B1D0015D10026C63F + + isa + PBXGroup + path + LFLiveKitTests + sourceTree + <group> + + 84001F991D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveKitTests.m + sourceTree + <group> + + 84001F9A1D0015D10026C63F + + fileRef + 84001F991D0015D10026C63F + isa + PBXBuildFile + + 84001F9B1D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 84001F9C1D0015D10026C63F + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_ANALYZER_NONNULL + YES + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES_ERROR + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES_ERROR + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + COPY_PHASE_STRIP + NO + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + ENABLE_STRICT_OBJC_MSGSEND + YES + ENABLE_TESTABILITY + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_NO_COMMON_BLOCKS + YES + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES_ERROR + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES_AGGRESSIVE + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 9.3 + MTL_ENABLE_DEBUG_INFO + YES + ONLY_ACTIVE_ARCH + YES + SDKROOT + iphoneos + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 84001F9D1D0015D10026C63F + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_ANALYZER_NONNULL + YES + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES_ERROR + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES_ERROR + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + COPY_PHASE_STRIP + NO + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + ENABLE_NS_ASSERTIONS + NO + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_NO_COMMON_BLOCKS + YES + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES_ERROR + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES_AGGRESSIVE + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 9.3 + MTL_ENABLE_DEBUG_INFO + NO + SDKROOT + iphoneos + TARGETED_DEVICE_FAMILY + 1,2 + VALIDATE_PRODUCT + YES + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 84001F9E1D0015D10026C63F + + buildConfigurations + + 84001F9F1D0015D10026C63F + 84001FA01D0015D10026C63F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 84001F9F1D0015D10026C63F + + baseConfigurationReference + A17586B27CD6843997425CCF + buildSettings + + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_BITCODE + NO + INFOPLIST_FILE + LFLiveKit/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKit + PRODUCT_NAME + $(TARGET_NAME) + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Debug + + 84001FA01D0015D10026C63F + + baseConfigurationReference + B75B965E6B94DE4CBCC82EA7 + buildSettings + + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_BITCODE + NO + INFOPLIST_FILE + LFLiveKit/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKit + PRODUCT_NAME + $(TARGET_NAME) + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Release + + 84001FA11D0015D10026C63F + + buildConfigurations + + 84001FA21D0015D10026C63F + 84001FA31D0015D10026C63F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 84001FA21D0015D10026C63F + + buildSettings + + INFOPLIST_FILE + LFLiveKitTests/Info.plist + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKitTests + PRODUCT_NAME + $(TARGET_NAME) + + isa + XCBuildConfiguration + name + Debug + + 84001FA31D0015D10026C63F + + buildSettings + + INFOPLIST_FILE + LFLiveKitTests/Info.plist + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKitTests + PRODUCT_NAME + $(TARGET_NAME) + + isa + XCBuildConfiguration + name + Release + + 84001FA41D0016380026C63F + + children + + 84001FA51D0016380026C63F + 84001FA61D0016380026C63F + 84001FA71D0016380026C63F + 84001FA81D0016380026C63F + + isa + PBXGroup + path + capture + sourceTree + <group> + + 84001FA51D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFAudioCapture.h + sourceTree + <group> + + 84001FA61D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFAudioCapture.m + sourceTree + <group> + + 84001FA71D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFVideoCapture.h + sourceTree + <group> + + 84001FA81D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFVideoCapture.m + sourceTree + <group> + + 84001FA91D0016380026C63F + + children + + 84001FAA1D0016380026C63F + 84001FAB1D0016380026C63F + 84001FAC1D0016380026C63F + 84001FAD1D0016380026C63F + 84001FAE1D0016380026C63F + 84001FAF1D0016380026C63F + + isa + PBXGroup + path + coder + sourceTree + <group> + + 84001FAA1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFAudioEncoding.h + sourceTree + <group> + + 84001FAB1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFHardwareAudioEncoder.h + sourceTree + <group> + + 84001FAC1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFHardwareAudioEncoder.m + sourceTree + <group> + + 84001FAD1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFHardwareVideoEncoder.h + sourceTree + <group> + + 84001FAE1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFHardwareVideoEncoder.m + sourceTree + <group> + + 84001FAF1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFVideoEncoding.h + sourceTree + <group> + + 84001FB01D0016380026C63F + + children + + 84001FB11D0016380026C63F + 84001FB21D0016380026C63F + 84001FB31D0016380026C63F + 84001FB41D0016380026C63F + + isa + PBXGroup + path + configuration + sourceTree + <group> + + 84001FB11D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveAudioConfiguration.h + sourceTree + <group> + + 84001FB21D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveAudioConfiguration.m + sourceTree + <group> + + 84001FB31D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveVideoConfiguration.h + sourceTree + <group> + + 84001FB41D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveVideoConfiguration.m + sourceTree + <group> + + 84001FB51D0016380026C63F + + children + + 84001FB61D0016380026C63F + 84001FB71D0016380026C63F + 84001FB81D0016380026C63F + 84001FB91D0016380026C63F + + isa + PBXGroup + path + filter + sourceTree + <group> + + 84001FB61D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFGPUImageBeautyFilter.h + sourceTree + <group> + + 84001FB71D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFGPUImageBeautyFilter.m + sourceTree + <group> + + 84001FB81D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFGPUImageEmptyFilter.h + sourceTree + <group> + + 84001FB91D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFGPUImageEmptyFilter.m + sourceTree + <group> + + 84001FBA1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveSession.h + sourceTree + <group> + + 84001FBB1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveSession.m + sourceTree + <group> + + 84001FBC1D0016380026C63F + + children + + 84001FBD1D0016380026C63F + 84001FBE1D0016380026C63F + 84001FBF1D0016380026C63F + 84001FC01D0016380026C63F + 84001FC11D0016380026C63F + 84001FC21D0016380026C63F + 84001FC31D0016380026C63F + 84001FC41D0016380026C63F + 84001FC51D0016380026C63F + 84001FC61D0016380026C63F + + isa + PBXGroup + path + objects + sourceTree + <group> + + 84001FBD1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFAudioFrame.h + sourceTree + <group> + + 84001FBE1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFAudioFrame.m + sourceTree + <group> + + 84001FBF1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFFrame.h + sourceTree + <group> + + 84001FC01D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFFrame.m + sourceTree + <group> + + 84001FC11D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveDebug.h + sourceTree + <group> + + 84001FC21D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveDebug.m + sourceTree + <group> + + 84001FC31D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveStreamInfo.h + sourceTree + <group> + + 84001FC41D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveStreamInfo.m + sourceTree + <group> + + 84001FC51D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFVideoFrame.h + sourceTree + <group> + + 84001FC61D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFVideoFrame.m + sourceTree + <group> + + 84001FC91D0016380026C63F + + children + + 84001FCE1D0016380026C63F + 84001FCA1D0016380026C63F + 84001FCB1D0016380026C63F + 84001FCC1D0016380026C63F + 84001FCD1D0016380026C63F + 840762C31D07BC7D000FD0BF + 840762C41D07BC7D000FD0BF + 84001FCF1D0016380026C63F + 84001FD01D0016380026C63F + + isa + PBXGroup + name + publish + path + upload + sourceTree + <group> + + 84001FCA1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFStreamingBuffer.h + sourceTree + <group> + + 84001FCB1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFStreamingBuffer.m + sourceTree + <group> + + 84001FCC1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFStreamRtmpSocket.h + sourceTree + <group> + + 84001FCD1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFStreamRtmpSocket.m + sourceTree + <group> + + 84001FCE1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFStreamSocket.h + sourceTree + <group> + + 84001FCF1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + NSMutableArray+LFAdd.h + sourceTree + <group> + + 84001FD01D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + NSMutableArray+LFAdd.m + sourceTree + <group> + + 84001FD11D0016380026C63F + + fileRef + 84001FA51D0016380026C63F + isa + PBXBuildFile + + 84001FD21D0016380026C63F + + fileRef + 84001FA61D0016380026C63F + isa + PBXBuildFile + + 84001FD31D0016380026C63F + + fileRef + 84001FA71D0016380026C63F + isa + PBXBuildFile + + 84001FD41D0016380026C63F + + fileRef + 84001FA81D0016380026C63F + isa + PBXBuildFile + + 84001FD51D0016380026C63F + + fileRef + 84001FAA1D0016380026C63F + isa + PBXBuildFile + + 84001FD61D0016380026C63F + + fileRef + 84001FAB1D0016380026C63F + isa + PBXBuildFile + + 84001FD71D0016380026C63F + + fileRef + 84001FAC1D0016380026C63F + isa + PBXBuildFile + + 84001FD81D0016380026C63F + + fileRef + 84001FAD1D0016380026C63F + isa + PBXBuildFile + + 84001FD91D0016380026C63F + + fileRef + 84001FAE1D0016380026C63F + isa + PBXBuildFile + + 84001FDA1D0016380026C63F + + fileRef + 84001FAF1D0016380026C63F + isa + PBXBuildFile + + 84001FDB1D0016380026C63F + + fileRef + 84001FB11D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FDC1D0016380026C63F + + fileRef + 84001FB21D0016380026C63F + isa + PBXBuildFile + + 84001FDD1D0016380026C63F + + fileRef + 84001FB31D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FDE1D0016380026C63F + + fileRef + 84001FB41D0016380026C63F + isa + PBXBuildFile + + 84001FDF1D0016380026C63F + + fileRef + 84001FB61D0016380026C63F + isa + PBXBuildFile + + 84001FE01D0016380026C63F + + fileRef + 84001FB71D0016380026C63F + isa + PBXBuildFile + + 84001FE11D0016380026C63F + + fileRef + 84001FB81D0016380026C63F + isa + PBXBuildFile + + 84001FE21D0016380026C63F + + fileRef + 84001FB91D0016380026C63F + isa + PBXBuildFile + + 84001FE31D0016380026C63F + + fileRef + 84001FBA1D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FE41D0016380026C63F + + fileRef + 84001FBB1D0016380026C63F + isa + PBXBuildFile + + 84001FE51D0016380026C63F + + fileRef + 84001FBD1D0016380026C63F + isa + PBXBuildFile + + 84001FE61D0016380026C63F + + fileRef + 84001FBE1D0016380026C63F + isa + PBXBuildFile + + 84001FE71D0016380026C63F + + fileRef + 84001FBF1D0016380026C63F + isa + PBXBuildFile + + 84001FE81D0016380026C63F + + fileRef + 84001FC01D0016380026C63F + isa + PBXBuildFile + + 84001FE91D0016380026C63F + + fileRef + 84001FC11D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FEA1D0016380026C63F + + fileRef + 84001FC21D0016380026C63F + isa + PBXBuildFile + + 84001FEB1D0016380026C63F + + fileRef + 84001FC31D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FEC1D0016380026C63F + + fileRef + 84001FC41D0016380026C63F + isa + PBXBuildFile + + 84001FED1D0016380026C63F + + fileRef + 84001FC51D0016380026C63F + isa + PBXBuildFile + + 84001FEE1D0016380026C63F + + fileRef + 84001FC61D0016380026C63F + isa + PBXBuildFile + + 84001FEF1D0016380026C63F + + fileRef + 84001FCA1D0016380026C63F + isa + PBXBuildFile + + 84001FF01D0016380026C63F + + fileRef + 84001FCB1D0016380026C63F + isa + PBXBuildFile + + 84001FF11D0016380026C63F + + fileRef + 84001FCC1D0016380026C63F + isa + PBXBuildFile + + 84001FF21D0016380026C63F + + fileRef + 84001FCD1D0016380026C63F + isa + PBXBuildFile + + 84001FF31D0016380026C63F + + fileRef + 84001FCE1D0016380026C63F + isa + PBXBuildFile + + 84001FF41D0016380026C63F + + fileRef + 84001FCF1D0016380026C63F + isa + PBXBuildFile + + 84001FF51D0016380026C63F + + fileRef + 84001FD01D0016380026C63F + isa + PBXBuildFile + + 84001FF61D0017590026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + AVFoundation.framework + path + System/Library/Frameworks/AVFoundation.framework + sourceTree + SDKROOT + + 84001FF71D0017590026C63F + + fileRef + 84001FF61D0017590026C63F + isa + PBXBuildFile + + 84001FF81D00175D0026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Foundation.framework + path + System/Library/Frameworks/Foundation.framework + sourceTree + SDKROOT + + 84001FF91D00175D0026C63F + + fileRef + 84001FF81D00175D0026C63F + isa + PBXBuildFile + + 84001FFA1D0017630026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + UIKit.framework + path + System/Library/Frameworks/UIKit.framework + sourceTree + SDKROOT + + 84001FFB1D0017630026C63F + + fileRef + 84001FFA1D0017630026C63F + isa + PBXBuildFile + + 84001FFC1D0017680026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + AudioToolbox.framework + path + System/Library/Frameworks/AudioToolbox.framework + sourceTree + SDKROOT + + 84001FFD1D0017680026C63F + + fileRef + 84001FFC1D0017680026C63F + isa + PBXBuildFile + + 84001FFE1D00176C0026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + VideoToolbox.framework + path + System/Library/Frameworks/VideoToolbox.framework + sourceTree + SDKROOT + + 84001FFF1D00176C0026C63F + + fileRef + 84001FFE1D00176C0026C63F + isa + PBXBuildFile + + 840020001D0017850026C63F + + isa + PBXFileReference + lastKnownFileType + sourcecode.text-based-dylib-definition + name + libz.tbd + path + usr/lib/libz.tbd + sourceTree + SDKROOT + + 840020011D0017850026C63F + + fileRef + 840020001D0017850026C63F + isa + PBXBuildFile + + 840762C31D07BC7D000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFStreamTcpSocket.h + sourceTree + <group> + + 840762C41D07BC7D000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFStreamTcpSocket.m + sourceTree + <group> + + 840762C51D07BC7D000FD0BF + + fileRef + 840762C31D07BC7D000FD0BF + isa + PBXBuildFile + + 840762C61D07BC7D000FD0BF + + fileRef + 840762C41D07BC7D000FD0BF + isa + PBXBuildFile + + 840762C71D07BC8B000FD0BF + + children + + 840762C81D07BC8B000FD0BF + 840762D31D07BC8B000FD0BF + 840762D41D07BC8B000FD0BF + 840762D51D07BC8B000FD0BF + + isa + PBXGroup + name + packet + path + LFLiveKit/packet + sourceTree + SOURCE_ROOT + + 840762C81D07BC8B000FD0BF + + children + + 840762C91D07BC8B000FD0BF + 840762CA1D07BC8B000FD0BF + 840762CB1D07BC8B000FD0BF + 840762CC1D07BC8B000FD0BF + 840762CD1D07BC8B000FD0BF + 840762CE1D07BC8B000FD0BF + 840762CF1D07BC8B000FD0BF + 840762D01D07BC8B000FD0BF + 840762D11D07BC8B000FD0BF + 840762D21D07BC8B000FD0BF + + isa + PBXGroup + path + flv + sourceTree + <group> + + 840762C91D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.c + path + amf.c + sourceTree + <group> + + 840762CA1D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + amf.h + sourceTree + <group> + + 840762CB1D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.c + path + avc.c + sourceTree + <group> + + 840762CC1D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + avc.h + sourceTree + <group> + + 840762CD1D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.c + path + flv.c + sourceTree + <group> + + 840762CE1D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + flv.h + sourceTree + <group> + + 840762CF1D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.c + path + info.c + sourceTree + <group> + + 840762D01D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + info.h + sourceTree + <group> + + 840762D11D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.c + path + types.c + sourceTree + <group> + + 840762D21D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + types.h + sourceTree + <group> + + 840762D31D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFFlvPackage.h + sourceTree + <group> + + 840762D41D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFFlvPackage.m + sourceTree + <group> + + 840762D51D07BC8B000FD0BF + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFStreamPackage.h + sourceTree + <group> + + 840762D61D07BC8B000FD0BF + + fileRef + 840762C91D07BC8B000FD0BF + isa + PBXBuildFile + + 840762D71D07BC8B000FD0BF + + fileRef + 840762CA1D07BC8B000FD0BF + isa + PBXBuildFile + + 840762D81D07BC8B000FD0BF + + fileRef + 840762CB1D07BC8B000FD0BF + isa + PBXBuildFile + + 840762D91D07BC8B000FD0BF + + fileRef + 840762CC1D07BC8B000FD0BF + isa + PBXBuildFile + + 840762DA1D07BC8B000FD0BF + + fileRef + 840762CD1D07BC8B000FD0BF + isa + PBXBuildFile + + 840762DB1D07BC8B000FD0BF + + fileRef + 840762CE1D07BC8B000FD0BF + isa + PBXBuildFile + + 840762DC1D07BC8B000FD0BF + + fileRef + 840762CF1D07BC8B000FD0BF + isa + PBXBuildFile + + 840762DD1D07BC8B000FD0BF + + fileRef + 840762D01D07BC8B000FD0BF + isa + PBXBuildFile + + 840762DE1D07BC8B000FD0BF + + fileRef + 840762D11D07BC8B000FD0BF + isa + PBXBuildFile + + 840762DF1D07BC8B000FD0BF + + fileRef + 840762D21D07BC8B000FD0BF + isa + PBXBuildFile + + 840762E01D07BC8B000FD0BF + + fileRef + 840762D31D07BC8B000FD0BF + isa + PBXBuildFile + + 840762E11D07BC8B000FD0BF + + fileRef + 840762D41D07BC8B000FD0BF + isa + PBXBuildFile + + 840762E21D07BC8B000FD0BF + + fileRef + 840762D51D07BC8B000FD0BF + isa + PBXBuildFile + + 8A5D8B623E50AAC1575D1741 + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + Copy Pods Resources + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + "${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh" + + showEnvVarsInLog + 0 + + 8EE9401DCA9508E918B7FB68 + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + 📦 Check Pods Manifest.lock + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null +if [[ $? != 0 ]] ; then + cat << EOM +error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. +EOM + exit 1 +fi + + showEnvVarsInLog + 0 + + 98F2C3F394BD79A6D6B8424F + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + Check Pods Manifest.lock + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null +if [[ $? != 0 ]] ; then + cat << EOM +error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. +EOM + exit 1 +fi + + showEnvVarsInLog + 0 + + A17586B27CD6843997425CCF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + name + Pods-LFLiveKit.debug.xcconfig + path + Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig + sourceTree + <group> + + AD7F89B4621A7EFEBEA72D49 + + fileRef + B8CB02D2A92EA1F5A262F154 + isa + PBXBuildFile + + B5758EB2A15DAA132D8BF380 + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods.a + sourceTree + BUILT_PRODUCTS_DIR + + B75B965E6B94DE4CBCC82EA7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + name + Pods-LFLiveKit.release.xcconfig + path + Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig + sourceTree + <group> + + B8CB02D2A92EA1F5A262F154 + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods-LFLiveKit.a + sourceTree + BUILT_PRODUCTS_DIR + + BE55DA79155500CDEF87FB5C + + fileRef + B5758EB2A15DAA132D8BF380 + isa + PBXBuildFile + + EDD4B76A07A6817C79BB4E5C + + children + + A17586B27CD6843997425CCF + B75B965E6B94DE4CBCC82EA7 + + isa + PBXGroup + name + Pods + sourceTree + <group> + + + rootObject + 84001F811D0015D10026C63F + + diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 933260dd..37cfbdfa 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -23,9 +23,9 @@ /** live status changed will callback */ - (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange:(LFLiveState)state; /** live debug info callback */ -- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; +- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug *)debugInfo; /** callback socket errorcode */ -- (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode; +- (void)liveSession:(nullable LFLiveSession *)session errorCode:(LFLiveSocketErrorCode)errorCode; @end @class LFLiveStreamInfo; @@ -37,13 +37,13 @@ /// @name Attribute ///============================================================================= /** The delegate of the capture. captureData callback */ -@property (nullable,nonatomic, weak) id delegate; +@property (nullable, nonatomic, weak) id delegate; /** The running control start capture or stop capture*/ @property (nonatomic, assign) BOOL running; /** The preView will show OpenGL ES view*/ -@property (nonatomic, strong,null_resettable) UIView *preView; +@property (nonatomic, strong, null_resettable) UIView *preView; /** The captureDevicePosition control camraPosition ,default front*/ @property (nonatomic, assign) AVCaptureDevicePosition captureDevicePosition; @@ -67,22 +67,22 @@ @property (nonatomic, assign) BOOL mirror; /** The muted control callbackAudioData,muted will memset 0.*/ -@property (nonatomic,assign) BOOL muted; +@property (nonatomic, assign) BOOL muted; /** The stream control upload and package*/ -@property (nullable,nonatomic, strong,readonly) LFLiveStreamInfo * streamInfo; +@property (nullable, nonatomic, strong, readonly) LFLiveStreamInfo *streamInfo; /** The status of the stream .*/ -@property (nonatomic,assign,readonly) LFLiveState state; +@property (nonatomic, assign, readonly) LFLiveState state; /** The showDebugInfo control streamInfo and uploadInfo(1s) *.*/ -@property (nonatomic,assign) BOOL showDebugInfo; +@property (nonatomic, assign) BOOL showDebugInfo; /** The reconnectInterval control reconnect timeInterval(重连间隔) *.*/ -@property (nonatomic,assign) NSUInteger reconnectInterval; +@property (nonatomic, assign) NSUInteger reconnectInterval; /** The reconnectCount control reconnect count (重连次数) *.*/ -@property (nonatomic,assign) NSUInteger reconnectCount; +@property (nonatomic, assign) NSUInteger reconnectCount; #pragma mark - Initializer ///============================================================================= @@ -92,13 +92,13 @@ + (nullable instancetype)new UNAVAILABLE_ATTRIBUTE; /** - The designated initializer. Multiple instances with the same configuration will make the - capture unstable. + The designated initializer. Multiple instances with the same configuration will make the + capture unstable. */ -- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration*)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration*)videoConfiguration NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration NS_DESIGNATED_INITIALIZER; /** The start stream .*/ -- (void)startLive:(nonnull LFLiveStreamInfo*)streamInfo; +- (void)startLive:(nonnull LFLiveStreamInfo *)streamInfo; /** The stop stream .*/ - (void)stopLive; diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 2255b16d..cd7682c6 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -17,7 +17,7 @@ #define LFLiveReportKey @"com.youku.liveSessionReport" -@interface LFLiveSession () +@interface LFLiveSession () { dispatch_semaphore_t _lock; } @@ -46,7 +46,7 @@ @interface LFLiveSession ())encoder audioFrame:(nullable LFAudioFrame*)frame{ - if(self.uploading) [self.socket sendFrame:frame];//<上传 +- (void)audioEncoder:(nullable id)encoder audioFrame:(nullable LFAudioFrame *)frame { + if (self.uploading) [self.socket sendFrame:frame]; //<上传 } -- (void)videoEncoder:(nullable id)encoder videoFrame:(nullable LFVideoFrame*)frame{ - if(self.uploading) [self.socket sendFrame:frame];//<上传 +- (void)videoEncoder:(nullable id)encoder videoFrame:(nullable LFVideoFrame *)frame { + if (self.uploading) [self.socket sendFrame:frame]; //<上传 } #pragma mark -- LFStreamTcpSocketDelegate -- (void)socketStatus:(nullable id)socket status:(LFLiveState)status{ - if(status == LFLiveStart){ - if(!self.uploading){ +- (void)socketStatus:(nullable id)socket status:(LFLiveState)status { + if (status == LFLiveStart) { + if (!self.uploading) { self.timestamp = 0; self.isFirstFrame = YES; self.uploading = YES; @@ -121,40 +121,40 @@ - (void)socketStatus:(nullable id)socket status:(LFLiveState)sta } dispatch_async(dispatch_get_main_queue(), ^{ self.state = status; - if(self.delegate && [self.delegate respondsToSelector:@selector(liveSession:liveStateDidChange:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(liveSession:liveStateDidChange:)]) { [self.delegate liveSession:self liveStateDidChange:status]; } }); } -- (void)socketDidError:(nullable id)socket errorCode:(LFLiveSocketErrorCode)errorCode{ +- (void)socketDidError:(nullable id)socket errorCode:(LFLiveSocketErrorCode)errorCode { dispatch_async(dispatch_get_main_queue(), ^{ - if(self.delegate && [self.delegate respondsToSelector:@selector(liveSession:errorCode:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(liveSession:errorCode:)]) { [self.delegate liveSession:self errorCode:errorCode]; } }); } -- (void)socketDebug:(nullable id)socket debugInfo:(nullable LFLiveDebug*)debugInfo{ +- (void)socketDebug:(nullable id)socket debugInfo:(nullable LFLiveDebug *)debugInfo { self.debugInfo = debugInfo; - if(self.showDebugInfo){ + if (self.showDebugInfo) { dispatch_async(dispatch_get_main_queue(), ^{ - if(self.delegate && [self.delegate respondsToSelector:@selector(liveSession:debugInfo:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(liveSession:debugInfo:)]) { [self.delegate liveSession:self debugInfo:debugInfo]; } }); } } -- (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuffferState)status{ +- (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuffferState)status { NSUInteger videoBitRate = [_videoEncoder videoBitRate]; - if(status == LFLiveBuffferIncrease){ - if(videoBitRate < _videoConfiguration.videoMaxBitRate){ + if (status == LFLiveBuffferIncrease) { + if (videoBitRate < _videoConfiguration.videoMaxBitRate) { videoBitRate = videoBitRate + 50 * 1000; [_videoEncoder setVideoBitRate:videoBitRate]; } - }else{ - if(videoBitRate > _videoConfiguration.videoMinBitRate){ + } else { + if (videoBitRate > _videoConfiguration.videoMinBitRate) { videoBitRate = videoBitRate - 100 * 1000; [_videoEncoder setVideoBitRate:videoBitRate]; } @@ -162,8 +162,8 @@ - (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuf } #pragma mark -- Getter Setter -- (void)setRunning:(BOOL)running{ - if(_running == running) return; +- (void)setRunning:(BOOL)running { + if (_running == running) return; [self willChangeValueForKey:@"running"]; _running = running; [self didChangeValueForKey:@"running"]; @@ -171,27 +171,27 @@ - (void)setRunning:(BOOL)running{ self.audioCaptureSource.running = _running; } -- (void)setPreView:(UIView *)preView{ +- (void)setPreView:(UIView *)preView { [self.videoCaptureSource setPreView:preView]; } -- (UIView*)preView{ +- (UIView *)preView { return self.videoCaptureSource.preView; } -- (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition{ +- (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition { [self.videoCaptureSource setCaptureDevicePosition:captureDevicePosition]; } -- (AVCaptureDevicePosition)captureDevicePosition{ +- (AVCaptureDevicePosition)captureDevicePosition { return self.videoCaptureSource.captureDevicePosition; } -- (void)setBeautyFace:(BOOL)beautyFace{ +- (void)setBeautyFace:(BOOL)beautyFace { [self.videoCaptureSource setBeautyFace:beautyFace]; } -- (BOOL)beautyFace{ +- (BOOL)beautyFace { return self.videoCaptureSource.beautyFace; } @@ -235,65 +235,65 @@ - (BOOL)mirror { return self.videoCaptureSource.mirror; } -- (void)setMuted:(BOOL)muted{ +- (void)setMuted:(BOOL)muted { [self.audioCaptureSource setMuted:muted]; } -- (BOOL)muted{ +- (BOOL)muted { return self.audioCaptureSource.muted; } -- (LFAudioCapture*)audioCaptureSource{ - if(!_audioCaptureSource){ +- (LFAudioCapture *)audioCaptureSource { + if (!_audioCaptureSource) { _audioCaptureSource = [[LFAudioCapture alloc] initWithAudioConfiguration:_audioConfiguration]; _audioCaptureSource.delegate = self; } return _audioCaptureSource; } -- (LFVideoCapture*)videoCaptureSource{ - if(!_videoCaptureSource){ +- (LFVideoCapture *)videoCaptureSource { + if (!_videoCaptureSource) { _videoCaptureSource = [[LFVideoCapture alloc] initWithVideoConfiguration:_videoConfiguration]; _videoCaptureSource.delegate = self; } return _videoCaptureSource; } -- (id)audioEncoder{ - if(!_audioEncoder){ +- (id)audioEncoder { + if (!_audioEncoder) { _audioEncoder = [[LFHardwareAudioEncoder alloc] initWithAudioStreamConfiguration:_audioConfiguration]; [_audioEncoder setDelegate:self]; } return _audioEncoder; } -- (id)videoEncoder{ - if(!_videoEncoder){ +- (id)videoEncoder { + if (!_videoEncoder) { _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; [_videoEncoder setDelegate:self]; } return _videoEncoder; } -- (id)socket{ - if(!_socket){ +- (id)socket { + if (!_socket) { _socket = [[LFStreamRtmpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; [_socket setDelegate:self]; } return _socket; } -- (LFLiveStreamInfo*)streamInfo{ - if(!_streamInfo){ +- (LFLiveStreamInfo *)streamInfo { + if (!_streamInfo) { _streamInfo = [[LFLiveStreamInfo alloc] init]; } return _streamInfo; } -- (uint64_t)currentTimestamp{ +- (uint64_t)currentTimestamp { dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); uint64_t currentts = 0; - if(_isFirstFrame == true) { + if (_isFirstFrame == true) { _timestamp = NOW; _isFirstFrame = false; currentts = 0; diff --git a/LFLiveKit/capture/LFAudioCapture.h b/LFLiveKit/capture/LFAudioCapture.h index ecce3748..00227f0e 100755 --- a/LFLiveKit/capture/LFAudioCapture.h +++ b/LFLiveKit/capture/LFAudioCapture.h @@ -17,7 +17,7 @@ extern NSString *_Nullable const LFAudioComponentFailedToCreateNotification; @class LFAudioCapture; /** LFAudioCapture callback audioData */ @protocol LFAudioCaptureDelegate -- (void)captureOutput:(nullable LFAudioCapture*)capture audioBuffer:(AudioBufferList)inBufferList; +- (void)captureOutput:(nullable LFAudioCapture *)capture audioBuffer:(AudioBufferList)inBufferList; @end @@ -29,10 +29,10 @@ extern NSString *_Nullable const LFAudioComponentFailedToCreateNotification; ///============================================================================= /** The delegate of the capture. captureData callback */ -@property (nullable,nonatomic, weak) id delegate; +@property (nullable, nonatomic, weak) id delegate; /** The muted control callbackAudioData,muted will memset 0.*/ -@property (nonatomic,assign) BOOL muted; +@property (nonatomic, assign) BOOL muted; /** The running control start capture or stop capture*/ @property (nonatomic, assign) BOOL running; @@ -45,8 +45,8 @@ extern NSString *_Nullable const LFAudioComponentFailedToCreateNotification; + (nullable instancetype)new UNAVAILABLE_ATTRIBUTE; /** - The designated initializer. Multiple instances with the same configuration will make the - capture unstable. + The designated initializer. Multiple instances with the same configuration will make the + capture unstable. */ - (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)configuration NS_DESIGNATED_INITIALIZER; diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index 2931b2b5..50f91bab 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -14,9 +14,9 @@ @interface LFAudioCapture () -@property (nonatomic, assign) AudioComponentInstance componetInstance; -@property (nonatomic, assign) AudioComponent component; -@property (nonatomic, strong) dispatch_queue_t taskQueue; +@property (nonatomic, assign) AudioComponentInstance componetInstance; +@property (nonatomic, assign) AudioComponent component; +@property (nonatomic, strong) dispatch_queue_t taskQueue; @property (nonatomic, assign) BOOL isRunning; @property (nonatomic, strong) LFLiveAudioConfiguration *configuration; @@ -25,54 +25,54 @@ @interface LFAudioCapture () @implementation LFAudioCapture #pragma mark -- LiftCycle -- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configuration{ - if(self = [super init]){ +- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configuration { + if (self = [super init]) { _configuration = configuration; self.isRunning = NO; self.taskQueue = dispatch_queue_create("com.youku.Laifeng.audioCapture.Queue", NULL); - + AVAudioSession *session = [AVAudioSession sharedInstance]; - [session setActive:YES error:nil]; - - [[NSNotificationCenter defaultCenter] addObserver: self - selector: @selector(handleRouteChange:) - name: AVAudioSessionRouteChangeNotification - object: session]; - [[NSNotificationCenter defaultCenter] addObserver: self - selector: @selector(handleInterruption:) - name: AVAudioSessionInterruptionNotification - object: session]; - + [session setActive:YES error:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(handleRouteChange:) + name:AVAudioSessionRouteChangeNotification + object:session]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(handleInterruption:) + name:AVAudioSessionInterruptionNotification + object:session]; + NSError *error = nil; - - [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; - + + [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; + [session setMode:AVAudioSessionModeVideoRecording error:&error]; - + if (![session setActive:YES error:&error]) { [self handleAudioComponentCreationFailure]; } - + AudioComponentDescription acd; acd.componentType = kAudioUnitType_Output; acd.componentSubType = kAudioUnitSubType_RemoteIO; acd.componentManufacturer = kAudioUnitManufacturer_Apple; acd.componentFlags = 0; acd.componentFlagsMask = 0; - + self.component = AudioComponentFindNext(NULL, &acd); - + OSStatus status = noErr; status = AudioComponentInstanceNew(self.component, &_componetInstance); - + if (noErr != status) { [self handleAudioComponentCreationFailure]; } - + UInt32 flagOne = 1; - + AudioUnitSetProperty(self.componetInstance, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &flagOne, sizeof(flagOne)); - + AudioStreamBasicDescription desc = {0}; desc.mSampleRate = _configuration.audioSampleRate; desc.mFormatID = kAudioFormatLinearPCM; @@ -82,32 +82,32 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura desc.mBitsPerChannel = 16; desc.mBytesPerFrame = desc.mBitsPerChannel / 8 * desc.mChannelsPerFrame; desc.mBytesPerPacket = desc.mBytesPerFrame * desc.mFramesPerPacket; - + AURenderCallbackStruct cb; cb.inputProcRefCon = (__bridge void *)(self); cb.inputProc = handleInputBuffer; AudioUnitSetProperty(self.componetInstance, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &desc, sizeof(desc)); AudioUnitSetProperty(self.componetInstance, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, 1, &cb, sizeof(cb)); - + status = AudioUnitInitialize(self.componetInstance); - + if (noErr != status) { [self handleAudioComponentCreationFailure]; } - + [session setPreferredSampleRate:_configuration.audioSampleRate error:nil]; - - + + [session setActive:YES error:nil]; } return self; } -- (void)dealloc{ +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - + dispatch_sync(self.taskQueue, ^{ - if(self.componetInstance){ + if (self.componetInstance) { AudioOutputUnitStop(self.componetInstance); AudioComponentInstanceDispose(self.componetInstance); self.componetInstance = nil; @@ -117,16 +117,16 @@ - (void)dealloc{ } #pragma mark -- Setter -- (void)setRunning:(BOOL)running{ - if(_running == running) return; +- (void)setRunning:(BOOL)running { + if (_running == running) return; _running = running; - if(_running){ + if (_running) { dispatch_async(self.taskQueue, ^{ self.isRunning = YES; NSLog(@"MicrophoneSource: startRunning"); AudioOutputUnitStart(self.componetInstance); }); - }else{ + } else { self.isRunning = NO; } } @@ -141,44 +141,44 @@ - (void)handleAudioComponentCreationFailure { #pragma mark -- NSNotification - (void)handleRouteChange:(NSNotification *)notification { AVAudioSession *session = [ AVAudioSession sharedInstance ]; - NSString* seccReason = @""; - NSInteger reason = [[[notification userInfo] objectForKey:AVAudioSessionRouteChangeReasonKey] integerValue]; + NSString *seccReason = @""; + NSInteger reason = [[[notification userInfo] objectForKey:AVAudioSessionRouteChangeReasonKey] integerValue]; // AVAudioSessionRouteDescription* prevRoute = [[notification userInfo] objectForKey:AVAudioSessionRouteChangePreviousRouteKey]; switch (reason) { - case AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory: - seccReason = @"The route changed because no suitable route is now available for the specified category."; - break; - case AVAudioSessionRouteChangeReasonWakeFromSleep: - seccReason = @"The route changed when the device woke up from sleep."; - break; - case AVAudioSessionRouteChangeReasonOverride: - seccReason = @"The output route was overridden by the app."; - break; - case AVAudioSessionRouteChangeReasonCategoryChange: - seccReason = @"The category of the session object changed."; - break; - case AVAudioSessionRouteChangeReasonOldDeviceUnavailable: - seccReason = @"The previous audio output path is no longer available."; - break; - case AVAudioSessionRouteChangeReasonNewDeviceAvailable: - seccReason = @"A preferred new audio output path is now available."; - break; - case AVAudioSessionRouteChangeReasonUnknown: - default: - seccReason = @"The reason for the change is unknown."; - break; + case AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory: + seccReason = @"The route changed because no suitable route is now available for the specified category."; + break; + case AVAudioSessionRouteChangeReasonWakeFromSleep: + seccReason = @"The route changed when the device woke up from sleep."; + break; + case AVAudioSessionRouteChangeReasonOverride: + seccReason = @"The output route was overridden by the app."; + break; + case AVAudioSessionRouteChangeReasonCategoryChange: + seccReason = @"The category of the session object changed."; + break; + case AVAudioSessionRouteChangeReasonOldDeviceUnavailable: + seccReason = @"The previous audio output path is no longer available."; + break; + case AVAudioSessionRouteChangeReasonNewDeviceAvailable: + seccReason = @"A preferred new audio output path is now available."; + break; + case AVAudioSessionRouteChangeReasonUnknown: + default: + seccReason = @"The reason for the change is unknown."; + break; } - NSLog(@"handleRouteChange reason is %@",seccReason); - - AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count]?session.currentRoute.inputs:nil objectAtIndex:0]; + NSLog(@"handleRouteChange reason is %@", seccReason); + + AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count] ? session.currentRoute.inputs : nil objectAtIndex:0]; if (input.portType == AVAudioSessionPortHeadsetMic) { - + } } - (void)handleInterruption:(NSNotification *)notification { NSInteger reason = 0; - NSString* reasonStr = @""; + NSString *reasonStr = @""; if ([notification.name isEqualToString:AVAudioSessionInterruptionNotification]) { //Posted when an audio interruption occurs. reason = [[[notification userInfo] objectForKey:AVAudioSessionInterruptionTypeKey] integerValue]; @@ -190,27 +190,28 @@ - (void)handleInterruption:(NSNotification *)notification { }); } } - + if (reason == AVAudioSessionInterruptionTypeEnded) { reasonStr = @"AVAudioSessionInterruptionTypeEnded"; - NSNumber* seccondReason = [[notification userInfo] objectForKey:AVAudioSessionInterruptionOptionKey] ; + NSNumber *seccondReason = [[notification userInfo] objectForKey:AVAudioSessionInterruptionOptionKey]; switch ([seccondReason integerValue]) { - case AVAudioSessionInterruptionOptionShouldResume: - if (self.isRunning) { - dispatch_async(self.taskQueue, ^{ - NSLog(@"MicrophoneSource: stopRunning"); - AudioOutputUnitStart(self.componetInstance); - }); - } - // Indicates that the audio session is active and immediately ready to be used. Your app can resume the audio operation that was interrupted. - break; - default: - break; + case AVAudioSessionInterruptionOptionShouldResume: + if (self.isRunning) { + dispatch_async(self.taskQueue, ^{ + NSLog(@"MicrophoneSource: stopRunning"); + AudioOutputUnitStart(self.componetInstance); + }); + } + // Indicates that the audio session is active and immediately ready to be used. Your app can resume the audio operation that was interrupted. + break; + default: + break; } } - - }; - NSLog(@"handleInterruption: %@ reason %@",[notification name], reasonStr); + + } + ; + NSLog(@"handleInterruption: %@ reason %@", [notification name], reasonStr); } #pragma mark -- CallBack @@ -222,42 +223,42 @@ static OSStatus handleInputBuffer(void *inRefCon, AudioBufferList *ioData) { @autoreleasepool { LFAudioCapture *source = (__bridge LFAudioCapture *)inRefCon; - if(!source) return -1; - + if (!source) return -1; + AudioBuffer buffer; buffer.mData = NULL; buffer.mDataByteSize = 0; buffer.mNumberChannels = 1; - + AudioBufferList buffers; buffers.mNumberBuffers = 1; buffers.mBuffers[0] = buffer; - + OSStatus status = AudioUnitRender(source.componetInstance, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, &buffers); - + if (!source.isRunning) { dispatch_sync(source.taskQueue, ^{ NSLog(@"MicrophoneSource: stopRunning"); AudioOutputUnitStop(source.componetInstance); }); - + return status; } - + if (source.muted) { for (int i = 0; i < buffers.mNumberBuffers; i++) { AudioBuffer ab = buffers.mBuffers[i]; memset(ab.mData, 0, ab.mDataByteSize); } } - - if(!status) { - if(source.delegate && [source.delegate respondsToSelector:@selector(captureOutput:audioBuffer:)]){ + + if (!status) { + if (source.delegate && [source.delegate respondsToSelector:@selector(captureOutput:audioBuffer:)]) { [source.delegate captureOutput:source audioBuffer:buffers]; } } diff --git a/LFLiveKit/capture/LFVideoCapture.h b/LFLiveKit/capture/LFVideoCapture.h index 3c29484e..eaa056bd 100755 --- a/LFLiveKit/capture/LFVideoCapture.h +++ b/LFLiveKit/capture/LFVideoCapture.h @@ -13,7 +13,7 @@ @class LFVideoCapture; /** LFVideoCapture callback videoData */ @protocol LFVideoCaptureDelegate -- (void)captureOutput:(nullable LFVideoCapture*)capture pixelBuffer:(nullable CVImageBufferRef)pixelBuffer; +- (void)captureOutput:(nullable LFVideoCapture *)capture pixelBuffer:(nullable CVImageBufferRef)pixelBuffer; @end @interface LFVideoCapture : NSObject @@ -24,13 +24,13 @@ ///============================================================================= /** The delegate of the capture. captureData callback */ -@property (nullable,nonatomic, weak) id delegate; +@property (nullable, nonatomic, weak) id delegate; /** The running control start capture or stop capture*/ @property (nonatomic, assign) BOOL running; /** The preView will show OpenGL ES view*/ -@property (null_resettable,nonatomic, strong) UIView * preView; +@property (null_resettable, nonatomic, strong) UIView *preView; /** The captureDevicePosition control camraPosition ,default front*/ @property (nonatomic, assign) AVCaptureDevicePosition captureDevicePosition; @@ -64,8 +64,8 @@ + (nullable instancetype)new UNAVAILABLE_ATTRIBUTE; /** - The designated initializer. Multiple instances with the same configuration will make the - capture unstable. + The designated initializer. Multiple instances with the same configuration will make the + capture unstable. */ - (nullable instancetype)initWithVideoConfiguration:(nullable LFLiveVideoConfiguration *)configuration NS_DESIGNATED_INITIALIZER; diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 3304e3e4..68970a9c 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -30,40 +30,40 @@ @implementation LFVideoCapture @synthesize zoomScale = _zoomScale; #pragma mark -- LifeCycle -- (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configuration{ - if(self = [super init]){ +- (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configuration { + if (self = [super init]) { _configuration = configuration; _videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:_configuration.avSessionPreset cameraPosition:AVCaptureDevicePositionFront]; UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; - if(configuration.landscape){ - if(statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight){ + if (configuration.landscape) { + if (statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight) { NSLog(@"当前设置方向出错"); NSLog(@"当前设置方向出错"); NSLog(@"当前设置方向出错"); _videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; - }else{ + } else { _videoCamera.outputImageOrientation = statusBar; } - }else{ - if(statusBar != UIInterfaceOrientationPortrait && statusBar != UIInterfaceOrientationPortraitUpsideDown){ + } else { + if (statusBar != UIInterfaceOrientationPortrait && statusBar != UIInterfaceOrientationPortraitUpsideDown) { NSLog(@"当前设置方向出错"); NSLog(@"当前设置方向出错"); NSLog(@"当前设置方向出错"); _videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; - }else{ + } else { _videoCamera.outputImageOrientation = statusBar; } } - + _videoCamera.horizontallyMirrorFrontFacingCamera = NO; _videoCamera.horizontallyMirrorRearFacingCamera = NO; _videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; - + _gpuImageView = [[GPUImageView alloc] initWithFrame:[UIScreen mainScreen].bounds]; [_gpuImageView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill]; [_gpuImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; - + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarChanged:) name:UIApplicationWillChangeStatusBarOrientationNotification object:nil]; @@ -75,36 +75,36 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura return self; } -- (void)dealloc{ +- (void)dealloc { [UIApplication sharedApplication].idleTimerDisabled = NO; [[NSNotificationCenter defaultCenter] removeObserver:self]; [_videoCamera stopCameraCapture]; } #pragma mark -- Setter Getter -- (void)setRunning:(BOOL)running{ - if(_running == running) return; +- (void)setRunning:(BOOL)running { + if (_running == running) return; _running = running; - - if(!_running){ + + if (!_running) { [UIApplication sharedApplication].idleTimerDisabled = NO; [_videoCamera stopCameraCapture]; - }else{ + } else { [UIApplication sharedApplication].idleTimerDisabled = YES; [_videoCamera startCameraCapture]; } } -- (void)setPreView:(UIView *)preView{ - if(_gpuImageView.superview) [_gpuImageView removeFromSuperview]; +- (void)setPreView:(UIView *)preView { + if (_gpuImageView.superview) [_gpuImageView removeFromSuperview]; [preView insertSubview:_gpuImageView atIndex:0]; } -- (UIView*)preView{ +- (UIView *)preView { return _gpuImageView.superview; } -- (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition{ +- (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition { [_videoCamera rotateCamera]; _videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; if (captureDevicePosition == AVCaptureDevicePositionFront) { @@ -114,30 +114,30 @@ - (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition{ } } -- (AVCaptureDevicePosition)captureDevicePosition{ +- (AVCaptureDevicePosition)captureDevicePosition { return [_videoCamera cameraPosition]; } -- (void)setVideoFrameRate:(NSInteger)videoFrameRate{ - if(videoFrameRate <= 0) return; - if(videoFrameRate == _videoCamera.frameRate) return; +- (void)setVideoFrameRate:(NSInteger)videoFrameRate { + if (videoFrameRate <= 0) return; + if (videoFrameRate == _videoCamera.frameRate) return; _videoCamera.frameRate = (uint32_t)videoFrameRate; } -- (NSInteger)videoFrameRate{ +- (NSInteger)videoFrameRate { return _videoCamera.frameRate; } - (void)setTorch:(BOOL)torch { BOOL ret; - if(!_videoCamera.captureSession) return; - AVCaptureSession* session = (AVCaptureSession*)_videoCamera.captureSession; + if (!_videoCamera.captureSession) return; + AVCaptureSession *session = (AVCaptureSession *)_videoCamera.captureSession; [session beginConfiguration]; if (_videoCamera.inputCamera) { if (_videoCamera.inputCamera.torchAvailable) { - NSError* err = nil; + NSError *err = nil; if ([_videoCamera.inputCamera lockForConfiguration:&err]) { - [_videoCamera.inputCamera setTorchMode:( torch ? AVCaptureTorchModeOn : AVCaptureTorchModeOff ) ]; + [_videoCamera.inputCamera setTorchMode:(torch ? AVCaptureTorchModeOn : AVCaptureTorchModeOff) ]; [_videoCamera.inputCamera unlockForConfiguration]; ret = (_videoCamera.inputCamera.torchMode == AVCaptureTorchModeOn); } else { @@ -151,37 +151,45 @@ - (void)setTorch:(BOOL)torch { [session commitConfiguration]; _torch = ret; } + - (BOOL)torch { return _videoCamera.inputCamera.torchMode; } + - (void)setMirror:(BOOL)mirror { _videoCamera.horizontallyMirrorFrontFacingCamera = mirror; _videoCamera.horizontallyMirrorRearFacingCamera = mirror; } + - (BOOL)mirror { return _videoCamera.horizontallyMirrorFrontFacingCamera; } + - (void)setBeautyLevel:(CGFloat)beautyLevel { _beautyLevel = beautyLevel; if (_beautyFilter) { [_beautyFilter setBeautyLevel:_beautyLevel]; } } + - (CGFloat)beautyLevel { return _beautyLevel; } + - (void)setBrightLevel:(CGFloat)brightLevel { _brightLevel = brightLevel; if (_beautyFilter) { [_beautyFilter setBrightLevel:brightLevel]; } } + - (CGFloat)brightLevel { return _brightLevel; } + - (void)setZoomScale:(CGFloat)zoomScale { if (self.videoCamera && self.videoCamera.inputCamera) { - AVCaptureDevice* device = (AVCaptureDevice*)self.videoCamera.inputCamera; + AVCaptureDevice *device = (AVCaptureDevice *)self.videoCamera.inputCamera; if ([device lockForConfiguration:nil]) { device.videoZoomFactor = zoomScale; [device unlockForConfiguration]; @@ -194,14 +202,14 @@ - (CGFloat)zoomScale { return _zoomScale; } -- (void)setBeautyFace:(BOOL)beautyFace{ - if(_beautyFace == beautyFace) return; - +- (void)setBeautyFace:(BOOL)beautyFace { + if (_beautyFace == beautyFace) return; + _beautyFace = beautyFace; [_filter removeAllTargets]; [_cropfilter removeAllTargets]; [_videoCamera removeAllTargets]; - + if (_beautyFace) { _output = [[LFGPUImageEmptyFilter alloc] init]; _filter = [[LFGPUImageBeautyFilter alloc] init]; @@ -218,9 +226,9 @@ - (void)setBeautyFace:(BOOL)beautyFace{ [_self processVideo:output]; }]; } - + if (_configuration.isClipVideo) { - if (_configuration.landscape){ + if (_configuration.landscape) { _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0.125, 0, 0.75, 1)]; } else { _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0, 0.125, 1, 0.75)]; @@ -230,14 +238,14 @@ - (void)setBeautyFace:(BOOL)beautyFace{ } else { [_videoCamera addTarget:_filter]; } - + if (_beautyFace) { [_filter addTarget:_output]; [_output addTarget:_gpuImageView]; } else { [_filter addTarget:_gpuImageView]; } - + if (_videoCamera.cameraPosition == AVCaptureDevicePositionFront) { [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; } else { @@ -246,22 +254,22 @@ - (void)setBeautyFace:(BOOL)beautyFace{ } #pragma mark -- Custom Method -- (void)processVideo:(GPUImageOutput *)output{ +- (void)processVideo:(GPUImageOutput *)output { __weak typeof(self) _self = self; @autoreleasepool { GPUImageFramebuffer *imageFramebuffer = output.framebufferForOutput; CVPixelBufferRef pixelBuffer = [imageFramebuffer pixelBuffer]; - - if(pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]){ + + if (pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]) { [_self.delegate captureOutput:_self pixelBuffer:pixelBuffer]; } - + } } #pragma mark Notification -- (void)willEnterBackground:(NSNotification*)notification{ +- (void)willEnterBackground:(NSNotification *)notification { [UIApplication sharedApplication].idleTimerDisabled = NO; [_videoCamera pauseCameraCapture]; runSynchronouslyOnVideoProcessingQueue(^{ @@ -269,24 +277,24 @@ - (void)willEnterBackground:(NSNotification*)notification{ }); } -- (void)willEnterForeground:(NSNotification*)notification{ +- (void)willEnterForeground:(NSNotification *)notification { [_videoCamera resumeCameraCapture]; [UIApplication sharedApplication].idleTimerDisabled = YES; } -- (void)statusBarChanged:(NSNotification*)notification{ - NSLog(@"UIApplicationWillChangeStatusBarOrientationNotification. UserInfo: %@", notification.userInfo); +- (void)statusBarChanged:(NSNotification *)notification { + NSLog(@"UIApplicationWillChangeStatusBarOrientationNotification. UserInfo: %@", notification.userInfo); UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; - if(_configuration.landscape){ - if(statusBar == UIInterfaceOrientationLandscapeLeft){ + if (_configuration.landscape) { + if (statusBar == UIInterfaceOrientationLandscapeLeft) { self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight; - }else if(statusBar == UIInterfaceOrientationLandscapeRight){ + } else if (statusBar == UIInterfaceOrientationLandscapeRight) { self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; } - }else{ - if(statusBar == UIInterfaceOrientationPortrait){ + } else { + if (statusBar == UIInterfaceOrientationPortrait) { self.videoCamera.outputImageOrientation = UIInterfaceOrientationPortraitUpsideDown; - }else if(statusBar == UIInterfaceOrientationPortraitUpsideDown){ + } else if (statusBar == UIInterfaceOrientationPortraitUpsideDown) { self.videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; } } diff --git a/LFLiveKit/coder/LFAudioEncoding.h b/LFLiveKit/coder/LFAudioEncoding.h index 1f988866..91be9ffa 100755 --- a/LFLiveKit/coder/LFAudioEncoding.h +++ b/LFLiveKit/coder/LFAudioEncoding.h @@ -15,7 +15,7 @@ /// 编码器编码后回调 @protocol LFAudioEncodingDelegate @required -- (void)audioEncoder:(nullable id)encoder audioFrame:(nullable LFAudioFrame*)frame; +- (void)audioEncoder:(nullable id)encoder audioFrame:(nullable LFAudioFrame *)frame; @end /// 编码器抽象的接口 @@ -24,8 +24,8 @@ - (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeStamp; - (void)stopEncoder; @optional -- (nullable instancetype)initWithAudioStreamConfiguration:(nullable LFLiveAudioConfiguration*)configuration; +- (nullable instancetype)initWithAudioStreamConfiguration:(nullable LFLiveAudioConfiguration *)configuration; - (void)setDelegate:(nullable id)delegate; -- (nullable NSData*)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength; +- (nullable NSData *)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength; @end diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.m b/LFLiveKit/coder/LFHardwareAudioEncoder.m index d67efb69..0ba7c33b 100755 --- a/LFLiveKit/coder/LFHardwareAudioEncoder.m +++ b/LFLiveKit/coder/LFHardwareAudioEncoder.m @@ -19,39 +19,39 @@ @interface LFHardwareAudioEncoder (){ @implementation LFHardwareAudioEncoder -- (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)configuration{ - if(self = [super init]){ +- (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)configuration { + if (self = [super init]) { _configuration = configuration; } return self; } -- (void)dealloc{ - if(aacBuf) free(aacBuf); +- (void)dealloc { + if (aacBuf) free(aacBuf); } #pragma mark -- LFAudioEncoder -- (void)setDelegate:(id)delegate{ +- (void)setDelegate:(id)delegate { _aacDeleage = delegate; } -- (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeStamp{ - if (![self createAudioConvert]){ +- (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeStamp { + if (![self createAudioConvert]) { return; } - - if(!aacBuf){ + + if (!aacBuf) { aacBuf = malloc(inBufferList.mBuffers[0].mDataByteSize); } - + // 初始化一个输出缓冲列表 AudioBufferList outBufferList; - outBufferList.mNumberBuffers = 1; + outBufferList.mNumberBuffers = 1; outBufferList.mBuffers[0].mNumberChannels = inBufferList.mBuffers[0].mNumberChannels; - outBufferList.mBuffers[0].mDataByteSize = inBufferList.mBuffers[0].mDataByteSize; // 设置缓冲区大小 - outBufferList.mBuffers[0].mData = aacBuf; // 设置AAC缓冲区 - UInt32 outputDataPacketSize = 1; - if (AudioConverterFillComplexBuffer(m_converter, inputDataProc, &inBufferList, &outputDataPacketSize, &outBufferList, NULL) != noErr){ + outBufferList.mBuffers[0].mDataByteSize = inBufferList.mBuffers[0].mDataByteSize; // 设置缓冲区大小 + outBufferList.mBuffers[0].mData = aacBuf; // 设置AAC缓冲区 + UInt32 outputDataPacketSize = 1; + if (AudioConverterFillComplexBuffer(m_converter, inputDataProc, &inBufferList, &outputDataPacketSize, &outBufferList, NULL) != noErr) { return; } LFAudioFrame *audioFrame = [LFAudioFrame new]; @@ -61,22 +61,22 @@ - (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeSt char exeData[2]; exeData[0] = _configuration.asc[0]; exeData[1] = _configuration.asc[1]; - audioFrame.audioInfo =[NSData dataWithBytes:exeData length:2]; - if(self.aacDeleage && [self.aacDeleage respondsToSelector:@selector(audioEncoder:audioFrame:)]){ + audioFrame.audioInfo = [NSData dataWithBytes:exeData length:2]; + if (self.aacDeleage && [self.aacDeleage respondsToSelector:@selector(audioEncoder:audioFrame:)]) { [self.aacDeleage audioEncoder:self audioFrame:audioFrame]; } } -- (void)stopEncoder{ - +- (void)stopEncoder { + } #pragma mark -- CustomMethod --(BOOL)createAudioConvert{ //根据输入样本初始化一个编码转换器 - if (m_converter != nil){ +- (BOOL)createAudioConvert { //根据输入样本初始化一个编码转换器 + if (m_converter != nil) { return TRUE; } - + AudioStreamBasicDescription inputFormat = {0}; inputFormat.mSampleRate = _configuration.audioSampleRate; inputFormat.mFormatID = kAudioFormatLinearPCM; @@ -86,14 +86,14 @@ -(BOOL)createAudioConvert{ //根据输入样本初始化一个编码转换器 inputFormat.mBitsPerChannel = 16; inputFormat.mBytesPerFrame = inputFormat.mBitsPerChannel / 8 * inputFormat.mChannelsPerFrame; inputFormat.mBytesPerPacket = inputFormat.mBytesPerFrame * inputFormat.mFramesPerPacket; - + AudioStreamBasicDescription outputFormat; // 这里开始是输出音频格式 memset(&outputFormat, 0, sizeof(outputFormat)); - outputFormat.mSampleRate = inputFormat.mSampleRate; // 采样率保持一致 - outputFormat.mFormatID = kAudioFormatMPEG4AAC; // AAC编码 kAudioFormatMPEG4AAC kAudioFormatMPEG4AAC_HE_V2 + outputFormat.mSampleRate = inputFormat.mSampleRate; // 采样率保持一致 + outputFormat.mFormatID = kAudioFormatMPEG4AAC; // AAC编码 kAudioFormatMPEG4AAC kAudioFormatMPEG4AAC_HE_V2 outputFormat.mChannelsPerFrame = (UInt32)_configuration.numberOfChannels;; - outputFormat.mFramesPerPacket = 1024; // AAC一帧是1024个字节 - + outputFormat.mFramesPerPacket = 1024; // AAC一帧是1024个字节 + const OSType subtype = kAudioFormatMPEG4AAC; AudioClassDescription requestedCodecs[2] = { { @@ -108,30 +108,30 @@ -(BOOL)createAudioConvert{ //根据输入样本初始化一个编码转换器 } }; OSStatus result = AudioConverterNewSpecific(&inputFormat, &outputFormat, 2, requestedCodecs, &m_converter); - - - if(result != noErr) return NO; - + + + if (result != noErr) return NO; + return YES; } --(AudioClassDescription*)getAudioClassDescriptionWithType:(UInt32)type fromManufacturer:(UInt32)manufacturer { // 获得相应的编码器 +- (AudioClassDescription *)getAudioClassDescriptionWithType:(UInt32)type fromManufacturer:(UInt32)manufacturer { // 获得相应的编码器 static AudioClassDescription audioDesc; - + UInt32 encoderSpecifier = type, size = 0; OSStatus status; - + memset(&audioDesc, 0, sizeof(audioDesc)); status = AudioFormatGetPropertyInfo(kAudioFormatProperty_Encoders, sizeof(encoderSpecifier), &encoderSpecifier, &size); if (status) { return nil; } - + uint32_t count = size / sizeof(AudioClassDescription); AudioClassDescription descs[count]; AudioFormatGetProperty(kAudioFormatProperty_Encoders, sizeof(encoderSpecifier), &encoderSpecifier, &size, descs); - for (uint32_t i = 0; i < count; i++){ - if ((type == descs[i].mSubType) && (manufacturer == descs[i].mManufacturer)){ + for (uint32_t i = 0; i < count; i++) { + if ((type == descs[i].mSubType) && (manufacturer == descs[i].mManufacturer)) { memcpy(&audioDesc, &descs[i], sizeof(audioDesc)); break; } @@ -140,11 +140,11 @@ -(AudioClassDescription*)getAudioClassDescriptionWithType:(UInt32)type fromManuf } #pragma mark -- AudioCallBack -OSStatus inputDataProc(AudioConverterRef inConverter, UInt32 *ioNumberDataPackets, AudioBufferList *ioData,AudioStreamPacketDescription **outDataPacketDescription, void *inUserData) { //AudioConverterFillComplexBuffer 编码过程中,会要求这个函数来填充输入数据,也就是原始PCM数据 - AudioBufferList bufferList = *(AudioBufferList*)inUserData; +OSStatus inputDataProc(AudioConverterRef inConverter, UInt32 *ioNumberDataPackets, AudioBufferList *ioData, AudioStreamPacketDescription * *outDataPacketDescription, void *inUserData) { //AudioConverterFillComplexBuffer 编码过程中,会要求这个函数来填充输入数据,也就是原始PCM数据 + AudioBufferList bufferList = *(AudioBufferList *)inUserData; ioData->mBuffers[0].mNumberChannels = 1; - ioData->mBuffers[0].mData = bufferList.mBuffers[0].mData; - ioData->mBuffers[0].mDataByteSize = bufferList.mBuffers[0].mDataByteSize; + ioData->mBuffers[0].mData = bufferList.mBuffers[0].mData; + ioData->mBuffers[0].mDataByteSize = bufferList.mBuffers[0].mDataByteSize; return noErr; } @@ -157,7 +157,7 @@ -(AudioClassDescription*)getAudioClassDescriptionWithType:(UInt32)type fromManuf * See: http://wiki.multimedia.cx/index.php?title=ADTS * Also: http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Channel_Configurations **/ -- (NSData*)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength { +- (NSData *)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength { int adtsLength = 7; char *packet = malloc(sizeof(char) * adtsLength); // Variables Recycled by addADTStoPacket @@ -167,8 +167,8 @@ - (NSData*)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength { int chanCfg = (int)channel; //MPEG-4 Audio Channel Configuration. 1 Channel front-center NSUInteger fullLength = adtsLength + rawDataLength; // fill in ADTS data - packet[0] = (char)0xFF; // 11111111 = syncword - packet[1] = (char)0xF9; // 1111 1 00 1 = syncword MPEG-2 Layer CRC + packet[0] = (char)0xFF; // 11111111 = syncword + packet[1] = (char)0xF9; // 1111 1 00 1 = syncword MPEG-2 Layer CRC packet[2] = (char)(((profile-1)<<6) + (freqIdx<<2) +(chanCfg>>2)); packet[3] = (char)(((chanCfg&3)<<6) + (fullLength>>11)); packet[4] = (char)((fullLength&0x7FF) >> 3); diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/coder/LFHardwareVideoEncoder.m index f3cdeb02..3c84881c 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -19,7 +19,7 @@ @interface LFHardwareVideoEncoder (){ } @property (nonatomic, strong) LFLiveVideoConfiguration *configuration; -@property (nonatomic,weak) id h264Delegate; +@property (nonatomic, weak) id h264Delegate; @property (nonatomic) BOOL isBackGround; @property (nonatomic) NSInteger currentVideoBitRate; @@ -28,68 +28,67 @@ @interface LFHardwareVideoEncoder (){ @implementation LFHardwareVideoEncoder #pragma mark -- LifeCycle -- (instancetype)initWithVideoStreamConfiguration:(LFLiveVideoConfiguration *)configuration{ - if(self = [super init]){ +- (instancetype)initWithVideoStreamConfiguration:(LFLiveVideoConfiguration *)configuration { + if (self = [super init]) { _configuration = configuration; [self initCompressionSession]; - + #ifdef DEBUG enabledWriteVideoFile = NO; [self initForFilePath]; #endif - + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; } return self; } -- (void)initCompressionSession{ - if(compressionSession){ +- (void)initCompressionSession { + if (compressionSession) { VTCompressionSessionCompleteFrames(compressionSession, kCMTimeInvalid); - + VTCompressionSessionInvalidate(compressionSession); CFRelease(compressionSession); compressionSession = NULL; } - + OSStatus status = VTCompressionSessionCreate(NULL, _configuration.videoSize.width, _configuration.videoSize.height, kCMVideoCodecType_H264, NULL, NULL, NULL, VideoCompressonOutputCallback, (__bridge void *)self, &compressionSession); - if(status != noErr){ + if (status != noErr) { return; } - + _currentVideoBitRate = _configuration.videoBitRate; - VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_MaxKeyFrameInterval,(__bridge CFTypeRef)@(_configuration.videoMaxKeyframeInterval)); - VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration,(__bridge CFTypeRef)@(_configuration.videoMaxKeyframeInterval)); + VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_MaxKeyFrameInterval, (__bridge CFTypeRef)@(_configuration.videoMaxKeyframeInterval)); + VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration, (__bridge CFTypeRef)@(_configuration.videoMaxKeyframeInterval)); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_ExpectedFrameRate, (__bridge CFTypeRef)@(_configuration.videoFrameRate)); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_AverageBitRate, (__bridge CFTypeRef)@(_configuration.videoBitRate)); - NSArray *limit = @[@(_configuration.videoBitRate * 1.5/8),@(1)]; + NSArray *limit = @[@(_configuration.videoBitRate * 1.5/8), @(1)]; VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_DataRateLimits, (__bridge CFArrayRef)limit); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_RealTime, kCFBooleanFalse); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_ProfileLevel, kVTProfileLevel_H264_Main_AutoLevel); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_AllowFrameReordering, kCFBooleanFalse); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_H264EntropyMode, kVTH264EntropyMode_CABAC); VTCompressionSessionPrepareToEncodeFrames(compressionSession); - + } -- (void)setVideoBitRate:(NSInteger)videoBitRate{ - if(_isBackGround) return; +- (void)setVideoBitRate:(NSInteger)videoBitRate { + if (_isBackGround) return; VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_AverageBitRate, (__bridge CFTypeRef)@(videoBitRate)); - NSArray *limit = @[@(videoBitRate * 1.5/8),@(1)]; + NSArray *limit = @[@(videoBitRate * 1.5/8), @(1)]; VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_DataRateLimits, (__bridge CFArrayRef)limit); _currentVideoBitRate = videoBitRate; } --(NSInteger)videoBitRate{ +- (NSInteger)videoBitRate { return _currentVideoBitRate; } -- (void)dealloc{ - if(compressionSession != NULL) - { +- (void)dealloc { + if (compressionSession != NULL) { VTCompressionSessionCompleteFrames(compressionSession, kCMTimeInvalid); - + VTCompressionSessionInvalidate(compressionSession); CFRelease(compressionSession); compressionSession = NULL; @@ -98,90 +97,86 @@ - (void)dealloc{ } #pragma mark -- LFVideoEncoder -- (void)encodeVideoData:(CVImageBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp{ - if(_isBackGround) return; - - frameCount ++; +- (void)encodeVideoData:(CVImageBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp { + if (_isBackGround) return; + + frameCount++; CMTime presentationTimeStamp = CMTimeMake(frameCount, 1000); VTEncodeInfoFlags flags; CMTime duration = CMTimeMake(1, (int32_t)_configuration.videoFrameRate); - + NSDictionary *properties = nil; - if(frameCount % (int32_t)_configuration.videoMaxKeyframeInterval == 0){ + if (frameCount % (int32_t)_configuration.videoMaxKeyframeInterval == 0) { properties = @{(__bridge NSString *)kVTEncodeFrameOptionKey_ForceKeyFrame: @YES}; } NSNumber *timeNumber = @(timeStamp); - + VTCompressionSessionEncodeFrame(compressionSession, pixelBuffer, presentationTimeStamp, duration, (__bridge CFDictionaryRef)properties, (__bridge_retained void *)timeNumber, &flags); } -- (void)stopEncoder{ +- (void)stopEncoder { VTCompressionSessionCompleteFrames(compressionSession, kCMTimeIndefinite); } -- (void)setDelegate:(id)delegate{ +- (void)setDelegate:(id)delegate { _h264Delegate = delegate; } #pragma mark -- NSNotification -- (void)willEnterBackground:(NSNotification*)notification{ +- (void)willEnterBackground:(NSNotification *)notification { _isBackGround = YES; } -- (void)willEnterForeground:(NSNotification*)notification{ +- (void)willEnterForeground:(NSNotification *)notification { [self initCompressionSession]; _isBackGround = NO; } #pragma mark -- VideoCallBack -static void VideoCompressonOutputCallback(void *VTref, void *VTFrameRef, OSStatus status, VTEncodeInfoFlags infoFlags, CMSampleBufferRef sampleBuffer) -{ - if(!sampleBuffer) return; +static void VideoCompressonOutputCallback(void *VTref, void *VTFrameRef, OSStatus status, VTEncodeInfoFlags infoFlags, CMSampleBufferRef sampleBuffer){ + if (!sampleBuffer) return; CFArrayRef array = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true); - if(!array) return; + if (!array) return; CFDictionaryRef dic = (CFDictionaryRef)CFArrayGetValueAtIndex(array, 0); - if(!dic) return; - + if (!dic) return; + BOOL keyframe = !CFDictionaryContainsKey(dic, kCMSampleAttachmentKey_NotSync); - uint64_t timeStamp = [((__bridge_transfer NSNumber*)VTFrameRef) longLongValue]; - + uint64_t timeStamp = [((__bridge_transfer NSNumber *)VTFrameRef) longLongValue]; + LFHardwareVideoEncoder *videoEncoder = (__bridge LFHardwareVideoEncoder *)VTref; - if(status != noErr){ + if (status != noErr) { return; } - - if (keyframe && !videoEncoder->sps) - { + + if (keyframe && !videoEncoder->sps) { CMFormatDescriptionRef format = CMSampleBufferGetFormatDescription(sampleBuffer); - + size_t sparameterSetSize, sparameterSetCount; const uint8_t *sparameterSet; - OSStatus statusCode = CMVideoFormatDescriptionGetH264ParameterSetAtIndex(format, 0, &sparameterSet, &sparameterSetSize, &sparameterSetCount, 0 ); - if (statusCode == noErr) - { + OSStatus statusCode = CMVideoFormatDescriptionGetH264ParameterSetAtIndex(format, 0, &sparameterSet, &sparameterSetSize, &sparameterSetCount, 0); + if (statusCode == noErr) { size_t pparameterSetSize, pparameterSetCount; const uint8_t *pparameterSet; - OSStatus statusCode = CMVideoFormatDescriptionGetH264ParameterSetAtIndex(format, 1, &pparameterSet, &pparameterSetSize, &pparameterSetCount, 0 ); - if (statusCode == noErr) - { + OSStatus statusCode = CMVideoFormatDescriptionGetH264ParameterSetAtIndex(format, 1, &pparameterSet, &pparameterSetSize, &pparameterSetCount, 0); + if (statusCode == noErr) { videoEncoder->sps = [NSData dataWithBytes:sparameterSet length:sparameterSetSize]; videoEncoder->pps = [NSData dataWithBytes:pparameterSet length:pparameterSetSize]; - - if(videoEncoder->enabledWriteVideoFile){ + + if (videoEncoder->enabledWriteVideoFile) { NSMutableData *data = [[NSMutableData alloc] init]; - uint8_t header[] = {0x00,0x00,0x00,0x01}; + uint8_t header[] = {0x00, 0x00, 0x00, 0x01}; [data appendBytes:header length:4]; [data appendData:videoEncoder->sps]; [data appendBytes:header length:4]; [data appendData:videoEncoder->pps]; - fwrite(data.bytes, 1,data.length,videoEncoder->fp); + fwrite(data.bytes, 1, data.length, videoEncoder->fp); } - + } } } - - + + CMBlockBufferRef dataBuffer = CMSampleBufferGetDataBuffer(sampleBuffer); size_t length, totalLength; char *dataPointer; @@ -193,7 +188,7 @@ static void VideoCompressonOutputCallback(void *VTref, void *VTFrameRef, OSStatu // Read the NAL unit length uint32_t NALUnitLength = 0; memcpy(&NALUnitLength, dataPointer + bufferOffset, AVCCHeaderLength); - + NALUnitLength = CFSwapInt32BigToHost(NALUnitLength); LFVideoFrame *videoFrame = [LFVideoFrame new]; @@ -202,55 +197,52 @@ static void VideoCompressonOutputCallback(void *VTref, void *VTFrameRef, OSStatu videoFrame.isKeyFrame = keyframe; videoFrame.sps = videoEncoder->sps; videoFrame.pps = videoEncoder->pps; - - if(videoEncoder.h264Delegate && [videoEncoder.h264Delegate respondsToSelector:@selector(videoEncoder:videoFrame:)]){ + + if (videoEncoder.h264Delegate && [videoEncoder.h264Delegate respondsToSelector:@selector(videoEncoder:videoFrame:)]) { [videoEncoder.h264Delegate videoEncoder:videoEncoder videoFrame:videoFrame]; } - - if(videoEncoder->enabledWriteVideoFile){ + + if (videoEncoder->enabledWriteVideoFile) { NSMutableData *data = [[NSMutableData alloc] init]; - if(keyframe){ - uint8_t header[] = {0x00,0x00,0x00,0x01}; + if (keyframe) { + uint8_t header[] = {0x00, 0x00, 0x00, 0x01}; [data appendBytes:header length:4]; - }else{ - uint8_t header[] = {0x00,0x00,0x01}; + } else { + uint8_t header[] = {0x00, 0x00, 0x01}; [data appendBytes:header length:3]; } [data appendData:videoFrame.data]; - - fwrite(data.bytes, 1,data.length,videoEncoder->fp); + + fwrite(data.bytes, 1, data.length, videoEncoder->fp); } - + bufferOffset += AVCCHeaderLength + NALUnitLength; - + } - + } } -- (void)initForFilePath -{ +- (void)initForFilePath { char *path = [self GetFilePathByfileName:"IOSCamDemo.h264"]; - NSLog(@"%s",path); - self->fp = fopen(path,"wb"); + NSLog(@"%s", path); + self->fp = fopen(path, "wb"); } - -- (char*)GetFilePathByfileName:(char*)filename -{ - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); +- (char *)GetFilePathByfileName:(char *)filename { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *strName = [NSString stringWithFormat:@"%s",filename]; - + NSString *strName = [NSString stringWithFormat:@"%s", filename]; + NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; - + NSUInteger len = [writablePath length]; - - char *filepath = (char*)malloc(sizeof(char) * (len + 1)); - + + char *filepath = (char *)malloc(sizeof(char) * (len + 1)); + [writablePath getCString:filepath maxLength:len + 1 encoding:[NSString defaultCStringEncoding]]; - + return filepath; } diff --git a/LFLiveKit/coder/LFVideoEncoding.h b/LFLiveKit/coder/LFVideoEncoding.h index 73ece788..dea1174a 100755 --- a/LFLiveKit/coder/LFVideoEncoding.h +++ b/LFLiveKit/coder/LFVideoEncoding.h @@ -14,7 +14,7 @@ /// 编码器编码后回调 @protocol LFVideoEncodingDelegate @required -- (void)videoEncoder:(nullable id)encoder videoFrame:(nullable LFVideoFrame*)frame; +- (void)videoEncoder:(nullable id)encoder videoFrame:(nullable LFVideoFrame *)frame; @end /// 编码器抽象的接口 @@ -24,7 +24,7 @@ - (void)stopEncoder; @optional @property (nonatomic, assign) NSInteger videoBitRate; -- (nullable instancetype)initWithVideoStreamConfiguration:(nullable LFLiveVideoConfiguration*)configuration; +- (nullable instancetype)initWithVideoStreamConfiguration:(nullable LFLiveVideoConfiguration *)configuration; - (void)setDelegate:(nullable id)delegate; @end diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.h b/LFLiveKit/configuration/LFLiveAudioConfiguration.h index 32e8c38a..d232bbe1 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.h +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.h @@ -9,7 +9,7 @@ #import /// 音频码率 -typedef NS_ENUM(NSUInteger, LFLiveAudioBitRate) { +typedef NS_ENUM (NSUInteger, LFLiveAudioBitRate) { /// 32Kbps 音频码率 LFLiveAudioBitRate_32Kbps = 32000, /// 64Kbps 音频码率 @@ -23,7 +23,7 @@ typedef NS_ENUM(NSUInteger, LFLiveAudioBitRate) { }; /// 采样率 (默认44.1Hz iphoneg6以上48Hz) -typedef NS_ENUM(NSUInteger, LFLiveAudioSampleRate){ +typedef NS_ENUM (NSUInteger, LFLiveAudioSampleRate){ /// 44.1Hz 采样率 LFLiveAudioSampleRate_44100Hz = 44100, /// 48Hz 采样率 @@ -33,7 +33,7 @@ typedef NS_ENUM(NSUInteger, LFLiveAudioSampleRate){ }; /// Audio Live quality(音频质量) -typedef NS_ENUM(NSUInteger, LFLiveAudioQuality){ +typedef NS_ENUM (NSUInteger, LFLiveAudioQuality){ /// 高音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 32Kbps LFLiveAudioQuality_Low = 0, /// 高音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 64Kbps @@ -46,7 +46,7 @@ typedef NS_ENUM(NSUInteger, LFLiveAudioQuality){ LFLiveAudioQuality_Default = LFLiveAudioQuality_Medium }; -@interface LFLiveAudioConfiguration : NSObject +@interface LFLiveAudioConfiguration : NSObject /// 默认音频配置 + (instancetype)defaultConfiguration; @@ -64,6 +64,6 @@ typedef NS_ENUM(NSUInteger, LFLiveAudioQuality){ // 码率 @property (nonatomic, assign) LFLiveAudioBitRate audioBitrate; /// flv编码音频头 44100 为0x12 0x10 -@property (nonatomic ,assign,readonly) char *asc; +@property (nonatomic, assign, readonly) char *asc; @end diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.m b/LFLiveKit/configuration/LFLiveAudioConfiguration.m index d520c6b5..817fdd7a 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.m +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.m @@ -12,119 +12,117 @@ @implementation LFLiveAudioConfiguration #pragma mark -- LifyCycle -+ (instancetype)defaultConfiguration{ ++ (instancetype)defaultConfiguration { LFLiveAudioConfiguration *audioConfig = [LFLiveAudioConfiguration defaultConfigurationForQuality:LFLiveAudioQuality_Default]; return audioConfig; } -+ (instancetype)defaultConfigurationForQuality:(LFLiveAudioQuality)audioQuality{ ++ (instancetype)defaultConfigurationForQuality:(LFLiveAudioQuality)audioQuality { LFLiveAudioConfiguration *audioConfig = [LFLiveAudioConfiguration new]; audioConfig.numberOfChannels = 2; switch (audioQuality) { - case LFLiveAudioQuality_Default:{ - audioConfig.audioBitrate = LFLiveAudioBitRate_64Kbps; - } - break; - case LFLiveAudioQuality_Low:{ - audioConfig.audioBitrate = LFLiveAudioBitRate_32Kbps; - } - case LFLiveAudioQuality_High:{ - audioConfig.audioBitrate = LFLiveAudioBitRate_96Kbps; - } - case LFLiveAudioQuality_VeryHigh:{ - audioConfig.audioBitrate = LFLiveAudioBitRate_128Kbps; - } - break; - default: - break; + case LFLiveAudioQuality_Default: { + audioConfig.audioBitrate = LFLiveAudioBitRate_64Kbps; + } + break; + case LFLiveAudioQuality_Low: { + audioConfig.audioBitrate = LFLiveAudioBitRate_32Kbps; + } + case LFLiveAudioQuality_High: { + audioConfig.audioBitrate = LFLiveAudioBitRate_96Kbps; + } + case LFLiveAudioQuality_VeryHigh: { + audioConfig.audioBitrate = LFLiveAudioBitRate_128Kbps; + } + break; + default: + break; } audioConfig.audioSampleRate = [self.class isNewThaniPhone6] ? LFLiveAudioSampleRate_48000Hz : LFLiveAudioSampleRate_44100Hz; - + return audioConfig; } -- (instancetype)init{ - if(self = [super init]){ +- (instancetype)init { + if (self = [super init]) { _asc = malloc(2); } return self; } -- (void)dealloc{ - if(_asc) free(_asc); +- (void)dealloc { + if (_asc) free(_asc); } #pragma mark Setter -- (void)setAudioSampleRate:(LFLiveAudioSampleRate)audioSampleRate{ +- (void)setAudioSampleRate:(LFLiveAudioSampleRate)audioSampleRate { _audioSampleRate = audioSampleRate; NSInteger sampleRateIndex = [self sampleRateIndex:audioSampleRate]; self.asc[0] = 0x10 | ((sampleRateIndex>>1) & 0x3); self.asc[1] = ((sampleRateIndex & 0x1)<<7) | ((self.numberOfChannels & 0xF) << 3); } -- (void)setNumberOfChannels:(NSUInteger)numberOfChannels{ +- (void)setNumberOfChannels:(NSUInteger)numberOfChannels { _numberOfChannels = numberOfChannels; NSInteger sampleRateIndex = [self sampleRateIndex:self.audioSampleRate]; self.asc[0] = 0x10 | ((sampleRateIndex>>1) & 0x3); self.asc[1] = ((sampleRateIndex & 0x1)<<7) | ((numberOfChannels & 0xF) << 3); } - #pragma mark -- CustomMethod -- (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz{ +- (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { NSInteger sampleRateIndex = 0; - switch(frequencyInHz) { - case 96000: - sampleRateIndex = 0; - break; - case 88200: - sampleRateIndex = 1; - break; - case 64000: - sampleRateIndex = 2; - break; - case 48000: - sampleRateIndex = 3; - break; - case 44100: - sampleRateIndex = 4; - break; - case 32000: - sampleRateIndex = 5; - break; - case 24000: - sampleRateIndex = 6; - break; - case 22050: - sampleRateIndex = 7; - break; - case 16000: - sampleRateIndex = 8; - break; - case 12000: - sampleRateIndex = 9; - break; - case 11025: - sampleRateIndex = 10; - break; - case 8000: - sampleRateIndex = 11; - break; - case 7350: - sampleRateIndex = 12; - break; - default: - sampleRateIndex = 15; + switch (frequencyInHz) { + case 96000: + sampleRateIndex = 0; + break; + case 88200: + sampleRateIndex = 1; + break; + case 64000: + sampleRateIndex = 2; + break; + case 48000: + sampleRateIndex = 3; + break; + case 44100: + sampleRateIndex = 4; + break; + case 32000: + sampleRateIndex = 5; + break; + case 24000: + sampleRateIndex = 6; + break; + case 22050: + sampleRateIndex = 7; + break; + case 16000: + sampleRateIndex = 8; + break; + case 12000: + sampleRateIndex = 9; + break; + case 11025: + sampleRateIndex = 10; + break; + case 8000: + sampleRateIndex = 11; + break; + case 7350: + sampleRateIndex = 12; + break; + default: + sampleRateIndex = 15; } return sampleRateIndex; } - #pragma mark -- DeviceCategory -+(NSString*)deviceName{ ++ (NSString *)deviceName { struct utsname systemInfo; uname(&systemInfo); - + return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; } @@ -139,14 +137,14 @@ +(NSString*)deviceName{ //@"iPhone8,1" on iPhone 6S //@"iPhone8,2" on iPhone 6S Plus -+(BOOL) isNewThaniPhone6{ ++ (BOOL)isNewThaniPhone6 { NSString *device = [self deviceName]; NSLog(@"device %@", device); if (device == nil) { return NO; } NSArray *array = [device componentsSeparatedByString:@","]; - if (array.count <2) { + if (array.count < 2) { return NO; } NSString *model = [array objectAtIndex:0]; @@ -159,7 +157,7 @@ +(BOOL) isNewThaniPhone6{ return YES; } } - + if ([model hasPrefix:@"iPad"]) { NSString *str1 = [model substringFromIndex:[@"iPad" length]]; NSUInteger num = [str1 integerValue]; @@ -167,7 +165,7 @@ +(BOOL) isNewThaniPhone6{ return YES; } } - + return NO; } @@ -188,7 +186,7 @@ - (id)initWithCoder:(NSCoder *)aDecoder { return self; } -- (BOOL)isEqual:(id)other{ +- (BOOL)isEqual:(id)other { if (other == self) { return YES; } else if (![super isEqual:other]) { @@ -196,9 +194,9 @@ - (BOOL)isEqual:(id)other{ } else { LFLiveAudioConfiguration *object = other; return object.numberOfChannels == self.numberOfChannels && - object.audioBitrate == self.audioBitrate && - strcmp(object.asc, self.asc) == 0 && - object.audioSampleRate == self.audioSampleRate; + object.audioBitrate == self.audioBitrate && + strcmp(object.asc, self.asc) == 0 && + object.audioSampleRate == self.audioSampleRate; } } @@ -208,25 +206,25 @@ - (NSUInteger)hash { @(_audioSampleRate), [NSString stringWithUTF8String:self.asc], @(_audioBitrate)]; - + for (NSObject *value in values) { hash ^= value.hash; } return hash; } -- (id)copyWithZone:(nullable NSZone *)zone{ +- (id)copyWithZone:(nullable NSZone *)zone { LFLiveAudioConfiguration *other = [self.class defaultConfiguration]; return other; } -- (NSString *)description{ +- (NSString *)description { NSMutableString *desc = @"".mutableCopy; - [desc appendFormat:@"",self]; - [desc appendFormat:@" numberOfChannels:%zi",self.numberOfChannels]; - [desc appendFormat:@" audioSampleRate:%zi",self.audioSampleRate]; - [desc appendFormat:@" audioBitrate:%zi",self.audioBitrate]; - [desc appendFormat:@" audioHeader:%@",[NSString stringWithUTF8String:self.asc]]; + [desc appendFormat:@"", self]; + [desc appendFormat:@" numberOfChannels:%zi", self.numberOfChannels]; + [desc appendFormat:@" audioSampleRate:%zi", self.audioSampleRate]; + [desc appendFormat:@" audioBitrate:%zi", self.audioBitrate]; + [desc appendFormat:@" audioHeader:%@", [NSString stringWithUTF8String:self.asc]]; return desc; } diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/configuration/LFLiveVideoConfiguration.h index c2261215..b7d0e260 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.h +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.h @@ -10,7 +10,7 @@ #import /// 视频分辨率(都是16:9 当此设备不支持当前分辨率,自动降低一级) -typedef NS_ENUM(NSUInteger, LFLiveVideoSessionPreset){ +typedef NS_ENUM (NSUInteger, LFLiveVideoSessionPreset){ /// 低分辨率 LFCaptureSessionPreset360x640 = 0, /// 中分辨率 @@ -20,7 +20,7 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoSessionPreset){ }; /// 视频质量 -typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){ +typedef NS_ENUM (NSUInteger, LFLiveVideoQuality){ /// 分辨率: 360 *640 帧数:15 码率:500Kps LFLiveVideoQuality_Low1 = 0, /// 分辨率: 360 *640 帧数:24 码率:800Kps @@ -43,7 +43,7 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){ LFLiveVideoQuality_Default = LFLiveVideoQuality_Low2 }; -@interface LFLiveVideoConfiguration : NSObject +@interface LFLiveVideoConfiguration : NSObject /// 默认视频配置 + (instancetype)defaultConfiguration; @@ -88,9 +88,9 @@ typedef NS_ENUM(NSUInteger, LFLiveVideoQuality){ @property (nonatomic, assign) LFLiveVideoSessionPreset sessionPreset; ///< ≈sde3分辨率 -@property (nonatomic, assign,readonly) NSString *avSessionPreset; +@property (nonatomic, assign, readonly) NSString *avSessionPreset; ///< 是否裁剪 -@property (nonatomic, assign,readonly) BOOL isClipVideo; +@property (nonatomic, assign, readonly) BOOL isClipVideo; @end diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index ac8a6ed1..c5406963 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -12,208 +12,208 @@ @implementation LFLiveVideoConfiguration #pragma mark -- LifeCycle -+ (instancetype)defaultConfiguration{ ++ (instancetype)defaultConfiguration { LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Default]; return configuration; } -+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality{ ++ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality { LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:videoQuality landscape:NO]; return configuration; } -+ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape{ ++ (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape { LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration new]; switch (videoQuality) { - case LFLiveVideoQuality_Low1: - { - configuration.sessionPreset = LFCaptureSessionPreset360x640; - configuration.videoFrameRate = 15; - configuration.videoMaxFrameRate = 15; - configuration.videoMinFrameRate = 10; - configuration.videoBitRate = 500 * 1000; - configuration.videoMaxBitRate = 600 * 1000; - configuration.videoMinBitRate = 400 * 1000; - configuration.videoSize = CGSizeMake(360, 640); - } - break; - case LFLiveVideoQuality_Low2: - { - configuration.sessionPreset = LFCaptureSessionPreset360x640; - configuration.videoFrameRate = 24; - configuration.videoMaxFrameRate = 24; - configuration.videoMinFrameRate = 12; - configuration.videoBitRate = 600 * 1000; - configuration.videoMaxBitRate = 720 * 1000; - configuration.videoMinBitRate = 500 * 1000; - configuration.videoSize = CGSizeMake(360, 640); - } - break; - case LFLiveVideoQuality_Low3: - { - configuration.sessionPreset = LFCaptureSessionPreset360x640; - configuration.videoFrameRate = 30; - configuration.videoMaxFrameRate = 30; - configuration.videoMinFrameRate = 15; - configuration.videoBitRate = 800 * 1000; - configuration.videoMaxBitRate = 960 * 1000; - configuration.videoMinBitRate = 600 * 1000; - configuration.videoSize = CGSizeMake(360, 640); - } - break; - case LFLiveVideoQuality_Medium1: - { - configuration.sessionPreset = LFCaptureSessionPreset540x960; - configuration.videoFrameRate = 15; - configuration.videoMaxFrameRate = 15; - configuration.videoMinFrameRate = 10; - configuration.videoBitRate = 800 * 1000; - configuration.videoMaxBitRate = 960 * 1000; - configuration.videoMinBitRate = 500 * 1000; - configuration.videoSize = CGSizeMake(540, 960); - } - break; - case LFLiveVideoQuality_Medium2: - { - configuration.sessionPreset = LFCaptureSessionPreset540x960; - configuration.videoFrameRate = 24; - configuration.videoMaxFrameRate = 24; - configuration.videoMinFrameRate = 12; - configuration.videoBitRate = 800 * 1000; - configuration.videoMaxBitRate = 960 * 1000; - configuration.videoMinBitRate = 500 * 1000; - configuration.videoSize = CGSizeMake(540, 960); - } - break; - case LFLiveVideoQuality_Medium3: - { - configuration.sessionPreset = LFCaptureSessionPreset540x960; - configuration.videoFrameRate = 30; - configuration.videoMaxFrameRate = 30; - configuration.videoMinFrameRate = 15; - configuration.videoBitRate = 1000 * 1000; - configuration.videoMaxBitRate = 1200 * 1000; - configuration.videoMinBitRate = 500 * 1000; - configuration.videoSize = CGSizeMake(540, 960); - } - break; - case LFLiveVideoQuality_High1: - { - configuration.sessionPreset = LFCaptureSessionPreset720x1280; - configuration.videoFrameRate = 15; - configuration.videoMaxFrameRate = 15; - configuration.videoMinFrameRate = 10; - configuration.videoBitRate = 1000 * 1000; - configuration.videoMaxBitRate = 1200 * 1000; - configuration.videoMinBitRate = 500 * 1000; - configuration.videoSize = CGSizeMake(720, 1280); - } - break; - case LFLiveVideoQuality_High2: - { - configuration.sessionPreset = LFCaptureSessionPreset720x1280; - configuration.videoFrameRate = 24; - configuration.videoMaxFrameRate = 24; - configuration.videoMinFrameRate = 12; - configuration.videoBitRate = 1200 * 1000; - configuration.videoMaxBitRate = 1440 * 1000; - configuration.videoMinBitRate = 800 * 1000; - configuration.videoSize = CGSizeMake(720, 1280); - } - break; - case LFLiveVideoQuality_High3: - { - configuration.sessionPreset = LFCaptureSessionPreset720x1280; - configuration.videoFrameRate = 30; - configuration.videoMaxFrameRate = 30; - configuration.videoMinFrameRate = 15; - configuration.videoBitRate = 1200 * 1000; - configuration.videoMaxBitRate = 1440 * 1000; - configuration.videoMinBitRate = 500 * 1000; - configuration.videoSize = CGSizeMake(720, 1280); - } - break; - default: - break; + case LFLiveVideoQuality_Low1: + { + configuration.sessionPreset = LFCaptureSessionPreset360x640; + configuration.videoFrameRate = 15; + configuration.videoMaxFrameRate = 15; + configuration.videoMinFrameRate = 10; + configuration.videoBitRate = 500 * 1000; + configuration.videoMaxBitRate = 600 * 1000; + configuration.videoMinBitRate = 400 * 1000; + configuration.videoSize = CGSizeMake(360, 640); + } + break; + case LFLiveVideoQuality_Low2: + { + configuration.sessionPreset = LFCaptureSessionPreset360x640; + configuration.videoFrameRate = 24; + configuration.videoMaxFrameRate = 24; + configuration.videoMinFrameRate = 12; + configuration.videoBitRate = 600 * 1000; + configuration.videoMaxBitRate = 720 * 1000; + configuration.videoMinBitRate = 500 * 1000; + configuration.videoSize = CGSizeMake(360, 640); + } + break; + case LFLiveVideoQuality_Low3: + { + configuration.sessionPreset = LFCaptureSessionPreset360x640; + configuration.videoFrameRate = 30; + configuration.videoMaxFrameRate = 30; + configuration.videoMinFrameRate = 15; + configuration.videoBitRate = 800 * 1000; + configuration.videoMaxBitRate = 960 * 1000; + configuration.videoMinBitRate = 600 * 1000; + configuration.videoSize = CGSizeMake(360, 640); + } + break; + case LFLiveVideoQuality_Medium1: + { + configuration.sessionPreset = LFCaptureSessionPreset540x960; + configuration.videoFrameRate = 15; + configuration.videoMaxFrameRate = 15; + configuration.videoMinFrameRate = 10; + configuration.videoBitRate = 800 * 1000; + configuration.videoMaxBitRate = 960 * 1000; + configuration.videoMinBitRate = 500 * 1000; + configuration.videoSize = CGSizeMake(540, 960); + } + break; + case LFLiveVideoQuality_Medium2: + { + configuration.sessionPreset = LFCaptureSessionPreset540x960; + configuration.videoFrameRate = 24; + configuration.videoMaxFrameRate = 24; + configuration.videoMinFrameRate = 12; + configuration.videoBitRate = 800 * 1000; + configuration.videoMaxBitRate = 960 * 1000; + configuration.videoMinBitRate = 500 * 1000; + configuration.videoSize = CGSizeMake(540, 960); + } + break; + case LFLiveVideoQuality_Medium3: + { + configuration.sessionPreset = LFCaptureSessionPreset540x960; + configuration.videoFrameRate = 30; + configuration.videoMaxFrameRate = 30; + configuration.videoMinFrameRate = 15; + configuration.videoBitRate = 1000 * 1000; + configuration.videoMaxBitRate = 1200 * 1000; + configuration.videoMinBitRate = 500 * 1000; + configuration.videoSize = CGSizeMake(540, 960); + } + break; + case LFLiveVideoQuality_High1: + { + configuration.sessionPreset = LFCaptureSessionPreset720x1280; + configuration.videoFrameRate = 15; + configuration.videoMaxFrameRate = 15; + configuration.videoMinFrameRate = 10; + configuration.videoBitRate = 1000 * 1000; + configuration.videoMaxBitRate = 1200 * 1000; + configuration.videoMinBitRate = 500 * 1000; + configuration.videoSize = CGSizeMake(720, 1280); + } + break; + case LFLiveVideoQuality_High2: + { + configuration.sessionPreset = LFCaptureSessionPreset720x1280; + configuration.videoFrameRate = 24; + configuration.videoMaxFrameRate = 24; + configuration.videoMinFrameRate = 12; + configuration.videoBitRate = 1200 * 1000; + configuration.videoMaxBitRate = 1440 * 1000; + configuration.videoMinBitRate = 800 * 1000; + configuration.videoSize = CGSizeMake(720, 1280); + } + break; + case LFLiveVideoQuality_High3: + { + configuration.sessionPreset = LFCaptureSessionPreset720x1280; + configuration.videoFrameRate = 30; + configuration.videoMaxFrameRate = 30; + configuration.videoMinFrameRate = 15; + configuration.videoBitRate = 1200 * 1000; + configuration.videoMaxBitRate = 1440 * 1000; + configuration.videoMinBitRate = 500 * 1000; + configuration.videoSize = CGSizeMake(720, 1280); + } + break; + default: + break; } configuration.sessionPreset = [configuration supportSessionPreset:configuration.sessionPreset]; configuration.videoMaxKeyframeInterval = configuration.videoFrameRate*2; configuration.landscape = landscape; CGSize size = configuration.videoSize; - if(landscape){ + if (landscape) { configuration.videoSize = CGSizeMake(size.height, size.width); - }else{ + } else { configuration.videoSize = CGSizeMake(size.width, size.height); } return configuration; } #pragma mark -- Setter Getter -- (NSString*)avSessionPreset{ +- (NSString *)avSessionPreset { NSString *avSessionPreset = nil; switch (self.sessionPreset) { - case LFCaptureSessionPreset360x640: - { - avSessionPreset = AVCaptureSessionPreset640x480; - } - break; - case LFCaptureSessionPreset540x960: - { - avSessionPreset = AVCaptureSessionPresetiFrame960x540; - } - break; - case LFCaptureSessionPreset720x1280: - { - avSessionPreset = AVCaptureSessionPreset1280x720; - } - break; - default:{ - avSessionPreset = AVCaptureSessionPreset640x480; - } - break; + case LFCaptureSessionPreset360x640: + { + avSessionPreset = AVCaptureSessionPreset640x480; + } + break; + case LFCaptureSessionPreset540x960: + { + avSessionPreset = AVCaptureSessionPresetiFrame960x540; + } + break; + case LFCaptureSessionPreset720x1280: + { + avSessionPreset = AVCaptureSessionPreset1280x720; + } + break; + default: { + avSessionPreset = AVCaptureSessionPreset640x480; + } + break; } return avSessionPreset; } -- (void)setVideoMaxBitRate:(NSUInteger)videoMaxBitRate{ - if(videoMaxBitRate <= _videoBitRate) return; +- (void)setVideoMaxBitRate:(NSUInteger)videoMaxBitRate { + if (videoMaxBitRate <= _videoBitRate) return; _videoMaxBitRate = videoMaxBitRate; } -- (void)setVideoMinBitRate:(NSUInteger)videoMinBitRate{ - if(videoMinBitRate >= _videoBitRate) return; +- (void)setVideoMinBitRate:(NSUInteger)videoMinBitRate { + if (videoMinBitRate >= _videoBitRate) return; _videoMinBitRate = videoMinBitRate; } -- (void)setVideoMaxFrameRate:(NSUInteger)videoMaxFrameRate{ - if(videoMaxFrameRate <= _videoFrameRate) return; +- (void)setVideoMaxFrameRate:(NSUInteger)videoMaxFrameRate { + if (videoMaxFrameRate <= _videoFrameRate) return; _videoMaxFrameRate = videoMaxFrameRate; } -- (void)setVideoMinFrameRate:(NSUInteger)videoMinFrameRate{ - if(videoMinFrameRate >= _videoFrameRate) return; +- (void)setVideoMinFrameRate:(NSUInteger)videoMinFrameRate { + if (videoMinFrameRate >= _videoFrameRate) return; _videoMinFrameRate = videoMinFrameRate; } #pragma mark -- Custom Method -- (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{ +- (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset { NSString *avSessionPreset = [self avSessionPreset]; AVCaptureSession *session = [[AVCaptureSession alloc] init]; - - if(![session canSetSessionPreset:avSessionPreset]){ - if(sessionPreset == LFCaptureSessionPreset720x1280){ + + if (![session canSetSessionPreset:avSessionPreset]) { + if (sessionPreset == LFCaptureSessionPreset720x1280) { sessionPreset = LFCaptureSessionPreset540x960; - if(![session canSetSessionPreset:avSessionPreset]){ + if (![session canSetSessionPreset:avSessionPreset]) { sessionPreset = LFCaptureSessionPreset360x640; } - }else if(sessionPreset == LFCaptureSessionPreset540x960){ + } else if (sessionPreset == LFCaptureSessionPreset540x960) { sessionPreset = LFCaptureSessionPreset360x640; } } return sessionPreset; } -- (BOOL)isClipVideo{ +- (BOOL)isClipVideo { return self.sessionPreset == LFCaptureSessionPreset360x640 ? YES : NO; } @@ -251,57 +251,56 @@ - (NSUInteger)hash { @(self.isClipVideo), self.avSessionPreset, @(self.sessionPreset), - @(self.landscape),]; - + @(self.landscape), ]; + for (NSObject *value in values) { hash ^= value.hash; } return hash; } -- (BOOL)isEqual:(id)other -{ +- (BOOL)isEqual:(id)other { if (other == self) { return YES; } else if (![super isEqual:other]) { return NO; } else { LFLiveVideoConfiguration *object = other; - return CGSizeEqualToSize(object.videoSize, self.videoSize) && - object.videoFrameRate == self.videoFrameRate && - object.videoMaxFrameRate == self.videoMaxFrameRate && - object.videoMinFrameRate == self.videoMinFrameRate && - object.videoMaxKeyframeInterval == self.videoMaxKeyframeInterval && - object.videoBitRate == self.videoBitRate && - object.videoMaxBitRate == self.videoMaxBitRate && - object.videoMinBitRate == self.videoMinBitRate && - object.isClipVideo == self.isClipVideo && - [object.avSessionPreset isEqualToString:self.avSessionPreset] && - object.sessionPreset == self.sessionPreset && - object.landscape == self.landscape; + return CGSizeEqualToSize(object.videoSize, self.videoSize) && + object.videoFrameRate == self.videoFrameRate && + object.videoMaxFrameRate == self.videoMaxFrameRate && + object.videoMinFrameRate == self.videoMinFrameRate && + object.videoMaxKeyframeInterval == self.videoMaxKeyframeInterval && + object.videoBitRate == self.videoBitRate && + object.videoMaxBitRate == self.videoMaxBitRate && + object.videoMinBitRate == self.videoMinBitRate && + object.isClipVideo == self.isClipVideo && + [object.avSessionPreset isEqualToString:self.avSessionPreset] && + object.sessionPreset == self.sessionPreset && + object.landscape == self.landscape; } } -- (id)copyWithZone:(nullable NSZone *)zone{ +- (id)copyWithZone:(nullable NSZone *)zone { LFLiveVideoConfiguration *other = [self.class defaultConfiguration]; return other; } -- (NSString *)description{ +- (NSString *)description { NSMutableString *desc = @"".mutableCopy; - [desc appendFormat:@"",self]; - [desc appendFormat:@" videoSize:%@",NSStringFromCGSize(self.videoSize)]; - [desc appendFormat:@" videoFrameRate:%zi",self.videoFrameRate]; - [desc appendFormat:@" videoMaxFrameRate:%zi",self.videoMaxFrameRate]; - [desc appendFormat:@" videoMinFrameRate:%zi",self.videoMinFrameRate]; - [desc appendFormat:@" videoMaxKeyframeInterval:%zi",self.videoMaxKeyframeInterval]; - [desc appendFormat:@" videoBitRate:%zi",self.videoBitRate]; - [desc appendFormat:@" videoMaxBitRate:%zi",self.videoMaxBitRate]; - [desc appendFormat:@" videoMinBitRate:%zi",self.videoMinBitRate]; - [desc appendFormat:@" isClipVideo:%zi",self.isClipVideo]; - [desc appendFormat:@" avSessionPreset:%@",self.avSessionPreset]; - [desc appendFormat:@" sessionPreset:%zi",self.sessionPreset]; - [desc appendFormat:@" landscape:%zi",self.landscape]; + [desc appendFormat:@"", self]; + [desc appendFormat:@" videoSize:%@", NSStringFromCGSize(self.videoSize)]; + [desc appendFormat:@" videoFrameRate:%zi", self.videoFrameRate]; + [desc appendFormat:@" videoMaxFrameRate:%zi", self.videoMaxFrameRate]; + [desc appendFormat:@" videoMinFrameRate:%zi", self.videoMinFrameRate]; + [desc appendFormat:@" videoMaxKeyframeInterval:%zi", self.videoMaxKeyframeInterval]; + [desc appendFormat:@" videoBitRate:%zi", self.videoBitRate]; + [desc appendFormat:@" videoMaxBitRate:%zi", self.videoMaxBitRate]; + [desc appendFormat:@" videoMinBitRate:%zi", self.videoMinBitRate]; + [desc appendFormat:@" isClipVideo:%zi", self.isClipVideo]; + [desc appendFormat:@" avSessionPreset:%@", self.avSessionPreset]; + [desc appendFormat:@" sessionPreset:%zi", self.sessionPreset]; + [desc appendFormat:@" landscape:%zi", self.landscape]; return desc; } diff --git a/LFLiveKit/filter/LFGPUImageBeautyFilter.m b/LFLiveKit/filter/LFGPUImageBeautyFilter.m index 335f1cc9..4fc8bbac 100755 --- a/LFLiveKit/filter/LFGPUImageBeautyFilter.m +++ b/LFLiveKit/filter/LFGPUImageBeautyFilter.m @@ -2,237 +2,233 @@ #if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE NSString *const kLFGPUImageBeautyFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 singleStepOffset; - uniform highp vec4 params; - uniform highp float brightness; - - const highp vec3 W = vec3(0.299,0.587,0.114); - const highp mat3 saturateMatrix = mat3( - 1.1102,-0.0598,-0.061, - -0.0774,1.0826,-0.1186, - -0.0228,-0.0228,1.1772); - highp vec2 blurCoordinates[24]; - - highp float hardLight(highp float color) { - if(color <= 0.5) + ( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 singleStepOffset; + uniform highp vec4 params; + uniform highp float brightness; + + const highp vec3 W = vec3(0.299, 0.587, 0.114); + const highp mat3 saturateMatrix = mat3( + 1.1102, -0.0598, -0.061, + -0.0774, 1.0826, -0.1186, + -0.0228, -0.0228, 1.1772); + highp vec2 blurCoordinates[24]; + + highp float hardLight(highp float color) { + if (color <= 0.5) color = color * color * 2.0; else color = 1.0 - ((1.0 - color)*(1.0 - color) * 2.0); return color; } - - void main() - { - highp vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb; - blurCoordinates[0] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -10.0); - blurCoordinates[1] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 10.0); - blurCoordinates[2] = textureCoordinate.xy + singleStepOffset * vec2(-10.0, 0.0); - blurCoordinates[3] = textureCoordinate.xy + singleStepOffset * vec2(10.0, 0.0); - blurCoordinates[4] = textureCoordinate.xy + singleStepOffset * vec2(5.0, -8.0); - blurCoordinates[5] = textureCoordinate.xy + singleStepOffset * vec2(5.0, 8.0); - blurCoordinates[6] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, 8.0); - blurCoordinates[7] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, -8.0); - blurCoordinates[8] = textureCoordinate.xy + singleStepOffset * vec2(8.0, -5.0); - blurCoordinates[9] = textureCoordinate.xy + singleStepOffset * vec2(8.0, 5.0); - blurCoordinates[10] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, 5.0); - blurCoordinates[11] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, -5.0); - blurCoordinates[12] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -6.0); - blurCoordinates[13] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 6.0); - blurCoordinates[14] = textureCoordinate.xy + singleStepOffset * vec2(6.0, 0.0); - blurCoordinates[15] = textureCoordinate.xy + singleStepOffset * vec2(-6.0, 0.0); - blurCoordinates[16] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, -4.0); - blurCoordinates[17] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, 4.0); - blurCoordinates[18] = textureCoordinate.xy + singleStepOffset * vec2(4.0, -4.0); - blurCoordinates[19] = textureCoordinate.xy + singleStepOffset * vec2(4.0, 4.0); - blurCoordinates[20] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, -2.0); - blurCoordinates[21] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, 2.0); - blurCoordinates[22] = textureCoordinate.xy + singleStepOffset * vec2(2.0, -2.0); - blurCoordinates[23] = textureCoordinate.xy + singleStepOffset * vec2(2.0, 2.0); - - highp float sampleColor = centralColor.g * 22.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[0]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[1]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[2]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[3]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[4]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[5]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[6]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[7]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[8]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[9]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[10]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[11]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[12]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[13]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[14]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[15]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[16]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[17]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[18]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[19]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[20]).g * 3.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[21]).g * 3.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[22]).g * 3.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[23]).g * 3.0; - - sampleColor = sampleColor / 62.0; - - highp float highPass = centralColor.g - sampleColor + 0.5; - - for(int i = 0; i < 5;i++) - { - highPass = hardLight(highPass); - } - highp float lumance = dot(centralColor, W); - - highp float alpha = pow(lumance, params.r); - - highp vec3 smoothColor = centralColor + (centralColor-vec3(highPass))*alpha*0.1; - - smoothColor.r = clamp(pow(smoothColor.r, params.g),0.0,1.0); - smoothColor.g = clamp(pow(smoothColor.g, params.g),0.0,1.0); - smoothColor.b = clamp(pow(smoothColor.b, params.g),0.0,1.0); - - highp vec3 lvse = vec3(1.0)-(vec3(1.0)-smoothColor)*(vec3(1.0)-centralColor); - highp vec3 bianliang = max(smoothColor, centralColor); - highp vec3 rouguang = 2.0*centralColor*smoothColor + centralColor*centralColor - 2.0*centralColor*centralColor*smoothColor; - - gl_FragColor = vec4(mix(centralColor, lvse, alpha), 1.0); - gl_FragColor.rgb = mix(gl_FragColor.rgb, bianliang, alpha); - gl_FragColor.rgb = mix(gl_FragColor.rgb, rouguang, params.b); - - highp vec3 satcolor = gl_FragColor.rgb * saturateMatrix; - gl_FragColor.rgb = mix(gl_FragColor.rgb, satcolor, params.a); - gl_FragColor.rgb = vec3(gl_FragColor.rgb + vec3(brightness)); - } -); + + void main(){ + highp vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb; + blurCoordinates[0] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -10.0); + blurCoordinates[1] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 10.0); + blurCoordinates[2] = textureCoordinate.xy + singleStepOffset * vec2(-10.0, 0.0); + blurCoordinates[3] = textureCoordinate.xy + singleStepOffset * vec2(10.0, 0.0); + blurCoordinates[4] = textureCoordinate.xy + singleStepOffset * vec2(5.0, -8.0); + blurCoordinates[5] = textureCoordinate.xy + singleStepOffset * vec2(5.0, 8.0); + blurCoordinates[6] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, 8.0); + blurCoordinates[7] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, -8.0); + blurCoordinates[8] = textureCoordinate.xy + singleStepOffset * vec2(8.0, -5.0); + blurCoordinates[9] = textureCoordinate.xy + singleStepOffset * vec2(8.0, 5.0); + blurCoordinates[10] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, 5.0); + blurCoordinates[11] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, -5.0); + blurCoordinates[12] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -6.0); + blurCoordinates[13] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 6.0); + blurCoordinates[14] = textureCoordinate.xy + singleStepOffset * vec2(6.0, 0.0); + blurCoordinates[15] = textureCoordinate.xy + singleStepOffset * vec2(-6.0, 0.0); + blurCoordinates[16] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, -4.0); + blurCoordinates[17] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, 4.0); + blurCoordinates[18] = textureCoordinate.xy + singleStepOffset * vec2(4.0, -4.0); + blurCoordinates[19] = textureCoordinate.xy + singleStepOffset * vec2(4.0, 4.0); + blurCoordinates[20] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, -2.0); + blurCoordinates[21] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, 2.0); + blurCoordinates[22] = textureCoordinate.xy + singleStepOffset * vec2(2.0, -2.0); + blurCoordinates[23] = textureCoordinate.xy + singleStepOffset * vec2(2.0, 2.0); + + highp float sampleColor = centralColor.g * 22.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[0]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[1]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[2]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[3]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[4]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[5]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[6]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[7]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[8]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[9]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[10]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[11]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[12]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[13]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[14]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[15]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[16]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[17]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[18]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[19]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[20]).g * 3.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[21]).g * 3.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[22]).g * 3.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[23]).g * 3.0; + + sampleColor = sampleColor / 62.0; + + highp float highPass = centralColor.g - sampleColor + 0.5; + + for (int i = 0; i < 5; i++) { + highPass = hardLight(highPass); + } + highp float lumance = dot(centralColor, W); + + highp float alpha = pow(lumance, params.r); + + highp vec3 smoothColor = centralColor + (centralColor-vec3(highPass))*alpha*0.1; + + smoothColor.r = clamp(pow(smoothColor.r, params.g), 0.0, 1.0); + smoothColor.g = clamp(pow(smoothColor.g, params.g), 0.0, 1.0); + smoothColor.b = clamp(pow(smoothColor.b, params.g), 0.0, 1.0); + + highp vec3 lvse = vec3(1.0)-(vec3(1.0)-smoothColor)*(vec3(1.0)-centralColor); + highp vec3 bianliang = max(smoothColor, centralColor); + highp vec3 rouguang = 2.0*centralColor*smoothColor + centralColor*centralColor - 2.0*centralColor*centralColor*smoothColor; + + gl_FragColor = vec4(mix(centralColor, lvse, alpha), 1.0); + gl_FragColor.rgb = mix(gl_FragColor.rgb, bianliang, alpha); + gl_FragColor.rgb = mix(gl_FragColor.rgb, rouguang, params.b); + + highp vec3 satcolor = gl_FragColor.rgb * saturateMatrix; + gl_FragColor.rgb = mix(gl_FragColor.rgb, satcolor, params.a); + gl_FragColor.rgb = vec3(gl_FragColor.rgb + vec3(brightness)); +} + + ); #else NSString *const kLFGPUImageBeautyFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform mediump vec2 singleStepOffset; - uniform mediump vec4 params; - uniform mediump float brightness; - const mediump mat3 saturateMatrix = mat3( - 1.1102,-0.0598,-0.061, - -0.0774,1.0826,-0.1186, - -0.0228,-0.0228,1.1772); - const mediump vec3 W = vec3(0.299,0.587,0.114); - mediump vec2 blurCoordinates[24]; - - mediump float hardLight(mediump float color) -{ - if(color <= 0.5) + ( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform mediump vec2 singleStepOffset; + uniform mediump vec4 params; + uniform mediump float brightness; + const mediump mat3 saturateMatrix = mat3( + 1.1102, -0.0598, -0.061, + -0.0774, 1.0826, -0.1186, + -0.0228, -0.0228, 1.1772); + const mediump vec3 W = vec3(0.299, 0.587, 0.114); + mediump vec2 blurCoordinates[24]; + + mediump float hardLight(mediump float color){ + if (color <= 0.5) color = color * color * 2.0; else color = 1.0 - ((1.0 - color)*(1.0 - color) * 2.0); return color; } - - void main() - { - mediump vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb; - blurCoordinates[0] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -10.0); - blurCoordinates[1] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 10.0); - blurCoordinates[2] = textureCoordinate.xy + singleStepOffset * vec2(-10.0, 0.0); - blurCoordinates[3] = textureCoordinate.xy + singleStepOffset * vec2(10.0, 0.0); - blurCoordinates[4] = textureCoordinate.xy + singleStepOffset * vec2(5.0, -8.0); - blurCoordinates[5] = textureCoordinate.xy + singleStepOffset * vec2(5.0, 8.0); - blurCoordinates[6] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, 8.0); - blurCoordinates[7] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, -8.0); - blurCoordinates[8] = textureCoordinate.xy + singleStepOffset * vec2(8.0, -5.0); - blurCoordinates[9] = textureCoordinate.xy + singleStepOffset * vec2(8.0, 5.0); - blurCoordinates[10] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, 5.0); - blurCoordinates[11] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, -5.0); - blurCoordinates[12] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -6.0); - blurCoordinates[13] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 6.0); - blurCoordinates[14] = textureCoordinate.xy + singleStepOffset * vec2(6.0, 0.0); - blurCoordinates[15] = textureCoordinate.xy + singleStepOffset * vec2(-6.0, 0.0); - blurCoordinates[16] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, -4.0); - blurCoordinates[17] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, 4.0); - blurCoordinates[18] = textureCoordinate.xy + singleStepOffset * vec2(4.0, -4.0); - blurCoordinates[19] = textureCoordinate.xy + singleStepOffset * vec2(4.0, 4.0); - blurCoordinates[20] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, -2.0); - blurCoordinates[21] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, 2.0); - blurCoordinates[22] = textureCoordinate.xy + singleStepOffset * vec2(2.0, -2.0); - blurCoordinates[23] = textureCoordinate.xy + singleStepOffset * vec2(2.0, 2.0); - - mediump float sampleColor = centralColor.g * 22.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[0]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[1]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[2]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[3]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[4]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[5]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[6]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[7]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[8]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[9]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[10]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[11]).g; - sampleColor += texture2D(inputImageTexture, blurCoordinates[12]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[13]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[14]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[15]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[16]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[17]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[18]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[19]).g * 2.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[20]).g * 3.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[21]).g * 3.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[22]).g * 3.0; - sampleColor += texture2D(inputImageTexture, blurCoordinates[23]).g * 3.0; - - sampleColor = sampleColor / 62.0; - - mediump float highPass = centralColor.g - sampleColor + 0.5; - - for(int i = 0; i < 5;i++) - { - highPass = hardLight(highPass); - } - mediump float luminance = dot(centralColor, W); - - mediump float alpha = pow(luminance, params); - - mediump vec3 smoothColor = centralColor + (centralColor-vec3(highPass))*alpha*0.1; - - smoothColor.r = clamp(pow(smoothColor.r, params.g),0.0,1.0); - smoothColor.g = clamp(pow(smoothColor.g, params.g),0.0,1.0); - smoothColor.b = clamp(pow(smoothColor.b, params.g),0.0,1.0); - - mediump vec3 lvse = vec3(1.0)-(vec3(1.0)-smoothColor)*(vec3(1.0)-centralColor); - mediump vec3 bianliang = max(smoothColor, centralColor); - mediump vec3 rouguang = 2.0*centralColor*smoothColor + centralColor*centralColor - 2.0*centralColor*centralColor*smoothColor; - - gl_FragColor = vec4(mix(centralColor, lvse, alpha), 1.0); - gl_FragColor.rgb = mix(gl_FragColor.rgb, bianliang, alpha); - gl_FragColor.rgb = mix(gl_FragColor.rgb, rouguang, params.b); - - mediump vec3 satcolor = gl_FragColor.rgb * saturateMatrix; - gl_FragColor.rgb = mix(gl_FragColor.rgb, satcolor, params.a); - gl_FragColor.rgb = vec3(gl_FragColor.rgb + vec3(brightness)); - } -); + + void main(){ + mediump vec3 centralColor = texture2D(inputImageTexture, textureCoordinate).rgb; + blurCoordinates[0] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -10.0); + blurCoordinates[1] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 10.0); + blurCoordinates[2] = textureCoordinate.xy + singleStepOffset * vec2(-10.0, 0.0); + blurCoordinates[3] = textureCoordinate.xy + singleStepOffset * vec2(10.0, 0.0); + blurCoordinates[4] = textureCoordinate.xy + singleStepOffset * vec2(5.0, -8.0); + blurCoordinates[5] = textureCoordinate.xy + singleStepOffset * vec2(5.0, 8.0); + blurCoordinates[6] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, 8.0); + blurCoordinates[7] = textureCoordinate.xy + singleStepOffset * vec2(-5.0, -8.0); + blurCoordinates[8] = textureCoordinate.xy + singleStepOffset * vec2(8.0, -5.0); + blurCoordinates[9] = textureCoordinate.xy + singleStepOffset * vec2(8.0, 5.0); + blurCoordinates[10] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, 5.0); + blurCoordinates[11] = textureCoordinate.xy + singleStepOffset * vec2(-8.0, -5.0); + blurCoordinates[12] = textureCoordinate.xy + singleStepOffset * vec2(0.0, -6.0); + blurCoordinates[13] = textureCoordinate.xy + singleStepOffset * vec2(0.0, 6.0); + blurCoordinates[14] = textureCoordinate.xy + singleStepOffset * vec2(6.0, 0.0); + blurCoordinates[15] = textureCoordinate.xy + singleStepOffset * vec2(-6.0, 0.0); + blurCoordinates[16] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, -4.0); + blurCoordinates[17] = textureCoordinate.xy + singleStepOffset * vec2(-4.0, 4.0); + blurCoordinates[18] = textureCoordinate.xy + singleStepOffset * vec2(4.0, -4.0); + blurCoordinates[19] = textureCoordinate.xy + singleStepOffset * vec2(4.0, 4.0); + blurCoordinates[20] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, -2.0); + blurCoordinates[21] = textureCoordinate.xy + singleStepOffset * vec2(-2.0, 2.0); + blurCoordinates[22] = textureCoordinate.xy + singleStepOffset * vec2(2.0, -2.0); + blurCoordinates[23] = textureCoordinate.xy + singleStepOffset * vec2(2.0, 2.0); + + mediump float sampleColor = centralColor.g * 22.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[0]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[1]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[2]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[3]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[4]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[5]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[6]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[7]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[8]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[9]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[10]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[11]).g; + sampleColor += texture2D(inputImageTexture, blurCoordinates[12]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[13]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[14]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[15]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[16]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[17]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[18]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[19]).g * 2.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[20]).g * 3.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[21]).g * 3.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[22]).g * 3.0; + sampleColor += texture2D(inputImageTexture, blurCoordinates[23]).g * 3.0; + + sampleColor = sampleColor / 62.0; + + mediump float highPass = centralColor.g - sampleColor + 0.5; + + for (int i = 0; i < 5; i++) { + highPass = hardLight(highPass); + } + mediump float luminance = dot(centralColor, W); + + mediump float alpha = pow(luminance, params); + + mediump vec3 smoothColor = centralColor + (centralColor-vec3(highPass))*alpha*0.1; + + smoothColor.r = clamp(pow(smoothColor.r, params.g), 0.0, 1.0); + smoothColor.g = clamp(pow(smoothColor.g, params.g), 0.0, 1.0); + smoothColor.b = clamp(pow(smoothColor.b, params.g), 0.0, 1.0); + + mediump vec3 lvse = vec3(1.0)-(vec3(1.0)-smoothColor)*(vec3(1.0)-centralColor); + mediump vec3 bianliang = max(smoothColor, centralColor); + mediump vec3 rouguang = 2.0*centralColor*smoothColor + centralColor*centralColor - 2.0*centralColor*centralColor*smoothColor; + + gl_FragColor = vec4(mix(centralColor, lvse, alpha), 1.0); + gl_FragColor.rgb = mix(gl_FragColor.rgb, bianliang, alpha); + gl_FragColor.rgb = mix(gl_FragColor.rgb, rouguang, params.b); + + mediump vec3 satcolor = gl_FragColor.rgb * saturateMatrix; + gl_FragColor.rgb = mix(gl_FragColor.rgb, satcolor, params.a); + gl_FragColor.rgb = vec3(gl_FragColor.rgb + vec3(brightness)); +} + + ); #endif @implementation LFGPUImageBeautyFilter - (id)init; { - if (!(self = [super initWithFragmentShaderFromString:kLFGPUImageBeautyFragmentShaderString])) - { - return nil; + if (!(self = [super initWithFragmentShaderFromString:kLFGPUImageBeautyFragmentShaderString])) { + return nil; } - + _toneLevel = 0.5; _beautyLevel = 0.5; _brightLevel = 0.5; @@ -241,27 +237,24 @@ - (id)init; return self; } -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex -{ +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex { CGSize oldInputSize = inputTextureSize; [super setInputSize:newSize atIndex:textureIndex]; inputTextureSize = newSize; - + CGPoint offset = CGPointMake(2.0f / inputTextureSize.width, 2.0 / inputTextureSize.height); [self setPoint:offset forUniformName:@"singleStepOffset"]; } -- (void)setBeautyLevel:(CGFloat)beautyLevel -{ +- (void)setBeautyLevel:(CGFloat)beautyLevel { _beautyLevel = beautyLevel; [self setParams:_beautyLevel tone:_toneLevel]; } -- (void)setBrightLevel:(CGFloat)brightLevel -{ +- (void)setBrightLevel:(CGFloat)brightLevel { _brightLevel = brightLevel; [self setFloat:0.6 * (-0.5 + brightLevel) forUniformName:@"brightness"]; - } +} - (void)setParams:(CGFloat)beauty tone:(CGFloat)tone { GPUVector4 fBeautyParam; diff --git a/LFLiveKit/filter/LFGPUImageEmptyFilter.m b/LFLiveKit/filter/LFGPUImageEmptyFilter.m index e9263d72..9d508cd5 100755 --- a/LFLiveKit/filter/LFGPUImageEmptyFilter.m +++ b/LFLiveKit/filter/LFGPUImageEmptyFilter.m @@ -2,43 +2,42 @@ #if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE NSString *const kLFGPUImageEmptyFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { + ( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main(){ lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - + gl_FragColor = vec4((textureColor.rgb), textureColor.w); - } -); +} + + ); #else NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((textureColor.rgb), textureColor.w); - } - ); + ( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main(){ + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4((textureColor.rgb), textureColor.w); +} + + ); #endif @implementation LFGPUImageEmptyFilter - (id)init; { - if (!(self = [super initWithFragmentShaderFromString:kLFGPUImageEmptyFragmentShaderString])) - { - return nil; + if (!(self = [super initWithFragmentShaderFromString:kLFGPUImageEmptyFragmentShaderString])) { + return nil; } - + return self; } diff --git a/LFLiveKit/objects/LFLiveDebug.h b/LFLiveKit/objects/LFLiveDebug.h index 1236e37e..c183e158 100644 --- a/LFLiveKit/objects/LFLiveDebug.h +++ b/LFLiveKit/objects/LFLiveDebug.h @@ -16,11 +16,15 @@ @property (nonatomic, assign) CGSize videoSize; ///< 上传的分辨率 @property (nonatomic, assign) BOOL isRtmp; ///< 上传方式(TCP or RTMP) +@property (nonatomic, assign) CGFloat elapsedMilli; ///< 距离上次统计的时间 单位ms @property (nonatomic, assign) CGFloat timeStamp; ///< 当前的时间戳,从而计算1s内数据 @property (nonatomic, assign) CGFloat dataFlow; ///< 总流量 @property (nonatomic, assign) CGFloat bandwidth; ///< 1s内总带宽 @property (nonatomic, assign) CGFloat currentBandwidth; ///< 上次的带宽 +@property (nonatomic, assign) NSInteger dropFrame; ///< 丢掉的帧数 +@property (nonatomic, assign) NSInteger totalFrame; ///< 总帧数 + @property (nonatomic, assign) NSInteger capturedAudioCount; ///< 1s内音频捕获个数 @property (nonatomic, assign) NSInteger capturedVideoCount; ///< 1s内视频捕获个数 @property (nonatomic, assign) NSInteger currentCapturedAudioCount; ///< 上次的音频捕获个数 diff --git a/LFLiveKit/objects/LFLiveStreamInfo.h b/LFLiveKit/objects/LFLiveStreamInfo.h index 0b90a006..3d917df1 100755 --- a/LFLiveKit/objects/LFLiveStreamInfo.h +++ b/LFLiveKit/objects/LFLiveStreamInfo.h @@ -11,7 +11,7 @@ #import "LFLiveVideoConfiguration.h" /// 流状态 -typedef NS_ENUM(NSUInteger, LFLiveState){ +typedef NS_ENUM (NSUInteger, LFLiveState){ /// 准备 LFLiveReady = 0, /// 连接中 @@ -24,12 +24,12 @@ typedef NS_ENUM(NSUInteger, LFLiveState){ LFLiveError = 4 }; -typedef NS_ENUM(NSUInteger,LFLiveSocketErrorCode) { - LFLiveSocketError_PreView = 201,///< 预览失败 - LFLiveSocketError_GetStreamInfo = 202,///< 获取流媒体信息失败 - LFLiveSocketError_ConnectSocket = 203,///< 连接socket失败 - LFLiveSocketError_Verification = 204,///< 验证服务器失败 - LFLiveSocketError_ReConnectTimeOut = 205///< 重新连接服务器超时 +typedef NS_ENUM (NSUInteger, LFLiveSocketErrorCode) { + LFLiveSocketError_PreView = 201, ///< 预览失败 + LFLiveSocketError_GetStreamInfo = 202, ///< 获取流媒体信息失败 + LFLiveSocketError_ConnectSocket = 203, ///< 连接socket失败 + LFLiveSocketError_Verification = 204, ///< 验证服务器失败 + LFLiveSocketError_ReConnectTimeOut = 205 ///< 重新连接服务器超时 }; @interface LFLiveStreamInfo : NSObject diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index 59372e1a..f53c6b77 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -10,7 +10,7 @@ #import "rtmp.h" #import "YYDispatchQueuePool.h" -static const NSInteger RetryTimesBreaken = 20;///< 重连1分钟 3秒一次 一共20次 +static const NSInteger RetryTimesBreaken = 20; ///< 重连1分钟 3秒一次 一共20次 static const NSInteger RetryTimesMargin = 3; static dispatch_queue_t YYRtmpSendQueue() { @@ -18,15 +18,16 @@ static dispatch_queue_t YYRtmpSendQueue() { dispatch_queue_t queue = [pool queue]; return queue; } + #define RTMP_RECEIVE_TIMEOUT 2 #define DATA_ITEMS_MAX_COUNT 100 #define RTMP_DATA_RESERVE_SIZE 400 -#define RTMP_HEAD_SIZE (sizeof(RTMPPacket)+RTMP_MAX_HEADER_SIZE) +#define RTMP_HEAD_SIZE (sizeof(RTMPPacket) + RTMP_MAX_HEADER_SIZE) -#define SAVC(x) static const AVal av_##x = AVC(#x) +#define SAVC(x) static const AVal av_ ## x = AVC(#x) static const AVal av_setDataFrame = AVC("@setDataFrame"); -static const AVal av_SDKVersion = AVC("LFLiveKit 1.7.3"); +static const AVal av_SDKVersion = AVC("LFLiveKit 1.8.0"); SAVC(onMetaData); SAVC(duration); SAVC(width); @@ -48,7 +49,7 @@ static dispatch_queue_t YYRtmpSendQueue() { @interface LFStreamRtmpSocket () { - PILI_RTMP* _rtmp; + PILI_RTMP *_rtmp; } @property (nonatomic, weak) id delegate; @property (nonatomic, strong) LFLiveStreamInfo *stream; @@ -68,53 +69,51 @@ @interface LFStreamRtmpSocket () @property (nonatomic, assign) BOOL sendVideoHead; @property (nonatomic, assign) BOOL sendAudioHead; - - @end @implementation LFStreamRtmpSocket #pragma mark -- LFStreamSocket -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount{ - if(!stream) @throw [NSException exceptionWithName:@"LFStreamRtmpSocket init error" reason:@"stream is nil" userInfo:nil]; - if(self = [super init]){ +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount { + if (!stream) @throw [NSException exceptionWithName:@"LFStreamRtmpSocket init error" reason:@"stream is nil" userInfo:nil]; + if (self = [super init]) { _stream = stream; - if(reconnectInterval > 0) _reconnectInterval = reconnectInterval; + if (reconnectInterval > 0) _reconnectInterval = reconnectInterval; else _reconnectInterval = RetryTimesMargin; - - if(reconnectCount > 0) _reconnectCount = reconnectCount; + + if (reconnectCount > 0) _reconnectCount = reconnectCount; else _reconnectCount = RetryTimesBreaken; } return self; } -- (void) start{ +- (void)start { dispatch_async(YYRtmpSendQueue(), ^{ [self _start]; }); } -- (void)_start{ - if(!_stream) return; - if(_isConnecting) return; - if(_rtmp != NULL) return; +- (void)_start { + if (!_stream) return; + if (_isConnecting) return; + if (_rtmp != NULL) return; self.debugInfo.streamId = self.stream.streamId; self.debugInfo.uploadUrl = self.stream.url; self.debugInfo.isRtmp = YES; - [self RTMP264_Connect:(char*)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; + [self RTMP264_Connect:(char *)[_stream.url cStringUsingEncoding:NSASCIIStringEncoding]]; } -- (void) stop{ +- (void)stop { dispatch_async(YYRtmpSendQueue(), ^{ [self _stop]; }); } -- (void)_stop{ - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ +- (void)_stop { + if (self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]) { [self.delegate socketStatus:self status:LFLiveStop]; } - if(_rtmp != NULL){ + if (_rtmp != NULL) { PILI_RTMP_Close(_rtmp, &_error); PILI_RTMP_Free(_rtmp); _rtmp = NULL; @@ -122,69 +121,74 @@ - (void)_stop{ [self clean]; } -- (void) sendFrame:(LFFrame*)frame{ +- (void)sendFrame:(LFFrame *)frame { dispatch_async(YYRtmpSendQueue(), ^{ - if(!frame) return; + if (!frame) return; [self.buffer appendObject:frame]; [self sendFrame]; }); } -- (void) setDelegate:(id)delegate{ +- (void)setDelegate:(id)delegate { _delegate = delegate; } #pragma mark -- CustomMethod -- (void)sendFrame{ - if(!self.isSending && self.buffer.list.count > 0){ +- (void)sendFrame { + if (!self.isSending && self.buffer.list.count > 0) { self.isSending = YES; - - if(!_isConnected || _isReconnecting || _isConnecting || !_rtmp) return; - + + if (!_isConnected || _isReconnecting || _isConnecting || !_rtmp) return; + // 调用发送接口 LFFrame *frame = [self.buffer popFirstObject]; - if([frame isKindOfClass:[LFVideoFrame class]]){ - if(!self.sendVideoHead){ + if ([frame isKindOfClass:[LFVideoFrame class]]) { + if (!self.sendVideoHead) { self.sendVideoHead = YES; - [self sendVideoHeader:(LFVideoFrame*)frame]; - }else{ - [self sendVideo:(LFVideoFrame*)frame]; + [self sendVideoHeader:(LFVideoFrame *)frame]; + } else { + [self sendVideo:(LFVideoFrame *)frame]; } - }else{ - if(!self.sendAudioHead){ + } else { + if (!self.sendAudioHead) { self.sendAudioHead = YES; - [self sendAudioHeader:(LFAudioFrame*)frame]; - }else{ + [self sendAudioHeader:(LFAudioFrame *)frame]; + } else { [self sendAudio:frame]; } - } + + self.debugInfo.totalFrame++; + self.debugInfo.dropFrame += self.buffer.lastDropFrames; + self.buffer.lastDropFrames = 0; + self.debugInfo.dataFlow += frame.data.length; - if(CACurrentMediaTime()*1000 - self.debugInfo.timeStamp < 1000) { + self.debugInfo.elapsedMilli = CACurrentMediaTime() * 1000 - self.debugInfo.timeStamp; + if (self.debugInfo.elapsedMilli < 1000) { self.debugInfo.bandwidth += frame.data.length; - if([frame isKindOfClass:[LFAudioFrame class]]){ - self.debugInfo.capturedAudioCount ++; - }else{ - self.debugInfo.capturedVideoCount ++; + if ([frame isKindOfClass:[LFAudioFrame class]]) { + self.debugInfo.capturedAudioCount++; + } else { + self.debugInfo.capturedVideoCount++; } + self.debugInfo.unSendCount = self.buffer.list.count; - }else { + } else { self.debugInfo.currentBandwidth = self.debugInfo.bandwidth; self.debugInfo.currentCapturedAudioCount = self.debugInfo.capturedAudioCount; self.debugInfo.currentCapturedVideoCount = self.debugInfo.capturedVideoCount; - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDebug:debugInfo:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(socketDebug:debugInfo:)]) { [self.delegate socketDebug:self debugInfo:self.debugInfo]; } - self.debugInfo.bandwidth = 0; self.debugInfo.capturedAudioCount = 0; self.debugInfo.capturedVideoCount = 0; - self.debugInfo.timeStamp = CACurrentMediaTime()*1000; + self.debugInfo.timeStamp = CACurrentMediaTime() * 1000; } } } -- (void)clean{ +- (void)clean { _isConnecting = NO; _isReconnecting = NO; _isSending = NO; @@ -196,69 +200,69 @@ - (void)clean{ self.retryTimes4netWorkBreaken = 0; } --(NSInteger) RTMP264_Connect:(char *)push_url{ +- (NSInteger)RTMP264_Connect:(char *)push_url { //由于摄像头的timestamp是一直在累加,需要每次得到相对时间戳 //分配与初始化 - if(_isConnecting) return -1; - + if (_isConnecting) return -1; + _isConnecting = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]) { [self.delegate socketStatus:self status:LFLivePending]; } - - if(_rtmp != NULL){ + + if (_rtmp != NULL) { PILI_RTMP_Close(_rtmp, &_error); PILI_RTMP_Free(_rtmp); } - + _rtmp = PILI_RTMP_Alloc(); PILI_RTMP_Init(_rtmp); - + //设置URL - if (PILI_RTMP_SetupURL(_rtmp, push_url, &_error) == FALSE){ + if (PILI_RTMP_SetupURL(_rtmp, push_url, &_error) == FALSE) { //log(LOG_ERR, "RTMP_SetupURL() failed!"); goto Failed; } - - _rtmp->m_errorCallback = RTMPErrorCallback; + + _rtmp->m_errorCallback = RTMPErrorCallback; _rtmp->m_connCallback = ConnectionTimeCallback; - _rtmp->m_userData = (__bridge void*)self; + _rtmp->m_userData = (__bridge void *)self; _rtmp->m_msgCounter = 1; _rtmp->Link.timeout = RTMP_RECEIVE_TIMEOUT; //设置可写,即发布流,这个函数必须在连接前使用,否则无效 PILI_RTMP_EnableWrite(_rtmp); - + //连接服务器 - if (PILI_RTMP_Connect(_rtmp, NULL, &_error) == FALSE){ + if (PILI_RTMP_Connect(_rtmp, NULL, &_error) == FALSE) { goto Failed; } - + //连接流 if (PILI_RTMP_ConnectStream(_rtmp, 0, &_error) == FALSE) { goto Failed; } - - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ + + if (self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]) { [self.delegate socketStatus:self status:LFLiveStart]; } - + [self sendMetaData]; - + _isConnected = YES; _isConnecting = NO; _isReconnecting = NO; _isSending = NO; _retryTimes4netWorkBreaken = 0; return 0; - + Failed: PILI_RTMP_Close(_rtmp, &_error); PILI_RTMP_Free(_rtmp); _rtmp = NULL; - if(self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(socketDidError:errorCode:)]) { [self.delegate socketDidError:self errorCode:LFLiveSocketError_ConnectSocket]; } - if(self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]){ + if (self.delegate && [self.delegate respondsToSelector:@selector(socketStatus:status:)]) { [self.delegate socketStatus:self status:LFLiveError]; } return -1; @@ -268,249 +272,248 @@ -(NSInteger) RTMP264_Connect:(char *)push_url{ - (void)sendMetaData { PILI_RTMPPacket packet; - - char pbuf[2048], *pend = pbuf+sizeof(pbuf); - - packet.m_nChannel = 0x03; // control channel (invoke) + + char pbuf[2048], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x03; // control channel (invoke) packet.m_headerType = RTMP_PACKET_SIZE_LARGE; packet.m_packetType = RTMP_PACKET_TYPE_INFO; packet.m_nTimeStamp = 0; packet.m_nInfoField2 = _rtmp->m_stream_id; packet.m_hasAbsTimestamp = TRUE; packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - + char *enc = packet.m_body; enc = AMF_EncodeString(enc, pend, &av_setDataFrame); enc = AMF_EncodeString(enc, pend, &av_onMetaData); - + *enc++ = AMF_OBJECT; - - enc = AMF_EncodeNamedNumber(enc, pend, &av_duration, 0.0); - enc = AMF_EncodeNamedNumber(enc, pend, &av_fileSize, 0.0); - + + enc = AMF_EncodeNamedNumber(enc, pend, &av_duration, 0.0); + enc = AMF_EncodeNamedNumber(enc, pend, &av_fileSize, 0.0); + // videosize - enc = AMF_EncodeNamedNumber(enc, pend, &av_width, _stream.videoConfiguration.videoSize.width); - enc = AMF_EncodeNamedNumber(enc, pend, &av_height, _stream.videoConfiguration.videoSize.height); - + enc = AMF_EncodeNamedNumber(enc, pend, &av_width, _stream.videoConfiguration.videoSize.width); + enc = AMF_EncodeNamedNumber(enc, pend, &av_height, _stream.videoConfiguration.videoSize.height); + // video - enc = AMF_EncodeNamedString(enc, pend, &av_videocodecid, &av_avc1); - - enc = AMF_EncodeNamedNumber(enc, pend, &av_videodatarate, _stream.videoConfiguration.videoBitRate / 1000.f); - enc = AMF_EncodeNamedNumber(enc, pend, &av_framerate, _stream.videoConfiguration.videoFrameRate); - + enc = AMF_EncodeNamedString(enc, pend, &av_videocodecid, &av_avc1); + + enc = AMF_EncodeNamedNumber(enc, pend, &av_videodatarate, _stream.videoConfiguration.videoBitRate / 1000.f); + enc = AMF_EncodeNamedNumber(enc, pend, &av_framerate, _stream.videoConfiguration.videoFrameRate); + // audio - enc = AMF_EncodeNamedString(enc, pend, &av_audiocodecid, &av_mp4a); - enc = AMF_EncodeNamedNumber(enc, pend, &av_audiodatarate, _stream.audioConfiguration.audioBitrate); - + enc = AMF_EncodeNamedString(enc, pend, &av_audiocodecid, &av_mp4a); + enc = AMF_EncodeNamedNumber(enc, pend, &av_audiodatarate, _stream.audioConfiguration.audioBitrate); + enc = AMF_EncodeNamedNumber(enc, pend, &av_audiosamplerate, _stream.audioConfiguration.audioSampleRate); enc = AMF_EncodeNamedNumber(enc, pend, &av_audiosamplesize, 16.0); - enc = AMF_EncodeNamedBoolean(enc, pend, &av_stereo, _stream.audioConfiguration.numberOfChannels==2); - + enc = AMF_EncodeNamedBoolean(enc, pend, &av_stereo, _stream.audioConfiguration.numberOfChannels == 2); + // sdk version - enc = AMF_EncodeNamedString(enc, pend, &av_encoder, &av_SDKVersion); - + enc = AMF_EncodeNamedString(enc, pend, &av_encoder, &av_SDKVersion); + *enc++ = 0; *enc++ = 0; *enc++ = AMF_OBJECT_END; - + packet.m_nBodySize = enc - packet.m_body; - if(!PILI_RTMP_SendPacket(_rtmp, &packet, FALSE, &_error)) { + if (!PILI_RTMP_SendPacket(_rtmp, &packet, FALSE, &_error)) { return; } } -- (void)sendVideoHeader:(LFVideoFrame*)videoFrame { - if(!videoFrame || !videoFrame.sps || !videoFrame.pps) return; - - unsigned char * body=NULL; +- (void)sendVideoHeader:(LFVideoFrame *)videoFrame { + if (!videoFrame || !videoFrame.sps || !videoFrame.pps) return; + + unsigned char *body = NULL; NSInteger iIndex = 0; NSInteger rtmpLength = 1024; const char *sps = videoFrame.sps.bytes; const char *pps = videoFrame.pps.bytes; NSInteger sps_len = videoFrame.sps.length; NSInteger pps_len = videoFrame.pps.length; - - body = (unsigned char*)malloc(rtmpLength); - memset(body,0,rtmpLength); - + + body = (unsigned char *)malloc(rtmpLength); + memset(body, 0, rtmpLength); + body[iIndex++] = 0x17; body[iIndex++] = 0x00; - + body[iIndex++] = 0x00; body[iIndex++] = 0x00; body[iIndex++] = 0x00; - + body[iIndex++] = 0x01; body[iIndex++] = sps[1]; body[iIndex++] = sps[2]; body[iIndex++] = sps[3]; body[iIndex++] = 0xff; - + /*sps*/ - body[iIndex++] = 0xe1; + body[iIndex++] = 0xe1; body[iIndex++] = (sps_len >> 8) & 0xff; body[iIndex++] = sps_len & 0xff; - memcpy(&body[iIndex],sps,sps_len); - iIndex += sps_len; - + memcpy(&body[iIndex], sps, sps_len); + iIndex += sps_len; + /*pps*/ - body[iIndex++] = 0x01; + body[iIndex++] = 0x01; body[iIndex++] = (pps_len >> 8) & 0xff; body[iIndex++] = (pps_len) & 0xff; memcpy(&body[iIndex], pps, pps_len); - iIndex += pps_len; - + iIndex += pps_len; + [self sendPacket:RTMP_PACKET_TYPE_VIDEO data:body size:iIndex nTimestamp:0]; free(body); } +- (void)sendVideo:(LFVideoFrame *)frame { + if (!frame || !frame.data || frame.data.length < 11) return; -- (void)sendVideo:(LFVideoFrame*)frame{ - if(!frame || !frame.data || frame.data.length < 11) return; - NSInteger i = 0; - NSInteger rtmpLength = frame.data.length+9; - unsigned char *body = (unsigned char*)malloc(rtmpLength); - memset(body,0,rtmpLength); - - if(frame.isKeyFrame){ - body[i++] = 0x17;// 1:Iframe 7:AVC - } else{ - body[i++] = 0x27;// 2:Pframe 7:AVC + NSInteger rtmpLength = frame.data.length + 9; + unsigned char *body = (unsigned char *)malloc(rtmpLength); + memset(body, 0, rtmpLength); + + if (frame.isKeyFrame) { + body[i++] = 0x17; // 1:Iframe 7:AVC + } else { + body[i++] = 0x27; // 2:Pframe 7:AVC } - body[i++] = 0x01;// AVC NALU + body[i++] = 0x01; // AVC NALU body[i++] = 0x00; body[i++] = 0x00; body[i++] = 0x00; body[i++] = (frame.data.length >> 24) & 0xff; body[i++] = (frame.data.length >> 16) & 0xff; body[i++] = (frame.data.length >> 8) & 0xff; - body[i++] = (frame.data.length ) & 0xff; - memcpy(&body[i],frame.data.bytes,frame.data.length); - + body[i++] = (frame.data.length) & 0xff; + memcpy(&body[i], frame.data.bytes, frame.data.length); + [self sendPacket:RTMP_PACKET_TYPE_VIDEO data:body size:(rtmpLength) nTimestamp:frame.timestamp]; free(body); } --(NSInteger) sendPacket:(unsigned int)nPacketType data:(unsigned char *)data size:(NSInteger) size nTimestamp:(uint64_t) nTimestamp{ +- (NSInteger)sendPacket:(unsigned int)nPacketType data:(unsigned char *)data size:(NSInteger)size nTimestamp:(uint64_t)nTimestamp { NSInteger rtmpLength = size; PILI_RTMPPacket rtmp_pack; PILI_RTMPPacket_Reset(&rtmp_pack); - PILI_RTMPPacket_Alloc(&rtmp_pack,(uint32_t)rtmpLength); - + PILI_RTMPPacket_Alloc(&rtmp_pack, (uint32_t)rtmpLength); + rtmp_pack.m_nBodySize = (uint32_t)size; - memcpy(rtmp_pack.m_body,data,size); + memcpy(rtmp_pack.m_body, data, size); rtmp_pack.m_hasAbsTimestamp = 0; rtmp_pack.m_packetType = nPacketType; - if(_rtmp) rtmp_pack.m_nInfoField2 = _rtmp->m_stream_id; + if (_rtmp) rtmp_pack.m_nInfoField2 = _rtmp->m_stream_id; rtmp_pack.m_nChannel = 0x04; rtmp_pack.m_headerType = RTMP_PACKET_SIZE_LARGE; - if (RTMP_PACKET_TYPE_AUDIO == nPacketType && size !=4){ + if (RTMP_PACKET_TYPE_AUDIO == nPacketType && size != 4) { rtmp_pack.m_headerType = RTMP_PACKET_SIZE_MEDIUM; } rtmp_pack.m_nTimeStamp = (uint32_t)nTimestamp; - + NSInteger nRet = [self RtmpPacketSend:&rtmp_pack]; - + PILI_RTMPPacket_Free(&rtmp_pack); return nRet; } -- (NSInteger)RtmpPacketSend:(PILI_RTMPPacket*)packet{ - if (PILI_RTMP_IsConnected(_rtmp)){ - int success = PILI_RTMP_SendPacket(_rtmp,packet,0,&_error); - if(success){ +- (NSInteger)RtmpPacketSend:(PILI_RTMPPacket *)packet { + if (PILI_RTMP_IsConnected(_rtmp)) { + int success = PILI_RTMP_SendPacket(_rtmp, packet, 0, &_error); + if (success) { self.isSending = NO; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self sendFrame]; }); - + } return success; } - + return -1; } -- (void)sendAudioHeader:(LFAudioFrame*)audioFrame{ - if(!audioFrame || !audioFrame.audioInfo) return; - - NSInteger rtmpLength = audioFrame.audioInfo.length + 2;/*spec data长度,一般是2*/ - unsigned char * body = (unsigned char*)malloc(rtmpLength); - memset(body,0,rtmpLength); - +- (void)sendAudioHeader:(LFAudioFrame *)audioFrame { + if (!audioFrame || !audioFrame.audioInfo) return; + + NSInteger rtmpLength = audioFrame.audioInfo.length + 2; /*spec data长度,一般是2*/ + unsigned char *body = (unsigned char *)malloc(rtmpLength); + memset(body, 0, rtmpLength); + /*AF 00 + AAC RAW data*/ body[0] = 0xAF; body[1] = 0x00; - memcpy(&body[2],audioFrame.audioInfo.bytes,audioFrame.audioInfo.length); /*spec_buf是AAC sequence header数据*/ + memcpy(&body[2], audioFrame.audioInfo.bytes, audioFrame.audioInfo.length); /*spec_buf是AAC sequence header数据*/ [self sendPacket:RTMP_PACKET_TYPE_AUDIO data:body size:rtmpLength nTimestamp:0]; free(body); } -- (void)sendAudio:(LFFrame*)frame { - if(!frame) return; - - NSInteger rtmpLength = frame.data.length + 2;/*spec data长度,一般是2*/ - unsigned char * body = (unsigned char*)malloc(rtmpLength); - memset(body,0,rtmpLength); - +- (void)sendAudio:(LFFrame *)frame { + if (!frame) return; + + NSInteger rtmpLength = frame.data.length + 2; /*spec data长度,一般是2*/ + unsigned char *body = (unsigned char *)malloc(rtmpLength); + memset(body, 0, rtmpLength); + /*AF 01 + AAC RAW data*/ body[0] = 0xAF; body[1] = 0x01; - memcpy(&body[2],frame.data.bytes,frame.data.length); + memcpy(&body[2], frame.data.bytes, frame.data.length); [self sendPacket:RTMP_PACKET_TYPE_AUDIO data:body size:rtmpLength nTimestamp:frame.timestamp]; free(body); } // 断线重连 --(void) reconnect { +- (void)reconnect { dispatch_async(YYRtmpSendQueue(), ^{ _isReconnecting = NO; - if(_isConnected) return; - + if (_isConnected) return; + [self _stop]; [self _start]; }); } #pragma mark -- CallBack -void RTMPErrorCallback(RTMPError *error, void *userData){ - LFStreamRtmpSocket *socket = (__bridge LFStreamRtmpSocket*)userData; - if(error->code < 0){ - if(socket.retryTimes4netWorkBreaken++ < socket.reconnectCount && !socket.isReconnecting){ +void RTMPErrorCallback(RTMPError *error, void *userData) { + LFStreamRtmpSocket *socket = (__bridge LFStreamRtmpSocket *)userData; + if (error->code < 0) { + if (socket.retryTimes4netWorkBreaken++ < socket.reconnectCount && !socket.isReconnecting) { socket.isConnected = NO; socket.isConnecting = NO; socket.isReconnecting = YES; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(socket.reconnectInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [socket reconnect]; }); - }else if(socket.retryTimes4netWorkBreaken >= socket.reconnectCount){ - if(socket.delegate && [socket.delegate respondsToSelector:@selector(socketStatus:status:)]){ + } else if (socket.retryTimes4netWorkBreaken >= socket.reconnectCount) { + if (socket.delegate && [socket.delegate respondsToSelector:@selector(socketStatus:status:)]) { [socket.delegate socketStatus:socket status:LFLiveError]; } - if(socket.delegate && [socket.delegate respondsToSelector:@selector(socketDidError:errorCode:)]){ + if (socket.delegate && [socket.delegate respondsToSelector:@selector(socketDidError:errorCode:)]) { [socket.delegate socketDidError:socket errorCode:LFLiveSocketError_ReConnectTimeOut]; } } } } -void ConnectionTimeCallback(PILI_CONNECTION_TIME* conn_time, void *userData){ +void ConnectionTimeCallback(PILI_CONNECTION_TIME *conn_time, void *userData) { //LFStreamRtmpSocket *socket = (__bridge LFStreamRtmpSocket*)userData; } #pragma mark -- Getter Setter -- (LFStreamingBuffer*)buffer{ - if(!_buffer){ +- (LFStreamingBuffer *)buffer { + if (!_buffer) { _buffer = [[LFStreamingBuffer alloc] init]; _buffer.delegate = self; } return _buffer; } -- (LFLiveDebug*)debugInfo{ - if(!_debugInfo){ +- (LFLiveDebug *)debugInfo { + if (!_debugInfo) { _debugInfo = [[LFLiveDebug alloc] init]; } return _debugInfo; diff --git a/LFLiveKit/publish/LFStreamSocket.h b/LFLiveKit/publish/LFStreamSocket.h index f9128e55..d25a0e59 100644 --- a/LFLiveKit/publish/LFStreamSocket.h +++ b/LFLiveKit/publish/LFStreamSocket.h @@ -11,27 +11,27 @@ #import "LFStreamingBuffer.h" #import "LFLiveDebug.h" -@protocol LFStreamSocket ; +@protocol LFStreamSocket; @protocol LFStreamSocketDelegate /** callback buffer current status (回调当前缓冲区情况,可实现相关切换帧率 码率等策略)*/ -- (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuffferState)status; +- (void)socketBufferStatus:(nullable id )socket status:(LFLiveBuffferState)status; /** callback socket current status (回调当前网络情况) */ -- (void)socketStatus:(nullable id)socket status:(LFLiveState)status; +- (void)socketStatus:(nullable id )socket status:(LFLiveState)status; /** callback socket errorcode */ -- (void)socketDidError:(nullable id)socket errorCode:(LFLiveSocketErrorCode)errorCode; +- (void)socketDidError:(nullable id )socket errorCode:(LFLiveSocketErrorCode)errorCode; @optional /** callback debugInfo */ -- (void)socketDebug:(nullable id)socket debugInfo:(nullable LFLiveDebug*)debugInfo; +- (void)socketDebug:(nullable id )socket debugInfo:(nullable LFLiveDebug *)debugInfo; @end @protocol LFStreamSocket -- (void) start; -- (void) stop; -- (void) sendFrame:(nullable LFFrame*)frame; -- (void) setDelegate:(nullable id)delegate; +- (void)start; +- (void)stop; +- (void)sendFrame:(nullable LFFrame *)frame; +- (void)setDelegate:(nullable id )delegate; @optional -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream; -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream videoSize:(CGSize)videoSize; -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo*)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount; +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream; +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize; +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount; @end diff --git a/LFLiveKit/publish/LFStreamingBuffer.h b/LFLiveKit/publish/LFStreamingBuffer.h index 14e6eea5..10f10f92 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.h +++ b/LFLiveKit/publish/LFStreamingBuffer.h @@ -11,7 +11,7 @@ #import "LFVideoFrame.h" /** current buffer status */ -typedef NS_ENUM(NSUInteger, LFLiveBuffferState) { +typedef NS_ENUM (NSUInteger, LFLiveBuffferState) { LFLiveBuffferUnknown = 0, //< 未知 LFLiveBuffferIncrease = 1, //< 缓冲区状态好可以增加码率 LFLiveBuffferDecline = 2 //< 缓冲区状态差应该降低码率 @@ -22,25 +22,28 @@ typedef NS_ENUM(NSUInteger, LFLiveBuffferState) { @protocol LFStreamingBufferDelegate @optional /** 当前buffer变动(增加or减少) 根据buffer中的updateInterval时间回调*/ -- (void)streamingBuffer:(nullable LFStreamingBuffer * )buffer bufferState:(LFLiveBuffferState)state; +- (void)streamingBuffer:(nullable LFStreamingBuffer *)buffer bufferState:(LFLiveBuffferState)state; @end @interface LFStreamingBuffer : NSObject /** The delegate of the buffer. buffer callback */ -@property (nullable,nonatomic, weak) id delegate; +@property (nullable, nonatomic, weak) id delegate; /** current frame buffer */ -@property (nonatomic, strong, readonly) NSMutableArray * _Nonnull list; +@property (nonatomic, strong, readonly) NSMutableArray *_Nonnull list; /** buffer count max size default 1000 */ @property (nonatomic, assign) NSUInteger maxCount; +/** count of drop frames in last time */ +@property (nonatomic, assign) NSInteger lastDropFrames; + /** add frame to buffer */ -- (void)appendObject:(nullable LFFrame*)frame; +- (void)appendObject:(nullable LFFrame *)frame; /** pop the first frome buffer */ -- (nullable LFFrame*)popFirstObject; +- (nullable LFFrame *)popFirstObject; /** remove all objects from Buffer */ - (void)removeAllObject; diff --git a/LFLiveKit/publish/LFStreamingBuffer.m b/LFLiveKit/publish/LFStreamingBuffer.m index 0a9b60c0..bbd5108a 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.m +++ b/LFLiveKit/publish/LFStreamingBuffer.m @@ -18,8 +18,8 @@ @interface LFStreamingBuffer (){ dispatch_semaphore_t _lock; } -@property (nonatomic, strong) NSMutableArray *sortList; -@property (nonatomic, strong, readwrite) NSMutableArray *list; +@property (nonatomic, strong) NSMutableArray *sortList; +@property (nonatomic, strong, readwrite) NSMutableArray *list; @property (nonatomic, strong) NSMutableArray *thresholdList; /** 处理buffer缓冲区情况 */ @@ -32,31 +32,32 @@ @interface LFStreamingBuffer (){ @implementation LFStreamingBuffer -- (instancetype)init{ - if(self = [super init]){ +- (instancetype)init { + if (self = [super init]) { _lock = dispatch_semaphore_create(1); self.updateInterval = defaultUpdateInterval; self.callBackInterval = defaultCallBackInterval; self.maxCount = defaultSendBufferMaxCount; + self.lastDropFrames = 0; } return self; } -- (void)dealloc{ +- (void)dealloc { } #pragma mark -- Custom -- (void)appendObject:(LFFrame*)frame{ - if(!frame) return; - if(!_startTimer){ +- (void)appendObject:(LFFrame *)frame { + if (!frame) return; + if (!_startTimer) { _startTimer = YES; [self tick]; } - + dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); - if(self.sortList.count < defaultSortBufferMaxCount){ + if (self.sortList.count < defaultSortBufferMaxCount) { [self.sortList addObject:frame]; - }else{ + } else { ///< 排序 [self.sortList addObject:frame]; NSArray *sortedSendQuery = [self.sortList sortedArrayUsingFunction:frameDataCompare context:NULL]; @@ -66,52 +67,54 @@ - (void)appendObject:(LFFrame*)frame{ [self removeExpireFrame]; /// 添加至缓冲区 LFFrame *firstFrame = [self.sortList lfPopFirstObject]; - - if(firstFrame) [self.list addObject:firstFrame]; + + if (firstFrame) [self.list addObject:firstFrame]; } dispatch_semaphore_signal(_lock); } -- (LFFrame*)popFirstObject{ +- (LFFrame *)popFirstObject { dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); LFFrame *firstFrame = [self.list lfPopFirstObject]; dispatch_semaphore_signal(_lock); return firstFrame; } -- (void)removeAllObject{ +- (void)removeAllObject { dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); [self.list removeAllObjects]; dispatch_semaphore_signal(_lock); } -- (void)removeExpireFrame{ - if(self.list.count < self.maxCount) return; - +- (void)removeExpireFrame { + if (self.list.count < self.maxCount) return; + NSArray *pFrames = [self expirePFrames];///< 第一个P到第一个I之间的p帧 - if(pFrames && pFrames.count > 0){ + self.lastDropFrames += [pFrames count]; + if (pFrames && pFrames.count > 0) { [self.list removeObjectsInArray:pFrames]; return; } - + NSArray *iFrames = [self expireIFrames];///<  删除一个I帧(但一个I帧可能对应多个nal) - if(iFrames){ + self.lastDropFrames += [iFrames count]; + if (iFrames) { [self.list removeObjectsInArray:iFrames]; return; } - + [self.list removeAllObjects]; } -- (NSArray*)expirePFrames{ +- (NSArray *)expirePFrames { NSMutableArray *pframes = [[NSMutableArray alloc] init]; - for(NSInteger index = 0;index < self.list.count;index++){ + for (NSInteger index = 0; index < self.list.count; index++) { LFFrame *frame = [self.list objectAtIndex:index]; - if([frame isKindOfClass:[LFVideoFrame class]]){ - LFVideoFrame *videoFrame = (LFVideoFrame*)frame; - if(videoFrame.isKeyFrame && pframes.count > 0){ + if ([frame isKindOfClass:[LFVideoFrame class]]) { + LFVideoFrame *videoFrame = (LFVideoFrame *)frame; + if (videoFrame.isKeyFrame && pframes.count > 0) { break; - }else if(!videoFrame.isKeyFrame){ + } else if (!videoFrame.isKeyFrame) { [pframes addObject:frame]; } } @@ -119,13 +122,13 @@ - (NSArray*)expirePFrames{ return pframes; } -- (NSArray*)expireIFrames{ +- (NSArray *)expireIFrames { NSMutableArray *iframes = [[NSMutableArray alloc] init]; uint64_t timeStamp = 0; - for(NSInteger index = 0;index < self.list.count;index++){ + for (NSInteger index = 0; index < self.list.count; index++) { LFFrame *frame = [self.list objectAtIndex:index]; - if([frame isKindOfClass:[LFVideoFrame class]] && ((LFVideoFrame*)frame).isKeyFrame){ - if(timeStamp != 0 && timeStamp != frame.timestamp) break; + if ([frame isKindOfClass:[LFVideoFrame class]] && ((LFVideoFrame *)frame).isKeyFrame) { + if (timeStamp != 0 && timeStamp != frame.timestamp) break; [iframes addObject:frame]; timeStamp = frame.timestamp; } @@ -134,85 +137,84 @@ - (NSArray*)expireIFrames{ } NSInteger frameDataCompare(id obj1, id obj2, void *context){ - LFFrame* frame1 = (LFFrame*) obj1; - LFFrame *frame2 = (LFFrame*) obj2; - + LFFrame *frame1 = (LFFrame *)obj1; + LFFrame *frame2 = (LFFrame *)obj2; + if (frame1.timestamp == frame2.timestamp) return NSOrderedSame; - else if(frame1.timestamp > frame2.timestamp) + else if (frame1.timestamp > frame2.timestamp) return NSOrderedDescending; return NSOrderedAscending; } -- (LFLiveBuffferState)currentBufferState{ +- (LFLiveBuffferState)currentBufferState { NSInteger currentCount = 0; NSInteger increaseCount = 0; NSInteger decreaseCount = 0; - - for(NSNumber *number in self.thresholdList){ - if(number.integerValue >= currentCount){ - increaseCount ++; - }else{ - decreaseCount ++; + + for (NSNumber *number in self.thresholdList) { + if (number.integerValue >= currentCount) { + increaseCount++; + } else { + decreaseCount++; } currentCount = [number integerValue]; } - - if(increaseCount >= self.callBackInterval){ + + if (increaseCount >= self.callBackInterval) { return LFLiveBuffferIncrease; } - - if(decreaseCount >= self.callBackInterval){ + + if (decreaseCount >= self.callBackInterval) { return LFLiveBuffferDecline; } - + return LFLiveBuffferUnknown; } #pragma mark -- Setter Getter -- (NSMutableArray*)list{ - if(!_list){ +- (NSMutableArray *)list { + if (!_list) { _list = [[NSMutableArray alloc] init]; } return _list; } -- (NSMutableArray*)sortList{ - if(!_sortList){ +- (NSMutableArray *)sortList { + if (!_sortList) { _sortList = [[NSMutableArray alloc] init]; } return _sortList; } -- (NSMutableArray*)thresholdList{ - if(!_thresholdList){ +- (NSMutableArray *)thresholdList { + if (!_thresholdList) { _thresholdList = [[NSMutableArray alloc] init]; } return _thresholdList; } - #pragma mark -- 采样 -- (void)tick{ +- (void)tick { /** 采样 3个阶段 如果网络都是好或者都是差给回调 */ _currentInterval += self.updateInterval; - + dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); [self.thresholdList addObject:@(self.list.count)]; dispatch_semaphore_signal(_lock); - - if(self.currentInterval >= self.callBackInterval){ + + if (self.currentInterval >= self.callBackInterval) { LFLiveBuffferState state = [self currentBufferState]; - if(state == LFLiveBuffferIncrease){ - if(self.delegate && [self.delegate respondsToSelector:@selector(streamingBuffer:bufferState:)]){ + if (state == LFLiveBuffferIncrease) { + if (self.delegate && [self.delegate respondsToSelector:@selector(streamingBuffer:bufferState:)]) { [self.delegate streamingBuffer:self bufferState:LFLiveBuffferIncrease]; } - }else if(state == LFLiveBuffferDecline){ - if(self.delegate && [self.delegate respondsToSelector:@selector(streamingBuffer:bufferState:)]){ + } else if (state == LFLiveBuffferDecline) { + if (self.delegate && [self.delegate respondsToSelector:@selector(streamingBuffer:bufferState:)]) { [self.delegate streamingBuffer:self bufferState:LFLiveBuffferDecline]; } } - + self.currentInterval = 0; [self.thresholdList removeAllObjects]; } diff --git a/LFLiveKit/publish/NSMutableArray+LFAdd.h b/LFLiveKit/publish/NSMutableArray+LFAdd.h index 3b463356..424556f0 100755 --- a/LFLiveKit/publish/NSMutableArray+LFAdd.h +++ b/LFLiveKit/publish/NSMutableArray+LFAdd.h @@ -11,10 +11,10 @@ @interface NSMutableArray (YYAdd) /** - Removes and returns the object with the lowest-valued index in the array. - If the array is empty, it just returns nil. - - @return The first object, or nil. + Removes and returns the object with the lowest-valued index in the array. + If the array is empty, it just returns nil. + + @return The first object, or nil. */ - (nullable id)lfPopFirstObject; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index 53f5fa37..552c7d42 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -7,191 +7,183 @@ objects = { /* Begin PBXBuildFile section */ - 57B42059E84CC681C5C99B68 /* libPods-LFLiveKitDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D506B5639A1D45519536773 /* libPods-LFLiveKitDemo.a */; }; - 840762F11D07C7D0000FD0BF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762F01D07C7D0000FD0BF /* main.m */; }; - 840762F41D07C7D0000FD0BF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762F31D07C7D0000FD0BF /* AppDelegate.m */; }; - 840762F71D07C7D0000FD0BF /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 840762F61D07C7D0000FD0BF /* ViewController.m */; }; - 840762FC1D07C7D0000FD0BF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 840762FB1D07C7D0000FD0BF /* Assets.xcassets */; }; - 840762FF1D07C7D0000FD0BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 840762FD1D07C7D0000FD0BF /* LaunchScreen.storyboard */; }; - 840763291D07C894000FD0BF /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 840763241D07C894000FD0BF /* UIControl+YYAdd.m */; }; - 8407632A1D07C894000FD0BF /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 840763261D07C894000FD0BF /* UIView+YYAdd.m */; }; - 8407632B1D07C894000FD0BF /* LFLivePreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 840763281D07C894000FD0BF /* LFLivePreview.m */; }; - 840763351D07C899000FD0BF /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8407632D1D07C899000FD0BF /* camra_beauty@2x.png */; }; - 840763361D07C899000FD0BF /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8407632E1D07C899000FD0BF /* camra_beauty@3x.png */; }; - 840763371D07C899000FD0BF /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8407632F1D07C899000FD0BF /* camra_beauty_close@2x.png */; }; - 840763381D07C899000FD0BF /* camra_beauty_close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 840763301D07C899000FD0BF /* camra_beauty_close@3x.png */; }; - 840763391D07C899000FD0BF /* camra_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 840763311D07C899000FD0BF /* camra_preview@2x.png */; }; - 8407633A1D07C899000FD0BF /* camra_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 840763321D07C899000FD0BF /* camra_preview@3x.png */; }; - 8407633B1D07C899000FD0BF /* close_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 840763331D07C899000FD0BF /* close_preview@2x.png */; }; - 8407633C1D07C899000FD0BF /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 840763341D07C899000FD0BF /* close_preview@3x.png */; }; + 48030CC801EBECA515F55CA1 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 752951DE2C76DAD969BAFB60 /* libPods.a */; }; + B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E7E1D348F3D00B34CA8 /* main.m */; }; + B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E811D348F3D00B34CA8 /* AppDelegate.m */; }; + B2D23E851D348F3D00B34CA8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E841D348F3D00B34CA8 /* ViewController.m */; }; + B2D23E881D348F3D00B34CA8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E861D348F3D00B34CA8 /* Main.storyboard */; }; + B2D23E8D1D348F3D00B34CA8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E8B1D348F3D00B34CA8 /* LaunchScreen.storyboard */; }; + B2D23EAA1D348F7100B34CA8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E941D348F7100B34CA8 /* Assets.xcassets */; }; + B2D23EAB1D348F7100B34CA8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E961D348F7100B34CA8 /* LaunchScreen.storyboard */; }; + B2D23EAC1D348F7100B34CA8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E981D348F7100B34CA8 /* Main.storyboard */; }; + B2D23EAD1D348F7100B34CA8 /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E9C1D348F7100B34CA8 /* UIControl+YYAdd.m */; }; + B2D23EAE1D348F7100B34CA8 /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E9E1D348F7100B34CA8 /* UIView+YYAdd.m */; }; + B2D23EAF1D348F7100B34CA8 /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA01D348F7100B34CA8 /* camra_beauty@2x.png */; }; + B2D23EB01D348F7100B34CA8 /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA11D348F7100B34CA8 /* camra_beauty@3x.png */; }; + B2D23EB11D348F7100B34CA8 /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA21D348F7100B34CA8 /* camra_beauty_close@2x.png */; }; + B2D23EB21D348F7100B34CA8 /* camra_beauty_close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA31D348F7100B34CA8 /* camra_beauty_close@3x.png */; }; + B2D23EB31D348F7100B34CA8 /* camra_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA41D348F7100B34CA8 /* camra_preview@2x.png */; }; + B2D23EB41D348F7100B34CA8 /* camra_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */; }; + B2D23EB51D348F7100B34CA8 /* close_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */; }; + B2D23EB61D348F7100B34CA8 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */; }; + B2D23EB71D348F7100B34CA8 /* LFLivePreview.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 195672426061368F86F1F4FA /* Pods-LFLiveKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.release.xcconfig"; sourceTree = ""; }; - 5D506B5639A1D45519536773 /* libPods-LFLiveKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7FAA55DD93CD7AB58E7A977A /* Pods-LFLiveKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.debug.xcconfig"; sourceTree = ""; }; - 840762EC1D07C7D0000FD0BF /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 840762F01D07C7D0000FD0BF /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 840762F21D07C7D0000FD0BF /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 840762F31D07C7D0000FD0BF /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 840762F51D07C7D0000FD0BF /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - 840762F61D07C7D0000FD0BF /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - 840762FB1D07C7D0000FD0BF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 840762FE1D07C7D0000FD0BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 840763001D07C7D0000FD0BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 840763091D07C7D0000FD0BF /* LFLiveKitDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitDemoTests.m; sourceTree = ""; }; - 8407630B1D07C7D0000FD0BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 840763141D07C7D0000FD0BF /* LFLiveKitDemoUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitDemoUITests.m; sourceTree = ""; }; - 840763161D07C7D0000FD0BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 840763231D07C894000FD0BF /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = ""; }; - 840763241D07C894000FD0BF /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = ""; }; - 840763251D07C894000FD0BF /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = ""; }; - 840763261D07C894000FD0BF /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = ""; }; - 840763271D07C894000FD0BF /* LFLivePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLivePreview.h; sourceTree = ""; }; - 840763281D07C894000FD0BF /* LFLivePreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLivePreview.m; sourceTree = ""; }; - 8407632D1D07C899000FD0BF /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; - 8407632E1D07C899000FD0BF /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; - 8407632F1D07C899000FD0BF /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; - 840763301D07C899000FD0BF /* camra_beauty_close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@3x.png"; sourceTree = ""; }; - 840763311D07C899000FD0BF /* camra_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@2x.png"; sourceTree = ""; }; - 840763321D07C899000FD0BF /* camra_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@3x.png"; sourceTree = ""; }; - 840763331D07C899000FD0BF /* close_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@2x.png"; sourceTree = ""; }; - 840763341D07C899000FD0BF /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; + 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + 752951DE2C76DAD969BAFB60 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B2D23E7E1D348F3D00B34CA8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + B2D23E801D348F3D00B34CA8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + B2D23E811D348F3D00B34CA8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + B2D23E831D348F3D00B34CA8 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + B2D23E841D348F3D00B34CA8 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + B2D23E871D348F3D00B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + B2D23E8C1D348F3D00B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + B2D23E8E1D348F3D00B34CA8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B2D23E941D348F7100B34CA8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B2D23E971D348F7100B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = LaunchScreen.storyboard; sourceTree = ""; }; + B2D23E991D348F7100B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = ""; }; + B2D23E9B1D348F7100B34CA8 /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = ""; }; + B2D23E9C1D348F7100B34CA8 /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = ""; }; + B2D23E9D1D348F7100B34CA8 /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = ""; }; + B2D23E9E1D348F7100B34CA8 /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = ""; }; + B2D23EA01D348F7100B34CA8 /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; + B2D23EA11D348F7100B34CA8 /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; + B2D23EA21D348F7100B34CA8 /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; + B2D23EA31D348F7100B34CA8 /* camra_beauty_close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@3x.png"; sourceTree = ""; }; + B2D23EA41D348F7100B34CA8 /* camra_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@2x.png"; sourceTree = ""; }; + B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@3x.png"; sourceTree = ""; }; + B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@2x.png"; sourceTree = ""; }; + B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; + B2D23EA81D348F7100B34CA8 /* LFLivePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLivePreview.h; sourceTree = ""; }; + B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLivePreview.m; sourceTree = ""; }; + DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 840762E91D07C7D0000FD0BF /* Frameworks */ = { + B2D23E771D348F3D00B34CA8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 57B42059E84CC681C5C99B68 /* libPods-LFLiveKitDemo.a in Frameworks */, + 48030CC801EBECA515F55CA1 /* libPods.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 713DA9EBCA308093C74917F9 /* Frameworks */ = { + 2A74A5AD65CD9450ED23C3E0 /* Pods */ = { isa = PBXGroup; children = ( - 5D506B5639A1D45519536773 /* libPods-LFLiveKitDemo.a */, + 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */, + DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */, ); - name = Frameworks; + name = Pods; sourceTree = ""; }; - 840762E31D07C7D0000FD0BF = { + B2D23E711D348F3D00B34CA8 = { isa = PBXGroup; children = ( - 840762EE1D07C7D0000FD0BF /* LFLiveKitDemo */, - 840763081D07C7D0000FD0BF /* LFLiveKitDemoTests */, - 840763131D07C7D0000FD0BF /* LFLiveKitDemoUITests */, - 840762ED1D07C7D0000FD0BF /* Products */, - 9BA1F10CECEAF692D0035AED /* Pods */, - 713DA9EBCA308093C74917F9 /* Frameworks */, + B2D23E7C1D348F3D00B34CA8 /* LFLiveKitDemo */, + B2D23E7B1D348F3D00B34CA8 /* Products */, + 2A74A5AD65CD9450ED23C3E0 /* Pods */, + E6AF2D0BFA2946745BB5F365 /* Frameworks */, ); sourceTree = ""; }; - 840762ED1D07C7D0000FD0BF /* Products */ = { + B2D23E7B1D348F3D00B34CA8 /* Products */ = { isa = PBXGroup; children = ( - 840762EC1D07C7D0000FD0BF /* LFLiveKitDemo.app */, + B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */, ); name = Products; sourceTree = ""; }; - 840762EE1D07C7D0000FD0BF /* LFLiveKitDemo */ = { + B2D23E7C1D348F3D00B34CA8 /* LFLiveKitDemo */ = { isa = PBXGroup; children = ( - 840763221D07C894000FD0BF /* category */, - 840763271D07C894000FD0BF /* LFLivePreview.h */, - 840763281D07C894000FD0BF /* LFLivePreview.m */, - 840762F21D07C7D0000FD0BF /* AppDelegate.h */, - 840762F31D07C7D0000FD0BF /* AppDelegate.m */, - 840762F51D07C7D0000FD0BF /* ViewController.h */, - 840762F61D07C7D0000FD0BF /* ViewController.m */, - 840762FB1D07C7D0000FD0BF /* Assets.xcassets */, - 840762FD1D07C7D0000FD0BF /* LaunchScreen.storyboard */, - 840763001D07C7D0000FD0BF /* Info.plist */, - 840762EF1D07C7D0000FD0BF /* Supporting Files */, + B2D23E941D348F7100B34CA8 /* Assets.xcassets */, + B2D23E951D348F7100B34CA8 /* Base.lproj */, + B2D23E9A1D348F7100B34CA8 /* category */, + B2D23E9F1D348F7100B34CA8 /* images */, + B2D23EA81D348F7100B34CA8 /* LFLivePreview.h */, + B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */, + B2D23E801D348F3D00B34CA8 /* AppDelegate.h */, + B2D23E811D348F3D00B34CA8 /* AppDelegate.m */, + B2D23E831D348F3D00B34CA8 /* ViewController.h */, + B2D23E841D348F3D00B34CA8 /* ViewController.m */, + B2D23E861D348F3D00B34CA8 /* Main.storyboard */, + B2D23E8B1D348F3D00B34CA8 /* LaunchScreen.storyboard */, + B2D23E8E1D348F3D00B34CA8 /* Info.plist */, + B2D23E7D1D348F3D00B34CA8 /* Supporting Files */, ); path = LFLiveKitDemo; sourceTree = ""; }; - 840762EF1D07C7D0000FD0BF /* Supporting Files */ = { + B2D23E7D1D348F3D00B34CA8 /* Supporting Files */ = { isa = PBXGroup; children = ( - 8407632C1D07C899000FD0BF /* images */, - 840762F01D07C7D0000FD0BF /* main.m */, + B2D23E7E1D348F3D00B34CA8 /* main.m */, ); name = "Supporting Files"; sourceTree = ""; }; - 840763081D07C7D0000FD0BF /* LFLiveKitDemoTests */ = { - isa = PBXGroup; - children = ( - 840763091D07C7D0000FD0BF /* LFLiveKitDemoTests.m */, - 8407630B1D07C7D0000FD0BF /* Info.plist */, - ); - path = LFLiveKitDemoTests; - sourceTree = ""; - }; - 840763131D07C7D0000FD0BF /* LFLiveKitDemoUITests */ = { + B2D23E951D348F7100B34CA8 /* Base.lproj */ = { isa = PBXGroup; children = ( - 840763141D07C7D0000FD0BF /* LFLiveKitDemoUITests.m */, - 840763161D07C7D0000FD0BF /* Info.plist */, + B2D23E961D348F7100B34CA8 /* LaunchScreen.storyboard */, + B2D23E981D348F7100B34CA8 /* Main.storyboard */, ); - path = LFLiveKitDemoUITests; + path = Base.lproj; sourceTree = ""; }; - 840763221D07C894000FD0BF /* category */ = { + B2D23E9A1D348F7100B34CA8 /* category */ = { isa = PBXGroup; children = ( - 840763231D07C894000FD0BF /* UIControl+YYAdd.h */, - 840763241D07C894000FD0BF /* UIControl+YYAdd.m */, - 840763251D07C894000FD0BF /* UIView+YYAdd.h */, - 840763261D07C894000FD0BF /* UIView+YYAdd.m */, + B2D23E9B1D348F7100B34CA8 /* UIControl+YYAdd.h */, + B2D23E9C1D348F7100B34CA8 /* UIControl+YYAdd.m */, + B2D23E9D1D348F7100B34CA8 /* UIView+YYAdd.h */, + B2D23E9E1D348F7100B34CA8 /* UIView+YYAdd.m */, ); path = category; sourceTree = ""; }; - 8407632C1D07C899000FD0BF /* images */ = { + B2D23E9F1D348F7100B34CA8 /* images */ = { isa = PBXGroup; children = ( - 8407632D1D07C899000FD0BF /* camra_beauty@2x.png */, - 8407632E1D07C899000FD0BF /* camra_beauty@3x.png */, - 8407632F1D07C899000FD0BF /* camra_beauty_close@2x.png */, - 840763301D07C899000FD0BF /* camra_beauty_close@3x.png */, - 840763311D07C899000FD0BF /* camra_preview@2x.png */, - 840763321D07C899000FD0BF /* camra_preview@3x.png */, - 840763331D07C899000FD0BF /* close_preview@2x.png */, - 840763341D07C899000FD0BF /* close_preview@3x.png */, + B2D23EA01D348F7100B34CA8 /* camra_beauty@2x.png */, + B2D23EA11D348F7100B34CA8 /* camra_beauty@3x.png */, + B2D23EA21D348F7100B34CA8 /* camra_beauty_close@2x.png */, + B2D23EA31D348F7100B34CA8 /* camra_beauty_close@3x.png */, + B2D23EA41D348F7100B34CA8 /* camra_preview@2x.png */, + B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */, + B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */, + B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */, ); path = images; sourceTree = ""; }; - 9BA1F10CECEAF692D0035AED /* Pods */ = { + E6AF2D0BFA2946745BB5F365 /* Frameworks */ = { isa = PBXGroup; children = ( - 7FAA55DD93CD7AB58E7A977A /* Pods-LFLiveKitDemo.debug.xcconfig */, - 195672426061368F86F1F4FA /* Pods-LFLiveKitDemo.release.xcconfig */, + 752951DE2C76DAD969BAFB60 /* libPods.a */, ); - name = Pods; + name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 840762EB1D07C7D0000FD0BF /* LFLiveKitDemo */ = { + B2D23E791D348F3D00B34CA8 /* LFLiveKitDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = 840763191D07C7D0000FD0BF /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; + buildConfigurationList = B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; buildPhases = ( - 7E4C7C5523618A0595228010 /* 📦 Check Pods Manifest.lock */, - 840762E81D07C7D0000FD0BF /* Sources */, - 840762E91D07C7D0000FD0BF /* Frameworks */, - 840762EA1D07C7D0000FD0BF /* Resources */, - E4007BB7D4B0E165011BF22F /* 📦 Embed Pods Frameworks */, - 64FCFF97E6544B1C8F282394 /* 📦 Copy Pods Resources */, + C8C9FDE8B4243D5A35666AC2 /* Check Pods Manifest.lock */, + B2D23E761D348F3D00B34CA8 /* Sources */, + B2D23E771D348F3D00B34CA8 /* Frameworks */, + B2D23E781D348F3D00B34CA8 /* Resources */, + AA5B3891AC54EBDC40D67DF1 /* Copy Pods Resources */, ); buildRules = ( ); @@ -199,29 +191,24 @@ ); name = LFLiveKitDemo; productName = LFLiveKitDemo; - productReference = 840762EC1D07C7D0000FD0BF /* LFLiveKitDemo.app */; + productReference = B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 840762E41D07C7D0000FD0BF /* Project object */ = { + B2D23E721D348F3D00B34CA8 /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0730; - ORGANIZATIONNAME = admin; + ORGANIZATIONNAME = zhanqi.tv; TargetAttributes = { - 840762EB1D07C7D0000FD0BF = { + B2D23E791D348F3D00B34CA8 = { CreatedOnToolsVersion = 7.3; - SystemCapabilities = { - com.apple.BackgroundModes = { - enabled = 1; - }; - }; }; }; }; - buildConfigurationList = 840762E71D07C7D0000FD0BF /* Build configuration list for PBXProject "LFLiveKitDemo" */; + buildConfigurationList = B2D23E751D348F3D00B34CA8 /* Build configuration list for PBXProject "LFLiveKitDemo" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -229,60 +216,63 @@ en, Base, ); - mainGroup = 840762E31D07C7D0000FD0BF; - productRefGroup = 840762ED1D07C7D0000FD0BF /* Products */; + mainGroup = B2D23E711D348F3D00B34CA8; + productRefGroup = B2D23E7B1D348F3D00B34CA8 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 840762EB1D07C7D0000FD0BF /* LFLiveKitDemo */, + B2D23E791D348F3D00B34CA8 /* LFLiveKitDemo */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 840762EA1D07C7D0000FD0BF /* Resources */ = { + B2D23E781D348F3D00B34CA8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 840763371D07C899000FD0BF /* camra_beauty_close@2x.png in Resources */, - 840762FF1D07C7D0000FD0BF /* LaunchScreen.storyboard in Resources */, - 840763351D07C899000FD0BF /* camra_beauty@2x.png in Resources */, - 840762FC1D07C7D0000FD0BF /* Assets.xcassets in Resources */, - 8407633A1D07C899000FD0BF /* camra_preview@3x.png in Resources */, - 840763381D07C899000FD0BF /* camra_beauty_close@3x.png in Resources */, - 8407633C1D07C899000FD0BF /* close_preview@3x.png in Resources */, - 8407633B1D07C899000FD0BF /* close_preview@2x.png in Resources */, - 840763391D07C899000FD0BF /* camra_preview@2x.png in Resources */, - 840763361D07C899000FD0BF /* camra_beauty@3x.png in Resources */, + B2D23E8D1D348F3D00B34CA8 /* LaunchScreen.storyboard in Resources */, + B2D23EAA1D348F7100B34CA8 /* Assets.xcassets in Resources */, + B2D23EAC1D348F7100B34CA8 /* Main.storyboard in Resources */, + B2D23EAB1D348F7100B34CA8 /* LaunchScreen.storyboard in Resources */, + B2D23EB21D348F7100B34CA8 /* camra_beauty_close@3x.png in Resources */, + B2D23EAF1D348F7100B34CA8 /* camra_beauty@2x.png in Resources */, + B2D23EB61D348F7100B34CA8 /* close_preview@3x.png in Resources */, + B2D23EB41D348F7100B34CA8 /* camra_preview@3x.png in Resources */, + B2D23EB51D348F7100B34CA8 /* close_preview@2x.png in Resources */, + B2D23EB11D348F7100B34CA8 /* camra_beauty_close@2x.png in Resources */, + B2D23EB01D348F7100B34CA8 /* camra_beauty@3x.png in Resources */, + B2D23EB31D348F7100B34CA8 /* camra_preview@2x.png in Resources */, + B2D23E881D348F3D00B34CA8 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 64FCFF97E6544B1C8F282394 /* 📦 Copy Pods Resources */ = { + AA5B3891AC54EBDC40D67DF1 /* Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Copy Pods Resources"; + name = "Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 7E4C7C5523618A0595228010 /* 📦 Check Pods Manifest.lock */ = { + C8C9FDE8B4243D5A35666AC2 /* Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Check Pods Manifest.lock"; + name = "Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -290,52 +280,61 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - E4007BB7D4B0E165011BF22F /* 📦 Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 840762E81D07C7D0000FD0BF /* Sources */ = { + B2D23E761D348F3D00B34CA8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8407632B1D07C894000FD0BF /* LFLivePreview.m in Sources */, - 840762F71D07C7D0000FD0BF /* ViewController.m in Sources */, - 840763291D07C894000FD0BF /* UIControl+YYAdd.m in Sources */, - 840762F41D07C7D0000FD0BF /* AppDelegate.m in Sources */, - 8407632A1D07C894000FD0BF /* UIView+YYAdd.m in Sources */, - 840762F11D07C7D0000FD0BF /* main.m in Sources */, + B2D23EB71D348F7100B34CA8 /* LFLivePreview.m in Sources */, + B2D23E851D348F3D00B34CA8 /* ViewController.m in Sources */, + B2D23EAD1D348F7100B34CA8 /* UIControl+YYAdd.m in Sources */, + B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */, + B2D23EAE1D348F7100B34CA8 /* UIView+YYAdd.m in Sources */, + B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - 840762FD1D07C7D0000FD0BF /* LaunchScreen.storyboard */ = { + B2D23E861D348F3D00B34CA8 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B2D23E871D348F3D00B34CA8 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B2D23E8B1D348F3D00B34CA8 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B2D23E8C1D348F3D00B34CA8 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + B2D23E961D348F7100B34CA8 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - 840762FE1D07C7D0000FD0BF /* Base */, + B2D23E971D348F7100B34CA8 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; + B2D23E981D348F7100B34CA8 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B2D23E991D348F7100B34CA8 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 840763171D07C7D0000FD0BF /* Debug */ = { + B2D23E8F1D348F3D00B34CA8 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -376,11 +375,10 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 840763181D07C7D0000FD0BF /* Release */ = { + B2D23E901D348F3D00B34CA8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -414,35 +412,32 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 8407631A1D07C7D0000FD0BF /* Debug */ = { + B2D23E921D348F3D00B34CA8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7FAA55DD93CD7AB58E7A977A /* Pods-LFLiveKitDemo.debug.xcconfig */; + baseConfigurationReference = 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ENABLE_BITCODE = NO; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.LFLiveKitDemo; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; - 8407631B1D07C7D0000FD0BF /* Release */ = { + B2D23E931D348F3D00B34CA8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 195672426061368F86F1F4FA /* Pods-LFLiveKitDemo.release.xcconfig */; + baseConfigurationReference = DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ENABLE_BITCODE = NO; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.LFLiveKitDemo; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -450,25 +445,25 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 840762E71D07C7D0000FD0BF /* Build configuration list for PBXProject "LFLiveKitDemo" */ = { + B2D23E751D348F3D00B34CA8 /* Build configuration list for PBXProject "LFLiveKitDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - 840763171D07C7D0000FD0BF /* Debug */, - 840763181D07C7D0000FD0BF /* Release */, + B2D23E8F1D348F3D00B34CA8 /* Debug */, + B2D23E901D348F3D00B34CA8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 840763191D07C7D0000FD0BF /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */ = { + B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8407631A1D07C7D0000FD0BF /* Debug */, - 8407631B1D07C7D0000FD0BF /* Release */, + B2D23E921D348F3D00B34CA8 /* Debug */, + B2D23E931D348F3D00B34CA8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 840762E41D07C7D0000FD0BF /* Project object */; + rootObject = B2D23E721D348F3D00B34CA8 /* Project object */; } diff --git a/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json index 36d2c80d..eeea76c2 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -59,6 +59,11 @@ "idiom" : "ipad", "size" : "76x76", "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" } ], "info" : { diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.h b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.h index 096b8d46..14a93625 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.h +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.h @@ -10,5 +10,4 @@ @interface LFLivePreview : UIView - @end diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 151babd9..805d9948 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -11,6 +11,25 @@ #import "UIView+YYAdd.h" #import "LFLiveSession.h" +inline static NSString *formatedSpeed(float bytes, float elapsed_milli) { + if (elapsed_milli <= 0) { + return @"N/A"; + } + + if (bytes <= 0) { + return @"0 KB/s"; + } + + float bytes_per_sec = ((float)bytes) * 1000.f / elapsed_milli; + if (bytes_per_sec >= 1000 * 1000) { + return [NSString stringWithFormat:@"%.2f MB/s", ((float)bytes_per_sec) / 1000 / 1000]; + } else if (bytes_per_sec >= 1000) { + return [NSString stringWithFormat:@"%.1f KB/s", ((float)bytes_per_sec) / 1000]; + } else { + return [NSString stringWithFormat:@"%ld B/s", (long)bytes_per_sec]; + } +} + @interface LFLivePreview () @property (nonatomic, strong) UIButton *beautyButton; @@ -26,8 +45,8 @@ @interface LFLivePreview () @implementation LFLivePreview -- (instancetype)initWithFrame:(CGRect)frame{ - if(self = [super initWithFrame:frame]){ +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { self.backgroundColor = [UIColor clearColor]; [self requestAccessForVideo]; [self requestAccessForAudio]; @@ -42,198 +61,193 @@ - (instancetype)initWithFrame:(CGRect)frame{ } #pragma mark -- Public Method -- (void)requestAccessForVideo{ +- (void)requestAccessForVideo { __weak typeof(self) _self = self; AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; switch (status) { - case AVAuthorizationStatusNotDetermined:{ - // 许可对话没有出现,发起授权许可 - [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { + case AVAuthorizationStatusNotDetermined: { + // 许可对话没有出现,发起授权许可 + [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { if (granted) { dispatch_async(dispatch_get_main_queue(), ^{ [_self.session setRunning:YES]; }); } }]; - break; - } - case AVAuthorizationStatusAuthorized:{ - // 已经开启授权,可继续 - //dispatch_async(dispatch_get_main_queue(), ^{ - [_self.session setRunning:YES]; - //}); - break; - } - case AVAuthorizationStatusDenied: - case AVAuthorizationStatusRestricted: - // 用户明确地拒绝授权,或者相机设备无法访问 - - break; - default: - break; + break; + } + case AVAuthorizationStatusAuthorized: { + // 已经开启授权,可继续 + [_self.session setRunning:YES]; + break; + } + case AVAuthorizationStatusDenied: + case AVAuthorizationStatusRestricted: + // 用户明确地拒绝授权,或者相机设备无法访问 + + break; + default: + break; } } -- (void)requestAccessForAudio{ +- (void)requestAccessForAudio { AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio]; switch (status) { - case AVAuthorizationStatusNotDetermined:{ - [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) { + case AVAuthorizationStatusNotDetermined: { + [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) { }]; - break; - } - case AVAuthorizationStatusAuthorized:{ - break; - } - case AVAuthorizationStatusDenied: - case AVAuthorizationStatusRestricted: - break; - default: - break; + break; + } + case AVAuthorizationStatusAuthorized: { + break; + } + case AVAuthorizationStatusDenied: + case AVAuthorizationStatusRestricted: + break; + default: + break; } } - #pragma mark -- LFStreamingSessionDelegate /** live status changed will callback */ -- (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange:(LFLiveState)state{ +- (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange:(LFLiveState)state { NSLog(@"liveStateDidChange: %ld", state); switch (state) { - case LFLiveReady: - _stateLabel.text = @"未连接"; - break; - case LFLivePending: - _stateLabel.text = @"连接中"; - break; - case LFLiveStart: - _stateLabel.text = @"已连接"; - break; - case LFLiveError: - _stateLabel.text = @"连接错误"; - break; - case LFLiveStop: - _stateLabel.text = @"未连接"; - break; - default: - break; + case LFLiveReady: + _stateLabel.text = @"未连接"; + break; + case LFLivePending: + _stateLabel.text = @"连接中"; + break; + case LFLiveStart: + _stateLabel.text = @"已连接"; + break; + case LFLiveError: + _stateLabel.text = @"连接错误"; + break; + case LFLiveStop: + _stateLabel.text = @"未连接"; + break; + default: + break; } } /** live debug info callback */ -- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo{ - NSLog(@"debugInfo: %lf", debugInfo.dataFlow); +- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug *)debugInfo { + NSLog(@"debugInfo uploadSpeed: %@", formatedSpeed(debugInfo.currentBandwidth, debugInfo.elapsedMilli)); } /** callback socket errorcode */ -- (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode{ +- (void)liveSession:(nullable LFLiveSession *)session errorCode:(LFLiveSocketErrorCode)errorCode { NSLog(@"errorCode: %ld", errorCode); } #pragma mark -- Getter Setter -- (LFLiveSession*)session{ - if(!_session){ +- (LFLiveSession *)session { + if (!_session) { /** 发现大家有不会用横屏的请注意啦,横屏需要在ViewController supportedInterfaceOrientations修改方向 默认竖屏 ****/ /** 发现大家有不会用横屏的请注意啦,横屏需要在ViewController supportedInterfaceOrientations修改方向 默认竖屏 ****/ /** 发现大家有不会用横屏的请注意啦,横屏需要在ViewController supportedInterfaceOrientations修改方向 默认竖屏 ****/ - - - + + /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; - - + /**   自己定制单声道 */ /* - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 1; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_64Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; - */ - + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; + audioConfiguration.numberOfChannels = 1; + audioConfiguration.audioBitrate = LFLiveAudioBitRate_64Kbps; + audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; + */ + /**   自己定制高质量音频96K */ /* - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 2; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_96Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; + audioConfiguration.numberOfChannels = 2; + audioConfiguration.audioBitrate = LFLiveAudioBitRate_96Kbps; + audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; */ - + /**   自己定制高质量音频96K 分辨率设置为540*960 方向竖屏 */ - + /* - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 2; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_96Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - - LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(540, 960); - videoConfiguration.videoBitRate = 800*1024; - videoConfiguration.videoMaxBitRate = 1000*1024; - videoConfiguration.videoMinBitRate = 500*1024; - videoConfiguration.videoFrameRate = 24; - videoConfiguration.videoMaxKeyframeInterval = 48; - videoConfiguration.orientation = UIInterfaceOrientationPortrait; - videoConfiguration.sessionPreset = LFCaptureSessionPreset540x960; - - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ - - + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; + audioConfiguration.numberOfChannels = 2; + audioConfiguration.audioBitrate = LFLiveAudioBitRate_96Kbps; + audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + + LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; + videoConfiguration.videoSize = CGSizeMake(540, 960); + videoConfiguration.videoBitRate = 800*1024; + videoConfiguration.videoMaxBitRate = 1000*1024; + videoConfiguration.videoMinBitRate = 500*1024; + videoConfiguration.videoFrameRate = 24; + videoConfiguration.videoMaxKeyframeInterval = 48; + videoConfiguration.orientation = UIInterfaceOrientationPortrait; + videoConfiguration.sessionPreset = LFCaptureSessionPreset540x960; + + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; + */ + + /**   自己定制高质量音频128K 分辨率设置为720*1280 方向竖屏 */ - + /* - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 2; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - - LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(720, 1280); - videoConfiguration.videoBitRate = 800*1024; - videoConfiguration.videoMaxBitRate = 1000*1024; - videoConfiguration.videoMinBitRate = 500*1024; - videoConfiguration.videoFrameRate = 15; - videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.orientation = UIInterfaceOrientationPortrait; - videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; - - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ - - + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; + audioConfiguration.numberOfChannels = 2; + audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; + audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + + LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; + videoConfiguration.videoSize = CGSizeMake(720, 1280); + videoConfiguration.videoBitRate = 800*1024; + videoConfiguration.videoMaxBitRate = 1000*1024; + videoConfiguration.videoMinBitRate = 500*1024; + videoConfiguration.videoFrameRate = 15; + videoConfiguration.videoMaxKeyframeInterval = 30; + videoConfiguration.orientation = UIInterfaceOrientationPortrait; + videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; + + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; + */ + + /**   自己定制高质量音频128K 分辨率设置为720*1280 方向横屏 */ - + /* - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 2; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - - LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(1280, 720); - videoConfiguration.videoBitRate = 800*1024; - videoConfiguration.videoMaxBitRate = 1000*1024; - videoConfiguration.videoMinBitRate = 500*1024; - videoConfiguration.videoFrameRate = 15; - videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.landscape = YES; - videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; - - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ - + LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; + audioConfiguration.numberOfChannels = 2; + audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; + audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + + LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; + videoConfiguration.videoSize = CGSizeMake(1280, 720); + videoConfiguration.videoBitRate = 800*1024; + videoConfiguration.videoMaxBitRate = 1000*1024; + videoConfiguration.videoMinBitRate = 500*1024; + videoConfiguration.videoFrameRate = 15; + videoConfiguration.videoMaxKeyframeInterval = 30; + videoConfiguration.landscape = YES; + videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; + + _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; + */ + _session.delegate = self; + _session.showDebugInfo = NO; _session.preView = self; } return _session; } -- (UIView*)containerView{ - if(!_containerView){ +- (UIView *)containerView { + if (!_containerView) { _containerView = [UIView new]; _containerView.frame = self.bounds; _containerView.backgroundColor = [UIColor clearColor]; @@ -242,8 +256,8 @@ - (UIView*)containerView{ return _containerView; } -- (UILabel*)stateLabel{ - if(!_stateLabel){ +- (UILabel *)stateLabel { + if (!_stateLabel) { _stateLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 80, 40)]; _stateLabel.text = @"未连接"; _stateLabel.textColor = [UIColor whiteColor]; @@ -252,8 +266,8 @@ - (UILabel*)stateLabel{ return _stateLabel; } -- (UIButton*)closeButton{ - if(!_closeButton){ +- (UIButton *)closeButton { + if (!_closeButton) { _closeButton = [UIButton new]; _closeButton.size = CGSizeMake(44, 44); _closeButton.left = self.width - 10 - _closeButton.width; @@ -261,14 +275,14 @@ - (UIButton*)closeButton{ [_closeButton setImage:[UIImage imageNamed:@"close_preview"] forState:UIControlStateNormal]; _closeButton.exclusiveTouch = YES; [_closeButton addBlockForControlEvents:UIControlEventTouchUpInside block:^(id sender) { - + }]; } return _closeButton; } -- (UIButton*)cameraButton{ - if(!_cameraButton){ +- (UIButton *)cameraButton { + if (!_cameraButton) { _cameraButton = [UIButton new]; _cameraButton.size = CGSizeMake(44, 44); _cameraButton.origin = CGPointMake(_closeButton.left - 10 - _cameraButton.width, 20); @@ -283,11 +297,11 @@ - (UIButton*)cameraButton{ return _cameraButton; } -- (UIButton*)beautyButton{ - if(!_beautyButton){ +- (UIButton *)beautyButton { + if (!_beautyButton) { _beautyButton = [UIButton new]; _beautyButton.size = CGSizeMake(44, 44); - _beautyButton.origin = CGPointMake(_cameraButton.left - 10 - _beautyButton.width,20); + _beautyButton.origin = CGPointMake(_cameraButton.left - 10 - _beautyButton.width, 20); [_beautyButton setImage:[UIImage imageNamed:@"camra_beauty"] forState:UIControlStateSelected]; [_beautyButton setImage:[UIImage imageNamed:@"camra_beauty_close"] forState:UIControlStateNormal]; _beautyButton.exclusiveTouch = YES; @@ -300,8 +314,8 @@ - (UIButton*)beautyButton{ return _beautyButton; } -- (UIButton*)startLiveButton{ - if(!_startLiveButton){ +- (UIButton *)startLiveButton { + if (!_startLiveButton) { _startLiveButton = [UIButton new]; _startLiveButton.size = CGSizeMake(self.width - 60, 44); _startLiveButton.left = 30; @@ -315,13 +329,13 @@ - (UIButton*)startLiveButton{ __weak typeof(self) _self = self; [_startLiveButton addBlockForControlEvents:UIControlEventTouchUpInside block:^(id sender) { _self.startLiveButton.selected = !_self.startLiveButton.selected; - if(_self.startLiveButton.selected){ + if (_self.startLiveButton.selected) { [_self.startLiveButton setTitle:@"结束直播" forState:UIControlStateNormal]; LFLiveStreamInfo *stream = [LFLiveStreamInfo new]; - stream.url = @"rtmp://live.hkstv.hk.lxdns.com:1935/live/stream789"; - //stream.url = @"rtmp://daniulive.com:1935/live/stream2399"; +// stream.url = @"rtmp://30.96.179.95:1935/live/1234"; + stream.url = @"rtmp://dlrtmpup.cdn.zhanqi.tv/zqlive/60156_LxdsN?k=1ca07961706095f6feb9df1667d838ed&t=5763b617"; [_self.session startLive:stream]; - }else{ + } else { [_self.startLiveButton setTitle:@"开始直播" forState:UIControlStateNormal]; [_self.session stopLive]; } @@ -331,3 +345,4 @@ - (UIButton*)startLiveButton{ } @end + diff --git a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m index 97ac3c2f..73359324 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m +++ b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m @@ -26,13 +26,11 @@ - (void)didReceiveMemoryWarning { // Dispose of any resources that can be recreated. } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations -{ +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation -{ +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return YES; } diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index 42f30d57..b3660360 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -1,8 +1,4 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'8.0' -target "LFLiveKitDemo" do - -pod 'LFLiveKit', '~> 1.8.0' - -end \ No newline at end of file +pod 'LFLiveKit', path: '../' \ No newline at end of file diff --git a/uncrustify.cfg b/uncrustify.cfg new file mode 100644 index 00000000..4679b288 --- /dev/null +++ b/uncrustify.cfg @@ -0,0 +1,643 @@ +# +# Uncrustify Configuration File +# File Created With UncrustifyX 0.4.3 (252) +# + +# Alignment +# --------- + +## Alignment + +# Align ObjC declaration params on colon +align_oc_decl_colon = true # boolean (false/true) + +# Align function prototypes on operator keyword +align_on_operator = false # boolean (false/true) + +# Align on tabstop +align_on_tabstop = false # boolean (false/true) + +# Align open brace of single-line functions +align_single_line_brace = false # boolean (false/true) + +# Align parameters in single-line functions with same name +align_same_func_call_params = false # boolean (false/true) + +# Align single-line functions with function prototypes +align_single_line_func = false # boolean (false/true) + +# Align variable definitions +align_func_params = false # boolean (false/true) + +# Align with tabs +align_with_tabs = false # boolean (false/true) + +# Keep non-indenting tabs +align_keep_tabs = false # boolean (false/true) + +# Left-align numbers +align_number_left = false # boolean (false/true) + +## Alignment Span + +# Alignment span for ObjC message colons +align_oc_msg_colon_span = 16 # number + +# Alignment span for ObjC message spec +align_oc_msg_spec_span = 0 # number + +# Alignment span for assignment +align_assign_span = 0 # number + +# Alignment span for variable definitions +align_var_def_span = 0 # number + +## Alignment Style + +# Alignment style for ampersand in typedefs +align_typedef_amp_style = 2 # number + +# Alignment style for ampersand in variable definitions +align_var_def_amp_style = 1 # number + +# Alignment style for star in typedefs +align_typedef_star_style = 2 # number + +# Alignment style for star in variable definitions +align_var_def_star_style = 1 # number + +## Other + +# Align attribute after variable name +align_var_def_attribute = false # boolean (false/true) + +# Align colon in struct bit fields +align_var_def_colon = false # boolean (false/true) + +# Align comments after close brace and endif +align_right_cmt_mix = false # boolean (false/true) + +# Align inline struct/enum/union variable definitions +align_var_def_inline = false # boolean (false/true) + +# Align left shift operators on new lines +align_left_shift = true # boolean (false/true) + +# Align macros wrapped with backslash and newline +align_nl_cont = false # boolean (false/true) + +# Mix aligining prototype and variable declarations +align_mix_var_proto = false # boolean (false/true) + +# Blank Lines +# ----------- + +## Newline After + +# Newline after multiline comment +nl_after_multiline_comment = false # boolean (false/true) + +## Newline Count After + +# Newline count after function body +nl_after_func_body = 2 # number + +## Other + +# Remove blank lines after open brace +eat_blanks_after_open_brace = false # boolean (false/true) + +# Remove blank lines before close brace +eat_blanks_before_close_brace = false # boolean (false/true) + +# Code-Modifying +# -------------- + +## Braces + +# Braces on chained if/elseif/else statements +mod_full_brace_if_chain = false # boolean (false/true) + +## Other + +# Move break in fully-braced case before close brace +mod_move_case_break = false # boolean (false/true) + +# Remove empty return as last statement in function +mod_remove_empty_return = false # boolean (false/true) + +## Parentheses + +# Add parentheses on while and if statements around bool +mod_full_paren_if_bool = false # boolean (false/true) + +## Semicolons + +# Change optional semicolons to real semicolons +mod_pawn_semicolon = false # boolean (false/true) + +# Remove superflous semicolons +mod_remove_extra_semicolon = false # boolean (false/true) + +## Sorting + +# Sort consecutive import statements +mod_sort_import = false # boolean (false/true) + +# Sort include statements +mod_sort_include = false # boolean (false/true) + +# Sort using statements +mod_sort_using = false # boolean (false/true) + +# Comments +# -------- + +## Empty Lines + +# Empty first line for multi-line C comments +cmt_c_nl_start = false # boolean (false/true) + +# Empty first line for multi-line C++ comments +cmt_cpp_nl_start = false # boolean (false/true) + +# Empty last line for multi-line C comments +cmt_c_nl_end = false # boolean (false/true) + +# Empty last line for multi-line C++ comments +cmt_cpp_nl_end = false # boolean (false/true) + +## Other + +# Change C++ comments to C comments +cmt_cpp_to_c = false # boolean (false/true) + +# Group C comments +cmt_c_group = false # boolean (false/true) + +# Group C++ comments +cmt_cpp_group = false # boolean (false/true) + +# Indent multi-line comments +cmt_indent_multi = true # boolean (false/true) + +# Insert function comment if preprocessor statement +cmt_insert_before_preproc = false # boolean (false/true) + +# Remove leading spaces from multi-line comments +cmt_multi_check_last = true # boolean (false/true) + +# Stars on multi-line comments +cmt_star_cont = false # boolean (false/true) + +# General +# ------- + +## Other + +# Interpret >= +tok_split_gte = false # boolean (false/true) + +# Indentation +# ----------- + +## Indentation + +# Disable indenting class braces +indent_braces_no_class = false # boolean (false/true) + +# Disable indenting function braces +indent_braces_no_func = false # boolean (false/true) + +# Disable indenting struct braces +indent_braces_no_struct = false # boolean (false/true) + +# Double indent size for Indentation options +indent_func_param_double = false # boolean (false/true) + +# Indent ObjC block +indent_oc_block = true # boolean (false/true) + +# Indent braces +indent_braces = false # boolean (false/true) + +# Indent class body +indent_class = false # boolean (false/true) + +# Indent class variable constructors +indent_func_ctor_var_param = false # boolean (false/true) + +# Indent continued function call parameters +indent_func_call_param = false # boolean (false/true) + +# Indent function call parameters in class declarations +indent_func_class_param = false # boolean (false/true) + +# Indent function definition parameters +indent_func_def_param = false # boolean (false/true) + +# Indent function prototype parameters +indent_func_proto_param = false # boolean (false/true) + +# Indent template parameters +indent_template_param = false # boolean (false/true) + +## Indentation Size + +# Indent size based on brace parent +indent_brace_parent = false # boolean (false/true) + +# Indentation column size +indent_columns = 4 # number + +## Other + +# Align continued statements at equals +indent_align_assign = true # boolean (false/true) + +# Align strings broken by backslash +indent_align_string = false # boolean (false/true) + +# Indent BOOL inside parentheses +indent_bool_paren = false # boolean (false/true) + +# Indent after class colon +indent_class_colon = false # boolean (false/true) + +# Indent code after access specifier +indent_access_spec_body = false # boolean (false/true) + +# Indent comma inside parentheses +indent_comma_paren = false # boolean (false/true) + +# Indent comments in first column +indent_col1_comment = false # boolean (false/true) + +# Indent comments with tabs +indent_cmt_with_tabs = false # boolean (false/true) + +# Indent content after open square followed by newline +indent_square_nl = false # boolean (false/true) + +# Indent continued variable declarations +indent_var_def_cont = false # boolean (false/true) + +# Indent else\nif +indent_else_if = false # boolean (false/true) + +# Indent extern body +indent_extern = false # boolean (false/true) + +# Indent namespace body +indent_namespace = false # boolean (false/true) + +# Indent newline content after open parenthesis +indent_paren_nl = false # boolean (false/true) + +# Indent relative single line comments +indent_relative_single_line_comments = false # boolean (false/true) + +# Indent with tabs +indent_with_tabs = 0 # number + +# Indentation of first BOOL expression +indent_first_bool_expr = false # boolean (false/true) + +# Preserve SQL indentation +indent_preserve_sql = false # boolean (false/true) + +# Line-Splitting +# -------------- + +## Splitting + +# Split long for statements at semicolons +ls_for_split_full = false # boolean (false/true) + +# Split long function prototypes/calls at commas +ls_func_split_full = false # boolean (false/true) + +# Newlines +# -------- + +## Merging + +# Change unbraced for statements into one-liner +nl_create_for_one_liner = false # boolean (false/true) + +# Change unbraced if statements into one-liner +nl_create_if_one_liner = false # boolean (false/true) + +# Change unbraced while statements into one-liner +nl_create_while_one_liner = false # boolean (false/true) + +## Newline After + +# Newline after brace close +nl_after_brace_close = false # boolean (false/true) + +# Newline after brace open +nl_after_brace_open = false # boolean (false/true) + +# Newline after brace open comment +nl_after_brace_open_cmt = false # boolean (false/true) + +# Newline after case statement +nl_after_case = false # boolean (false/true) + +# Newline after macro multi-line definition +nl_multi_line_define = false # boolean (false/true) + +# Newline after return +nl_after_return = false # boolean (false/true) + +# Newline after semicolon +nl_after_semicolon = false # boolean (false/true) + +# Newline after virtual brace close +nl_after_vbrace_close = false # boolean (false/true) + +# Newline after virtual brace open +nl_after_vbrace_open = false # boolean (false/true) + +# Newline after virtual brace open with empty body +nl_after_vbrace_open_empty = false # boolean (false/true) + +## Newline Before + +# Newline before case statement +nl_before_case = false # boolean (false/true) + +## Newline Between + +# Newline between catch and open brace +nl_catch_brace = remove # string (add/force/ignore/remove) + +# Newline between close brace and catch +nl_brace_catch = remove # string (add/force/ignore/remove) + +# Newline between close brace and else +nl_brace_else = remove # string (add/force/ignore/remove) + +# Newline between close brace and finally +nl_brace_finally = remove # string (add/force/ignore/remove) + +# Newline between close brace and while +nl_brace_while = remove # string (add/force/ignore/remove) + +# Newline between close parenthesis and open brace in multi line conditional +nl_multi_line_cond = false # boolean (false/true) + +# Newline between do and open brace +nl_do_brace = remove # string (add/force/ignore/remove) + +# Newline between else and if +nl_else_if = remove # string (add/force/ignore/remove) + +# Newline between else and open brace +nl_else_brace = remove # string (add/force/ignore/remove) + +# Newline between else if and open brace +nl_elseif_brace = remove # string (add/force/ignore/remove) + +# Newline between enum and open brace +nl_enum_brace = remove # string (add/force/ignore/remove) + +# Newline between finally and open brace +nl_finally_brace = remove # string (add/force/ignore/remove) + +# Newline between for and open brace +nl_for_brace = remove # string (add/force/ignore/remove) + +# Newline between function call and open brace +nl_fcall_brace = remove # string (add/force/ignore/remove) + +# Newline between function signature and open brace +nl_fdef_brace = remove # string (add/force/ignore/remove) + +# Newline between if and open brace +nl_if_brace = remove # string (add/force/ignore/remove) + +# Newline between struct and open brace +nl_struct_brace = remove # string (add/force/ignore/remove) + +# Newline between switch and open brace +nl_switch_brace = remove # string (add/force/ignore/remove) + +# Newline between try and open brace +nl_try_brace = remove # string (add/force/ignore/remove) + +# Newline between union and open brace +nl_union_brace = remove # string (add/force/ignore/remove) + +# Newline between while and open brace +nl_while_brace = remove # string (add/force/ignore/remove) + +## Other + +# Alter newlines in #define macros +nl_define_macro = false # boolean (false/true) + +# Blank lines after preprocessor if/else +nl_squeeze_ifdef = false # boolean (false/true) + +# Collapse empty blocks between braces +nl_collapse_empty_body = false # boolean (false/true) + +# Double space before close brace of struct/union/enum +nl_ds_struct_enum_close_brace = false # boolean (false/true) + +# Double space commented entries in struct/enum +nl_ds_struct_enum_cmt = false # boolean (false/true) + +## Splitting + +# Don’t split one-line braced assignments +nl_assign_leave_one_liners = false # boolean (false/true) + +# Don’t split one-line braced statements +nl_class_leave_one_liners = false # boolean (false/true) + +# Don’t split one-line enums +nl_enum_leave_one_liners = false # boolean (false/true) + +# Don’t split one-line function definitions +nl_func_leave_one_liners = false # boolean (false/true) + +# Don’t split one-line get/set functions +nl_getset_leave_one_liners = false # boolean (false/true) + +# Don’t split one-line if/else statements +nl_if_leave_one_liners = false # boolean (false/true) + +# Other +# ----- + +## Other + +# Force encoding UTF-8 +utf8_force = false # boolean (false/true) + +# UTF-8 output if file contains bytes > 128 and < 255 +utf8_byte = false # boolean (false/true) + +# Preprocessor +# ------------ + +## Indentation + +# Indent preprocessor define +pp_define_at_level = false # boolean (false/true) + +# Indent preprocessor if/else/endif +pp_if_indent_code = false # boolean (false/true) + +# Indent preprocessor if/else/endif at level +pp_indent_at_level = false # boolean (false/true) + +# Indent preprocessor regions +pp_region_indent_code = false # boolean (false/true) + +# Spacing +# ------- + +## Other + +# Balance spaces inside nested parentheses +sp_balance_nested_parens = false # boolean (false/true) + +## Space After + +# Space after ObjC block caret +sp_after_oc_block_caret = remove # string (add/force/ignore/remove) + +# Space after ObjC colon +sp_after_oc_colon = remove # string (add/force/ignore/remove) + +# Space after ObjC message colon +sp_after_send_oc_colon = remove # string (add/force/ignore/remove) + +# Space after ObjC message receiver +sp_after_oc_msg_receiver = force # string (add/force/ignore/remove) + +# Space after ObjC return type +sp_after_oc_return_type = remove # string (add/force/ignore/remove) + +# Space after ObjC scope +sp_after_oc_scope = force # string (add/force/ignore/remove) + +# Space after ObjC type +sp_after_oc_type = remove # string (add/force/ignore/remove) + +# Space after cast +sp_after_cast = remove # string (add/force/ignore/remove) + +# Space after comma +sp_after_comma = force # string (add/force/ignore/remove) + +# Space after condition close parenthesis +sp_after_sparen = force # string (add/force/ignore/remove) + +# Space after operator +sp_after_operator = force # string (add/force/ignore/remove) + +# Space after pointer star +sp_after_ptr_star = remove # string (add/force/ignore/remove) + +## Space Around + +# Space around assignment operator +sp_assign = force # string (add/force/ignore/remove) + +# Space around boolean operators +sp_bool = force # string (add/force/ignore/remove) + +# Space around compare operators +sp_compare = force # string (add/force/ignore/remove) + +# Space around ternary condition colon +sp_cond_colon = force # string (add/force/ignore/remove) + +# Space around ternary condition question mark +sp_cond_question = force # string (add/force/ignore/remove) + +## Space Before + +# Space before ObjC block caret +sp_before_oc_block_caret = remove # string (add/force/ignore/remove) + +# Space before ObjC colon +sp_before_oc_colon = remove # string (add/force/ignore/remove) + +# Space before ObjC message colon +sp_before_send_oc_colon = remove # string (add/force/ignore/remove) + +# Space before comma +sp_before_comma = remove # string (add/force/ignore/remove) + +# Space before if/for/switch/while open parenthesis +sp_before_sparen = force # string (add/force/ignore/remove) + +# Space before pointer star +sp_before_ptr_star = force # string (add/force/ignore/remove) + +# Space before semicolon +sp_before_semi = remove # string (add/force/ignore/remove) + +# Space before unnamed pointer star +sp_before_unnamed_ptr_star = force # string (add/force/ignore/remove) + +## Space Between + +# Space between @selector and open parenthesis +sp_after_oc_at_sel = remove # string (add/force/ignore/remove) + +# Space between close brace and else +sp_brace_else = force # string (add/force/ignore/remove) + +# Space between close parenthesis and open brace +sp_paren_brace = remove # string (add/force/ignore/remove) + +# Space between closing brace and finally +sp_brace_finally = force # string (add/force/ignore/remove) + +# Space between else and open brace +sp_else_brace = force # string (add/force/ignore/remove) + +# Space between finally and open brace +sp_finally_brace = force # string (add/force/ignore/remove) + +# Space between function name and empty parentheses +sp_func_call_paren_empty = remove # string (add/force/ignore/remove) + +# Space between function name and open parenthesis +sp_func_call_paren = remove # string (add/force/ignore/remove) + +# Space between function name and open parenthesis in function definition +sp_func_def_paren = remove # string (add/force/ignore/remove) + +# Space between sizeof and open parenthesis +sp_sizeof_paren = remove # string (add/force/ignore/remove) + +# Space between try and open brace +sp_try_brace = force # string (add/force/ignore/remove) + +## Space Inside + +# Space inside @selector() parens +sp_inside_oc_at_sel_parens = remove # string (add/force/ignore/remove) + +# Space inside cast parentheses +sp_inside_paren_cast = remove # string (add/force/ignore/remove) + +# Space inside function parentheses +sp_inside_fparen = remove # string (add/force/ignore/remove) + +# Space inside if-condition close parenthesis +sp_inside_sparen_close = remove # string (add/force/ignore/remove) + +# Space inside if-condition parentheses +sp_inside_sparen = remove # string (add/force/ignore/remove) + +# Space inside parentheses +sp_inside_paren = remove # string (add/force/ignore/remove) \ No newline at end of file From a440270bb0482478870bca6aa611b525cbbc1265 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 09:09:35 +0800 Subject: [PATCH 031/178] update podspec, remove unused cocoasynsocket --- LFLiveKit.podspec | 3 +- LFLiveKit/publish/LFStreamRtmpSocket.m | 6 +- LFLiveKit/publish/LFStreamingBuffer.m | 2 + .../LFLiveKitDemo.xcodeproj/project.pbxproj | 55 ++++------- .../xcschemes/LFLiveKitDemo.xcscheme | 91 +++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 22 +++++ LFLiveKitDemo/LFLiveKitDemo/Podfile | 8 -- Podfile | 2 - 8 files changed, 141 insertions(+), 48 deletions(-) create mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme create mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100755 LFLiveKitDemo/LFLiveKitDemo/Podfile diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 704e27ce..eacb9b01 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -18,9 +18,8 @@ Pod::Spec.new do |s| s.requires_arc = true - s.dependency "CocoaAsyncSocket", "~> 7.4.1" s.dependency 'LMGPUImage', '~> 0.1.9' - s.dependency "pili-librtmp", "~> 1.0.2" + s.dependency "pili-librtmp", "~> 1.0.3" s.dependency "YYDispatchQueuePool" end diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index f53c6b77..776a1a8b 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -14,7 +14,11 @@ static const NSInteger RetryTimesMargin = 3; static dispatch_queue_t YYRtmpSendQueue() { - YYDispatchQueuePool *pool = [[YYDispatchQueuePool alloc] initWithName:@"com.youku.laifeng.rtmpsendQueue" queueCount:1 qos:NSQualityOfServiceDefault]; + static YYDispatchQueuePool *pool; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + pool = [[YYDispatchQueuePool alloc] initWithName:@"com.youku.laifeng.rtmpsendQueue" queueCount:1 qos:NSQualityOfServiceDefault]; + }); dispatch_queue_t queue = [pool queue]; return queue; } diff --git a/LFLiveKit/publish/LFStreamingBuffer.m b/LFLiveKit/publish/LFStreamingBuffer.m index bbd5108a..3c11264e 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.m +++ b/LFLiveKit/publish/LFStreamingBuffer.m @@ -34,11 +34,13 @@ @implementation LFStreamingBuffer - (instancetype)init { if (self = [super init]) { + _lock = dispatch_semaphore_create(1); self.updateInterval = defaultUpdateInterval; self.callBackInterval = defaultCallBackInterval; self.maxCount = defaultSendBufferMaxCount; self.lastDropFrames = 0; + self.startTimer = NO; } return self; } diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index 552c7d42..3f726390 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 48030CC801EBECA515F55CA1 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 752951DE2C76DAD969BAFB60 /* libPods.a */; }; + 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */; }; B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E7E1D348F3D00B34CA8 /* main.m */; }; B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E811D348F3D00B34CA8 /* AppDelegate.m */; }; B2D23E851D348F3D00B34CA8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E841D348F3D00B34CA8 /* ViewController.m */; }; @@ -31,6 +32,7 @@ /* Begin PBXFileReference section */ 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; + 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 752951DE2C76DAD969BAFB60 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; B2D23E7E1D348F3D00B34CA8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -67,6 +69,7 @@ buildActionMask = 2147483647; files = ( 48030CC801EBECA515F55CA1 /* libPods.a in Frameworks */, + 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -168,6 +171,7 @@ isa = PBXGroup; children = ( 752951DE2C76DAD969BAFB60 /* libPods.a */, + 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */, ); name = Frameworks; sourceTree = ""; @@ -179,11 +183,9 @@ isa = PBXNativeTarget; buildConfigurationList = B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; buildPhases = ( - C8C9FDE8B4243D5A35666AC2 /* Check Pods Manifest.lock */, B2D23E761D348F3D00B34CA8 /* Sources */, B2D23E771D348F3D00B34CA8 /* Frameworks */, B2D23E781D348F3D00B34CA8 /* Resources */, - AA5B3891AC54EBDC40D67DF1 /* Copy Pods Resources */, ); buildRules = ( ); @@ -249,39 +251,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - AA5B3891AC54EBDC40D67DF1 /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - C8C9FDE8B4243D5A35666AC2 /* Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ B2D23E761D348F3D00B34CA8 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -357,6 +326,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -371,9 +341,12 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LIBRARY_SEARCH_PATHS = "$(inherited)"; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "$(inherited)"; SDKROOT = iphoneos; }; name = Debug; @@ -401,6 +374,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -409,8 +383,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LIBRARY_SEARCH_PATHS = "$(inherited)"; MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "$(inherited)"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -421,9 +398,13 @@ baseConfigurationReference = 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.LFLiveKitDemo; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -434,9 +415,13 @@ baseConfigurationReference = DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.LFLiveKitDemo; PRODUCT_NAME = "$(TARGET_NAME)"; }; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme new file mode 100644 index 00000000..86a692b7 --- /dev/null +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..e7d74fb2 --- /dev/null +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + LFLiveKitDemo.xcscheme + + orderHint + 5 + + + SuppressBuildableAutocreation + + B2D23E791D348F3D00B34CA8 + + primary + + + + + diff --git a/LFLiveKitDemo/LFLiveKitDemo/Podfile b/LFLiveKitDemo/LFLiveKitDemo/Podfile deleted file mode 100755 index a39728ec..00000000 --- a/LFLiveKitDemo/LFLiveKitDemo/Podfile +++ /dev/null @@ -1,8 +0,0 @@ -source 'https://github.com/CocoaPods/Specs.git' -platform :ios,'8.0' - -target "LFLiveKitDemo" do - -pod 'LFLiveKit', '~> 1.5.2' - -end \ No newline at end of file diff --git a/Podfile b/Podfile index 798a7c0d..0be6e808 100755 --- a/Podfile +++ b/Podfile @@ -2,8 +2,6 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'8.0' target "LFLiveKit" do - -pod 'CocoaAsyncSocket', '~> 7.4.1' pod 'pili-librtmp', '~> 1.0.2' pod 'LMGPUImage', '~> 0.1.9' pod 'YYDispatchQueuePool' From 4f58fd019e57c944f9fc942f0c7f2940e1d832a4 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 09:16:12 +0800 Subject: [PATCH 032/178] update demo --- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 805d9948..c8ec24ed 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -332,8 +332,7 @@ - (UIButton *)startLiveButton { if (_self.startLiveButton.selected) { [_self.startLiveButton setTitle:@"结束直播" forState:UIControlStateNormal]; LFLiveStreamInfo *stream = [LFLiveStreamInfo new]; -// stream.url = @"rtmp://30.96.179.95:1935/live/1234"; - stream.url = @"rtmp://dlrtmpup.cdn.zhanqi.tv/zqlive/60156_LxdsN?k=1ca07961706095f6feb9df1667d838ed&t=5763b617"; + stream.url = @"rtmp://30.96.179.95:1935/live/1234"; [_self.session startLive:stream]; } else { [_self.startLiveButton setTitle:@"开始直播" forState:UIControlStateNormal]; From 191a603f981c794ea2ae405b4fd3a1ddf2dc76df Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 12:05:57 +0800 Subject: [PATCH 033/178] add Swift Demo --- .../UserInterfaceState.xcuserstate | Bin 0 -> 14036 bytes LFLiveKitSwiftDemo/.gitignore | 4 + .../project.pbxproj | 404 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 9923 bytes .../xcschemes/LFLiveKitSwiftDemo.xcscheme | 91 ++++ .../xcschemes/xcschememanagement.plist | 22 + .../contents.xcworkspacedata | 10 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24866 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../LFLiveKitSwiftDemo/AppDelegate.swift | 46 ++ .../AppIcon.appiconset/Contents.json | 38 ++ .../Base.lproj/LaunchScreen.storyboard | 27 ++ .../Base.lproj/Main.storyboard | 25 ++ .../LFLiveKitSwiftDemo/Info.plist | 40 ++ .../LFLiveKitSwiftDemo-Bridging-Header.h | 10 + .../LFLiveKitSwiftDemo/ViewController.swift | 223 ++++++++++ .../images/camra_beauty@2x.png | Bin 0 -> 1631 bytes .../images/camra_beauty@3x.png | Bin 0 -> 2544 bytes .../images/camra_beauty_close@2x.png | Bin 0 -> 1994 bytes .../images/camra_beauty_close@3x.png | Bin 0 -> 2927 bytes .../images/camra_preview@2x.png | Bin 0 -> 1274 bytes .../images/camra_preview@3x.png | Bin 0 -> 1680 bytes .../images/close_preview@2x.png | Bin 0 -> 907 bytes .../images/close_preview@3x.png | Bin 0 -> 1481 bytes LFLiveKitSwiftDemo/Podfile | 4 + 26 files changed, 956 insertions(+) create mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 LFLiveKitSwiftDemo/.gitignore create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitSwiftDemo.xcscheme create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/LaunchScreen.storyboard create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Info.plist create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty@2x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty@3x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty_close@2x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty_close@3x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_preview@2x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_preview@3x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/close_preview@2x.png create mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/close_preview@3x.png create mode 100755 LFLiveKitSwiftDemo/Podfile diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..cd4bc639dab396064d9d9ec385ec6c4d91a44842 GIT binary patch literal 14036 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 /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B2C8FABD1D3DB8B3008D44B5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B2C8FAC71D3DB8B3008D44B5 /* ViewController.swift in Sources */, + B2C8FAC51D3DB8B3008D44B5 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + B2C8FAC81D3DB8B3008D44B5 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B2C8FAC91D3DB8B3008D44B5 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B2C8FACD1D3DB8B4008D44B5 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B2C8FACE1D3DB8B4008D44B5 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B2C8FAD11D3DB8B4008D44B5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B2C8FAD21D3DB8B4008D44B5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B2C8FAD41D3DB8B4008D44B5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FD5AE5787FDCE4BA8C28E2EE /* Pods.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = LFLiveKitSwiftDemo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.laifeng.LFLiveKitSwiftDemo.LFLiveKitSwiftDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B2C8FAD51D3DB8B4008D44B5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C5E86117C8AB61338C12909E /* Pods.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = LFLiveKitSwiftDemo/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.laifeng.LFLiveKitSwiftDemo.LFLiveKitSwiftDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B2C8FABC1D3DB8B3008D44B5 /* Build configuration list for PBXProject "LFLiveKitSwiftDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B2C8FAD11D3DB8B4008D44B5 /* Debug */, + B2C8FAD21D3DB8B4008D44B5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B2C8FAD31D3DB8B4008D44B5 /* Build configuration list for PBXNativeTarget "LFLiveKitSwiftDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B2C8FAD41D3DB8B4008D44B5 /* Debug */, + B2C8FAD51D3DB8B4008D44B5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B2C8FAB91D3DB8B3008D44B5 /* Project object */; +} diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..f0571c28 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..9dade3077cff9b00a990fc13299281e49327d35e GIT binary patch literal 9923 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 literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitSwiftDemo.xcscheme b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitSwiftDemo.xcscheme new file mode 100644 index 00000000..9b03995d --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitSwiftDemo.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..f21fb069 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + LFLiveKitSwiftDemo.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + B2C8FAC01D3DB8B3008D44B5 + + primary + + + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..2f09eb68 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a13ae7bf1716b4ffe04d8a2579dbfdd9c72dfa86 GIT binary patch literal 24866 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 literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..ed9a9b4d --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift new file mode 100644 index 00000000..40f8b5fc --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// LFLiveKitSwiftDemo +// +// Created by feng on 16/7/19. +// Copyright © 2016年 zhanqi.tv. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(application: UIApplication) { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..118c98f7 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/LaunchScreen.storyboard b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..2e721e18 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard new file mode 100644 index 00000000..3a2a49ba --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Info.plist b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Info.plist new file mode 100644 index 00000000..6905cc67 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h new file mode 100644 index 00000000..64c6de1f --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h @@ -0,0 +1,10 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#ifndef LFLiveKitSwiftDemo_Bridging_H +#define LFLiveKitSwiftDemo_Bridging_H + +#import + +#endif \ No newline at end of file diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift new file mode 100644 index 00000000..834142f3 --- /dev/null +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift @@ -0,0 +1,223 @@ +// +// ViewController.swift +// LFLiveKitSwiftDemo +// +// Created by feng on 16/7/19. +// Copyright © 2016年 zhanqi.tv. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController, LFLiveSessionDelegate { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + self.requestAccessForVideo() + self.requestAccessForAudio() + self.view.backgroundColor = UIColor.clearColor() + self.view.addSubview(containerView) + containerView.addSubview(stateLabel) + containerView.addSubview(closeButton) + containerView.addSubview(beautyButton) + containerView.addSubview(cameraButton) + containerView.addSubview(startLiveButton) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + //MARK: AccessAuth + + func requestAccessForVideo() -> Void { + let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) + switch status { + // 许可对话没有出现,发起授权许可 + case AVAuthorizationStatus.NotDetermined: + AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted) in + if (granted) { + dispatch_async(dispatch_get_main_queue(), { + self.session.running = true; + }); + } + }) + break; + // 已经开启授权,可继续 + case AVAuthorizationStatus.Authorized: + session.running = true; + break; + // 用户明确地拒绝授权,或者相机设备无法访问 + case AVAuthorizationStatus.Denied: break + case AVAuthorizationStatus.Restricted:break; + default: + break; + } + } + + func requestAccessForAudio() -> Void { + let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeAudio) + switch status { + // 许可对话没有出现,发起授权许可 + case AVAuthorizationStatus.NotDetermined: + AVCaptureDevice.requestAccessForMediaType(AVMediaTypeAudio, completionHandler: { (granted) in + }) + break; + // 已经开启授权,可继续 + case AVAuthorizationStatus.Authorized: + break; + // 用户明确地拒绝授权,或者相机设备无法访问 + case AVAuthorizationStatus.Denied: break + case AVAuthorizationStatus.Restricted:break; + default: + break; + } + } + + //MARK: - Callbacks + + // 回调 + func liveSession(session: LFLiveSession?, debugInfo: LFLiveDebug?) { + print("debugInfo: \(debugInfo?.currentBandwidth)") + } + + func liveSession(session: LFLiveSession?, errorCode: LFLiveSocketErrorCode) { + print("errorCode: \(errorCode.rawValue)") + } + + func liveSession(session: LFLiveSession?, liveStateDidChange state: LFLiveState) { + print("liveStateDidChange: \(state.rawValue)") + switch state { + case LFLiveState.Ready: + stateLabel.text = "未连接" + break; + case LFLiveState.Pending: + stateLabel.text = "连接中" + break; + case LFLiveState.Start: + stateLabel.text = "已连接" + break; + case LFLiveState.Error: + stateLabel.text = "连接错误" + break; + case LFLiveState.Stop: + stateLabel.text = "未连接" + break; + default: + stateLabel.text = "未知" + break; + } + } + + //MARK: - Events + + // 开始直播 + func didTappedStartLiveButton(button: UIButton) -> Void { + startLiveButton.selected = !startLiveButton.selected; + if (startLiveButton.selected) { + startLiveButton.setTitle("结束直播", forState: UIControlState.Normal) + let stream = LFLiveStreamInfo() + // stream.url = "rtmp://30.96.179.95:1935/live/1234"; + stream.url = "rtmp://dlrtmpup.cdn.zhanqi.tv/zqlive/60156_LxdsN?k=1ca07961706095f6feb9df1667d838ed&t=5763b617"; + session.startLive(stream) + } else { + startLiveButton.setTitle("开始直播", forState: UIControlState.Normal) + session.stopLive() + } + } + + // 美颜 + func didTappedBeautyButton(button: UIButton) -> Void { + session.beautyFace = !session.beautyFace; + beautyButton.selected = !session.beautyFace; + } + + // 摄像头 + func didTappedCameraButton(button: UIButton) -> Void { + let devicePositon = session.captureDevicePosition; + session.captureDevicePosition = (devicePositon == AVCaptureDevicePosition.Back) ? AVCaptureDevicePosition.Front : AVCaptureDevicePosition.Back; + } + + // 关闭 + func didTappedCloseButton(button: UIButton) -> Void { + + } + + //MARK: - Getters and Setters + + //  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 + lazy var session: LFLiveSession = { + let audioConfiguration = LFLiveAudioConfiguration.defaultConfiguration() + let videoConfiguration = LFLiveVideoConfiguration.defaultConfigurationForQuality(LFLiveVideoQuality.Low3, landscape: false) + let session = LFLiveSession(audioConfiguration: audioConfiguration, videoConfiguration: videoConfiguration) + + session?.delegate = self + session?.preView = self.view + return session! + }() + + // 视图 + lazy var containerView: UIView = { + let containerView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height)) + containerView.backgroundColor = UIColor.clearColor() + containerView.autoresizingMask = [UIViewAutoresizing.FlexibleHeight, UIViewAutoresizing.FlexibleHeight] + return containerView + }() + + // 状态Label + lazy var stateLabel: UILabel = { + let stateLabel = UILabel(frame: CGRect(x: 20, y: 20, width: 80, height: 40)) + stateLabel.text = "未连接" + stateLabel.textColor = UIColor.whiteColor() + stateLabel.font = UIFont.systemFontOfSize(14) + return stateLabel + }() + + // 关闭按钮 + lazy var closeButton: UIButton = { + let closeButton = UIButton(frame: CGRect(x: self.view.frame.width - 10 - 44, y: 20, width: 44, height: 44)) + closeButton.setImage(UIImage(named: "close_preview"), forState: UIControlState.Normal) + closeButton.addTarget(self, action: #selector(didTappedCloseButton(_:)), forControlEvents: UIControlEvents.TouchUpInside) + return closeButton + }() + + // 摄像头 + lazy var cameraButton: UIButton = { + let cameraButton = UIButton(frame: CGRect(x: self.view.frame.width - 54 * 2, y: 20, width: 44, height: 44)) + cameraButton.setImage(UIImage(named: "camra_preview"), forState: UIControlState.Normal) + cameraButton.addTarget(self, action: #selector(didTappedCameraButton(_:)), forControlEvents: UIControlEvents.TouchUpInside) + return cameraButton + }() + + // 摄像头 + lazy var beautyButton: UIButton = { + let beautyButton = UIButton(frame: CGRect(x: self.view.frame.width - 54 * 3, y: 20, width: 44, height: 44)) + beautyButton.setImage(UIImage(named: "camra_preview"), forState: UIControlState.Selected) + beautyButton.setImage(UIImage(named: "camra_beauty_close"), forState: UIControlState.Normal) + beautyButton.addTarget(self, action: #selector(didTappedBeautyButton(_:)), forControlEvents: UIControlEvents.TouchUpInside) + return beautyButton + }() + + // 开始直播按钮 + lazy var startLiveButton: UIButton = { + let startLiveButton = UIButton(frame: CGRect(x: 30, y: self.view.frame.height - 50, width: self.view.frame.width - 10 - 44, height: 44)) + startLiveButton.layer.cornerRadius = 22 + startLiveButton.setTitleColor(UIColor.blackColor(), forState:UIControlState.Normal) + startLiveButton.setTitle("开始直播", forState: UIControlState.Normal) + startLiveButton.titleLabel!.font = UIFont.systemFontOfSize(14) + startLiveButton.backgroundColor = UIColor(colorLiteralRed: 50, green: 32, blue: 245, alpha: 1) + startLiveButton.addTarget(self, action: #selector(didTappedStartLiveButton(_:)), forControlEvents: UIControlEvents.TouchUpInside) + return startLiveButton + }() + + // 转屏 + override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { + return UIInterfaceOrientationMask.Portrait + } + + override func shouldAutorotate() -> Bool { + return true + } +} + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty@2x.png b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8a04a34f337506fba94587f17a57df6ef2ab1d GIT binary patch literal 1631 zcmV-l2B7(gP)Px*8A(JzRA>e5nQLqnMHI(do>Hw3EL41gq1F%(H9)N32NF}!C}N_b0kvrK3pNCd zO5>{^P!JzP1w~Da5J`*=jK)Vzu+b>sGbs1~g~TR^MT?+PT0yD5|Lx4??6Pb|oH=LCoO|!=%FVkl3+EkH-vtHthS%U7=yTW zbT}LK!F#Zhx%bi*CnQ@4SEP+1=6Gm^sOTH7EMWWy;?_n6|AqYloRu~{s8yamK_5%0^_QT`W7t(QR@+L@=CkZ$rG`L8E@u$MqW+JWQ;De)U z-GA%+dugu*)fc}5;us0vL7eE5zX*p~bYF6;h)mFd{TvL|cR>5F@xOwuWvKpM5c>JPk^gM?RrnOGMwYL|>x6=#!@!%o-l8|^5C z2_yQ$N>~GzK^auQY|zDWM`4-5QH)cbH^7Td$=rHYBzhlM<(;&;mU8PloGFh*a6cFY z{i7lDRl-57amF=*mu)Dz9|;8eHt_3u9r_7@Gb@E6E{9H#X!i&$H|&dHH%PRv*JM>| zFfT<^LkoD(juG5qpq~L-oKuI;%wTX<3Pl_R@4BMYya_tKbAm4a+u-F{@5{8Mnn!#^ zwAz`5+JdkjHGb{ix>w3pDB>FM7n}C&T3ZqJG~;hY*G*lvLJ^}uJBOFheoW^W*zTNK z*VkoRF|$*|F`x$zFUwGZ8zXc*DShUhv`=JSv zSxXT&fqr_)FW{eQeBpC)p6)+C(TvEfSU)jE=C>!B<&- zCOSn7f=^vhY8Ki;uulhjb2Z=kGtntXuiSJ2dTBxl-UvvCx4e^9{<1=fB~A|L-cT z-b*I2_GWv?=)psid3hP7Uut3kh|^v_9Q++4YVNVFfi}27^SR=mn!PvDlAwXE2VD0$ z+DmzfvrRTWt;eTehHPXLOv3-8jHnQ=Z&ELNPJ$|@>$z6Cm3E9Z@QtH|b}JMnOjHY6 zuM!ASlK90r@*44t&s+hA;6tp3fE zp5W(Le?FZ!Ju2#XwouUpe>bGB6oSgY?#GL;d;4P0b;xW4FE60<^ZvA!SQT%_`#jNB zyUd*sJVhnuCh#tkK|gJ9bA&zsUN!zN(ThGf7&8Ira z*_>%#z3wf1jFv@iZPQlMzX<&Ps`uhc;9x~tqJ5#d8GAK!n1qEdK?)oXyTOar*$mK; z>_vBnm1csXRmNZIlC7t`2Xs1@f__!KUDG!EJ`{HELZDvlE`xlcb$w3Jl|}}TV=~+T z6%m&XHhq8^m<7j1{dsMI_32lDU(cvHY2ojbyaRjKk-m{r00nBD>ovlSpnpoOh2{B< db9_B6{{qbh1R`cGr-}do002ovPDHLkV1iX%5P|>z literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty@3x.png b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_beauty@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..acc63fbe0f46074c9d29bc18d82364a8380b3ca5 GIT binary patch literal 2544 zcmVPx;s!2paRCodHn|rJtMH$99+-yqZVk@D<68_*?LZYH;+s5YW}bQ8cV=g2XJ_|(JFs=@*6sdp-6ODlcX6AQcBLg@OxkD-%9j|8FOSI) zp;H5+aQW;(yN_oBGL7`vEI($F(U>V;;pp?r=i)Il5?tPbZAblQoDa+QCH+L!13;Q7bIY{l(nP^X{ z3|}#F!_>bL4mJ5xD|}*Sca@0~7FRcjxidcZhC#CY8q)K@h2Zgw3zK^&#QNCb%PP0W z`GzoBmS0Ia4wU)YI$g`Uu4T)?tPIM_UIj_lJGwmfkL76WZ|Ppy@ia`73DlLgy^x{qhb16{B{I+%rMoN>FkLj^{Oj9dx76{ z^4FkV0M6KG?Z)4^Ndyg}Ex^Mujs za@rNdPT+Ro-RBurCo~_kP-Wv8qGV-w7sziC_f?O&id6fy%zc1P_GKB6;m1b($;g=qk5&1kRlTA)JHBDN4{2l=0{g8XdY#b|^35V7qe#%plLm^QV) znF~Do7vvDA)gMo+MrB$^=K&2;uG1p?ZIExC<^*-Qrj2xW;;sSKE`{*oYe)Ww5o^sm zA)@zU6kL%BoX;lzGcX)*RyT>duY(_yXsl0ad4QOA0BgFlsLqS?eJiGXMMUfQcX3^X zEJ&>3UbUXT$9>f~z*TUXJ)V9hyk6wjphtn8j;kl*E3|rhG|>J{D&LKZ0l@XoDEKqgm6_toBS^AHQJ5lox?I>!BC7!$m71o#}`EINGuc zrS=!Ykv<#-Z}%^2;q=VYO8;63(nDtk@zsl;&@@0AD6enYC#?&`vJHN4F%3qA=y%=9|_M0mUItc2^!E6~vxl<6Ey{_I4yV_Fvu23~)r!P^bmi*N@-^j?fw zTrF`6ozRBsAz=VXE$gY;q(Alx9!^c+71mm zr5De-Q-r2FiS8&~`?>?^PGoHsgr{$vYdxUT@rCy2C|~aA)EDhhv{$jF*Nxkvubnpf z-H`XHG#tj#6YClfng&QuxS=l355w!pI5Z8=@gUbUO$Ujg!QCr0R?~*c{03-T zFPW|BQu6%9!7sI9%CU9Fi&4hin8lt?TBa-NicG3Qg6?ZsC&FYwiJ#uCSz8PdTX*X8 zS(k8rNp2y3AgJ`O6r=MnsMZ1Ws=YfnM!2|`_yyk_hlP4LAjaho(2 z^U;CmfI`!Q-wfdS=ncKz)Q6@4)xdiCy4-1D;2?i;Rs6aQ#q^r$i-U%h)wG=nJfBJM ztAI6KdY-;6r*&$z4W5-BBQ3qf>(@MO*tZCBqzUvx$~PNMMg8XW1~9BbVERzu@}OKN zyA$H~fCDmogmega_D;wp;7?#VSO)$IUIqU%My>8yuzKA#^TjMX8J%BO>K8&*tMa9} zC`i|m*KOR>$GF+(wMgsEW%ol+wM_nsqj+b<8cgK}399GVyj_UZA>AcB zeHo{Jdc6eNG`+k!qO8%XI$f9Af`_)5!r{R4-3NYsD9-X1MD$(^%W0POI!p2{DbB~$ z7u!gk^4vUHkY1#q4m5xd1iCzXlcV+g%eYgCVP{_+KQ-0KES}oS8Y`>QW4tvz4Qp@U z`Tf+2DX#>2t>EeFa%U08u4_<9rU5-26m1rnkgUjS-=P;ip{<}W5qR-F9SXC&uHF5C zr*F!gOT4-RBfU0|U2S$1Y^77yOt6=MuEqB{TE*6ZYXGc`=m>(keev{*Y(o|0+r4(f zUtH&R>9X`_D)oV6XxCEkeyOeRd$donziOTbcOB@5y|rf0$)3LMpqyZWyiQpkMp@Ga zZ9bT0DzsTT&v0!PhiV3M^>qj39j4JIDgV=ODqa9iG`xNfKMTBM__m6gnUiV;n~HwC z^{G23_M-rOqCdq1)n~WfcKx&PD~-0z;!q^m7WjLCX0>NSmaID{D@=fKly3vOXS|+0 z?gV!9_4UQVOw+Gq$OP7myc+1!+{3^O@Ds2Jgf<)&I(cvPE#W>8SluL?QeFLQLbJiA2|1uX5 z`V}w_q^w)JpgRX>Nw^9W)?`rhHT&&ApWm0+%T%5QZY>jy#k#s{ijF~d5$#tl1nYoj zk3xPJyx|5!2h(Jx$S=2@$(#a?0J;-tkd^=~wy%LVr2QA&lxR>pc%iNU0000Px+gh@m}RA>e5nR|#ARTRf}eLr_K^NsChRF;*dB$|apnMEk2WrbFliI_<$QW->O zlB8IX^wP2vqFDb(vX^D}#wb%VQ%h@0OLI-r%<^rY@2@%I{mtCp{2sf7LI*y3&pr2? zb7$thW`0{#^uNTPz{!&*?}n!FmNUr04O|Ml;EprsvePe>i*E+=K=L`1rF)#_H76@msKM$aZI516TwHwAY@Tu*wh}0J+H^7Ppf;=} z{)E#OQ|U)*Y6SFxI@C8)zDnFy%IXQp>caxKHd`iqy25sF8a`5~qh%;RZ$Y->GYq3KN1`!kQrIamqnSnP_hh zm2d!-!%mQN$r3jXAFU_JUeE~i1?5n`l9@?4+&0Zg&FLPXyT1rJLwAs9XrIGJH?svc zz$)hN4oZ{yDD&Z6?79fW-vv#;EBM?%!(>q3T0`TAol99no7R@{Dew7^yAXU69E5DL z8HY}8X6p7ZT(d5yUYa4OU@wEOL86`RMbHhU1brxIL^N7+Ais4&z$=g>nle{ehlP~H zYdvWbF*%A7PF?g8_|zIHwY}E{@5Az51J12rCHO=O?-p-hjz;2(;cQOnvT&QriA>oMxQC|HQ^4}S#7HKlX|CK{O~VAFdYdfV!Bra9@8Js1m4 zOzZ_v2_}z4B0>sD?mRQ#Q}5ga5*ri@FT91sAC^VZ7TfbuIqy;6r!> z&U4#O3!RJ7y3i?aqA3%;X`^cz-wv0b78mTh2rjNJXswy(fNSmgQum(L*c(Dy=m4$3 z`*z^wGCh1sW~hO3C^_y6^6a7<#e0;>P^gFBC|qm{8v29Q&$*y=qU$;W+V=Hb@*XTE z?f~V#FLbIMt_mdDwljXe)26NWA*ckcp(N3^ya9$m#+T6=xkEZ=1D}D(Qz+hD5PL7s zE)|tS81y-y?-`Z0|tk8`NjyXF9+BMn_gGR|@GfKJR zRy~zuSA!O%L>=j)DJIyPgFE$f114KhE{p|54EX4~$sNrK>N)Rhk#wi3Bxw&{g2~uZ zt?3#LTG%E!CIsjuJef*-IzS~z^k8~t@=df8*bi*s=>w^|1)$f0$q=p;^f$odQS()aQT}tR zk#ZOGbbWj}KGU6;={}!C8^Il6OOQlQP$zjP)CYsU1XGKbvN32BBswHxzg1z=)LQ{2 zYfR|ZA=>xD*93I^Wb*=;e1Vesv4XN4Yz!K-ZMKOecMP;Y z5%{Xm6dm9+hbnfRUuu`^2^*3W9504SkZ3sjx&GA0g3Z_6=;1m**Q>dW)M4~%+}Nld z_%Eb1*@mKDK+^=<5U@U1rZxI1IO`*5F_=Vmojx@D8Z>GMJaW)}weAyxTcG zeZbZL>ZzYr(e?9Em5hjX!me&?Ovj-o*v{|+`Z?x=-Wc4UKefe%hobqZ#9jjK6Q1C< zXVQro4>opEkcWDS(sHWQx;?Zd$?NfZ>7f=?-E%Qn%wSKq`S8u8J# zzS4ps<;&UPQ|$!lDVpdon*bw0hn~qZD6w_n>i|E^ZGA_WXgi(?9en;~qkSM80#}w& zIm>(!OC0qybS7jHB`Zx#5^2Q08+;o{_&s%PDz|}7?Czj*LR;)i_yt^9PNh>Mb#j$} z&aeb*UZSRC8Gkz_NBdieD}xHq0*;C{7wuMd*tzXm6SG0TwB#=Y)`L6YB~YR002b@1^@s60z?~{00001b5ch_0Itp) z=>Px=DM>^@RCodHoDHy5RTam1fQ5ueqy~cW=?5i^Qc8>gVq=-jUX0mza)a zjlMChWOPQ+@S~7EU`!`!#-Soh$EYA@L@XypK#Ph{5mW?IzF)up>z+I7t+&p-``mlp z!)97DfA?N%ul3*i?6dbid++4$Nwd*2YRNtmF_j7bjEHVJQ$rdmgiaydUwO~ zm0HEY=&T!ff)l{(QlF$7$XdF2%^J@$Jz9CLO{B+x-4*=}pLEyA>P1gz`rTxD6YFnZt{;8bu5=nL{>3k8pZUxEdBP6ylGl_P5>52sEz9n|V5^}*Z08DKSN zR9XnswEiG?FBkyI6|GqbI1`^C34RgR9mLg>eK<@7QG6|1`^+HjBJd2bvIk`e7z=7~ zB$uT)_N1~k;Cl^L+KadcKrNX=VM<%PkGSutMNHWNa5Km{)^jB5DULHLjoC|jB1nnx zJ`*b(QSx$woT_79M3`f{zKMF;pT|Fx*WW}1c6cvsu)?gvbDpEEe*?T{6SF^$FtF=o zj|To3ll6KF{3WcAqs%J#QS#a=6_sOMz&5A*a#!3*)plbs@a?}H+i)-m{2o}*iD8yC z6wc@L^dRi#faigil^7<2BBSBX3dwTP37|K)7;FF%)s^~&HQHAx$jN+k%W(wyTCm;t zsebEID4#ixf}|B_A^sOg5iOkS!M)&0a5BjFe0n)$|4{Ct1%NRnZdAsJuYn7?AOGRXUA2^pdRXM2YIw*Kd#8I|wVVwp& zM)`2lmPO8gANpCQJZoRmou#?{4_8^F{w%0GYebpp#Zl#fZ5uX?^3Mikt=O7wQyziV zp?dNN4teoq*-xSl-xiIMyeX+o>Kjs(qDLdJUfp%e>pD@_N~kf77<62}*2Obb9zB{JLd`+WB4VnXDyqJJ9ua zuSJP2@&Ld_GXjD|^d@vY9{2go^l$3xHe6$tNmcWa?aH;Ll zt?9#_pb7mIVlM;jYdC4xj?kFrT$24(c)Z+=A+;?R;;V=23V9IHw}G%Np)t?71iL+? zL)R|4<!A3;5_L7s-)?Hh zt}kLr8_vhC)`)tQ@^>b3+4=?$^8*lx+IuLd`d2g7*ai88aC&LQkW#-E^Bq1o(AQz> z4^lY2&!xoa<$1XaL)EvMvBr|~vwaKDmxI(_R-&)opNQAl(aTZ{HNR+-=RNaG%KYe+ zJ}HaI3oOg7MOAwlD;rT#H-jIsftCDoq=Uc|5RHZ_u{YZOR${&A#k9YGMoClRG$k}O ztZ4WAZjcf$pT})*C2!ZctAcWM;AD_mhxO}4+$!MZTns&|W7+xpeU0d!QKbRYNN=Bj z&C3HAte@WaPrVcR^Ptn$44aM3%a6m)PsfK8n-|cm{fm%$S%e|t)s9{pO<%Ua6QD=i zgTt|}4}AZCP28S0MgO_u+mC*9N?=i+(;(jMDqDlz;WLb$@!m>)w$U@YKNRazo|XAj z+XlZjVrmn&_f63??YzuN2`u8Hh5PTWmY31#w|iLyY9( z7`<;jT_+0d-K;FE7gVHN>&GuFJ9*9h4}*y39oVyD$I;G5F81_zhx@9+L^W-Ua>|z17*Iwtz+8L@5=~ow}8`TBVZLO=msXgTwj2`|4kz-2+s2 zs=VkN`<2mIgCO-kIOvClyg$g8OWAbSkp51O9%`@i$y4>mAQu4t#~{2H(bnidY`A8ib`1v@iH@jigIn&BIOI|d84orTh z`y*@-PjBr0>!OC-k>jtunwMD^BJNr?E$Zt%5qipo^=~e2S*?m{l?{VP7k5^kMCl8n zxSOqGCBK?9Z-?E7ve#UUZa5?EdbYd`tA41+iyiIimfD)Fwo30+q%!%A2VQjGjddle3}s{8`fxZ-QH$TSWo{U6{29dV z6N!^+(APSfRDGP<`HNH{-|XNk63I=#bLj2tQlSwwF6AKXxujoac(Sbcv}i~EDYmOJ zB9r=$kc$2ZsvngUV(a7Yn4X5r9#EBk5_r*DvphxenjXtNA-Wz;ywNRdJ$`XUH>{Ye zq8Bm|RJp1dYpjv~31wcMz;HG=7yQ{5qW=o?1V!tz{znkM0YtJ2<2YdbQ}RaX8rYZ)6(!5vq&2Awa1v-ZYfEOH}7n@C7gh z=zc9#p2cx7m=B&y2`ZzrQtIgrAFXF+0bMYj1hh8k!mtn64s=bt4y*=`fR(`CreeyM Z{{Wh#gZqKV&G-NS002ovPDHLkV1o0b%#;8C literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_preview@2x.png b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_preview@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf8f6559f12d564df810675347641e430d4a5e0 GIT binary patch literal 1274 zcmVPx(v`IukR9Fekm|3VzQ5eVXF_U@hW*(9$qVOVfq~uAG#DnocBFTef3ZaxCFBGCo zWk|`8Av|0qg}5TR$n2WAT=(AN_uuxqt$pls_TK9n?pMFPzP;A>ed{}Guf5jVCoj)I z(&=<<*aEJy0mqsSUAwu^*(xY^%@)5hSnASyDyb74jl<_C)b)LfDa(94s*q1p-{=eF zgj6bZKFY~%Pn0mpcEkA;boGPmrrZoA5EUzpO(R$a6F^c3<4F3EclReRBwGiLgOM{R zN+6NolMmNS5XwUkdp-w71;-}z-Z&(Kdekj~IeuFa_*48B3 zf|~+}D;qHkJQ;_4^N3L&_QmZKyQ|Q$7M(2sJt8CTQS=g&n+mHeKwrTl(hF22Aw~%a zEF_42e21{hLR7GE3g=D!Vd@to%~j342YwSyF-6y4eIbE+<-!S zD=0$+-#Rp84nl3}`ocyS0+Q!?G)6w6n1)}?F|PPDfGKbu-og(sq7C95T!v}jvZ@Th zPq}$wCwz~ZL;|T`)xfJYY{|e(> z?{HlU!=QuDP)cp%x4_5~lo7e&+HKg@1?A>RX2M!;V+#?q9Bzgs&?cKBZLMJ?d;>`l z^vh;%*JD=?s+KSTYS=;J>iErt5|EsN$N`cKxF?LWrop7RNoLyNy9OkBIn9|O)2#9y z8~229?hVE80NPhZO`zbXvxIqxjzqa)>y|K%+L=y(kzG-pWoswEc0Y)=<5t=1R8M;# z;Usf$I{xFW;8O|adZsw%$7x8}%ZeGP#!8sPx)5n5*r%qC+|Q%UoVX%8!?qS^SN#gw z*|fuTr%tO#ee`I-(1_l|(6^R)b)*G+GL(X3EHr{xKU$gi_Gc;0@`jrJ4qB%>hGk2A z@+rYNpbS0}@FAEpYd&?Ka-9(}6OcW1tKpl~rcqu;n+{x&5_@#~NVh4AeSKtP^bi9Q zyF~SNtLY&6Ve3A(%8(n$IwkA~81L{Mo>A&_mRRs>3Oe8Fz}`7m0NMjnBJtKt0G*z` zfMgfwOr2Qp8wruC3^r9xSbw7I21x~I=Zf_aiJj(aBEhF>39C1Pw1?|pL_Z+xtHDc- zHZ5J7;8-rZuwR0GAYrG+$%~^S;#4}=3j;u#%4q7eAzTElCVHVYKZk>klkGrq8t!_U z%Y{yi#CqxMK5*;=dqD@8D3OgmI?d;p9V)AiePD$3c#R}ZSiRs}14h6e(8zxRZ3aU6 zQ`irB0vh#1f=?h}rzv6g$n?<1&kQPdf-SGO3Ctb4@gM0LEd7II%PcKR`sd~VRCiI14ZQ57 kz(Od3>L$ubxp~R{1PahoWSEG~b^rhX07*qoM6N<$g1OaQ!vFvP literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_preview@3x.png b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/camra_preview@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4cdc96bbec595f8cb677fe54dbfa5872bfd712e GIT binary patch literal 1680 zcmV;B25Px*N=ZaPRA>d|ntO;9{eH4TsV)Jv3^4zpLVQpkR;_ZaiG~aCUp@=!dFb6hhxUuj%`SqG2?QC zGX6MV??-zd4#%MTe}bua9sNdQ^Hk;E2VjyRRieHf>^F9+>WR|~{?4ihqNs>I3es$Z zzNLSvUncOU(CW~wpxZC0?5E=z(CKS5*eHxUlCpO6`-^Keh&aoAtxxH%x@*pwdq&Py zfUO{{+zLUtCvW*1(mGB54?%^9mDtkCeGphDdqS^d+>L3Sr+=N2<+~(}E3y(tCZqkl z&I?L>KLY9bMu4GUAlM6bfsa8G*aONTb0O6(I6M>{((<*^fWdoNE8tgw4WJctCu;LHm;=0h z5nltylDI(3qJ`(+7s9tWYt+(|Z8V<*JbjvJT{t0T?R^(xOKO@;M{RU!k`mBw3fKzn z1mSWyE_fWw0b{_)K)YC#6*%oyZSobzD)17pi4IfA z(wfu5E)n$6j?3_tfPWulol*xD!G98MmVjS@m8UVJy-hU7EQ!kzo`F!3)H}u%U>GQM z0_w8~SXqgoRIadnP9WrHn^`7WqI!(=7SXNnGSGXp6VgQ`>X{`3A$?Z3iOqbF890-;H3@(P0FN>JBc^8fQJl;K-z9R*y1?hy!0 zT9Xe&djTDCyyXytVXim>eZ0pYX#=6jYSLDQV0hjdo%DAMPqon#sc8eD$!gMZay7<< zaTO_TpPT+?89kAjCJ@&%;#6<|=(!%sVHDZ#2E)RNgk^29^(9ScH5?;@y1}Ndc-3y% z(39*eR~epZ+NU|93a&5B7;);gMUI)XvrMxh!f5Lt6^fFWr)b610d21G$tzU6nXj@t zyH_BZ%|H{4?xE^i#$$Piw8vPPr>-coS0LnMcxIVd)aa!*x{EH~#B^JZt-B99G2OaM zUV+#H=fYn^oY0y!`lqzCFC#LQ$s(Bew{Fx={I z^t@jRHiIUx9cVLD35J4;K@FGz)IO9Eq2gX9%2qs9MD#1ohCJ?-ydASUUH{lo4IQUU@_Vl5kYR;N_Mz==j_jM@Cz@Px&MM*?KR9FeUm|1HSQ4ocrpeAHAF-A0ri9s=n3JM0}67!(wgTF|8)1ROQcSRJ$ z1rZ-ya2Z@8f*T@=A{xbr4?e_yFn*_*g6hlk*gZWx1&3R8yY8uzx;-^R+S;&6rE&n= z0V@=@(x|x{+y)219ElkNvq1I~47ExSwFbZ=Ao~l(Bd1s3wkDR|ek71WoT0oJ)Y-S8r;-V5|Xb=;hLNd6Vja zSYnO-+=W_df;E=Yloi50Q1?aWc?nzu-d+*RWp5SGK=h{TTVy%8 zR)}hK<`?@rl8AY>9()4cE)nGG6a?zbY0rxP1B@q$v3+tj0L>(C>eNEZ$+U7%pQdA; z4SxpgOiM)WM(`PUyFk#HmLtmJfI4%;v*4>UiPw}=fHM;H0eCx0kWLhddS`NVCKLzX zCh!G#lc-Xd8;eO$XO8<*_!@edI};-&fJ34_0&nLDI>Ov2)&mgEnYy2*nnZOr;ol6t z0&iys;@8K9I&;!z;Y-Y}I{Xbif^!SdboX|SpgkhQ(a+9WV)iyvF~uS3jRSp1ylK3Y zbhlgmF8)t2k%Bi@O0{m-scjOZ-^2F(qdBuDSEUSxsWkztQ~I^g6CKCd2d2R8417&V hrKUvbpAP#)_z#vjU)_vyVaWgh002ovPDHLkV1iV9p@aYc literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/close_preview@3x.png b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/images/close_preview@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a9203ce53c94b5e0d157d72acd44c9cdd0a5ec GIT binary patch literal 1481 zcmV;)1vdJLP)Px)gGod|RA>d&nrny^Wf;fRU0p@e*0#L0m=LnsdP!v|GdC>Cuq3~RgeHbo)c4ft zg9RcH)t4Yb0yVI^Ss~GdO0cpkA!%MJsVwR0rLfl1?|im)}nTHn&3%@;vhRS&J|;5m8pG^ zc(zYNlV)og^guiga4<9P=FoT;bUi8iJ` znVXY0b7-0hUpbn8B43=bf$V5XJ#+f~&dZBAw9J4n!HOd!r^CRaUhROUHp$%lMw>(5 zEbvVIOq)!fF%^kb0(2w!0j$u>-4OM!_m;7{;0sF_IhmRXrKTd0Y5+~;VX#8i+`_1T zy|#>bC46oPA}3R`!8R2aNheL|cVNYSlDEYB*K(h+=7Kj3lipd1i$k z;!~r(wc0YqCE%IT{osnK#^ywsi$B#l?2Gr=tC=}!%hdCIqm}N+RR11B6wpQKJqUNv zHodC9TEa=xl&KfNitkBYm2i6cCJJfhyxZ(<+A=dot%%|L?}Aq7`mW7Pg>%b5TA>^QEA*2|{jy5mi{VYH5V>C<+iNN`6CN|*V(^}G z%6Eq6gvaz53vYoHGPNo^r!L0~d=qGftT;q+iYJ7&i{NdrLd&F;-nn(jBVYk&4QYj* zIg_De$-{9Qc&4;WT2UAAeDKU^&DjA(b8K7T9k4>CmX{l^uI&iw2G5*kZW5di zNi(&yuAvMPVS*V5FW8oJ*@?S0VWjB%9wdrn(E)67H*XqEmSB!#|XwCB@B zpbDYGAdRWW@Mr8y2+HK^5P`$tHRypbPLntpCVP)RVLLHjZhF-qYy@bgEK{Tl_rNu9 zOb15jP5jbanM074Nt!7y?xvv$^xd)>PJk63lAM$aa|pQ*l1$x2``}0{`-9+G@P3xN zXzPgjH)M+dy-&RkUaX>FNGOh+X74&kGFSF}F07l$F{0YR`$j=iVI{P9gV82)*Ms-7 z)XY`=4aFNbG0%V_VF!32Q$rJr&`2MdTL7LpU2|j0)ybrtf%NLJ9=y1N26v`H5%kqH zcOx7JD>jlG7oL~tF$0W(N5G4UOhw`-CUXnnPp9xRj88lUEAn82nE`lRq#d9R9GslVg z`E3L%^g6N>N50mi`9x#BpKj*qRK6B@0N3*7dtiBZ8>lMjs j9?f^c$DmIU#dYid^&?f-O}Pmi00000NkvXXu0mjf33b~* literal 0 HcmV?d00001 diff --git a/LFLiveKitSwiftDemo/Podfile b/LFLiveKitSwiftDemo/Podfile new file mode 100755 index 00000000..b3660360 --- /dev/null +++ b/LFLiveKitSwiftDemo/Podfile @@ -0,0 +1,4 @@ +source 'https://github.com/CocoaPods/Specs.git' +platform :ios,'8.0' + +pod 'LFLiveKit', path: '../' \ No newline at end of file From 79744c0096ac11100a2df608efdb3448eeb0d221 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 12:22:49 +0800 Subject: [PATCH 034/178] fix miss file error --- LFLiveKit.xcodeproj/project.pbxproj | 3053 ++++------------- .../UserInterfaceState.xcuserstate | Bin 0 -> 12124 bytes .../UserInterfaceState.xcuserstate | Bin 5524 -> 11215 bytes .../UserInterfaceState.xcuserstate | Bin 14036 -> 14678 bytes .../UserInterfaceState.xcuserstate | Bin 24866 -> 24866 bytes 5 files changed, 715 insertions(+), 2338 deletions(-) create mode 100644 LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 4b27d3e4..513e3713 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -1,2338 +1,715 @@ - - - - - archiveVersion - 1 - classes - - objectVersion - 46 - objects - - 0C07D14560B9E91EA1B59306 - - children - - 840020001D0017850026C63F - 84001FFE1D00176C0026C63F - 84001FFC1D0017680026C63F - 84001FFA1D0017630026C63F - 84001FF81D00175D0026C63F - 84001FF61D0017590026C63F - B8CB02D2A92EA1F5A262F154 - B5758EB2A15DAA132D8BF380 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 817C22141AD3F2EB34365AA3 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - 📦 Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh" - - showEnvVarsInLog - 0 - - 84001F801D0015D10026C63F - - children - - 84001F8C1D0015D10026C63F - 84001F981D0015D10026C63F - 84001F8B1D0015D10026C63F - EDD4B76A07A6817C79BB4E5C - 0C07D14560B9E91EA1B59306 - - isa - PBXGroup - sourceTree - <group> - - 84001F811D0015D10026C63F - - attributes - - LastUpgradeCheck - 0730 - ORGANIZATIONNAME - admin - TargetAttributes - - 84001F891D0015D10026C63F - - CreatedOnToolsVersion - 7.3 - - 84001F931D0015D10026C63F - - CreatedOnToolsVersion - 7.3 - - - - buildConfigurationList - 84001F841D0015D10026C63F - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 - isa - PBXProject - knownRegions - - en - - mainGroup - 84001F801D0015D10026C63F - productRefGroup - 84001F8B1D0015D10026C63F - projectDirPath - - projectReferences - - projectRoot - - targets - - 84001F891D0015D10026C63F - 84001F931D0015D10026C63F - - - 84001F841D0015D10026C63F - - buildConfigurations - - 84001F9C1D0015D10026C63F - 84001F9D1D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001F851D0015D10026C63F - - buildActionMask - 2147483647 - files - - 840762DA1D07BC8B000FD0BF - 84001FE21D0016380026C63F - 84001FE41D0016380026C63F - 84001FE61D0016380026C63F - 840762DE1D07BC8B000FD0BF - 84001FDC1D0016380026C63F - 840762D81D07BC8B000FD0BF - 84001FD41D0016380026C63F - 84001FE81D0016380026C63F - 840762D61D07BC8B000FD0BF - 84001FF01D0016380026C63F - 84001FF51D0016380026C63F - 84001FDE1D0016380026C63F - 84001FD21D0016380026C63F - 84001FF21D0016380026C63F - 840762E11D07BC8B000FD0BF - 84001FD91D0016380026C63F - 84001FEC1D0016380026C63F - 84001FEA1D0016380026C63F - 840762DC1D07BC8B000FD0BF - 84001FEE1D0016380026C63F - 84001FD71D0016380026C63F - 840762C61D07BC7D000FD0BF - 84001FE01D0016380026C63F - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F861D0015D10026C63F - - buildActionMask - 2147483647 - files - - 840020011D0017850026C63F - 84001FFF1D00176C0026C63F - 84001FFD1D0017680026C63F - 84001FFB1D0017630026C63F - 84001FF91D00175D0026C63F - 84001FF71D0017590026C63F - AD7F89B4621A7EFEBEA72D49 - BE55DA79155500CDEF87FB5C - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F871D0015D10026C63F - - buildActionMask - 2147483647 - files - - 840762DD1D07BC8B000FD0BF - 84001FDB1D0016380026C63F - 840762E01D07BC8B000FD0BF - 84001FDD1D0016380026C63F - 840762D71D07BC8B000FD0BF - 84001FE31D0016380026C63F - 840762C51D07BC7D000FD0BF - 840762DF1D07BC8B000FD0BF - 84001FEB1D0016380026C63F - 84001FE91D0016380026C63F - 840762E21D07BC8B000FD0BF - 840762DB1D07BC8B000FD0BF - 84001FF11D0016380026C63F - 84001FE71D0016380026C63F - 84001FEF1D0016380026C63F - 84001FD61D0016380026C63F - 84001FDF1D0016380026C63F - 84001FD31D0016380026C63F - 84001FD11D0016380026C63F - 84001FF41D0016380026C63F - 84001FE11D0016380026C63F - 84001FDA1D0016380026C63F - 84001FE51D0016380026C63F - 84001FED1D0016380026C63F - 84001FD81D0016380026C63F - 84001FD51D0016380026C63F - 840762D91D07BC8B000FD0BF - 84001FF31D0016380026C63F - 84001F8E1D0015D10026C63F - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F881D0015D10026C63F - - buildActionMask - 2147483647 - files - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F891D0015D10026C63F - - buildConfigurationList - 84001F9E1D0015D10026C63F - buildPhases - - 98F2C3F394BD79A6D6B8424F - 8EE9401DCA9508E918B7FB68 - 84001F851D0015D10026C63F - 84001F861D0015D10026C63F - 84001F871D0015D10026C63F - 84001F881D0015D10026C63F - 817C22141AD3F2EB34365AA3 - 8A5D8B623E50AAC1575D1741 - - buildRules - - dependencies - - isa - PBXNativeTarget - name - LFLiveKit - productName - LFLiveKit - productReference - 84001F8A1D0015D10026C63F - productType - com.apple.product-type.framework - - 84001F8A1D0015D10026C63F - - explicitFileType - wrapper.framework - includeInIndex - 0 - isa - PBXFileReference - path - LFLiveKit.framework - sourceTree - BUILT_PRODUCTS_DIR - - 84001F8B1D0015D10026C63F - - children - - 84001F8A1D0015D10026C63F - 84001F941D0015D10026C63F - - isa - PBXGroup - name - Products - sourceTree - <group> - - 84001F8C1D0015D10026C63F - - children - - 84001F8D1D0015D10026C63F - 84001FBA1D0016380026C63F - 84001FBB1D0016380026C63F - 84001FBC1D0016380026C63F - 84001FB01D0016380026C63F - 84001FA41D0016380026C63F - 84001FA91D0016380026C63F - 84001FB51D0016380026C63F - 840762C71D07BC8B000FD0BF - 84001FC91D0016380026C63F - 84001F8F1D0015D10026C63F - - isa - PBXGroup - path - LFLiveKit - sourceTree - <group> - - 84001F8D1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveKit.h - sourceTree - <group> - - 84001F8E1D0015D10026C63F - - fileRef - 84001F8D1D0015D10026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001F8F1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Info.plist - sourceTree - <group> - - 84001F901D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001F9A1D0015D10026C63F - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F911D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001F951D0015D10026C63F - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F921D0015D10026C63F - - buildActionMask - 2147483647 - files - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F931D0015D10026C63F - - buildConfigurationList - 84001FA11D0015D10026C63F - buildPhases - - 84001F901D0015D10026C63F - 84001F911D0015D10026C63F - 84001F921D0015D10026C63F - - buildRules - - dependencies - - 84001F971D0015D10026C63F - - isa - PBXNativeTarget - name - LFLiveKitTests - productName - LFLiveKitTests - productReference - 84001F941D0015D10026C63F - productType - com.apple.product-type.bundle.unit-test - - 84001F941D0015D10026C63F - - explicitFileType - wrapper.cfbundle - includeInIndex - 0 - isa - PBXFileReference - path - LFLiveKitTests.xctest - sourceTree - BUILT_PRODUCTS_DIR - - 84001F951D0015D10026C63F - - fileRef - 84001F8A1D0015D10026C63F - isa - PBXBuildFile - - 84001F961D0015D10026C63F - - containerPortal - 84001F811D0015D10026C63F - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 84001F891D0015D10026C63F - remoteInfo - LFLiveKit - - 84001F971D0015D10026C63F - - isa - PBXTargetDependency - target - 84001F891D0015D10026C63F - targetProxy - 84001F961D0015D10026C63F - - 84001F981D0015D10026C63F - - children - - 84001F991D0015D10026C63F - 84001F9B1D0015D10026C63F - - isa - PBXGroup - path - LFLiveKitTests - sourceTree - <group> - - 84001F991D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveKitTests.m - sourceTree - <group> - - 84001F9A1D0015D10026C63F - - fileRef - 84001F991D0015D10026C63F - isa - PBXBuildFile - - 84001F9B1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Info.plist - sourceTree - <group> - - 84001F9C1D0015D10026C63F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_ANALYZER_NONNULL - YES - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - COPY_PHASE_STRIP - NO - CURRENT_PROJECT_VERSION - 1 - DEBUG_INFORMATION_FORMAT - dwarf - ENABLE_STRICT_OBJC_MSGSEND - YES - ENABLE_TESTABILITY - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_NO_COMMON_BLOCKS - YES - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 9.3 - MTL_ENABLE_DEBUG_INFO - YES - ONLY_ACTIVE_ARCH - YES - SDKROOT - iphoneos - TARGETED_DEVICE_FAMILY - 1,2 - VERSIONING_SYSTEM - apple-generic - VERSION_INFO_PREFIX - - - isa - XCBuildConfiguration - name - Debug - - 84001F9D1D0015D10026C63F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_ANALYZER_NONNULL - YES - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - COPY_PHASE_STRIP - NO - CURRENT_PROJECT_VERSION - 1 - DEBUG_INFORMATION_FORMAT - dwarf-with-dsym - ENABLE_NS_ASSERTIONS - NO - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_NO_COMMON_BLOCKS - YES - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 9.3 - MTL_ENABLE_DEBUG_INFO - NO - SDKROOT - iphoneos - TARGETED_DEVICE_FAMILY - 1,2 - VALIDATE_PRODUCT - YES - VERSIONING_SYSTEM - apple-generic - VERSION_INFO_PREFIX - - - isa - XCBuildConfiguration - name - Release - - 84001F9E1D0015D10026C63F - - buildConfigurations - - 84001F9F1D0015D10026C63F - 84001FA01D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001F9F1D0015D10026C63F - - baseConfigurationReference - A17586B27CD6843997425CCF - buildSettings - - DEFINES_MODULE - YES - DYLIB_COMPATIBILITY_VERSION - 1 - DYLIB_CURRENT_VERSION - 1 - DYLIB_INSTALL_NAME_BASE - @rpath - ENABLE_BITCODE - NO - INFOPLIST_FILE - LFLiveKit/Info.plist - INSTALL_PATH - $(LOCAL_LIBRARY_DIR)/Frameworks - IPHONEOS_DEPLOYMENT_TARGET - 8.0 - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKit - PRODUCT_NAME - $(TARGET_NAME) - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 84001FA01D0015D10026C63F - - baseConfigurationReference - B75B965E6B94DE4CBCC82EA7 - buildSettings - - DEFINES_MODULE - YES - DYLIB_COMPATIBILITY_VERSION - 1 - DYLIB_CURRENT_VERSION - 1 - DYLIB_INSTALL_NAME_BASE - @rpath - ENABLE_BITCODE - NO - INFOPLIST_FILE - LFLiveKit/Info.plist - INSTALL_PATH - $(LOCAL_LIBRARY_DIR)/Frameworks - IPHONEOS_DEPLOYMENT_TARGET - 8.0 - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKit - PRODUCT_NAME - $(TARGET_NAME) - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 84001FA11D0015D10026C63F - - buildConfigurations - - 84001FA21D0015D10026C63F - 84001FA31D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001FA21D0015D10026C63F - - buildSettings - - INFOPLIST_FILE - LFLiveKitTests/Info.plist - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKitTests - PRODUCT_NAME - $(TARGET_NAME) - - isa - XCBuildConfiguration - name - Debug - - 84001FA31D0015D10026C63F - - buildSettings - - INFOPLIST_FILE - LFLiveKitTests/Info.plist - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKitTests - PRODUCT_NAME - $(TARGET_NAME) - - isa - XCBuildConfiguration - name - Release - - 84001FA41D0016380026C63F - - children - - 84001FA51D0016380026C63F - 84001FA61D0016380026C63F - 84001FA71D0016380026C63F - 84001FA81D0016380026C63F - - isa - PBXGroup - path - capture - sourceTree - <group> - - 84001FA51D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioCapture.h - sourceTree - <group> - - 84001FA61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFAudioCapture.m - sourceTree - <group> - - 84001FA71D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoCapture.h - sourceTree - <group> - - 84001FA81D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFVideoCapture.m - sourceTree - <group> - - 84001FA91D0016380026C63F - - children - - 84001FAA1D0016380026C63F - 84001FAB1D0016380026C63F - 84001FAC1D0016380026C63F - 84001FAD1D0016380026C63F - 84001FAE1D0016380026C63F - 84001FAF1D0016380026C63F - - isa - PBXGroup - path - coder - sourceTree - <group> - - 84001FAA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioEncoding.h - sourceTree - <group> - - 84001FAB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFHardwareAudioEncoder.h - sourceTree - <group> - - 84001FAC1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFHardwareAudioEncoder.m - sourceTree - <group> - - 84001FAD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFHardwareVideoEncoder.h - sourceTree - <group> - - 84001FAE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFHardwareVideoEncoder.m - sourceTree - <group> - - 84001FAF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoEncoding.h - sourceTree - <group> - - 84001FB01D0016380026C63F - - children - - 84001FB11D0016380026C63F - 84001FB21D0016380026C63F - 84001FB31D0016380026C63F - 84001FB41D0016380026C63F - - isa - PBXGroup - path - configuration - sourceTree - <group> - - 84001FB11D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveAudioConfiguration.h - sourceTree - <group> - - 84001FB21D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveAudioConfiguration.m - sourceTree - <group> - - 84001FB31D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveVideoConfiguration.h - sourceTree - <group> - - 84001FB41D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveVideoConfiguration.m - sourceTree - <group> - - 84001FB51D0016380026C63F - - children - - 84001FB61D0016380026C63F - 84001FB71D0016380026C63F - 84001FB81D0016380026C63F - 84001FB91D0016380026C63F - - isa - PBXGroup - path - filter - sourceTree - <group> - - 84001FB61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFGPUImageBeautyFilter.h - sourceTree - <group> - - 84001FB71D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFGPUImageBeautyFilter.m - sourceTree - <group> - - 84001FB81D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFGPUImageEmptyFilter.h - sourceTree - <group> - - 84001FB91D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFGPUImageEmptyFilter.m - sourceTree - <group> - - 84001FBA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveSession.h - sourceTree - <group> - - 84001FBB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveSession.m - sourceTree - <group> - - 84001FBC1D0016380026C63F - - children - - 84001FBD1D0016380026C63F - 84001FBE1D0016380026C63F - 84001FBF1D0016380026C63F - 84001FC01D0016380026C63F - 84001FC11D0016380026C63F - 84001FC21D0016380026C63F - 84001FC31D0016380026C63F - 84001FC41D0016380026C63F - 84001FC51D0016380026C63F - 84001FC61D0016380026C63F - - isa - PBXGroup - path - objects - sourceTree - <group> - - 84001FBD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioFrame.h - sourceTree - <group> - - 84001FBE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFAudioFrame.m - sourceTree - <group> - - 84001FBF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFFrame.h - sourceTree - <group> - - 84001FC01D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFFrame.m - sourceTree - <group> - - 84001FC11D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveDebug.h - sourceTree - <group> - - 84001FC21D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveDebug.m - sourceTree - <group> - - 84001FC31D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveStreamInfo.h - sourceTree - <group> - - 84001FC41D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveStreamInfo.m - sourceTree - <group> - - 84001FC51D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoFrame.h - sourceTree - <group> - - 84001FC61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFVideoFrame.m - sourceTree - <group> - - 84001FC91D0016380026C63F - - children - - 84001FCE1D0016380026C63F - 84001FCA1D0016380026C63F - 84001FCB1D0016380026C63F - 84001FCC1D0016380026C63F - 84001FCD1D0016380026C63F - 840762C31D07BC7D000FD0BF - 840762C41D07BC7D000FD0BF - 84001FCF1D0016380026C63F - 84001FD01D0016380026C63F - - isa - PBXGroup - name - publish - path - upload - sourceTree - <group> - - 84001FCA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFStreamingBuffer.h - sourceTree - <group> - - 84001FCB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFStreamingBuffer.m - sourceTree - <group> - - 84001FCC1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFStreamRtmpSocket.h - sourceTree - <group> - - 84001FCD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFStreamRtmpSocket.m - sourceTree - <group> - - 84001FCE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFStreamSocket.h - sourceTree - <group> - - 84001FCF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - NSMutableArray+LFAdd.h - sourceTree - <group> - - 84001FD01D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - NSMutableArray+LFAdd.m - sourceTree - <group> - - 84001FD11D0016380026C63F - - fileRef - 84001FA51D0016380026C63F - isa - PBXBuildFile - - 84001FD21D0016380026C63F - - fileRef - 84001FA61D0016380026C63F - isa - PBXBuildFile - - 84001FD31D0016380026C63F - - fileRef - 84001FA71D0016380026C63F - isa - PBXBuildFile - - 84001FD41D0016380026C63F - - fileRef - 84001FA81D0016380026C63F - isa - PBXBuildFile - - 84001FD51D0016380026C63F - - fileRef - 84001FAA1D0016380026C63F - isa - PBXBuildFile - - 84001FD61D0016380026C63F - - fileRef - 84001FAB1D0016380026C63F - isa - PBXBuildFile - - 84001FD71D0016380026C63F - - fileRef - 84001FAC1D0016380026C63F - isa - PBXBuildFile - - 84001FD81D0016380026C63F - - fileRef - 84001FAD1D0016380026C63F - isa - PBXBuildFile - - 84001FD91D0016380026C63F - - fileRef - 84001FAE1D0016380026C63F - isa - PBXBuildFile - - 84001FDA1D0016380026C63F - - fileRef - 84001FAF1D0016380026C63F - isa - PBXBuildFile - - 84001FDB1D0016380026C63F - - fileRef - 84001FB11D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FDC1D0016380026C63F - - fileRef - 84001FB21D0016380026C63F - isa - PBXBuildFile - - 84001FDD1D0016380026C63F - - fileRef - 84001FB31D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FDE1D0016380026C63F - - fileRef - 84001FB41D0016380026C63F - isa - PBXBuildFile - - 84001FDF1D0016380026C63F - - fileRef - 84001FB61D0016380026C63F - isa - PBXBuildFile - - 84001FE01D0016380026C63F - - fileRef - 84001FB71D0016380026C63F - isa - PBXBuildFile - - 84001FE11D0016380026C63F - - fileRef - 84001FB81D0016380026C63F - isa - PBXBuildFile - - 84001FE21D0016380026C63F - - fileRef - 84001FB91D0016380026C63F - isa - PBXBuildFile - - 84001FE31D0016380026C63F - - fileRef - 84001FBA1D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FE41D0016380026C63F - - fileRef - 84001FBB1D0016380026C63F - isa - PBXBuildFile - - 84001FE51D0016380026C63F - - fileRef - 84001FBD1D0016380026C63F - isa - PBXBuildFile - - 84001FE61D0016380026C63F - - fileRef - 84001FBE1D0016380026C63F - isa - PBXBuildFile - - 84001FE71D0016380026C63F - - fileRef - 84001FBF1D0016380026C63F - isa - PBXBuildFile - - 84001FE81D0016380026C63F - - fileRef - 84001FC01D0016380026C63F - isa - PBXBuildFile - - 84001FE91D0016380026C63F - - fileRef - 84001FC11D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FEA1D0016380026C63F - - fileRef - 84001FC21D0016380026C63F - isa - PBXBuildFile - - 84001FEB1D0016380026C63F - - fileRef - 84001FC31D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FEC1D0016380026C63F - - fileRef - 84001FC41D0016380026C63F - isa - PBXBuildFile - - 84001FED1D0016380026C63F - - fileRef - 84001FC51D0016380026C63F - isa - PBXBuildFile - - 84001FEE1D0016380026C63F - - fileRef - 84001FC61D0016380026C63F - isa - PBXBuildFile - - 84001FEF1D0016380026C63F - - fileRef - 84001FCA1D0016380026C63F - isa - PBXBuildFile - - 84001FF01D0016380026C63F - - fileRef - 84001FCB1D0016380026C63F - isa - PBXBuildFile - - 84001FF11D0016380026C63F - - fileRef - 84001FCC1D0016380026C63F - isa - PBXBuildFile - - 84001FF21D0016380026C63F - - fileRef - 84001FCD1D0016380026C63F - isa - PBXBuildFile - - 84001FF31D0016380026C63F - - fileRef - 84001FCE1D0016380026C63F - isa - PBXBuildFile - - 84001FF41D0016380026C63F - - fileRef - 84001FCF1D0016380026C63F - isa - PBXBuildFile - - 84001FF51D0016380026C63F - - fileRef - 84001FD01D0016380026C63F - isa - PBXBuildFile - - 84001FF61D0017590026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - AVFoundation.framework - path - System/Library/Frameworks/AVFoundation.framework - sourceTree - SDKROOT - - 84001FF71D0017590026C63F - - fileRef - 84001FF61D0017590026C63F - isa - PBXBuildFile - - 84001FF81D00175D0026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - System/Library/Frameworks/Foundation.framework - sourceTree - SDKROOT - - 84001FF91D00175D0026C63F - - fileRef - 84001FF81D00175D0026C63F - isa - PBXBuildFile - - 84001FFA1D0017630026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - UIKit.framework - path - System/Library/Frameworks/UIKit.framework - sourceTree - SDKROOT - - 84001FFB1D0017630026C63F - - fileRef - 84001FFA1D0017630026C63F - isa - PBXBuildFile - - 84001FFC1D0017680026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - AudioToolbox.framework - path - System/Library/Frameworks/AudioToolbox.framework - sourceTree - SDKROOT - - 84001FFD1D0017680026C63F - - fileRef - 84001FFC1D0017680026C63F - isa - PBXBuildFile - - 84001FFE1D00176C0026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - VideoToolbox.framework - path - System/Library/Frameworks/VideoToolbox.framework - sourceTree - SDKROOT - - 84001FFF1D00176C0026C63F - - fileRef - 84001FFE1D00176C0026C63F - isa - PBXBuildFile - - 840020001D0017850026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.text-based-dylib-definition - name - libz.tbd - path - usr/lib/libz.tbd - sourceTree - SDKROOT - - 840020011D0017850026C63F - - fileRef - 840020001D0017850026C63F - isa - PBXBuildFile - - 840762C31D07BC7D000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFStreamTcpSocket.h - sourceTree - <group> - - 840762C41D07BC7D000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFStreamTcpSocket.m - sourceTree - <group> - - 840762C51D07BC7D000FD0BF - - fileRef - 840762C31D07BC7D000FD0BF - isa - PBXBuildFile - - 840762C61D07BC7D000FD0BF - - fileRef - 840762C41D07BC7D000FD0BF - isa - PBXBuildFile - - 840762C71D07BC8B000FD0BF - - children - - 840762C81D07BC8B000FD0BF - 840762D31D07BC8B000FD0BF - 840762D41D07BC8B000FD0BF - 840762D51D07BC8B000FD0BF - - isa - PBXGroup - name - packet - path - LFLiveKit/packet - sourceTree - SOURCE_ROOT - - 840762C81D07BC8B000FD0BF - - children - - 840762C91D07BC8B000FD0BF - 840762CA1D07BC8B000FD0BF - 840762CB1D07BC8B000FD0BF - 840762CC1D07BC8B000FD0BF - 840762CD1D07BC8B000FD0BF - 840762CE1D07BC8B000FD0BF - 840762CF1D07BC8B000FD0BF - 840762D01D07BC8B000FD0BF - 840762D11D07BC8B000FD0BF - 840762D21D07BC8B000FD0BF - - isa - PBXGroup - path - flv - sourceTree - <group> - - 840762C91D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.c - path - amf.c - sourceTree - <group> - - 840762CA1D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - amf.h - sourceTree - <group> - - 840762CB1D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.c - path - avc.c - sourceTree - <group> - - 840762CC1D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - avc.h - sourceTree - <group> - - 840762CD1D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.c - path - flv.c - sourceTree - <group> - - 840762CE1D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - flv.h - sourceTree - <group> - - 840762CF1D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.c - path - info.c - sourceTree - <group> - - 840762D01D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - info.h - sourceTree - <group> - - 840762D11D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.c - path - types.c - sourceTree - <group> - - 840762D21D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - types.h - sourceTree - <group> - - 840762D31D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFFlvPackage.h - sourceTree - <group> - - 840762D41D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFFlvPackage.m - sourceTree - <group> - - 840762D51D07BC8B000FD0BF - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFStreamPackage.h - sourceTree - <group> - - 840762D61D07BC8B000FD0BF - - fileRef - 840762C91D07BC8B000FD0BF - isa - PBXBuildFile - - 840762D71D07BC8B000FD0BF - - fileRef - 840762CA1D07BC8B000FD0BF - isa - PBXBuildFile - - 840762D81D07BC8B000FD0BF - - fileRef - 840762CB1D07BC8B000FD0BF - isa - PBXBuildFile - - 840762D91D07BC8B000FD0BF - - fileRef - 840762CC1D07BC8B000FD0BF - isa - PBXBuildFile - - 840762DA1D07BC8B000FD0BF - - fileRef - 840762CD1D07BC8B000FD0BF - isa - PBXBuildFile - - 840762DB1D07BC8B000FD0BF - - fileRef - 840762CE1D07BC8B000FD0BF - isa - PBXBuildFile - - 840762DC1D07BC8B000FD0BF - - fileRef - 840762CF1D07BC8B000FD0BF - isa - PBXBuildFile - - 840762DD1D07BC8B000FD0BF - - fileRef - 840762D01D07BC8B000FD0BF - isa - PBXBuildFile - - 840762DE1D07BC8B000FD0BF - - fileRef - 840762D11D07BC8B000FD0BF - isa - PBXBuildFile - - 840762DF1D07BC8B000FD0BF - - fileRef - 840762D21D07BC8B000FD0BF - isa - PBXBuildFile - - 840762E01D07BC8B000FD0BF - - fileRef - 840762D31D07BC8B000FD0BF - isa - PBXBuildFile - - 840762E11D07BC8B000FD0BF - - fileRef - 840762D41D07BC8B000FD0BF - isa - PBXBuildFile - - 840762E21D07BC8B000FD0BF - - fileRef - 840762D51D07BC8B000FD0BF - isa - PBXBuildFile - - 8A5D8B623E50AAC1575D1741 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh" - - showEnvVarsInLog - 0 - - 8EE9401DCA9508E918B7FB68 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - 📦 Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - 98F2C3F394BD79A6D6B8424F - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - A17586B27CD6843997425CCF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-LFLiveKit.debug.xcconfig - path - Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig - sourceTree - <group> - - AD7F89B4621A7EFEBEA72D49 - - fileRef - B8CB02D2A92EA1F5A262F154 - isa - PBXBuildFile - - B5758EB2A15DAA132D8BF380 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods.a - sourceTree - BUILT_PRODUCTS_DIR - - B75B965E6B94DE4CBCC82EA7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-LFLiveKit.release.xcconfig - path - Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig - sourceTree - <group> - - B8CB02D2A92EA1F5A262F154 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods-LFLiveKit.a - sourceTree - BUILT_PRODUCTS_DIR - - BE55DA79155500CDEF87FB5C - - fileRef - B5758EB2A15DAA132D8BF380 - isa - PBXBuildFile - - EDD4B76A07A6817C79BB4E5C - - children - - A17586B27CD6843997425CCF - B75B965E6B94DE4CBCC82EA7 - - isa - PBXGroup - name - Pods - sourceTree - <group> - - - rootObject - 84001F811D0015D10026C63F - - +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; + 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001F991D0015D10026C63F /* LFLiveKitTests.m */; }; + 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA51D0016380026C63F /* LFAudioCapture.h */; }; + 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA61D0016380026C63F /* LFAudioCapture.m */; }; + 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA71D0016380026C63F /* LFVideoCapture.h */; }; + 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA81D0016380026C63F /* LFVideoCapture.m */; }; + 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAA1D0016380026C63F /* LFAudioEncoding.h */; }; + 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */; }; + 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */; }; + 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */; }; + 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */; }; + 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAF1D0016380026C63F /* LFVideoEncoding.h */; }; + 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */; }; + 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */; }; + 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */; }; + 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */; }; + 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */; }; + 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; + 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; }; + 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; + 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; }; + 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; + 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; + 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; + 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; + 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; + 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; + 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; + 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; + 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; + 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; + AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; + B289F1CD1D3DE06C00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1C61D3DE06C00D9C7A5 /* LFStreamingBuffer.h */; }; + B289F1CE1D3DE06C00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1C71D3DE06C00D9C7A5 /* LFStreamingBuffer.m */; }; + B289F1CF1D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1C81D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h */; }; + B289F1D01D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1C91D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m */; }; + B289F1D11D3DE06C00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1CA1D3DE06C00D9C7A5 /* LFStreamSocket.h */; }; + B289F1D21D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1CB1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h */; }; + B289F1D31D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1CC1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m */; }; + BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 84001F961D0015D10026C63F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84001F811D0015D10026C63F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84001F891D0015D10026C63F; + remoteInfo = LFLiveKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; + 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LFLiveKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 84001F991D0015D10026C63F /* LFLiveKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitTests.m; sourceTree = ""; }; + 84001F9B1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84001FA51D0016380026C63F /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; + 84001FA61D0016380026C63F /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; + 84001FA71D0016380026C63F /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; + 84001FA81D0016380026C63F /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; + 84001FAA1D0016380026C63F /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; + 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; + 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; + 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; + 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; + 84001FAF1D0016380026C63F /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; + 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; + 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; + 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; + 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; + 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; + 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; + 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; + 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; + 84001FBA1D0016380026C63F /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; + 84001FBB1D0016380026C63F /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; + 84001FBD1D0016380026C63F /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; + 84001FBE1D0016380026C63F /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; + 84001FBF1D0016380026C63F /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; + 84001FC01D0016380026C63F /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; + 84001FC11D0016380026C63F /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; + 84001FC21D0016380026C63F /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; + 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; + 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; + 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; + 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; + 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; + 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; + B289F1C61D3DE06C00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamingBuffer.h; sourceTree = ""; }; + B289F1C71D3DE06C00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamingBuffer.m; sourceTree = ""; }; + B289F1C81D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamRtmpSocket.h; sourceTree = ""; }; + B289F1C91D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamRtmpSocket.m; sourceTree = ""; }; + B289F1CA1D3DE06C00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamSocket.h; sourceTree = ""; }; + B289F1CB1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+LFAdd.h"; sourceTree = ""; }; + B289F1CC1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+LFAdd.m"; sourceTree = ""; }; + B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; + B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 84001F861D0015D10026C63F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 840020011D0017850026C63F /* libz.tbd in Frameworks */, + 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */, + 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */, + 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, + 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, + 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, + AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, + BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F911D0015D10026C63F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C07D14560B9E91EA1B59306 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 840020001D0017850026C63F /* libz.tbd */, + 84001FFE1D00176C0026C63F /* VideoToolbox.framework */, + 84001FFC1D0017680026C63F /* AudioToolbox.framework */, + 84001FFA1D0017630026C63F /* UIKit.framework */, + 84001FF81D00175D0026C63F /* Foundation.framework */, + 84001FF61D0017590026C63F /* AVFoundation.framework */, + B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, + B5758EB2A15DAA132D8BF380 /* libPods.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 84001F801D0015D10026C63F = { + isa = PBXGroup; + children = ( + 84001F8C1D0015D10026C63F /* LFLiveKit */, + 84001F981D0015D10026C63F /* LFLiveKitTests */, + 84001F8B1D0015D10026C63F /* Products */, + EDD4B76A07A6817C79BB4E5C /* Pods */, + 0C07D14560B9E91EA1B59306 /* Frameworks */, + ); + sourceTree = ""; + }; + 84001F8B1D0015D10026C63F /* Products */ = { + isa = PBXGroup; + children = ( + 84001F8A1D0015D10026C63F /* LFLiveKit.framework */, + 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 84001F8C1D0015D10026C63F /* LFLiveKit */ = { + isa = PBXGroup; + children = ( + 84001F8D1D0015D10026C63F /* LFLiveKit.h */, + 84001FBA1D0016380026C63F /* LFLiveSession.h */, + 84001FBB1D0016380026C63F /* LFLiveSession.m */, + 84001FBC1D0016380026C63F /* objects */, + 84001FB01D0016380026C63F /* configuration */, + 84001FA41D0016380026C63F /* capture */, + 84001FA91D0016380026C63F /* coder */, + 84001FB51D0016380026C63F /* filter */, + 84001FC91D0016380026C63F /* publish */, + 84001F8F1D0015D10026C63F /* Info.plist */, + ); + path = LFLiveKit; + sourceTree = ""; + }; + 84001F981D0015D10026C63F /* LFLiveKitTests */ = { + isa = PBXGroup; + children = ( + 84001F991D0015D10026C63F /* LFLiveKitTests.m */, + 84001F9B1D0015D10026C63F /* Info.plist */, + ); + path = LFLiveKitTests; + sourceTree = ""; + }; + 84001FA41D0016380026C63F /* capture */ = { + isa = PBXGroup; + children = ( + 84001FA51D0016380026C63F /* LFAudioCapture.h */, + 84001FA61D0016380026C63F /* LFAudioCapture.m */, + 84001FA71D0016380026C63F /* LFVideoCapture.h */, + 84001FA81D0016380026C63F /* LFVideoCapture.m */, + ); + path = capture; + sourceTree = ""; + }; + 84001FA91D0016380026C63F /* coder */ = { + isa = PBXGroup; + children = ( + 84001FAA1D0016380026C63F /* LFAudioEncoding.h */, + 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */, + 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */, + 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */, + 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */, + 84001FAF1D0016380026C63F /* LFVideoEncoding.h */, + ); + path = coder; + sourceTree = ""; + }; + 84001FB01D0016380026C63F /* configuration */ = { + isa = PBXGroup; + children = ( + 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */, + 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */, + 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */, + 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */, + ); + path = configuration; + sourceTree = ""; + }; + 84001FB51D0016380026C63F /* filter */ = { + isa = PBXGroup; + children = ( + 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */, + 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */, + 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */, + 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */, + ); + path = filter; + sourceTree = ""; + }; + 84001FBC1D0016380026C63F /* objects */ = { + isa = PBXGroup; + children = ( + 84001FBD1D0016380026C63F /* LFAudioFrame.h */, + 84001FBE1D0016380026C63F /* LFAudioFrame.m */, + 84001FBF1D0016380026C63F /* LFFrame.h */, + 84001FC01D0016380026C63F /* LFFrame.m */, + 84001FC11D0016380026C63F /* LFLiveDebug.h */, + 84001FC21D0016380026C63F /* LFLiveDebug.m */, + 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */, + 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */, + 84001FC51D0016380026C63F /* LFVideoFrame.h */, + 84001FC61D0016380026C63F /* LFVideoFrame.m */, + ); + path = objects; + sourceTree = ""; + }; + 84001FC91D0016380026C63F /* publish */ = { + isa = PBXGroup; + children = ( + B289F1C61D3DE06C00D9C7A5 /* LFStreamingBuffer.h */, + B289F1C71D3DE06C00D9C7A5 /* LFStreamingBuffer.m */, + B289F1C81D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h */, + B289F1C91D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m */, + B289F1CA1D3DE06C00D9C7A5 /* LFStreamSocket.h */, + B289F1CB1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h */, + B289F1CC1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m */, + ); + name = publish; + path = upload; + sourceTree = ""; + }; + EDD4B76A07A6817C79BB4E5C /* Pods */ = { + isa = PBXGroup; + children = ( + A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */, + B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 84001F871D0015D10026C63F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, + 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, + 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, + 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, + 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, + 84001FE71D0016380026C63F /* LFFrame.h in Headers */, + 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, + 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, + 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, + 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, + B289F1D21D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, + B289F1D11D3DE06C00D9C7A5 /* LFStreamSocket.h in Headers */, + B289F1CF1D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, + B289F1CD1D3DE06C00D9C7A5 /* LFStreamingBuffer.h in Headers */, + 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, + 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, + 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, + 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 84001F891D0015D10026C63F /* LFLiveKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; + buildPhases = ( + 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */, + 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */, + 84001F851D0015D10026C63F /* Sources */, + 84001F861D0015D10026C63F /* Frameworks */, + 84001F871D0015D10026C63F /* Headers */, + 84001F881D0015D10026C63F /* Resources */, + 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */, + 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LFLiveKit; + productName = LFLiveKit; + productReference = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 84001F931D0015D10026C63F /* LFLiveKitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */; + buildPhases = ( + 84001F901D0015D10026C63F /* Sources */, + 84001F911D0015D10026C63F /* Frameworks */, + 84001F921D0015D10026C63F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 84001F971D0015D10026C63F /* PBXTargetDependency */, + ); + name = LFLiveKitTests; + productName = LFLiveKitTests; + productReference = 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 84001F811D0015D10026C63F /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = admin; + TargetAttributes = { + 84001F891D0015D10026C63F = { + CreatedOnToolsVersion = 7.3; + }; + 84001F931D0015D10026C63F = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 84001F801D0015D10026C63F; + productRefGroup = 84001F8B1D0015D10026C63F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 84001F891D0015D10026C63F /* LFLiveKit */, + 84001F931D0015D10026C63F /* LFLiveKitTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 84001F881D0015D10026C63F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F921D0015D10026C63F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84001F851D0015D10026C63F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, + 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, + 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, + 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, + 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, + 84001FE81D0016380026C63F /* LFFrame.m in Sources */, + B289F1CE1D3DE06C00D9C7A5 /* LFStreamingBuffer.m in Sources */, + 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, + 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, + 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, + B289F1D01D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, + 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, + 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, + 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, + 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, + B289F1D31D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, + 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F901D0015D10026C63F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 84001F971D0015D10026C63F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 84001F891D0015D10026C63F /* LFLiveKit */; + targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 84001F9C1D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 84001F9D1D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 84001F9F1D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = LFLiveKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 84001FA01D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = LFLiveKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 84001FA21D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = LFLiveKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 84001FA31D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = LFLiveKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001F9C1D0015D10026C63F /* Debug */, + 84001F9D1D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001F9F1D0015D10026C63F /* Debug */, + 84001FA01D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001FA21D0015D10026C63F /* Debug */, + 84001FA31D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 84001F811D0015D10026C63F /* Project object */; +} diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..78f9d3b8d7869c42e9d5c811928ce383559535c7 GIT binary patch literal 12124 zcmbVS2Yl1j_P---R-2?ro1Hdo(lR?}OP7qcw8cs(r749{Af(N&C6G2HNrAGwQBV{o zqEDQ(ML-l6`Wy%%ZV^<56H(mjDf--s{Le4HrbE!@-+mzZ<=%78z4zR6zGvKDQ-{|R z2xes+MHmr8kqAYhXi=0XdX{|&=MQ*%?X&E@riEN{FwkIk`I{Gbpt;T-^mV8azGU;g zaX15skpyW_JW4>r&~P*YjYOl+Xq1jJP$nuwMd&;<4wa(wQ6-v&W}tdB8@bU!)Q$pZ z30jUAT7%Z2YtaUD9omSlM>nHeP&c|0?Lc>-yU|W`FM1d~f*wVWqdn+J^c;E~y@Fmv zhtUyq6upVwK_8$`(5L8I^k4KH`X2p+enV$4#Ud=javX!LI2os48@A(AoQ8+t;mCzY z;!$`sPRALz02ksSd>)>Jr{Zcn4cFl5xE4F`Ts#ju@qD}xFT!5jhL_@HxC^hsA$%>~ zfUm(kuI{FFcKn{l6B-7axK|FZX!36ZgL0NO7152 zk$;oN$dCEtqq6(^{DjG)<=rB5* zj-VsyC_0*^(+rwP$I^+kn3mD=X(hdYR?}(JL1)rgbPkaTkrWaC1 zL-ZoLj$THurW@%k^j3NY-AZ@R`{+Y-58X?jpwH3g=?nB#`ZhgDKcb(}&*>NRYkG=) zPk*MTMRPGf}}`>hj8Z@6TGZk5v~nJ&AnqxiV8&2h8CAa42w$fvU!V+s=G6Fo zJiItMJNVW8aoiA^|1n1m4`srn!wcEsF)=%%MmmQ6sZiAqY5;cSEVM9 zP$PW%IWI_b3C9qNXBwv}ds+H2en076Uu#ijW@&zTVMResL3%-cNm+VsMMY_P!KCc` z^olY0r6t*ASq1s!S%=XDXbP%AQ)dhM*zRiMW(kj6U`DkA1lj}L)w8M{)54G%S!E5X z3Crp9Gn-V!nq?-tMWC6PdsoqYzi|`LpPem^vrw=_S1;wpt)!sa>Bk` zXfkSU2zuH;OI&RoPL+yV*5PV**ZE!Tfo8v_BiQKfvjSL91E>JEti}~wz)TEDn1&gS zAP%(v(^j+qd7P@aYDZ;+riyEC4K4tdgWBp{-cC-1Rg@V80W3mZ5NQ9H9@K`a2R8^* zJ_JkCg0c+KjL05)(PHFB)qmRWRB6iU>;5Pifo~9X!m*b4{jRPa6hzfR>r%7~230$z zb_QKdUargo7U*kt`MY}2Qq+a2=Ttie+9JoY0F+X9U3bGFw1InP8!dz(r*L+824|5OK^s}TMx^v403IKntdzU+=FgIx3du}ll3ET54r=Xdr&Xh!bY-DJ!mW1#zwPrmN6ID zRJsAYJS`s152^{jd5%+Et?iy*ryGznc|brzCL9=MD|XLE{GXsLUFe=3UMnK2zYpyi zGWmn(A(q9)u#6g8@g;)?K8AMB>sPX{4)&tQcrA3Q)MpDvu;jhGB|pK&GV@WiA1rw; znBG(9X>>7qwjmG(0nk*I&+?d+jkA^P8UJ462JZ)vrM-Y<NqdMRb4_u)-d65FKJg z>^x?v7nGx3IE{18-_Wm~!nTj0*PJTLkc0iBjrF3}(Hs1B{+jIE1{zuOTj*_+ws|ve zPl8`Rf!^b_<6Snf8=Yh&Lk;cYu%Q+IzYQ(3vc1KZ5e{!7^L&Q>!#lCh(HH1TR>~%^ zvR?ER`Wl^L<*b5L@>-b)h~%uPs&v#j%gZY3rqwzfMEyIJExR4oQt4*R!s@u zU4+1T7Ki#uM`dYMc`dNvc?ie;18UgJ%);}}=+|!a3!BW&7k-~cAf4>+p%jR(2E<}5Qg6o!ti&oDht*hv<8cD3X46;=o6c&PgVnJa+p!KMVFNZ| z6Em(63&UYv`^f|1T= zt9dhp01nP%XoS`m&4JlFI@{X7NeRd0;9B|6l@Hg>8Zxbe_h-<>d(@%a>O4U&7uG90 z4sE^zkH-`6L|lwZn2Rl7Ue>`n`(YNB;q&?Rmg5RMnKiLy=I+In_yRnIajb>4^6O1I zYlb1qtMPk$eh4<5s!@MUSn6tC+r0zcF}-m<3{FT3)v!Ou@ws(&~)pJ(oT=p9WekG=FS?~f?M$d*2dbIj~}TLhSnCH zW8!w~KWlgZ2XQA`%=|0>!zZ2^vi8GxIg;ZQcqJc-x?Mrnv^X-qDGXYWlVd_fQPJm( z`+K?gPO(I(GMdcx)KOz{^ZPO`8tG-2m)u_``o0#(f@>42=o(FOTR+l)${S*g$KKAbje_=s~w(0vp3 z3?DfVK#xwBWn^Xn7}icMg-wN5;@}g#iZRwKYZg*rCIg1qIgw@dWRHa3WAlatd_80N z#)3k?mO+AX3nJ?&8hOrk$fK$qQ@Ae3ulmX&ua2Kk=lA)73?m7OgFMj&MUZTi4?+19 zi0~Ux6Y@c18$g|CCAjzX=mxY2${i5!pdPdZLYkfEA+#4ggASo%=ma_mrHzl!@0bD} z>u@3zGDZT7b2^PK~0~+#&_p_kj zT2|u==k~jnGElx=yc#o94T9!>MQq|Cd>KmH3Yf44uf>z`rFb16!xFZXx!E$-wH5GT zJ-z~837_i$C6==lY!!Si=dmK?uZ_B{s{?1bR!o8hgSFuB5SqW zaeg=}E`rY-)#n1x-i|hRLn(stP8(@bwi}q*fBBa&`GSAr4c)5*-VCORHT=JgvM(YlH?6ewC|<^Ey@O z{0`1}CNqK_$bq^_pgPo_oCxgtS@C^;kob^eg>2K)+I|iW{DK7j9xlMgenL*bQ>qYb zChYpGLgZxaPX;1(e-eKX$=UFS>;`5Lbomp=&+w=CGxjgGX+V#^#9t3hk?=Q=BHhR` zY{hGS3gb_N?f3YnKT!SxlsEB|KI;(5-wENp=^26uX1B0g*=@aq5=^4l?d&$Thd&P? z4T;p8`X!c883=T8pr&z=6t=(1sj`MMoU_LO+;@gU%)XTpIY~ficaj(qOB6&&R3wh5 ziH5|p&8(aCuwJ%>-NCl9ZEX9U*g$kdPYm#FB4+qZ1k=2e?O=Do_uXtad_K;vm)GQS zzu)Jt@OXn9AB2~;^92bvZ^eE34z)N?s5oco|FZM?||g}*=EretvCwJAV zuvU;!=-17C=?lpi^gITTkYux+eMm^gg7%O+lF#m85AGsbo6n45=p5NDX_CJ;eUqOKORO z)Uk)zBkWOTsSCp98(W~NJQXqzS1Z>L=xp-zsf)$2fb)8-j&PaGTG_s&ujpnCpP5rN zrp(jQQe@4{$jGemx%t9RhS%4;sK{FFvj#ew7g+fwtIuzBLuS(qD9|NHXHGbwo9+>Q z%^xJ6=J0c5^(~|gTrFuO3y6m-1ikaJz3d6Lk39(*w|^^X2hHk$|9%o+Pk~Oo1pg1Q zmwCKupEZx={q`}0M=96h^K<)G?{1^(eGczBUnYR;y;j@-c0ZX}np1MGR8_Hv+oo>^vg zbT&cFctK>|TgYwwOT3*O9MGyB(koOf&S3+2IsFMY*+%Z{XRw34GQeObxo1epgWOMc zMZlFj$PV{`D|r|K1@Z`alsv|cuw(4?0TbCn_6>$j{5;tYp6e(Nn;pf2VUs*dUKm1o zfE-{O*lRrHdNzdeWpa2hB{>2--{5%)4yfOC@D3v)qc_O=JSe_N-Xd?4}__Oy~9qhciDUFBzvC+#Sg)e9>fR9r{pv8Ir#$A^#gFF*RktDI4Xp7A*>H! zE3dvP9>vPIrq0$@&M!DTK9v<57N5^MLEqZlF29@iV?43Y1qV_u+*1m_9i2^WKs|fV zK$QkY^j))rXAsz1`OyGXR&jldG77FcriL!4&{hoQYH|*~R>-CT1XI@!SUO`(lGXn;;_5-znl5oM9h#Q_MaAh??s1wDaG3*Ooij+UB5kuzV4U=;~9Mawze(W!7Ll6LklA*MHhWf|$$(*l^3--YmRYQrA zYS@>|99fl?@)u%MNA=V|jnqWV)WZJ5zG7dqQ|ue|E&J~_nnbNMnWoSbG=`?K@7VY3 zhY&{ak10YJGs_&n4vtSWcz4t&EGxWVaFaqx#e2q~hXQBP@74I4F`rq2Ba2|$Ir>bI zzVc;oEyiDH55%R7kv_Nxfg8bQUt5NYPf0V}K|Val2**coKfy<~pcec(BLc{x*^JrkJHvitzeY;%{6dFpTZnyN)qye}&p7OJXbFFWrR-<^2>Wlq=;Uy1^_PEi+oiei zjPQ3PT(WMYQ)m?`XQ$ck3}VZFdVNM~==5_}k9%k>UwHo0n;%+7XTSx?AI0%!n$$z< zd3JxB-lwv`OAMXJgS?OdS|RsyAwS%aaeNjCw|W)u-vci+aFFYJ!fi!=%nspIh#XWn zSpJQ?{6m=hLwP}JN$2qg>kMHLGY@f2;c9SUc2>W0qRn&xTr*KOs-5;metZT2JeO@Y8Go(!zMG3Wu7J3!HvnjTlIP zF5_nl(oVXBE)8LM2*-qQYzQm1KItXA#JT| zsSq5%E&0&iKG1SB`}q2Sbx3D;I9wz{QWTEje0~5u?GTbM_rb<|FMrv%PE8&!d(`MEyvC;ea zg*`xbg|IP%EdvYtH+^)-WRKC^A#4g^Gt}?Fj08ls6?^6nnRXw2YRIUk=`$gm7{W=B zh%VwZc{gh-p0h7J`Y3&o9-uFQ!X8BB^kw=Aq!@gyOi(D^pH_$K^}1HB-P0Km<__cT zvY^nT@9=y0V)$8IAv}VCTS*S#(XY|N^a#vxlpdq6!8`})o2Zq(g-^_a3k0v*&$ZV> z!5N^uv3UT}L4(|V7vg^g7L8ESj>HB0Tq8nwR0yXG#{A>-oiOIV7sA6r*v5l&2&W0) z`#x`@AB3=dDEfXXSbyq2vi`H+_e&mrLwNW<#@`{rqu+q|-oz(RIX)4>Bl%5_VsJgm zLk?VBb<>wY;{5#;yz)SQq2P}Ay4$%+97E5zhyKO`@82aCX84_+ajI;8V}>3P;<^7F z((q|5spd1HC+Qrfmhqc0*+54x5KMd50J;;m8zG>s}MOK zgMj!r1jFx;6^M#NC89~9a?xZ_r6?fUDSBP>q39FQXQD4fUx`kMPDe#W#YJhN z5~6fbRZ%md=0|y=d{M!uRZ*8mT^V(C)P|^yQ8z?A5VbpMZ`8i1{ZX$+os9Y}8b!;Z zW1Ea^sIPnB=v3RBUGVuoSM)3{e8^t$?d&PH%w~6l*-zDBDenTRb zUdDqSgED_tkOTzZA{R_QkBozlCcJEiwZ zACW#IeNp<7^pNz3^qBN@>6_B`q@PHClSRvvvP@Z?tX}4ob;*{?R>)S#E|*;?yIQtE zwo!J2tXFo2Y@6&(*+;T(Wk1V)m7SKIkw?oVa=0mxE99B-8hJpzQoc%lp?sZuz5Gh~ z)$$wVo8&jkx5)38KO)~NKPG=){*n9>`RDR4%5lmHr9(MeIY&89IbYeT^e7i8+mt@#GUbKJb;@hvzKi=I z?uND^cT zrUXkuQbKZqEg>~wSi*>eQ3>e@6$uRqT*CDU+Y??-_&njKgkQ88tyOE&rfP?4M`}lF z$7+kTvDB@x&mF1Zk%p{u2@&9E7Miz8gz}ixjLuLrEAu4 zx>lV>w@BBfTc`V%?k?RExh%ZFVHX42lUJI z%k?YutM%*k*XTFsH|jU(Z`R+czg^#>zeB%G|DgU+{cimp{eJz^`e*ge>yPP=>rd$4 z)4#9(O#g-cKl-or-{^lZ5JQY%v|+x%V_0bL8rls@4a*G64Hp~M7%nkfXV`4$F>Enx zHEcKRFx+i;)UeyI$MA&VNyAfyXAI97P8f-CjIqYpWb_&R#-MSjvCFu^c%|_sy(`Zw=DbrM8a+vB(vrLVqxhAK{YicvKn>tLZOw4qVX|3r}(`BX&rcI`s zO}CnEH+7rtG3_!vWO~^2xM{CxpJ~78fawj>JEnI{CruxlJ~e%A`qK2hnV7|9sabAT znbqcav(`MqoM)~yPcct5Pcu(9JIpi8GtCX=MsvHl!|XQ)%}dP7%qz^R%^~v|^Cjj@ z<_FCC%&(i@H~(ZYSu!m}mdTb2ELE0imgyFUWrby(WxeG}%Qcn_mW`H8maUeZmU}Jt zTXtC4}+%;}WMNPEDMaI6cvkI3sapVngDB#D$68 z#P-C+iNVAriCu{+64xbeOuRSosl;~^PbW!}vXaIp6(^M@l_yP3s!W=fv^a?+U6*uk z()~%hk{(KWIO)-(_mjRz`YP#E(zi)xtk_DeQPv{sBx{Ye)>>z+x30HtwC=FpYkkIg z$ojMO_v8`D{^SdjL&+B>Uy{5#`RU~6l3z@IDfxrsQ^`Lk|CW3vg``BKC{p55;#0IK zh7?nZJtZThFlBnmyp-0Ig(+<*9Vvm7l_{%JSjt5yYf>&r*^=^P%7-bZZ8BS|O=Z*A z5^Or#C|iN;Jll9%v2BvA+*WOK*y?Q!wnp0mTbs>iTWnim>$0u1t+rii+i2TlyV-WD zt;cqUZM$uUZI^AI?Md5y+tapJZAWdd+1|7rx1F$kV*Aqewe4HmcXn)#woB|XyV9<< zC)joNWcx^azI~j1g1y*YZa?2X#Xi;Uv@fuC*{`y1w?Acn*8aTxfc=pD6ZZ7UqQ(sO!oO(3% zwKRE}J#ARph_umZ8EN@xMQP*HCZ?UA=1*Ii)}6K^?Ul4+X}=B=4HFNO4wDbF3`-d{ VJRH~}xTFaGiKN1Jzt_M}O(FKtRwTF|z1Ul4_swpwMA&;kXlX?oiR(xxOSP-=A|hziOs zZiuu+7I#E(K?Fnv5jQ}@U2sK2+;`=7Zf?^B`M%Hp^Zem?ntNwCb7sz&_q=oF*0%V( z!BA%A5rh#z6p2s_64S%<$du$cTp;N6H&03S*UscTq2SbHcfix=h2lxcA%9C8!i&~F zqQwp*K~khcdSpPUXb2jLE(3NN+a-m765>=teXbQRt z)u1}$Lrtg|`B4iBqIPr*x(;2BZb7%ArDz$t7p+H~s0($Y4d_1f0D2HThPI&{=vlNA z?L+&~%jk7<7#%@xq4&^n^aVPNen3B>pRfWeu?nkkEY@Hxj>9^v#|CW1cI?1OcrYG< zGjJ{*fiK3F;BtH^z6?*mSKj-SL&;ivI4cn5wKzl8VU*YFYi7JdhRfIq}1@aOmod>Vg) zzsEo0U+}N^Z-Pk-5tBHgBYI*WMv_FFB$*5*DP$-aMlwl0xrmG=rKF6ECF96=;v!Q? zHK`#Dq>*^ZY!VrknhP4+xy_{Y_$I!8K z934+5&@1Ug>Y|fqC9R^9shieP53QpIg-b8PvtLSQa8(l-! z(@xq&H`4p*Gjs=imhPm_(dX%l^d-8F?xzPUlbc(8zQag{F&{9_PxK#kB>i z;kU>4s**iEcQDw6R7lMTqg_aYv`oZaX3iQ-a&bvPZeD&_c6xSZL4JB}W@d4ENp^Wj zdO?0xetAiGR%vloc8x|~QCc?HAD9(vaeKH@zo)f{YYs&RHlhTSvI&`x8Cj4O*^nK@ zvlu335+-FbCTEIG$bk~kAke^qlF?wMWGWU5x=5IXjby1;@zTA`b^f{K0e2HuqZtGR z;{$bEfUD~rb&|Vww7)qN@cVqQxoR|*^jB#>WldpreoZRi%1cWGMLW_G+p}_ta?=tE3ko_q z4n^#miLyJ91=dP^2<4(Yl#dFk1(PtMfuhaE!an-x{jX zr1MJ<^`QX!gyDCL6QhUW7~;I$Lvd%55Y zP(jd2kf$3{?h1kACU0{?No##Q7szOmX#f_59W@nALn)o8n%O(ibQaH2Yc$%@s!6>% zR)n~wpkSn{k*5o}Q7ubg$t)!*fJ2Qat_#(p2IgRiUC4`OvOz3~IcI>F{?4U=cYfAm z-3`s&P-`7G!8z*s<%s_$7=1PhOdsbe^@0QXo81Ah@@!NX9VUe4o-<4v3^SNHouiu9 z_Y=~AuDxoUYiw)C4L%uhmTuI+yNfUeL*W{YuD3zoVBLuIA8rA<5v6pah3E#fhz(^I zunW7$nV9?kl{Zj9x2dz-qU8LahPV5n31LgV4y;_14yC z;{QXpieRvn3r45A9NmsmHlh`1C0d16qubCLmd-NRFqX-(SoTJA2f7mthW~5PJuHV^ z3TUObMK&1-Qt*Ku_b>rD!9pbHNLy=n}oFX8I_0j}KZ3vmH(5}~;rn!84i zb%ora)?ja4Su?+^bpm=#u}_O&>y!@Xq=$%kM;wvI3SmbxipfKr1jnRNCX{NtDusop$7QOf%DEL93-Xm8I(TPs6vc8IM(6@ZW8CKpInGv|g z`LN($IC4~npD{uyThK4)SM(eD9sPm+M1P^b(OFi(E@xM;F>EXw$Hub>?8+@@FeaE{ z5&Vj=1pdmvK_@a7tAyVwHW~g-;hmL_8D)WhKkz@@M++@SLtu2b1i3nB%|U$R%X(co zvVVB5D}i7Yx{i;J`gyd&Tihp^Oi1f>WQXO^qfF>U!H>8t}KaK!^S| z&V`6pkeAaF(XbJl*0V_w(7_gL1z_vJBo`Ozh7ubptQ_Zpmk74v_@3rKa&RK@tY;}g zxwBt+O60l67+|FjR z)JbFA-sWiSb$9`a>&6U+@%1dgf()EEm~JL5A4gIh5P8vv}j%B#4!LYkpSZ9 zIjumzO82A({jC8{GzjAR@gpd11AYKMh#$faGseQ~dbVH#eiUy7AK%6nvKzp&7xDHm zPY8IMfF4ChnB;BZf+2TP3!HS$sp^TpqZ{1;H_(v4M0axoH{&vI9arr034{aO>6}hc zv>e#WS-kV& zGI|+!FBKC!Z9mH1fM3Q3@GJNrTg+}{%h+=8I{Z3*1J0Ib@F9G-x^KM7h$i4tOV}+M zEFk$&{C16or$&8V1Y^Knh_s#H_6EA}F;w_J+C)d(gWto4*$B2229QPzx5Mr`%!*+5 z-O^KpKZz8r;EVc^82lwH`APg0K83%YR@ZZ01$UboiaG>a#a1&^qp7He?J#`Uuwj)! zK%-&xTyw)PI84lfEX}Z90@d%SwZ-Rm*FnKQ4i3U9oWb7$mjF5+HB!{TUHChG^5?4( zdj5catkDdC^&4QezQr84CA;uXytseezDAQU%G(TnUJobu#DAziWN3{hrPpzI(k>uF zbQT$|$d()p0Dl<&28;VU{u=*@zvA-^weBD{4SoZh4_tW;#}K=dtr8}6mLLe_u<~8_ zEPu{`7)}U)8lmiNrXIi&3JdsiZ%$D!6C@I%L@67Hl*ovjDA+x09lMvU-#}DEjSmqG z>tvh20k^Q!DPy?$$fScsL_SQqPN z8`ymt-~>@l94HyE#mY89+=TFAt8xdtJU+t7o|_vXQxn~D1v*}%u@0>5L3o$P&y%gh z0hN*N{s2V9peNvM;m^r%bRN(oBAo|mVbxMm_WIs1KrSF@5V^>OY;z|n2mL@dEo3i( zeqYaFg`aqIf>|UdN{2`;yT6AHkpeigl0s6%9$*jmQXw*ejO@=!$S6|G9%K(OXYV3A zN3{xq>~y9%arxb3mT~v7P+_6j?-W6ao}`fjuY06T$g_hio9XlBHxB zSiE_6j@5US+Sb*V!AJP%_y|ULY@$m&iV{ zA0X;Yc9MO~eh=gLFizmNkiG;C53^eQ0R6#8_7WH>q$sRC3|#QQ2>lC|`vZW}!RbPh z)8%R8_*AT3c%9hV3{VyFHb=-xjV5!9I~W@6Z))*zAh3^T3*AZ}BGg4XLRt^v762V= zsAwz^a-@KFX5m07C=spYb%-v(A##Mrgv0DmCwYq<<|p)TgOrfMBkvH%8Ehc$;(N*a z*EUUwkZ{N-O=-_6%;q_GRMsGxa$Z@f zbVy{HU$8Ixrg>cU=!rc&ie=~Y${0qoAUj1f*;k!3o1GF4`TTiE;JW=dsNjLLfQ~|O zn`t2}qQmJ$bOgPaUP4E*)9f2|hJDMvW8bqM*pHiOF`U&0(^6VS%ju=SI(~xfJd*v) zeqq0|-{9FfHRKL7a3NRe71iEgna|rG+$n&(vzFuvm*ngP4b3(0!^bF^4v%3 zX#;JfUOJPV4P$W_%fnb5#=2gvLYwGpUh8J+r!8TO!WeQ4q?-n4kcPsThOsD&Vq840Cm!7ZxGP<0u2xCPUE5lgD_tyvl zCJsN361UU4&nILpy@##~`435?u^Ow*o;>(MNCEWR&C28orAiIgaXm{a+}1(Hvp582VAqff`YssL(&ZV$GC_yQjouIkGmGfr;xCFzGLeQdIf%>7i7MHZeF41Z zOQmdGRHacqYy;k|Hf!MLSVC z%0>mK3|#@=PfSC#@U6sb6hy7)I!lfcPJcKqo+X zo*@r}zX6cMH*$sA_)G8q(UMQjMOq%ByI>dYrh9mw=QA{sgqmn=^5L4>E`h#^JR5)`egG`-UEqkvfF&MbDd%x9`W8J}86nIOFSDQ| z_+lpyh8#)4CBI0G(&5qy z=`?Ahbe6P9+9C}|L()akRnj%mJEV6@?~&ds-6GvC-67p6-6efN`jT|N^nmmg>08nh z(v#9t($ms2(x0WjN`IIBDg9d(BU8z&vUr(8mLyA-rO0w*xw1T2fviwAUN&7;BXi5@ zWc9K}S*vWGY`&~RcAYFNTPj;2TP0f~yF+%DY?JJM*@Lo2WLst1WV>a1WiQJ1%MQp6 z%1+2*Kay`GxXy`7n8wJV%}3P_am{OtDagmV>NC~Xs&7=^s=inKruswmm+GtKW>KwO2h$-K3tc zzFECQeXDwzdWCwG`Zo3L>W%8n>ig9XsvlNAs(wuUxO%&KuljZMSL(lGt+9o%rLkAX zHpR|~ofkVl_L|shV{eSTId)0xt+C5uSHwOTdpP#EMy83=*foPS!!=_y(=~q063wle zWttV5Rhrv0`!sK8-qF0L`9SlL=D6k)&9|CAv{*~EFxjEP?xDEX z;(pPIbV{9BXVuwt3A$8Wx-MIHk?s=RC|!wes;*w=*Ui=ib*;L&I;Oi`w@|l8cav_h zZk6sH-Dcfx-K)Bzx?{R`b?@sw)P12lsXL`RtvjRpP9LjJ(~s9T>SyZ%`j9@XU#MTC zzgfRTf2+Pz|FC|mew%)~{we)4`n~%7`UCod`q%XD=|9$=(0{5wsXwJZtv{px)qo9Z zgU(_f1P#|1!iEKg8w@uZRvYd# z+-rP~ly53D4L4nCsxVz)8f%(tsx#G_8cj1z3rshdZZzF&T4Gvly4`fA z>2A{o(`%-~roYT$bDBBJJlR}l4w_rdbIon$c5{dMI&;{(+`Q7f+Pubmhxsn^J?8c1 zF7wmoqvlV{zgyBRBQ4dI2Fpx~&*HbtwgfF}En6&)Ssu4+w>)Ke#p; zS1s>a-nV>c`Pe$hnqkefW?OTu9&3v=U=3O4Sf97PZarpw*ZRKoL+i)Zlh#w#)7CTA z@2o#q|Fp?$8e6 z+alXdw#BwvY)fso+t%B**tXkt+4k7>+FrEnv%O(EWIJLzYCC3o*Y=6+wC#7>U$(P$ zVi(!PcD+5pexZGY{Sx~qdx^c&UT(k4ez|>&eTKcp?zVgEoV~&Bwa>CQ+5Pr5`$GFY z_Q&ln+ds7b93LB>9M8r3;)C%W@r&bE#IK6KE&lfSb@A)tyW=;;Z;pR2{^x|)1apEj zVQ|8bgbNcg60#C<5=JFlns9l-*n|lQlM|{FW+YslP@AwM;pv3W623|JDdDU`>Cich z4vWL?a5_>PLmg?33`c>Z$T89}#^G{QIi@Dr`l(!!)0lNKl4nsisv zJxTW_btT=Gv?*yz(gR6vB>m)cI4hhJoz+f{v)<`<&T+Oo*E!caw>x(^pLf3Ce98H` j^O*Bp=ljkNogX_-IDd5h<~-ZO%82kw-yT59P%{2M+TPq) delta 3306 zcmZ8i30PIt7GCSj(>><^f{>b`fC>&c<_w6#b0P(CPQ1d+ZX(yf*CEH4 z6wxy0G%bCmWtq>M%I9ZR8ks|uS)W-BZv&z7?)lE$=iB?=Yp=Ebf3J0N=(3o_!2&08 z(vq;ooV|QWVz{p#^oIeE1kb}j7zD|X0)t@$jD#`p61d@I7!R4?fypohrojxD4R634 zcnem+YFGnnVI8c864(G`uo&zb#2_Em!)LKRHoypMg3YiwcEnED8M|Ot?1O!=ANI!qI1q>6P#lJ%F&)QaCVFua z=AjQ~;R1XU7vc(BiEm*6ZpQa;C%%vS@i=~gC-6Ub62HV#coxs&MZAnx@CW=8@8Mtg zH{Qnw_z?9+9B{~S9M1{_fFFl)@;AIM(cGg2Q5A z6r>fw3ox4MQbUTU20I}G0*hcQq*Fb5wg_DCBGsn`ESkIc`zRqz?-lT7Ev_CP%~;yEvV&2SOSsYXYX=YL9vX? zw(MT`BGf^IyQp8kBW|Q%sFrDkz&6UrE^+@Kq`5 z9GtHKO@Ip&LftB$^9TL|twLUc?`t40Go$epM$>GYE_!pgFc_IJ7RrhBTPW>V1(IRmDbS(y?g;Aex5w zVx%Jw8XHXe?!ri#a$isB1KK!^8@B9L8e; zcBdC;G^Np)5*B$P_JRl&Z*6k2h$H>CgQoj130fCCabystRD_pI>4lKUfED*4(UX{^ujw7o@gQMuhe?)_6tW@9_bkaC-KNbvT;JBx`WdXU#H;i7Y zkioQS#Z<}wC*Z^y&{)i7QNLV?tRWc8#mO~vj8k#?W0zi~3Dqu9g-iK3ld|ZQCoa9- zALrCKXfDnp4^5=-;Y@8+m9kO1d(6`s#YMQZ#vVT|qio7y1 z&7=9WfZn8qv}hCl!mf5C{)Tt(cl?7zu$Xz?hL+G$^3yW*9lq03*F+x+BPpeyE6bA~%lP#C^@(w&#X(|-Uch1^;0CdbQ(KDnpdTOKT@%0uK~vPYgS`{aCimONXYBQKX%$SdVl z@lE0J7<*V{F`G)+vf{LUlil$gffD)tx zE6*x1O03daX{&TpIxAh3I3-z0Q?eDWlB-NnrYh4F-wcJ6naV6>rLsy{qpVZjRtlA3 zWrI?xlqp-3kCd;Ka^=1%tM$})b+DSIW~v_b71gWes#DYg^<8zFx| z+n|+dW!esHm$paSt9_sy(2i;+wF}yB+9O@jHQmrn-PXhOI(j|5z86lX?r=HAImj{B zvDmTJanNzxal&!ZamsPVano_j=lIp}o8x!K0~1Wn6ikQtoY}>E(e#+h&DG{1^MrZ9 zyl7rBzcVkJKbSw7cg#P`yXHOfZ}Wlq$U>{G)xzp$4YNGfY-^FV*jj3>vDRA!R+06d zwawaY?X(VAA6rMQW7g-^7uE&q2kW-Y*@7+Eimlm(J>0ZyJJ4=qN7{|;rgn_o+-_;N zvfJ40>^Qrxoo-LH7uhBD0sEYNJs>8abwI~}#DLU*5dl?g064C)9RR0Rjn)4FWB&&e CpOl6G diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index cd4bc639dab396064d9d9ec385ec6c4d91a44842..a6c332841db8e579024ab9296ac1a90abc3ed676 100644 GIT binary patch delta 7448 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 delta 6979 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 Date: Tue, 19 Jul 2016 12:23:10 +0800 Subject: [PATCH 035/178] update README.md --- README.md | 156 +++++++++++++++++++++++++++++------------------------- 1 file changed, 85 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index da2218e2..b541aa91 100644 --- a/README.md +++ b/README.md @@ -3,99 +3,113 @@ [![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/chenliming777/LFLiveKit/master/LICENSE)  [![CocoaPods](http://img.shields.io/cocoapods/v/LFLiveKit.svg?style=flat)](http://cocoapods.org/?q=LFLiveKit)  [![Support](https://img.shields.io/badge/support-ios8%2B-orange.svg)](https://www.apple.com/nl/ios/)  - ![platform](https://img.shields.io/badge/platform-ios-ff69b4.svg)  -LFLiveKit +## LFLiveKit - LFLiveKit IOS mobile phone push code,Default format support RTMP,At the same time, the structure is very easy to extend. +**LFLiveKit is a opensource RTMP streaming SDK for iOS.** + +## Features + +- [x] Background recording +- [x] Support horizontal vertical recording +- [x] Support Beauty Face With GPUImage +- [x] Support H264+AAC Hardware Encoding +- [x] Drop frames on bad network +- [x] Dynamic switching rate +- [x] Audio configuration +- [x] Video configuration +- [x] RTMP Transport +- [x] Switch camera position +- [x] Audio Mute +- [x] Support Send Buffer +- [x] Swift Support +- [ ] ~~FLV package and send~~ + + +## Installation + +#### CocoaPods + # To integrate LFLiveKit into your Xcode project using CocoaPods, specify it in your Podfile: -Podfile - To integrate LFLiveKit into your Xcode project using CocoaPods, specify it in your Podfile: - source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' pod 'LFLiveKit' - Then, run the following command: + # Then, run the following command: $ pod install -Functional - - Background recording - Support horizontal vertical recording - GPUImage Beauty - H264 Hard coding - AAC Hard coding - Weak network lost frame - Dynamic switching rate - Audio configuration - Video configuration - RTMP Transport - Switch camera - Audio Mute - Support Send Buffer - FLV package and send - - -Architecture +## Architecture: capture: LFAudioCapture and LFVideoCapture encode: LFHardwareAudioEncoder and LFHardwareVideoEncoder publish: LFStreamRtmpSocket -Usage - - - (LFLiveSession*)session{ - if(!_session){ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; - _session.preView = self; - _session.delegate = self; - } - return _session; - } - - - (LFLiveSession*)session{ - if(!_session){ - LFLiveAudioConfiguration *audioConfiguration = [LFLiveAudioConfiguration new]; - audioConfiguration.numberOfChannels = 2; - audioConfiguration.audioBitrate = LFLiveAudioBitRate_128Kbps; - audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; - - LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(1280, 720); - videoConfiguration.videoBitRate = 800*1024; - videoConfiguration.videoMaxBitRate = 1000*1024; - videoConfiguration.videoMinBitRate = 500*1024; - videoConfiguration.videoFrameRate = 15; - videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.landscape = YES; - videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; - - _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - _session.running = YES; - _session.preView = self; - } - return _session; - } +## Usage: +#### Objective-C +``` +- (LFLiveSession*)session { + if (!_session) { + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; + _session.preView = self; + _session.delegate = self; + } + return _session; +} +- (void)startLive { LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new]; streamInfo.url = @"your server rtmp url"; [self.session startLive:streamInfo]; - [self.session stopLive]; - - CallBack: - - (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state; - - (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; - - (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode; - - License - - LFLiveKit is released under the MIT license. See LICENSE for details. - +} +- (void)stopLive { + [self.session stopLive]; +} +//MARK: - CallBack: +- (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state; +- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; +- (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode; + +``` +#### Swift + +``` +// import LFLiveKit in [ProjectName]-Bridging-Header.h +import + +//MARK: - Getters and Setters +lazy var session: LFLiveSession = { + let audioConfiguration = LFLiveAudioConfiguration.defaultConfiguration() + let videoConfiguration = LFLiveVideoConfiguration.defaultConfigurationForQuality(LFLiveVideoQuality.Low3, landscape: false) + let session = LFLiveSession(audioConfiguration: audioConfiguration, videoConfiguration: videoConfiguration) + + session?.delegate = self + session?.preView = self.view + return session! +}() + +//MARK: - Event +func startLive() -> Void { + let stream = LFLiveStreamInfo() + stream.url = "your server rtmp url"; + session.startLive(stream) +} + +func stopLive() -> Void { + session.stopLive() +} + +//MARK: - Callback +func liveSession(session: LFLiveSession?, debugInfo: LFLiveDebug?) +func liveSession(session: LFLiveSession?, errorCode: LFLiveSocketErrorCode) +func liveSession(session: LFLiveSession?, liveStateDidChange state: LFLiveState) +``` + +## License + **LFLiveKit is released under the MIT license. See LICENSE for details.** From b910e120ff49ac80e1ddb55e9778469350da77f8 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 12:33:38 +0800 Subject: [PATCH 036/178] update demo --- LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift index 834142f3..75aad934 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift @@ -118,8 +118,7 @@ class ViewController: UIViewController, LFLiveSessionDelegate { if (startLiveButton.selected) { startLiveButton.setTitle("结束直播", forState: UIControlState.Normal) let stream = LFLiveStreamInfo() - // stream.url = "rtmp://30.96.179.95:1935/live/1234"; - stream.url = "rtmp://dlrtmpup.cdn.zhanqi.tv/zqlive/60156_LxdsN?k=1ca07961706095f6feb9df1667d838ed&t=5763b617"; + stream.url = "rtmp://30.96.179.95:1935/live/1234" session.startLive(stream) } else { startLiveButton.setTitle("开始直播", forState: UIControlState.Normal) From f2f25ea19d79c9be0cec5299b40907452f593800 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 12:45:38 +0800 Subject: [PATCH 037/178] add miss file --- LFLiveKit.xcodeproj/project.pbxproj | 56 +++++++++--------- .../UserInterfaceState.xcuserstate | Bin 12124 -> 13250 bytes .../UserInterfaceState.xcuserstate | Bin 11215 -> 10662 bytes .../UserInterfaceState.xcuserstate | Bin 14678 -> 15246 bytes 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 513e3713..6be1f26f 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -47,13 +47,13 @@ 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; - B289F1CD1D3DE06C00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1C61D3DE06C00D9C7A5 /* LFStreamingBuffer.h */; }; - B289F1CE1D3DE06C00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1C71D3DE06C00D9C7A5 /* LFStreamingBuffer.m */; }; - B289F1CF1D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1C81D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h */; }; - B289F1D01D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1C91D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m */; }; - B289F1D11D3DE06C00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1CA1D3DE06C00D9C7A5 /* LFStreamSocket.h */; }; - B289F1D21D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1CB1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h */; }; - B289F1D31D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1CC1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m */; }; + B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; + B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; + B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; + B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */; }; + B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; + B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; + B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; /* End PBXBuildFile section */ @@ -111,13 +111,13 @@ 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; - B289F1C61D3DE06C00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamingBuffer.h; sourceTree = ""; }; - B289F1C71D3DE06C00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamingBuffer.m; sourceTree = ""; }; - B289F1C81D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamRtmpSocket.h; sourceTree = ""; }; - B289F1C91D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamRtmpSocket.m; sourceTree = ""; }; - B289F1CA1D3DE06C00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamSocket.h; sourceTree = ""; }; - B289F1CB1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+LFAdd.h"; sourceTree = ""; }; - B289F1CC1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+LFAdd.m"; sourceTree = ""; }; + B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; + B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; + B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; + B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamRtmpSocket.m; path = LFLiveKit/publish/LFStreamRtmpSocket.m; sourceTree = SOURCE_ROOT; }; + B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; + B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; + B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -277,13 +277,13 @@ 84001FC91D0016380026C63F /* publish */ = { isa = PBXGroup; children = ( - B289F1C61D3DE06C00D9C7A5 /* LFStreamingBuffer.h */, - B289F1C71D3DE06C00D9C7A5 /* LFStreamingBuffer.m */, - B289F1C81D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h */, - B289F1C91D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m */, - B289F1CA1D3DE06C00D9C7A5 /* LFStreamSocket.h */, - B289F1CB1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h */, - B289F1CC1D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m */, + B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, + B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, + B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, + B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */, + B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */, + B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */, + B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */, ); name = publish; path = upload; @@ -306,24 +306,24 @@ buildActionMask = 2147483647; files = ( 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, + B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, + B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, 84001FE71D0016380026C63F /* LFFrame.h in Headers */, 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, + B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, - B289F1D21D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, - B289F1D11D3DE06C00D9C7A5 /* LFStreamSocket.h in Headers */, - B289F1CF1D3DE06C00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, - B289F1CD1D3DE06C00D9C7A5 /* LFStreamingBuffer.h in Headers */, 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, ); @@ -498,16 +498,16 @@ 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - B289F1CE1D3DE06C00D9C7A5 /* LFStreamingBuffer.m in Sources */, + B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, + B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, + B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, - B289F1D01D3DE06C00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, - B289F1D31D3DE06C00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index 78f9d3b8d7869c42e9d5c811928ce383559535c7..d1ebb72a2763b6a2b40dca3dcaa0c832edbe30e2 100644 GIT binary patch delta 8165 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 QLe>9F|LXtRU;pF(18$&>0ssI2 delta 6904 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 diff --git a/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index dd5df0923a79b8811d5c9a2310c8004ccd5c24bf..4001b4c6bf555e24d21d4723ceac5af7ccc423c3 100644 GIT binary patch delta 5443 zcmZu!2YeL8_n&fg_xkOXy+ZC%L8&1Lkshic5K4eh0;va_q(E{3Lx}eR2#82qx`+uu znut_83JB5>6p^Vo=O*p0n71~!Aw5Aa|3A$~*<(GV@s5j`;wGZ9Gx5=~-AL(-hIAh9Ho zJV)A*&ZG-TCVfdil17G-UbF!NpCCA8D`=B#$Vfm=a2< zjLNBkDyfR9DMtlrp;l_6VYE>f`V4)RHl|HzQ`(F^M_bc2v@PvMyVK`sGEJlX=>R&I z4x-&IH9IH#VTugd0flJp5{_N z*)n-Lh>*SIw#-Z9?V$t2NPUzZA=6+?^X2<;1HQb}>~a2)*@2>BNmNFpe~r|LLp+*; zmZIpjXfB$EBs3o_Knu|#v=}XcCeRd`L33yUvCtCYAbu^1Ld(z_XgMpZP&ND3KmxRa zL}<;*Hqe%R+esPRj-V>jU@I?g-q_P3Ha@YUv8OyXF0QesReZ~eimz&oZbF-@;JL3* z9EwL<(YB1#v|gow?3{dGnlDhpTHZs615(pirB3~W$Lb-xAEVqVh^}k@^ojPJwf~t0 z_n=&9fHI=h9&`vruR>p-y=WiWj}D-N&=HcL6Lf|y&~+6$jE&I<&~_eNNJxkHCXSbGw3^Hszzs_do?--&qG9}L7&{E>%i>%QeR0@N&jM> zuU_>cx`d*u(GQSZjedk45Hq-Ex1RoSz7&6;Ugc+W1x2qwzo1_s1$u^luCbq95Yy-X z>9%B3zK!mq=o+ST7u{o8sn9!AVK1wM-k5EAeXs|9M_!W9qV?Ff$M_|H2NN^8&SJxW-yN4Y+{2^h78Dr=z26waSLQxfkvQ_ z5C)zVI2N~rAuv?B$Vb}}ahs=PZE-so2E(N=jn~!*cYR9MjrGf7{n9n=j1)Y8ksbHM zy>Ke-jr-ufxF1f#{UHZ(ArE{o0!G3p@WTsh@j#r8B2hQg4G+Z`co?I}Xqd!8%)#DS zPy;I&VPb~lXO|U~212VZozyIh%rqF%Miq_k;>#%=Inr00RP4(>j$go|aX#X40WQQv zc#Nd7rZjj75adJU30#azm?(ft@i-){ zGM*wO8u}|IKoL|xp(Ghvx1Nq-SK?Rj4E!pd31c7t7!j=Nx)i^TB`Ae)P*Tq> zgQ|YqD&`vrUS$3#d4jc%jXoj#8n0z2*5SADdR#a(uPC>)fI%71ujk-^zra@#$SxQI z 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 delta 6176 zcmaKP2Y3_5^Y+fJEa}vHI~5~gn*=bu7Xtwknkl9lh+}LS3tYgK0b?AkfI#Tw=-mYj zp@bF^dND2Z&|3&4jnLBwB!vIU#)N!7o=^8Yy1Sj3-PxIW-9zdJJBw*8y!JM(O2j+I)~1q3+NiUg?>a2(68t> z^gGBw0ZLGT8Z@8<9q7RTMzDY#T;PTXs0PtcADTl8XbG{<9^Qv;&>aRt8u(xc425*a zfK12=z%UpABcT93f=^%)Ook~i0}7!CilGEn!YU|*)vyLWhi&i$d06)S5cnH71AMh0ZgnuyLFf7J8tj7jy#3t;<9$Xbi;7I%qu7zvk zhPW9HyocN3cDM_U!(DMa?uQd_A|8y>un!N%**FL18BP&QDDI%-Lr(_4&Np_LlWDhw&4w1v;2suhl2#L5Qd?hTy z6CkEIf`HtbpI^60gBsyA>o*i?ik5`+qgI-{<&>xjmbRzw)2KvExbUsi?1=Yg=O+7e zv%QHLZM-+#o9y?d#3haJ4NmfBWeeA()f&x2^HJm~Gz-l}0-A&7qIt9?ji$9|ZCZ!c zU4<5)g(!kuOVCnUkG7yO>}o|@3(YvIu#k%ra=EI)UWr!lavJkF#331yqg7}%(iNgo zTE7sjp$&w8ID23{`V2)Dq7AfRA=*eA(Wri%V>|mscsu$0m1bMf7bvm_eU7%##0r~z2PHXts(ORhg@P`WqX>n~;_JZju4E}p$qs5@S%hfKp!@(LPR zG46R|JhJ@x)sEnu_E0?(lLTrngc>w~MpanULdnHY8|pw^+Mj+vlW1h6MFVJzbVVo? z4W=#{UIa~`DIGuu3e)A0<``)6AK81*mL}2mE zRTPV2VGtxk3V2zBGZ;>7>{>!MS?OlFGlW!4d|KAXw%$Rxg9m%FLyHMx6!Y8(=}CE6 zx&EHnUT@{%!y$)72C`{pA^2&QuuNOG#V8mZ8q1@@3L&2kr%^q-B>6HcEdnqO>573u z5XRDMnnPKR#xsW|&|K!kB0;H32~0(G3t<`^K~|d^&~}l)^$-1dCw_dIZa0IsJ$R=tMe?#?tw80gW0E>r3~xP4Xx8%p2zI-!8?+ z$R^&O%9?+1{LhH(!$(o28rulB2T*4Pg|>Sf^%k&77><>}2n` z+7+AypTcKIR|0Ec9ju29l+qv_OUISKM%ctMxrL6WAG7>TpdP_*DR@`03&!>ffuv6T zMhy!3<~OL*I0Tprup9QUQr`>vU_TsyGB_x3s-BYBbP}CQKM_(?P1_wsbxYtYI0nbz z1f5K$(HV3mi#?o%GmJVP!C5$$@b5l)b;wNdj$(nGLZ@n=0(TeTlEAB7qzEnxR<$R+ z!g4=cgLAYwoz4`cmD6ow$v#J$uw+ktH3WCchh~L_-k??ZiMf3jeujH+zkkZBn6udR z^ZPQqIsT-KVN{@VC=!y)orQ-gF?j@!g>a3DIq^hrYMkU(_)Un>)Fi*7#_V3bN}|Tu z%9qI)I5jER8(u+bZ*W?*cZ3YnyYIs@w(N7b4}ZhYed6My2PNfr`?GttH=Py52ror+ zAr&gN{SqTaEzGAPc!?U9vjWDfcrl@ig+;pX_pt;kP-F>~Vh+o&oGzuy=yJNE1S_!$ z&SDKMq@^s5YiLy8&fZjiZ=ZK$zaGB9Y2{A|oy+moB`d`%JkVKcz5)X_V|!>$3$|h# z=4lZvrX_S`2|E#Eu?tmYHDRNxg!cNNB?{GD@ft+V?WNtBaj@Ag!?!Tj}{s#J2?-reD0!0 zFXAz{fQdfB0Zf^ABpwIn@pxgmvRmK~JwkWCfg?NtPYmG*#nOXxPY6ZSR*`!~TqSrK zo{neWnRGARNB7eM{|}HVa8n6}HxN=e^gs9*EXT{s0aEt=0Z0WD{<90bn(bp8>I3&t zA9|Q=^9V&1ZmtiNXdc_Ps=SQxCcHUO6D7ojS%t?MHO5;6(AE**&+#@PNgGLu@E1a& zwpJUw9q(r>jCbIjco*J{_u##FA3a8o(-ZV0Jw;E`Go`31F2e`$A$%Ag!AIHA@-@9n z@6+c&a0J0AEHWNYpT*}x6>yH8EyNe-Ibo=&Ud$ED8kiD%6_(@c_#1kjQT9c8xdeZU zZ{l0{HoZ!3(A)F})~5UmPyAy!6fY!dS_)50wS@W>jqVNU{c`CgVV}A7o5N4ahp#Zw z=u|tcvM7JU&)D++!?gH0{tHFm7xWsv&QSG@aLQ_F*t?<;d1Xonk-p88a72b8h=P7g zZ!*(cLIZ0=HKHTtw<=qRl_~S|4*iZPe=m%+R_#fukjS?xN0DmfPW?!K3OPliJgs-P zxW#R}z5f;c*R5Aj>0K>ShjomkHvPGf)TQ@?7uG7Vq!DR_bgM~Y(u6c6%}8_7g0v(t z^Z|WHAJND33H^osN`G5TTC-jug0v;=NGxg3c;$DN&KUX!eMVsfBF~wo4zO}1IY&@k^U0|J_vSUIiJsUj{)O1X&PNLD0X3 zJINr!Lvv-4EHW$zCeE1W6F2LDot} zd0Lg@9-;2xz1rmZ(o-sHbQjFxJgsj}M#*u*oLC}>0jg*qr17EkNp>Cv@4Xr_qd&k9x z-YWfDOE$9)AQp-BWCIySHj+){@h}9z$U+hXQxMFnNH&}$pObCubUw?%L#G765(FDN zO{RoeI5(rg)}hA2=ND#%3(&qFIPVC3;uXPLw1XBFYeDiH3_ti#`@j7tIqb7L|xLi4KSkiVlm8ijIj+h)#*lh|Y@c zh`ty7D7q`UCwd@yBzh7M{VMuB48jayHNysm4GUWywmEEH*u}6*VOPR_2)i40FYIC1 z|wE1oZ2 zB3>q5AubZH6>k-niI0iTiSLRZi(g1Y60t-okx8@?y~HR9m?c(8b4fSJFiC-AvSg}c zx@4wgwq%ZEo}^f^Qc@~eBUvk1FZoQeNpe*3RBDnom3EN!m!?UFN;9Oxq}fuxbb?fn z&XX>XE|xBpE|;#6Zj&gw_61gNUg-hkqxLj@&H<~Np0$h-r&duTk zZXUOQTf~)epK|NC&$vz87H%I`#vS60a>uw6+-+HyOec$wMakZgRhQM2)soeb)sr=l zHIj9db(Y1+y2*OTddhms`pObyfdR4)WO=erWJ_clWqW0pWcTC}xm{jQ-dx^79wUEW z-b+3}K1e=Po-WUnkCcy+kCu;mP$~~Rn1qeQms~fs#>So zpxUU~tlFyDrYcjNR{gB{M{QF#R<~7usLoK2P>)iNR*zACq@Jjrq@JRlrk7p5+$GOw-KJ%+d&&xtb%IGXc#N%{9$8nr}6?Go3AapFUL| z$kGqj=je0wBlT22RzF@pLH~(}9#u~;3#x}N@7&MMEer%j*oMT*QTx?uwEHaiDR~c6uHyd{vj~Y)JPaD5BUNl}dUNv4f zJ~TcxNlgw@BU2AkPg8GGUsHl9$27(?&NRcc*|f*B&vd|a&~(^z%@p{?^sVWZ>5l1p z(?io!(=*dwrWdA{W-zPF8ne!9Fjp~q%n{}&bA59|b7ON;b9-|Kb0>2bb02exIn|tI z9%3G6{@6UxJjp!8JjXoWywJSZTw*?DK4*Sm5nF0l>R9?%QY<-^T+2vHo+aN>UmN}MrmIVRJBFj?C3QLh?yXB(gj^(+vrZvWzU>$57VokSZS%+J5tV^tGtedS{ zt=p_$T6b8>tcR>etY2A=TTfcATCZDgSZ~^@*rIKcEfhlcGq^#_Q3YY_Qdw9?QfprHN1n5c9CID>9m^am9L0`Rj@6E9 zjz64gr^V@UMmVcEt2?8eb)5B_t(@(h9i3gA-JE@#3C@Ae51oUYQ=HqK-#Z^Ve|Nrg zDO`G&$z^rfT^?7Y>m661hAZ0D$koIZTlcPQZC$OSwrZ`mb^mXIX#Mql|9l`kx#!$-?m72+#&b@W%^Ei+mi$To z3jCt7(M{1Xd2YJd-wtJ=&Zr0KgZiR@Xb{Rn`Dhp#jw;X?G!~6RFoOk>zzJTc2aTW^G>2A@0hy2m zouLo(g?`W<2Eahbg#s7`MNkIiPyuhiG?)%E;7ynbvtTyNfw?db0`L~hhxcF^R6-T3 zg%99E_z3<3+h99<3}3)r@b7~!;TRl;6L1oKgmZ8neuAs;H{65!@BkjdBMg}0FdU8} za3qew8XSl9I02im87E;ocHtJdC2ob&aBG~7GjJQ+7I(yXI3Ewe1$ZbPhKJ)qJOYoz zMYtH3;0ine3;1RH3Vs#8hG+WmEW8LW#!K+Kcq!h9H{s3reY^#4#UJ30@eaHj@4@@= z0eldj#Ha9Sd=_8CSMd#e6W_)6h>XZd6j6|9q9iI3L+TJMF%UCxkYrMq)FTZ^Gt!*2 zB&|tj(uH&--AH$mO?r@?q(8|eg=7Trk0j-!f{Y=P$rSQBnM&Ru)5v>d8L1>yq?#-z zE67T+imWD^$;adivX>ktC&?-DE%|}`NY0T<fmK7LICPj{7c)eOvB<=pfuDPrK1eghUu7%B{L6e$gC$&d%mp$>WDg_%-)@| zJ$bq11^xN|vVx-Aio&r43^5f`2AWH=GmfJ!s4MD*y7#l>7v+|hm*f@~^r?9)DDT-h zyJz>zDo)Ps(>c3K-iU(yihm049THS0Fj|rlSS-`2i~mU+5F)B`6x{+XrD=g=uR`@t za&Cwm_jIoz=J}C_hA7$`MTm)dKgu4^Is5rq zt+NI6`hQh46}`a~O=n5W&J{VhB5_nwGMah#0K>n zyNoH5Ymd4G{pY{x-iEewVLMnO)|d-x!iC+AvRKh>^f|IsqCKoxCHjJ;z6g`ALq2cL zZ=-WYt^9-N1hTC}htOek1RX`k&~es+wPdYW8f(qcSE7^X6grK*L1)mnEQ7US-B~uv zWqHh+qp$_M;qd`qgfuW9e0snW?h9NFcl&DvUqqLXZP~Km32G328C?w??FwsKiLSAB zK?%_ry?SJiDk`k#Rah{tLq$Px`SDON{Dy8-p&RHXYtK5fZnXk#qq|61h5kTySO?az z3jK-xVx3qf%NoeVbQn@lQc*axFi>u)6CfgQuOQ<6=y6pL1WzRZ0`gA@Kp~8EVO?2P zS97b^+oRx52vs0~$U)CAl~z`kJE5AdNl|v-4UwZML_sWf8Ymzdl%RqbsKa`&o~#$^ z&HAvuD?tq!h=X|0f{yiL1K2<|h~==s{F1JVzVd?=Y|B{x8clX^aELxdZ+1aNHP|5; zW%HoqUuw_o0{08P1RtclxKJM&ytvR9n$#@x3PQ_Qizi40dy5)E$kmVr>6Or$<+GBL z&<5H}nZt@%Nv#2SkYB5m-wQ}#XjRagH7*zqg@HAZ#)xVd0VBDK*F>f& zp%_Y$vJy(z=t>yH%6KNVD=Zzxz!aoh4P#*(jE4#E5=?|iFqu`bF>EXw$Hub>>?JmF zHTaPMjfR)u6?he1Lk2d9NqLk^W>c7-G5(yjb-p435*NUtpgjxWZFq;h%wA!yR>NXg z0`IcdST$SD?b#V!oL-G?t$^jQ0#?E*Sj}E%Gud1=pDlWZOjrk-f^ycw2H41^vNzbY zYS;|#!xlE3&0ueGImOB~{dd4;|Ki#OyI~KT#b&cP%xZ2Gf*?ZOj6GYADJ&XN>%Onx z;J1ckn%&WeeCs_BNN_@>Y$4d}Op@WIPTR_-$W= zOIr`AO7MtxYOdpFxIFL~A~SL;a;xEIxPr2K@l49U)t>1Z+zQ6Pdbke1!bZ3OH@W4D z*%CI5y~~!ale{g5|5Cu(-gS zwlnqQqpyED%_>7@!5EVowFOleb7+*SEj>pJ7*$wQ=q@VEE2}6T6+$rbw}M^~{mY#rOcHU+QkSslXaP)=O^U#lC|g@|jP7b)fQ3WgIy z#P$E9^kG|wyph-6p8cMwgN~uq+Ka_*%)@pS_Fyme;S^jK*TePM`)mu_%06HpvX9t* zR^f)Y5pIm+*cZe!+s3xDkGY{+Lx{F+ZJ@y*Zdk8@%jm9G-xp{VSI6IuhadKFj@t0U zop3K?TZ=Ps7VeC@;I6nE?vAr@58RXOV4tv^>{Ip`+r@UXJ?wM##ai4O8E{|R5BJ9d z@Id~Yg9o#{T;V?UB|9pBM1UA36+kV3CU~E*Y31dGWwTR@h6+$}@8(l#Z#$ zQ7AfOw8*ur7C6{ThU`9hD}yv*FZf}(lxm5PDn%H zUVs{NWP2$aBaAdu$>;gpUTvd+`yz_EYd-FMr_VUWLWE!wSj+?HvgN@i+L} zXBxj_S6Eiprt68iEqRvzMFfA<+WrX;cQ-Nw95cNySOxBrf9S`aHx-d?Y1s%V}=J z9xJ{$|77LoK7 zAo6L%lL6>fH5o_-ksJYd-iZ=G`7H2B9x3=|Ad{hFm;f>XTPhRGcLKqPQs3SmZ z70=HG4kRfz{D8+2*yKrojKD2V5`Swl_(MG~nND~rSwm)!H_1#gi_9i-$Xqgy1O(tt zj~75IfKC9t00{yZ1TYGaxQ5Ip3wRFZuqBJgVzLBrf=PhpToFgE0Nf|#0#pR`_A3hI z-C(ldS@~IN%_^&aj?rgNI~0E(*k2y674U&{P1+DYAon!kKoGPswLw7uikr z;NF1;`fhRo8VFz$ppgJpwl~l#p;0HY57JkXFUeQrYqFmlAO{6V5+GRsw*X!NQUs{S z>lQgej&g~|xXmZ})wcEpWj#Cagg9ORd(du2uvUm`Fn*eR6Noh!!m7v_4(3>c(f?G! zcjS9=LI9@#F21Aps4;m(h2_H)qFN2-gBk?zgar1@Y@5knoI4d()RKR$A^ZLZ`4_ky z++CNw$Axq6W)zGqC@LLQTu_o)VeDEuq`X$n%^Jq~A;umdN~qIri*m_b)RFPqZ^&xi zJ;>kWUI2`-+?M;?7BFfec*{&4l1Blf(M=xnHKWm)`ohgn#P4PsE@S81DwiMt+^FB;+e9rjmf)>ZCN1i}G8OYg|ZWR35lsO`8;k+``(fgBqwADXXcGCQ_3CX#%ts zAibJeaBs>nkrDLiKpui^bh&xd#ZO5&1ll}nTBwgU=DiV3p>=6JTAwzc4JpS_TLIb$ z&|ZKJ0(2ChlK`2kXcO9$HY3N#G1>yP5Fkr{&H{AjI0^j@;N71!a9_8|Pdm~sNcrzq zbJ~@5L!)W709^#=8cbl_cpt!<(JM#r=NbQgIsXUZXznN_RGv| zA8aIf0xRg-y>Qs@5O*yw7t>`ybxY{GbSdQ$xpRjKz*F~dUX3`&s(Cs#2T@iS%E|eO zll*iYq%V68v5jEU2d9TK3d68GjA-Wqt4sP)qm z^yCX|5B-Mnx4lYwMu0Ju^g98@2K$%)F;JmD1`Rq#&kHb4fR~;dbctTBJzMB#SLjs% zc!Hh4vid$NAAC0Ac%dVvztLMSZ2O(w7GRAjxW6}c4!43G%L zAro?<27JuflBAM!J`nCh^7#Ap`^|1JxRZ%-}5o-xiC>!Ykydmuzq0! z!Uly64$BK05>^^EI;=cwOxU=v31Jh%-Uyo$wj^w6*s`#yu)AT8!^Ppsa80;A+!kIh zyg_)Q@Fw9?!`}*D5dL=fqVOBx55gaXKZ$^dE)fGF21N{x$cw0s*c`DvVn@Wzh|eN+ zN9>O{7;!k_XvFb|lMy#Xu_B8oQ{?X{$`=h0m5RoTW{KvDszjSa+e9CWJ`sH?+9mp0 zbU<`SbVPJabV77ibWQY!7>UK=NU=;DC5{%yi*@1zu~BRiTf}a0Lvc%SrnslLx45sk zzj&Z{sCc+|gt$mtA|554A>Jb1CB7>DU3_0cBnnBKL@Uut43b1ivR~qocqBeaT}gdO zs-&Hyn`DqASCTIoDj6;rAsHu`AektcEIA-KBl%f!MRHAYUGkgcrsQ|Y<46>VBWYxK zq$pAnDUECpIXH55fh=4ml1XGznM@WdGsrx$2C`IH zZ`lypXj!>zjBK22f^4E}vTVBSP1!8j9N9eCTe1bRw`Kce7i16RYI$9GfB6u3fqa;J zlzg)MRrz%JLiyYBcjSxZtL1CtYvt?Z+vOk2cgT18<@@Ca$p4Irh>DKVMkPf#qMT9gC~wr{sMn(cQH!FML@kY47PTsBP1L%m4N;q-K8o5I zbw298LZpaR#3*7F8iiG1QzR)Iin@wMidKrjieZYWigy)j6&nqM)gk?Ki|C?+x{F2)w)j`7B%#MFyv8q++c zMNF%h)-j!8y2td7$&dXic7N=N*bA{&V{gVjREyP-YMDAp9j#WW>!?j?i`u5PtCQ7! zm)fKDse7tlQZH8@Rv%S=tG=NAMg6P#uKJ+{G!~6bQ%}=e(^8YBN!Mg*`fB=X25NFN zxte@Ufo7PdLNit~Uh|UXE6pj*H=1uX-^c0V9C6M#cbqrwmAE-^^Wxr$TM&0G?$5Zt zQ5Z@@iNqn>T)cBV1Y4PdtZQ^^xkB{FTe^o2d z+O%of9PM!JNNusUR69vKR~yjI*Dln)qg||hSNoo}Qd_NEq5W9~C`W5=s`nCE)`dbN63FZV}LTW?=+2}HQjVZ=@#h zngXWzrnP?4R@29(&rDyLellG*N0@bHo7rowYp!ojHMcakGH024nfsatm~+f|=8@)N zbE&z^JjOiEywJSGyxV-%{D=9jMPspA?3QGU+v2m-wKTJ|wzRRdw{)^(S^8OWEV-6^ z%W%s`ONnKamEz2xbmQ|LumJJsFCd*FCKFbNq8OwK;vz7~%pDb4_*DMdM zVyoO5ZH=+US+!QZ)nHAt=2%x+w_5jEzqTH<9-^`Z5# z4cUk-+$Od~+GIA3EydQ-*2|V_8)sW&+i2TuJ8rv@1WCFiLsDXrB`GPXRZ<6kQrDyb zN&ci6Ni&n?Bn6TdB&|#OH0e;%`J{(QPwdzpW*6Bd_U86B_U`tc_CEIh_CfYs`w;t3 zd%1mz{Z;!^`!xHT_GMC=MagBFPbWL#yu2)>Ix#qc+y0*Ixxvse*+$y)#UDw^ro$7AsPIITbGu>U> z-Q7Lhz1@A?dG3+!3imYko9@}}dG7h{h3;kU4erhEt?rN9+ufhIKXdPPA9f#epKzac zUvgh|UvvNJzUTHobU*fhNA8LCs64SAv&ZJKdz_xeo@Sm@Pb*IwPj^obPj63O&&!?} zo>`u`o`7eq=RclZp3gn|JYRbbdQN%Hc)s`i;5qNP=(+ACUb$D}wR%0?6mNZRBX3i0 zy0?wDowuVm)7#lw^zAG)rlb(ki8UO8=DNl(LlZp|%+DL4N3m-mm#z`RFD06(CB17pF5;1e(zOaU`M091g5 zU=dghmVl*T8CVI{f(>8`*ap4@yTD#>6dVJ`!3FRGxCnj(m%wFk9oz)JfP3J7;1$G> zKt7Cskx&d}ekg}Z7!57Z3T-eJ+MxqFp$ocU1K1EYf{kG-*c!HhZDCi~4R(h;pbrj! zIdCA%hXt?@ehA0GkKlMX0ZxP;!%6THI2lfXQ{gl?9ex4l!Y|=GxEQX5U%_>7J=_2{ z!cFj7xC?#Q<+vKIjulvm&Desi*oI@V6W72saedqbC*fq= z61T#waVqYFyWpO<7tX@Dcn}_p{l&Nhm*UZQJf4ha;W>C7F2{@Ua=aR^!RzrBybXVg z_uxbLI6jBZ;|us2zK-wX2lyfWAAUp-!Gw@75>9x8PsBt*suKm#5j`;wJ8_UWQk&Ev zjYvFcN!pS2B#UH|exyI~kpU!!3?#WNNdYM)!^vnehI~ZElaI+%GL1|pGs$dHK^Brl zWHDJnmXc*;Iay0KksV|w`Ia0Y2gxDwJvl`#k{`(>ayifxH^U35H82K`66VnYI+~Wz za;gc0k#o2;`{jo<3S1!$+bIwM1V9KHfhNFK1{%|-GSHM(qncA7o^>aHM9=~x1tx@P z0+<&U=qu4id=FZI)}Re&8~7_s)4mNz>E0o&WA-3lzmh6t?Lj)QEe0JxN016SfzBX} zR;LQ8q|sDG)r&zF&=qt8-9ZnKL1UEx^Cji>E6FX$&ng;G0dhbtNa@uf z?QLI`j=^9^(A_+$D+BpdA6&VHss<qC)PO4Hn6MPYj>!)BAm<>JypMyEnO+D00<7f?9b1|3;z6A5Y ze6RqN(OR?)txN0C`m_PnWJ+Cu_()}7UF2#%SPoV!ptUR4UjfLC>F1e@ON_!?||w_`ilQQ6UTWDU2W#^~=uN%kGsQ>FyFX(O6^ z8teo6!2y-gV;ubJ_9rVCj|2eZZtixv3qrGV#HZzmWJjIW7!X_}`KgAPa z3nrdSvuHLG@5jU~5hg!OfvNu~-U)VQ;_1{!2Qcv*sxc>QZ+cBu`YNk?Fo){aX*jz3 zNcJ5}rz%S`VCH}7>I<`&u6{I^4r00nSL(WQ+3@l9KvO}C4CcbYKvo6^(II6pkLEKZ zZ<1Qt422BmOJNZ#h9$5R4uiwtdvF9Tq(f;DEv6;3ln$fAm%@=i&$N$$en=q)^z=O{ zVyldx@6(ZV6l+`8o1=KpI0MdNxeEhuCj69+p?*p$;B5FA{G4)hK4ttBNRbU`F&~sJ zf(u|7EQb|vAstI6(#do>o%M!(;1akZsAnl$2A9(h=!bM%1zZVN!PWF5I-X8odY;Rc z_1p}<`Ipo-xE=1GAJa+n6BdH_5bprc$C;g$70tL3AdPeagy*WmTu zZwMzTt0b#}b=?3dT^UQWrz)F%hIbj$F`sY2U*K|h8{T1_&!(TzarARKXEF2tK70Tl zvhVvW3SZExc#$sOVgCerDb2Y)(CzpOOkFZil*JzqKe zixB{fw)k)ND$LEx_2lJd7nKYt4Dl5rptKB#DW;CfXFe!h%xK^-_=C~GZ%E9DAcb~f zgwTdo1mD*iRD#1HR5pI?4yul{z_tV_kP<~B6;h)Zq@j!GV!DJbrOW7Yx5v{7 zfEYyw(~GX8tLSRB^pa3=Y1SvJ5sau`tB%{?sa30XAT_4CKaQ~;ie?g3tcPl&X27-_ z)j@SpJyahxKn+nN)EG5EP3aoCmVQOo(e-o#-AFgl&2-Ch)Ewwh0!lW%u)t@InZjc%tq=uY}A-9^7!#_Y@r*`0uVXaLGV1DVCUgI2T8 z|2W9wAfJO#!Cg-pG%m@PU7C~Q3)#%_-vLT05G`FvF-l%Qd(CP1Z>MRhpc z%W|omD=r?5M5BYe42^zwbR}_hot| zuwA1RN-L`$bRJy@oUrS|%Fz!Dg(vI=|7#6DqD$yBy+*IoE8Pl9v-5I`2TJ)>>aPdY z)1QLcdbDfVE_awOCAXw%@K$K>=6?^~h4nZVY!jy8|KR^C>+AfG^7^vFJ>zI zA^ZOq61yD~OAif%>XiL33jF~RX)3)-U)%o-J!hq7QrGmPf_|kzJ?#qmWd*Cxa`XbE z{P$3ZfzV&*Ri@O=a8QXHR=2h(@eN4`JaecpV6nLAa0SbAe~5Q5X4!)YeMpltrPW4O zR#a}o$OiT6yAAak)*W57A7Va^WcwkGzyd79BKnB_MjzAP7h*A%!239gKA|s|SAS7W z_jbMkC0%oU!+Uhj%^4VKWmE#SeL;U;rnGtx*oArVxuKyDf`X8Lo%J{xGd^30RalK< zu!jCYpVB|+vxO|<60m{oh#4&Y&lw^$fevw_4A>6#EO?Xo*o8d|P}oghmZ1bDs0oa& z5z`*m!gW}8s3gaA>8oIQ&kiQI0V~OIL)?gifP-Ogc17G2$FmZfopPFU5ONTe;{=?@ zLCirCD$I@kH$IxNzO?8~E`AJh2k|9Mo{IS|#!;U&9oJd^{CT!_)B$ z9KbU%Qu=`K!`nFW&zqaSw2;vVNVphl8*F2tLX|GY8)uC-Dh<>L2g* zG(N*Y3kR*C1LD|e?TUW}jP7pwv{;#Y))vJMBEGQ?+akU=p%2!(2lJ(Axm%wn|PKgesv z!EHA1jjm>3o=zXQt1|^g>Wo$KBN0T%ig6;~VBIpp08o!wGo=!yqH9)OsjoO8H2Zb1 ziIm7#ut^jL>z5HZ2if7a_nS>1$v32+N>EAEz*bJ83Cqof9BfohVuH=atXVlFFitP) zM2y4|6jKrQju^)@2{xG+YcjE}xkIvYe8p8Noy7gtP!_^w)LJ!EgVd~~h`<)T&QI!+ z`fnv0a4_MmWMk6wtpm+Cm>4`XhE8lGfwTw?F+4RaBS{=&$J?r*R-{dEs5J+Z%0l*q zs+%Bzw7)zk%E6W#WNE{+wBcY| z4yJIh9S7SlCEZC6l0ka1{|ulfJvi8bgN)s}bC9*!clTfo*o|t|e`gRtKN$psWH8Ai zLr6Zm`$;P)%FWMV*9ZwEtd(6_;w$E0M-H;}I(^S13&~JY)PvRH#UVisrgk4tnjgBQ z2?36jkW%)--<%36^;NL$VWGRF%IB&`yhj}DlvYMYaIkY3VYp4BR#wcnWMMc>{DcyY zEjgBaKt3en0{JF$Lk^~MuuG;?=1nLp%=4v$@C6z9HKAjZxRM!xwREGP$hRwIZ)^+AHw5HMOzux((0s!`x_xHMQG`a|iE;v3=XpHS3q zAgl0-PLgZndY814tP&rEfDcr_1YDplXat(GyIl`%gcEUloQ`|2+uYtb8~4Wp@IdTm zSGVi&ckIG;A3ne?ZI9q%jDD}MOWPZaA8#>2yo2xI2kg4mOlpu;Qf?sBm4lA>0&h3AcsY!=2&o@Lu8L!#9Qh#FO)y@Y?X&@=|#1 zd0lyVykZ{ZP3BGG&ES2?^Uvme&RfOX#QTP~owt*>i+7B7ig$*0j`t()GVdzyI`1JL z^JDon_zn5Z_$mBUerJ9O^#m7!)xsVs*skh%FIYBX&oe@JF1BxD;_a;!ecf zi2D)GBVI(jjCdsw2_gkzfmEOs=mdI!QD7I;6x0#a6EqOC5u^!v3vva61w#Y{f}w() zf&+pxf*%E!1y=>v1-}aJ2<{0U2>vH{DtIL{37ZJp3e$vLh24c2!W`j1VXknnutYdQ zI96CLTqZmyydw1972Xrx7d{le6!Ap@kw_#KNkuY|R-_jhMP`vz6f1Iw>WLbN8i|^S zri$i@=7|=F%0&-FFGa5+VI+?17TG^?K;*#4L6KV`_eSoIJQ#UcEE224Cb30q6Whg3 zacyy3aeZ+^abs~)ad)v_JXyR^yhD6Md{lg1{Ig$tU;I$~Nc>p*MEptuC0G(B;YlJS zGKpT|kkpejmn2A9NRlP3B&m|ll5|N|Nq0$xq@N^DQYslMnIxGknJSqs2}tHj=1CSv z$|VaWizRC$TO_+A$0X+@7bF)Ymn2stzesLN?n>@U9!efbo=d}|5~)V2ml~xOsoy5G zOY2FKq@ASM(*Du`(t*-J(mZLtv`|_k{XjZSI$kzB}9#m`XK7#sF_h^QA?wiN3D!n9knrPbJW*S-$ZSXdMFdhEHaO*fvl0N ziL99{UY00Jl68`Gmu1L$$@<8Aep!wzS2kESL^eydNA^(mryR(|@))^EZjsyMc6pq< zro6ViuDrfHUY;m#E$<@lCGR8eE6PXqsrsT zlgd-dGs<(y3(A|yUzE3%ca?ue^P>gPqG)lnG+Gv2Em{$6jgF0WM7yFr(Q(l=qiaXk zjZTUl7`-g|eDpKFN};N$>Zt0j>Z$6j%2eg4IMoNLajNmEiK8gP0Q`K_S zO4VxBTGe{hCe_!fZK@rrU8+5*eX7%{TWX-Lp>ClrQv202)Me^b>aFUd>f`E@>Qm}7 z>T~J~>Wk`2>MQC;>c{FQ>Zj^w>KE$2Vqgr3;l)J6_%$(gV_L*y#Q0)H#>|UZ7qdO) zP|VSo<1ydIoQ^pg^Or`b5o@Fxxu&{CsnKX0ni`r~nmU?#nx>lOngmS?O|oXFW}>D{ zvs|-EvqtlkW{2je=D6mh=9K1)=A7n&=A!1d=C0AHEk1-f$GLfvBBQr&XhO5NAGJ-S1>Bf4X{6S`ZvUv-c4QF?{Gu0Bzp zq;IKjtxwf=)@SOo^!@ZceSv#{bTi?=s(wgq5o1pU%yVjQ@=~UTfbL-NPkX$ zL4Q$yNqw#IhG4#ret4`WYbZ)2u0%h=Dz8Rr>y8GkU|F#hB>-ZcJZ zd}4fRd~SScd}WfG3?{S5YOS#(gbu(p{GELbgpDD*wYMNl0 zZkl6SVp?fhV_Ik0Y}#ttZrW)&XgX^;XF6~C!F0=X+jP(L(Da+>cXNbUW>%WjX02Io zcAIOO>zM1Co0yxM6V3i4a|d%bbANNLInP{RE-?=`zi%F8o?@PDUTWTMK4*Sp{@whC z`I-5pMPbofY?fMvsV)}Gcr*1pz$R-ZNBI@DTX9cJ}gmswX^&s(qAcs7x(maVxh(UxRuWov6|XX|3i zu=Td}wPo81Y$dkgw)bs*+gRH;+j!dq+jQGJTZL`0ZJBMg?JL^`+a}vi+Y#Ft+j-kX z+hv>on(emjp6#LSH`^22)7Y5UX0g3vhsKVHofJDIc6#j0*x9jjV!w=C9=j@bZS1<( z4Y8YJx5jRZJ!MCBqdnQ4ZXaMTwhyz9u#d9)?VLSeUtq7WFSakUue7hWZ?hk?AG4pd zpSEAH|7gErzh-}6e`tT{K#nj6-x2AMI^=#wb%(~`aJU_Dj#`eoj{1%yN3x@(qqQT` zk>@CI6gf&A?>XLgjCXwOnCzJ52sl1~`#P9CRFZTz1@X zyl}j7B4?PB?-V-4&M0R!r`2h9x}08TO=lfveP=^w6K6B$AmgpIecSz; z`-%Ih`?>q2`;|xSsq0Ddd-{6@ct(2`cvgAVde(V1dbW7BdUksbd5(HccuslFc&>YH zd2V~|c^-Lw_dNAH^G13VUbENkb$Pws+TMEJhTg{BHr~$OOmBa0j(3o^z+2=k^$z!b z?49kM>z(f{_b%}+^RDo&@*eiyi)$3uDXw4Kz_|R-Nfxjh^2!FeQTbc-9as2&S!p~T From 3e92282448cd61fc2c0ff8bb82dd5b3b42589ea8 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 19 Jul 2016 13:37:17 +0800 Subject: [PATCH 038/178] fix ci build error --- LFLiveKit.xcodeproj/project.pbxproj | 2709 ++++++++++++----- .../UserInterfaceState.xcuserstate | Bin 27311 -> 0 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 71 - .../UserInterfaceState.xcuserstate | Bin 10662 -> 0 bytes Podfile | 8 +- 5 files changed, 1999 insertions(+), 789 deletions(-) delete mode 100644 LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 6be1f26f..4bfde1c6 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -1,715 +1,1994 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; - 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001F991D0015D10026C63F /* LFLiveKitTests.m */; }; - 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA51D0016380026C63F /* LFAudioCapture.h */; }; - 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA61D0016380026C63F /* LFAudioCapture.m */; }; - 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA71D0016380026C63F /* LFVideoCapture.h */; }; - 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA81D0016380026C63F /* LFVideoCapture.m */; }; - 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAA1D0016380026C63F /* LFAudioEncoding.h */; }; - 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */; }; - 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */; }; - 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */; }; - 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */; }; - 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAF1D0016380026C63F /* LFVideoEncoding.h */; }; - 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */; }; - 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */; }; - 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */; }; - 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */; }; - 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */; }; - 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; - 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; }; - 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; - 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; }; - 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; - 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; - 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; - 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; - 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; - 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; - 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; - 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; - 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; - 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; - AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; - B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; - B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; - B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; - B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */; }; - B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; - B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; - B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; - BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 84001F961D0015D10026C63F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 84001F811D0015D10026C63F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 84001F891D0015D10026C63F; - remoteInfo = LFLiveKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; - 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LFLiveKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 84001F991D0015D10026C63F /* LFLiveKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitTests.m; sourceTree = ""; }; - 84001F9B1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 84001FA51D0016380026C63F /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; - 84001FA61D0016380026C63F /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; - 84001FA71D0016380026C63F /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; - 84001FA81D0016380026C63F /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; - 84001FAA1D0016380026C63F /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; - 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; - 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; - 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; - 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; - 84001FAF1D0016380026C63F /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; - 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; - 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; - 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; - 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; - 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; - 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; - 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; - 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; - 84001FBA1D0016380026C63F /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; - 84001FBB1D0016380026C63F /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; - 84001FBD1D0016380026C63F /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; - 84001FBE1D0016380026C63F /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; - 84001FBF1D0016380026C63F /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; - 84001FC01D0016380026C63F /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; - 84001FC11D0016380026C63F /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; - 84001FC21D0016380026C63F /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; - 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; - 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; - 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; - 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; - 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; - 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; - B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; - B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; - B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; - B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamRtmpSocket.m; path = LFLiveKit/publish/LFStreamRtmpSocket.m; sourceTree = SOURCE_ROOT; }; - B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; - B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; - B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; - B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; - B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 84001F861D0015D10026C63F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 840020011D0017850026C63F /* libz.tbd in Frameworks */, - 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */, - 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */, - 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, - 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, - 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, - AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, - BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F911D0015D10026C63F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0C07D14560B9E91EA1B59306 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 840020001D0017850026C63F /* libz.tbd */, - 84001FFE1D00176C0026C63F /* VideoToolbox.framework */, - 84001FFC1D0017680026C63F /* AudioToolbox.framework */, - 84001FFA1D0017630026C63F /* UIKit.framework */, - 84001FF81D00175D0026C63F /* Foundation.framework */, - 84001FF61D0017590026C63F /* AVFoundation.framework */, - B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, - B5758EB2A15DAA132D8BF380 /* libPods.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 84001F801D0015D10026C63F = { - isa = PBXGroup; - children = ( - 84001F8C1D0015D10026C63F /* LFLiveKit */, - 84001F981D0015D10026C63F /* LFLiveKitTests */, - 84001F8B1D0015D10026C63F /* Products */, - EDD4B76A07A6817C79BB4E5C /* Pods */, - 0C07D14560B9E91EA1B59306 /* Frameworks */, - ); - sourceTree = ""; - }; - 84001F8B1D0015D10026C63F /* Products */ = { - isa = PBXGroup; - children = ( - 84001F8A1D0015D10026C63F /* LFLiveKit.framework */, - 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 84001F8C1D0015D10026C63F /* LFLiveKit */ = { - isa = PBXGroup; - children = ( - 84001F8D1D0015D10026C63F /* LFLiveKit.h */, - 84001FBA1D0016380026C63F /* LFLiveSession.h */, - 84001FBB1D0016380026C63F /* LFLiveSession.m */, - 84001FBC1D0016380026C63F /* objects */, - 84001FB01D0016380026C63F /* configuration */, - 84001FA41D0016380026C63F /* capture */, - 84001FA91D0016380026C63F /* coder */, - 84001FB51D0016380026C63F /* filter */, - 84001FC91D0016380026C63F /* publish */, - 84001F8F1D0015D10026C63F /* Info.plist */, - ); - path = LFLiveKit; - sourceTree = ""; - }; - 84001F981D0015D10026C63F /* LFLiveKitTests */ = { - isa = PBXGroup; - children = ( - 84001F991D0015D10026C63F /* LFLiveKitTests.m */, - 84001F9B1D0015D10026C63F /* Info.plist */, - ); - path = LFLiveKitTests; - sourceTree = ""; - }; - 84001FA41D0016380026C63F /* capture */ = { - isa = PBXGroup; - children = ( - 84001FA51D0016380026C63F /* LFAudioCapture.h */, - 84001FA61D0016380026C63F /* LFAudioCapture.m */, - 84001FA71D0016380026C63F /* LFVideoCapture.h */, - 84001FA81D0016380026C63F /* LFVideoCapture.m */, - ); - path = capture; - sourceTree = ""; - }; - 84001FA91D0016380026C63F /* coder */ = { - isa = PBXGroup; - children = ( - 84001FAA1D0016380026C63F /* LFAudioEncoding.h */, - 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */, - 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */, - 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */, - 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */, - 84001FAF1D0016380026C63F /* LFVideoEncoding.h */, - ); - path = coder; - sourceTree = ""; - }; - 84001FB01D0016380026C63F /* configuration */ = { - isa = PBXGroup; - children = ( - 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */, - 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */, - 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */, - 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */, - ); - path = configuration; - sourceTree = ""; - }; - 84001FB51D0016380026C63F /* filter */ = { - isa = PBXGroup; - children = ( - 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */, - 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */, - 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */, - 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */, - ); - path = filter; - sourceTree = ""; - }; - 84001FBC1D0016380026C63F /* objects */ = { - isa = PBXGroup; - children = ( - 84001FBD1D0016380026C63F /* LFAudioFrame.h */, - 84001FBE1D0016380026C63F /* LFAudioFrame.m */, - 84001FBF1D0016380026C63F /* LFFrame.h */, - 84001FC01D0016380026C63F /* LFFrame.m */, - 84001FC11D0016380026C63F /* LFLiveDebug.h */, - 84001FC21D0016380026C63F /* LFLiveDebug.m */, - 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */, - 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */, - 84001FC51D0016380026C63F /* LFVideoFrame.h */, - 84001FC61D0016380026C63F /* LFVideoFrame.m */, - ); - path = objects; - sourceTree = ""; - }; - 84001FC91D0016380026C63F /* publish */ = { - isa = PBXGroup; - children = ( - B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, - B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, - B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, - B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */, - B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */, - B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */, - B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */, - ); - name = publish; - path = upload; - sourceTree = ""; - }; - EDD4B76A07A6817C79BB4E5C /* Pods */ = { - isa = PBXGroup; - children = ( - A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */, - B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 84001F871D0015D10026C63F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, - B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, - 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, - 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, - B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, - 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, - 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, - 84001FE71D0016380026C63F /* LFFrame.h in Headers */, - 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, - B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, - 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, - 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, - 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, - 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, - 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, - 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, - B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, - 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, - 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 84001F891D0015D10026C63F /* LFLiveKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; - buildPhases = ( - 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */, - 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */, - 84001F851D0015D10026C63F /* Sources */, - 84001F861D0015D10026C63F /* Frameworks */, - 84001F871D0015D10026C63F /* Headers */, - 84001F881D0015D10026C63F /* Resources */, - 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */, - 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = LFLiveKit; - productName = LFLiveKit; - productReference = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 84001F931D0015D10026C63F /* LFLiveKitTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */; - buildPhases = ( - 84001F901D0015D10026C63F /* Sources */, - 84001F911D0015D10026C63F /* Frameworks */, - 84001F921D0015D10026C63F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 84001F971D0015D10026C63F /* PBXTargetDependency */, - ); - name = LFLiveKitTests; - productName = LFLiveKitTests; - productReference = 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 84001F811D0015D10026C63F /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0730; - ORGANIZATIONNAME = admin; - TargetAttributes = { - 84001F891D0015D10026C63F = { - CreatedOnToolsVersion = 7.3; - }; - 84001F931D0015D10026C63F = { - CreatedOnToolsVersion = 7.3; - }; - }; - }; - buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 84001F801D0015D10026C63F; - productRefGroup = 84001F8B1D0015D10026C63F /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 84001F891D0015D10026C63F /* LFLiveKit */, - 84001F931D0015D10026C63F /* LFLiveKitTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 84001F881D0015D10026C63F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F921D0015D10026C63F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 84001F851D0015D10026C63F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, - 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, - 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, - 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, - 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, - 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, - B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, - 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, - 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, - B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, - 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, - 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, - 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, - 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, - 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, - 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F901D0015D10026C63F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 84001F971D0015D10026C63F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 84001F891D0015D10026C63F /* LFLiveKit */; - targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 84001F9C1D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 84001F9D1D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 84001F9F1D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = LFLiveKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 84001FA01D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = LFLiveKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 84001FA21D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = LFLiveKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 84001FA31D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = LFLiveKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001F9C1D0015D10026C63F /* Debug */, - 84001F9D1D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001F9F1D0015D10026C63F /* Debug */, - 84001FA01D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001FA21D0015D10026C63F /* Debug */, - 84001FA31D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 84001F811D0015D10026C63F /* Project object */; -} + + + + + archiveVersion + 1 + classes + + objectVersion + 46 + objects + + 0C07D14560B9E91EA1B59306 + + children + + 840020001D0017850026C63F + 84001FFE1D00176C0026C63F + 84001FFC1D0017680026C63F + 84001FFA1D0017630026C63F + 84001FF81D00175D0026C63F + 84001FF61D0017590026C63F + B8CB02D2A92EA1F5A262F154 + B5758EB2A15DAA132D8BF380 + + isa + PBXGroup + name + Frameworks + sourceTree + <group> + + 817C22141AD3F2EB34365AA3 + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + 📦 Copy Pods Resources + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + "${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh" + + showEnvVarsInLog + 0 + + 84001F801D0015D10026C63F + + children + + 84001F8C1D0015D10026C63F + 84001F981D0015D10026C63F + 84001F8B1D0015D10026C63F + EDD4B76A07A6817C79BB4E5C + 0C07D14560B9E91EA1B59306 + + isa + PBXGroup + sourceTree + <group> + + 84001F811D0015D10026C63F + + attributes + + LastUpgradeCheck + 0730 + ORGANIZATIONNAME + admin + TargetAttributes + + 84001F891D0015D10026C63F + + CreatedOnToolsVersion + 7.3 + + 84001F931D0015D10026C63F + + CreatedOnToolsVersion + 7.3 + + + + buildConfigurationList + 84001F841D0015D10026C63F + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 + isa + PBXProject + knownRegions + + en + + mainGroup + 84001F801D0015D10026C63F + productRefGroup + 84001F8B1D0015D10026C63F + projectDirPath + + projectReferences + + projectRoot + + targets + + 84001F891D0015D10026C63F + 84001F931D0015D10026C63F + + + 84001F841D0015D10026C63F + + buildConfigurations + + 84001F9C1D0015D10026C63F + 84001F9D1D0015D10026C63F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 84001F851D0015D10026C63F + + buildActionMask + 2147483647 + files + + 84001FE21D0016380026C63F + 84001FE41D0016380026C63F + 84001FE61D0016380026C63F + 84001FDC1D0016380026C63F + 84001FD41D0016380026C63F + 84001FE81D0016380026C63F + B289F1DC1D3DE77F00D9C7A5 + B289F1E11D3DE77F00D9C7A5 + 84001FDE1D0016380026C63F + 84001FD21D0016380026C63F + B289F1DE1D3DE77F00D9C7A5 + 84001FD91D0016380026C63F + 84001FEC1D0016380026C63F + 84001FEA1D0016380026C63F + 84001FEE1D0016380026C63F + 84001FD71D0016380026C63F + 84001FE01D0016380026C63F + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F861D0015D10026C63F + + buildActionMask + 2147483647 + files + + 840020011D0017850026C63F + 84001FFF1D00176C0026C63F + 84001FFD1D0017680026C63F + 84001FFB1D0017630026C63F + 84001FF91D00175D0026C63F + 84001FF71D0017590026C63F + AD7F89B4621A7EFEBEA72D49 + BE55DA79155500CDEF87FB5C + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F871D0015D10026C63F + + buildActionMask + 2147483647 + files + + 84001FDB1D0016380026C63F + B289F1DD1D3DE77F00D9C7A5 + 84001FDD1D0016380026C63F + 84001FE31D0016380026C63F + B289F1DB1D3DE77F00D9C7A5 + 84001FEB1D0016380026C63F + 84001FE91D0016380026C63F + 84001FE71D0016380026C63F + 84001FD61D0016380026C63F + B289F1E01D3DE77F00D9C7A5 + 84001FDF1D0016380026C63F + 84001FD31D0016380026C63F + 84001FD11D0016380026C63F + 84001FE11D0016380026C63F + 84001FDA1D0016380026C63F + 84001FE51D0016380026C63F + 84001FED1D0016380026C63F + 84001FD81D0016380026C63F + B289F1DF1D3DE77F00D9C7A5 + 84001FD51D0016380026C63F + 84001F8E1D0015D10026C63F + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F881D0015D10026C63F + + buildActionMask + 2147483647 + files + + isa + PBXResourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F891D0015D10026C63F + + buildConfigurationList + 84001F9E1D0015D10026C63F + buildPhases + + 98F2C3F394BD79A6D6B8424F + 8EE9401DCA9508E918B7FB68 + 84001F851D0015D10026C63F + 84001F861D0015D10026C63F + 84001F871D0015D10026C63F + 84001F881D0015D10026C63F + 817C22141AD3F2EB34365AA3 + 8A5D8B623E50AAC1575D1741 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + LFLiveKit + productName + LFLiveKit + productReference + 84001F8A1D0015D10026C63F + productType + com.apple.product-type.framework + + 84001F8A1D0015D10026C63F + + explicitFileType + wrapper.framework + includeInIndex + 0 + isa + PBXFileReference + path + LFLiveKit.framework + sourceTree + BUILT_PRODUCTS_DIR + + 84001F8B1D0015D10026C63F + + children + + 84001F8A1D0015D10026C63F + 84001F941D0015D10026C63F + + isa + PBXGroup + name + Products + sourceTree + <group> + + 84001F8C1D0015D10026C63F + + children + + 84001F8D1D0015D10026C63F + 84001FBA1D0016380026C63F + 84001FBB1D0016380026C63F + 84001FBC1D0016380026C63F + 84001FB01D0016380026C63F + 84001FA41D0016380026C63F + 84001FA91D0016380026C63F + 84001FB51D0016380026C63F + 84001FC91D0016380026C63F + 84001F8F1D0015D10026C63F + + isa + PBXGroup + path + LFLiveKit + sourceTree + <group> + + 84001F8D1D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveKit.h + sourceTree + <group> + + 84001F8E1D0015D10026C63F + + fileRef + 84001F8D1D0015D10026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001F8F1D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 84001F901D0015D10026C63F + + buildActionMask + 2147483647 + files + + 84001F9A1D0015D10026C63F + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F911D0015D10026C63F + + buildActionMask + 2147483647 + files + + 84001F951D0015D10026C63F + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F921D0015D10026C63F + + buildActionMask + 2147483647 + files + + isa + PBXResourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 84001F931D0015D10026C63F + + buildConfigurationList + 84001FA11D0015D10026C63F + buildPhases + + 84001F901D0015D10026C63F + 84001F911D0015D10026C63F + 84001F921D0015D10026C63F + + buildRules + + dependencies + + 84001F971D0015D10026C63F + + isa + PBXNativeTarget + name + LFLiveKitTests + productName + LFLiveKitTests + productReference + 84001F941D0015D10026C63F + productType + com.apple.product-type.bundle.unit-test + + 84001F941D0015D10026C63F + + explicitFileType + wrapper.cfbundle + includeInIndex + 0 + isa + PBXFileReference + path + LFLiveKitTests.xctest + sourceTree + BUILT_PRODUCTS_DIR + + 84001F951D0015D10026C63F + + fileRef + 84001F8A1D0015D10026C63F + isa + PBXBuildFile + + 84001F961D0015D10026C63F + + containerPortal + 84001F811D0015D10026C63F + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 84001F891D0015D10026C63F + remoteInfo + LFLiveKit + + 84001F971D0015D10026C63F + + isa + PBXTargetDependency + target + 84001F891D0015D10026C63F + targetProxy + 84001F961D0015D10026C63F + + 84001F981D0015D10026C63F + + children + + 84001F991D0015D10026C63F + 84001F9B1D0015D10026C63F + + isa + PBXGroup + path + LFLiveKitTests + sourceTree + <group> + + 84001F991D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveKitTests.m + sourceTree + <group> + + 84001F9A1D0015D10026C63F + + fileRef + 84001F991D0015D10026C63F + isa + PBXBuildFile + + 84001F9B1D0015D10026C63F + + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Info.plist + sourceTree + <group> + + 84001F9C1D0015D10026C63F + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_ANALYZER_NONNULL + YES + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES_ERROR + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES_ERROR + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + COPY_PHASE_STRIP + NO + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf + ENABLE_STRICT_OBJC_MSGSEND + YES + ENABLE_TESTABILITY + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_NO_COMMON_BLOCKS + YES + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES_ERROR + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES_AGGRESSIVE + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 9.3 + MTL_ENABLE_DEBUG_INFO + YES + ONLY_ACTIVE_ARCH + YES + SDKROOT + iphoneos + TARGETED_DEVICE_FAMILY + 1,2 + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Debug + + 84001F9D1D0015D10026C63F + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_ANALYZER_NONNULL + YES + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES_ERROR + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES_ERROR + CLANG_WARN_UNREACHABLE_CODE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + CODE_SIGN_IDENTITY[sdk=iphoneos*] + iPhone Developer + COPY_PHASE_STRIP + NO + CURRENT_PROJECT_VERSION + 1 + DEBUG_INFORMATION_FORMAT + dwarf-with-dsym + ENABLE_NS_ASSERTIONS + NO + ENABLE_STRICT_OBJC_MSGSEND + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_NO_COMMON_BLOCKS + YES + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES_ERROR + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES_AGGRESSIVE + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 9.3 + MTL_ENABLE_DEBUG_INFO + NO + SDKROOT + iphoneos + TARGETED_DEVICE_FAMILY + 1,2 + VALIDATE_PRODUCT + YES + VERSIONING_SYSTEM + apple-generic + VERSION_INFO_PREFIX + + + isa + XCBuildConfiguration + name + Release + + 84001F9E1D0015D10026C63F + + buildConfigurations + + 84001F9F1D0015D10026C63F + 84001FA01D0015D10026C63F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 84001F9F1D0015D10026C63F + + baseConfigurationReference + A17586B27CD6843997425CCF + buildSettings + + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_BITCODE + NO + INFOPLIST_FILE + LFLiveKit/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKit + PRODUCT_NAME + $(TARGET_NAME) + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Debug + + 84001FA01D0015D10026C63F + + baseConfigurationReference + B75B965E6B94DE4CBCC82EA7 + buildSettings + + DEFINES_MODULE + YES + DYLIB_COMPATIBILITY_VERSION + 1 + DYLIB_CURRENT_VERSION + 1 + DYLIB_INSTALL_NAME_BASE + @rpath + ENABLE_BITCODE + NO + INFOPLIST_FILE + LFLiveKit/Info.plist + INSTALL_PATH + $(LOCAL_LIBRARY_DIR)/Frameworks + IPHONEOS_DEPLOYMENT_TARGET + 8.0 + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKit + PRODUCT_NAME + $(TARGET_NAME) + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Release + + 84001FA11D0015D10026C63F + + buildConfigurations + + 84001FA21D0015D10026C63F + 84001FA31D0015D10026C63F + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 84001FA21D0015D10026C63F + + buildSettings + + INFOPLIST_FILE + LFLiveKitTests/Info.plist + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKitTests + PRODUCT_NAME + $(TARGET_NAME) + + isa + XCBuildConfiguration + name + Debug + + 84001FA31D0015D10026C63F + + buildSettings + + INFOPLIST_FILE + LFLiveKitTests/Info.plist + LD_RUNPATH_SEARCH_PATHS + $(inherited) @executable_path/Frameworks @loader_path/Frameworks + PRODUCT_BUNDLE_IDENTIFIER + com.youku.LFLiveKit.LFLiveKitTests + PRODUCT_NAME + $(TARGET_NAME) + + isa + XCBuildConfiguration + name + Release + + 84001FA41D0016380026C63F + + children + + 84001FA51D0016380026C63F + 84001FA61D0016380026C63F + 84001FA71D0016380026C63F + 84001FA81D0016380026C63F + + isa + PBXGroup + path + capture + sourceTree + <group> + + 84001FA51D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFAudioCapture.h + sourceTree + <group> + + 84001FA61D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFAudioCapture.m + sourceTree + <group> + + 84001FA71D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFVideoCapture.h + sourceTree + <group> + + 84001FA81D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFVideoCapture.m + sourceTree + <group> + + 84001FA91D0016380026C63F + + children + + 84001FAA1D0016380026C63F + 84001FAB1D0016380026C63F + 84001FAC1D0016380026C63F + 84001FAD1D0016380026C63F + 84001FAE1D0016380026C63F + 84001FAF1D0016380026C63F + + isa + PBXGroup + path + coder + sourceTree + <group> + + 84001FAA1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFAudioEncoding.h + sourceTree + <group> + + 84001FAB1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFHardwareAudioEncoder.h + sourceTree + <group> + + 84001FAC1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFHardwareAudioEncoder.m + sourceTree + <group> + + 84001FAD1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFHardwareVideoEncoder.h + sourceTree + <group> + + 84001FAE1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFHardwareVideoEncoder.m + sourceTree + <group> + + 84001FAF1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFVideoEncoding.h + sourceTree + <group> + + 84001FB01D0016380026C63F + + children + + 84001FB11D0016380026C63F + 84001FB21D0016380026C63F + 84001FB31D0016380026C63F + 84001FB41D0016380026C63F + + isa + PBXGroup + path + configuration + sourceTree + <group> + + 84001FB11D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveAudioConfiguration.h + sourceTree + <group> + + 84001FB21D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveAudioConfiguration.m + sourceTree + <group> + + 84001FB31D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveVideoConfiguration.h + sourceTree + <group> + + 84001FB41D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveVideoConfiguration.m + sourceTree + <group> + + 84001FB51D0016380026C63F + + children + + 84001FB61D0016380026C63F + 84001FB71D0016380026C63F + 84001FB81D0016380026C63F + 84001FB91D0016380026C63F + + isa + PBXGroup + path + filter + sourceTree + <group> + + 84001FB61D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFGPUImageBeautyFilter.h + sourceTree + <group> + + 84001FB71D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFGPUImageBeautyFilter.m + sourceTree + <group> + + 84001FB81D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFGPUImageEmptyFilter.h + sourceTree + <group> + + 84001FB91D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFGPUImageEmptyFilter.m + sourceTree + <group> + + 84001FBA1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveSession.h + sourceTree + <group> + + 84001FBB1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveSession.m + sourceTree + <group> + + 84001FBC1D0016380026C63F + + children + + 84001FBD1D0016380026C63F + 84001FBE1D0016380026C63F + 84001FBF1D0016380026C63F + 84001FC01D0016380026C63F + 84001FC11D0016380026C63F + 84001FC21D0016380026C63F + 84001FC31D0016380026C63F + 84001FC41D0016380026C63F + 84001FC51D0016380026C63F + 84001FC61D0016380026C63F + + isa + PBXGroup + path + objects + sourceTree + <group> + + 84001FBD1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFAudioFrame.h + sourceTree + <group> + + 84001FBE1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFAudioFrame.m + sourceTree + <group> + + 84001FBF1D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFFrame.h + sourceTree + <group> + + 84001FC01D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFFrame.m + sourceTree + <group> + + 84001FC11D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveDebug.h + sourceTree + <group> + + 84001FC21D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveDebug.m + sourceTree + <group> + + 84001FC31D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFLiveStreamInfo.h + sourceTree + <group> + + 84001FC41D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFLiveStreamInfo.m + sourceTree + <group> + + 84001FC51D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + LFVideoFrame.h + sourceTree + <group> + + 84001FC61D0016380026C63F + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + LFVideoFrame.m + sourceTree + <group> + + 84001FC91D0016380026C63F + + children + + B289F1D41D3DE77F00D9C7A5 + B289F1D51D3DE77F00D9C7A5 + B289F1D61D3DE77F00D9C7A5 + B289F1D71D3DE77F00D9C7A5 + B289F1D81D3DE77F00D9C7A5 + B289F1D91D3DE77F00D9C7A5 + B289F1DA1D3DE77F00D9C7A5 + + isa + PBXGroup + name + publish + path + upload + sourceTree + <group> + + 84001FD11D0016380026C63F + + fileRef + 84001FA51D0016380026C63F + isa + PBXBuildFile + + 84001FD21D0016380026C63F + + fileRef + 84001FA61D0016380026C63F + isa + PBXBuildFile + + 84001FD31D0016380026C63F + + fileRef + 84001FA71D0016380026C63F + isa + PBXBuildFile + + 84001FD41D0016380026C63F + + fileRef + 84001FA81D0016380026C63F + isa + PBXBuildFile + + 84001FD51D0016380026C63F + + fileRef + 84001FAA1D0016380026C63F + isa + PBXBuildFile + + 84001FD61D0016380026C63F + + fileRef + 84001FAB1D0016380026C63F + isa + PBXBuildFile + + 84001FD71D0016380026C63F + + fileRef + 84001FAC1D0016380026C63F + isa + PBXBuildFile + + 84001FD81D0016380026C63F + + fileRef + 84001FAD1D0016380026C63F + isa + PBXBuildFile + + 84001FD91D0016380026C63F + + fileRef + 84001FAE1D0016380026C63F + isa + PBXBuildFile + + 84001FDA1D0016380026C63F + + fileRef + 84001FAF1D0016380026C63F + isa + PBXBuildFile + + 84001FDB1D0016380026C63F + + fileRef + 84001FB11D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FDC1D0016380026C63F + + fileRef + 84001FB21D0016380026C63F + isa + PBXBuildFile + + 84001FDD1D0016380026C63F + + fileRef + 84001FB31D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FDE1D0016380026C63F + + fileRef + 84001FB41D0016380026C63F + isa + PBXBuildFile + + 84001FDF1D0016380026C63F + + fileRef + 84001FB61D0016380026C63F + isa + PBXBuildFile + + 84001FE01D0016380026C63F + + fileRef + 84001FB71D0016380026C63F + isa + PBXBuildFile + + 84001FE11D0016380026C63F + + fileRef + 84001FB81D0016380026C63F + isa + PBXBuildFile + + 84001FE21D0016380026C63F + + fileRef + 84001FB91D0016380026C63F + isa + PBXBuildFile + + 84001FE31D0016380026C63F + + fileRef + 84001FBA1D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FE41D0016380026C63F + + fileRef + 84001FBB1D0016380026C63F + isa + PBXBuildFile + + 84001FE51D0016380026C63F + + fileRef + 84001FBD1D0016380026C63F + isa + PBXBuildFile + + 84001FE61D0016380026C63F + + fileRef + 84001FBE1D0016380026C63F + isa + PBXBuildFile + + 84001FE71D0016380026C63F + + fileRef + 84001FBF1D0016380026C63F + isa + PBXBuildFile + + 84001FE81D0016380026C63F + + fileRef + 84001FC01D0016380026C63F + isa + PBXBuildFile + + 84001FE91D0016380026C63F + + fileRef + 84001FC11D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FEA1D0016380026C63F + + fileRef + 84001FC21D0016380026C63F + isa + PBXBuildFile + + 84001FEB1D0016380026C63F + + fileRef + 84001FC31D0016380026C63F + isa + PBXBuildFile + settings + + ATTRIBUTES + + Public + + + + 84001FEC1D0016380026C63F + + fileRef + 84001FC41D0016380026C63F + isa + PBXBuildFile + + 84001FED1D0016380026C63F + + fileRef + 84001FC51D0016380026C63F + isa + PBXBuildFile + + 84001FEE1D0016380026C63F + + fileRef + 84001FC61D0016380026C63F + isa + PBXBuildFile + + 84001FF61D0017590026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + AVFoundation.framework + path + System/Library/Frameworks/AVFoundation.framework + sourceTree + SDKROOT + + 84001FF71D0017590026C63F + + fileRef + 84001FF61D0017590026C63F + isa + PBXBuildFile + + 84001FF81D00175D0026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Foundation.framework + path + System/Library/Frameworks/Foundation.framework + sourceTree + SDKROOT + + 84001FF91D00175D0026C63F + + fileRef + 84001FF81D00175D0026C63F + isa + PBXBuildFile + + 84001FFA1D0017630026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + UIKit.framework + path + System/Library/Frameworks/UIKit.framework + sourceTree + SDKROOT + + 84001FFB1D0017630026C63F + + fileRef + 84001FFA1D0017630026C63F + isa + PBXBuildFile + + 84001FFC1D0017680026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + AudioToolbox.framework + path + System/Library/Frameworks/AudioToolbox.framework + sourceTree + SDKROOT + + 84001FFD1D0017680026C63F + + fileRef + 84001FFC1D0017680026C63F + isa + PBXBuildFile + + 84001FFE1D00176C0026C63F + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + VideoToolbox.framework + path + System/Library/Frameworks/VideoToolbox.framework + sourceTree + SDKROOT + + 84001FFF1D00176C0026C63F + + fileRef + 84001FFE1D00176C0026C63F + isa + PBXBuildFile + + 840020001D0017850026C63F + + isa + PBXFileReference + lastKnownFileType + sourcecode.text-based-dylib-definition + name + libz.tbd + path + usr/lib/libz.tbd + sourceTree + SDKROOT + + 840020011D0017850026C63F + + fileRef + 840020001D0017850026C63F + isa + PBXBuildFile + + 8A5D8B623E50AAC1575D1741 + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + Copy Pods Resources + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + "${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh" + + showEnvVarsInLog + 0 + + 8EE9401DCA9508E918B7FB68 + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + 📦 Check Pods Manifest.lock + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null +if [[ $? != 0 ]] ; then + cat << EOM +error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. +EOM + exit 1 +fi + + showEnvVarsInLog + 0 + + 98F2C3F394BD79A6D6B8424F + + buildActionMask + 2147483647 + files + + inputPaths + + isa + PBXShellScriptBuildPhase + name + Check Pods Manifest.lock + outputPaths + + runOnlyForDeploymentPostprocessing + 0 + shellPath + /bin/sh + shellScript + diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null +if [[ $? != 0 ]] ; then + cat << EOM +error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. +EOM + exit 1 +fi + + showEnvVarsInLog + 0 + + A17586B27CD6843997425CCF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + name + Pods-LFLiveKit.debug.xcconfig + path + Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig + sourceTree + <group> + + AD7F89B4621A7EFEBEA72D49 + + fileRef + B8CB02D2A92EA1F5A262F154 + isa + PBXBuildFile + + B289F1D41D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + LFStreamingBuffer.h + path + LFLiveKit/publish/LFStreamingBuffer.h + sourceTree + SOURCE_ROOT + + B289F1D51D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + LFStreamingBuffer.m + path + LFLiveKit/publish/LFStreamingBuffer.m + sourceTree + SOURCE_ROOT + + B289F1D61D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + LFStreamRtmpSocket.h + path + LFLiveKit/publish/LFStreamRtmpSocket.h + sourceTree + SOURCE_ROOT + + B289F1D71D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + LFStreamRtmpSocket.m + path + LFLiveKit/publish/LFStreamRtmpSocket.m + sourceTree + SOURCE_ROOT + + B289F1D81D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + LFStreamSocket.h + path + LFLiveKit/publish/LFStreamSocket.h + sourceTree + SOURCE_ROOT + + B289F1D91D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + NSMutableArray+LFAdd.h + path + LFLiveKit/publish/NSMutableArray+LFAdd.h + sourceTree + SOURCE_ROOT + + B289F1DA1D3DE77F00D9C7A5 + + fileEncoding + 4 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + NSMutableArray+LFAdd.m + path + LFLiveKit/publish/NSMutableArray+LFAdd.m + sourceTree + SOURCE_ROOT + + B289F1DB1D3DE77F00D9C7A5 + + fileRef + B289F1D41D3DE77F00D9C7A5 + isa + PBXBuildFile + + B289F1DC1D3DE77F00D9C7A5 + + fileRef + B289F1D51D3DE77F00D9C7A5 + isa + PBXBuildFile + + B289F1DD1D3DE77F00D9C7A5 + + fileRef + B289F1D61D3DE77F00D9C7A5 + isa + PBXBuildFile + + B289F1DE1D3DE77F00D9C7A5 + + fileRef + B289F1D71D3DE77F00D9C7A5 + isa + PBXBuildFile + + B289F1DF1D3DE77F00D9C7A5 + + fileRef + B289F1D81D3DE77F00D9C7A5 + isa + PBXBuildFile + + B289F1E01D3DE77F00D9C7A5 + + fileRef + B289F1D91D3DE77F00D9C7A5 + isa + PBXBuildFile + + B289F1E11D3DE77F00D9C7A5 + + fileRef + B289F1DA1D3DE77F00D9C7A5 + isa + PBXBuildFile + + B5758EB2A15DAA132D8BF380 + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods.a + sourceTree + BUILT_PRODUCTS_DIR + + B75B965E6B94DE4CBCC82EA7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + name + Pods-LFLiveKit.release.xcconfig + path + Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig + sourceTree + <group> + + B8CB02D2A92EA1F5A262F154 + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods-LFLiveKit.a + sourceTree + BUILT_PRODUCTS_DIR + + BE55DA79155500CDEF87FB5C + + fileRef + B5758EB2A15DAA132D8BF380 + isa + PBXBuildFile + + EDD4B76A07A6817C79BB4E5C + + children + + A17586B27CD6843997425CCF + B75B965E6B94DE4CBCC82EA7 + + isa + PBXGroup + name + Pods + sourceTree + <group> + + + rootObject + 84001F811D0015D10026C63F + + diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 6c1d3220881b1fa42eedf69f05350b402d67281e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27311 zcmdUX2Y6IP*YM2Tw&|NjLPALIZL@tLA-!*sO*Umi3n@zoB-xMxgi!7%Ac~4uQBffT z5Cjw~G*Q8>DAGj1t|%fR7DPnhpSw4kWF_+H`@YY^^HY-Dd*_}x=gg@y=iIus=BAEL znd~Tl009cnfB~$8mta%aEOUEDlcm)ZW~rNQuJ7!q4y$dipVmY!mxpy)+B^VUvieDP zv zFb2lLI2aETpc1O!7?=SwVHV7WIj|U(z$$2h)o>!51Z&|`*a)Y=HaHWu!w$F$?u9SF z{qSY@I(!2jfbYOV@GyKI9)~C4NANTFIXnfwhG*b+@CSGv{sJ$+OYnDi1ztrIqLBnS zAQ$9{Jdh{yLB41d3P8aq1Vx}o6pP}J3?(5IQll|wEJ{UbC<|qyd{lsnQ3*1la%4i) zXcC%?rlT3C8MUBRWI=6cCTd3u&_cu`jBY|VqeW;jT7m9H_n>>xedvDl09uLq&^ojp zZ9tEsjc5~k0_{LM(Jr(by@p;#Z=g5PTj*_c0KJ1gL?_Tm^bz_PeS$tkpP{qpdvp%{ zfG(py(4XiEx=H~GQiyV;+$bsKPI*wClo#bq1ydnZC>2J9QxQ}orJ$6Qic(V=N=xae zF;otfOXX4JR0UN@RZ;a+17)VBQjOF!s)?FT&7x*gbEs}=F4aTLqvlh$QnyjdsN1QP z)PvMR)Wg&U>Tzl#wTXI;+ClB4c2TcVuTig4Z%{|6W7PZ9aq0u=L+S)|lKO@^O?^w9 zp}wQeQr}aTsNbo})F0HJ)D`L~4QOZDg?6RgXesSZd(fVAARR;p(;;*Mok+{*Bw9`@ zXeF(p)9DO4lg^^E=^Q$jHqzyE1zkzk(e-o#ZKkKvjr26SlkTEt(X;8B=|%KndI^0C zy_CL{zKy=0et=#{KT7w~Yw3;jCVDIV9Q{1~68$RuHhqA8hyI-Yg8q{JiateuO@Bk5 zroW}n(BIK#>F?=t^l$Vf`gi&=LoqIlE91sU8F$8m@niy+(M%u{#KbVMOdJ!>Xc#S{ zV^WxOrj#jTj7&Mbi>Y9$nTgCKW-?R5)H5y2Os0#O#mr@Tn1u|_EMgWjw=%aecQVVF zHB2wFmg!^GG3%KP%;U^P=0)ZuW*@Vkd6{{Id6jvMd7XKKd6W5+`HcCT`GWb9`HDHk ze9e5roMz55msy5oSw~jN{LZ?w-s}k0j~&g1u#s#mo5(6y9Xp0iW7F9}R?il(#cUbd zz?#{qY$H33ZDOahGuUQ!F5AP-V|jKlyM(=yUC!ReKFB`8KFU7Eu4Vh!b?ioV6Z;&y zgWbvQVt2Ezv9Ggluy3+&vG1|R*pJyy*iYGS*wgH{><{dD_80bd_A1A563&5h=R7!1 zZX`FFi{K);L{7#fb1B?7E|p8;3|uK!#u>SCu7a!Ns<=tqWUhfTb5pryuAQ69^>86}H-0R#S?l58iI>Dr;x7r51WD8qjYKQaNybRVN|Gfhl5vt$Nrogx zk}uIqN+e|xlVq}Fs-#geP0}WrDQTC?mGnsFRfM&6H8&pt4!{vO0cYR_JgSO~2{X*y z9plOGev4cgR^MFP(a{TBfGdx9suxIsJ5OWyJ|A5p^~%r6uClbx=xD30H)mPuyIRbx zoi)-hxhzALo|&YL*D7?G@yaBnHa=Y|SH@>%t1~iHTBR~4Q)!!d1Q-n>HUJ;s3q}Gz z;15QD0G{Dlp5rCF1MkQ?Z2*BF2n2%=5DLOTIPc86V0br%_hGme!`CrpPof)pnX2YNUQy=Bc$^&7Ii|O`Vo@V<)-Vkz;AEDARXLv<@>H>!+Dp z%mje=wXCZ(%iPh~)LPp~TvLryrmyYj%(S$$HJb@QgW$0`ItiKLV;Qv_<_7D7O`Y9k z<~B<^q2JBMimIm82FvV@8mVuYxt=^DB4N8L;NW0mgA6D^#9EL9e9 z(D3g3EDV!#T|j#rNCj!U2k*`MtOXe$6J+rt`BZ*9pKt`^67k9d`Jez4 z3IbL~I5vU&ZZ|g*4$m_4fcN4(YoueQHZ_~aBqk>wI-64m_Y)8M178) z3?;Y^eoB}lFr$rdA@MLM1|`4%O2>=R+FILUHi;k29Tmk!!suRdyUbKrXrs&IBtQ-~SVi!P3x?DEt^gfQ_4zff+=s2Q^>{s0DSP9yIWNygxsR z58y}hf$PCk&o^ZA>;?0|0zQn7;p1%pFjxdUdcjTL zWEc-}pgaT~ zo?L7!>guemYc{91x7T*B1rLE$pp0my^{Y79qu{X`spr7J!CBXWM}>K7q#oCDTx3-* z=vxEU@=5%dqhLMQ03IjWzY%N#Pk_zU9abqI_*Zu}wGbOy+tN0nq2Fr|9p#n0f|v8U z|H>AGrtbwlcSP>F&&Hdlz|(*%&Ni@}SMlmz@COTtC8>Hq{YAb! z5BAnb1MKALuM)i$yZ~MlICTACguO&4{`#;u%PO$1S6CAp1uuhF1wnmImM)5U#6W_{r32XN+ zTwto5&f7Vi^o|a5XL;>_gA!bOO{S&ZQk&k<-CA$7)Xy-JnDAeE#o>nkt{;~NL$6OM)Bh~&Uzn8Mfd4ZScGrtxNe>i^86HB7Pk zA{)NBuwdwP;9jUFZfhDJO}y4lyO9QH6ojS}mhsd18NIL^R`AVyi$LKhacQiPJu!Qk zmgeT#HWHLu-FJ;NP`qthC2{Gpnn-w4+g(HgNKyL7gTB@L7-M>Kv-o|opba&=WvDjP z!Ft$0w4t4!$+!IjZ5S@lBig_;X7lYMZ7gVl%|pEtY=NzO2j3|W=53GpKma7YR=9>A zYMY}I-VY+4lm^2tI1A2(b6_`|3wz)^I3F&63n33Nyb0b67s17F3A_a^g}1`n;4*kS zyaV0|m&3c@3V1iX2i^ z$8fP-x&oiKM)Y%Pq?!LPGe~Ufsv~=y(@2tH>?GM}OL={psQ(EqLsA8}&kA^MjkNgs zfUOeL*3{e--`rH!-r3S7{S34Ne9Q{?rW$F+KgIAb zfJs7;(KU6dx!rzYPFUeCs*#plAFg#_{;GzFVji8Co0%p2A7cIOC;8Mm$&wnW;rf#d zvbWySI<={>tKFJ1^)tJ&sljZ?9D2ikmanX{Ed3WO>fiC{hc61SkToUPvHn{t+}moT zY5y4e+P2QFb~AyS-qp}#$rQiZV|&gD_4XR+*x{gFXBVI!TVYqj4$Ysf0Pp;d&=gtQ zkER{e->gvY`WFKI_ZGnp@Sj$|catri;piWfgui|=nmdF86g%1xvI4ueMw;>uft8b7 ztYeUq)~|N!gE%Y5`~Q1(4z+{G*$Q>#KSwl?>@$*RilCa)Jj*~n*EX8%5p}nMeCR)B zq#b@EtiV>)NOS%nBNK%!sdj>1UTu5B?Ams-RpPT-t(WZ)^|!))^q-j;J5&F+K0xpg zc1{2VStnWjUl3r`g<%N@x5DnNk(OPbIaXVlYpBR?A&ZqbwVmwE%_dvM1J<(tPL6P+ zPPEBGRRhIX=jr^r3r;!{>{pD6=Q%4io2F;vS+g?jH zr`yYFTN}-j@Vq^PSk~Fq1pV){44yc{A+!v8_gwD%;R6@-yl@Hc|)mC7*sDgHBKU^ z>jdPJbZYth@jY^xPOTkE$`Z6pAmtXc6y1t$N_MzL+9fXwS{6YRbLdu~V zN{VL7&WFcKO~Qi6lhpG~J@O>G<#-T1D$wu{dKj%jkMKwMqx>=c{XX;laqYBSn4>_TiuPZJ`Z*ysn7^4(P@*067nuOA`o&Ay@w8=!~8e=Y5rUOOdmRmjuAqR z^WX7j2_fI#P(rx9O14EasYj*J>Xd{MnOsfOOr_N-RB=Jtfz|ySeLd`&e1lFCQqJ%{ z@aG9BKZ>iHves+s<%vCN!WIHirIF2_(4$f7$QN<|KLGMPx*&l35&eXIM!)bs^S|&H z_+R_bujnEHd5OQs|3*Mwx}n_Bq&8||_gGD7l0v2T%%MH1xZTM z3I)g=)*QK+@*A!dy-QIiBVS5xDu3DiUkM`B2%#UH~_ zebi*ChJdZbFaX2R0@%PC%4ViEk~whM$`q|mMQBkeiO44<4e)pd)h5u=Otnz0lm)|J z3_~ys#W1Xonn|@2S~@Wd$1p;mCGv*SqIv3-Ls}Ctt5!jgt961G)+pq5I=q0oSy=AB zMt0O9YB8bZ77U{?j1g#wwJx{9V4P8yHnB&c)R84t$Ye>x_$#$KAyUx|FzF8J?qOx< z9_n5K^nMKEF-#DECictF2KVEY1W~OZH*y&f>FOS>T1gzrfRm?IQEP@pw3k{-V6MZE zsH$9mspv;^c5zJ^K{QE0{H;PkEO2#?Ql%g+YY^rW)KkO4+(vCDFrUFtg`rx2sp*HA z8r5=qQjbEVP+LPY;>5=jX;;aJ><>cSO}#iQ)R(Az1nSEe>M$H5Kpoo;b^3|z6U69S zr4eL~;B2=>Z&L3PfYe*m+tdN-9Sl=29EV{lhG~7&LFzpM^e~3$7-k4SGjFKOG2`Dv z@0}9;pVI38lsXcAD+j_p>LcoNftZh}PpD6+&oIo!FbBh24D(cyFi9f{!-42jFC!?3=Oj;3P> zToOGrU}zTLPQ9T#;F2HahhCGJ2k6u78Byce~gvan^0q&w3D*Ecw zmk<3EHnB&eQ4P;y+bv0>Q)=Y$jQ*`Rx{qEj%s~R2+t<(=FuX%x@krZV zo^7vipeof`1VTRn`qt2!F}#x>bBt6mZlIq8kJC@l+dw{Qqu0>SlEO~&oVME5hVu5> z){gr2rnb&%Qt)k_W2o&UHem%1Bm{2^mmi^b&^v(>y^G#W?;%yD#m0QwFul38v2z-M zG~`-kZF84d3Z*_6-es)_r1#PkuwnyHjj{}d# z>4Wrp^db5%eS|(rAEV#Lki@MIV7L;)2Qef|{xF7Q$sc)~{s06LEjUSkM1M?w0s=97 zl+^hXWq1t3)fle9u$O#~uI{wf8ym9<$2WCkH#ap38@Plh@p2X^cdj?*cT_cz;&O5_ zN^1It-mvk4RKbat(}iZUPEwdmj;9AMia>H|Tbi1?NfFLa07AV`b0+z5&5YzAzP_FG z2TW*cn`UV>TRLfO^C=li6WPw&gADr01eW8hibL8RVGQXeLKSL}60e;Y?!s_40g`&&j+(>F z7~sT=Ws-%SjE36I+7fqETW4$4govUUc5L!LYth`oN!+A<{-eUeW0RDc{>CB)M<-_& zSJHCP&r-1;gVeC6cM_9P*G2kpNJEh`PgNVc>g&zs26Mv^cMnI;5hI6bL+bVN=4qbk z_3b4ar`44Ee57+n4dHgo|2ITkA1|GYuloddI{Jd!2L` z6&p#dBk4TqZtp@3HzSW*n0`X|TV5 zh~HXrDGihnK4+0{HVw&O@<~Gsu@+fOHp4NwOrF(d?8Wc}Vm2^*5yO|(6XQ|H=$Rt& zv(Rcn_F=dm!&fjQAFPLhA=g*>^6oZb(*KV^1T8Ws^7@d3LB`H*!6*G6BZYHG>&U}Q zB~ipG#w3Wn&=+CdRqUPA_z{LLi_99&Oc42E?q$Yp zdWC=1^LOShW+my-WL7YDGxsp}GWRj}GbD&Rj^PIweu&`-3{PT67t#PRZrU zOqoWdj+bSpE8>-zn(X-WEKN?lR<2cKE3%Vxn)EEvOGN;bw3EUsbHng(NazwbbP{p; z!FeiLn`U;I2V1X5)i@b$jdaYzLnO(A0MOdrSxz*ouC_hDqraX&459k()z)R$-SX?{ zkt>D0RGDmkTo6eVlY~7b895oU<%-NE<{1#Nk$HmI%xqz{GEXv3G258!42h&Z!|-zq zzrgTI48Owg6oy}8_zi}qH!{zHKxPNCli9`WCZC>Xh=u%?cgFAxMmZSiF(TnKMkFS? z%qL7Bs1rWxYwOI-B=aEOjMFT$i)&{!H3~735ZQ}m^68|8nKbALln%Q-6`iCuxwBgs zHqgW-0vrG)g0SPh-4c`1&ZfrJVIT-7iSV1u9fHh|$4CK`S;(!3`zH1Lq)V~Z)>7M{ zukE&Ukv0p@fhwxO_DY*Gd5bwJF!pWc0P_y>E_0B1k2%B~W{zO^9foHy{2s$|82*6a zc?^HVkVMu$Z)A=!?-PdZC4WyaCz+1~nf?VMM&Rvb;U9{|CQMe?n^msR|UhE6~>8Ln8I66yJd%em8d2wUE){#c$RJrJm%8{wC%uQX$tU zvNWjw(qKa}={{~ZcaR|7)>-Lp9o}eeAG$cg+_viiq@&EY%o*l8;)2eCeC8bU1Bp0< zNJ3<&KuWPS;qhrSw>EY4Hz5eBW1iC~-tlb{D{e%bhup#l@&LmN7}4)DKQcd&Ieun- zVJ?t)&N9D|Hws*0em9W}thu4x+*(N@bb|YYdI5B6r|6P{8v45f#W+W3TC}Hf0?7ev z6qC6S#E4j$U!~v}^9S=MneYm8l?5zh5lgW&kUX&~{qNTQ}b?~yF>O!_& zGS&9%;5`hlVE7wGgvyH;{#heUwDxQykQEa(fFLaNp@=XO2DFHTcU{)3)9Qg)4)m>I zB^X}f#~fjuSZCnGx-ffLxAB8BRakMr@OP`&{V|w}SR(}1gY_hxFl5?6Mu{P0|DHip zdoSxHr2p3)pN7fhQ^JN%b<;6Bs)}I|U{8m9P8z8{{+pb17kPRX& zSAXTqAinks+sg(E;QsM=I{{-uiHQBi{7!!Uj)ih)A{7Dw#L{tHOv~ z!)h=o)F!EOxTuQ#Hu3K)gbl=4HbnrDjFDswI}RfUKB2sbsDSN$2Acys*0Pyw7MqQc zBSuabIj?1NiG=234T#1^9ZLF-3oj?K;ww$eCE7>a6#8$K8F>=F5ijg};9vFFIWkiWHz8KV&x`Ct@?QMmPA1c`b1go%QO5%Leg{7ev0v?5P@`rk>au%Bmj zo&CBliGoQJ<<vVOk6`UM#I z4{3;FF?*BH9*R)_Mx%rVQETS1+2fHq8-BO2w+-#}WS5cNEHqkZ_8fMup+@^Ic7@ew z--}TgMnU~H7KMuV+%Mqs07k)s7V{y&Vqz5XR|9!nqc&(qNuD9vZjlB5;_VtDM(YKP zHeeLRk0HLlN35+AB0N%_CPaA3q=5*JeS#HE%-PNC7IrK9Bt|h9#bOkPQG6e}jor=^ zvd>_YfRRGTU=casHtEe%t?wit3PSA2fIlCI2gZxKE(8qKWlfFKtb=Wx5Gd@lUM3xt&ce$0SJt*S3BHy@wC34Dz|c`vJKMS^ zMl{#Y{%*hK8tW}W4jp87)A~4hISC2!th?iucJllPyCGKSg0|U^eVcuUSR?CO8Q6C* zQt}BRe-Dv{RrWA@1S4YWv;+Hz?ECD8Lz|u16YNQh)EH^_=mD;UrY%adZbaB7`HcP2 z?xC;PQyA$m8bfxN2iQlR%Cmdw40~2El;2^LyhaGHNhnQ}p9DM|mS!`t9HfL;SOD83 zKe9i8p*{EP1@@vqn$SMZlAs~gM%rb8v_IHCF-pTIbAU7saMVyNIhtcIO2;UJU`eDv zG*6*vO;d(q$vJW^c2Bu-L@Tl|$`(}LjXXCr`U_2)_>$ezUfc*9`#EACbNg}R{0NSm zKQ{`aJd6qkaSY@_hRz1AaAABgM)^Vy@6ylgKu2-0e;FDt3@sFfwyw4tn#2*W*2l>? z1*hc5dKY0tMwVb?=;Jh;meX-#Fe=4pDn@r;bf>TmK?9MO&=-oM&hI+sUws<;d;lgr|=xg0JRqcV()7?opGfl(z! zRqMHYu7E2fXJd^Vp~r+#HAa(3=I|0m4Ps{8pF@(@1(9S%SS=euVp1Wza4Fk*=G5Qd zEM69(I%8&$;HtVhL`fuWH@j6(VnUUWAd4>`vU!(l#|SCf0MT|+WSFN~+WY03K_#TGjZd|aS=y|8^4B|fYAh-=!rHYy+eRuV_XeaOC*k)g3-h^TpdP} z_=G{LY_N@L0CcEm_&M4@^z;FR6F>eeQdU;?z;l7ws3%U8gWBHA(M7}f0YpH6af|d{5 z7x|ZN&v841K>ylXA>xJz;UICu0?NX>vba~cSFMK#{g{cl;#zX~HS1fl#P2pqe}g+f z5&-T^?k(EXy_YU_icMzioEyV%ReZr6IeyVMwVJJOoD(F92T~d%EJY&V zAGx1Mls&NS_Pkij{mA_+tUfvNx4(0gyTJX*T_hO%#$Dom=PnbrUH>%8nWQ;4W3-4w z)7PG7iMU+huJ&`km%9SWtQRFvf=G%ofZ$*CYOREl&;p8oKZMM9?RnKv2}_XQCgCI! zi36#2*hLs<(-|VZVy%PJ3!_^^G@K;PLj=B8;sVNsd_OEmzr>B(i_xt_#`^_aLK3=J zHn$-0miQ1OEFsC;W8v)l5k0c zBvKM3iI$LveYw@Y--Xc%jPAzh9*pkA=st|@--sF|@sb1yseG3tN#x|GQgHAjTUm+G zL&C?0FtbVj#m{j4cM ze_SrwFd>!~9~}TE3?ViRhC%#dTM(n9!WN)PNKExu ze}F2f1`F3p#!DthCSpXeSc}p6fhbi{BdHr2dP?dg4H&J#q{)lK#KH#nfT+eS4ckdj@d|kp>)T{U{4jHrInI2@oM(O5F!G*N6{{idS|z(fY$}`18pwNA%gGkY zc(RQ$g{^1J>&7>L7DSaY%JYcgS?ecF1+ecc^qQIgEFh=rGw~ibI`4gTuWJFFKra3~(%RoaK0z z<0Fo%9eW+uIc{*==(yMMHOIFd-*G(Xc*yY+$1fdEIez1K*72OlefRm?_#wpDy z->K4Rg3~mo7AK3-Os82+bDZWn&2yUXw8Uw-)1yx7oVGYU=XAj7h|_7OADw=2`qk+- zX9s6b=K$wu=UC@>=S1fu=T_(0&WoIHbzbIthx6Ue_d4J2ywdqG=k?BeoL_Z**ZG|D z1s89ZSQn*>&Lzhs-=)x{*u~&d<}%x5p3AK+x4A5Hxx?ilmvt^1TsFEq;j+c$NtfL& z&%3q*xiTz_-@)Agzwbfes) zZr*M_ZX?}By9K$0xP`gN-Ll=9+-AA;xXpK4=(fmhiQ7`Q+uWA9t#;e!w%Ki~+f#1) z++KEj)$Mh+H{GsCIjNU)q|{#;APtd*Nh73D(nP6RS}3iM)=BH74brL74(UAU0x2)O zNxDdShjh7gh4dcjebNV{``u}Gg?pX5#l79V(|xvkw|kHKa`%<)kGMbPzQ%p6`%~`E zy6EOYZyKUvWR|e#*na!^0!cBg`YhBg!M*Bhe$tL*bF^k?&FLVelyPsPd@x znBXzVW1h#O9veI!_t@mI)nkXpZja|ZUhp{RameF{$1#uNp3a`$o*|x*p3$DMo-$9l zr_xjHS?pQs+3mT+^KH*}JP&#v@;u^s%=5VChn^=rKlc38^K;KHJx_UleL@w(0H4zIhs?(w?c>p`zoUXOY8dad(%-0KOi zEnd65p7(me>m_g2+tb_I+sAvP_jK>s-re3k-t)cJd2jcA#``(%o!;lXFMI##eRTvJ zkvpP%MCAz6i18yH8?kxB))7yQ*zQC7xchkec>DPHO!t}X)9usaGv8;w&q1FOY=5U?p=N5HOtJpp@1v!gvndyn=RJ#zHq(KAN3jJAxPIr^2+hejV6 zeQfmcz^Fh~pe9fkI5zOkz=s1L34APYP2ksoKL=h2ycl>XXlzhkP-&1cs3NE;s5+=F zs3B--(6pfGLCrz81Z@p^KIp5U?}IJ|{T2*^U4wmsM+W-`2LuNOM+L_O#|0+@%Yx;> zMZulHHwAABemZzx@PXhDgTDy=D){T*)4^wge-6G7d@=Y^@a5n?LwrM0LyAJWLKcMF z5^`6_BO&WU9uL_RvN>dH$c~U*A$vmhhP)WEFXW?8D%3qx7n%`T7+Mip7dj)fCDal+ zGqfXgUg&~QKJ=#0MWIVVmxrzleJpfy=(C|aLU)Dk3Edm|TId_0Z-pKReK+*I(C@-L z!h*u`!b-y?hfNFX3R@7yhusvmC~QgC@~{qo7+w@!5?&fUK73;MR)+E#Y&+mxSLFzAF6D@YUhH;eFv-!k-M^7XEbj zv*A0!4~Jih;35(uv=JE*`iSa?x`>8|sS(p6rbl!{bVbaGm>V%aVqwHX5&I$zMqG>p zkuH%wkztYXk+Midq&iX;nGu;CnHO0QsgEpK=q^3llGA`eD>5P2%{T;z|DzeHY) z{5^__Vxt_QoT6N#q*1X^Wl>Y2mPW0JdN^uB)H6|gqh5^K7xi+~t5NSp9f~>{^?uX` zQ759lj5-^2DH=u7(QLFN+A-QQdPMZdX#eQZ(LvGC(W>awXnk}=v?+Q*^yKK;=;_fd z(QVP~(OuEAqwkL175#ej57EEHz!;|(-`Rv3aotvHIBJ z*s9p^v6EtJV(VfXVq0S8#x9Co5&KZ=s@O+kSI73oJ`uY$c3bSzvCqZsjNKReZtMrK zr((~=o{#-0_LtaSW3R@cI3|vZbBuG2^NtIRONbjAmlc;2mlszMr;n?MGsR7an-n)C zt}bpyTvyz}xZC6Ii(47@aNMJDYvMM=ZHap-ZhPFbaXaD;$6bo&;uGVw@fq>@`0Dt& zcys);_!;r7@w4OS#?Oym7?0y`j(;@%)%YXvmlNm&mju6r(1eJD=!Ce0!~|`^*o1Kj zX$hGL*$Gn;Zb`T=VQ<1~2}cq>PB@eBbHc9)mlFO+xSA+QbV_thlqPy6dMC;fs}jwL zcO>4QxHfT1;_k$k6JJeyJ@L)Nw-b*h9#1@x_)+4giJvE)NxUe7GFO?8%uf~|3zCJ( z;$(?3IjLpU$aJ!DS&!^i**4j3*?!rZviD`5%D#}DlAV@)C;LTqQTDs+580I@kmR3~ zkz`1klZ2C&C9Ol!_9?EX5+lX2r9L{fc)LCly~QzEPY}e6KjK zxTN?)aa9SGl#)@pDt(pV$|z;5GJ&*DE0k%<3}u!wS2<64tMYc`a^>C1`;-qTpH@Dv zd{Mby`HJ#GRY>Kg3RS69TGbd;iYiA{rm9latD04dRky3wsrIPe zP`#~sS9M5rRQ0~M*s6G=Pp#C#zG{8R~3xp1MG- zS68ZQ)pOM=)a%uI)JN23)xVMY;W3(YO`*o5snOJF%$jK$i>6)ErJ19dtJ$J?L-V=j zjOK#oH_c_u6)n`#T2||+_0tAugS4UA81jO4nO31yX(wxM*Y4Er)4riSto>B`wf0-> zS?v$nU$vLCe`v4jpw3a}tn<(X>LPT}x;R~;PEB49k*rJArRxfGMY<|ogKmbdRX0=D zsq4`#&|%#o-4fk$-Tk`9bQ_YLliiYilOvMjlaqsa$>WnJB~M9iNp4H- zNS>A4ojfmjVKPo$pZs?6g_OXQs1#X>E+si7J4K&Tn$n)qnQ~joJt_C6tW0?*Wo^p# zlxI_RrtC?1A!T36D=Dw1yqWTT$_FVYQa(!gHs!mN?^Di?iy5aGryDnR+_-Ub#w{Lq z%eY&|-9GN%xR1ttGVZf+U#3Q+DpFOcn$$6=b*YxrnW-JAvr_k@zL9!7^+f8&sh_2O znfi6=x2b1SFQ;BfgK2aco92+_l;)D=mNq)AChg|5?P*8T&Zj%2N2ROM^U@2`i_=Tf z%hRjU$EQz9pORjmJ}bRDy(fJ^I!<4deoOkT>9?mZPhXM#NcvOhFQlK#fEluk%#5;( z85ua^&Wtq~eHj}vHf3zdcq-%RjOQ|TWjvp8FynB>v5eyxCo(?H_$=egjIT3JXPn8n zkm;H^DpQd;F0(vycIL9oM>C(yd?oXf%uAVnWM0XFS#(xFRzy~OmM&{z*0ikYSuI&@ zSshtjS+`|9lC?SO#jKNApJaWW^;On4S!c3GWrt@+Wyg}wz9oNVen);+KA(Sc z{^I}9*Yn@Xe<%N7{%84L=6{`kI{!@m&jp}>Dc}km3S0}^3p@+F z3t|dV3o;6_3-SsI3yKS>3dR>qDyS)FF0d4|7jzXYELd7_U%>+f4;8E`SYPm2!M6ox z3w|j0vCy&5r!c56v@oJDx-hO#Rj4f-TR5&Ty)d&-U)WG+DeNv>QnKK;A;L;9oot9IIB3fxS+VGxU#sqcw%u)ab0mk@h!!hieD)H zr1-ny--<66UnzklbO~4DSmIOSR}xSXR1#7WRuWkfU7{^1D5)*sOZrNVl$W!AgV9iFFd58-X@(hwR>Mp~hk-XNHY_zP zGu&mk$8f)4rJ>jGq~RIE4#RH4i-!G%R}HTl4jMi(d}{c@aLRDnaK>=a@SEY1;c}^@ zG@vx7G_*9LG`cjdG_h1(sw&l%jx9Bm8cQont4k-A)|A$jnoFmZPA_dKwUpjp`h4l> zGFTQ{Hok0T*^07FWhcwND*LhQm$E;N?nYl@oKa&OW6U)gjFXI0jP=H;MvJlAIL~;e z@d4vT<5R|6#@CGR7~eAf5rBST@}YF&Qx5kWGme&-7CE+11h5`<14k5 z>6KZPxs`@WBY9PQZDm7cW99V9mP$({uDr8ydF5S|cUL}JxxeyQ9i~~P zZc~qGsp$^Wa?=Xa{iX*^t4xoYwwZRDUN;>uy=!{Ubj7?mn(|4v{s$n%-Eva^_ ucB}TN_OAA+j;XGyo>E<3J+*pT_1x-()r+k=I{+c^w`7s{+xD~imj4HUB^u)Z diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index b7de39b8..00000000 --- a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 4001b4c6bf555e24d21d4723ceac5af7ccc423c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10662 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 1.0.2' pod 'LMGPUImage', '~> 0.1.9' -pod 'YYDispatchQueuePool' -end \ No newline at end of file +pod 'YYDispatchQueuePool' \ No newline at end of file From 0d269dcf254d85423193497624b26f5bcb215028 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 19 Jul 2016 14:33:25 +0800 Subject: [PATCH 039/178] Modify Click the stop button to continue reconnection --- LFLiveKit/publish/LFStreamRtmpSocket.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index 776a1a8b..67037ea7 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -123,6 +123,7 @@ - (void)_stop { _rtmp = NULL; } [self clean]; + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reconnect) object:nil]; } - (void)sendFrame:(LFFrame *)frame { @@ -488,9 +489,7 @@ void RTMPErrorCallback(RTMPError *error, void *userData) { socket.isConnected = NO; socket.isConnecting = NO; socket.isReconnecting = YES; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(socket.reconnectInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [socket reconnect]; - }); + [socket performSelector:@selector(reconnect) withObject:nil afterDelay:socket.reconnectInterval]; } else if (socket.retryTimes4netWorkBreaken >= socket.reconnectCount) { if (socket.delegate && [socket.delegate respondsToSelector:@selector(socketStatus:status:)]) { [socket.delegate socketStatus:socket status:LFLiveError]; From d883f023ca76f4c2b2fa6241305a2f7d7bb8cd3a Mon Sep 17 00:00:00 2001 From: bunnyirsa Date: Tue, 19 Jul 2016 19:37:48 +0800 Subject: [PATCH 040/178] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A6=96=E5=B8=A7?= =?UTF-8?q?=E9=9F=B3=E8=A7=86=E9=A2=91=E4=B8=8D=E5=90=8C=E6=AD=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/publish/LFStreamRtmpSocket.m | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index 67037ea7..79eccbbb 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -73,6 +73,11 @@ @interface LFStreamRtmpSocket () @property (nonatomic, assign) BOOL sendVideoHead; @property (nonatomic, assign) BOOL sendAudioHead; +@property(nonatomic, assign) +BOOL isFirstKeyframeSended; //强制第一帧必须是关键帧 +@property(nonatomic, assign) +BOOL isAudioSendStart; //在发送视频第一帧之后再发送音频 + @end @implementation LFStreamRtmpSocket @@ -129,6 +134,30 @@ - (void)_stop { - (void)sendFrame:(LFFrame *)frame { dispatch_async(YYRtmpSendQueue(), ^{ if (!frame) return; + + //强制第一帧必须是关键帧 + if (!self.isFirstKeyframeSended) { + if ([frame isKindOfClass:[LFVideoFrame class]]) { + LFVideoFrame *videoFrame = (LFVideoFrame *)frame; + if (videoFrame.isKeyFrame) { + self.isFirstKeyframeSended = YES; + dispatch_after( + dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), + dispatch_get_main_queue(), ^{ + self.isAudioSendStart = YES; + }); + } else { + return; + } + } + } + + //在发送视频第一帧之后再发送音频 + if ([frame isKindOfClass:[LFAudioFrame class]] && !self.isAudioSendStart) { + return; + } + + [self.buffer appendObject:frame]; [self sendFrame]; }); From 11848599b5a96f1e247f4986434badd76c971d87 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 20 Jul 2016 17:57:38 +0800 Subject: [PATCH 041/178] modify Weak network memory Has been increased --- LFLiveKit.xcodeproj/project.pbxproj | 2709 +++++------------ .../UserInterfaceState.xcuserstate | Bin 0 -> 11636 bytes LFLiveKit/LFLiveSession.m | 6 +- LFLiveKit/publish/LFStreamRtmpSocket.m | 94 +- .../LFLiveKitDemo.xcodeproj/project.pbxproj | 67 +- .../xcschemes/xcschememanagement.plist | 5 + .../UserInterfaceState.xcuserstate | Bin 97112 -> 101470 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 6 +- LFLiveKitDemo/Podfile | 6 +- Podfile | 6 +- 11 files changed, 832 insertions(+), 2072 deletions(-) create mode 100644 LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 4bfde1c6..ea7743d8 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -1,1994 +1,715 @@ - - - - - archiveVersion - 1 - classes - - objectVersion - 46 - objects - - 0C07D14560B9E91EA1B59306 - - children - - 840020001D0017850026C63F - 84001FFE1D00176C0026C63F - 84001FFC1D0017680026C63F - 84001FFA1D0017630026C63F - 84001FF81D00175D0026C63F - 84001FF61D0017590026C63F - B8CB02D2A92EA1F5A262F154 - B5758EB2A15DAA132D8BF380 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 817C22141AD3F2EB34365AA3 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - 📦 Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh" - - showEnvVarsInLog - 0 - - 84001F801D0015D10026C63F - - children - - 84001F8C1D0015D10026C63F - 84001F981D0015D10026C63F - 84001F8B1D0015D10026C63F - EDD4B76A07A6817C79BB4E5C - 0C07D14560B9E91EA1B59306 - - isa - PBXGroup - sourceTree - <group> - - 84001F811D0015D10026C63F - - attributes - - LastUpgradeCheck - 0730 - ORGANIZATIONNAME - admin - TargetAttributes - - 84001F891D0015D10026C63F - - CreatedOnToolsVersion - 7.3 - - 84001F931D0015D10026C63F - - CreatedOnToolsVersion - 7.3 - - - - buildConfigurationList - 84001F841D0015D10026C63F - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 - isa - PBXProject - knownRegions - - en - - mainGroup - 84001F801D0015D10026C63F - productRefGroup - 84001F8B1D0015D10026C63F - projectDirPath - - projectReferences - - projectRoot - - targets - - 84001F891D0015D10026C63F - 84001F931D0015D10026C63F - - - 84001F841D0015D10026C63F - - buildConfigurations - - 84001F9C1D0015D10026C63F - 84001F9D1D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001F851D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001FE21D0016380026C63F - 84001FE41D0016380026C63F - 84001FE61D0016380026C63F - 84001FDC1D0016380026C63F - 84001FD41D0016380026C63F - 84001FE81D0016380026C63F - B289F1DC1D3DE77F00D9C7A5 - B289F1E11D3DE77F00D9C7A5 - 84001FDE1D0016380026C63F - 84001FD21D0016380026C63F - B289F1DE1D3DE77F00D9C7A5 - 84001FD91D0016380026C63F - 84001FEC1D0016380026C63F - 84001FEA1D0016380026C63F - 84001FEE1D0016380026C63F - 84001FD71D0016380026C63F - 84001FE01D0016380026C63F - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F861D0015D10026C63F - - buildActionMask - 2147483647 - files - - 840020011D0017850026C63F - 84001FFF1D00176C0026C63F - 84001FFD1D0017680026C63F - 84001FFB1D0017630026C63F - 84001FF91D00175D0026C63F - 84001FF71D0017590026C63F - AD7F89B4621A7EFEBEA72D49 - BE55DA79155500CDEF87FB5C - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F871D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001FDB1D0016380026C63F - B289F1DD1D3DE77F00D9C7A5 - 84001FDD1D0016380026C63F - 84001FE31D0016380026C63F - B289F1DB1D3DE77F00D9C7A5 - 84001FEB1D0016380026C63F - 84001FE91D0016380026C63F - 84001FE71D0016380026C63F - 84001FD61D0016380026C63F - B289F1E01D3DE77F00D9C7A5 - 84001FDF1D0016380026C63F - 84001FD31D0016380026C63F - 84001FD11D0016380026C63F - 84001FE11D0016380026C63F - 84001FDA1D0016380026C63F - 84001FE51D0016380026C63F - 84001FED1D0016380026C63F - 84001FD81D0016380026C63F - B289F1DF1D3DE77F00D9C7A5 - 84001FD51D0016380026C63F - 84001F8E1D0015D10026C63F - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F881D0015D10026C63F - - buildActionMask - 2147483647 - files - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F891D0015D10026C63F - - buildConfigurationList - 84001F9E1D0015D10026C63F - buildPhases - - 98F2C3F394BD79A6D6B8424F - 8EE9401DCA9508E918B7FB68 - 84001F851D0015D10026C63F - 84001F861D0015D10026C63F - 84001F871D0015D10026C63F - 84001F881D0015D10026C63F - 817C22141AD3F2EB34365AA3 - 8A5D8B623E50AAC1575D1741 - - buildRules - - dependencies - - isa - PBXNativeTarget - name - LFLiveKit - productName - LFLiveKit - productReference - 84001F8A1D0015D10026C63F - productType - com.apple.product-type.framework - - 84001F8A1D0015D10026C63F - - explicitFileType - wrapper.framework - includeInIndex - 0 - isa - PBXFileReference - path - LFLiveKit.framework - sourceTree - BUILT_PRODUCTS_DIR - - 84001F8B1D0015D10026C63F - - children - - 84001F8A1D0015D10026C63F - 84001F941D0015D10026C63F - - isa - PBXGroup - name - Products - sourceTree - <group> - - 84001F8C1D0015D10026C63F - - children - - 84001F8D1D0015D10026C63F - 84001FBA1D0016380026C63F - 84001FBB1D0016380026C63F - 84001FBC1D0016380026C63F - 84001FB01D0016380026C63F - 84001FA41D0016380026C63F - 84001FA91D0016380026C63F - 84001FB51D0016380026C63F - 84001FC91D0016380026C63F - 84001F8F1D0015D10026C63F - - isa - PBXGroup - path - LFLiveKit - sourceTree - <group> - - 84001F8D1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveKit.h - sourceTree - <group> - - 84001F8E1D0015D10026C63F - - fileRef - 84001F8D1D0015D10026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001F8F1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Info.plist - sourceTree - <group> - - 84001F901D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001F9A1D0015D10026C63F - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F911D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001F951D0015D10026C63F - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F921D0015D10026C63F - - buildActionMask - 2147483647 - files - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F931D0015D10026C63F - - buildConfigurationList - 84001FA11D0015D10026C63F - buildPhases - - 84001F901D0015D10026C63F - 84001F911D0015D10026C63F - 84001F921D0015D10026C63F - - buildRules - - dependencies - - 84001F971D0015D10026C63F - - isa - PBXNativeTarget - name - LFLiveKitTests - productName - LFLiveKitTests - productReference - 84001F941D0015D10026C63F - productType - com.apple.product-type.bundle.unit-test - - 84001F941D0015D10026C63F - - explicitFileType - wrapper.cfbundle - includeInIndex - 0 - isa - PBXFileReference - path - LFLiveKitTests.xctest - sourceTree - BUILT_PRODUCTS_DIR - - 84001F951D0015D10026C63F - - fileRef - 84001F8A1D0015D10026C63F - isa - PBXBuildFile - - 84001F961D0015D10026C63F - - containerPortal - 84001F811D0015D10026C63F - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 84001F891D0015D10026C63F - remoteInfo - LFLiveKit - - 84001F971D0015D10026C63F - - isa - PBXTargetDependency - target - 84001F891D0015D10026C63F - targetProxy - 84001F961D0015D10026C63F - - 84001F981D0015D10026C63F - - children - - 84001F991D0015D10026C63F - 84001F9B1D0015D10026C63F - - isa - PBXGroup - path - LFLiveKitTests - sourceTree - <group> - - 84001F991D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveKitTests.m - sourceTree - <group> - - 84001F9A1D0015D10026C63F - - fileRef - 84001F991D0015D10026C63F - isa - PBXBuildFile - - 84001F9B1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Info.plist - sourceTree - <group> - - 84001F9C1D0015D10026C63F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_ANALYZER_NONNULL - YES - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - COPY_PHASE_STRIP - NO - CURRENT_PROJECT_VERSION - 1 - DEBUG_INFORMATION_FORMAT - dwarf - ENABLE_STRICT_OBJC_MSGSEND - YES - ENABLE_TESTABILITY - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_NO_COMMON_BLOCKS - YES - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 9.3 - MTL_ENABLE_DEBUG_INFO - YES - ONLY_ACTIVE_ARCH - YES - SDKROOT - iphoneos - TARGETED_DEVICE_FAMILY - 1,2 - VERSIONING_SYSTEM - apple-generic - VERSION_INFO_PREFIX - - - isa - XCBuildConfiguration - name - Debug - - 84001F9D1D0015D10026C63F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_ANALYZER_NONNULL - YES - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - COPY_PHASE_STRIP - NO - CURRENT_PROJECT_VERSION - 1 - DEBUG_INFORMATION_FORMAT - dwarf-with-dsym - ENABLE_NS_ASSERTIONS - NO - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_NO_COMMON_BLOCKS - YES - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 9.3 - MTL_ENABLE_DEBUG_INFO - NO - SDKROOT - iphoneos - TARGETED_DEVICE_FAMILY - 1,2 - VALIDATE_PRODUCT - YES - VERSIONING_SYSTEM - apple-generic - VERSION_INFO_PREFIX - - - isa - XCBuildConfiguration - name - Release - - 84001F9E1D0015D10026C63F - - buildConfigurations - - 84001F9F1D0015D10026C63F - 84001FA01D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001F9F1D0015D10026C63F - - baseConfigurationReference - A17586B27CD6843997425CCF - buildSettings - - DEFINES_MODULE - YES - DYLIB_COMPATIBILITY_VERSION - 1 - DYLIB_CURRENT_VERSION - 1 - DYLIB_INSTALL_NAME_BASE - @rpath - ENABLE_BITCODE - NO - INFOPLIST_FILE - LFLiveKit/Info.plist - INSTALL_PATH - $(LOCAL_LIBRARY_DIR)/Frameworks - IPHONEOS_DEPLOYMENT_TARGET - 8.0 - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKit - PRODUCT_NAME - $(TARGET_NAME) - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 84001FA01D0015D10026C63F - - baseConfigurationReference - B75B965E6B94DE4CBCC82EA7 - buildSettings - - DEFINES_MODULE - YES - DYLIB_COMPATIBILITY_VERSION - 1 - DYLIB_CURRENT_VERSION - 1 - DYLIB_INSTALL_NAME_BASE - @rpath - ENABLE_BITCODE - NO - INFOPLIST_FILE - LFLiveKit/Info.plist - INSTALL_PATH - $(LOCAL_LIBRARY_DIR)/Frameworks - IPHONEOS_DEPLOYMENT_TARGET - 8.0 - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKit - PRODUCT_NAME - $(TARGET_NAME) - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 84001FA11D0015D10026C63F - - buildConfigurations - - 84001FA21D0015D10026C63F - 84001FA31D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001FA21D0015D10026C63F - - buildSettings - - INFOPLIST_FILE - LFLiveKitTests/Info.plist - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKitTests - PRODUCT_NAME - $(TARGET_NAME) - - isa - XCBuildConfiguration - name - Debug - - 84001FA31D0015D10026C63F - - buildSettings - - INFOPLIST_FILE - LFLiveKitTests/Info.plist - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKitTests - PRODUCT_NAME - $(TARGET_NAME) - - isa - XCBuildConfiguration - name - Release - - 84001FA41D0016380026C63F - - children - - 84001FA51D0016380026C63F - 84001FA61D0016380026C63F - 84001FA71D0016380026C63F - 84001FA81D0016380026C63F - - isa - PBXGroup - path - capture - sourceTree - <group> - - 84001FA51D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioCapture.h - sourceTree - <group> - - 84001FA61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFAudioCapture.m - sourceTree - <group> - - 84001FA71D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoCapture.h - sourceTree - <group> - - 84001FA81D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFVideoCapture.m - sourceTree - <group> - - 84001FA91D0016380026C63F - - children - - 84001FAA1D0016380026C63F - 84001FAB1D0016380026C63F - 84001FAC1D0016380026C63F - 84001FAD1D0016380026C63F - 84001FAE1D0016380026C63F - 84001FAF1D0016380026C63F - - isa - PBXGroup - path - coder - sourceTree - <group> - - 84001FAA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioEncoding.h - sourceTree - <group> - - 84001FAB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFHardwareAudioEncoder.h - sourceTree - <group> - - 84001FAC1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFHardwareAudioEncoder.m - sourceTree - <group> - - 84001FAD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFHardwareVideoEncoder.h - sourceTree - <group> - - 84001FAE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFHardwareVideoEncoder.m - sourceTree - <group> - - 84001FAF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoEncoding.h - sourceTree - <group> - - 84001FB01D0016380026C63F - - children - - 84001FB11D0016380026C63F - 84001FB21D0016380026C63F - 84001FB31D0016380026C63F - 84001FB41D0016380026C63F - - isa - PBXGroup - path - configuration - sourceTree - <group> - - 84001FB11D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveAudioConfiguration.h - sourceTree - <group> - - 84001FB21D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveAudioConfiguration.m - sourceTree - <group> - - 84001FB31D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveVideoConfiguration.h - sourceTree - <group> - - 84001FB41D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveVideoConfiguration.m - sourceTree - <group> - - 84001FB51D0016380026C63F - - children - - 84001FB61D0016380026C63F - 84001FB71D0016380026C63F - 84001FB81D0016380026C63F - 84001FB91D0016380026C63F - - isa - PBXGroup - path - filter - sourceTree - <group> - - 84001FB61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFGPUImageBeautyFilter.h - sourceTree - <group> - - 84001FB71D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFGPUImageBeautyFilter.m - sourceTree - <group> - - 84001FB81D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFGPUImageEmptyFilter.h - sourceTree - <group> - - 84001FB91D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFGPUImageEmptyFilter.m - sourceTree - <group> - - 84001FBA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveSession.h - sourceTree - <group> - - 84001FBB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveSession.m - sourceTree - <group> - - 84001FBC1D0016380026C63F - - children - - 84001FBD1D0016380026C63F - 84001FBE1D0016380026C63F - 84001FBF1D0016380026C63F - 84001FC01D0016380026C63F - 84001FC11D0016380026C63F - 84001FC21D0016380026C63F - 84001FC31D0016380026C63F - 84001FC41D0016380026C63F - 84001FC51D0016380026C63F - 84001FC61D0016380026C63F - - isa - PBXGroup - path - objects - sourceTree - <group> - - 84001FBD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioFrame.h - sourceTree - <group> - - 84001FBE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFAudioFrame.m - sourceTree - <group> - - 84001FBF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFFrame.h - sourceTree - <group> - - 84001FC01D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFFrame.m - sourceTree - <group> - - 84001FC11D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveDebug.h - sourceTree - <group> - - 84001FC21D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveDebug.m - sourceTree - <group> - - 84001FC31D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveStreamInfo.h - sourceTree - <group> - - 84001FC41D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveStreamInfo.m - sourceTree - <group> - - 84001FC51D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoFrame.h - sourceTree - <group> - - 84001FC61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFVideoFrame.m - sourceTree - <group> - - 84001FC91D0016380026C63F - - children - - B289F1D41D3DE77F00D9C7A5 - B289F1D51D3DE77F00D9C7A5 - B289F1D61D3DE77F00D9C7A5 - B289F1D71D3DE77F00D9C7A5 - B289F1D81D3DE77F00D9C7A5 - B289F1D91D3DE77F00D9C7A5 - B289F1DA1D3DE77F00D9C7A5 - - isa - PBXGroup - name - publish - path - upload - sourceTree - <group> - - 84001FD11D0016380026C63F - - fileRef - 84001FA51D0016380026C63F - isa - PBXBuildFile - - 84001FD21D0016380026C63F - - fileRef - 84001FA61D0016380026C63F - isa - PBXBuildFile - - 84001FD31D0016380026C63F - - fileRef - 84001FA71D0016380026C63F - isa - PBXBuildFile - - 84001FD41D0016380026C63F - - fileRef - 84001FA81D0016380026C63F - isa - PBXBuildFile - - 84001FD51D0016380026C63F - - fileRef - 84001FAA1D0016380026C63F - isa - PBXBuildFile - - 84001FD61D0016380026C63F - - fileRef - 84001FAB1D0016380026C63F - isa - PBXBuildFile - - 84001FD71D0016380026C63F - - fileRef - 84001FAC1D0016380026C63F - isa - PBXBuildFile - - 84001FD81D0016380026C63F - - fileRef - 84001FAD1D0016380026C63F - isa - PBXBuildFile - - 84001FD91D0016380026C63F - - fileRef - 84001FAE1D0016380026C63F - isa - PBXBuildFile - - 84001FDA1D0016380026C63F - - fileRef - 84001FAF1D0016380026C63F - isa - PBXBuildFile - - 84001FDB1D0016380026C63F - - fileRef - 84001FB11D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FDC1D0016380026C63F - - fileRef - 84001FB21D0016380026C63F - isa - PBXBuildFile - - 84001FDD1D0016380026C63F - - fileRef - 84001FB31D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FDE1D0016380026C63F - - fileRef - 84001FB41D0016380026C63F - isa - PBXBuildFile - - 84001FDF1D0016380026C63F - - fileRef - 84001FB61D0016380026C63F - isa - PBXBuildFile - - 84001FE01D0016380026C63F - - fileRef - 84001FB71D0016380026C63F - isa - PBXBuildFile - - 84001FE11D0016380026C63F - - fileRef - 84001FB81D0016380026C63F - isa - PBXBuildFile - - 84001FE21D0016380026C63F - - fileRef - 84001FB91D0016380026C63F - isa - PBXBuildFile - - 84001FE31D0016380026C63F - - fileRef - 84001FBA1D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FE41D0016380026C63F - - fileRef - 84001FBB1D0016380026C63F - isa - PBXBuildFile - - 84001FE51D0016380026C63F - - fileRef - 84001FBD1D0016380026C63F - isa - PBXBuildFile - - 84001FE61D0016380026C63F - - fileRef - 84001FBE1D0016380026C63F - isa - PBXBuildFile - - 84001FE71D0016380026C63F - - fileRef - 84001FBF1D0016380026C63F - isa - PBXBuildFile - - 84001FE81D0016380026C63F - - fileRef - 84001FC01D0016380026C63F - isa - PBXBuildFile - - 84001FE91D0016380026C63F - - fileRef - 84001FC11D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FEA1D0016380026C63F - - fileRef - 84001FC21D0016380026C63F - isa - PBXBuildFile - - 84001FEB1D0016380026C63F - - fileRef - 84001FC31D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FEC1D0016380026C63F - - fileRef - 84001FC41D0016380026C63F - isa - PBXBuildFile - - 84001FED1D0016380026C63F - - fileRef - 84001FC51D0016380026C63F - isa - PBXBuildFile - - 84001FEE1D0016380026C63F - - fileRef - 84001FC61D0016380026C63F - isa - PBXBuildFile - - 84001FF61D0017590026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - AVFoundation.framework - path - System/Library/Frameworks/AVFoundation.framework - sourceTree - SDKROOT - - 84001FF71D0017590026C63F - - fileRef - 84001FF61D0017590026C63F - isa - PBXBuildFile - - 84001FF81D00175D0026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - System/Library/Frameworks/Foundation.framework - sourceTree - SDKROOT - - 84001FF91D00175D0026C63F - - fileRef - 84001FF81D00175D0026C63F - isa - PBXBuildFile - - 84001FFA1D0017630026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - UIKit.framework - path - System/Library/Frameworks/UIKit.framework - sourceTree - SDKROOT - - 84001FFB1D0017630026C63F - - fileRef - 84001FFA1D0017630026C63F - isa - PBXBuildFile - - 84001FFC1D0017680026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - AudioToolbox.framework - path - System/Library/Frameworks/AudioToolbox.framework - sourceTree - SDKROOT - - 84001FFD1D0017680026C63F - - fileRef - 84001FFC1D0017680026C63F - isa - PBXBuildFile - - 84001FFE1D00176C0026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - VideoToolbox.framework - path - System/Library/Frameworks/VideoToolbox.framework - sourceTree - SDKROOT - - 84001FFF1D00176C0026C63F - - fileRef - 84001FFE1D00176C0026C63F - isa - PBXBuildFile - - 840020001D0017850026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.text-based-dylib-definition - name - libz.tbd - path - usr/lib/libz.tbd - sourceTree - SDKROOT - - 840020011D0017850026C63F - - fileRef - 840020001D0017850026C63F - isa - PBXBuildFile - - 8A5D8B623E50AAC1575D1741 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh" - - showEnvVarsInLog - 0 - - 8EE9401DCA9508E918B7FB68 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - 📦 Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - 98F2C3F394BD79A6D6B8424F - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - A17586B27CD6843997425CCF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-LFLiveKit.debug.xcconfig - path - Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig - sourceTree - <group> - - AD7F89B4621A7EFEBEA72D49 - - fileRef - B8CB02D2A92EA1F5A262F154 - isa - PBXBuildFile - - B289F1D41D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LFStreamingBuffer.h - path - LFLiveKit/publish/LFStreamingBuffer.h - sourceTree - SOURCE_ROOT - - B289F1D51D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - LFStreamingBuffer.m - path - LFLiveKit/publish/LFStreamingBuffer.m - sourceTree - SOURCE_ROOT - - B289F1D61D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LFStreamRtmpSocket.h - path - LFLiveKit/publish/LFStreamRtmpSocket.h - sourceTree - SOURCE_ROOT - - B289F1D71D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - LFStreamRtmpSocket.m - path - LFLiveKit/publish/LFStreamRtmpSocket.m - sourceTree - SOURCE_ROOT - - B289F1D81D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LFStreamSocket.h - path - LFLiveKit/publish/LFStreamSocket.h - sourceTree - SOURCE_ROOT - - B289F1D91D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSMutableArray+LFAdd.h - path - LFLiveKit/publish/NSMutableArray+LFAdd.h - sourceTree - SOURCE_ROOT - - B289F1DA1D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSMutableArray+LFAdd.m - path - LFLiveKit/publish/NSMutableArray+LFAdd.m - sourceTree - SOURCE_ROOT - - B289F1DB1D3DE77F00D9C7A5 - - fileRef - B289F1D41D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DC1D3DE77F00D9C7A5 - - fileRef - B289F1D51D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DD1D3DE77F00D9C7A5 - - fileRef - B289F1D61D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DE1D3DE77F00D9C7A5 - - fileRef - B289F1D71D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DF1D3DE77F00D9C7A5 - - fileRef - B289F1D81D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1E01D3DE77F00D9C7A5 - - fileRef - B289F1D91D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1E11D3DE77F00D9C7A5 - - fileRef - B289F1DA1D3DE77F00D9C7A5 - isa - PBXBuildFile - - B5758EB2A15DAA132D8BF380 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods.a - sourceTree - BUILT_PRODUCTS_DIR - - B75B965E6B94DE4CBCC82EA7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-LFLiveKit.release.xcconfig - path - Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig - sourceTree - <group> - - B8CB02D2A92EA1F5A262F154 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods-LFLiveKit.a - sourceTree - BUILT_PRODUCTS_DIR - - BE55DA79155500CDEF87FB5C - - fileRef - B5758EB2A15DAA132D8BF380 - isa - PBXBuildFile - - EDD4B76A07A6817C79BB4E5C - - children - - A17586B27CD6843997425CCF - B75B965E6B94DE4CBCC82EA7 - - isa - PBXGroup - name - Pods - sourceTree - <group> - - - rootObject - 84001F811D0015D10026C63F - - +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; + 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001F991D0015D10026C63F /* LFLiveKitTests.m */; }; + 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA51D0016380026C63F /* LFAudioCapture.h */; }; + 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA61D0016380026C63F /* LFAudioCapture.m */; }; + 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA71D0016380026C63F /* LFVideoCapture.h */; }; + 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA81D0016380026C63F /* LFVideoCapture.m */; }; + 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAA1D0016380026C63F /* LFAudioEncoding.h */; }; + 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */; }; + 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */; }; + 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */; }; + 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */; }; + 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAF1D0016380026C63F /* LFVideoEncoding.h */; }; + 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */; }; + 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */; }; + 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */; }; + 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */; }; + 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */; }; + 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; + 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; }; + 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; + 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; }; + 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; + 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; + 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; + 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; + 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; + 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; + 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; + 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; + 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; + 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; + AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; + B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; + B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; + B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; + B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */; }; + B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; + B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; + B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; + BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 84001F961D0015D10026C63F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84001F811D0015D10026C63F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84001F891D0015D10026C63F; + remoteInfo = LFLiveKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; + 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LFLiveKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 84001F991D0015D10026C63F /* LFLiveKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitTests.m; sourceTree = ""; }; + 84001F9B1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84001FA51D0016380026C63F /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; + 84001FA61D0016380026C63F /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; + 84001FA71D0016380026C63F /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; + 84001FA81D0016380026C63F /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; + 84001FAA1D0016380026C63F /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; + 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; + 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; + 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; + 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; + 84001FAF1D0016380026C63F /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; + 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; + 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; + 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; + 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; + 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; + 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; + 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; + 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; + 84001FBA1D0016380026C63F /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; + 84001FBB1D0016380026C63F /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; + 84001FBD1D0016380026C63F /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; + 84001FBE1D0016380026C63F /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; + 84001FBF1D0016380026C63F /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; + 84001FC01D0016380026C63F /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; + 84001FC11D0016380026C63F /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; + 84001FC21D0016380026C63F /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; + 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; + 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; + 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; + 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; + 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; + 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; + B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; + B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; + B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; + B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamRtmpSocket.m; path = LFLiveKit/publish/LFStreamRtmpSocket.m; sourceTree = SOURCE_ROOT; }; + B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; + B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; + B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; + B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; + B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 84001F861D0015D10026C63F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 840020011D0017850026C63F /* libz.tbd in Frameworks */, + 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */, + 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */, + 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, + 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, + 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, + AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, + BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F911D0015D10026C63F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C07D14560B9E91EA1B59306 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 840020001D0017850026C63F /* libz.tbd */, + 84001FFE1D00176C0026C63F /* VideoToolbox.framework */, + 84001FFC1D0017680026C63F /* AudioToolbox.framework */, + 84001FFA1D0017630026C63F /* UIKit.framework */, + 84001FF81D00175D0026C63F /* Foundation.framework */, + 84001FF61D0017590026C63F /* AVFoundation.framework */, + B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, + B5758EB2A15DAA132D8BF380 /* libPods.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 84001F801D0015D10026C63F = { + isa = PBXGroup; + children = ( + 84001F8C1D0015D10026C63F /* LFLiveKit */, + 84001F981D0015D10026C63F /* LFLiveKitTests */, + 84001F8B1D0015D10026C63F /* Products */, + EDD4B76A07A6817C79BB4E5C /* Pods */, + 0C07D14560B9E91EA1B59306 /* Frameworks */, + ); + sourceTree = ""; + }; + 84001F8B1D0015D10026C63F /* Products */ = { + isa = PBXGroup; + children = ( + 84001F8A1D0015D10026C63F /* LFLiveKit.framework */, + 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 84001F8C1D0015D10026C63F /* LFLiveKit */ = { + isa = PBXGroup; + children = ( + 84001F8D1D0015D10026C63F /* LFLiveKit.h */, + 84001FBA1D0016380026C63F /* LFLiveSession.h */, + 84001FBB1D0016380026C63F /* LFLiveSession.m */, + 84001FBC1D0016380026C63F /* objects */, + 84001FB01D0016380026C63F /* configuration */, + 84001FA41D0016380026C63F /* capture */, + 84001FA91D0016380026C63F /* coder */, + 84001FB51D0016380026C63F /* filter */, + 84001FC91D0016380026C63F /* publish */, + 84001F8F1D0015D10026C63F /* Info.plist */, + ); + path = LFLiveKit; + sourceTree = ""; + }; + 84001F981D0015D10026C63F /* LFLiveKitTests */ = { + isa = PBXGroup; + children = ( + 84001F991D0015D10026C63F /* LFLiveKitTests.m */, + 84001F9B1D0015D10026C63F /* Info.plist */, + ); + path = LFLiveKitTests; + sourceTree = ""; + }; + 84001FA41D0016380026C63F /* capture */ = { + isa = PBXGroup; + children = ( + 84001FA51D0016380026C63F /* LFAudioCapture.h */, + 84001FA61D0016380026C63F /* LFAudioCapture.m */, + 84001FA71D0016380026C63F /* LFVideoCapture.h */, + 84001FA81D0016380026C63F /* LFVideoCapture.m */, + ); + path = capture; + sourceTree = ""; + }; + 84001FA91D0016380026C63F /* coder */ = { + isa = PBXGroup; + children = ( + 84001FAA1D0016380026C63F /* LFAudioEncoding.h */, + 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */, + 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */, + 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */, + 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */, + 84001FAF1D0016380026C63F /* LFVideoEncoding.h */, + ); + path = coder; + sourceTree = ""; + }; + 84001FB01D0016380026C63F /* configuration */ = { + isa = PBXGroup; + children = ( + 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */, + 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */, + 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */, + 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */, + ); + path = configuration; + sourceTree = ""; + }; + 84001FB51D0016380026C63F /* filter */ = { + isa = PBXGroup; + children = ( + 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */, + 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */, + 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */, + 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */, + ); + path = filter; + sourceTree = ""; + }; + 84001FBC1D0016380026C63F /* objects */ = { + isa = PBXGroup; + children = ( + 84001FBD1D0016380026C63F /* LFAudioFrame.h */, + 84001FBE1D0016380026C63F /* LFAudioFrame.m */, + 84001FBF1D0016380026C63F /* LFFrame.h */, + 84001FC01D0016380026C63F /* LFFrame.m */, + 84001FC11D0016380026C63F /* LFLiveDebug.h */, + 84001FC21D0016380026C63F /* LFLiveDebug.m */, + 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */, + 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */, + 84001FC51D0016380026C63F /* LFVideoFrame.h */, + 84001FC61D0016380026C63F /* LFVideoFrame.m */, + ); + path = objects; + sourceTree = ""; + }; + 84001FC91D0016380026C63F /* publish */ = { + isa = PBXGroup; + children = ( + B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, + B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, + B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, + B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */, + B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */, + B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */, + B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */, + ); + name = publish; + path = upload; + sourceTree = ""; + }; + EDD4B76A07A6817C79BB4E5C /* Pods */ = { + isa = PBXGroup; + children = ( + A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */, + B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 84001F871D0015D10026C63F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, + B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, + 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, + 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, + B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, + 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, + 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, + 84001FE71D0016380026C63F /* LFFrame.h in Headers */, + 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, + B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, + 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, + 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, + 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, + 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, + 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, + 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, + 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, + 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 84001F891D0015D10026C63F /* LFLiveKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; + buildPhases = ( + 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */, + 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */, + 84001F851D0015D10026C63F /* Sources */, + 84001F861D0015D10026C63F /* Frameworks */, + 84001F871D0015D10026C63F /* Headers */, + 84001F881D0015D10026C63F /* Resources */, + 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */, + 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LFLiveKit; + productName = LFLiveKit; + productReference = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 84001F931D0015D10026C63F /* LFLiveKitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */; + buildPhases = ( + 84001F901D0015D10026C63F /* Sources */, + 84001F911D0015D10026C63F /* Frameworks */, + 84001F921D0015D10026C63F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 84001F971D0015D10026C63F /* PBXTargetDependency */, + ); + name = LFLiveKitTests; + productName = LFLiveKitTests; + productReference = 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 84001F811D0015D10026C63F /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = admin; + TargetAttributes = { + 84001F891D0015D10026C63F = { + CreatedOnToolsVersion = 7.3; + }; + 84001F931D0015D10026C63F = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 84001F801D0015D10026C63F; + productRefGroup = 84001F8B1D0015D10026C63F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 84001F891D0015D10026C63F /* LFLiveKit */, + 84001F931D0015D10026C63F /* LFLiveKitTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 84001F881D0015D10026C63F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F921D0015D10026C63F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84001F851D0015D10026C63F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, + 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, + 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, + 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, + 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, + 84001FE81D0016380026C63F /* LFFrame.m in Sources */, + B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, + B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, + 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, + 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, + B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, + 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, + 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, + 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, + 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, + 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, + 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F901D0015D10026C63F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 84001F971D0015D10026C63F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 84001F891D0015D10026C63F /* LFLiveKit */; + targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 84001F9C1D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 84001F9D1D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 84001F9F1D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = LFLiveKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 84001FA01D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = LFLiveKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 84001FA21D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = LFLiveKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 84001FA31D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = LFLiveKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001F9C1D0015D10026C63F /* Debug */, + 84001F9D1D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001F9F1D0015D10026C63F /* Debug */, + 84001FA01D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001FA21D0015D10026C63F /* Debug */, + 84001FA31D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 84001F811D0015D10026C63F /* Project object */; +} diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..90ff3d38a89d4a08bcb25f998fe19e608e3df890 GIT binary patch literal 11636 zcmb_?33yXQ_xCJmnzU(hlQdhCG$~EXTIjwYN?S?=*-2X{TS=SS5^0;7q(DJnA|S6K zi-;nELJNYp;DVr{h$|=}vWbX-uY!t-D1y7<|J>ZBZ4`Zdp6`PPlFV}E%$ak3XPK#P zs`vN<>FLK1Mg&nLK~YFbf2F^Tcg)~@evh|tyu(|4BVQBnS2|q2nrR+rE^`FDO&Wx6 z-SD^?_d(G}hO{Ui=}>pn1NB6`P;b-+rJ=s4AId@nXcQWa#-OptiONtpszBq=cvOid zpeA$^@*zJ8pk_1!%|x?M3kss8Xf?VQtw#@{&1egH1U-(PKu@9_=nk|K?LyC^m(eR| zFWQgZK}XSh=mYdI`UIUrU!Y6qGWs6#ZCBTJQvTy^D)B<@NM{Z zyd1B__u@79KD-uh#GCMg=yv=N-i9B?+wpUF7v6*S;WzM`_%J?#kK*_7Y5W=f9G}DA z;*0oK{2TrqUm@{CNA$!%jKo9|h?!W3l_ZiRl0tfr-lQ+dAep3u3?`-IdNPCzB{z^^ zWH=d1oMa-IL?#oS)RIOri?op0OX0NF$yCXbLO$qw>7d6~RP_LH~B zQF4sDOHPr~E&`qV{?7|Q6xt(C>AM@3TeiTboQOjxA-T(XS-HbIBM!$et#Q^LrO*%Z9^PVGYNZ_ zRaSA1lHAPVl9HV4w9>3W#cA2OgG$o!OES~b^79IEi!yT42j>mWtK#B^mJA-}^-cFT zxoY?lZ%uOp-xvrltVf9`bqg{eBQl``WJVTbWl>DZqM3}zSqzKaf^5i+l7Isfa-bBZ zU~xtDSSr#Q3*=jimpKe(6#6~G!PY{B2# z90$Lg)4VfBx@LIlTmi3dGBgZ!d*EAt<+P`k9Gy7RdM8+X02l_V1!=jvsctMnt&}1|PRiUZKg{n~vax)9FvP5QM zc9z7tv1I1hifU0Eh;Rh_osQ~J1E_uqyADK{1%Ewk0b3}j|AhL`x@A5d6h+@5xDj4A zU*!b$+%BJ6kf*R4kyBu?Li9c2Z)bCL1B{*^{t8Xxv@oNDuXQ!o2TJ(r<~mV`_V%XH z!gPNC)O#%7gIgUi?QmoCIGE74tO6}lUZ08I?T-EePBNJLXQQ9;xr7}4PJGW5147x_oPA3tIka?xILuMXyzH+LDU0@Ii)^pbfn) zNaAW;;>>;MjVi9kpO3avvXMI3hTas&{p<0Ow(%BN$88Y)%|myvYe1z3FeIwVA;ERb z2V-h?9mmkSRa|#qszbLTa5U0*+t6`=r++(K-1Z6deifJeFIH$nCk5*NW@s3AKSZZd zYAZU$2DYM)SRt#e;!;HPXb0}U1GO-LGw4%+z*$z*iauk-thQ_f*loD?OLPHgHlnZ4 zdGs|K#7fxUjp!Rt#fz*IRIyHomU>1k2iP3oo#62r>q1{kJP;mu8(jb|0HeCdv3xyb z2)z5x?bq|(20q|x5zp&K;k26ew;D#TX5q2JLJ^an;5W5R~8q3i}Wj16Za z*vKtdf}^k$N24|@$1!Xa8_g!LYOwek=4Q2%1bDh4dn7h!n#<>c zgYb=YHP-Qyhj`q4QGNYTzrR^Hvy?wga<-pZQ5*yf_fM=yWnlOsSC=sH{rn{Y@PZK*easvgft%yZnY7Vwu(#b z@Kb=&eMKD#i@dKhba;cnksZaOQ7j&V=3ys#QAk9pU4DKdeERr$@SHPvfF_>hiIS)RE2+%>lt}cZzKzt`r0(N@fxm37*WRF(vr3IddRbP8Z_l z{Cpv7&P<;>H>^l5T#HgS;c8ri-I!-LvgxdzHEhClcpCQL8(AX@FvfzccKmR@wmt6D z0d#f5Jsok=1QB3_z^Zbrr*2wkaCn)U@C;!YANJz_Zf0KA#BO4~O(+G8z%9rDx|+rO z5c2_CnJWMsgsnkhz|Rz7D*ss5%nDb1Nc$2Zd)sx-S>p|bH4&Ym>0Td1cK#ZlrwPJr z&|ZDSkPvmj=tZdoQRapYSiuYNt$>7h5o>P6i`fi;H#K;KbPn}z%*OmZuJMA+xU z?3PwYV<2sTeL@uK_tx`(ivR<{k%k99fuBUF8#b`oaKqDhr!ad5Thxl5VYmL1l%5x) z^a9?^7PH$srSuYhHDX7v;n&%J*ln;QP&3hvk_$akLpusDx*xwCG3OwDhb>`u2ymx@ zSzUwh}2jE{7J+@XYg6Jg5Aj~M<*99 zGDgt-0-yiW&@Xb*tj8L~3}sTfGtgh=0OAvwPWA_OKvA zYXq8fBzb+qAgm6fZbugc^?x&`BQy?6?++q}fT^~zjqE}A+|0JX{|^cL3aR^GpU>+PH3q!>;6}lQ z-9kdy?pDTza8eBogP=a)YVz}L!S8}m3T=aDH9;1~yTu&}(?Z5s+#+TyAg z!BMpXuaggKgcb+N2Z)9rAuS@Q?ZctgM0(<78`ylYy-%0+exdLG{=7&Qxd!4Jl1*|* zF3BVLq=58ikFZDCV{99HoISyw+(HJx*<1(z3P}+uW>3MnY=?iZuzlNpPp<;1jGs5pso4Li2KP8G~AtefI2K{bSP76K&51p!YQ#f(X; zE_Eny#Dc|qt=HEMKcGw^rN10gZdQjQBO}Ntq-iB1+0(6LG}{q|0?}_2g?7-c|D=qJ zL#b_~oK&!#?3p$)o>a1D+4HQnGtDX+?RERZs#hzoC@P*XCmtCxOba+G^ zxltVPD0K7_MpVI<=Q>c5c!?iOo-{#^kG%jryEh7h$c)gi7s0)b_Icfq!TKXso?Lw1s9flkO5ljqo5?VwFwz{@t0 z-Q-2GhaF(=up=G7O+XLAn!y>K12?) zL+mg(ZkQ^%Byrvn7BTNQc|T&_Nm%q~=b{}|HeqrVckTaE?j1g?|B`b8IDAY#A!o>0 z@+tX@e9n%u_t**cK0C=iU>|Nl4)P`Wikv53lMCbH9K^~USUJ2`x68THLK8Q&Dlf*i&vt}AERHNg?pJSUFA>0ah8bei} zDlUDv%O4ozZD^|JfnaCuDNZYf*w-DJ2*piE_CZC#frr6GEE5Af8%5BGjHv}4!ZP@o z{3a;=FXUHtntjwpekWJhf7vBrWB)QNhZH`-dq%F+ceuAM%vJlEl+tLhXeyymRLVYP zXV|A3sf@~L4EvmY#l8U(=#2EKDiqa!^8cyq(v@<2i1JxT%WA>4|GuCDcqR)%a} zObsJ4!!Xg_H2tbXGiW9d&1UD>*Ff}wNVGZMbo9!2A=$~u&7M1cPKJ3V1hfXRZ`nnl^<6uIH1EQll_IUo%()ZhWTdC(2$4YtxuJ9zKoY%yU2dhr*$DxC$l6wXHaooT4rfZKHRz#l%y3G<>aIl4a!T;&&kcq z8&r}L-g_A>j{reBo=yO`q?PQaRyvXWEW(lCRz-i>>Ak`frcw{mJVafzn$}P^0>^Js1yTbkmVid$Uh{;3rMkv9j&<5H_y|f8Af|vqMj0<8(5Jv^EG>C<3sLINK z%U8z-oF&61c>IIwJ$2&6jb3an;b(Yi_@VxB9!O?+zYth;?Fg3zAqW$jL#34fM1@ec z?PwHPkS!L+XVj8q&C~?L+;LuGIJdVJ3Q-rgUO`@dW_m$pK}LFQRz_Yyw!0=Pv)tut$jz?s zj25U>iXXXsGQ)BW(nW&p-$EDAg+VM2;+P}T}#)|`-4~=#F`-1hH&#Qi$!n> zH6XYl2*3&T{^x79|C*M8qEkBL>pDdCE1S28u^7@Wh6Kyf}q;AR3 z?)1#&VaeLkdRLtvehb)?T$n2ETph;=m)&5yeT$kP9&on6)mlUOP=Q#nx88juwR?}A zSG%-rU$Cu5ug)9WK4~$1`=vwXHTL>q*i?uUr*Q9Hnqg13rz5zniUER|Sz$KYGJC=A zoZQGtV~)_6UjX3KMKEqrWNrO>U9}w|l#$M1d<#S_?GITFUwd7daIeQOJYiA8?S3*m zTggOua7jE29;{4+t4}XHQt`tBm7C$VZV9>vt%0kl`{6354Q+x4Dv!a#lo#Q$OB2g z6bj!)&!c=Vr-IikO{p^-XL$2 zcgSIKoSYyh$%hb&Cctx>TzF>FpAMkc(L!2GOW=`BIXtteq!Zz(O%((IHPi?A|DHrD z=^-hRR7vJY7D^UNZj&sLtdgvkJS2HSvP1HsAo(_m zMny$MN6DjNqvE1eQR*mdlrG8;l^m5DRT345S{$`A>dmMVQ5U5$sa&d;_LTOPrb+ur zGo)G49BH1kKzfaIq;#}&th7v8AssKBAe|(gBAqI&mNrOlm9COLBHbxHApItqM(d-y zM-Pauh`uS>AKe^1GrA>uW%SzUw&-oqhoetLe-!<3^qJ^Sqd$-SBKnF}lB^+3T`>vNvUK$v%;tm3=K&$kp<6`L*(a z@*?>l`7rqi`2_hS`4st7`Hk|K@)r3V`CR#8`6~Ga`NQ%@<=f;>$bXDMG5Q#DOh!!q z7(V94n7d=P#XJ%7RLs*cJ7f05yb|+T%-)!HVt$Uf65As-BX(Tuq}W?xm&dM*T@|}J zc1`Ts*jHl@#U71)H}*vA$=DBLKaRZ+`+e+>u|LQDsvru9LaLA{VidWGk&0S{SK(6x z6f+bH6e|_06!$3ZRotgor+7fILGifaNyT=>4#hKy=M>K?b}RNM4k%72F2zO1CC3%T zjfnHa&4`;H7mQmFwFpnOdExbjKmcI8XTSCp?Q_bQJn z-&MY+d|!D+`K|Ihs0xH&pvo2UG`Dhg9#YK2V)feWdzWbw+iblW;1|#HDimxC}0f%i;34LavxA;Yzt7 z+zs3`ZV~qo_cFJidy9LUJIS5mKH@&%&T^k|zo@BNrjAi7)JnBkZC7_wJJdbZz13;z ze(G!0qt%t_YPDA#P|r}$QqNV-R|nM#)JxU(sMo8vsduPfQNOOY7c}2$ zzSCUN{HB#_m0C`#(HgWStyyc;rfRda{j~$M*J%s2*K3DrhiOM>M`^v<1=`Kp?b^NC zH?;e;2eb#ZhqOnu$F#?_C$wK_zt(=Ey{NsU{a*W{_Gj&{+TXQ*#3#h}jK4O1O#IaN zS@CzoKNP<^{#g8}_|x(KjsGJ4hxp%hRHx9z=~OzS&ZINz9J&-;cU`(JLzkti(ADUC zx`1wmZkBGg?q=OQ9n&q>-Ko1vceie}ZjElO?ta~R-8S9Zy0dzjK0%+OckAcq|D#`` zU#efBU#VZE->l!Re^$Rs|APKy{j2)d_51XP^~d#R^yld)&h>M!ZP*Z-*h$q;3T zF(?d5gVvxk7z`#usv*tL&yZorGW0hLFkELSG!z?#8Acl>8>$U%L#<)Dp~2ua++>(% zSYlXVSZP>gSYudgxZkke@R(tjVYgwA;T6MchP{TPhU114h7Sy<3?CWJ8@@4IG+Z|P zVED-xWt16XjB!SlQEf~#CK;2Bsm310UdDdL0mgyGB4dfM)HuXgZmcklGgcaFjUMB4 zW23Rj=rhhS-eO#6yw&(0OLt38OK(e>CD&478Dp7Zsk3-2(=81auVt2Hw&iBaJPWhjVp(EYWx3z-uw}bt zhvgZ|bC%~VuUYn5-mvVq9Iza;yl45?a^CW@j>)v>qP4$ z>lEvBYooQv>bEvqXId9oms{6aAG1DgebTz!y2JX6b(eLw^(E_J>oMzb>j~=z*3;IH zt!J&DSDNy#}iK_ex7(a@z=yFHf)pFVr@#B+NQPX zY(s1{wwrB>Y%6Sc+3vBev8}VMx3$`~*>>2TwLNcp(e}FS4cl9`gSJDqpY7f4PWvQ# zjlID>+a9zpv@f>bZokvM%D&oupM9PELHic_WAI ze$M`#{f{JRk~~R~q)O5!nUX9?wxpz_UP&2A{gaB5Hz#jRek%E;@?{>2gPh;b+!Du>1q@6bDpj%yv&jyoJX9eW)69ETi79UnT*IL@WWQ({x% rQw%Al6myCrB`u|2N=8anN=`~%%FvXNDP`@^91%b19}&SEN~!oi$;Vgn literal 0 HcmV?d00001 diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index cd7682c6..d025aa00 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -94,11 +94,11 @@ - (void)stopLive { #pragma mark -- CaptureDelegate - (void)captureOutput:(nullable LFAudioCapture *)capture audioBuffer:(AudioBufferList)inBufferList { - [self.audioEncoder encodeAudioData:inBufferList timeStamp:self.currentTimestamp]; + if (self.uploading) [self.audioEncoder encodeAudioData:inBufferList timeStamp:self.currentTimestamp]; } - (void)captureOutput:(nullable LFVideoCapture *)capture pixelBuffer:(nullable CVImageBufferRef)pixelBuffer { - [self.videoEncoder encodeVideoData:pixelBuffer timeStamp:self.currentTimestamp]; + if (self.uploading) [self.videoEncoder encodeVideoData:pixelBuffer timeStamp:self.currentTimestamp]; } #pragma mark -- EncoderDelegate @@ -118,6 +118,8 @@ - (void)socketStatus:(nullable id)socket status:(LFLiveState)sta self.isFirstFrame = YES; self.uploading = YES; } + }else if(status == LFLiveStop || status == LFLiveError){ + self.uploading = NO; } dispatch_async(dispatch_get_main_queue(), ^{ self.state = status; diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index 79eccbbb..70809f8e 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -8,20 +8,10 @@ #import "LFStreamRtmpSocket.h" #import "rtmp.h" -#import "YYDispatchQueuePool.h" static const NSInteger RetryTimesBreaken = 20; ///< 重连1分钟 3秒一次 一共20次 static const NSInteger RetryTimesMargin = 3; -static dispatch_queue_t YYRtmpSendQueue() { - static YYDispatchQueuePool *pool; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - pool = [[YYDispatchQueuePool alloc] initWithName:@"com.youku.laifeng.rtmpsendQueue" queueCount:1 qos:NSQualityOfServiceDefault]; - }); - dispatch_queue_t queue = [pool queue]; - return queue; -} #define RTMP_RECEIVE_TIMEOUT 2 #define DATA_ITEMS_MAX_COUNT 100 @@ -59,13 +49,14 @@ @interface LFStreamRtmpSocket () @property (nonatomic, strong) LFLiveStreamInfo *stream; @property (nonatomic, strong) LFStreamingBuffer *buffer; @property (nonatomic, strong) LFLiveDebug *debugInfo; +@property (nonatomic, strong) dispatch_queue_t rtmpSendQueue; //错误信息 @property (nonatomic, assign) RTMPError error; @property (nonatomic, assign) NSInteger retryTimes4netWorkBreaken; @property (nonatomic, assign) NSInteger reconnectInterval; @property (nonatomic, assign) NSInteger reconnectCount; -@property (nonatomic, assign) BOOL isSending; +@property (atomic, assign) BOOL isSending; @property (nonatomic, assign) BOOL isConnected; @property (nonatomic, assign) BOOL isConnecting; @property (nonatomic, assign) BOOL isReconnecting; @@ -73,11 +64,6 @@ @interface LFStreamRtmpSocket () @property (nonatomic, assign) BOOL sendVideoHead; @property (nonatomic, assign) BOOL sendAudioHead; -@property(nonatomic, assign) -BOOL isFirstKeyframeSended; //强制第一帧必须是关键帧 -@property(nonatomic, assign) -BOOL isAudioSendStart; //在发送视频第一帧之后再发送音频 - @end @implementation LFStreamRtmpSocket @@ -97,7 +83,7 @@ - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream vide } - (void)start { - dispatch_async(YYRtmpSendQueue(), ^{ + dispatch_async(self.rtmpSendQueue, ^{ [self _start]; }); } @@ -113,7 +99,7 @@ - (void)_start { } - (void)stop { - dispatch_async(YYRtmpSendQueue(), ^{ + dispatch_async(self.rtmpSendQueue, ^{ [self _stop]; }); } @@ -132,35 +118,13 @@ - (void)_stop { } - (void)sendFrame:(LFFrame *)frame { - dispatch_async(YYRtmpSendQueue(), ^{ - if (!frame) return; - - //强制第一帧必须是关键帧 - if (!self.isFirstKeyframeSended) { - if ([frame isKindOfClass:[LFVideoFrame class]]) { - LFVideoFrame *videoFrame = (LFVideoFrame *)frame; - if (videoFrame.isKeyFrame) { - self.isFirstKeyframeSended = YES; - dispatch_after( - dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), - dispatch_get_main_queue(), ^{ - self.isAudioSendStart = YES; - }); - } else { - return; - } - } - } - - //在发送视频第一帧之后再发送音频 - if ([frame isKindOfClass:[LFAudioFrame class]] && !self.isAudioSendStart) { - return; - } - - - [self.buffer appendObject:frame]; - [self sendFrame]; - }); + if (!frame) return; + [self.buffer appendObject:frame]; + if(!self.isSending){ + dispatch_async(self.rtmpSendQueue, ^{ + [self sendFrame]; + }); + } } - (void)setDelegate:(id)delegate { @@ -172,13 +136,20 @@ - (void)sendFrame { if (!self.isSending && self.buffer.list.count > 0) { self.isSending = YES; - if (!_isConnected || _isReconnecting || _isConnecting || !_rtmp) return; + if (!_isConnected || _isReconnecting || _isConnecting || !_rtmp){ + self.isSending = NO; + return; + } // 调用发送接口 LFFrame *frame = [self.buffer popFirstObject]; if ([frame isKindOfClass:[LFVideoFrame class]]) { if (!self.sendVideoHead) { self.sendVideoHead = YES; + if(!((LFVideoFrame*)frame).sps || !((LFVideoFrame*)frame).pps){ + self.isSending = NO; + return; + } [self sendVideoHeader:(LFVideoFrame *)frame]; } else { [self sendVideo:(LFVideoFrame *)frame]; @@ -186,6 +157,10 @@ - (void)sendFrame { } else { if (!self.sendAudioHead) { self.sendAudioHead = YES; + if(!((LFAudioFrame*)frame).audioInfo){ + self.isSending = NO; + return; + } [self sendAudioHeader:(LFAudioFrame *)frame]; } else { [self sendAudio:frame]; @@ -358,7 +333,6 @@ - (void)sendMetaData { } - (void)sendVideoHeader:(LFVideoFrame *)videoFrame { - if (!videoFrame || !videoFrame.sps || !videoFrame.pps) return; unsigned char *body = NULL; NSInteger iIndex = 0; @@ -403,7 +377,6 @@ - (void)sendVideoHeader:(LFVideoFrame *)videoFrame { } - (void)sendVideo:(LFVideoFrame *)frame { - if (!frame || !frame.data || frame.data.length < 11) return; NSInteger i = 0; NSInteger rtmpLength = frame.data.length + 9; @@ -454,23 +427,20 @@ - (NSInteger)sendPacket:(unsigned int)nPacketType data:(unsigned char *)data siz } - (NSInteger)RtmpPacketSend:(PILI_RTMPPacket *)packet { - if (PILI_RTMP_IsConnected(_rtmp)) { + if (_rtmp && PILI_RTMP_IsConnected(_rtmp)) { int success = PILI_RTMP_SendPacket(_rtmp, packet, 0, &_error); if (success) { self.isSending = NO; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self sendFrame]; - }); - } return success; + }else{ + self.isSending = NO; } return -1; } - (void)sendAudioHeader:(LFAudioFrame *)audioFrame { - if (!audioFrame || !audioFrame.audioInfo) return; NSInteger rtmpLength = audioFrame.audioInfo.length + 2; /*spec data长度,一般是2*/ unsigned char *body = (unsigned char *)malloc(rtmpLength); @@ -485,7 +455,6 @@ - (void)sendAudioHeader:(LFAudioFrame *)audioFrame { } - (void)sendAudio:(LFFrame *)frame { - if (!frame) return; NSInteger rtmpLength = frame.data.length + 2; /*spec data长度,一般是2*/ unsigned char *body = (unsigned char *)malloc(rtmpLength); @@ -501,7 +470,7 @@ - (void)sendAudio:(LFFrame *)frame { // 断线重连 - (void)reconnect { - dispatch_async(YYRtmpSendQueue(), ^{ + dispatch_async(self.rtmpSendQueue, ^{ _isReconnecting = NO; if (_isConnected) return; @@ -518,7 +487,7 @@ void RTMPErrorCallback(RTMPError *error, void *userData) { socket.isConnected = NO; socket.isConnecting = NO; socket.isReconnecting = YES; - [socket performSelector:@selector(reconnect) withObject:nil afterDelay:socket.reconnectInterval]; + [socket performSelectorOnMainThread:@selector(reconnect) withObject:nil waitUntilDone:socket.reconnectInterval]; } else if (socket.retryTimes4netWorkBreaken >= socket.reconnectCount) { if (socket.delegate && [socket.delegate respondsToSelector:@selector(socketStatus:status:)]) { [socket.delegate socketStatus:socket status:LFLiveError]; @@ -551,4 +520,11 @@ - (LFLiveDebug *)debugInfo { return _debugInfo; } +- (dispatch_queue_t)rtmpSendQueue{ + if(!_rtmpSendQueue){ + _rtmpSendQueue = dispatch_queue_create("com.youku.LaiFeng.RtmpSendQueue", NULL); + } + return _rtmpSendQueue; +} + @end diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index 3f726390..ce1a9512 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 48030CC801EBECA515F55CA1 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 752951DE2C76DAD969BAFB60 /* libPods.a */; }; 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */; }; B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E7E1D348F3D00B34CA8 /* main.m */; }; B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E811D348F3D00B34CA8 /* AppDelegate.m */; }; @@ -31,9 +30,9 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 752951DE2C76DAD969BAFB60 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.release.xcconfig"; sourceTree = ""; }; + AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.debug.xcconfig"; sourceTree = ""; }; B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; B2D23E7E1D348F3D00B34CA8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; B2D23E801D348F3D00B34CA8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -60,7 +59,6 @@ B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; B2D23EA81D348F7100B34CA8 /* LFLivePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLivePreview.h; sourceTree = ""; }; B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLivePreview.m; sourceTree = ""; }; - DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -68,7 +66,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 48030CC801EBECA515F55CA1 /* libPods.a in Frameworks */, 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -79,8 +76,8 @@ 2A74A5AD65CD9450ED23C3E0 /* Pods */ = { isa = PBXGroup; children = ( - 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */, - DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */, + AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */, + 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -170,7 +167,6 @@ E6AF2D0BFA2946745BB5F365 /* Frameworks */ = { isa = PBXGroup; children = ( - 752951DE2C76DAD969BAFB60 /* libPods.a */, 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */, ); name = Frameworks; @@ -183,9 +179,12 @@ isa = PBXNativeTarget; buildConfigurationList = B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; buildPhases = ( + 64B4341F5B9578C3E50D0608 /* 📦 Check Pods Manifest.lock */, B2D23E761D348F3D00B34CA8 /* Sources */, B2D23E771D348F3D00B34CA8 /* Frameworks */, B2D23E781D348F3D00B34CA8 /* Resources */, + 90A9D0B9FC19DB224CE96A04 /* 📦 Embed Pods Frameworks */, + 5CD44155361B18A2D8700198 /* 📦 Copy Pods Resources */, ); buildRules = ( ); @@ -251,6 +250,54 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 5CD44155361B18A2D8700198 /* 📦 Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 64B4341F5B9578C3E50D0608 /* 📦 Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 90A9D0B9FC19DB224CE96A04 /* 📦 Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ B2D23E761D348F3D00B34CA8 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -395,7 +442,7 @@ }; B2D23E921D348F3D00B34CA8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3031CA15BBC71F3C893B86E7 /* Pods.debug.xcconfig */; + baseConfigurationReference = AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -412,7 +459,7 @@ }; B2D23E931D348F3D00B34CA8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DA52B6142E4AF28B542AB885 /* Pods.release.xcconfig */; + baseConfigurationReference = 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist index 16e8485c..4a9d18ef 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -27,6 +27,11 @@ primary + B2D23E791D348F3D00B34CA8 + + primary + + diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 0c7f868b56644c8e94b92dbb9d5af47f0c1a6ba0..922d05c52ff3dd45fe95fc17d1e279a55d2fd5de 100644 GIT binary patch literal 101470 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

    XQ1pb!Dyf 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 literal 97112 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 diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..ed9a9b4d --- /dev/null +++ b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index c8ec24ed..9578e2cb 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -78,7 +78,9 @@ - (void)requestAccessForVideo { } case AVAuthorizationStatusAuthorized: { // 已经开启授权,可继续 - [_self.session setRunning:YES]; + dispatch_async(dispatch_get_main_queue(), ^{ + [_self.session setRunning:YES]; + }); break; } case AVAuthorizationStatusDenied: @@ -332,7 +334,7 @@ - (UIButton *)startLiveButton { if (_self.startLiveButton.selected) { [_self.startLiveButton setTitle:@"结束直播" forState:UIControlStateNormal]; LFLiveStreamInfo *stream = [LFLiveStreamInfo new]; - stream.url = @"rtmp://30.96.179.95:1935/live/1234"; + stream.url = @"rtmp://live.hkstv.hk.lxdns.com:1935/live/stream123"; [_self.session startLive:stream]; } else { [_self.startLiveButton setTitle:@"开始直播" forState:UIControlStateNormal]; diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index b3660360..d2188f3d 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -1,4 +1,8 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'8.0' -pod 'LFLiveKit', path: '../' \ No newline at end of file +target 'LFLiveKitDemo' do + +pod 'LFLiveKit', path: '../' + +end \ No newline at end of file diff --git a/Podfile b/Podfile index 2a14b975..6decdf9d 100755 --- a/Podfile +++ b/Podfile @@ -2,9 +2,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'8.0' target 'LFLiveKit' do - + pod 'pili-librtmp', '~> 1.0.3' + pod 'LMGPUImage', '~> 0.1.9' end -pod 'pili-librtmp', '~> 1.0.2' -pod 'LMGPUImage', '~> 0.1.9' -pod 'YYDispatchQueuePool' \ No newline at end of file From 24f8b4288027dee554e5d77ebaeb763be1d3204d Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 21 Jul 2016 12:26:27 +0800 Subject: [PATCH 042/178] pod need 0.39,if need 1.0,please open pod file modify --- LFLiveKitDemo/Podfile | 6 ++++-- Podfile | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index d2188f3d..e3a4c53e 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -3,6 +3,8 @@ platform :ios,'8.0' target 'LFLiveKitDemo' do -pod 'LFLiveKit', path: '../' -end \ No newline at end of file + +end + +pod 'LFLiveKit', path: '../' \ No newline at end of file diff --git a/Podfile b/Podfile index 6decdf9d..d0a96c8c 100755 --- a/Podfile +++ b/Podfile @@ -2,7 +2,9 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'8.0' target 'LFLiveKit' do - pod 'pili-librtmp', '~> 1.0.3' - pod 'LMGPUImage', '~> 0.1.9' + end +pod 'pili-librtmp', '~> 1.0.3' +pod 'LMGPUImage', '~> 0.1.9' + From beac14592c4c648abe7b77c60b35f638864e7c17 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 22 Jul 2016 11:44:32 +0800 Subject: [PATCH 043/178] modify rtmp Continues to send after completion --- LFLiveKit/LFLiveSession.m | 24 ++- ...treamRtmpSocket.h => LFStreamRTMPSocket.h} | 4 +- ...treamRtmpSocket.m => LFStreamRTMPSocket.m} | 155 ++++++++++-------- LFLiveKit/publish/LFStreamingBuffer.h | 4 +- .../UserInterfaceState.xcuserstate | Bin 101470 -> 95250 bytes 5 files changed, 113 insertions(+), 74 deletions(-) rename LFLiveKit/publish/{LFStreamRtmpSocket.h => LFStreamRTMPSocket.h} (85%) rename LFLiveKit/publish/{LFStreamRtmpSocket.m => LFStreamRTMPSocket.m} (77%) diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index d025aa00..7befe001 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -11,7 +11,7 @@ #import "LFAudioCapture.h" #import "LFHardwareVideoEncoder.h" #import "LFHardwareAudioEncoder.h" -#import "LFStreamRtmpSocket.h" +#import "LFStreamRTMPSocket.h" #import "LFLiveStreamInfo.h" #import "LFGPUImageBeautyFilter.h" @@ -150,7 +150,7 @@ - (void)socketDebug:(nullable id)socket debugInfo:(nullable LFLi - (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuffferState)status { NSUInteger videoBitRate = [_videoEncoder videoBitRate]; - if (status == LFLiveBuffferIncrease) { + if (status == LFLiveBuffferDecline) { if (videoBitRate < _videoConfiguration.videoMaxBitRate) { videoBitRate = videoBitRate + 50 * 1000; [_videoEncoder setVideoBitRate:videoBitRate]; @@ -174,7 +174,9 @@ - (void)setRunning:(BOOL)running { } - (void)setPreView:(UIView *)preView { + [self willChangeValueForKey:@"preView"]; [self.videoCaptureSource setPreView:preView]; + [self didChangeValueForKey:@"preView"]; } - (UIView *)preView { @@ -182,7 +184,9 @@ - (UIView *)preView { } - (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition { + [self willChangeValueForKey:@"captureDevicePosition"]; [self.videoCaptureSource setCaptureDevicePosition:captureDevicePosition]; + [self didChangeValueForKey:@"captureDevicePosition"]; } - (AVCaptureDevicePosition)captureDevicePosition { @@ -190,7 +194,9 @@ - (AVCaptureDevicePosition)captureDevicePosition { } - (void)setBeautyFace:(BOOL)beautyFace { + [self willChangeValueForKey:@"beautyFace"]; [self.videoCaptureSource setBeautyFace:beautyFace]; + [self didChangeValueForKey:@"beautyFace"]; } - (BOOL)beautyFace { @@ -198,7 +204,9 @@ - (BOOL)beautyFace { } - (void)setBeautyLevel:(CGFloat)beautyLevel { + [self willChangeValueForKey:@"beautyLevel"]; [self.videoCaptureSource setBeautyLevel:beautyLevel]; + [self didChangeValueForKey:@"beautyLevel"]; } - (CGFloat)beautyLevel { @@ -206,7 +214,9 @@ - (CGFloat)beautyLevel { } - (void)setBrightLevel:(CGFloat)brightLevel { + [self willChangeValueForKey:@"brightLevel"]; [self.videoCaptureSource setBrightLevel:brightLevel]; + [self didChangeValueForKey:@"brightLevel"]; } - (CGFloat)brightLevel { @@ -214,7 +224,9 @@ - (CGFloat)brightLevel { } - (void)setZoomScale:(CGFloat)zoomScale { + [self willChangeValueForKey:@"zoomScale"]; [self.videoCaptureSource setZoomScale:zoomScale]; + [self didChangeValueForKey:@"zoomScale"]; } - (CGFloat)zoomScale { @@ -222,7 +234,9 @@ - (CGFloat)zoomScale { } - (void)setTorch:(BOOL)torch { + [self willChangeValueForKey:@"torch"]; [self.videoCaptureSource setTorch:torch]; + [self didChangeValueForKey:@"torch"]; } - (BOOL)torch { @@ -230,7 +244,9 @@ - (BOOL)torch { } - (void)setMirror:(BOOL)mirror { + [self willChangeValueForKey:@"mirror"]; [self.videoCaptureSource setMirror:mirror]; + [self didChangeValueForKey:@"mirror"]; } - (BOOL)mirror { @@ -238,7 +254,9 @@ - (BOOL)mirror { } - (void)setMuted:(BOOL)muted { + [self willChangeValueForKey:@"muted"]; [self.audioCaptureSource setMuted:muted]; + [self didChangeValueForKey:@"muted"]; } - (BOOL)muted { @@ -279,7 +297,7 @@ - (LFVideoCapture *)videoCaptureSource { - (id)socket { if (!_socket) { - _socket = [[LFStreamRtmpSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; + _socket = [[LFStreamRTMPSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; [_socket setDelegate:self]; } return _socket; diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.h b/LFLiveKit/publish/LFStreamRTMPSocket.h similarity index 85% rename from LFLiveKit/publish/LFStreamRtmpSocket.h rename to LFLiveKit/publish/LFStreamRTMPSocket.h index c7a868a3..7006cabb 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.h +++ b/LFLiveKit/publish/LFStreamRTMPSocket.h @@ -1,5 +1,5 @@ // -// LFStreamRtmpSocket.h +// LFStreamRTMPSocket.h // LaiFeng // // Created by admin on 16/5/18. @@ -8,7 +8,7 @@ #import "LFStreamSocket.h" -@interface LFStreamRtmpSocket : NSObject +@interface LFStreamRTMPSocket : NSObject #pragma mark - Initializer ///============================================================================= diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRTMPSocket.m similarity index 77% rename from LFLiveKit/publish/LFStreamRtmpSocket.m rename to LFLiveKit/publish/LFStreamRTMPSocket.m index 70809f8e..2a6dbeed 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRTMPSocket.m @@ -1,12 +1,12 @@ // -// LFStreamRtmpSocket.m +// LFStreamRTMPSocket.m // LFLiveKit // // Created by admin on 16/5/18. // Copyright © 2016年 live Interactive. All rights reserved. // -#import "LFStreamRtmpSocket.h" +#import "LFStreamRTMPSocket.h" #import "rtmp.h" static const NSInteger RetryTimesBreaken = 20; ///< 重连1分钟 3秒一次 一共20次 @@ -41,7 +41,7 @@ SAVC(avc1); SAVC(mp4a); -@interface LFStreamRtmpSocket () +@interface LFStreamRTMPSocket () { PILI_RTMP *_rtmp; } @@ -66,7 +66,7 @@ @interface LFStreamRtmpSocket () @end -@implementation LFStreamRtmpSocket +@implementation LFStreamRTMPSocket #pragma mark -- LFStreamSocket - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount { @@ -78,10 +78,16 @@ - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream vide if (reconnectCount > 0) _reconnectCount = reconnectCount; else _reconnectCount = RetryTimesBreaken; + + [self addObserver:self forKeyPath:@"isSending" options:NSKeyValueObservingOptionNew context:nil];//这里改成observer主要考虑一直到发送出错情况下,可以继续发送 } return self; } +- (void)dealloc{ + [self removeObserver:self forKeyPath:@"isSending"]; +} + - (void)start { dispatch_async(self.rtmpSendQueue, ^{ [self _start]; @@ -114,16 +120,14 @@ - (void)_stop { _rtmp = NULL; } [self clean]; - [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(reconnect) object:nil]; + [NSObject cancelPreviousPerformRequestsWithTarget:self]; } - (void)sendFrame:(LFFrame *)frame { if (!frame) return; [self.buffer appendObject:frame]; if(!self.isSending){ - dispatch_async(self.rtmpSendQueue, ^{ - [self sendFrame]; - }); + [self sendFrame]; } } @@ -133,68 +137,75 @@ - (void)setDelegate:(id)delegate { #pragma mark -- CustomMethod - (void)sendFrame { - if (!self.isSending && self.buffer.list.count > 0) { - self.isSending = YES; + dispatch_async(self.rtmpSendQueue, ^{ + if (!self.isSending && self.buffer.list.count > 0) { + self.isSending = YES; - if (!_isConnected || _isReconnecting || _isConnecting || !_rtmp){ - self.isSending = NO; - return; - } + if (!_isConnected || _isReconnecting || _isConnecting || !_rtmp){ + self.isSending = NO; + return; + } - // 调用发送接口 - LFFrame *frame = [self.buffer popFirstObject]; - if ([frame isKindOfClass:[LFVideoFrame class]]) { - if (!self.sendVideoHead) { - self.sendVideoHead = YES; - if(!((LFVideoFrame*)frame).sps || !((LFVideoFrame*)frame).pps){ - self.isSending = NO; - return; + // 调用发送接口 + LFFrame *frame = [self.buffer popFirstObject]; + if ([frame isKindOfClass:[LFVideoFrame class]]) { + if (!self.sendVideoHead) { + self.sendVideoHead = YES; + if(!((LFVideoFrame*)frame).sps || !((LFVideoFrame*)frame).pps){ + self.isSending = NO; + return; + } + [self sendVideoHeader:(LFVideoFrame *)frame]; + } else { + [self sendVideo:(LFVideoFrame *)frame]; } - [self sendVideoHeader:(LFVideoFrame *)frame]; } else { - [self sendVideo:(LFVideoFrame *)frame]; - } - } else { - if (!self.sendAudioHead) { - self.sendAudioHead = YES; - if(!((LFAudioFrame*)frame).audioInfo){ - self.isSending = NO; - return; + if (!self.sendAudioHead) { + self.sendAudioHead = YES; + if(!((LFAudioFrame*)frame).audioInfo){ + self.isSending = NO; + return; + } + [self sendAudioHeader:(LFAudioFrame *)frame]; + } else { + [self sendAudio:frame]; } - [self sendAudioHeader:(LFAudioFrame *)frame]; - } else { - [self sendAudio:frame]; } - } - self.debugInfo.totalFrame++; - self.debugInfo.dropFrame += self.buffer.lastDropFrames; - self.buffer.lastDropFrames = 0; + self.debugInfo.totalFrame++; + self.debugInfo.dropFrame += self.buffer.lastDropFrames; + self.buffer.lastDropFrames = 0; + + self.debugInfo.dataFlow += frame.data.length; + self.debugInfo.elapsedMilli = CACurrentMediaTime() * 1000 - self.debugInfo.timeStamp; + if (self.debugInfo.elapsedMilli < 1000) { + self.debugInfo.bandwidth += frame.data.length; + if ([frame isKindOfClass:[LFAudioFrame class]]) { + self.debugInfo.capturedAudioCount++; + } else { + self.debugInfo.capturedVideoCount++; + } - self.debugInfo.dataFlow += frame.data.length; - self.debugInfo.elapsedMilli = CACurrentMediaTime() * 1000 - self.debugInfo.timeStamp; - if (self.debugInfo.elapsedMilli < 1000) { - self.debugInfo.bandwidth += frame.data.length; - if ([frame isKindOfClass:[LFAudioFrame class]]) { - self.debugInfo.capturedAudioCount++; + self.debugInfo.unSendCount = self.buffer.list.count; } else { - self.debugInfo.capturedVideoCount++; - } - - self.debugInfo.unSendCount = self.buffer.list.count; - } else { - self.debugInfo.currentBandwidth = self.debugInfo.bandwidth; - self.debugInfo.currentCapturedAudioCount = self.debugInfo.capturedAudioCount; - self.debugInfo.currentCapturedVideoCount = self.debugInfo.capturedVideoCount; - if (self.delegate && [self.delegate respondsToSelector:@selector(socketDebug:debugInfo:)]) { - [self.delegate socketDebug:self debugInfo:self.debugInfo]; + self.debugInfo.currentBandwidth = self.debugInfo.bandwidth; + self.debugInfo.currentCapturedAudioCount = self.debugInfo.capturedAudioCount; + self.debugInfo.currentCapturedVideoCount = self.debugInfo.capturedVideoCount; + if (self.delegate && [self.delegate respondsToSelector:@selector(socketDebug:debugInfo:)]) { + [self.delegate socketDebug:self debugInfo:self.debugInfo]; + } + self.debugInfo.bandwidth = 0; + self.debugInfo.capturedAudioCount = 0; + self.debugInfo.capturedVideoCount = 0; + self.debugInfo.timeStamp = CACurrentMediaTime() * 1000; } - self.debugInfo.bandwidth = 0; - self.debugInfo.capturedAudioCount = 0; - self.debugInfo.capturedVideoCount = 0; - self.debugInfo.timeStamp = CACurrentMediaTime() * 1000; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + //< 这里只为了不循环调用sendFrame方法 调用栈是保证先出栈再进栈 + self.isSending = NO; + }); + } - } + }); } - (void)clean { @@ -429,14 +440,8 @@ - (NSInteger)sendPacket:(unsigned int)nPacketType data:(unsigned char *)data siz - (NSInteger)RtmpPacketSend:(PILI_RTMPPacket *)packet { if (_rtmp && PILI_RTMP_IsConnected(_rtmp)) { int success = PILI_RTMP_SendPacket(_rtmp, packet, 0, &_error); - if (success) { - self.isSending = NO; - } return success; - }else{ - self.isSending = NO; } - return -1; } @@ -481,7 +486,7 @@ - (void)reconnect { #pragma mark -- CallBack void RTMPErrorCallback(RTMPError *error, void *userData) { - LFStreamRtmpSocket *socket = (__bridge LFStreamRtmpSocket *)userData; + LFStreamRTMPSocket *socket = (__bridge LFStreamRTMPSocket *)userData; if (error->code < 0) { if (socket.retryTimes4netWorkBreaken++ < socket.reconnectCount && !socket.isReconnecting) { socket.isConnected = NO; @@ -500,7 +505,23 @@ void RTMPErrorCallback(RTMPError *error, void *userData) { } void ConnectionTimeCallback(PILI_CONNECTION_TIME *conn_time, void *userData) { - //LFStreamRtmpSocket *socket = (__bridge LFStreamRtmpSocket*)userData; + //LFStreamRTMPSocket *socket = (__bridge LFStreamRTMPSocket*)userData; +} + +#pragma mark -- LFStreamingBufferDelegate +- (void)streamingBuffer:(nullable LFStreamingBuffer *)buffer bufferState:(LFLiveBuffferState)state{ + if(self.delegate && [self.delegate respondsToSelector:@selector(socketBufferStatus:status:)]){ + [self.delegate socketBufferStatus:self status:state]; + } +} + +#pragma mark -- Observer +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ + if([keyPath isEqualToString:@"isSending"]){ + if(!self.isSending){ + [self sendFrame]; + } + } } #pragma mark -- Getter Setter diff --git a/LFLiveKit/publish/LFStreamingBuffer.h b/LFLiveKit/publish/LFStreamingBuffer.h index 10f10f92..585a269b 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.h +++ b/LFLiveKit/publish/LFStreamingBuffer.h @@ -13,8 +13,8 @@ /** current buffer status */ typedef NS_ENUM (NSUInteger, LFLiveBuffferState) { LFLiveBuffferUnknown = 0, //< 未知 - LFLiveBuffferIncrease = 1, //< 缓冲区状态好可以增加码率 - LFLiveBuffferDecline = 2 //< 缓冲区状态差应该降低码率 + LFLiveBuffferIncrease = 1, //< 缓冲区状态差应该降低码率 + LFLiveBuffferDecline = 2 //< 缓冲区状态好应该提升码率 }; @class LFStreamingBuffer; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 922d05c52ff3dd45fe95fc17d1e279a55d2fd5de..59e059bccb6cb2981fd990ea9bd6f32d29f12f3c 100644 GIT binary patch literal 95250 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 Ag8%>k literal 101470 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

    XQ1pb!Dyf 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 From c86a88487d9fde7526a344c76dc80bcb1ffb412a Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 22 Jul 2016 11:48:07 +0800 Subject: [PATCH 044/178] add Note --- LFLiveKit/publish/LFStreamRTMPSocket.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/LFLiveKit/publish/LFStreamRTMPSocket.m b/LFLiveKit/publish/LFStreamRTMPSocket.m index 2a6dbeed..40ea8e88 100644 --- a/LFLiveKit/publish/LFStreamRTMPSocket.m +++ b/LFLiveKit/publish/LFStreamRTMPSocket.m @@ -172,6 +172,7 @@ - (void)sendFrame { } } + //debug更新 self.debugInfo.totalFrame++; self.debugInfo.dropFrame += self.buffer.lastDropFrames; self.buffer.lastDropFrames = 0; @@ -199,6 +200,8 @@ - (void)sendFrame { self.debugInfo.capturedVideoCount = 0; self.debugInfo.timeStamp = CACurrentMediaTime() * 1000; } + + //修改发送状态 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //< 这里只为了不循环调用sendFrame方法 调用栈是保证先出栈再进栈 self.isSending = NO; From 6a971f872f3b67d128284b35e25506890a665312 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 22 Jul 2016 11:56:12 +0800 Subject: [PATCH 045/178] update version --- LFLiveKit.podspec | 2 +- LFLiveKit/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index eacb9b01..55f5618a 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.8.0" + s.version = "1.9.0" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 9e0be357..6e2e047f 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.8.0 + 1.9.0 CFBundleSignature ???? CFBundleVersion From fb9ecaabad72a6517f44b78ecc37dd870c5c04d3 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Mon, 25 Jul 2016 15:00:24 +0800 Subject: [PATCH 046/178] add LFH264VideoEncoder for iOS7 --- LFLiveKit.podspec | 11 +- LFLiveKit.xcodeproj/project.pbxproj | 2761 +++++------------ LFLiveKit/LFLiveSession.m | 24 +- LFLiveKit/coder/H264/AVEncoder.h | 36 + LFLiveKit/coder/H264/AVEncoder.mm | 439 +++ LFLiveKit/coder/H264/LICENSE.markdown | 15 + LFLiveKit/coder/H264/MP4Atom.h | 30 + LFLiveKit/coder/H264/MP4Atom.m | 90 + LFLiveKit/coder/H264/NALUnit.cpp | 424 +++ LFLiveKit/coder/H264/NALUnit.h | 242 ++ LFLiveKit/coder/H264/VideoEncoder.h | 27 + LFLiveKit/coder/H264/VideoEncoder.m | 76 + LFLiveKit/coder/LFH264VideoEncoder.h | 16 + LFLiveKit/coder/LFH264VideoEncoder.mm | 270 ++ LFLiveKit/coder/LFHardwareAudioEncoder.m | 3 +- LFLiveKit/coder/LFHardwareVideoEncoder.m | 3 +- LFLiveKit/publish/LFStreamRtmpSocket.m | 36 + .../LFLiveKitDemo.xcodeproj/project.pbxproj | 4 +- .../UserInterfaceState.xcuserstate | Bin 15246 -> 35099 bytes LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 2 +- LFLiveKitDemo/Podfile | 2 +- .../UserInterfaceState.xcuserstate | Bin 9923 -> 10675 bytes .../UserInterfaceState.xcuserstate | Bin 24866 -> 25840 bytes LFLiveKitSwiftDemo/Podfile | 2 +- Podfile | 2 +- 25 files changed, 2499 insertions(+), 2016 deletions(-) create mode 100755 LFLiveKit/coder/H264/AVEncoder.h create mode 100755 LFLiveKit/coder/H264/AVEncoder.mm create mode 100755 LFLiveKit/coder/H264/LICENSE.markdown create mode 100755 LFLiveKit/coder/H264/MP4Atom.h create mode 100755 LFLiveKit/coder/H264/MP4Atom.m create mode 100755 LFLiveKit/coder/H264/NALUnit.cpp create mode 100755 LFLiveKit/coder/H264/NALUnit.h create mode 100755 LFLiveKit/coder/H264/VideoEncoder.h create mode 100755 LFLiveKit/coder/H264/VideoEncoder.m create mode 100644 LFLiveKit/coder/LFH264VideoEncoder.h create mode 100644 LFLiveKit/coder/LFH264VideoEncoder.mm diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index eacb9b01..070a976d 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -7,19 +7,18 @@ Pod::Spec.new do |s| s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } s.author = { "chenliming" => "chenliming777@qq.com" } - s.platform = :ios, "8.0" - s.ios.deployment_target = "8.0" + s.platform = :ios, "7.0" + s.ios.deployment_target = "7.0" s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" } - s.source_files = "LFLiveKit/**/*.{h,m}" + s.source_files = "LFLiveKit/**/*.{h,m,mm,cpp}" s.public_header_files = "LFLiveKit/**/*.h" s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" - s.library = "z" + s.libraries = "c++", "z" s.requires_arc = true s.dependency 'LMGPUImage', '~> 0.1.9' - s.dependency "pili-librtmp", "~> 1.0.3" s.dependency "YYDispatchQueuePool" - + s.dependency "pili-librtmp", '1.0.3' end diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 4bfde1c6..5db492ad 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -1,1994 +1,767 @@ - - - - - archiveVersion - 1 - classes - - objectVersion - 46 - objects - - 0C07D14560B9E91EA1B59306 - - children - - 840020001D0017850026C63F - 84001FFE1D00176C0026C63F - 84001FFC1D0017680026C63F - 84001FFA1D0017630026C63F - 84001FF81D00175D0026C63F - 84001FF61D0017590026C63F - B8CB02D2A92EA1F5A262F154 - B5758EB2A15DAA132D8BF380 - - isa - PBXGroup - name - Frameworks - sourceTree - <group> - - 817C22141AD3F2EB34365AA3 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - 📦 Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh" - - showEnvVarsInLog - 0 - - 84001F801D0015D10026C63F - - children - - 84001F8C1D0015D10026C63F - 84001F981D0015D10026C63F - 84001F8B1D0015D10026C63F - EDD4B76A07A6817C79BB4E5C - 0C07D14560B9E91EA1B59306 - - isa - PBXGroup - sourceTree - <group> - - 84001F811D0015D10026C63F - - attributes - - LastUpgradeCheck - 0730 - ORGANIZATIONNAME - admin - TargetAttributes - - 84001F891D0015D10026C63F - - CreatedOnToolsVersion - 7.3 - - 84001F931D0015D10026C63F - - CreatedOnToolsVersion - 7.3 - - - - buildConfigurationList - 84001F841D0015D10026C63F - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 - isa - PBXProject - knownRegions - - en - - mainGroup - 84001F801D0015D10026C63F - productRefGroup - 84001F8B1D0015D10026C63F - projectDirPath - - projectReferences - - projectRoot - - targets - - 84001F891D0015D10026C63F - 84001F931D0015D10026C63F - - - 84001F841D0015D10026C63F - - buildConfigurations - - 84001F9C1D0015D10026C63F - 84001F9D1D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001F851D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001FE21D0016380026C63F - 84001FE41D0016380026C63F - 84001FE61D0016380026C63F - 84001FDC1D0016380026C63F - 84001FD41D0016380026C63F - 84001FE81D0016380026C63F - B289F1DC1D3DE77F00D9C7A5 - B289F1E11D3DE77F00D9C7A5 - 84001FDE1D0016380026C63F - 84001FD21D0016380026C63F - B289F1DE1D3DE77F00D9C7A5 - 84001FD91D0016380026C63F - 84001FEC1D0016380026C63F - 84001FEA1D0016380026C63F - 84001FEE1D0016380026C63F - 84001FD71D0016380026C63F - 84001FE01D0016380026C63F - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F861D0015D10026C63F - - buildActionMask - 2147483647 - files - - 840020011D0017850026C63F - 84001FFF1D00176C0026C63F - 84001FFD1D0017680026C63F - 84001FFB1D0017630026C63F - 84001FF91D00175D0026C63F - 84001FF71D0017590026C63F - AD7F89B4621A7EFEBEA72D49 - BE55DA79155500CDEF87FB5C - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F871D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001FDB1D0016380026C63F - B289F1DD1D3DE77F00D9C7A5 - 84001FDD1D0016380026C63F - 84001FE31D0016380026C63F - B289F1DB1D3DE77F00D9C7A5 - 84001FEB1D0016380026C63F - 84001FE91D0016380026C63F - 84001FE71D0016380026C63F - 84001FD61D0016380026C63F - B289F1E01D3DE77F00D9C7A5 - 84001FDF1D0016380026C63F - 84001FD31D0016380026C63F - 84001FD11D0016380026C63F - 84001FE11D0016380026C63F - 84001FDA1D0016380026C63F - 84001FE51D0016380026C63F - 84001FED1D0016380026C63F - 84001FD81D0016380026C63F - B289F1DF1D3DE77F00D9C7A5 - 84001FD51D0016380026C63F - 84001F8E1D0015D10026C63F - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F881D0015D10026C63F - - buildActionMask - 2147483647 - files - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F891D0015D10026C63F - - buildConfigurationList - 84001F9E1D0015D10026C63F - buildPhases - - 98F2C3F394BD79A6D6B8424F - 8EE9401DCA9508E918B7FB68 - 84001F851D0015D10026C63F - 84001F861D0015D10026C63F - 84001F871D0015D10026C63F - 84001F881D0015D10026C63F - 817C22141AD3F2EB34365AA3 - 8A5D8B623E50AAC1575D1741 - - buildRules - - dependencies - - isa - PBXNativeTarget - name - LFLiveKit - productName - LFLiveKit - productReference - 84001F8A1D0015D10026C63F - productType - com.apple.product-type.framework - - 84001F8A1D0015D10026C63F - - explicitFileType - wrapper.framework - includeInIndex - 0 - isa - PBXFileReference - path - LFLiveKit.framework - sourceTree - BUILT_PRODUCTS_DIR - - 84001F8B1D0015D10026C63F - - children - - 84001F8A1D0015D10026C63F - 84001F941D0015D10026C63F - - isa - PBXGroup - name - Products - sourceTree - <group> - - 84001F8C1D0015D10026C63F - - children - - 84001F8D1D0015D10026C63F - 84001FBA1D0016380026C63F - 84001FBB1D0016380026C63F - 84001FBC1D0016380026C63F - 84001FB01D0016380026C63F - 84001FA41D0016380026C63F - 84001FA91D0016380026C63F - 84001FB51D0016380026C63F - 84001FC91D0016380026C63F - 84001F8F1D0015D10026C63F - - isa - PBXGroup - path - LFLiveKit - sourceTree - <group> - - 84001F8D1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveKit.h - sourceTree - <group> - - 84001F8E1D0015D10026C63F - - fileRef - 84001F8D1D0015D10026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001F8F1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Info.plist - sourceTree - <group> - - 84001F901D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001F9A1D0015D10026C63F - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F911D0015D10026C63F - - buildActionMask - 2147483647 - files - - 84001F951D0015D10026C63F - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F921D0015D10026C63F - - buildActionMask - 2147483647 - files - - isa - PBXResourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 84001F931D0015D10026C63F - - buildConfigurationList - 84001FA11D0015D10026C63F - buildPhases - - 84001F901D0015D10026C63F - 84001F911D0015D10026C63F - 84001F921D0015D10026C63F - - buildRules - - dependencies - - 84001F971D0015D10026C63F - - isa - PBXNativeTarget - name - LFLiveKitTests - productName - LFLiveKitTests - productReference - 84001F941D0015D10026C63F - productType - com.apple.product-type.bundle.unit-test - - 84001F941D0015D10026C63F - - explicitFileType - wrapper.cfbundle - includeInIndex - 0 - isa - PBXFileReference - path - LFLiveKitTests.xctest - sourceTree - BUILT_PRODUCTS_DIR - - 84001F951D0015D10026C63F - - fileRef - 84001F8A1D0015D10026C63F - isa - PBXBuildFile - - 84001F961D0015D10026C63F - - containerPortal - 84001F811D0015D10026C63F - isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - 84001F891D0015D10026C63F - remoteInfo - LFLiveKit - - 84001F971D0015D10026C63F - - isa - PBXTargetDependency - target - 84001F891D0015D10026C63F - targetProxy - 84001F961D0015D10026C63F - - 84001F981D0015D10026C63F - - children - - 84001F991D0015D10026C63F - 84001F9B1D0015D10026C63F - - isa - PBXGroup - path - LFLiveKitTests - sourceTree - <group> - - 84001F991D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveKitTests.m - sourceTree - <group> - - 84001F9A1D0015D10026C63F - - fileRef - 84001F991D0015D10026C63F - isa - PBXBuildFile - - 84001F9B1D0015D10026C63F - - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Info.plist - sourceTree - <group> - - 84001F9C1D0015D10026C63F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_ANALYZER_NONNULL - YES - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - COPY_PHASE_STRIP - NO - CURRENT_PROJECT_VERSION - 1 - DEBUG_INFORMATION_FORMAT - dwarf - ENABLE_STRICT_OBJC_MSGSEND - YES - ENABLE_TESTABILITY - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_NO_COMMON_BLOCKS - YES - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 9.3 - MTL_ENABLE_DEBUG_INFO - YES - ONLY_ACTIVE_ARCH - YES - SDKROOT - iphoneos - TARGETED_DEVICE_FAMILY - 1,2 - VERSIONING_SYSTEM - apple-generic - VERSION_INFO_PREFIX - - - isa - XCBuildConfiguration - name - Debug - - 84001F9D1D0015D10026C63F - - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - CLANG_ANALYZER_NONNULL - YES - CLANG_CXX_LANGUAGE_STANDARD - gnu++0x - CLANG_CXX_LIBRARY - libc++ - CLANG_ENABLE_MODULES - YES - CLANG_ENABLE_OBJC_ARC - YES - CLANG_WARN_BOOL_CONVERSION - YES - CLANG_WARN_CONSTANT_CONVERSION - YES - CLANG_WARN_DIRECT_OBJC_ISA_USAGE - YES_ERROR - CLANG_WARN_EMPTY_BODY - YES - CLANG_WARN_ENUM_CONVERSION - YES - CLANG_WARN_INT_CONVERSION - YES - CLANG_WARN_OBJC_ROOT_CLASS - YES_ERROR - CLANG_WARN_UNREACHABLE_CODE - YES - CLANG_WARN__DUPLICATE_METHOD_MATCH - YES - CODE_SIGN_IDENTITY[sdk=iphoneos*] - iPhone Developer - COPY_PHASE_STRIP - NO - CURRENT_PROJECT_VERSION - 1 - DEBUG_INFORMATION_FORMAT - dwarf-with-dsym - ENABLE_NS_ASSERTIONS - NO - ENABLE_STRICT_OBJC_MSGSEND - YES - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_NO_COMMON_BLOCKS - YES - GCC_WARN_64_TO_32_BIT_CONVERSION - YES - GCC_WARN_ABOUT_RETURN_TYPE - YES_ERROR - GCC_WARN_UNDECLARED_SELECTOR - YES - GCC_WARN_UNINITIALIZED_AUTOS - YES_AGGRESSIVE - GCC_WARN_UNUSED_FUNCTION - YES - GCC_WARN_UNUSED_VARIABLE - YES - IPHONEOS_DEPLOYMENT_TARGET - 9.3 - MTL_ENABLE_DEBUG_INFO - NO - SDKROOT - iphoneos - TARGETED_DEVICE_FAMILY - 1,2 - VALIDATE_PRODUCT - YES - VERSIONING_SYSTEM - apple-generic - VERSION_INFO_PREFIX - - - isa - XCBuildConfiguration - name - Release - - 84001F9E1D0015D10026C63F - - buildConfigurations - - 84001F9F1D0015D10026C63F - 84001FA01D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001F9F1D0015D10026C63F - - baseConfigurationReference - A17586B27CD6843997425CCF - buildSettings - - DEFINES_MODULE - YES - DYLIB_COMPATIBILITY_VERSION - 1 - DYLIB_CURRENT_VERSION - 1 - DYLIB_INSTALL_NAME_BASE - @rpath - ENABLE_BITCODE - NO - INFOPLIST_FILE - LFLiveKit/Info.plist - INSTALL_PATH - $(LOCAL_LIBRARY_DIR)/Frameworks - IPHONEOS_DEPLOYMENT_TARGET - 8.0 - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKit - PRODUCT_NAME - $(TARGET_NAME) - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 84001FA01D0015D10026C63F - - baseConfigurationReference - B75B965E6B94DE4CBCC82EA7 - buildSettings - - DEFINES_MODULE - YES - DYLIB_COMPATIBILITY_VERSION - 1 - DYLIB_CURRENT_VERSION - 1 - DYLIB_INSTALL_NAME_BASE - @rpath - ENABLE_BITCODE - NO - INFOPLIST_FILE - LFLiveKit/Info.plist - INSTALL_PATH - $(LOCAL_LIBRARY_DIR)/Frameworks - IPHONEOS_DEPLOYMENT_TARGET - 8.0 - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKit - PRODUCT_NAME - $(TARGET_NAME) - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Release - - 84001FA11D0015D10026C63F - - buildConfigurations - - 84001FA21D0015D10026C63F - 84001FA31D0015D10026C63F - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - 84001FA21D0015D10026C63F - - buildSettings - - INFOPLIST_FILE - LFLiveKitTests/Info.plist - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKitTests - PRODUCT_NAME - $(TARGET_NAME) - - isa - XCBuildConfiguration - name - Debug - - 84001FA31D0015D10026C63F - - buildSettings - - INFOPLIST_FILE - LFLiveKitTests/Info.plist - LD_RUNPATH_SEARCH_PATHS - $(inherited) @executable_path/Frameworks @loader_path/Frameworks - PRODUCT_BUNDLE_IDENTIFIER - com.youku.LFLiveKit.LFLiveKitTests - PRODUCT_NAME - $(TARGET_NAME) - - isa - XCBuildConfiguration - name - Release - - 84001FA41D0016380026C63F - - children - - 84001FA51D0016380026C63F - 84001FA61D0016380026C63F - 84001FA71D0016380026C63F - 84001FA81D0016380026C63F - - isa - PBXGroup - path - capture - sourceTree - <group> - - 84001FA51D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioCapture.h - sourceTree - <group> - - 84001FA61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFAudioCapture.m - sourceTree - <group> - - 84001FA71D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoCapture.h - sourceTree - <group> - - 84001FA81D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFVideoCapture.m - sourceTree - <group> - - 84001FA91D0016380026C63F - - children - - 84001FAA1D0016380026C63F - 84001FAB1D0016380026C63F - 84001FAC1D0016380026C63F - 84001FAD1D0016380026C63F - 84001FAE1D0016380026C63F - 84001FAF1D0016380026C63F - - isa - PBXGroup - path - coder - sourceTree - <group> - - 84001FAA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioEncoding.h - sourceTree - <group> - - 84001FAB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFHardwareAudioEncoder.h - sourceTree - <group> - - 84001FAC1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFHardwareAudioEncoder.m - sourceTree - <group> - - 84001FAD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFHardwareVideoEncoder.h - sourceTree - <group> - - 84001FAE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFHardwareVideoEncoder.m - sourceTree - <group> - - 84001FAF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoEncoding.h - sourceTree - <group> - - 84001FB01D0016380026C63F - - children - - 84001FB11D0016380026C63F - 84001FB21D0016380026C63F - 84001FB31D0016380026C63F - 84001FB41D0016380026C63F - - isa - PBXGroup - path - configuration - sourceTree - <group> - - 84001FB11D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveAudioConfiguration.h - sourceTree - <group> - - 84001FB21D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveAudioConfiguration.m - sourceTree - <group> - - 84001FB31D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveVideoConfiguration.h - sourceTree - <group> - - 84001FB41D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveVideoConfiguration.m - sourceTree - <group> - - 84001FB51D0016380026C63F - - children - - 84001FB61D0016380026C63F - 84001FB71D0016380026C63F - 84001FB81D0016380026C63F - 84001FB91D0016380026C63F - - isa - PBXGroup - path - filter - sourceTree - <group> - - 84001FB61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFGPUImageBeautyFilter.h - sourceTree - <group> - - 84001FB71D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFGPUImageBeautyFilter.m - sourceTree - <group> - - 84001FB81D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFGPUImageEmptyFilter.h - sourceTree - <group> - - 84001FB91D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFGPUImageEmptyFilter.m - sourceTree - <group> - - 84001FBA1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveSession.h - sourceTree - <group> - - 84001FBB1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveSession.m - sourceTree - <group> - - 84001FBC1D0016380026C63F - - children - - 84001FBD1D0016380026C63F - 84001FBE1D0016380026C63F - 84001FBF1D0016380026C63F - 84001FC01D0016380026C63F - 84001FC11D0016380026C63F - 84001FC21D0016380026C63F - 84001FC31D0016380026C63F - 84001FC41D0016380026C63F - 84001FC51D0016380026C63F - 84001FC61D0016380026C63F - - isa - PBXGroup - path - objects - sourceTree - <group> - - 84001FBD1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFAudioFrame.h - sourceTree - <group> - - 84001FBE1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFAudioFrame.m - sourceTree - <group> - - 84001FBF1D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFFrame.h - sourceTree - <group> - - 84001FC01D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFFrame.m - sourceTree - <group> - - 84001FC11D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveDebug.h - sourceTree - <group> - - 84001FC21D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveDebug.m - sourceTree - <group> - - 84001FC31D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFLiveStreamInfo.h - sourceTree - <group> - - 84001FC41D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFLiveStreamInfo.m - sourceTree - <group> - - 84001FC51D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - LFVideoFrame.h - sourceTree - <group> - - 84001FC61D0016380026C63F - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - path - LFVideoFrame.m - sourceTree - <group> - - 84001FC91D0016380026C63F - - children - - B289F1D41D3DE77F00D9C7A5 - B289F1D51D3DE77F00D9C7A5 - B289F1D61D3DE77F00D9C7A5 - B289F1D71D3DE77F00D9C7A5 - B289F1D81D3DE77F00D9C7A5 - B289F1D91D3DE77F00D9C7A5 - B289F1DA1D3DE77F00D9C7A5 - - isa - PBXGroup - name - publish - path - upload - sourceTree - <group> - - 84001FD11D0016380026C63F - - fileRef - 84001FA51D0016380026C63F - isa - PBXBuildFile - - 84001FD21D0016380026C63F - - fileRef - 84001FA61D0016380026C63F - isa - PBXBuildFile - - 84001FD31D0016380026C63F - - fileRef - 84001FA71D0016380026C63F - isa - PBXBuildFile - - 84001FD41D0016380026C63F - - fileRef - 84001FA81D0016380026C63F - isa - PBXBuildFile - - 84001FD51D0016380026C63F - - fileRef - 84001FAA1D0016380026C63F - isa - PBXBuildFile - - 84001FD61D0016380026C63F - - fileRef - 84001FAB1D0016380026C63F - isa - PBXBuildFile - - 84001FD71D0016380026C63F - - fileRef - 84001FAC1D0016380026C63F - isa - PBXBuildFile - - 84001FD81D0016380026C63F - - fileRef - 84001FAD1D0016380026C63F - isa - PBXBuildFile - - 84001FD91D0016380026C63F - - fileRef - 84001FAE1D0016380026C63F - isa - PBXBuildFile - - 84001FDA1D0016380026C63F - - fileRef - 84001FAF1D0016380026C63F - isa - PBXBuildFile - - 84001FDB1D0016380026C63F - - fileRef - 84001FB11D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FDC1D0016380026C63F - - fileRef - 84001FB21D0016380026C63F - isa - PBXBuildFile - - 84001FDD1D0016380026C63F - - fileRef - 84001FB31D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FDE1D0016380026C63F - - fileRef - 84001FB41D0016380026C63F - isa - PBXBuildFile - - 84001FDF1D0016380026C63F - - fileRef - 84001FB61D0016380026C63F - isa - PBXBuildFile - - 84001FE01D0016380026C63F - - fileRef - 84001FB71D0016380026C63F - isa - PBXBuildFile - - 84001FE11D0016380026C63F - - fileRef - 84001FB81D0016380026C63F - isa - PBXBuildFile - - 84001FE21D0016380026C63F - - fileRef - 84001FB91D0016380026C63F - isa - PBXBuildFile - - 84001FE31D0016380026C63F - - fileRef - 84001FBA1D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FE41D0016380026C63F - - fileRef - 84001FBB1D0016380026C63F - isa - PBXBuildFile - - 84001FE51D0016380026C63F - - fileRef - 84001FBD1D0016380026C63F - isa - PBXBuildFile - - 84001FE61D0016380026C63F - - fileRef - 84001FBE1D0016380026C63F - isa - PBXBuildFile - - 84001FE71D0016380026C63F - - fileRef - 84001FBF1D0016380026C63F - isa - PBXBuildFile - - 84001FE81D0016380026C63F - - fileRef - 84001FC01D0016380026C63F - isa - PBXBuildFile - - 84001FE91D0016380026C63F - - fileRef - 84001FC11D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FEA1D0016380026C63F - - fileRef - 84001FC21D0016380026C63F - isa - PBXBuildFile - - 84001FEB1D0016380026C63F - - fileRef - 84001FC31D0016380026C63F - isa - PBXBuildFile - settings - - ATTRIBUTES - - Public - - - - 84001FEC1D0016380026C63F - - fileRef - 84001FC41D0016380026C63F - isa - PBXBuildFile - - 84001FED1D0016380026C63F - - fileRef - 84001FC51D0016380026C63F - isa - PBXBuildFile - - 84001FEE1D0016380026C63F - - fileRef - 84001FC61D0016380026C63F - isa - PBXBuildFile - - 84001FF61D0017590026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - AVFoundation.framework - path - System/Library/Frameworks/AVFoundation.framework - sourceTree - SDKROOT - - 84001FF71D0017590026C63F - - fileRef - 84001FF61D0017590026C63F - isa - PBXBuildFile - - 84001FF81D00175D0026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - System/Library/Frameworks/Foundation.framework - sourceTree - SDKROOT - - 84001FF91D00175D0026C63F - - fileRef - 84001FF81D00175D0026C63F - isa - PBXBuildFile - - 84001FFA1D0017630026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - UIKit.framework - path - System/Library/Frameworks/UIKit.framework - sourceTree - SDKROOT - - 84001FFB1D0017630026C63F - - fileRef - 84001FFA1D0017630026C63F - isa - PBXBuildFile - - 84001FFC1D0017680026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - AudioToolbox.framework - path - System/Library/Frameworks/AudioToolbox.framework - sourceTree - SDKROOT - - 84001FFD1D0017680026C63F - - fileRef - 84001FFC1D0017680026C63F - isa - PBXBuildFile - - 84001FFE1D00176C0026C63F - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - VideoToolbox.framework - path - System/Library/Frameworks/VideoToolbox.framework - sourceTree - SDKROOT - - 84001FFF1D00176C0026C63F - - fileRef - 84001FFE1D00176C0026C63F - isa - PBXBuildFile - - 840020001D0017850026C63F - - isa - PBXFileReference - lastKnownFileType - sourcecode.text-based-dylib-definition - name - libz.tbd - path - usr/lib/libz.tbd - sourceTree - SDKROOT - - 840020011D0017850026C63F - - fileRef - 840020001D0017850026C63F - isa - PBXBuildFile - - 8A5D8B623E50AAC1575D1741 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Copy Pods Resources - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - "${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh" - - showEnvVarsInLog - 0 - - 8EE9401DCA9508E918B7FB68 - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - 📦 Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - 98F2C3F394BD79A6D6B8424F - - buildActionMask - 2147483647 - files - - inputPaths - - isa - PBXShellScriptBuildPhase - name - Check Pods Manifest.lock - outputPaths - - runOnlyForDeploymentPostprocessing - 0 - shellPath - /bin/sh - shellScript - diff "${PODS_ROOT}/../Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null -if [[ $? != 0 ]] ; then - cat << EOM -error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation. -EOM - exit 1 -fi - - showEnvVarsInLog - 0 - - A17586B27CD6843997425CCF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-LFLiveKit.debug.xcconfig - path - Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig - sourceTree - <group> - - AD7F89B4621A7EFEBEA72D49 - - fileRef - B8CB02D2A92EA1F5A262F154 - isa - PBXBuildFile - - B289F1D41D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LFStreamingBuffer.h - path - LFLiveKit/publish/LFStreamingBuffer.h - sourceTree - SOURCE_ROOT - - B289F1D51D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - LFStreamingBuffer.m - path - LFLiveKit/publish/LFStreamingBuffer.m - sourceTree - SOURCE_ROOT - - B289F1D61D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LFStreamRtmpSocket.h - path - LFLiveKit/publish/LFStreamRtmpSocket.h - sourceTree - SOURCE_ROOT - - B289F1D71D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - LFStreamRtmpSocket.m - path - LFLiveKit/publish/LFStreamRtmpSocket.m - sourceTree - SOURCE_ROOT - - B289F1D81D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - LFStreamSocket.h - path - LFLiveKit/publish/LFStreamSocket.h - sourceTree - SOURCE_ROOT - - B289F1D91D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - NSMutableArray+LFAdd.h - path - LFLiveKit/publish/NSMutableArray+LFAdd.h - sourceTree - SOURCE_ROOT - - B289F1DA1D3DE77F00D9C7A5 - - fileEncoding - 4 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - NSMutableArray+LFAdd.m - path - LFLiveKit/publish/NSMutableArray+LFAdd.m - sourceTree - SOURCE_ROOT - - B289F1DB1D3DE77F00D9C7A5 - - fileRef - B289F1D41D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DC1D3DE77F00D9C7A5 - - fileRef - B289F1D51D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DD1D3DE77F00D9C7A5 - - fileRef - B289F1D61D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DE1D3DE77F00D9C7A5 - - fileRef - B289F1D71D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1DF1D3DE77F00D9C7A5 - - fileRef - B289F1D81D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1E01D3DE77F00D9C7A5 - - fileRef - B289F1D91D3DE77F00D9C7A5 - isa - PBXBuildFile - - B289F1E11D3DE77F00D9C7A5 - - fileRef - B289F1DA1D3DE77F00D9C7A5 - isa - PBXBuildFile - - B5758EB2A15DAA132D8BF380 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods.a - sourceTree - BUILT_PRODUCTS_DIR - - B75B965E6B94DE4CBCC82EA7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - name - Pods-LFLiveKit.release.xcconfig - path - Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig - sourceTree - <group> - - B8CB02D2A92EA1F5A262F154 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods-LFLiveKit.a - sourceTree - BUILT_PRODUCTS_DIR - - BE55DA79155500CDEF87FB5C - - fileRef - B5758EB2A15DAA132D8BF380 - isa - PBXBuildFile - - EDD4B76A07A6817C79BB4E5C - - children - - A17586B27CD6843997425CCF - B75B965E6B94DE4CBCC82EA7 - - isa - PBXGroup - name - Pods - sourceTree - <group> - - - rootObject - 84001F811D0015D10026C63F - - +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; + 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001F991D0015D10026C63F /* LFLiveKitTests.m */; }; + 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA51D0016380026C63F /* LFAudioCapture.h */; }; + 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA61D0016380026C63F /* LFAudioCapture.m */; }; + 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA71D0016380026C63F /* LFVideoCapture.h */; }; + 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA81D0016380026C63F /* LFVideoCapture.m */; }; + 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAA1D0016380026C63F /* LFAudioEncoding.h */; }; + 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */; }; + 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */; }; + 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */; }; + 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */; }; + 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAF1D0016380026C63F /* LFVideoEncoding.h */; }; + 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */; }; + 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */; }; + 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */; }; + 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */; }; + 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */; }; + 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; + 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; }; + 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; + 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; }; + 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; + 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; + 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; + 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; + 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; + 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; + 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; + 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; + 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; + 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; + AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; + B243DD7A1D409BC4007CCDB5 /* AVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B243DD711D409BC4007CCDB5 /* AVEncoder.h */; }; + B243DD7B1D409BC4007CCDB5 /* AVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B243DD721D409BC4007CCDB5 /* AVEncoder.mm */; }; + B243DD7C1D409BC4007CCDB5 /* LICENSE.markdown in Sources */ = {isa = PBXBuildFile; fileRef = B243DD731D409BC4007CCDB5 /* LICENSE.markdown */; }; + B243DD7D1D409BC4007CCDB5 /* MP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = B243DD741D409BC4007CCDB5 /* MP4Atom.h */; }; + B243DD7E1D409BC4007CCDB5 /* MP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = B243DD751D409BC4007CCDB5 /* MP4Atom.m */; }; + B243DD7F1D409BC4007CCDB5 /* NALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B243DD761D409BC4007CCDB5 /* NALUnit.cpp */; }; + B243DD801D409BC4007CCDB5 /* NALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = B243DD771D409BC4007CCDB5 /* NALUnit.h */; }; + B243DD811D409BC4007CCDB5 /* VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B243DD781D409BC4007CCDB5 /* VideoEncoder.h */; }; + B243DD821D409BC4007CCDB5 /* VideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B243DD791D409BC4007CCDB5 /* VideoEncoder.m */; }; + B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; + B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; + B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; + B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */; }; + B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; + B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; + B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; + B2EA938E1D3E9537006D1055 /* LFH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2EA93771D3E9537006D1055 /* LFH264VideoEncoder.h */; }; + B2EA938F1D3E9537006D1055 /* LFH264VideoEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2EA93781D3E9537006D1055 /* LFH264VideoEncoder.mm */; }; + BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 84001F961D0015D10026C63F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84001F811D0015D10026C63F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84001F891D0015D10026C63F; + remoteInfo = LFLiveKit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; + 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LFLiveKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 84001F991D0015D10026C63F /* LFLiveKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitTests.m; sourceTree = ""; }; + 84001F9B1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84001FA51D0016380026C63F /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; + 84001FA61D0016380026C63F /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; + 84001FA71D0016380026C63F /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; + 84001FA81D0016380026C63F /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; + 84001FAA1D0016380026C63F /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; + 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; + 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; + 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; + 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; + 84001FAF1D0016380026C63F /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; + 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; + 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; + 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; + 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; + 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; + 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; + 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; + 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; + 84001FBA1D0016380026C63F /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; + 84001FBB1D0016380026C63F /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; + 84001FBD1D0016380026C63F /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; + 84001FBE1D0016380026C63F /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; + 84001FBF1D0016380026C63F /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; + 84001FC01D0016380026C63F /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; + 84001FC11D0016380026C63F /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; + 84001FC21D0016380026C63F /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; + 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; + 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; + 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; + 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; + 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; + 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; + B243DD711D409BC4007CCDB5 /* AVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVEncoder.h; sourceTree = ""; }; + B243DD721D409BC4007CCDB5 /* AVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVEncoder.mm; sourceTree = ""; }; + B243DD731D409BC4007CCDB5 /* LICENSE.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.markdown; sourceTree = ""; }; + B243DD741D409BC4007CCDB5 /* MP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MP4Atom.h; sourceTree = ""; }; + B243DD751D409BC4007CCDB5 /* MP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MP4Atom.m; sourceTree = ""; }; + B243DD761D409BC4007CCDB5 /* NALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NALUnit.cpp; sourceTree = ""; }; + B243DD771D409BC4007CCDB5 /* NALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NALUnit.h; sourceTree = ""; }; + B243DD781D409BC4007CCDB5 /* VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoEncoder.h; sourceTree = ""; }; + B243DD791D409BC4007CCDB5 /* VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoEncoder.m; sourceTree = ""; }; + B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; + B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; + B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; + B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamRtmpSocket.m; path = LFLiveKit/publish/LFStreamRtmpSocket.m; sourceTree = SOURCE_ROOT; }; + B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; + B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; + B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; + B2EA93771D3E9537006D1055 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; + B2EA93781D3E9537006D1055 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; + B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; + B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 84001F861D0015D10026C63F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 840020011D0017850026C63F /* libz.tbd in Frameworks */, + 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */, + 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */, + 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, + 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, + 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, + AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, + BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F911D0015D10026C63F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C07D14560B9E91EA1B59306 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 840020001D0017850026C63F /* libz.tbd */, + 84001FFE1D00176C0026C63F /* VideoToolbox.framework */, + 84001FFC1D0017680026C63F /* AudioToolbox.framework */, + 84001FFA1D0017630026C63F /* UIKit.framework */, + 84001FF81D00175D0026C63F /* Foundation.framework */, + 84001FF61D0017590026C63F /* AVFoundation.framework */, + B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, + B5758EB2A15DAA132D8BF380 /* libPods.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 84001F801D0015D10026C63F = { + isa = PBXGroup; + children = ( + 84001F8C1D0015D10026C63F /* LFLiveKit */, + 84001F981D0015D10026C63F /* LFLiveKitTests */, + 84001F8B1D0015D10026C63F /* Products */, + EDD4B76A07A6817C79BB4E5C /* Pods */, + 0C07D14560B9E91EA1B59306 /* Frameworks */, + ); + sourceTree = ""; + }; + 84001F8B1D0015D10026C63F /* Products */ = { + isa = PBXGroup; + children = ( + 84001F8A1D0015D10026C63F /* LFLiveKit.framework */, + 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 84001F8C1D0015D10026C63F /* LFLiveKit */ = { + isa = PBXGroup; + children = ( + 84001F8D1D0015D10026C63F /* LFLiveKit.h */, + 84001FBA1D0016380026C63F /* LFLiveSession.h */, + 84001FBB1D0016380026C63F /* LFLiveSession.m */, + 84001FBC1D0016380026C63F /* objects */, + 84001FB01D0016380026C63F /* configuration */, + 84001FA41D0016380026C63F /* capture */, + 84001FA91D0016380026C63F /* coder */, + 84001FB51D0016380026C63F /* filter */, + 84001FC91D0016380026C63F /* publish */, + 84001F8F1D0015D10026C63F /* Info.plist */, + ); + path = LFLiveKit; + sourceTree = ""; + }; + 84001F981D0015D10026C63F /* LFLiveKitTests */ = { + isa = PBXGroup; + children = ( + 84001F991D0015D10026C63F /* LFLiveKitTests.m */, + 84001F9B1D0015D10026C63F /* Info.plist */, + ); + path = LFLiveKitTests; + sourceTree = ""; + }; + 84001FA41D0016380026C63F /* capture */ = { + isa = PBXGroup; + children = ( + 84001FA51D0016380026C63F /* LFAudioCapture.h */, + 84001FA61D0016380026C63F /* LFAudioCapture.m */, + 84001FA71D0016380026C63F /* LFVideoCapture.h */, + 84001FA81D0016380026C63F /* LFVideoCapture.m */, + ); + path = capture; + sourceTree = ""; + }; + 84001FA91D0016380026C63F /* coder */ = { + isa = PBXGroup; + children = ( + B243DD701D409BC4007CCDB5 /* H264 */, + B2EA93771D3E9537006D1055 /* LFH264VideoEncoder.h */, + B2EA93781D3E9537006D1055 /* LFH264VideoEncoder.mm */, + 84001FAA1D0016380026C63F /* LFAudioEncoding.h */, + 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */, + 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */, + 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */, + 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */, + 84001FAF1D0016380026C63F /* LFVideoEncoding.h */, + ); + path = coder; + sourceTree = ""; + }; + 84001FB01D0016380026C63F /* configuration */ = { + isa = PBXGroup; + children = ( + 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */, + 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */, + 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */, + 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */, + ); + path = configuration; + sourceTree = ""; + }; + 84001FB51D0016380026C63F /* filter */ = { + isa = PBXGroup; + children = ( + 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */, + 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */, + 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */, + 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */, + ); + path = filter; + sourceTree = ""; + }; + 84001FBC1D0016380026C63F /* objects */ = { + isa = PBXGroup; + children = ( + 84001FBD1D0016380026C63F /* LFAudioFrame.h */, + 84001FBE1D0016380026C63F /* LFAudioFrame.m */, + 84001FBF1D0016380026C63F /* LFFrame.h */, + 84001FC01D0016380026C63F /* LFFrame.m */, + 84001FC11D0016380026C63F /* LFLiveDebug.h */, + 84001FC21D0016380026C63F /* LFLiveDebug.m */, + 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */, + 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */, + 84001FC51D0016380026C63F /* LFVideoFrame.h */, + 84001FC61D0016380026C63F /* LFVideoFrame.m */, + ); + path = objects; + sourceTree = ""; + }; + 84001FC91D0016380026C63F /* publish */ = { + isa = PBXGroup; + children = ( + B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, + B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, + B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, + B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */, + B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */, + B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */, + B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */, + ); + name = publish; + path = upload; + sourceTree = ""; + }; + B243DD701D409BC4007CCDB5 /* H264 */ = { + isa = PBXGroup; + children = ( + B243DD711D409BC4007CCDB5 /* AVEncoder.h */, + B243DD721D409BC4007CCDB5 /* AVEncoder.mm */, + B243DD731D409BC4007CCDB5 /* LICENSE.markdown */, + B243DD741D409BC4007CCDB5 /* MP4Atom.h */, + B243DD751D409BC4007CCDB5 /* MP4Atom.m */, + B243DD761D409BC4007CCDB5 /* NALUnit.cpp */, + B243DD771D409BC4007CCDB5 /* NALUnit.h */, + B243DD781D409BC4007CCDB5 /* VideoEncoder.h */, + B243DD791D409BC4007CCDB5 /* VideoEncoder.m */, + ); + path = H264; + sourceTree = ""; + }; + EDD4B76A07A6817C79BB4E5C /* Pods */ = { + isa = PBXGroup; + children = ( + A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */, + B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 84001F871D0015D10026C63F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, + B243DD7D1D409BC4007CCDB5 /* MP4Atom.h in Headers */, + B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, + 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, + 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, + B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, + 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, + B243DD801D409BC4007CCDB5 /* NALUnit.h in Headers */, + 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, + 84001FE71D0016380026C63F /* LFFrame.h in Headers */, + 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, + B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, + 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, + B243DD811D409BC4007CCDB5 /* VideoEncoder.h in Headers */, + 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, + 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, + 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, + 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, + B2EA938E1D3E9537006D1055 /* LFH264VideoEncoder.h in Headers */, + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, + 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, + B243DD7A1D409BC4007CCDB5 /* AVEncoder.h in Headers */, + 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, + 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 84001F891D0015D10026C63F /* LFLiveKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; + buildPhases = ( + 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */, + 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */, + 84001F851D0015D10026C63F /* Sources */, + 84001F861D0015D10026C63F /* Frameworks */, + 84001F871D0015D10026C63F /* Headers */, + 84001F881D0015D10026C63F /* Resources */, + 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */, + 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LFLiveKit; + productName = LFLiveKit; + productReference = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 84001F931D0015D10026C63F /* LFLiveKitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */; + buildPhases = ( + 84001F901D0015D10026C63F /* Sources */, + 84001F911D0015D10026C63F /* Frameworks */, + 84001F921D0015D10026C63F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 84001F971D0015D10026C63F /* PBXTargetDependency */, + ); + name = LFLiveKitTests; + productName = LFLiveKitTests; + productReference = 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 84001F811D0015D10026C63F /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = admin; + TargetAttributes = { + 84001F891D0015D10026C63F = { + CreatedOnToolsVersion = 7.3; + }; + 84001F931D0015D10026C63F = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 84001F801D0015D10026C63F; + productRefGroup = 84001F8B1D0015D10026C63F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 84001F891D0015D10026C63F /* LFLiveKit */, + 84001F931D0015D10026C63F /* LFLiveKitTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 84001F881D0015D10026C63F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F921D0015D10026C63F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84001F851D0015D10026C63F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, + 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, + 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, + 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, + B243DD7C1D409BC4007CCDB5 /* LICENSE.markdown in Sources */, + 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, + 84001FE81D0016380026C63F /* LFFrame.m in Sources */, + B243DD7F1D409BC4007CCDB5 /* NALUnit.cpp in Sources */, + B243DD7E1D409BC4007CCDB5 /* MP4Atom.m in Sources */, + B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, + B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, + 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, + 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, + B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, + 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, + B2EA938F1D3E9537006D1055 /* LFH264VideoEncoder.mm in Sources */, + 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, + 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, + 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, + 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, + B243DD7B1D409BC4007CCDB5 /* AVEncoder.mm in Sources */, + 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, + B243DD821D409BC4007CCDB5 /* VideoEncoder.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84001F901D0015D10026C63F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 84001F971D0015D10026C63F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 84001F891D0015D10026C63F /* LFLiveKit */; + targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 84001F9C1D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 84001F9D1D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 84001F9F1D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = LFLiveKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 84001FA01D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = LFLiveKit/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 84001FA21D0015D10026C63F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = LFLiveKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 84001FA31D0015D10026C63F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = LFLiveKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001F9C1D0015D10026C63F /* Debug */, + 84001F9D1D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001F9F1D0015D10026C63F /* Debug */, + 84001FA01D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84001FA21D0015D10026C63F /* Debug */, + 84001FA31D0015D10026C63F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 84001F811D0015D10026C63F /* Project object */; +} diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index cd7682c6..c3970b6b 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -11,10 +11,16 @@ #import "LFAudioCapture.h" #import "LFHardwareVideoEncoder.h" #import "LFHardwareAudioEncoder.h" +#import "LFH264VideoEncoder.h" #import "LFStreamRtmpSocket.h" #import "LFLiveStreamInfo.h" #import "LFGPUImageBeautyFilter.h" +/**  时间戳 */ +#define NOW (CACurrentMediaTime()*1000) + +#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) + #define LFLiveReportKey @"com.youku.liveSessionReport" @interface LFLiveSession () @@ -50,8 +56,6 @@ @interface LFLiveSession ())encoder videoFrame:(nullable - (void)socketStatus:(nullable id)socket status:(LFLiveState)status { if (status == LFLiveStart) { if (!self.uploading) { - self.timestamp = 0; - self.isFirstFrame = YES; +// self.timestamp = 0; +// self.isFirstFrame = YES; self.uploading = YES; } } @@ -269,7 +275,11 @@ - (LFVideoCapture *)videoCaptureSource { - (id)videoEncoder { if (!_videoEncoder) { - _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + if (SYSTEM_VERSION_LESS_THAN(@"8.0")) { + _videoEncoder = [[LFH264VideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + } else { + _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + } [_videoEncoder setDelegate:self]; } return _videoEncoder; @@ -293,9 +303,9 @@ - (LFLiveStreamInfo *)streamInfo { - (uint64_t)currentTimestamp { dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); uint64_t currentts = 0; - if (_isFirstFrame == true) { + if (_isFirstFrame) { _timestamp = NOW; - _isFirstFrame = false; + _isFirstFrame = NO; currentts = 0; } else { currentts = NOW - _timestamp; diff --git a/LFLiveKit/coder/H264/AVEncoder.h b/LFLiveKit/coder/H264/AVEncoder.h new file mode 100755 index 00000000..4141d423 --- /dev/null +++ b/LFLiveKit/coder/H264/AVEncoder.h @@ -0,0 +1,36 @@ +// +// AVEncoder.h +// Encoder Demo +// +// Created by Geraint Davies on 14/01/2013. +// Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm +// + +#import +#import +#import +#import +#import +#import "sys/stat.h" +#import "VideoEncoder.h" +#import "MP4Atom.h" + +typedef int (^encoder_handler_t)(NSArray *data, CMTimeValue ptsValue); +typedef int (^param_handler_t)(NSData *params); + +@interface AVEncoder : NSObject + +@property (atomic) NSUInteger bitrate; + ++ (AVEncoder *)encoderForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate; + +- (void)encodeWithBlock:(encoder_handler_t)block onParams:(param_handler_t)paramsHandler; +- (void)encodeFrame:(CMSampleBufferRef)sampleBuffer; +- (void)encodePixelBuffer:(CVPixelBufferRef)pixelBuffer pts:(CMTime)pts; +- (NSData *)getConfigData; +- (void)shutdown; + + +@property (readonly, atomic) int bitspersecond; + +@end diff --git a/LFLiveKit/coder/H264/AVEncoder.mm b/LFLiveKit/coder/H264/AVEncoder.mm new file mode 100755 index 00000000..7fb7058e --- /dev/null +++ b/LFLiveKit/coder/H264/AVEncoder.mm @@ -0,0 +1,439 @@ +// +// AVEncoder.m +// Encoder Demo +// +// Created by Geraint Davies on 14/01/2013. +// Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm +// + +#import "AVEncoder.h" +#import "NALUnit.h" + +static void *AVEncoderContext = &AVEncoderContext; + +static unsigned int to_host(unsigned char *p){ + return (p[0] << 24) + (p[1] << 16) + (p[2] << 8) + p[3]; +} + +#define OUTPUT_FILE_SWITCH_POINT (50 * 1024 * 1024) // 50 MB switch point +#define MAX_FILENAME_INDEX 5 // filenames "capture1.mp4" wraps at capture5.mp4 + + +@interface AVEncoder () + +{ + // initial writer, used to obtain SPS/PPS from header + VideoEncoder *_headerWriter; + + // main encoder/writer + VideoEncoder *_writer; + + // writer output file (input to our extractor) and monitoring + NSFileHandle *_inputFile; + dispatch_queue_t _readQueue; + dispatch_source_t _readSource; + + // index of current file name + BOOL _swapping; + int _currentFile; + int _height; + int _width; + + // param set data + NSData *_avcC; + int _lengthSize; + + // location of mdat + BOOL _foundMDAT; + uint64_t _posMDAT; + int _bytesToNextAtom; + BOOL _needParams; + + // tracking if NALU is next frame + int _prev_nal_idc; + int _prev_nal_type; + // array of NSData comprising a single frame. each data is one nalu with no start code + NSMutableArray *_pendingNALU; + + // FIFO for frame times + NSMutableArray *_times; + + encoder_handler_t _outputBlock; + param_handler_t _paramsBlock; + + // estimate bitrate over first second + int _bitspersecond; + CMTimeValue _firstpts; +} + +@property (atomic) BOOL bitrateChanged; + +@end + +@implementation AVEncoder + +@synthesize bitspersecond = _bitspersecond; + ++ (AVEncoder *)encoderForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate { + AVEncoder *enc = [AVEncoder alloc]; + [enc initForHeight:height andWidth:width bitrate:bitrate]; + return enc; +} + +- (NSString *)makeFilename { + NSString *filename = [NSString stringWithFormat:@"capture%d.mp4", _currentFile]; + NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:filename]; + return path; +} + +- (void)initForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate { + _height = height; + _width = width; + _bitrate = bitrate; + NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"params.mp4"]; + _headerWriter = [VideoEncoder encoderForPath:path Height:height andWidth:width bitrate:self.bitrate]; + _times = [NSMutableArray arrayWithCapacity:10]; + + // swap between 3 filenames + _currentFile = 1; + _writer = [VideoEncoder encoderForPath:[self makeFilename] Height:height andWidth:width bitrate:self.bitrate]; + + [self addObserver:self forKeyPath:NSStringFromSelector(@selector(bitrate)) options:0 context:AVEncoderContext]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(NSDictionary *)change + context:(void *)context { + if (context == AVEncoderContext && [keyPath isEqualToString:NSStringFromSelector(@selector(bitrate))]) { + self.bitrateChanged = YES; + } +} + +- (void)encodeWithBlock:(encoder_handler_t)block onParams:(param_handler_t)paramsHandler { + _outputBlock = block; + _paramsBlock = paramsHandler; + _needParams = YES; + _pendingNALU = nil; + _firstpts = -1; + _bitspersecond = 0; +} + +- (BOOL)parseParams:(NSString *)path { + NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path]; + struct stat s; + fstat([file fileDescriptor], &s); + MP4Atom *movie = [MP4Atom atomAt:0 size:s.st_size type:(OSType)('file') inFile:file]; + MP4Atom *moov = [movie childOfType:(OSType)('moov') startAt:0]; + MP4Atom *trak = nil; + if (moov != nil) { + for (;; ) { + trak = [moov nextChild]; + if (trak == nil) { + break; + } + + if (trak.type == (OSType)('trak')) { + MP4Atom *tkhd = [trak childOfType:(OSType)('tkhd') startAt:0]; + NSData *verflags = [tkhd readAt:0 size:4]; + unsigned char *p = (unsigned char *)[verflags bytes]; + if (p[3] & 1) { + break; + } else { + tkhd = nil; + } + } + } + } + MP4Atom *stsd = nil; + if (trak != nil) { + MP4Atom *media = [trak childOfType:(OSType)('mdia') startAt:0]; + if (media != nil) { + MP4Atom *minf = [media childOfType:(OSType)('minf') startAt:0]; + if (minf != nil) { + MP4Atom *stbl = [minf childOfType:(OSType)('stbl') startAt:0]; + if (stbl != nil) { + stsd = [stbl childOfType:(OSType)('stsd') startAt:0]; + } + } + } + } + if (stsd != nil) { + MP4Atom *avc1 = [stsd childOfType:(OSType)('avc1') startAt:8]; + if (avc1 != nil) { + MP4Atom *esd = [avc1 childOfType:(OSType)('avcC') startAt:78]; + if (esd != nil) { + // this is the avcC record that we are looking for + _avcC = [esd readAt:0 size:esd.length]; + if (_avcC != nil) { + // extract size of length field + unsigned char *p = (unsigned char *)[_avcC bytes]; + _lengthSize = (p[4] & 3) + 1; + return YES; + } + } + } + } + return NO; +} + +- (void)onParamsCompletion { + // the initial one-frame-only file has been completed + // Extract the avcC structure and then start monitoring the + // main file to extract video from the mdat chunk. + if ([self parseParams:_headerWriter.path]) { + if (_paramsBlock) { + _paramsBlock(_avcC); + } + _headerWriter = nil; + _swapping = NO; + _inputFile = [NSFileHandle fileHandleForReadingAtPath:_writer.path]; + _readQueue = dispatch_queue_create("uk.co.gdcl.avencoder.read", DISPATCH_QUEUE_SERIAL); + + _readSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, [_inputFile fileDescriptor], 0, _readQueue); + dispatch_source_set_event_handler(_readSource, ^{ + [self onFileUpdate]; + }); + dispatch_resume(_readSource); + } +} + +- (void)encodeFrame:(CMSampleBufferRef)sampleBuffer { + CMTime prestime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); + NSNumber *pts = [NSNumber numberWithLongLong:prestime.value]; + + @synchronized(self){ + if (_needParams) { + // the avcC record is needed for decoding and it's not written to the file until + // completion. We get round that by writing the first frame to two files; the first + // file (containing only one frame) is then finished, so we can extract the avcC record. + // Only when we've got that do we start reading from the main file. + _needParams = NO; + if ([_headerWriter encodeFrame:sampleBuffer]) { + [_headerWriter finishWithCompletionHandler:^{ + [self onParamsCompletion]; + }]; + } + } + } + + @synchronized(_times){ + [_times addObject:pts]; + } + @synchronized(self){ + // switch output files when we reach a size limit + // to avoid runaway storage use. + if (!_swapping) { + struct stat st; + fstat([_inputFile fileDescriptor], &st); + if (st.st_size > OUTPUT_FILE_SWITCH_POINT || self.bitrateChanged) { + self.bitrateChanged = NO; + _swapping = YES; + VideoEncoder *oldVideo = _writer; + + // construct a new writer to the next filename + if (++_currentFile > MAX_FILENAME_INDEX) { + _currentFile = 1; + } + //NSLog(@"Swap to file %d", _currentFile); + _writer = [VideoEncoder encoderForPath:[self makeFilename] Height:_height andWidth:_width bitrate:self.bitrate]; + + // to do this seamlessly requires a few steps in the right order + // first, suspend the read source + if (_readSource) { + dispatch_source_cancel(_readSource); + // execute the next step as a block on the same queue, to be sure the suspend is done + dispatch_async(_readQueue, ^{ + // finish the file, writing moov, before reading any more from the file + // since we don't yet know where the mdat ends + _readSource = nil; + [oldVideo finishWithCompletionHandler:^{ + [self swapFiles:oldVideo.path]; + }]; + }); + } else { + [self swapFiles:oldVideo.path]; + } + } + } + [_writer encodeFrame:sampleBuffer]; + } +} + +- (void)swapFiles:(NSString *)oldPath { + // save current position + uint64_t pos = [_inputFile offsetInFile]; + + // re-read mdat length + [_inputFile seekToFileOffset:_posMDAT]; + NSData *hdr = [_inputFile readDataOfLength:4]; + unsigned char *p = (unsigned char *)[hdr bytes]; + if (p) { + int lenMDAT = to_host(p); + + // extract nalus from saved position to mdat end + uint64_t posEnd = _posMDAT + lenMDAT; + uint32_t cRead = (uint32_t)(posEnd - pos); + [_inputFile seekToFileOffset:pos]; + [self readAndDeliver:cRead]; + } + + // close and remove file + [_inputFile closeFile]; + _foundMDAT = false; + _bytesToNextAtom = 0; + [[NSFileManager defaultManager] removeItemAtPath:oldPath error:nil]; + + + // open new file and set up dispatch source + _inputFile = [NSFileHandle fileHandleForReadingAtPath:_writer.path]; + _readSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, [_inputFile fileDescriptor], 0, _readQueue); + dispatch_source_set_event_handler(_readSource, ^{ + [self onFileUpdate]; + }); + dispatch_resume(_readSource); + _swapping = NO; +} + +- (void)readAndDeliver:(uint32_t)cReady { + // Identify the individual NALUs and extract them + while (cReady > _lengthSize) { + NSData *lenField = [_inputFile readDataOfLength:_lengthSize]; + cReady -= _lengthSize; + unsigned char *p = (unsigned char *)[lenField bytes]; + unsigned int lenNALU = to_host(p); + + if (lenNALU > cReady) { + // whole NALU not present -- seek back to start of NALU and wait for more + [_inputFile seekToFileOffset:[_inputFile offsetInFile] - 4]; + break; + } + NSData *nalu = [_inputFile readDataOfLength:lenNALU]; + cReady -= lenNALU; + + [self onNALU:nalu]; + } +} + +- (void)onFileUpdate { + // called whenever there is more data to read in the main encoder output file. + struct stat s; + fstat([_inputFile fileDescriptor], &s); + int cReady = s.st_size - [_inputFile offsetInFile]; + + // locate the mdat atom if needed + while (!_foundMDAT && (cReady > 8)) { + if (_bytesToNextAtom == 0) { + NSData *hdr = [_inputFile readDataOfLength:8]; + cReady -= 8; + unsigned char *p = (unsigned char *)[hdr bytes]; + int lenAtom = to_host(p); + unsigned int nameAtom = to_host(p+4); + if (nameAtom == (unsigned int)('mdat')) { + _foundMDAT = true; + _posMDAT = [_inputFile offsetInFile] - 8; + } else { + _bytesToNextAtom = lenAtom - 8; + } + } + if (_bytesToNextAtom > 0) { + int cThis = cReady < _bytesToNextAtom ? cReady : _bytesToNextAtom; + _bytesToNextAtom -= cThis; + [_inputFile seekToFileOffset:[_inputFile offsetInFile]+cThis]; + cReady -= cThis; + } + } + if (!_foundMDAT) { + return; + } + + // the mdat must be just encoded video. + [self readAndDeliver:cReady]; +} + +- (void)onEncodedFrame { + CMTimeValue pts = 0; + @synchronized(_times){ + if ([_times count] > 0) { + NSNumber *time = _times[0]; + pts = [time longLongValue]; + [_times removeObjectAtIndex:0]; + if (_firstpts < 0) { + _firstpts = pts; + } + if ((pts - _firstpts) < 1) { + int bytes = 0; + for (NSData *data in _pendingNALU) { + bytes += [data length]; + } + _bitspersecond += (bytes * 8); + } + } else { + //NSLog(@"no pts for buffer"); + } + } + if (_outputBlock != nil) { + _outputBlock(_pendingNALU, pts); + } +} + +// combine multiple NALUs into a single frame, and in the process, convert to BSF +// by adding 00 00 01 startcodes before each NALU. +- (void)onNALU:(NSData *)nalu { + unsigned char *pNal = (unsigned char *)[nalu bytes]; + int idc = pNal[0] & 0x60; + int naltype = pNal[0] & 0x1f; + + if (_pendingNALU) { + NALUnit nal(pNal, [nalu length]); + + // we have existing data —is this the same frame? + // typically there are a couple of NALUs per frame in iOS encoding. + // This is not general-purpose: it assumes that arbitrary slice ordering is not allowed. + BOOL bNew = NO; + if ((idc != _prev_nal_idc) && ((idc * _prev_nal_idc) == 0)) { + bNew = YES; + } else if ((naltype != _prev_nal_type) && ((naltype == 5) || (_prev_nal_type == 5))) { + bNew = YES; + } else if ((naltype >= 1) && (naltype <= 5)) { + nal.Skip(8); + int first_mb = nal.GetUE(); + if (first_mb == 0) { + bNew = YES; + } + } + if (bNew) { + [self onEncodedFrame]; + _pendingNALU = nil; + } + } + _prev_nal_type = naltype; + _prev_nal_idc = idc; + if (_pendingNALU == nil) { + _pendingNALU = [NSMutableArray arrayWithCapacity:2]; + } + [_pendingNALU addObject:nalu]; +} + +- (NSData *)getConfigData { + return [_avcC copy]; +} + +- (void)shutdown { + @synchronized(self){ + _readSource = nil; + if (_headerWriter) { + [_headerWriter finishWithCompletionHandler:^{ + _headerWriter = nil; + }]; + } + if (_writer) { + [_writer finishWithCompletionHandler:^{ + _writer = nil; + }]; + } + // !! wait for these to finish before returning and delete temp files + } +} + +@end diff --git a/LFLiveKit/coder/H264/LICENSE.markdown b/LFLiveKit/coder/H264/LICENSE.markdown new file mode 100755 index 00000000..253169c3 --- /dev/null +++ b/LFLiveKit/coder/H264/LICENSE.markdown @@ -0,0 +1,15 @@ +# GDCL Source Code License + +Last updated: 20th February 2013 + +**License Agreement for Source Code provided by GDCL** + +This software is supplied to you by Geraint Davies Consulting Ltd ('GDCL') in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this software. + +In consideration of your agreement to abide by the following terms, and subject to these terms, GDCL grants you a personal, non-exclusive license, to use, reproduce, modify and redistribute the software, with or without modifications, in source and/or binary forms; provided that if you redistribute the software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the software, and that in all cases attribution of GDCL as the original author of the source code shall be included in all such resulting software products or distributions. + +Neither the name, trademarks, service marks or logos of Geraint Davies or GDCL may be used to endorse or promote products derived from the software without specific prior written permission from GDCL. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by GDCL herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the software may be incorporated. + +The software is provided by GDCL on an "AS IS" basis. GDCL MAKE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + +IN NO EVENT SHALL GDCL BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF GDCL HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/LFLiveKit/coder/H264/MP4Atom.h b/LFLiveKit/coder/H264/MP4Atom.h new file mode 100755 index 00000000..11deb18f --- /dev/null +++ b/LFLiveKit/coder/H264/MP4Atom.h @@ -0,0 +1,30 @@ +// +// MP4Atom.h +// Encoder Demo +// +// Created by Geraint Davies on 15/01/2013. +// Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm +// + +#import + +@interface MP4Atom : NSObject + +{ + NSFileHandle *_file; + int64_t _offset; + int64_t _length; + OSType _type; + int64_t _nextChild; +} +@property OSType type; +@property int64_t length; + ++ (MP4Atom *)atomAt:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle; +- (BOOL)init:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle; +- (NSData *)readAt:(int64_t)offset size:(int)length; +- (BOOL)setChildOffset:(int64_t)offset; +- (MP4Atom *)nextChild; +- (MP4Atom *)childOfType:(OSType)fourcc startAt:(int64_t)offset; + +@end diff --git a/LFLiveKit/coder/H264/MP4Atom.m b/LFLiveKit/coder/H264/MP4Atom.m new file mode 100755 index 00000000..abc355f8 --- /dev/null +++ b/LFLiveKit/coder/H264/MP4Atom.m @@ -0,0 +1,90 @@ +// +// MP4Atom.m +// Encoder Demo +// +// Created by Geraint Davies on 15/01/2013. +// Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm +// + +#import "MP4Atom.h" + +static unsigned int to_host(unsigned char *p){ + return (p[0] << 24) + (p[1] << 16) + (p[2] << 8) + p[3]; +} + +@implementation MP4Atom + +@synthesize type = _type; +@synthesize length = _length; + ++ (MP4Atom *)atomAt:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle { + MP4Atom *atom = [MP4Atom alloc]; + if (![atom init:offset size:length type:fourcc inFile:handle]) { + return nil; + } + return atom; +} + +- (BOOL)init:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle { + _file = handle; + _offset = offset; + _length = length; + _type = fourcc; + _nextChild = 0; + + return YES; +} + +- (NSData *)readAt:(int64_t)offset size:(int)length { + [_file seekToFileOffset:_offset + offset]; + return [_file readDataOfLength:length]; +} + +- (BOOL)setChildOffset:(int64_t)offset { + _nextChild = offset; + return YES; +} + +- (MP4Atom *)nextChild { + if (_nextChild <= (_length - 8)) { + [_file seekToFileOffset:_offset + _nextChild]; + NSData *data = [_file readDataOfLength:8]; + int cHeader = 8; + unsigned char *p = (unsigned char *)[data bytes]; + int64_t len = to_host(p); + OSType fourcc = to_host(p + 4); + if (len == 1) { + // 64-bit extended length + cHeader += 8; + data = [_file readDataOfLength:8]; + p = (unsigned char *)[data bytes]; + len = to_host(p); + len = (len << 32) + to_host(p + 4); + } else if (len == 0) { + // whole remaining parent space + len = _length - _nextChild; + } + if (fourcc == (OSType)('uuid')) { + cHeader += 16; + } + if ((len < 0) || ((len + _nextChild) > _length)) { + return nil; + } + int64_t offset = _nextChild + cHeader; + _nextChild += len; + len -= cHeader; + return [MP4Atom atomAt:offset+_offset size:len type:fourcc inFile:_file]; + } + return nil; +} + +- (MP4Atom *)childOfType:(OSType)fourcc startAt:(int64_t)offset { + [self setChildOffset:offset]; + MP4Atom *child = nil; + do { + child = [self nextChild]; + } while ((child != nil) && (child.type != fourcc)); + return child; +} + +@end diff --git a/LFLiveKit/coder/H264/NALUnit.cpp b/LFLiveKit/coder/H264/NALUnit.cpp new file mode 100755 index 00000000..d082704f --- /dev/null +++ b/LFLiveKit/coder/H264/NALUnit.cpp @@ -0,0 +1,424 @@ + +// +// NALUnit.cpp +// +// Implementation of Basic parsing of H.264 NAL Units +// +// Geraint Davies, March 2004 +// +// Copyright (c) GDCL 2004-2008 http://www.gdcl.co.uk/license.htm + + + +#include "NALUnit.h" + + +// --- core NAL Unit implementation ------------------------------ + +NALUnit::NALUnit() + : m_pStart(NULL), + m_cBytes(0){ +} + +bool +NALUnit::GetStartCode(const BYTE *& pBegin, const BYTE *& pStart, int& cRemain){ + // start code is any number of 00 followed by 00 00 01 + // We need to record the first 00 in pBegin and the first byte + // following the startcode in pStart. + // if no start code is found, pStart and cRemain should be unchanged. + + const BYTE *pThis = pStart; + int cBytes = cRemain; + + pBegin = NULL; + while (cBytes >= 4) { + if (pThis[0] == 0) { + // remember first 00 + if (pBegin == NULL) { + pBegin = pThis; + } + if ((pThis[1] == 0) && + (pThis[2] == 1)) { + // point to type byte of NAL unit + pStart = pThis + 3; + cRemain = cBytes - 3; + return true; + } + } else { + pBegin = NULL; + } + cBytes--; + pThis++; + } + return false; +} + +bool +NALUnit::Parse(const BYTE *pBuffer, int cSpace, int LengthSize, bool bEnd){ + // if we get the start code but not the whole + // NALU, we can return false but still have the length property valid + m_cBytes = 0; + + ResetBitstream(); + + if (LengthSize > 0) { + m_pStartCodeStart = pBuffer; + + if (LengthSize > cSpace) { + return false; + } + + m_cBytes = 0; + for (int i = 0; i < LengthSize; i++) { + m_cBytes <<= 8; + m_cBytes += *pBuffer++; + } + + if ((m_cBytes+LengthSize) <= cSpace) { + m_pStart = pBuffer; + return true; + } + } else { + // this is not length-delimited: we must look for start codes + const BYTE *pBegin; + if (GetStartCode(pBegin, pBuffer, cSpace)) { + m_pStart = pBuffer; + m_pStartCodeStart = pBegin; + + // either we find another startcode, or we continue to the + // buffer end (if this is the last block of data) + if (GetStartCode(pBegin, pBuffer, cSpace)) { + m_cBytes = int(pBegin - m_pStart); + return true; + } else if (bEnd) { + // current element extends to end of buffer + m_cBytes = cSpace; + return true; + } + } + } + return false; +} + +// bitwise access to data +void +NALUnit::ResetBitstream(){ + m_idx = 0; + m_nBits = 0; + m_cZeros = 0; +} + +void +NALUnit::Skip(int nBits){ + if (nBits < m_nBits) { + m_nBits -= nBits; + } else { + nBits -= m_nBits; + while (nBits >= 8) { + GetBYTE(); + nBits -= 8; + } + if (nBits) { + m_byte = GetBYTE(); + m_nBits = 8; + + m_nBits -= nBits; + } + } +} + +// get the next byte, removing emulation prevention bytes +BYTE +NALUnit::GetBYTE(){ + if (m_idx >= m_cBytes) { + return 0; + } + + BYTE b = m_pStart[m_idx++]; + + // to avoid start-code emulation, a byte 0x03 is inserted + // after any 00 00 pair. Discard that here. + if (b == 0) { + m_cZeros++; + if ((m_idx < m_cBytes) && (m_cZeros == 2) && (m_pStart[m_idx] == 0x03)) { + m_idx++; + m_cZeros = 0; + } + } else { + m_cZeros = 0; + } + return b; +} + +unsigned long +NALUnit::GetBit(){ + if (m_nBits == 0) { + m_byte = GetBYTE(); + m_nBits = 8; + } + m_nBits--; + return (m_byte >> m_nBits) & 0x1; +} + +unsigned long +NALUnit::GetWord(int nBits){ + unsigned long u = 0; + while (nBits > 0) { + u <<= 1; + u |= GetBit(); + nBits--; + } + return u; +} + +unsigned long +NALUnit::GetUE(){ + // Exp-Golomb entropy coding: leading zeros, then a one, then + // the data bits. The number of leading zeros is the number of + // data bits, counting up from that number of 1s as the base. + // That is, if you see + // 0001010 + // You have three leading zeros, so there are three data bits (010) + // counting up from a base of 111: thus 111 + 010 = 1001 = 9 + int cZeros = 0; + while (GetBit() == 0) { + cZeros++; + } + return GetWord(cZeros) + ((1 << cZeros)-1); +} + +long +NALUnit::GetSE(){ + // same as UE but signed. + // basically the unsigned numbers are used as codes to indicate signed numbers in pairs + // in increasing value. Thus the encoded values + // 0, 1, 2, 3, 4 + // mean + // 0, 1, -1, 2, -2 etc + + unsigned long UE = GetUE(); + bool bPositive = UE & 1; + long SE = (UE + 1) >> 1; + if (!bPositive) { + SE = -SE; + } + return SE; +} + +// --- sequence params parsing --------------- +SeqParamSet::SeqParamSet() + : m_cx(0), + m_cy(0), + m_FrameBits(0){ + // SetRect(&m_rcFrame, 0, 0, 0, 0); +} + +void +ScalingList(int size, NALUnit *pnalu){ + long lastScale = 8; + long nextScale = 8; + for (int j = 0; j < size; j++) { + if (nextScale != 0) { + long delta = pnalu->GetSE(); + nextScale = (lastScale + delta + 256) %256; + } + int scaling_list_j = (nextScale == 0) ? lastScale : nextScale; + lastScale = scaling_list_j; + } +} + +bool +SeqParamSet::Parse(NALUnit *pnalu){ + if (pnalu->Type() != NALUnit::NAL_Sequence_Params) { + return false; + } + + // with the UE/SE type encoding, we must decode all the values + // to get through to the ones we want + pnalu->ResetBitstream(); + pnalu->Skip(8); // type + m_Profile = pnalu->GetWord(8); + m_Compatibility = (BYTE)pnalu->GetWord(8); + m_Level = pnalu->GetWord(8); + + /*int seq_param_id =*/ pnalu->GetUE(); + + if ((m_Profile == 100) || (m_Profile == 110) || (m_Profile == 122) || (m_Profile == 144)) { + int chroma_fmt = pnalu->GetUE(); + if (chroma_fmt == 3) { + pnalu->Skip(1); + } + /* int bit_depth_luma_minus8 = */ pnalu->GetUE(); + /* int bit_depth_chroma_minus8 = */ pnalu->GetUE(); + pnalu->Skip(1); + int seq_scaling_matrix_present = pnalu->GetBit(); + if (seq_scaling_matrix_present) { + for (int i = 0; i < 8; i++) { + if (pnalu->GetBit()) { + if (i < 6) { + ScalingList(16, pnalu); + } else { + ScalingList(64, pnalu); + } + } + } + } + } + + int log2_frame_minus4 = pnalu->GetUE(); + m_FrameBits = log2_frame_minus4 + 4; + int POCtype = pnalu->GetUE(); + if (POCtype == 0) { + /*int log2_poc_minus4 =*/ pnalu->GetUE(); + } else if (POCtype == 1) { + pnalu->Skip(1); // delta always zero + /*int nsp_offset =*/ pnalu->GetSE(); + /*int nsp_top_to_bottom = */ pnalu->GetSE(); + int num_ref_in_cycle = pnalu->GetUE(); + for (int i = 0; i < num_ref_in_cycle; i++) { + /*int sf_offset =*/ pnalu->GetSE(); + } + } else if (POCtype != 2) { + return false; + } + // else for POCtype == 2, no additional data in stream + + /*int num_ref_frames =*/ pnalu->GetUE(); + /*int gaps_allowed =*/ pnalu->GetBit(); + + int mbs_width = pnalu->GetUE(); + int mbs_height = pnalu->GetUE(); + m_cx = (mbs_width+1) * 16; + m_cy = (mbs_height+1) * 16; + + // smoke test validation of sps + if ((m_cx > 2000) || (m_cy > 2000)) { + return false; + } + + // if this is false, then sizes are field sizes and need adjusting + m_bFrameOnly = pnalu->GetBit() ? true : false; + + if (!m_bFrameOnly) { + pnalu->Skip(1); // adaptive frame/field + } + pnalu->Skip(1); // direct 8x8 + +#if 0 + SetRect(&m_rcFrame, 0, 0, 0, 0); + bool bCrop = pnalu->GetBit() ? true : false; + if (bCrop) { + // get cropping rect + // store as exclusive, pixel parameters relative to frame + m_rcFrame.left = pnalu->GetUE() * 2; + m_rcFrame.right = pnalu->GetUE() * 2; + m_rcFrame.top = pnalu->GetUE() * 2; + m_rcFrame.bottom = pnalu->GetUE() * 2; + } + + if (!IsRectEmpty(&m_rcFrame)) { + m_rcFrame.right = m_cx - m_rcFrame.right; + m_rcFrame.bottom = m_cy - m_rcFrame.bottom; + } +#endif + // adjust rect from 2x2 units to pixels + + if (!m_bFrameOnly) { + // adjust heights from field to frame + m_cy *= 2; +#if 0 + m_rcFrame.top *= 2; + m_rcFrame.bottom *= 2; +#endif + } + + // .. rest are not interesting yet + m_nalu = *pnalu; + return true; +} + +// --- slice header -------------------- +bool +SliceHeader::Parse(NALUnit *pnalu){ + switch (pnalu->Type()) { + case NALUnit::NAL_IDR_Slice: + case NALUnit::NAL_Slice: + case NALUnit::NAL_PartitionA: + // all these begin with a slice header + break; + + default: + return false; + } + + // slice header has the 1-byte type, then one UE value, + // then the frame number. + pnalu->ResetBitstream(); + pnalu->Skip(8); // NALU type + pnalu->GetUE(); // first mb in slice + pnalu->GetUE(); // slice type + pnalu->GetUE(); // pic param set id + + m_framenum = pnalu->GetWord(m_nBitsFrame); + return true; +} + +// --- SEI ---------------------- + + +SEIMessage::SEIMessage(NALUnit *pnalu){ + m_pnalu = pnalu; + const BYTE *p = pnalu->Start(); + p++; // nalu type byte + m_type = 0; + while (*p == 0xff) { + m_type += 255; + p++; + } + m_type += *p; + p++; + m_length = 0; + while (*p == 0xff) { + m_type += 255; + p++; + } + m_length += *p; + p++; + m_idxPayload = int(p - m_pnalu->Start()); +} + +avcCHeader::avcCHeader(const BYTE *header, int cBytes){ + if (cBytes < 8) { + return; + } + const BYTE *pEnd = header + cBytes; + + int cSeq = header[5] & 0x1f; + header += 6; + for (int i = 0; i < cSeq; i++) { + if ((header+2) > pEnd) { + return; + } + int cThis = (header[0] << 8) + header[1]; + header += 2; + if ((header+cThis) > pEnd) { + return; + } + if (i == 0) { + NALUnit n(header, cThis); + m_sps = n; + } + header += cThis; + } + if ((header + 3) >= pEnd) { + return; + } + int cPPS = header[0]; + if (cPPS > 0) { + int cThis = (header[1] << 8) + header[2]; + header += 3; + NALUnit n(header, cThis); + m_pps = n; + } +} + diff --git a/LFLiveKit/coder/H264/NALUnit.h b/LFLiveKit/coder/H264/NALUnit.h new file mode 100755 index 00000000..bfa7946a --- /dev/null +++ b/LFLiveKit/coder/H264/NALUnit.h @@ -0,0 +1,242 @@ + +// +// NALUnit.h +// +// Basic parsing of H.264 NAL Units +// +// Geraint Davies, March 2004 +// +// Copyright (c) GDCL 2004-2008 http://www.gdcl.co.uk/license.htm + + + +#pragma once + +typedef unsigned char BYTE; +typedef unsigned long ULONG; +#ifndef NULL +#define NULL 0 +#endif + +class NALUnit +{ +public: + NALUnit(); + NALUnit(const BYTE* pStart, int len){ + m_pStart = m_pStartCodeStart = pStart; + m_cBytes = len; + ResetBitstream(); + } + virtual ~NALUnit() { + } + + // assignment copies a pointer into a fixed buffer managed elsewhere. We do not copy the data + NALUnit(const NALUnit &r){ + m_pStart = r.m_pStart; + m_cBytes = r.m_cBytes; + ResetBitstream(); + } + const NALUnit& operator = (const NALUnit &r) + { + m_pStart = r.m_pStart; + m_cBytes = r.m_cBytes; + ResetBitstream(); + return *this; + } + + enum eNALType { + NAL_Slice = 1, + NAL_PartitionA = 2, + NAL_PartitionB = 3, + NAL_PartitionC = 4, + NAL_IDR_Slice = 5, + NAL_SEI = 6, + NAL_Sequence_Params = 7, + NAL_Picture_Params = 8, + NAL_AUD = 9, + }; + + // identify a NAL unit within a buffer. + // If LengthSize is non-zero, it is the number of bytes + // of length field we expect. Otherwise, we expect start-code + // delimiters. + bool Parse(const BYTE *pBuffer, int cSpace, int LengthSize, bool bEnd); + + eNALType Type(){ + if (m_pStart == NULL) { + return eNALType(0); + } + return eNALType(m_pStart[0] & 0x1F); + } + + int Length(){ + return m_cBytes; + } + + const BYTE *Start(){ + return m_pStart; + } + + // bitwise access to data + void ResetBitstream(); + void Skip(int nBits); + + unsigned long GetWord(int nBits); + unsigned long GetUE(); + long GetSE(); + BYTE GetBYTE(); + unsigned long GetBit(); + + const BYTE *StartCodeStart() { + return m_pStartCodeStart; + } + +private: + bool GetStartCode(const BYTE *& pBegin, const BYTE *& pStart, int& cRemain); + +private: + const BYTE *m_pStartCodeStart; + const BYTE *m_pStart; + int m_cBytes; + + // bitstream access + int m_idx; + int m_nBits; + BYTE m_byte; + int m_cZeros; +}; + + + +// simple parser for the Sequence parameter set things that we need +class SeqParamSet +{ +public: + SeqParamSet(); + bool Parse(NALUnit *pnalu); + int FrameBits(){ + return m_FrameBits; + } + + long EncodedWidth(){ + return m_cx; + } + + long EncodedHeight(){ + return m_cy; + } + +#if 0 + long CroppedWidth(){ + if (IsRectEmpty(&m_rcFrame)) { + return EncodedWidth(); + } + return m_rcFrame.right - m_rcFrame.left; + } + + long CroppedHeight(){ + if (IsRectEmpty(&m_rcFrame)) { + return EncodedHeight(); + } + return m_rcFrame.bottom - m_rcFrame.top; + } + + RECT *CropRect(){ + return &m_rcFrame; + } + +#endif + bool Interlaced(){ + return !m_bFrameOnly; + } + + unsigned int Profile() { + return m_Profile; + } + + unsigned int Level() { + return m_Level; + } + + BYTE Compat() { + return m_Compatibility; + } + + NALUnit *NALU() { + return &m_nalu; + } + +private: + NALUnit m_nalu; + int m_FrameBits; + long m_cx; + long m_cy; +// RECT m_rcFrame; + bool m_bFrameOnly; + + int m_Profile; + int m_Level; + BYTE m_Compatibility; +}; + +// extract frame num from slice headers +class SliceHeader +{ +public: + SliceHeader(int nBitsFrame) + : m_framenum(0), + m_nBitsFrame(nBitsFrame){ + } + + bool Parse(NALUnit *pnalu); + int FrameNum(){ + return m_framenum; + } + +private: + int m_framenum; + int m_nBitsFrame; +}; + +// SEI message structure +class SEIMessage +{ +public: + SEIMessage(NALUnit* pnalu); + int Type() { + return m_type; + } + + int Length() { + return m_length; + } + + const BYTE *Payload() { + return m_pnalu->Start() + m_idxPayload; + } + +private: + NALUnit *m_pnalu; + int m_type; + int m_length; + int m_idxPayload; +}; + +// avcC structure from MP4 +class avcCHeader +{ +public: + avcCHeader(const BYTE* header, int cBytes); + NALUnit *sps() { + return &m_sps; + } + + NALUnit *pps() { + return &m_pps; + } + +private: + NALUnit m_sps; + NALUnit m_pps; +}; + diff --git a/LFLiveKit/coder/H264/VideoEncoder.h b/LFLiveKit/coder/H264/VideoEncoder.h new file mode 100755 index 00000000..344eef48 --- /dev/null +++ b/LFLiveKit/coder/H264/VideoEncoder.h @@ -0,0 +1,27 @@ +// +// VideoEncoder.h +// Encoder Demo +// +// Created by Geraint Davies on 14/01/2013. +// Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm +// + +#import +#import "AVFoundation/AVAssetWriter.h" +#import "AVFoundation/AVAssetWriterInput.h" +#import "AVFoundation/AVMediaFormat.h" +#import "AVFoundation/AVVideoSettings.h" + +@interface VideoEncoder : NSObject + + +@property NSString *path; +@property (nonatomic, readonly) NSUInteger bitrate; + ++ (VideoEncoder *)encoderForPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate; + +- (void)initPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate; +- (void)finishWithCompletionHandler:(void (^)(void))handler; +- (BOOL)encodeFrame:(CMSampleBufferRef)sampleBuffer; + +@end diff --git a/LFLiveKit/coder/H264/VideoEncoder.m b/LFLiveKit/coder/H264/VideoEncoder.m new file mode 100755 index 00000000..f06ef82e --- /dev/null +++ b/LFLiveKit/coder/H264/VideoEncoder.m @@ -0,0 +1,76 @@ +// +// VideoEncoder.m +// Encoder Demo +// +// Created by Geraint Davies on 14/01/2013. +// Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm +// + +#import "VideoEncoder.h" + +@implementation VideoEncoder +{ + AVAssetWriter *_writer; + AVAssetWriterInput *_writerInput; + NSString *_path; +} + +@synthesize path = _path; + ++ (VideoEncoder *)encoderForPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate { + VideoEncoder *enc = [VideoEncoder alloc]; + [enc initPath:path Height:height andWidth:width bitrate:bitrate]; + return enc; +} + +- (void)initPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate { + self.path = path; + _bitrate = bitrate; + + [[NSFileManager defaultManager] removeItemAtPath:self.path error:nil]; + NSURL *url = [NSURL fileURLWithPath:self.path]; + + NSDictionary *settings = @{ + AVVideoCodecKey: AVVideoCodecH264, + AVVideoWidthKey: @(width), + AVVideoHeightKey: @(height), + AVVideoCompressionPropertiesKey: @{ + AVVideoAverageBitRateKey: @(self.bitrate), + AVVideoMaxKeyFrameIntervalKey: @(30 * 2), + AVVideoProfileLevelKey: AVVideoProfileLevelH264Baseline41, + AVVideoAllowFrameReorderingKey: @NO, + } + }; + _writerInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:settings]; + _writerInput.expectsMediaDataInRealTime = YES; + + _writer = [AVAssetWriter assetWriterWithURL:url fileType:AVFileTypeQuickTimeMovie error:nil]; + [_writer addInput:_writerInput]; +} + +- (void)finishWithCompletionHandler:(void (^)(void))handler { + if (_writer.status == AVAssetWriterStatusWriting) { + [_writer finishWritingWithCompletionHandler:handler]; + } +} + +- (BOOL)encodeFrame:(CMSampleBufferRef)sampleBuffer { + if (CMSampleBufferDataIsReady(sampleBuffer)) { + if (_writer.status == AVAssetWriterStatusUnknown) { + CMTime startTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); + [_writer startWriting]; + [_writer startSessionAtSourceTime:startTime]; + } + if (_writer.status == AVAssetWriterStatusFailed) { + //NSLog(@"AVAssetWriterStatusFailed"); + return NO; + } + if (_writerInput.readyForMoreMediaData == YES) { + [_writerInput appendSampleBuffer:sampleBuffer]; + return YES; + } + } + return NO; +} + +@end diff --git a/LFLiveKit/coder/LFH264VideoEncoder.h b/LFLiveKit/coder/LFH264VideoEncoder.h new file mode 100644 index 00000000..8f59fa5b --- /dev/null +++ b/LFLiveKit/coder/LFH264VideoEncoder.h @@ -0,0 +1,16 @@ +// +// LFH264VideoEncoder +// LFLiveKit +// +// Created by feng on 7/5/16. +// Copyright (c) 2014 zhanqi.tv. All rights reserved. +// +#import "LFVideoEncoding.h" + +@interface LFH264VideoEncoder : NSObject { + +} + +- (void)shutdown; + +@end diff --git a/LFLiveKit/coder/LFH264VideoEncoder.mm b/LFLiveKit/coder/LFH264VideoEncoder.mm new file mode 100644 index 00000000..a4862993 --- /dev/null +++ b/LFLiveKit/coder/LFH264VideoEncoder.mm @@ -0,0 +1,270 @@ +// +// LFH264VideoEncoder +// LFLiveKit +// +// Created by feng on 7/5/16. +// Copyright (c) 2014 zhanqi.tv. All rights reserved. +// + +#import +#import +#import "NALUnit.h" +#import "AVEncoder.h" +#import "LFH264VideoEncoder.h" +#import "LFVideoFrame.h" + +@interface LFH264VideoEncoder() { + FILE *fp; + NSInteger frameCount; + BOOL enabledWriteVideoFile; +} +@property (nonatomic, strong) LFLiveVideoConfiguration *configuration; +@property (nonatomic, weak) id h264Delegate; +@property (nonatomic) BOOL isBackGround; +@property (nonatomic) NSInteger currentVideoBitRate; +@property (nonatomic, strong) dispatch_queue_t sendQueue; + +@property (nonatomic, strong) AVEncoder *encoder; + +@property (nonatomic, strong) NSData *naluStartCode; +@property (nonatomic, strong) NSMutableData *videoSPSandPPS; +@property (nonatomic, strong) NSMutableData *spsData; +@property (nonatomic, strong) NSMutableData *ppsData; +@property (nonatomic, strong) NSMutableData *sei; +@property (nonatomic) CMTimeScale timescale; +@property (nonatomic, strong) NSMutableArray *orphanedFrames; +@property (nonatomic, strong) NSMutableArray *orphanedSEIFrames; +@property (nonatomic) CMTime lastPTS; +@end + +@implementation LFH264VideoEncoder + +#pragma mark -- LifeCycle +- (instancetype)initWithVideoStreamConfiguration:(LFLiveVideoConfiguration *)configuration { + if (self = [super init]) { + NSLog(@"USE LF264VideoEncoder"); + _configuration = configuration; + [self initCompressionSession]; + } + return self; +} + +- (void)initCompressionSession{ + _sendQueue = dispatch_queue_create("com.youku.laifeng.h264.sendframe", DISPATCH_QUEUE_SERIAL); + [self initializeNALUnitStartCode]; + _lastPTS = kCMTimeInvalid; + _timescale = 1000; + frameCount = 0; +#ifdef DEBUG + enabledWriteVideoFile = NO; + [self initForFilePath]; +#endif + + _encoder = [AVEncoder encoderForHeight:_configuration.videoSize.height andWidth:_configuration.videoSize.width bitrate:_configuration.videoBitRate]; + [_encoder encodeWithBlock:^int(NSArray* dataArray, CMTimeValue ptsValue) { + [self incomingVideoFrames:dataArray ptsValue:ptsValue]; + return 0; + } onParams:^int(NSData *data) { + [self generateSPSandPPS]; + return 0; + }]; +} + +- (void) initializeNALUnitStartCode { + NSUInteger naluLength = 4; + uint8_t *nalu = (uint8_t*)malloc(naluLength * sizeof(uint8_t)); + nalu[0] = 0x00; + nalu[1] = 0x00; + nalu[2] = 0x00; + nalu[3] = 0x01; + _naluStartCode = [NSData dataWithBytesNoCopy:nalu length:naluLength freeWhenDone:YES]; +} + +- (void) generateSPSandPPS { + NSData* config = _encoder.getConfigData; + if (!config) { + return; + } + avcCHeader avcC((const BYTE*)[config bytes], [config length]); + SeqParamSet seqParams; + seqParams.Parse(avcC.sps()); + + NSData* spsData = [NSData dataWithBytes:avcC.sps()->Start() length:avcC.sps()->Length()]; + NSData *ppsData = [NSData dataWithBytes:avcC.pps()->Start() length:avcC.pps()->Length()]; + + _spsData = [NSMutableData dataWithCapacity:avcC.sps()->Length()+_naluStartCode.length]; + _ppsData = [NSMutableData dataWithCapacity:avcC.pps()->Length()+_naluStartCode.length]; + + [_spsData appendData:_naluStartCode]; + [_spsData appendData:spsData]; + [_ppsData appendData:_naluStartCode]; + [_ppsData appendData:ppsData]; + + _videoSPSandPPS = [NSMutableData dataWithCapacity:avcC.sps()->Length() + avcC.pps()->Length() + _naluStartCode.length * 2]; + [_videoSPSandPPS appendData:_naluStartCode]; + [_videoSPSandPPS appendData:spsData]; + [_videoSPSandPPS appendData:_naluStartCode]; + [_videoSPSandPPS appendData:ppsData]; +} + +- (void)setVideoBitRate:(NSInteger)videoBitRate{ + _currentVideoBitRate = videoBitRate; + _encoder.bitrate = _currentVideoBitRate; +} + +- (NSInteger)videoBitRate{ + return _currentVideoBitRate; +} + +- (void)setDelegate:(id)delegate{ + _h264Delegate = delegate; +} + +- (void)encodeVideoData:(CVPixelBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp { + + CVPixelBufferLockBaseAddress(pixelBuffer, 0); + CMVideoFormatDescriptionRef videoInfo = NULL; + CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixelBuffer, &videoInfo); + + CMTime frameTime = CMTimeMake(timeStamp, 1000); + CMTime duration = CMTimeMake(1, (int32_t)_configuration.videoFrameRate); + CMSampleTimingInfo timing = {duration, frameTime, kCMTimeInvalid}; + + CMSampleBufferRef sampleBuffer = NULL; + CMSampleBufferCreateForImageBuffer(kCFAllocatorDefault, pixelBuffer, YES, NULL, NULL, videoInfo, &timing, &sampleBuffer); + CVPixelBufferUnlockBaseAddress(pixelBuffer, 0); + [_encoder encodeFrame:sampleBuffer]; + CFRelease(videoInfo); + CFRelease(sampleBuffer); + + frameCount++; +} + +- (void)addOrphanedFramesFromArray:(NSArray*)frames { + for (NSData *data in frames) { + unsigned char* pNal = (unsigned char*)[data bytes]; + int idc = pNal[0] & 0x60; + int naltype = pNal[0] & 0x1f; + if (idc == 0 && naltype == 6) { // SEI + [self.orphanedSEIFrames addObject:data]; + } else { + [self.orphanedFrames addObject:data]; + } + } +} + +- (void)writeVideoFrames:(NSArray*)frames pts:(CMTime)pts { + NSMutableArray *totalFrames = [NSMutableArray array]; + if (self.orphanedSEIFrames.count > 0) { + [totalFrames addObjectsFromArray:self.orphanedSEIFrames]; + [self.orphanedSEIFrames removeAllObjects]; + } + [totalFrames addObjectsFromArray:frames]; + + NSMutableData *aggregateFrameData = [NSMutableData data]; + BOOL hasKeyframe = NO; + + for (NSData *data in totalFrames) { + unsigned char* pNal = (unsigned char*)[data bytes]; + int idc = pNal[0] & 0x60; + int naltype = pNal[0] & 0x1f; + NSData *videoData = nil; + + if (idc == 0 && naltype == 6) { // SEI + _sei = [NSMutableData dataWithData:data]; + continue; + } else if (naltype == 5) { // IDR + hasKeyframe = YES; + NSMutableData *IDRData = [NSMutableData dataWithData:_videoSPSandPPS]; + if (_sei) { + [IDRData appendData:_naluStartCode]; + [IDRData appendData:_sei]; + _sei = nil; + } + [IDRData appendData:_naluStartCode]; + [IDRData appendData:data]; + videoData = IDRData; + } else { + NSMutableData *regularData = [NSMutableData dataWithData:_naluStartCode]; + [regularData appendData:data]; + videoData = regularData; + } + [aggregateFrameData appendData:videoData]; + + LFVideoFrame *videoFrame = [LFVideoFrame new]; + const char *dataBuffer = (const char *)aggregateFrameData.bytes; + videoFrame.data = [NSMutableData dataWithBytes:dataBuffer + _naluStartCode.length length:aggregateFrameData.length - _naluStartCode.length]; + videoFrame.timestamp = pts.value; + videoFrame.isKeyFrame = (naltype == 5); + videoFrame.sps = _spsData; + videoFrame.pps = _ppsData; + + if(self.h264Delegate && [self.h264Delegate respondsToSelector:@selector(videoEncoder:videoFrame:)]){ + [self.h264Delegate videoEncoder:self videoFrame:videoFrame]; + } + } + + if (self->enabledWriteVideoFile) { + fwrite(aggregateFrameData.bytes, 1, aggregateFrameData.length, self->fp); + } +} + +- (void) incomingVideoFrames:(NSArray*)frames ptsValue:(CMTimeValue)ptsValue { + if (ptsValue == 0) { + [self addOrphanedFramesFromArray:frames]; + return; + } + if (!_videoSPSandPPS) { + [self generateSPSandPPS]; + } + CMTime pts = CMTimeMake(ptsValue, _timescale); + if (self.orphanedFrames.count > 0) { + CMTime ptsDiff = CMTimeSubtract(pts, _lastPTS); + NSUInteger orphanedFramesCount = self.orphanedFrames.count; +// NSLog(@"lastPTS before first orphaned frame: %lld", _lastPTS.value); + for (NSData *frame in self.orphanedFrames) { + CMTime fakePTSDiff = CMTimeMultiplyByFloat64(ptsDiff, 1.0/(orphanedFramesCount + 1)); + CMTime fakePTS = CMTimeAdd(_lastPTS, fakePTSDiff); +// NSLog(@"orphan frame fakePTS: %lld", fakePTS.value); + [self writeVideoFrames:@[frame] pts:fakePTS]; + } +// NSLog(@"pts after orphaned frame: %lld", pts.value); + [self.orphanedFrames removeAllObjects]; + } + + [self writeVideoFrames:frames pts:pts]; + _lastPTS = pts; +} + + +- (void) dealloc { + [_encoder shutdown]; +} + +- (void)shutdown { + [_encoder encodeWithBlock:nil onParams:nil]; +} + +- (void)initForFilePath { + char *path = [self GetFilePathByfileName:"IOSCamDemo.h264"]; + NSLog(@"%s", path); + self->fp = fopen(path, "wb"); +} + +- (char *)GetFilePathByfileName:(char *)filename { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + NSString *strName = [NSString stringWithFormat:@"%s", filename]; + + NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; + + NSUInteger len = [writablePath length]; + + char *filepath = (char *)malloc(sizeof(char) * (len + 1)); + + [writablePath getCString:filepath maxLength:len + 1 encoding:[NSString defaultCStringEncoding]]; + + return filepath; +} + +@end diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.m b/LFLiveKit/coder/LFHardwareAudioEncoder.m index 0ba7c33b..5511d030 100755 --- a/LFLiveKit/coder/LFHardwareAudioEncoder.m +++ b/LFLiveKit/coder/LFHardwareAudioEncoder.m @@ -21,6 +21,7 @@ @implementation LFHardwareAudioEncoder - (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)configuration { if (self = [super init]) { + NSLog(@"USE LFHardwareAudioEncoder"); _configuration = configuration; } return self; @@ -108,8 +109,6 @@ - (BOOL)createAudioConvert { //根据输入样本初始化一个编码转换器 } }; OSStatus result = AudioConverterNewSpecific(&inputFormat, &outputFormat, 2, requestedCodecs, &m_converter); - - if (result != noErr) return NO; return YES; diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/coder/LFHardwareVideoEncoder.m index 3c84881c..c74bca17 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -30,6 +30,7 @@ @implementation LFHardwareVideoEncoder #pragma mark -- LifeCycle - (instancetype)initWithVideoStreamConfiguration:(LFLiveVideoConfiguration *)configuration { if (self = [super init]) { + NSLog(@"USE LFHardwareVideoEncoder"); _configuration = configuration; [self initCompressionSession]; @@ -225,7 +226,7 @@ static void VideoCompressonOutputCallback(void *VTref, void *VTFrameRef, OSStatu } - (void)initForFilePath { - char *path = [self GetFilePathByfileName:"IOSCamDemo.h264"]; + char *path = [self GetFilePathByfileName:"IOSCamDemo_HW.h264"]; NSLog(@"%s", path); self->fp = fopen(path, "wb"); } diff --git a/LFLiveKit/publish/LFStreamRtmpSocket.m b/LFLiveKit/publish/LFStreamRtmpSocket.m index 776a1a8b..5651cf03 100644 --- a/LFLiveKit/publish/LFStreamRtmpSocket.m +++ b/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -73,11 +73,22 @@ @interface LFStreamRtmpSocket () @property (nonatomic, assign) BOOL sendVideoHead; @property (nonatomic, assign) BOOL sendAudioHead; +@property(nonatomic, assign) BOOL isFirstKeyframeSended; //强制第一帧必须是关键帧 +@property(nonatomic, assign) BOOL isAudioSendStart; //在发送视频第一帧之后再发送音频 + @end @implementation LFStreamRtmpSocket #pragma mark -- LFStreamSocket +- (instancetype)initWithStream:(LFLiveStreamInfo*)stream { + return [self initWithStream:stream videoSize:stream.videoConfiguration.videoSize reconnectInterval:RetryTimesMargin reconnectCount:RetryTimesBreaken]; +} + +- (instancetype)initWithStream:(LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize { + return [self initWithStream:stream videoSize:videoSize reconnectInterval:RetryTimesMargin reconnectCount:RetryTimesBreaken]; +} + - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount { if (!stream) @throw [NSException exceptionWithName:@"LFStreamRtmpSocket init error" reason:@"stream is nil" userInfo:nil]; if (self = [super init]) { @@ -128,6 +139,29 @@ - (void)_stop { - (void)sendFrame:(LFFrame *)frame { dispatch_async(YYRtmpSendQueue(), ^{ if (!frame) return; + + //强制第一帧必须是关键帧 + if (!self.isFirstKeyframeSended) { + if ([frame isKindOfClass:[LFVideoFrame class]]) { + LFVideoFrame *videoFrame = (LFVideoFrame *)frame; + if (videoFrame.isKeyFrame) { + self.isFirstKeyframeSended = YES; + dispatch_after( + dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), + dispatch_get_main_queue(), ^{ + self.isAudioSendStart = YES; + }); + } else { + return; + } + } + } + + //在发送视频第一帧之后再发送音频 + if ([frame isKindOfClass:[LFAudioFrame class]] && !self.isAudioSendStart) { + return; + } + [self.buffer appendObject:frame]; [self sendFrame]; }); @@ -199,6 +233,8 @@ - (void)clean { _isConnected = NO; _sendAudioHead = NO; _sendVideoHead = NO; + _isFirstKeyframeSended = NO; + _isAudioSendStart = NO; self.debugInfo = nil; [self.buffer removeAllObject]; self.retryTimes4netWorkBreaken = 0; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index 3f726390..5249b0df 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -401,7 +401,7 @@ FRAMEWORK_SEARCH_PATHS = "$(inherited)"; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "$(inherited)"; @@ -418,7 +418,7 @@ FRAMEWORK_SEARCH_PATHS = "$(inherited)"; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = "$(inherited)"; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index be112986e348a37ef3e4ac2540f721f883bd53d1..93a75354c2b4bdb3e9092c453475395544c55884 100644 GIT binary patch literal 35099 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 bt<*++q%U+(Km7aeUOql^F1$SF|LX8xuxa*- literal 15246 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 diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index c8ec24ed..422f6620 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -154,7 +154,7 @@ - (LFLiveSession *)session { /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium2 landscape:NO]]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium3 landscape:NO]]; /**   自己定制单声道 */ /* diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index b3660360..cf2bcce5 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -1,4 +1,4 @@ source 'https://github.com/CocoaPods/Specs.git' -platform :ios,'8.0' +platform :ios,'7.0' pod 'LFLiveKit', path: '../' \ No newline at end of file diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index 9dade3077cff9b00a990fc13299281e49327d35e..e60ce2c9ef7dc3b3080317dc402d60c3ffe547d6 100644 GIT binary patch delta 5828 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 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index 97d5e789e181ea22dfbefc122f004ed985e7a47b..fc0e20333d7eba0bbf2d7e9be6a0eac081d129fd 100644 GIT binary patch delta 10325 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 Date: Mon, 25 Jul 2016 23:44:12 +0800 Subject: [PATCH 047/178] modify bug https://github.com/LaiFengiOS/LFLiveKit/issues/22 --- LFLiveKit/capture/LFAudioCapture.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index 50f91bab..e8485329 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -46,8 +46,8 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura NSError *error = nil; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; - - [session setMode:AVAudioSessionModeVideoRecording error:&error]; + + [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; if (![session setActive:YES error:&error]) { [self handleAudioComponentCreationFailure]; @@ -55,7 +55,7 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura AudioComponentDescription acd; acd.componentType = kAudioUnitType_Output; - acd.componentSubType = kAudioUnitSubType_RemoteIO; + acd.componentSubType = kAudioUnitSubType_VoiceProcessingIO; acd.componentManufacturer = kAudioUnitManufacturer_Apple; acd.componentFlags = 0; acd.componentFlagsMask = 0; From 37bfd377d6c303f5ae1d09085ac635e4a7a4e140 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 26 Jul 2016 11:16:43 +0800 Subject: [PATCH 048/178] rename h264 encode lib to avoid duplicate symbol error --- LFLiveKit.xcodeproj/project.pbxproj | 64 +++++++++--------- .../UserInterfaceState.xcuserstate | Bin 11314 -> 18569 bytes LFLiveKit/LFLiveSession.h | 7 +- LFLiveKit/LFLiveSession.m | 41 +++++++---- .../coder/H264/{AVEncoder.h => LFAVEncoder.h} | 8 +-- .../H264/{AVEncoder.mm => LFAVEncoder.mm} | 46 ++++++------- .../coder/H264/{MP4Atom.h => LFMP4Atom.h} | 10 +-- .../coder/H264/{MP4Atom.m => LFMP4Atom.m} | 18 ++--- .../coder/H264/{NALUnit.cpp => LFNALUnit.cpp} | 46 ++++++------- .../coder/H264/{NALUnit.h => LFNALUnit.h} | 46 ++++++------- .../H264/{VideoEncoder.h => LFVideoEncoder.h} | 4 +- .../H264/{VideoEncoder.m => LFVideoEncoder.m} | 10 +-- LFLiveKit/coder/LFH264VideoEncoder.mm | 12 ++-- LFLiveKit/coder/LFHardwareVideoEncoder.m | 2 +- .../UserInterfaceState.xcuserstate | Bin 36181 -> 36295 bytes .../UserInterfaceState.xcuserstate | Bin 26666 -> 26659 bytes 16 files changed, 165 insertions(+), 149 deletions(-) rename LFLiveKit/coder/H264/{AVEncoder.h => LFAVEncoder.h} (83%) rename LFLiveKit/coder/H264/{AVEncoder.mm => LFAVEncoder.mm} (90%) rename LFLiveKit/coder/H264/{MP4Atom.h => LFMP4Atom.h} (68%) rename LFLiveKit/coder/H264/{MP4Atom.m => LFMP4Atom.m} (82%) rename LFLiveKit/coder/H264/{NALUnit.cpp => LFNALUnit.cpp} (91%) rename LFLiveKit/coder/H264/{NALUnit.h => LFNALUnit.h} (85%) rename LFLiveKit/coder/H264/{VideoEncoder.h => LFVideoEncoder.h} (81%) rename LFLiveKit/coder/H264/{VideoEncoder.m => LFVideoEncoder.m} (90%) diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 8b276b3c..d4e0c4b7 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -54,15 +54,15 @@ B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; - B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14621D45F18B008082E8 /* AVEncoder.h */; }; - B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14631D45F18B008082E8 /* AVEncoder.mm */; }; + B2CD146D1D45F18B008082E8 /* LFAVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14621D45F18B008082E8 /* LFAVEncoder.h */; }; + B2CD146E1D45F18B008082E8 /* LFAVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14631D45F18B008082E8 /* LFAVEncoder.mm */; }; B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14641D45F18B008082E8 /* LICENSE.markdown */; }; - B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14651D45F18B008082E8 /* MP4Atom.h */; }; - B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14661D45F18B008082E8 /* MP4Atom.m */; }; - B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14671D45F18B008082E8 /* NALUnit.cpp */; }; - B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14681D45F18B008082E8 /* NALUnit.h */; }; - B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14691D45F18B008082E8 /* VideoEncoder.h */; }; - B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146A1D45F18B008082E8 /* VideoEncoder.m */; }; + B2CD14701D45F18B008082E8 /* LFMP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14651D45F18B008082E8 /* LFMP4Atom.h */; }; + B2CD14711D45F18B008082E8 /* LFMP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14661D45F18B008082E8 /* LFMP4Atom.m */; }; + B2CD14721D45F18B008082E8 /* LFNALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14671D45F18B008082E8 /* LFNALUnit.cpp */; }; + B2CD14731D45F18B008082E8 /* LFNALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14681D45F18B008082E8 /* LFNALUnit.h */; }; + B2CD14741D45F18B008082E8 /* LFVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14691D45F18B008082E8 /* LFVideoEncoder.h */; }; + B2CD14751D45F18B008082E8 /* LFVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146A1D45F18B008082E8 /* LFVideoEncoder.m */; }; B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */; }; B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */; }; BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; @@ -129,15 +129,15 @@ B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; - B2CD14621D45F18B008082E8 /* AVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVEncoder.h; sourceTree = ""; }; - B2CD14631D45F18B008082E8 /* AVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVEncoder.mm; sourceTree = ""; }; + B2CD14621D45F18B008082E8 /* LFAVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAVEncoder.h; sourceTree = ""; }; + B2CD14631D45F18B008082E8 /* LFAVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFAVEncoder.mm; sourceTree = ""; }; B2CD14641D45F18B008082E8 /* LICENSE.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.markdown; sourceTree = ""; }; - B2CD14651D45F18B008082E8 /* MP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MP4Atom.h; sourceTree = ""; }; - B2CD14661D45F18B008082E8 /* MP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MP4Atom.m; sourceTree = ""; }; - B2CD14671D45F18B008082E8 /* NALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NALUnit.cpp; sourceTree = ""; }; - B2CD14681D45F18B008082E8 /* NALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NALUnit.h; sourceTree = ""; }; - B2CD14691D45F18B008082E8 /* VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoEncoder.h; sourceTree = ""; }; - B2CD146A1D45F18B008082E8 /* VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoEncoder.m; sourceTree = ""; }; + B2CD14651D45F18B008082E8 /* LFMP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFMP4Atom.h; sourceTree = ""; }; + B2CD14661D45F18B008082E8 /* LFMP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFMP4Atom.m; sourceTree = ""; }; + B2CD14671D45F18B008082E8 /* LFNALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LFNALUnit.cpp; sourceTree = ""; }; + B2CD14681D45F18B008082E8 /* LFNALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFNALUnit.h; sourceTree = ""; }; + B2CD14691D45F18B008082E8 /* LFVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoder.h; sourceTree = ""; }; + B2CD146A1D45F18B008082E8 /* LFVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoEncoder.m; sourceTree = ""; }; B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -317,15 +317,15 @@ B2CD14611D45F18B008082E8 /* H264 */ = { isa = PBXGroup; children = ( - B2CD14621D45F18B008082E8 /* AVEncoder.h */, - B2CD14631D45F18B008082E8 /* AVEncoder.mm */, + B2CD14621D45F18B008082E8 /* LFAVEncoder.h */, + B2CD14631D45F18B008082E8 /* LFAVEncoder.mm */, B2CD14641D45F18B008082E8 /* LICENSE.markdown */, - B2CD14651D45F18B008082E8 /* MP4Atom.h */, - B2CD14661D45F18B008082E8 /* MP4Atom.m */, - B2CD14671D45F18B008082E8 /* NALUnit.cpp */, - B2CD14681D45F18B008082E8 /* NALUnit.h */, - B2CD14691D45F18B008082E8 /* VideoEncoder.h */, - B2CD146A1D45F18B008082E8 /* VideoEncoder.m */, + B2CD14651D45F18B008082E8 /* LFMP4Atom.h */, + B2CD14661D45F18B008082E8 /* LFMP4Atom.m */, + B2CD14671D45F18B008082E8 /* LFNALUnit.cpp */, + B2CD14681D45F18B008082E8 /* LFNALUnit.h */, + B2CD14691D45F18B008082E8 /* LFVideoEncoder.h */, + B2CD146A1D45F18B008082E8 /* LFVideoEncoder.m */, ); path = H264; sourceTree = ""; @@ -349,7 +349,7 @@ 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, - B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */, + B2CD14701D45F18B008082E8 /* LFMP4Atom.h in Headers */, 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, @@ -365,12 +365,12 @@ 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, - B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */, - B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */, + B2CD14741D45F18B008082E8 /* LFVideoEncoder.h in Headers */, + B2CD14731D45F18B008082E8 /* LFNALUnit.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, - B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */, + B2CD146D1D45F18B008082E8 /* LFAVEncoder.h in Headers */, 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -540,18 +540,18 @@ files = ( 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, - B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */, + B2CD14711D45F18B008082E8 /* LFMP4Atom.m in Sources */, 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */, + B2CD14721D45F18B008082E8 /* LFNALUnit.cpp in Sources */, B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */, 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, - B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */, + B2CD14751D45F18B008082E8 /* LFVideoEncoder.m in Sources */, B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */, B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, @@ -560,7 +560,7 @@ 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, - B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */, + B2CD146E1D45F18B008082E8 /* LFAVEncoder.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index d766fe626fc62e9f9e4949f9068f9e64146a27a5..66b0a55481333756a9d44bd67023b8c26e52b6f8 100644 GIT binary patch literal 18569 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

    f5`1CiLD;sKYPHx`bSyHKh4E6zkAS6{ar!q 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 BP0|1W delta 6438 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 diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 37cfbdfa..72191285 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -51,10 +51,10 @@ /** The beautyFace control capture shader filter empty or beautiy */ @property (nonatomic, assign) BOOL beautyFace; -/** The beautyLevel control beautyFace Level, default 0.5, between 0.0 ~ 1.0 */ +/** The beautyLevel control beautyFace Level. Default is 0.5, between 0.0 ~ 1.0 */ @property (nonatomic, assign) CGFloat beautyLevel; -/** The brightLevel control brightness Level, default 0.5, between 0.0 ~ 1.0 */ +/** The brightLevel control brightness Level, Default is 0.5, between 0.0 ~ 1.0 */ @property (nonatomic, assign) CGFloat brightLevel; /** The torch control camera zoom scale default 1.0, between 1.0 ~ 3.0 */ @@ -69,6 +69,9 @@ /** The muted control callbackAudioData,muted will memset 0.*/ @property (nonatomic, assign) BOOL muted; +/* The adaptiveBitrate control auto adjust bitrate. Default is NO */ +@property (nonatomic, assign) BOOL adaptiveBitrate; + /** The stream control upload and package*/ @property (nullable, nonatomic, strong, readonly) LFLiveStreamInfo *streamInfo; diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 7befe001..a06dc306 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -11,6 +11,7 @@ #import "LFAudioCapture.h" #import "LFHardwareVideoEncoder.h" #import "LFHardwareAudioEncoder.h" +#import "LFH264VideoEncoder.h" #import "LFStreamRTMPSocket.h" #import "LFLiveStreamInfo.h" #import "LFGPUImageBeautyFilter.h" @@ -52,6 +53,8 @@ @interface LFLiveSession ())socket status:(LFLiveState)sta self.isFirstFrame = YES; self.uploading = YES; } - }else if(status == LFLiveStop || status == LFLiveError){ + } else if(status == LFLiveStop || status == LFLiveError){ self.uploading = NO; } dispatch_async(dispatch_get_main_queue(), ^{ @@ -149,16 +154,20 @@ - (void)socketDebug:(nullable id)socket debugInfo:(nullable LFLi } - (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuffferState)status { - NSUInteger videoBitRate = [_videoEncoder videoBitRate]; - if (status == LFLiveBuffferDecline) { - if (videoBitRate < _videoConfiguration.videoMaxBitRate) { - videoBitRate = videoBitRate + 50 * 1000; - [_videoEncoder setVideoBitRate:videoBitRate]; - } - } else { - if (videoBitRate > _videoConfiguration.videoMinBitRate) { - videoBitRate = videoBitRate - 100 * 1000; - [_videoEncoder setVideoBitRate:videoBitRate]; + if (self.adaptiveBitrate) { + NSUInteger videoBitRate = [_videoEncoder videoBitRate]; + if (status == LFLiveBuffferDecline) { + if (videoBitRate < _videoConfiguration.videoMaxBitRate) { + videoBitRate = videoBitRate + 50 * 1000; + [_videoEncoder setVideoBitRate:videoBitRate]; + NSLog(@"Increase bitrate %@", @(videoBitRate)); + } + } else { + if (videoBitRate > _videoConfiguration.videoMinBitRate) { + videoBitRate = videoBitRate - 100 * 1000; + [_videoEncoder setVideoBitRate:videoBitRate]; + NSLog(@"Decline bitrate %@", @(videoBitRate)); + } } } } @@ -289,7 +298,11 @@ - (LFVideoCapture *)videoCaptureSource { - (id)videoEncoder { if (!_videoEncoder) { - _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + if (SYSTEM_VERSION_LESS_THAN(@"8.0")) { + _videoEncoder = [[LFH264VideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + } else { + _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + } [_videoEncoder setDelegate:self]; } return _videoEncoder; @@ -313,9 +326,9 @@ - (LFLiveStreamInfo *)streamInfo { - (uint64_t)currentTimestamp { dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); uint64_t currentts = 0; - if (_isFirstFrame == true) { + if (_isFirstFrame) { _timestamp = NOW; - _isFirstFrame = false; + _isFirstFrame = NO; currentts = 0; } else { currentts = NOW - _timestamp; diff --git a/LFLiveKit/coder/H264/AVEncoder.h b/LFLiveKit/coder/H264/LFAVEncoder.h similarity index 83% rename from LFLiveKit/coder/H264/AVEncoder.h rename to LFLiveKit/coder/H264/LFAVEncoder.h index 4141d423..8d917b96 100755 --- a/LFLiveKit/coder/H264/AVEncoder.h +++ b/LFLiveKit/coder/H264/LFAVEncoder.h @@ -12,17 +12,17 @@ #import #import #import "sys/stat.h" -#import "VideoEncoder.h" -#import "MP4Atom.h" +#import "LFVideoEncoder.h" +#import "LFMP4Atom.h" typedef int (^encoder_handler_t)(NSArray *data, CMTimeValue ptsValue); typedef int (^param_handler_t)(NSData *params); -@interface AVEncoder : NSObject +@interface LFAVEncoder : NSObject @property (atomic) NSUInteger bitrate; -+ (AVEncoder *)encoderForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate; ++ (LFAVEncoder *)encoderForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate; - (void)encodeWithBlock:(encoder_handler_t)block onParams:(param_handler_t)paramsHandler; - (void)encodeFrame:(CMSampleBufferRef)sampleBuffer; diff --git a/LFLiveKit/coder/H264/AVEncoder.mm b/LFLiveKit/coder/H264/LFAVEncoder.mm similarity index 90% rename from LFLiveKit/coder/H264/AVEncoder.mm rename to LFLiveKit/coder/H264/LFAVEncoder.mm index 7fb7058e..8cd67f08 100755 --- a/LFLiveKit/coder/H264/AVEncoder.mm +++ b/LFLiveKit/coder/H264/LFAVEncoder.mm @@ -6,8 +6,8 @@ // Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm // -#import "AVEncoder.h" -#import "NALUnit.h" +#import "LFAVEncoder.h" +#import "LFNALUnit.h" static void *AVEncoderContext = &AVEncoderContext; @@ -19,14 +19,14 @@ static unsigned int to_host(unsigned char *p){ #define MAX_FILENAME_INDEX 5 // filenames "capture1.mp4" wraps at capture5.mp4 -@interface AVEncoder () +@interface LFAVEncoder () { // initial writer, used to obtain SPS/PPS from header - VideoEncoder *_headerWriter; + LFVideoEncoder *_headerWriter; // main encoder/writer - VideoEncoder *_writer; + LFVideoEncoder *_writer; // writer output file (input to our extractor) and monitoring NSFileHandle *_inputFile; @@ -70,12 +70,12 @@ @interface AVEncoder () @end -@implementation AVEncoder +@implementation LFAVEncoder @synthesize bitspersecond = _bitspersecond; -+ (AVEncoder *)encoderForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate { - AVEncoder *enc = [AVEncoder alloc]; ++ (LFAVEncoder *)encoderForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate { + LFAVEncoder *enc = [LFAVEncoder alloc]; [enc initForHeight:height andWidth:width bitrate:bitrate]; return enc; } @@ -91,12 +91,12 @@ - (void)initForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate { _width = width; _bitrate = bitrate; NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"params.mp4"]; - _headerWriter = [VideoEncoder encoderForPath:path Height:height andWidth:width bitrate:self.bitrate]; + _headerWriter = [LFVideoEncoder encoderForPath:path Height:height andWidth:width bitrate:self.bitrate]; _times = [NSMutableArray arrayWithCapacity:10]; // swap between 3 filenames _currentFile = 1; - _writer = [VideoEncoder encoderForPath:[self makeFilename] Height:height andWidth:width bitrate:self.bitrate]; + _writer = [LFVideoEncoder encoderForPath:[self makeFilename] Height:height andWidth:width bitrate:self.bitrate]; [self addObserver:self forKeyPath:NSStringFromSelector(@selector(bitrate)) options:0 context:AVEncoderContext]; } @@ -123,9 +123,9 @@ - (BOOL)parseParams:(NSString *)path { NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path]; struct stat s; fstat([file fileDescriptor], &s); - MP4Atom *movie = [MP4Atom atomAt:0 size:s.st_size type:(OSType)('file') inFile:file]; - MP4Atom *moov = [movie childOfType:(OSType)('moov') startAt:0]; - MP4Atom *trak = nil; + LFMP4Atom *movie = [LFMP4Atom atomAt:0 size:s.st_size type:(OSType)('file') inFile:file]; + LFMP4Atom *moov = [movie childOfType:(OSType)('moov') startAt:0]; + LFMP4Atom *trak = nil; if (moov != nil) { for (;; ) { trak = [moov nextChild]; @@ -134,7 +134,7 @@ - (BOOL)parseParams:(NSString *)path { } if (trak.type == (OSType)('trak')) { - MP4Atom *tkhd = [trak childOfType:(OSType)('tkhd') startAt:0]; + LFMP4Atom *tkhd = [trak childOfType:(OSType)('tkhd') startAt:0]; NSData *verflags = [tkhd readAt:0 size:4]; unsigned char *p = (unsigned char *)[verflags bytes]; if (p[3] & 1) { @@ -145,13 +145,13 @@ - (BOOL)parseParams:(NSString *)path { } } } - MP4Atom *stsd = nil; + LFMP4Atom *stsd = nil; if (trak != nil) { - MP4Atom *media = [trak childOfType:(OSType)('mdia') startAt:0]; + LFMP4Atom *media = [trak childOfType:(OSType)('mdia') startAt:0]; if (media != nil) { - MP4Atom *minf = [media childOfType:(OSType)('minf') startAt:0]; + LFMP4Atom *minf = [media childOfType:(OSType)('minf') startAt:0]; if (minf != nil) { - MP4Atom *stbl = [minf childOfType:(OSType)('stbl') startAt:0]; + LFMP4Atom *stbl = [minf childOfType:(OSType)('stbl') startAt:0]; if (stbl != nil) { stsd = [stbl childOfType:(OSType)('stsd') startAt:0]; } @@ -159,9 +159,9 @@ - (BOOL)parseParams:(NSString *)path { } } if (stsd != nil) { - MP4Atom *avc1 = [stsd childOfType:(OSType)('avc1') startAt:8]; + LFMP4Atom *avc1 = [stsd childOfType:(OSType)('avc1') startAt:8]; if (avc1 != nil) { - MP4Atom *esd = [avc1 childOfType:(OSType)('avcC') startAt:78]; + LFMP4Atom *esd = [avc1 childOfType:(OSType)('avcC') startAt:78]; if (esd != nil) { // this is the avcC record that we are looking for _avcC = [esd readAt:0 size:esd.length]; @@ -229,14 +229,14 @@ - (void)encodeFrame:(CMSampleBufferRef)sampleBuffer { if (st.st_size > OUTPUT_FILE_SWITCH_POINT || self.bitrateChanged) { self.bitrateChanged = NO; _swapping = YES; - VideoEncoder *oldVideo = _writer; + LFVideoEncoder *oldVideo = _writer; // construct a new writer to the next filename if (++_currentFile > MAX_FILENAME_INDEX) { _currentFile = 1; } //NSLog(@"Swap to file %d", _currentFile); - _writer = [VideoEncoder encoderForPath:[self makeFilename] Height:_height andWidth:_width bitrate:self.bitrate]; + _writer = [LFVideoEncoder encoderForPath:[self makeFilename] Height:_height andWidth:_width bitrate:self.bitrate]; // to do this seamlessly requires a few steps in the right order // first, suspend the read source @@ -385,7 +385,7 @@ - (void)onNALU:(NSData *)nalu { int naltype = pNal[0] & 0x1f; if (_pendingNALU) { - NALUnit nal(pNal, [nalu length]); + LFNALUnit nal(pNal, [nalu length]); // we have existing data —is this the same frame? // typically there are a couple of NALUs per frame in iOS encoding. diff --git a/LFLiveKit/coder/H264/MP4Atom.h b/LFLiveKit/coder/H264/LFMP4Atom.h similarity index 68% rename from LFLiveKit/coder/H264/MP4Atom.h rename to LFLiveKit/coder/H264/LFMP4Atom.h index 11deb18f..c991351b 100755 --- a/LFLiveKit/coder/H264/MP4Atom.h +++ b/LFLiveKit/coder/H264/LFMP4Atom.h @@ -1,5 +1,5 @@ // -// MP4Atom.h +// LFMP4Atom.h // Encoder Demo // // Created by Geraint Davies on 15/01/2013. @@ -8,7 +8,7 @@ #import -@interface MP4Atom : NSObject +@interface LFMP4Atom : NSObject { NSFileHandle *_file; @@ -20,11 +20,11 @@ @property OSType type; @property int64_t length; -+ (MP4Atom *)atomAt:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle; ++ (LFMP4Atom *)atomAt:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle; - (BOOL)init:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle; - (NSData *)readAt:(int64_t)offset size:(int)length; - (BOOL)setChildOffset:(int64_t)offset; -- (MP4Atom *)nextChild; -- (MP4Atom *)childOfType:(OSType)fourcc startAt:(int64_t)offset; +- (LFMP4Atom *)nextChild; +- (LFMP4Atom *)childOfType:(OSType)fourcc startAt:(int64_t)offset; @end diff --git a/LFLiveKit/coder/H264/MP4Atom.m b/LFLiveKit/coder/H264/LFMP4Atom.m similarity index 82% rename from LFLiveKit/coder/H264/MP4Atom.m rename to LFLiveKit/coder/H264/LFMP4Atom.m index abc355f8..c2bb9308 100755 --- a/LFLiveKit/coder/H264/MP4Atom.m +++ b/LFLiveKit/coder/H264/LFMP4Atom.m @@ -1,24 +1,24 @@ // -// MP4Atom.m +// LFMP4Atom.m // Encoder Demo // // Created by Geraint Davies on 15/01/2013. // Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm // -#import "MP4Atom.h" +#import "LFMP4Atom.h" static unsigned int to_host(unsigned char *p){ return (p[0] << 24) + (p[1] << 16) + (p[2] << 8) + p[3]; } -@implementation MP4Atom +@implementation LFMP4Atom @synthesize type = _type; @synthesize length = _length; -+ (MP4Atom *)atomAt:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle { - MP4Atom *atom = [MP4Atom alloc]; ++ (LFMP4Atom *)atomAt:(int64_t)offset size:(int)length type:(OSType)fourcc inFile:(NSFileHandle *)handle { + LFMP4Atom *atom = [LFMP4Atom alloc]; if (![atom init:offset size:length type:fourcc inFile:handle]) { return nil; } @@ -45,7 +45,7 @@ - (BOOL)setChildOffset:(int64_t)offset { return YES; } -- (MP4Atom *)nextChild { +- (LFMP4Atom *)nextChild { if (_nextChild <= (_length - 8)) { [_file seekToFileOffset:_offset + _nextChild]; NSData *data = [_file readDataOfLength:8]; @@ -73,14 +73,14 @@ - (MP4Atom *)nextChild { int64_t offset = _nextChild + cHeader; _nextChild += len; len -= cHeader; - return [MP4Atom atomAt:offset+_offset size:len type:fourcc inFile:_file]; + return [LFMP4Atom atomAt:offset+_offset size:len type:fourcc inFile:_file]; } return nil; } -- (MP4Atom *)childOfType:(OSType)fourcc startAt:(int64_t)offset { +- (LFMP4Atom *)childOfType:(OSType)fourcc startAt:(int64_t)offset { [self setChildOffset:offset]; - MP4Atom *child = nil; + LFMP4Atom *child = nil; do { child = [self nextChild]; } while ((child != nil) && (child.type != fourcc)); diff --git a/LFLiveKit/coder/H264/NALUnit.cpp b/LFLiveKit/coder/H264/LFNALUnit.cpp similarity index 91% rename from LFLiveKit/coder/H264/NALUnit.cpp rename to LFLiveKit/coder/H264/LFNALUnit.cpp index d082704f..8802ea92 100755 --- a/LFLiveKit/coder/H264/NALUnit.cpp +++ b/LFLiveKit/coder/H264/LFNALUnit.cpp @@ -10,18 +10,18 @@ -#include "NALUnit.h" +#include "LFNALUnit.h" // --- core NAL Unit implementation ------------------------------ -NALUnit::NALUnit() +LFNALUnit::LFNALUnit() : m_pStart(NULL), m_cBytes(0){ } bool -NALUnit::GetStartCode(const BYTE *& pBegin, const BYTE *& pStart, int& cRemain){ +LFNALUnit::GetStartCode(const BYTE *& pBegin, const BYTE *& pStart, int& cRemain){ // start code is any number of 00 followed by 00 00 01 // We need to record the first 00 in pBegin and the first byte // following the startcode in pStart. @@ -54,7 +54,7 @@ NALUnit::GetStartCode(const BYTE *& pBegin, const BYTE *& pStart, int& cRemain){ } bool -NALUnit::Parse(const BYTE *pBuffer, int cSpace, int LengthSize, bool bEnd){ +LFNALUnit::Parse(const BYTE *pBuffer, int cSpace, int LengthSize, bool bEnd){ // if we get the start code but not the whole // NALU, we can return false but still have the length property valid m_cBytes = 0; @@ -102,14 +102,14 @@ NALUnit::Parse(const BYTE *pBuffer, int cSpace, int LengthSize, bool bEnd){ // bitwise access to data void -NALUnit::ResetBitstream(){ +LFNALUnit::ResetBitstream(){ m_idx = 0; m_nBits = 0; m_cZeros = 0; } void -NALUnit::Skip(int nBits){ +LFNALUnit::Skip(int nBits){ if (nBits < m_nBits) { m_nBits -= nBits; } else { @@ -129,7 +129,7 @@ NALUnit::Skip(int nBits){ // get the next byte, removing emulation prevention bytes BYTE -NALUnit::GetBYTE(){ +LFNALUnit::GetBYTE(){ if (m_idx >= m_cBytes) { return 0; } @@ -151,7 +151,7 @@ NALUnit::GetBYTE(){ } unsigned long -NALUnit::GetBit(){ +LFNALUnit::GetBit(){ if (m_nBits == 0) { m_byte = GetBYTE(); m_nBits = 8; @@ -161,7 +161,7 @@ NALUnit::GetBit(){ } unsigned long -NALUnit::GetWord(int nBits){ +LFNALUnit::GetWord(int nBits){ unsigned long u = 0; while (nBits > 0) { u <<= 1; @@ -172,7 +172,7 @@ NALUnit::GetWord(int nBits){ } unsigned long -NALUnit::GetUE(){ +LFNALUnit::GetUE(){ // Exp-Golomb entropy coding: leading zeros, then a one, then // the data bits. The number of leading zeros is the number of // data bits, counting up from that number of 1s as the base. @@ -188,7 +188,7 @@ NALUnit::GetUE(){ } long -NALUnit::GetSE(){ +LFNALUnit::GetSE(){ // same as UE but signed. // basically the unsigned numbers are used as codes to indicate signed numbers in pairs // in increasing value. Thus the encoded values @@ -206,7 +206,7 @@ NALUnit::GetSE(){ } // --- sequence params parsing --------------- -SeqParamSet::SeqParamSet() +LFSeqParamSet::LFSeqParamSet() : m_cx(0), m_cy(0), m_FrameBits(0){ @@ -214,7 +214,7 @@ SeqParamSet::SeqParamSet() } void -ScalingList(int size, NALUnit *pnalu){ +ScalingList(int size, LFNALUnit *pnalu){ long lastScale = 8; long nextScale = 8; for (int j = 0; j < size; j++) { @@ -228,8 +228,8 @@ ScalingList(int size, NALUnit *pnalu){ } bool -SeqParamSet::Parse(NALUnit *pnalu){ - if (pnalu->Type() != NALUnit::NAL_Sequence_Params) { +LFSeqParamSet::Parse(LFNALUnit *pnalu){ + if (pnalu->Type() != LFNALUnit::NAL_Sequence_Params) { return false; } @@ -339,11 +339,11 @@ SeqParamSet::Parse(NALUnit *pnalu){ // --- slice header -------------------- bool -SliceHeader::Parse(NALUnit *pnalu){ +LFSliceHeader::Parse(LFNALUnit *pnalu){ switch (pnalu->Type()) { - case NALUnit::NAL_IDR_Slice: - case NALUnit::NAL_Slice: - case NALUnit::NAL_PartitionA: + case LFNALUnit::NAL_IDR_Slice: + case LFNALUnit::NAL_Slice: + case LFNALUnit::NAL_PartitionA: // all these begin with a slice header break; @@ -366,7 +366,7 @@ SliceHeader::Parse(NALUnit *pnalu){ // --- SEI ---------------------- -SEIMessage::SEIMessage(NALUnit *pnalu){ +LFSEIMessage::LFSEIMessage(LFNALUnit *pnalu){ m_pnalu = pnalu; const BYTE *p = pnalu->Start(); p++; // nalu type byte @@ -387,7 +387,7 @@ SEIMessage::SEIMessage(NALUnit *pnalu){ m_idxPayload = int(p - m_pnalu->Start()); } -avcCHeader::avcCHeader(const BYTE *header, int cBytes){ +LFavcCHeader::LFavcCHeader(const BYTE *header, int cBytes){ if (cBytes < 8) { return; } @@ -405,7 +405,7 @@ avcCHeader::avcCHeader(const BYTE *header, int cBytes){ return; } if (i == 0) { - NALUnit n(header, cThis); + LFNALUnit n(header, cThis); m_sps = n; } header += cThis; @@ -417,7 +417,7 @@ avcCHeader::avcCHeader(const BYTE *header, int cBytes){ if (cPPS > 0) { int cThis = (header[1] << 8) + header[2]; header += 3; - NALUnit n(header, cThis); + LFNALUnit n(header, cThis); m_pps = n; } } diff --git a/LFLiveKit/coder/H264/NALUnit.h b/LFLiveKit/coder/H264/LFNALUnit.h similarity index 85% rename from LFLiveKit/coder/H264/NALUnit.h rename to LFLiveKit/coder/H264/LFNALUnit.h index bfa7946a..7b1a8461 100755 --- a/LFLiveKit/coder/H264/NALUnit.h +++ b/LFLiveKit/coder/H264/LFNALUnit.h @@ -18,25 +18,25 @@ typedef unsigned long ULONG; #define NULL 0 #endif -class NALUnit +class LFNALUnit { public: - NALUnit(); - NALUnit(const BYTE* pStart, int len){ + LFNALUnit(); + LFNALUnit(const BYTE* pStart, int len){ m_pStart = m_pStartCodeStart = pStart; m_cBytes = len; ResetBitstream(); } - virtual ~NALUnit() { + virtual ~LFNALUnit() { } // assignment copies a pointer into a fixed buffer managed elsewhere. We do not copy the data - NALUnit(const NALUnit &r){ + LFNALUnit(const LFNALUnit &r){ m_pStart = r.m_pStart; m_cBytes = r.m_cBytes; ResetBitstream(); } - const NALUnit& operator = (const NALUnit &r) + const LFNALUnit& operator = (const LFNALUnit &r) { m_pStart = r.m_pStart; m_cBytes = r.m_cBytes; @@ -109,11 +109,11 @@ class NALUnit // simple parser for the Sequence parameter set things that we need -class SeqParamSet +class LFSeqParamSet { public: - SeqParamSet(); - bool Parse(NALUnit *pnalu); + LFSeqParamSet(); + bool Parse(LFNALUnit *pnalu); int FrameBits(){ return m_FrameBits; } @@ -162,12 +162,12 @@ class SeqParamSet return m_Compatibility; } - NALUnit *NALU() { + LFNALUnit *NALU() { return &m_nalu; } private: - NALUnit m_nalu; + LFNALUnit m_nalu; int m_FrameBits; long m_cx; long m_cy; @@ -180,15 +180,15 @@ class SeqParamSet }; // extract frame num from slice headers -class SliceHeader +class LFSliceHeader { public: - SliceHeader(int nBitsFrame) + LFSliceHeader(int nBitsFrame) : m_framenum(0), m_nBitsFrame(nBitsFrame){ } - bool Parse(NALUnit *pnalu); + bool Parse(LFNALUnit *pnalu); int FrameNum(){ return m_framenum; } @@ -199,10 +199,10 @@ class SliceHeader }; // SEI message structure -class SEIMessage +class LFSEIMessage { public: - SEIMessage(NALUnit* pnalu); + LFSEIMessage(LFNALUnit* pnalu); int Type() { return m_type; } @@ -216,27 +216,27 @@ class SEIMessage } private: - NALUnit *m_pnalu; + LFNALUnit *m_pnalu; int m_type; int m_length; int m_idxPayload; }; // avcC structure from MP4 -class avcCHeader +class LFavcCHeader { public: - avcCHeader(const BYTE* header, int cBytes); - NALUnit *sps() { + LFavcCHeader(const BYTE* header, int cBytes); + LFNALUnit *sps() { return &m_sps; } - NALUnit *pps() { + LFNALUnit *pps() { return &m_pps; } private: - NALUnit m_sps; - NALUnit m_pps; + LFNALUnit m_sps; + LFNALUnit m_pps; }; diff --git a/LFLiveKit/coder/H264/VideoEncoder.h b/LFLiveKit/coder/H264/LFVideoEncoder.h similarity index 81% rename from LFLiveKit/coder/H264/VideoEncoder.h rename to LFLiveKit/coder/H264/LFVideoEncoder.h index 344eef48..d7337146 100755 --- a/LFLiveKit/coder/H264/VideoEncoder.h +++ b/LFLiveKit/coder/H264/LFVideoEncoder.h @@ -12,13 +12,13 @@ #import "AVFoundation/AVMediaFormat.h" #import "AVFoundation/AVVideoSettings.h" -@interface VideoEncoder : NSObject +@interface LFVideoEncoder : NSObject @property NSString *path; @property (nonatomic, readonly) NSUInteger bitrate; -+ (VideoEncoder *)encoderForPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate; ++ (LFVideoEncoder *)encoderForPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate; - (void)initPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate; - (void)finishWithCompletionHandler:(void (^)(void))handler; diff --git a/LFLiveKit/coder/H264/VideoEncoder.m b/LFLiveKit/coder/H264/LFVideoEncoder.m similarity index 90% rename from LFLiveKit/coder/H264/VideoEncoder.m rename to LFLiveKit/coder/H264/LFVideoEncoder.m index f06ef82e..e60df9bb 100755 --- a/LFLiveKit/coder/H264/VideoEncoder.m +++ b/LFLiveKit/coder/H264/LFVideoEncoder.m @@ -1,14 +1,14 @@ // -// VideoEncoder.m +// LFVideoEncoder.m // Encoder Demo // // Created by Geraint Davies on 14/01/2013. // Copyright (c) 2013 GDCL http://www.gdcl.co.uk/license.htm // -#import "VideoEncoder.h" +#import "LFVideoEncoder.h" -@implementation VideoEncoder +@implementation LFVideoEncoder { AVAssetWriter *_writer; AVAssetWriterInput *_writerInput; @@ -17,8 +17,8 @@ @implementation VideoEncoder @synthesize path = _path; -+ (VideoEncoder *)encoderForPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate { - VideoEncoder *enc = [VideoEncoder alloc]; ++ (LFVideoEncoder *)encoderForPath:(NSString *)path Height:(int)height andWidth:(int)width bitrate:(int)bitrate { + LFVideoEncoder *enc = [LFVideoEncoder alloc]; [enc initPath:path Height:height andWidth:width bitrate:bitrate]; return enc; } diff --git a/LFLiveKit/coder/LFH264VideoEncoder.mm b/LFLiveKit/coder/LFH264VideoEncoder.mm index a4862993..3021c75f 100644 --- a/LFLiveKit/coder/LFH264VideoEncoder.mm +++ b/LFLiveKit/coder/LFH264VideoEncoder.mm @@ -8,8 +8,8 @@ #import #import -#import "NALUnit.h" -#import "AVEncoder.h" +#import "LFNALUnit.h" +#import "LFAVEncoder.h" #import "LFH264VideoEncoder.h" #import "LFVideoFrame.h" @@ -24,7 +24,7 @@ @interface LFH264VideoEncoder() { @property (nonatomic) NSInteger currentVideoBitRate; @property (nonatomic, strong) dispatch_queue_t sendQueue; -@property (nonatomic, strong) AVEncoder *encoder; +@property (nonatomic, strong) LFAVEncoder *encoder; @property (nonatomic, strong) NSData *naluStartCode; @property (nonatomic, strong) NSMutableData *videoSPSandPPS; @@ -60,7 +60,7 @@ - (void)initCompressionSession{ [self initForFilePath]; #endif - _encoder = [AVEncoder encoderForHeight:_configuration.videoSize.height andWidth:_configuration.videoSize.width bitrate:_configuration.videoBitRate]; + _encoder = [LFAVEncoder encoderForHeight:_configuration.videoSize.height andWidth:_configuration.videoSize.width bitrate:_configuration.videoBitRate]; [_encoder encodeWithBlock:^int(NSArray* dataArray, CMTimeValue ptsValue) { [self incomingVideoFrames:dataArray ptsValue:ptsValue]; return 0; @@ -85,8 +85,8 @@ - (void) generateSPSandPPS { if (!config) { return; } - avcCHeader avcC((const BYTE*)[config bytes], [config length]); - SeqParamSet seqParams; + LFavcCHeader avcC((const BYTE*)[config bytes], [config length]); + LFSeqParamSet seqParams; seqParams.Parse(avcC.sps()); NSData* spsData = [NSData dataWithBytes:avcC.sps()->Start() length:avcC.sps()->Length()]; diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/coder/LFHardwareVideoEncoder.m index c74bca17..ac6c08a1 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -68,7 +68,7 @@ - (void)initCompressionSession { VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_DataRateLimits, (__bridge CFArrayRef)limit); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_RealTime, kCFBooleanFalse); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_ProfileLevel, kVTProfileLevel_H264_Main_AutoLevel); - VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_AllowFrameReordering, kCFBooleanFalse); + VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_AllowFrameReordering, kCFBooleanTrue); VTSessionSetProperty(compressionSession, kVTCompressionPropertyKey_H264EntropyMode, kVTH264EntropyMode_CABAC); VTCompressionSessionPrepareToEncodeFrames(compressionSession); diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index 0513620417ed1145095aa671c3f5a32ec3b8c3c3..2f3e9bd788333d94161a90a9577794d82cd1a476 100644 GIT binary patch delta 7206 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 delta 7199 zcmY*;cU)7~|9-po{gWyr{BzPJ;4_*MTfLFnL;C=7`_z-*w{ssOGA)qj500ck- zp>QYyiiZ-QBq$xqfC`}^XfRX?ks%7if_RV!5q=tq<^-u$3f*K(+5I52*cIfFUp-gaOgk32pIVQ3E>=@PLmnfb3k^ZW}ld1|mAK&hGvJa2rD2 zQ3V4)2jVA$8Zi{y3GV6~DvJ+a0q#a6y$Ctj6X`<8BV8~M z-cJiee1?Mk6Apz9=mER><88J6 z!JPrmA#!@avoH|V1O5mDU}u%POnedi`E&0j7=U`fUtl1*gP^T4+g;}oQU3{c4ZMYj z=>@NYH^7@PfPw)u3}AY}+mU+k4h&%blY+sWN8HVgk3P$K3x;O~f>KJYpC z0{jhp3BCefgKuCU1_okb01pFkFc1#|2{1tD1K)ywfbYQf{qM&}EDR7~AQ1+#VW99o zr3fCt>YVJ^5{`t>h?vd}C@}@XAVwlaK{1FiP(M{tM@~mM3?z5xVIZrcxbswWV&^Px zgr3kZ3hF0I>CjyW8yFTI7J-1EWGE#pDhz~yG#E(jsOqTA2XUwFmI#h=;x4?yPsT{2V#l_PSNFYh39 zdU1)J4qr5#3elo&f_)GZ1`1#x2Oe-59`FeU^8d4$5c@L)2L^KcDWV=nJ?WRnkJLv! zhk?A#jlL}C|2sOJH+?e9Kd7qDC?yOOcPjiDLxw>*M9xY`18JdZs0Ic~V4xHR%3z>; zB~%OPk#8Xb43J=e4iD(B`JGGryhIDs`We#%HA5|s6$Z#KK!E`&4A45?`sapxP@w-< zMEc+Xh8`#g1B?#BKasyc%w7SFghs(Y|9UtbW&dVuEYyLBS%H{~nAcIzQMdwvp>Z(4 zf&q3%ajl}o8mO_ijL77T=|Fsb{sm2fzWOiFRA?FuaAAPg85K-{W<#C*8lX8aAm}U& zX4Nf#7XFjkf8k4@?*0jg$sM^p&@vbh|EqDuXN|qkN*Iv9fb{=q?1R?+SGaZ1dKjpH zfy&N}!4%?V=-dAq{SMj&12Pzpcisz@hW0>vt2F_0prs=W5s4ro1|bR&WCR1jjkp?d zJK}l7TVxnA5{W`$kT_&Kl7LJ?rXWd31JZ^ZfgFh(jU0;%Az|crk1TNs5$2njDnLD0 z2O7Y7&fO zZ;1VS0L_C|K%tfWhWItK7FyqLi<_WZ(NHu!+7`Va`grv1=;zTdqhCkAjeZyX0fj~- zppsFksC3jI)DRR2MM2R}Y!ny8M+s3wQO&5ysM)ARsAZ`2sLiOYsP9m_P4Y&Z66?6=r$*d5qi*gZH97mG{B<>K;jg}A{u5{`nS;TSj; zPKcA?oVZE2dAM#|53U!t3bzHf756P}8*V@D2<|lQ8SYICKBgds8pDWT#c*TzF~S&I zj6Y_2%%Ygym{l=-F>7Mh#e}|%*%q@SW>?Ifn0+yiVzXj3vEyQA#?FbI8`~ATFm`e5 z#@HRPdt>*<9*jL4doK23?9Z{6V{gRXiv2bAZtN?3I6faw!87q}JQpv*OYoI=8D5Up z;>~y~-iCMJ-FPqFj}PMK;*Qdu%B>@;b+1X!gaze!X3hW!Xv^{ z!VAJH!taE4gpY*3h+)KmL?jU;qKH^xEHR!)BqkHnh#ACUVhOQ~7$Om2;tb*};vC{! z;sfFv;#=Z7;)ldxiKawzVpC#E;^xGCi3bu7B_2siNXkmeNykCUDzJx}H)E0UGT>f~X`E0Q-RZ%*Et{9OtvB{3yAB{d~I#gQ^1Wn{|el(8wN zQ?8_3OSzG9E44h8mnsOQic%%1=Tfhy-b}rndMAyVCQ6f}Ri??(W~D7nTb9<7)|>V= z9Y_yPN2W)mYtkFjE$Pka*7Tj}$I?%vf1mzC1|cImBR3;IqcFpt(UCDOspEgZCX(9%K6GSf1PGK(`yGRrczW`+)A9?CqDc`OT= zh0lu5B4j0IHD`IV{8_=Q5m|?_&Sw3Xbw2B2c0o2Zo1V?gW@mqu-IcvCdvW&C>>Jrn zvY%zY$bOka&ynO*=E!msIdgM*a(Z)C<@Dve$qmZ|a>H|xxmCG!xyIav+{WBnxzBQ6 z@&a-J zwSZnQvtUUM~tfPuVwR+sk&A?JnC}w!iE|+4p6q%g&blRCb~4MR|OAR=J|Qy4+IUUOuvXT=|6Z z$>meaXOwr9FDhSJzO1~byf;+7ul!#5Yf=&^i!_+TAPGqll9Z$%sYtaX1F3=3NNOUr zkX)n@qz=+_(tOea(jw9lQa7oOw3f7iw2`!#w3W1nbd>ZH=_=_4={D&u=>h3C(reON z(mT=z(x2pTGMb!3&LZcM3&?}XC1g68Mdp(EWFc8hR+4MUp%$`>>?H@tBgmu3&QFE2g!%YN6E*@C&@pNFOq*DUm;&3-ylCAza;-fK~kb95CuiS zPzaPHN-8Ctl1a&?6jK-!5oIW)j#5u)q%={i6gS032~tK-Mp8yozNE~eETycbtf8!@ zY@}=nQFc@IQ4UfLQ;t%OQ_fK?Q|?nsB5U}sozkyQ;$&3 zP_I(&QtwkAQXf;FQh%quqkg1*q9JIZ0W^q)r=`#eXyr5tjZS0HxU@=|oTj9yX&PEJ zt%24`^U%i9Ceo(RrqO27=Fk??x@kSMUfL>JA8iwD7wtIh9PK>q674eW8toqKA?*q6 z8SMq_CG7(ppkwJodJ;W_o<`507tjaOOXy{EGM!52(PeZk-As3c=uWza?xzo@hv?(z z6X=uZU(u)0`{-xr*BApCC`KY9i&4s8FxU(pL&%UYRE%MaYKD%XXBZgG3@2k0V?1L5 zV-jNuV=7}Vql>YKv4qjhSk73(*uvP)IKeo@IK%jnae;B2af@+>agXtk@tEySFjdStW-HUf^fQMuM>5ASCom^7r!uEAXEJ9q z7cqO8o0vP9dzkx~hnPp1XP7@SFEB4LFEg()?=qh;-?9K!Gz-nbvSL_xRthVfmC4Fx z<+AcwWh@p;${NP1X4SF`tOiyq%fWJnSZmln2>pANs>kaD@8^H$H;p|8@$c|+vvvb(xY!;i#7O=(aO7>8; zmaSv!*#>q!+sgK^$Fe7~C$qm|Ph-zucd-|-m$H|!SFl&IH?ViI53@t(*q7PY*f-g~ zvhT5ij4@;ODEAsiZq$>DH#905nfsp8adnmFwoH^;{b za=zfeoG&?(I8!*&I5Rk1oRyq!IJ-GVILA5Pb53*4aV~SNac**MbMA2Nah`MDal^T2 zE{==mCU6tEnIUctH=kR`9n2lVrE&ROC0EC-$K0pf=iJ}8uecw%fAPY2055_U$;0td zd3iiCkHh2hM7#=~jHlt%@bo+buYuRdv-3hhUI%YFZ$57!ZwYT1Zv}51?;GA`-d5f= z-VWYD-WlF6ynDRoyqCN;ygzs!_y9kGAH|3GXg-!tHi!cfmWs2f-)7-@-^?j4(x5 zAS@SBgmfWG$Q4!!Lvo=~s1|C3)xrj0yYLI)1mO(fY~fsCmvE7=SGZcZMz~J6LAX)4 zLwHblM)!01;M{EXo&^iO3?Fh$-TTDnv3-l}IHT zCen)PMQx(tqVb|>qM4#OqIsePq8`yoQJ-jyXuas0kZ8N;i0G{7n&_VBf#{LwiRhW= zt?0ezPtjlEFfkyG7AK0c#bsiqm?P$kMdAvvTC5S*h-<|LalP0o_J~J{CyHl^=ZNQt z7l;>&SBm?@YsKru8^xQ&yTr%E=f$_gkHk;KFT}6Jzl;Bpgh>WUA|z1~NP?H7O7bKj zvZPWXmnbDeC0dD2QYWdGG)kHz!zCjnV6*XeSKt4h~Qa(yPR^B0>E}tdul+Twh zlrNTVmmiQHmLHR!kYAVIlK(2dBfl?yB!4S^uZU1YDWVk^1x^vGNLOSkauoTBLd9SO zL%~+?6vB`~qNr31RcIADgD0T+yporP!)Cs5qmz zsrXfKPw`OkMDbklQt?LdM^$7MRE4g>R>fAuR}rg{tJ116stT(pRjMj$)#$2ORbN*f ztU6tFMhPmh$^>PGvRFx0(v(akM=4fTDnoLmQmIysS9UA6D-S47DbFZ>R9;a2th}PU zrhKIQP5D~+R{36qPywn4Rg?-+kyIAd3{{t^TeV)bQ*}UfSanQwQgu#sUUf-zS#?!) zS9M?YRP|nsPy^}+b(9*bj#bC2iRvVEmO58WRtwZpwL+~@4^!*aMztxVwy2xcPIW*% zRy|?Z<6+N+z10lVK$;j$nx;rIL{p|AYiJs#hNF>dl$xO$twyJ*)6{EBnlCkLH0L#+ zv=LggHbI-H&D0iXhiKK>VcL4FRcqI_X`R~P+Ns(Z+F9C8?R@P*?Go)WZI5=Pwoki8 zyG^@8yGy%A8#<{yr9G`ZS3RVfRn4j9RST=C<;nk>W{59X!+|h;WGIT7RUT4v@=xjQNZiH@{Zl-RI zZk}#|Zn3Ug*P~mh>(i~(?bjXB9o3!Cozk7r{TR|+&|T79)?L%x(EU*h*2dRLYW1~~ zYvG*Wt~*!vQ{5v2!9X<_ z3=YE>!xY0b!%V{*!#qQmVU1y%VYgwQ;h^D|;iTaQ!x_Uh!)?Q_h8KochTjeE3?B`j zjGz%RMjO$_Y-5>`Y@`{PMvjqZtO^;`Mvbw?s5csnHse@hhjF}dqH&6GnsKIaj&YuG zfpM{MlX0tYn{lUck8!{8knyPTgz=Q|jPYE3Sbc82roO#?e*MwIPkdyaNiG~yZ)8%d4KMrEU^(c0*49Nrje9M?FZadP9*#?_4*8n-m= zZv46NM&k!F#!N70oAW~EQZviUH!IB5=32AC+-z<&+ss~bz&zGG+q}TM-n`v>#C+O( z&V1f{$$Z)TtNEV!f%&odnfZk!%#v@RSyUFI#bmKqS}Zn;!!pA1g=M5=v}KNEnPr7# zmE~*8I?D#jF3WDq9?L$`9Xh~{GZAot_ZV|R9T2w8= zTC^?pmN6|;Te?FnyIS_P9B4V*a;)WK%O`7u6=lU*W3BO4f;HP(Vx?H=R+g1(Ra$k{ z;nvaCMbsCbTfY$IrwlW*pMzb+(9NSQv#ulov>1{?^gUxJfwpndxpnO$M8w%6Ee?Pj~h-fVZ;U3QOsq z2hG8Da21T;c$#_jB$h<;~bM5Upb~bW;!-I&bB4B<+U-}IBonkQCmfu ztgWg|-KJ@)X|uPrx4GMVZNauL+D5niPaE9!W!uEI*==jvcC?*syVCYsdu)4dJEL9R z-q=2>eO~*5_C@VW+n2ZRY!4l3KiPh<{hf25Gr}3=jCNw2S(ZImJ26xyae;+~nNi{LZ=EdBAzedDZ#S1-ei!j4Q^4ccr+}U74gSdhUAZdgJ=T^}+S0JIh__Cb_9@hMVo?hTJ0ePFbJc~U$Jx4t^Jx@LFJs&-vJb!z`ynr{{8{>`hCU}Y7WN)fB!<*@4dnI0} zH>B_?y(X{4+v08Y+Pyw+$UD(H+544ux_7R(%e&CK#M|vX=)LN_>wVyT?0xEe@BQHY z=>6nN@D=%n_{w}_AI-<~iF_44nNQ)<`;0!5&*Jm=M*1fDCi|xPru!EAF8XfxZu{=~ z?)yIZL4T}2-cR%=`_ue+{=$&I*k9@=`6+&`U+1^@+x;W`47`rqNd^rX5zy|^=X>`bUofShV0zxH+BxAS z*Z=O=K~MkR-7UL_U}5;u@Vf95;b+6IgkKH69)2_YkMP#;N8#N72p9nqzyK@|2@D2A zKmyW$2|y;04deimfa$g5Z-Q@u)4;dEGH@=q6#Q2Z{2crOTnVlQYrs125O@Tv2akabU=!F3 zUIA}_KZCcx-@p#2FZ42mLJSlM4Tgq7(NHWD2gO4Iq(Kv)iO>vaCNvAmhvq#3D0Bik37v+{K@CtNbP2iv-GLrMUC>`p@NYveLmxvwL#P2a z*bK1-pCQ*!YA7?zHOw=7WT-T3HPjdm7;YHu8txlf4G#?+a0na*4}b^4gJ1y0;TYHn zyWj*k36@|l?1MEp9WI5-;a%`P_!|5R5`q{I6fq(MVnIkG5*db!K%$XYghxDxf~Y|x zfTSU#kuk_vhAc!@AZw9IWCQXQvK`rpR3p2QJxC++I~s-} zXe2rq9f}S|N1`#P6Lp~pXcC%=>gXsm9UY6lhE6~;(QGsaorIR4AEWEhz34IYD%yq( zz(~x6aTt$@SkRA+$8xaA*i38|mX8%2wR4Ij;+A00@$x35IYG5kwR* zgcwGo5N?7eB*IIm#H)l(j3TBI9}&xl?ZkDW&D`INnn^QlX3P$Agn6Vn#vEr(FejT| zF&COQm=Brnm>-)v&0Xeh^K@Hdvdi&DJZ{ ztJWSel!Qr~BuEQsBkd$hMv~E_o7BlsWI8#Pe2ttyW|G-t4w*;JCJV^-$q&e4vV@#N z2FY@A9l4*pM7B}E{!~0Qk@}EYNG+lkQ%k5-)M{!CwT{|B?WA^5HPk`s5OtV3N}Z+7 zQRk@(R10;Lx=#H@wNo9`BkBqDoO(g`ru)(eP0}>Y&<;A1j;7tThgN8n_S2*3G4wck zJe@&LqNmcI(A()F^eOsB`Ye5(zDEBiNZ+F$&~0=({fK^I>t*X>3$caS2G|DL2H60c z%Qo6pWLs}LYP)S~WqLDxnGhz78Ndu=1~DK5GZ3WRC?6dsPRslbA&V68S8X83!N3t`ObyTkDd3NPo2-4 z-Oir4ytvZ1vbec%6>;6JFxLRrKv%fyn5)6n=(^-;j{hWnb^O}+%J_{5cN01jx)T0M zc%C>padu)s;`@n3iMJCw5+5i2nb?&yIw_cwG%4wgq$$bElGi71Ox~1SmGU6vSxR@x z^OP5E**(gg;m&qXbid)A;-2N6?S9W)=q`4bxW9BCai4WRaX;t6I0Hv3Rc$Oc*$MA7{JfFxX^D-acGx<09xA^J&3_g!9 z;!F54el9MJOD>Mifg(l&$&?5XQv8^tEES^Qc2kN8OZM+%c( zk_Jhj1WOi)k{HP$MM{IESm_nXE2T?WQjU}>O_rug`BH&YC>2R1(i~}lv|L&*?UMFM z`=x`@5$QYWN9mk&LAogYBwdz%ky@oLIoMAgB!e<6W3owRWLA!nhseX_k#eH!mDA*G zd8#~Jen*}u=gG6>Qn^enmn-B2@?v?3yh8p;-X(u4ACiyC$K>zjQ*x8sEMJkYdEW9A zcnUqmo>EWHQ|_tsZ1wE$RC{)N>OC!zz2Uv*ZS}T$ zAA38!T}nSCROzn_R0JiUj8euZuPGChOr=n%P!=eQl~0t_cZrBmrrx|JSZFJE6@h%d|s`7Az{FV&apEA)Np+vcnFwfj1K&(%;B zR)d6URcY0(4pE1z(W+B*sngU7b)8zJ?on&iI`x2hSglu&sSRqg+M-@pe^&3Pchv{# zL$yOQX+Et$E7dBrRa%u+t$nTS)&8v=*6Ow6+DYxS)~H?5TC_V_tJbbP);hK4+6#Xl ze~3TK5Bgz$l;7olCFtkKvxE$}q(j~=GKq{BL)Q@Wz7`WQW1 zpQz{RZ|XDja=k*IuP@S<=%4D#^cDI_eT|+{sc+D$_1*d&y*AB|My1)(>}e4h9T`0t uFEV>)_RIVtb5rJ)%&nO_vdmdgSwpghWsS_boOL&=E$hkhm!?s@JO2x2lAF8$ delta 2757 zcmZvTd0Z5Q0)RykQ*r0mnc3Od-I>{A5EM~a78YdZ+?}1>*unB-*SrYDG&Bz|jFvCowUpYGvm?qVN_lW5wPPvy$xnlH%z^dusoptXcMCXKK~j=ra+($e|N*3Z%(- z)2B|JG%06lRlY{=_|M`S_tpPfHc1X5T%=j1snML$T+m$C+|b<8+|m4@Y1TXiA^;sg z0yGc@!~+RHKR^L|z))ZmFb2p5a)9x`6ksYa9moe}0);>cumD&N>;!6nTHpk53OEg% z1?qvTz)!$6pb5AMyaJ6N2Mz~wz+CVh@Lg~+_#Rja&IOl&{|bX&fGfdO;2N+RtO1XJ z$G}?f1Xu?)fQ{gF@HY4}co+N)Y=gQ%TF3~+K?zVlC=p75QlSBm3-Uq(p;6E{Xc{yf zngJC+bD+7Fa^iLsjv#?!Xc~Qh{tlzD9N+yO1hm z53(1jM}9{&r~yqt`=N4MeG46hjzP209CSQ78~qgB zfbK(2pf}JK48#~L9rIu^reNVWu#s2}HW8bS&A?QU}hv_`Jw{>N@FLj%ATXdDW9lBk*D&2A2 z1znx4Ue};&)Lqv#>ss&#JQ9z>yW-vP9yoy;a3fCQjxa9b9^8xj@eEwWL-cme)C{sI0WUX0Jf7voFtW%%d#a(n~61+T=n<5l<`d@sHaKaJPnxA438Z}{){ zL;Nw`g171;^*!{2p31OmrnM zf+2bmaYS#T57C$CPuK~Oa1%1&BQl6g;!R=*F^tF~J|UJ9JBV9Eivchg4UD0uAkT$#&Y9)<3i(N z;}YXn#?{8PVdHw^M&oAVR^w$;q{(i|HZ3u&Hmx&Nm^PUAL9#8A%dy(;E0+~X($sy!0GK&n6Z;_+OF=RHGL*|n+ z$wKl2@GwCTVx_P)cY~El#ZoX%3w!CKPW{I|FET9FpAQqj4u$U~g#bW7g>0@zQ z0+vk6B+Cp-fn}{_i>1_~g8-C<9$r`pr) zMfP(0eEUNCr}l^Tm-bgl5lN9r`AH>7rAc#>${i67jRSPR4%BhNQRk?4Ty-=iFHK&P zye_#Sc~i=Rlou)O&JNB_&WX;M&O+x0&am^Iv(5R;`Ioajb$DtxCv|-4gw#oC%hNWb zZA#mmRypADfLG}e>7CM}Tz=Ou*JxL^Yn*F>Ym#e*Yo=?KtH@RCn(g|^bHp;{?vn z4d%vh?{M#OQ@CkdJ{RU@bEVu|ZXWjuw~SlGZRM)Dz1)7ThC9Tahz`4YaA zU&ycIH}Tbc4S$F~%GdHI`3rm2YJ@|=QK44&QMe$~3H3sQ z&?x*Y{3$#YJBu0-5)n}+5~5X%5#z+(VuILDOcfNIHp-OcE`{N%2x& zslSvYB}<%?Aq|zXr95ehG*y}|#r((n;x|5K7pr*p!}1FQvbdq@*ZmO1d&xDOc7jmC9aazfz+dQjRLM$_b@T zX;hk&TguPMedU4jSb3tf`DmZ&EA*B4%6+SSmA)$9H@W}to{5n73@9R(ZOJTq4_xUsYgZxANS^g3Jk^b@iJb!^d zoN*`PZpOom_CV)AbU+`73B(2B1APOD0Y|_Y@C1~AKM)8E47?c_92gpy6<8BE6=(^( zR6DC06;cV+tj4GTHB$|$+3GkoSA9pFrk1JY>U?#Px zd)57!`plTj*vwv;eX`nuk-@0oYr*cpmBG!yt-)=WFB9!d^f3q1(6gr0Z! RFC9Dn)2J^0^nVV$_!}T@m!ALt From 7062cdcf7c0dd0ce23051639914cf7534a586916 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 26 Jul 2016 11:20:34 +0800 Subject: [PATCH 049/178] modify bug https://github.com/LaiFengiOS/LFLiveKit/issues/11#issuecomment-235147191 --- LFLiveKit/LFLiveSession.m | 1 + 1 file changed, 1 insertion(+) diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 7befe001..048e52d8 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -90,6 +90,7 @@ - (void)startLive:(LFLiveStreamInfo *)streamInfo { - (void)stopLive { self.uploading = NO; [self.socket stop]; + self.socket = nil; } #pragma mark -- CaptureDelegate From d3d5f6cb2412afe7fdce8269dc93adc3d9f3d882 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 26 Jul 2016 18:15:23 +0800 Subject: [PATCH 050/178] fix mirror bug: present view is different with the stream --- LFLiveKit/capture/LFVideoCapture.m | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 68970a9c..3c727996 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -62,7 +62,7 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura _gpuImageView = [[GPUImageView alloc] initWithFrame:[UIScreen mainScreen].bounds]; [_gpuImageView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill]; [_gpuImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; - [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; + [_gpuImageView setInputRotation:kGPUImageNoRotation atIndex:0]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; @@ -107,11 +107,6 @@ - (UIView *)preView { - (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition { [_videoCamera rotateCamera]; _videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; - if (captureDevicePosition == AVCaptureDevicePositionFront) { - [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; - } else { - [_gpuImageView setInputRotation:kGPUImageNoRotation atIndex:0]; - } } - (AVCaptureDevicePosition)captureDevicePosition { @@ -245,12 +240,6 @@ - (void)setBeautyFace:(BOOL)beautyFace { } else { [_filter addTarget:_gpuImageView]; } - - if (_videoCamera.cameraPosition == AVCaptureDevicePositionFront) { - [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; - } else { - [_gpuImageView setInputRotation:kGPUImageNoRotation atIndex:0]; - } } #pragma mark -- Custom Method From e47f3154a800a0fcd9c52fbcbc15c8128dae8391 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 26 Jul 2016 18:27:16 +0800 Subject: [PATCH 051/178] modify black screen bug --- LFLiveKit.podspec | 1 - LFLiveKit/capture/LFVideoCapture.m | 1 - 2 files changed, 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 08a38377..f8fa0105 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -19,6 +19,5 @@ Pod::Spec.new do |s| s.requires_arc = true s.dependency 'LMGPUImage', '~> 0.1.9' - s.dependency "YYDispatchQueuePool" s.dependency "pili-librtmp", '1.0.3' end diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 68970a9c..9bd28934 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -203,7 +203,6 @@ - (CGFloat)zoomScale { } - (void)setBeautyFace:(BOOL)beautyFace { - if (_beautyFace == beautyFace) return; _beautyFace = beautyFace; [_filter removeAllTargets]; From edcb2efaa06e612682c9259582095586dd5d71c9 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Wed, 27 Jul 2016 10:06:17 +0800 Subject: [PATCH 052/178] never mirrored rear facing camera --- LFLiveKit/capture/LFVideoCapture.m | 1 - 1 file changed, 1 deletion(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 3c727996..2dfafb93 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -153,7 +153,6 @@ - (BOOL)torch { - (void)setMirror:(BOOL)mirror { _videoCamera.horizontallyMirrorFrontFacingCamera = mirror; - _videoCamera.horizontallyMirrorRearFacingCamera = mirror; } - (BOOL)mirror { From 8708e04c0d479b7cc13c91a1063f39a2b60bb195 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 29 Jul 2016 17:08:45 +0800 Subject: [PATCH 053/178] modify cropSize --- LFLiveKit/capture/LFVideoCapture.m | 61 ++++++++++++++----- .../configuration/LFLiveVideoConfiguration.h | 3 - .../configuration/LFLiveVideoConfiguration.m | 7 --- .../LFLiveKitDemo.xcodeproj/project.pbxproj | 34 +++++++---- LFLiveKitDemo/Podfile | 3 +- Podfile | 2 +- 6 files changed, 71 insertions(+), 39 deletions(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 9bd28934..95ca4e52 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -33,22 +33,23 @@ @implementation LFVideoCapture - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configuration { if (self = [super init]) { _configuration = configuration; + if([self pixelBufferImageSize].width < configuration.videoSize.width || [self pixelBufferImageSize].height < configuration.videoSize.height){ + @throw [NSException exceptionWithName:@"当前videoSize大小出错" reason:@"LFLiveVideoConfiguration videoSize error" userInfo:nil]; + return nil; + } + _videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:_configuration.avSessionPreset cameraPosition:AVCaptureDevicePositionFront]; UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; if (configuration.landscape) { if (statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight) { - NSLog(@"当前设置方向出错"); - NSLog(@"当前设置方向出错"); - NSLog(@"当前设置方向出错"); + @throw [NSException exceptionWithName:@"当前设置方向出错" reason:@"LFLiveVideoConfiguration landscape error" userInfo:nil]; _videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; } else { _videoCamera.outputImageOrientation = statusBar; } } else { if (statusBar != UIInterfaceOrientationPortrait && statusBar != UIInterfaceOrientationPortraitUpsideDown) { - NSLog(@"当前设置方向出错"); - NSLog(@"当前设置方向出错"); - NSLog(@"当前设置方向出错"); + @throw [NSException exceptionWithName:@"当前设置方向出错" reason:@"LFLiveVideoConfiguration landscape error" userInfo:nil]; _videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; } else { _videoCamera.outputImageOrientation = statusBar; @@ -226,18 +227,18 @@ - (void)setBeautyFace:(BOOL)beautyFace { }]; } - if (_configuration.isClipVideo) { - if (_configuration.landscape) { - _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0.125, 0, 0.75, 1)]; - } else { - _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0, 0.125, 1, 0.75)]; - } + CGSize imageSize = [self pixelBufferImageSize]; + CGFloat cropLeft = (imageSize.width - self.configuration.videoSize.width)/2.0/imageSize.width; + CGFloat cropTop = (imageSize.height - self.configuration.videoSize.height)/2.0/imageSize.height; + + if(cropLeft == 0 && cropTop == 0){ + [_videoCamera addTarget:_filter]; + }else{ + _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(cropLeft, cropTop, 1 - cropLeft*2, 1 - cropTop*2)]; [_videoCamera addTarget:_cropfilter]; [_cropfilter addTarget:_filter]; - } else { - [_videoCamera addTarget:_filter]; } - + if (_beautyFace) { [_filter addTarget:_output]; [_output addTarget:_gpuImageView]; @@ -299,4 +300,34 @@ - (void)statusBarChanged:(NSNotification *)notification { } } +#pragma mark -- +- (CGSize)pixelBufferImageSize{ + CGSize videoSize = CGSizeZero; + switch (self.configuration.sessionPreset) { + case LFCaptureSessionPreset360x640: + { + videoSize = CGSizeMake(480, 640); + } + break; + case LFCaptureSessionPreset540x960: + { + videoSize = CGSizeMake(540, 960); + } + break; + case LFCaptureSessionPreset720x1280: + { + videoSize = CGSizeMake(720, 1280); + } + break; + + default: + break; + } + + if(self.configuration.landscape){ + return CGSizeMake(videoSize.height, videoSize.width); + } + return videoSize; +} + @end diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/configuration/LFLiveVideoConfiguration.h index b7d0e260..991e4ac6 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.h +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.h @@ -90,7 +90,4 @@ typedef NS_ENUM (NSUInteger, LFLiveVideoQuality){ ///< ≈sde3分辨率 @property (nonatomic, assign, readonly) NSString *avSessionPreset; -///< 是否裁剪 -@property (nonatomic, assign, readonly) BOOL isClipVideo; - @end diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index c5406963..8e1db306 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -213,10 +213,6 @@ - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessi return sessionPreset; } -- (BOOL)isClipVideo { - return self.sessionPreset == LFCaptureSessionPreset360x640 ? YES : NO; -} - #pragma mark -- encoder - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:[NSValue valueWithCGSize:self.videoSize] forKey:@"videoSize"]; @@ -248,7 +244,6 @@ - (NSUInteger)hash { @(self.videoBitRate), @(self.videoMaxBitRate), @(self.videoMinBitRate), - @(self.isClipVideo), self.avSessionPreset, @(self.sessionPreset), @(self.landscape), ]; @@ -274,7 +269,6 @@ - (BOOL)isEqual:(id)other { object.videoBitRate == self.videoBitRate && object.videoMaxBitRate == self.videoMaxBitRate && object.videoMinBitRate == self.videoMinBitRate && - object.isClipVideo == self.isClipVideo && [object.avSessionPreset isEqualToString:self.avSessionPreset] && object.sessionPreset == self.sessionPreset && object.landscape == self.landscape; @@ -297,7 +291,6 @@ - (NSString *)description { [desc appendFormat:@" videoBitRate:%zi", self.videoBitRate]; [desc appendFormat:@" videoMaxBitRate:%zi", self.videoMaxBitRate]; [desc appendFormat:@" videoMinBitRate:%zi", self.videoMinBitRate]; - [desc appendFormat:@" isClipVideo:%zi", self.isClipVideo]; [desc appendFormat:@" avSessionPreset:%@", self.avSessionPreset]; [desc appendFormat:@" sessionPreset:%zi", self.sessionPreset]; [desc appendFormat:@" landscape:%zi", self.landscape]; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index fff24717..f89b37ec 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 7ACB1193D70CF46C9676CB29 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C04F65629D3881D5F25ADE1 /* libPods.a */; }; 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */; }; B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E7E1D348F3D00B34CA8 /* main.m */; }; B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E811D348F3D00B34CA8 /* AppDelegate.m */; }; @@ -31,7 +30,6 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 5C04F65629D3881D5F25ADE1 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.release.xcconfig"; sourceTree = ""; }; AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.debug.xcconfig"; sourceTree = ""; }; @@ -69,7 +67,6 @@ buildActionMask = 2147483647; files = ( 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */, - 7ACB1193D70CF46C9676CB29 /* libPods.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -171,7 +168,6 @@ isa = PBXGroup; children = ( 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */, - 5C04F65629D3881D5F25ADE1 /* libPods.a */, ); name = Frameworks; sourceTree = ""; @@ -183,11 +179,12 @@ isa = PBXNativeTarget; buildConfigurationList = B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; buildPhases = ( - 6A9D2ED37E623D4A31A8D2C9 /* Check Pods Manifest.lock */, + 6A9D2ED37E623D4A31A8D2C9 /* 📦 Check Pods Manifest.lock */, B2D23E761D348F3D00B34CA8 /* Sources */, B2D23E771D348F3D00B34CA8 /* Frameworks */, B2D23E781D348F3D00B34CA8 /* Resources */, - 34EEB2C8F5E0D371D13B66CA /* Copy Pods Resources */, + 34EEB2C8F5E0D371D13B66CA /* 📦 Copy Pods Resources */, + 7336E9C92EDCA6C7449F2624 /* 📦 Embed Pods Frameworks */, ); buildRules = ( ); @@ -254,29 +251,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 34EEB2C8F5E0D371D13B66CA /* Copy Pods Resources */ = { + 34EEB2C8F5E0D371D13B66CA /* 📦 Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Copy Pods Resources"; + name = "📦 Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 6A9D2ED37E623D4A31A8D2C9 /* Check Pods Manifest.lock */ = { + 6A9D2ED37E623D4A31A8D2C9 /* 📦 Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Check Pods Manifest.lock"; + name = "📦 Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -284,6 +281,21 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; + 7336E9C92EDCA6C7449F2624 /* 📦 Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile index d1c9b6da..4ee1693d 100755 --- a/LFLiveKitDemo/Podfile +++ b/LFLiveKitDemo/Podfile @@ -2,7 +2,6 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'7.0' target 'LFLiveKitDemo' do - +pod 'LFLiveKit', path: '../' end -pod 'LFLiveKit', path: '../' \ No newline at end of file diff --git a/Podfile b/Podfile index e315c172..74ae2606 100755 --- a/Podfile +++ b/Podfile @@ -5,6 +5,6 @@ target 'LFLiveKit' do end -pod 'pili-librtmp', '~> 1.0.3' +pod 'pili-librtmp', '~> 1.0.3.1' pod 'LMGPUImage', '~> 0.1.9' From 4c385f6e8915a3f85883e83f113e674c66922f22 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 29 Jul 2016 17:38:16 +0800 Subject: [PATCH 054/178] compile question --- LFLiveKit.xcodeproj/project.pbxproj | 44 ++---------------- .../UserInterfaceState.xcuserstate | Bin 11636 -> 10998 bytes .../UserInterfaceState.xcuserstate | Bin 11314 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 95250 -> 95062 bytes Podfile | 6 +-- 5 files changed, 7 insertions(+), 43 deletions(-) delete mode 100644 LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 8b276b3c..29f593d8 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -65,7 +65,6 @@ B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146A1D45F18B008082E8 /* VideoEncoder.m */; }; B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */; }; B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */; }; - BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B5758EB2A15DAA132D8BF380 /* libPods.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -140,7 +139,6 @@ B2CD146A1D45F18B008082E8 /* VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoEncoder.m; sourceTree = ""; }; B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; - B5758EB2A15DAA132D8BF380 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -157,7 +155,6 @@ 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, - BE55DA79155500CDEF87FB5C /* libPods.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -182,7 +179,6 @@ 84001FF81D00175D0026C63F /* Foundation.framework */, 84001FF61D0017590026C63F /* AVFoundation.framework */, B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, - B5758EB2A15DAA132D8BF380 /* libPods.a */, ); name = Frameworks; sourceTree = ""; @@ -382,14 +378,12 @@ isa = PBXNativeTarget; buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; buildPhases = ( - 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */, - 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */, + 5ED199EAC89EE599F1E56B19 /* 📦 Check Pods Manifest.lock */, 84001F851D0015D10026C63F /* Sources */, 84001F861D0015D10026C63F /* Frameworks */, 84001F871D0015D10026C63F /* Headers */, 84001F881D0015D10026C63F /* Resources */, - 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */, - 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */, + 36D0848EAED7999C442A99BD /* 📦 Copy Pods Resources */, ); buildRules = ( ); @@ -471,7 +465,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 817C22141AD3F2EB34365AA3 /* 📦 Copy Pods Resources */ = { + 36D0848EAED7999C442A99BD /* 📦 Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -486,22 +480,7 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 8A5D8B623E50AAC1575D1741 /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8EE9401DCA9508E918B7FB68 /* 📦 Check Pods Manifest.lock */ = { + 5ED199EAC89EE599F1E56B19 /* 📦 Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -516,21 +495,6 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - 98F2C3F394BD79A6D6B8424F /* Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 90ff3d38a89d4a08bcb25f998fe19e608e3df890..d66153a351e54cd1bb6ba0a25615c42c75b13342 100644 GIT binary patch literal 10998 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 lBOLjTLPxPZBZ4`Zdp6`PPlFV}E%$ak3XPK#P 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 diff --git a/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index d766fe626fc62e9f9e4949f9068f9e64146a27a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11314 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 diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 59e059bccb6cb2981fd990ea9bd6f32d29f12f3c..ed553b16cf088ab26b69e4031e98d5c6428917c7 100644 GIT binary patch literal 95062 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 bo4yufR`!$*7( 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 literal 95250 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 Ag8%>k diff --git a/Podfile b/Podfile index 74ae2606..fd799652 100755 --- a/Podfile +++ b/Podfile @@ -2,9 +2,9 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'7.0' target 'LFLiveKit' do - + pod 'pili-librtmp', '~> 1.0.3.1' + pod 'LMGPUImage', '~> 0.1.9' end -pod 'pili-librtmp', '~> 1.0.3.1' -pod 'LMGPUImage', '~> 0.1.9' + From 28d20814f69f7424f9ecef8a1befeb5324ac7f71 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 29 Jul 2016 17:43:33 +0800 Subject: [PATCH 055/178] update version --- LFLiveKit.podspec | 3 +- LFLiveKit.xcodeproj/project.pbxproj | 81 + .../UserInterfaceState.xcuserstate | Bin 10998 -> 13633 bytes LFLiveKit/Info.plist | 2 +- LFLiveKit/publish/pili-librtmp/amf.c | 1037 ++++ LFLiveKit/publish/pili-librtmp/amf.h | 180 + LFLiveKit/publish/pili-librtmp/bytes.h | 91 + LFLiveKit/publish/pili-librtmp/dh.h | 345 ++ LFLiveKit/publish/pili-librtmp/dhgroups.h | 198 + LFLiveKit/publish/pili-librtmp/error.c | 26 + LFLiveKit/publish/pili-librtmp/error.h | 46 + LFLiveKit/publish/pili-librtmp/handshake.h | 1034 ++++ LFLiveKit/publish/pili-librtmp/hashswf.c | 626 +++ LFLiveKit/publish/pili-librtmp/http.h | 49 + LFLiveKit/publish/pili-librtmp/log.c | 209 + LFLiveKit/publish/pili-librtmp/log.h | 68 + LFLiveKit/publish/pili-librtmp/parseurl.c | 312 ++ LFLiveKit/publish/pili-librtmp/rtmp.c | 4331 +++++++++++++++++ LFLiveKit/publish/pili-librtmp/rtmp.h | 365 ++ LFLiveKit/publish/pili-librtmp/rtmp_sys.h | 123 + Podfile | 1 - 21 files changed, 9123 insertions(+), 4 deletions(-) create mode 100755 LFLiveKit/publish/pili-librtmp/amf.c create mode 100755 LFLiveKit/publish/pili-librtmp/amf.h create mode 100755 LFLiveKit/publish/pili-librtmp/bytes.h create mode 100755 LFLiveKit/publish/pili-librtmp/dh.h create mode 100755 LFLiveKit/publish/pili-librtmp/dhgroups.h create mode 100755 LFLiveKit/publish/pili-librtmp/error.c create mode 100755 LFLiveKit/publish/pili-librtmp/error.h create mode 100755 LFLiveKit/publish/pili-librtmp/handshake.h create mode 100755 LFLiveKit/publish/pili-librtmp/hashswf.c create mode 100755 LFLiveKit/publish/pili-librtmp/http.h create mode 100755 LFLiveKit/publish/pili-librtmp/log.c create mode 100755 LFLiveKit/publish/pili-librtmp/log.h create mode 100755 LFLiveKit/publish/pili-librtmp/parseurl.c create mode 100755 LFLiveKit/publish/pili-librtmp/rtmp.c create mode 100755 LFLiveKit/publish/pili-librtmp/rtmp.h create mode 100755 LFLiveKit/publish/pili-librtmp/rtmp_sys.h diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index f8fa0105..1415f6fe 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.9.0" + s.version = "1.9.2" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -19,5 +19,4 @@ Pod::Spec.new do |s| s.requires_arc = true s.dependency 'LMGPUImage', '~> 0.1.9' - s.dependency "pili-librtmp", '1.0.3' end diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 29f593d8..1260774b 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -46,6 +46,22 @@ 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; + 849005B01D4B5C8400D2A3D5 /* amf.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005A01D4B5C8400D2A3D5 /* amf.c */; }; + 849005B11D4B5C8400D2A3D5 /* amf.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A11D4B5C8400D2A3D5 /* amf.h */; }; + 849005B21D4B5C8400D2A3D5 /* bytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A21D4B5C8400D2A3D5 /* bytes.h */; }; + 849005B31D4B5C8400D2A3D5 /* dh.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A31D4B5C8400D2A3D5 /* dh.h */; }; + 849005B41D4B5C8400D2A3D5 /* dhgroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A41D4B5C8400D2A3D5 /* dhgroups.h */; }; + 849005B51D4B5C8400D2A3D5 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005A51D4B5C8400D2A3D5 /* error.c */; }; + 849005B61D4B5C8400D2A3D5 /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A61D4B5C8400D2A3D5 /* error.h */; }; + 849005B71D4B5C8400D2A3D5 /* handshake.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A71D4B5C8400D2A3D5 /* handshake.h */; }; + 849005B81D4B5C8400D2A3D5 /* hashswf.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005A81D4B5C8400D2A3D5 /* hashswf.c */; }; + 849005B91D4B5C8400D2A3D5 /* http.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A91D4B5C8400D2A3D5 /* http.h */; }; + 849005BA1D4B5C8400D2A3D5 /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005AA1D4B5C8400D2A3D5 /* log.c */; }; + 849005BB1D4B5C8400D2A3D5 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005AB1D4B5C8400D2A3D5 /* log.h */; }; + 849005BC1D4B5C8400D2A3D5 /* parseurl.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005AC1D4B5C8400D2A3D5 /* parseurl.c */; }; + 849005BD1D4B5C8400D2A3D5 /* rtmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005AD1D4B5C8400D2A3D5 /* rtmp.c */; }; + 849005BE1D4B5C8400D2A3D5 /* rtmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005AE1D4B5C8400D2A3D5 /* rtmp.h */; }; + 849005BF1D4B5C8400D2A3D5 /* rtmp_sys.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005AF1D4B5C8400D2A3D5 /* rtmp_sys.h */; }; AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; @@ -120,6 +136,22 @@ 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 849005A01D4B5C8400D2A3D5 /* amf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amf.c; sourceTree = ""; }; + 849005A11D4B5C8400D2A3D5 /* amf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amf.h; sourceTree = ""; }; + 849005A21D4B5C8400D2A3D5 /* bytes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bytes.h; sourceTree = ""; }; + 849005A31D4B5C8400D2A3D5 /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = ""; }; + 849005A41D4B5C8400D2A3D5 /* dhgroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dhgroups.h; sourceTree = ""; }; + 849005A51D4B5C8400D2A3D5 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + 849005A61D4B5C8400D2A3D5 /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + 849005A71D4B5C8400D2A3D5 /* handshake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = handshake.h; sourceTree = ""; }; + 849005A81D4B5C8400D2A3D5 /* hashswf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashswf.c; sourceTree = ""; }; + 849005A91D4B5C8400D2A3D5 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = ""; }; + 849005AA1D4B5C8400D2A3D5 /* log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = ""; }; + 849005AB1D4B5C8400D2A3D5 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + 849005AC1D4B5C8400D2A3D5 /* parseurl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parseurl.c; sourceTree = ""; }; + 849005AD1D4B5C8400D2A3D5 /* rtmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtmp.c; sourceTree = ""; }; + 849005AE1D4B5C8400D2A3D5 /* rtmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp.h; sourceTree = ""; }; + 849005AF1D4B5C8400D2A3D5 /* rtmp_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp_sys.h; sourceTree = ""; }; A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; @@ -298,6 +330,7 @@ 84001FC91D0016380026C63F /* publish */ = { isa = PBXGroup; children = ( + 8490059F1D4B5C8400D2A3D5 /* pili-librtmp */, B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, @@ -310,6 +343,30 @@ path = upload; sourceTree = ""; }; + 8490059F1D4B5C8400D2A3D5 /* pili-librtmp */ = { + isa = PBXGroup; + children = ( + 849005A01D4B5C8400D2A3D5 /* amf.c */, + 849005A11D4B5C8400D2A3D5 /* amf.h */, + 849005A21D4B5C8400D2A3D5 /* bytes.h */, + 849005A31D4B5C8400D2A3D5 /* dh.h */, + 849005A41D4B5C8400D2A3D5 /* dhgroups.h */, + 849005A51D4B5C8400D2A3D5 /* error.c */, + 849005A61D4B5C8400D2A3D5 /* error.h */, + 849005A71D4B5C8400D2A3D5 /* handshake.h */, + 849005A81D4B5C8400D2A3D5 /* hashswf.c */, + 849005A91D4B5C8400D2A3D5 /* http.h */, + 849005AA1D4B5C8400D2A3D5 /* log.c */, + 849005AB1D4B5C8400D2A3D5 /* log.h */, + 849005AC1D4B5C8400D2A3D5 /* parseurl.c */, + 849005AD1D4B5C8400D2A3D5 /* rtmp.c */, + 849005AE1D4B5C8400D2A3D5 /* rtmp.h */, + 849005AF1D4B5C8400D2A3D5 /* rtmp_sys.h */, + ); + name = "pili-librtmp"; + path = "LFLiveKit/publish/pili-librtmp"; + sourceTree = SOURCE_ROOT; + }; B2CD14611D45F18B008082E8 /* H264 */ = { isa = PBXGroup; children = ( @@ -342,12 +399,16 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 849005B21D4B5C8400D2A3D5 /* bytes.h in Headers */, 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, + 849005B61D4B5C8400D2A3D5 /* error.h in Headers */, B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */, 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, + 849005B71D4B5C8400D2A3D5 /* handshake.h in Headers */, + 849005BB1D4B5C8400D2A3D5 /* log.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, 84001FE71D0016380026C63F /* LFFrame.h in Headers */, @@ -357,15 +418,21 @@ 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, + 849005B91D4B5C8400D2A3D5 /* http.h in Headers */, 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, + 849005B31D4B5C8400D2A3D5 /* dh.h in Headers */, 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, + 849005BF1D4B5C8400D2A3D5 /* rtmp_sys.h in Headers */, + 849005BE1D4B5C8400D2A3D5 /* rtmp.h in Headers */, B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */, B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + 849005B41D4B5C8400D2A3D5 /* dhgroups.h in Headers */, B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, + 849005B11D4B5C8400D2A3D5 /* amf.h in Headers */, B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */, 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, ); @@ -504,6 +571,7 @@ files = ( 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, + 849005B81D4B5C8400D2A3D5 /* hashswf.c in Sources */, B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */, 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, @@ -511,18 +579,23 @@ 84001FE81D0016380026C63F /* LFFrame.m in Sources */, B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */, B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, + 849005B51D4B5C8400D2A3D5 /* error.c in Sources */, B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */, + 849005BC1D4B5C8400D2A3D5 /* parseurl.c in Sources */, 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */, B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */, B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, + 849005BA1D4B5C8400D2A3D5 /* log.c in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, + 849005B01D4B5C8400D2A3D5 /* amf.c in Sources */, 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, + 849005BD1D4B5C8400D2A3D5 /* rtmp.c in Sources */, 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */, ); @@ -650,6 +723,10 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/LFLiveKit/publish/libpili-librtmp", + ); PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -669,6 +746,10 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/LFLiveKit/publish/libpili-librtmp", + ); PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index d66153a351e54cd1bb6ba0a25615c42c75b13342..b8b1809ad3b584a4c3ba316040f5c736785d2e1f 100644 GIT binary patch literal 13633 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%0DxXvmvHBitdhF0=+a@qBzM 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 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 6e2e047f..ce0bd8b0 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.9.0 + 1.9.2 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/publish/pili-librtmp/amf.c b/LFLiveKit/publish/pili-librtmp/amf.c new file mode 100755 index 00000000..18630ce2 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/amf.c @@ -0,0 +1,1037 @@ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include + +#include "amf.h" +#include "bytes.h" +#include "log.h" +#include "rtmp_sys.h" + +static const AMFObjectProperty AMFProp_Invalid = {{0, 0}, AMF_INVALID}; +static const AVal AV_empty = {0, 0}; + +/* Data is Big-Endian */ +unsigned short + AMF_DecodeInt16(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned short val; + val = (c[0] << 8) | c[1]; + return val; +} + +unsigned int + AMF_DecodeInt24(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned int val; + val = (c[0] << 16) | (c[1] << 8) | c[2]; + return val; +} + +unsigned int + AMF_DecodeInt32(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned int val; + val = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3]; + return val; +} + +void AMF_DecodeString(const char *data, AVal *bv) { + bv->av_len = AMF_DecodeInt16(data); + bv->av_val = (bv->av_len > 0) ? (char *)data + 2 : NULL; +} + +void AMF_DecodeLongString(const char *data, AVal *bv) { + bv->av_len = AMF_DecodeInt32(data); + bv->av_val = (bv->av_len > 0) ? (char *)data + 4 : NULL; +} + +double + AMF_DecodeNumber(const char *data) { + double dVal; +#if __FLOAT_WORD_ORDER == __BYTE_ORDER +#if __BYTE_ORDER == __BIG_ENDIAN + memcpy(&dVal, data, 8); +#elif __BYTE_ORDER == __LITTLE_ENDIAN + unsigned char *ci, *co; + ci = (unsigned char *)data; + co = (unsigned char *)&dVal; + co[0] = ci[7]; + co[1] = ci[6]; + co[2] = ci[5]; + co[3] = ci[4]; + co[4] = ci[3]; + co[5] = ci[2]; + co[6] = ci[1]; + co[7] = ci[0]; +#endif +#else +#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ + unsigned char *ci, *co; + ci = (unsigned char *)data; + co = (unsigned char *)&dVal; + co[0] = ci[3]; + co[1] = ci[2]; + co[2] = ci[1]; + co[3] = ci[0]; + co[4] = ci[7]; + co[5] = ci[6]; + co[6] = ci[5]; + co[7] = ci[4]; +#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ + unsigned char *ci, *co; + ci = (unsigned char *)data; + co = (unsigned char *)&dVal; + co[0] = ci[4]; + co[1] = ci[5]; + co[2] = ci[6]; + co[3] = ci[7]; + co[4] = ci[0]; + co[5] = ci[1]; + co[6] = ci[2]; + co[7] = ci[3]; +#endif +#endif + return dVal; +} + +int AMF_DecodeBoolean(const char *data) { + return *data != 0; +} + +char * + AMF_EncodeInt16(char *output, char *outend, short nVal) { + if (output + 2 > outend) + return NULL; + + output[1] = nVal & 0xff; + output[0] = nVal >> 8; + return output + 2; +} + +char * + AMF_EncodeInt24(char *output, char *outend, int nVal) { + if (output + 3 > outend) + return NULL; + + output[2] = nVal & 0xff; + output[1] = nVal >> 8; + output[0] = nVal >> 16; + return output + 3; +} + +char * + AMF_EncodeInt32(char *output, char *outend, int nVal) { + if (output + 4 > outend) + return NULL; + + output[3] = nVal & 0xff; + output[2] = nVal >> 8; + output[1] = nVal >> 16; + output[0] = nVal >> 24; + return output + 4; +} + +char * + AMF_EncodeString(char *output, char *outend, const AVal *bv) { + if ((bv->av_len < 65536 && output + 1 + 2 + bv->av_len > outend) || + output + 1 + 4 + bv->av_len > outend) + return NULL; + + if (bv->av_len < 65536) { + *output++ = AMF_STRING; + + output = AMF_EncodeInt16(output, outend, bv->av_len); + } else { + *output++ = AMF_LONG_STRING; + + output = AMF_EncodeInt32(output, outend, bv->av_len); + } + memcpy(output, bv->av_val, bv->av_len); + output += bv->av_len; + + return output; +} + +char * + AMF_EncodeNumber(char *output, char *outend, double dVal) { + if (output + 1 + 8 > outend) + return NULL; + + *output++ = AMF_NUMBER; /* type: Number */ + +#if __FLOAT_WORD_ORDER == __BYTE_ORDER +#if __BYTE_ORDER == __BIG_ENDIAN + memcpy(output, &dVal, 8); +#elif __BYTE_ORDER == __LITTLE_ENDIAN + { + unsigned char *ci, *co; + ci = (unsigned char *)&dVal; + co = (unsigned char *)output; + co[0] = ci[7]; + co[1] = ci[6]; + co[2] = ci[5]; + co[3] = ci[4]; + co[4] = ci[3]; + co[5] = ci[2]; + co[6] = ci[1]; + co[7] = ci[0]; + } +#endif +#else +#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ + { + unsigned char *ci, *co; + ci = (unsigned char *)&dVal; + co = (unsigned char *)output; + co[0] = ci[3]; + co[1] = ci[2]; + co[2] = ci[1]; + co[3] = ci[0]; + co[4] = ci[7]; + co[5] = ci[6]; + co[6] = ci[5]; + co[7] = ci[4]; + } +#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ + { + unsigned char *ci, *co; + ci = (unsigned char *)&dVal; + co = (unsigned char *)output; + co[0] = ci[4]; + co[1] = ci[5]; + co[2] = ci[6]; + co[3] = ci[7]; + co[4] = ci[0]; + co[5] = ci[1]; + co[6] = ci[2]; + co[7] = ci[3]; + } +#endif +#endif + + return output + 8; +} + +char * + AMF_EncodeBoolean(char *output, char *outend, int bVal) { + if (output + 2 > outend) + return NULL; + + *output++ = AMF_BOOLEAN; + + *output++ = bVal ? 0x01 : 0x00; + + return output; +} + +char * + AMF_EncodeNamedString(char *output, char *outend, const AVal *strName, const AVal *strValue) { + if (output + 2 + strName->av_len > outend) + return NULL; + output = AMF_EncodeInt16(output, outend, strName->av_len); + + memcpy(output, strName->av_val, strName->av_len); + output += strName->av_len; + + return AMF_EncodeString(output, outend, strValue); +} + +char * + AMF_EncodeNamedNumber(char *output, char *outend, const AVal *strName, double dVal) { + if (output + 2 + strName->av_len > outend) + return NULL; + output = AMF_EncodeInt16(output, outend, strName->av_len); + + memcpy(output, strName->av_val, strName->av_len); + output += strName->av_len; + + return AMF_EncodeNumber(output, outend, dVal); +} + +char * + AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *strName, int bVal) { + if (output + 2 + strName->av_len > outend) + return NULL; + output = AMF_EncodeInt16(output, outend, strName->av_len); + + memcpy(output, strName->av_val, strName->av_len); + output += strName->av_len; + + return AMF_EncodeBoolean(output, outend, bVal); +} + +void AMFProp_GetName(AMFObjectProperty *prop, AVal *name) { + *name = prop->p_name; +} + +void AMFProp_SetName(AMFObjectProperty *prop, AVal *name) { + prop->p_name = *name; +} + +AMFDataType + AMFProp_GetType(AMFObjectProperty *prop) { + return prop->p_type; +} + +double + AMFProp_GetNumber(AMFObjectProperty *prop) { + return prop->p_vu.p_number; +} + +int AMFProp_GetBoolean(AMFObjectProperty *prop) { + return prop->p_vu.p_number != 0; +} + +void AMFProp_GetString(AMFObjectProperty *prop, AVal *str) { + *str = prop->p_vu.p_aval; +} + +void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj) { + *obj = prop->p_vu.p_object; +} + +int AMFProp_IsValid(AMFObjectProperty *prop) { + return prop->p_type != AMF_INVALID; +} + +char * + AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd) { + if (prop->p_type == AMF_INVALID) + return NULL; + + if (prop->p_type != AMF_NULL && pBuffer + prop->p_name.av_len + 2 + 1 >= pBufEnd) + return NULL; + + if (prop->p_type != AMF_NULL && prop->p_name.av_len) { + *pBuffer++ = prop->p_name.av_len >> 8; + *pBuffer++ = prop->p_name.av_len & 0xff; + memcpy(pBuffer, prop->p_name.av_val, prop->p_name.av_len); + pBuffer += prop->p_name.av_len; + } + + switch (prop->p_type) { + case AMF_NUMBER: + pBuffer = AMF_EncodeNumber(pBuffer, pBufEnd, prop->p_vu.p_number); + break; + + case AMF_BOOLEAN: + pBuffer = AMF_EncodeBoolean(pBuffer, pBufEnd, prop->p_vu.p_number != 0); + break; + + case AMF_STRING: + pBuffer = AMF_EncodeString(pBuffer, pBufEnd, &prop->p_vu.p_aval); + break; + + case AMF_NULL: + if (pBuffer + 1 >= pBufEnd) + return NULL; + *pBuffer++ = AMF_NULL; + break; + + case AMF_OBJECT: + pBuffer = AMF_Encode(&prop->p_vu.p_object, pBuffer, pBufEnd); + break; + + default: + RTMP_Log(RTMP_LOGERROR, "%s, invalid type. %d", __FUNCTION__, prop->p_type); + pBuffer = NULL; + }; + + return pBuffer; +} + +#define AMF3_INTEGER_MAX 268435455 +#define AMF3_INTEGER_MIN -268435456 + +int AMF3ReadInteger(const char *data, int32_t *valp) { + int i = 0; + int32_t val = 0; + + while (i <= 2) { /* handle first 3 bytes */ + if (data[i] & 0x80) { /* byte used */ + val <<= 7; /* shift up */ + val |= (data[i] & 0x7f); /* add bits */ + i++; + } else { + break; + } + } + + if (i > 2) { /* use 4th byte, all 8bits */ + val <<= 8; + val |= data[3]; + + /* range check */ + if (val > AMF3_INTEGER_MAX) + val -= (1 << 29); + } else { /* use 7bits of last unparsed byte (0xxxxxxx) */ + val <<= 7; + val |= data[i]; + } + + *valp = val; + + return i > 2 ? 4 : i + 1; +} + +int AMF3ReadString(const char *data, AVal *str) { + int32_t ref = 0; + int len; + assert(str != 0); + + len = AMF3ReadInteger(data, &ref); + data += len; + + if ((ref & 0x1) == 0) { /* reference: 0xxx */ + uint32_t refIndex = (ref >> 1); + RTMP_Log(RTMP_LOGDEBUG, + "%s, string reference, index: %d, not supported, ignoring!", + __FUNCTION__, refIndex); + return len; + } else { + uint32_t nSize = (ref >> 1); + + str->av_val = (char *)data; + str->av_len = nSize; + + return len + nSize; + } + return len; +} + +int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName) { + int nOriginalSize = nSize; + AMF3DataType type; + + prop->p_name.av_len = 0; + prop->p_name.av_val = NULL; + + if (nSize == 0 || !pBuffer) { + RTMP_Log(RTMP_LOGDEBUG, "empty buffer/no buffer pointer!"); + return -1; + } + + /* decode name */ + if (bDecodeName) { + AVal name; + int nRes = AMF3ReadString(pBuffer, &name); + + if (name.av_len <= 0) + return nRes; + + prop->p_name = name; + pBuffer += nRes; + nSize -= nRes; + } + + /* decode */ + type = *pBuffer++; + nSize--; + + switch (type) { + case AMF3_UNDEFINED: + case AMF3_NULL: + prop->p_type = AMF_NULL; + break; + case AMF3_FALSE: + prop->p_type = AMF_BOOLEAN; + prop->p_vu.p_number = 0.0; + break; + case AMF3_TRUE: + prop->p_type = AMF_BOOLEAN; + prop->p_vu.p_number = 1.0; + break; + case AMF3_INTEGER: { + int32_t res = 0; + int len = AMF3ReadInteger(pBuffer, &res); + prop->p_vu.p_number = (double)res; + prop->p_type = AMF_NUMBER; + nSize -= len; + break; + } + case AMF3_DOUBLE: + if (nSize < 8) + return -1; + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + prop->p_type = AMF_NUMBER; + nSize -= 8; + break; + case AMF3_STRING: + case AMF3_XML_DOC: + case AMF3_XML: { + int len = AMF3ReadString(pBuffer, &prop->p_vu.p_aval); + prop->p_type = AMF_STRING; + nSize -= len; + break; + } + case AMF3_DATE: { + int32_t res = 0; + int len = AMF3ReadInteger(pBuffer, &res); + + nSize -= len; + pBuffer += len; + + if ((res & 0x1) == 0) { /* reference */ + uint32_t nIndex = (res >> 1); + RTMP_Log(RTMP_LOGDEBUG, "AMF3_DATE reference: %d, not supported!", nIndex); + } else { + if (nSize < 8) + return -1; + + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + nSize -= 8; + prop->p_type = AMF_NUMBER; + } + break; + } + case AMF3_OBJECT: { + int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + case AMF3_ARRAY: + case AMF3_BYTE_ARRAY: + default: + RTMP_Log(RTMP_LOGDEBUG, "%s - AMF3 unknown/unsupported datatype 0x%02x, @0x%08X", + __FUNCTION__, (unsigned char)(*pBuffer), pBuffer); + return -1; + } + + return nOriginalSize - nSize; +} + +int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName) { + int nOriginalSize = nSize; + int nRes; + + prop->p_name.av_len = 0; + prop->p_name.av_val = NULL; + + if (nSize == 0 || !pBuffer) { + RTMP_Log(RTMP_LOGDEBUG, "%s: Empty buffer/no buffer pointer!", __FUNCTION__); + return -1; + } + + if (bDecodeName && nSize < 4) { /* at least name (length + at least 1 byte) and 1 byte of data */ + RTMP_Log(RTMP_LOGDEBUG, + "%s: Not enough data for decoding with name, less than 4 bytes!", + __FUNCTION__); + return -1; + } + + if (bDecodeName) { + unsigned short nNameSize = AMF_DecodeInt16(pBuffer); + if (nNameSize > nSize - 2) { + RTMP_Log(RTMP_LOGDEBUG, + "%s: Name size out of range: namesize (%d) > len (%d) - 2", + __FUNCTION__, nNameSize, nSize); + return -1; + } + + AMF_DecodeString(pBuffer, &prop->p_name); + nSize -= 2 + nNameSize; + pBuffer += 2 + nNameSize; + } + + if (nSize == 0) { + return -1; + } + + nSize--; + + prop->p_type = *pBuffer++; + switch (prop->p_type) { + case AMF_NUMBER: + if (nSize < 8) + return -1; + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + nSize -= 8; + break; + case AMF_BOOLEAN: + if (nSize < 1) + return -1; + prop->p_vu.p_number = (double)AMF_DecodeBoolean(pBuffer); + nSize--; + break; + case AMF_STRING: { + unsigned short nStringSize = AMF_DecodeInt16(pBuffer); + + if (nSize < (long)nStringSize + 2) + return -1; + AMF_DecodeString(pBuffer, &prop->p_vu.p_aval); + nSize -= (2 + nStringSize); + break; + } + case AMF_OBJECT: { + int nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + break; + } + case AMF_MOVIECLIP: { + RTMP_Log(RTMP_LOGERROR, "AMF_MOVIECLIP reserved!"); + return -1; + break; + } + case AMF_NULL: + case AMF_UNDEFINED: + case AMF_UNSUPPORTED: + prop->p_type = AMF_NULL; + break; + case AMF_REFERENCE: { + RTMP_Log(RTMP_LOGERROR, "AMF_REFERENCE not supported!"); + return -1; + break; + } + case AMF_ECMA_ARRAY: { + nSize -= 4; + + /* next comes the rest, mixed array has a final 0x000009 mark and names, so its an object */ + nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer + 4, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + case AMF_OBJECT_END: { + return -1; + break; + } + case AMF_STRICT_ARRAY: { + unsigned int nArrayLen = AMF_DecodeInt32(pBuffer); + nSize -= 4; + + nRes = AMF_DecodeArray(&prop->p_vu.p_object, pBuffer + 4, nSize, + nArrayLen, FALSE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + case AMF_DATE: { + RTMP_Log(RTMP_LOGDEBUG, "AMF_DATE"); + + if (nSize < 10) + return -1; + + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + prop->p_UTCoffset = AMF_DecodeInt16(pBuffer + 8); + + nSize -= 10; + break; + } + case AMF_LONG_STRING: { + unsigned int nStringSize = AMF_DecodeInt32(pBuffer); + if (nSize < (long)nStringSize + 4) + return -1; + AMF_DecodeLongString(pBuffer, &prop->p_vu.p_aval); + nSize -= (4 + nStringSize); + prop->p_type = AMF_STRING; + break; + } + case AMF_RECORDSET: { + RTMP_Log(RTMP_LOGERROR, "AMF_RECORDSET reserved!"); + return -1; + break; + } + case AMF_XML_DOC: { + RTMP_Log(RTMP_LOGERROR, "AMF_XML_DOC not supported!"); + return -1; + break; + } + case AMF_TYPED_OBJECT: { + RTMP_Log(RTMP_LOGERROR, "AMF_TYPED_OBJECT not supported!"); + return -1; + break; + } + case AMF_AVMPLUS: { + int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + default: + RTMP_Log(RTMP_LOGDEBUG, "%s - unknown datatype 0x%02x, @0x%08X", __FUNCTION__, + prop->p_type, pBuffer - 1); + return -1; + } + + return nOriginalSize - nSize; +} + +void AMFProp_Dump(AMFObjectProperty *prop) { + char strRes[256]; + char str[256]; + AVal name; + + if (prop->p_type == AMF_INVALID) { + RTMP_Log(RTMP_LOGDEBUG, "Property: INVALID"); + return; + } + + if (prop->p_type == AMF_NULL) { + RTMP_Log(RTMP_LOGDEBUG, "Property: NULL"); + return; + } + + if (prop->p_name.av_len) { + name = prop->p_name; + } else { + name.av_val = "no-name."; + name.av_len = sizeof("no-name.") - 1; + } + if (name.av_len > 18) + name.av_len = 18; + + snprintf(strRes, 255, "Name: %18.*s, ", name.av_len, name.av_val); + + if (prop->p_type == AMF_OBJECT) { + RTMP_Log(RTMP_LOGDEBUG, "Property: <%sOBJECT>", strRes); + AMF_Dump(&prop->p_vu.p_object); + return; + } + + switch (prop->p_type) { + case AMF_NUMBER: + snprintf(str, 255, "NUMBER:\t%.2f", prop->p_vu.p_number); + break; + case AMF_BOOLEAN: + snprintf(str, 255, "BOOLEAN:\t%s", + prop->p_vu.p_number != 0.0 ? "TRUE" : "FALSE"); + break; + case AMF_STRING: + snprintf(str, 255, "STRING:\t%.*s", prop->p_vu.p_aval.av_len, + prop->p_vu.p_aval.av_val); + break; + case AMF_DATE: + snprintf(str, 255, "DATE:\ttimestamp: %.2f, UTC offset: %d", + prop->p_vu.p_number, prop->p_UTCoffset); + break; + default: + snprintf(str, 255, "INVALID TYPE 0x%02x", (unsigned char)prop->p_type); + } + + RTMP_Log(RTMP_LOGDEBUG, "Property: <%s%s>", strRes, str); +} + +void AMFProp_Reset(AMFObjectProperty *prop) { + if (prop->p_type == AMF_OBJECT) + AMF_Reset(&prop->p_vu.p_object); + else { + prop->p_vu.p_aval.av_len = 0; + prop->p_vu.p_aval.av_val = NULL; + } + prop->p_type = AMF_INVALID; +} + +/* AMFObject */ + +char * + AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd) { + int i; + + if (pBuffer + 4 >= pBufEnd) + return NULL; + + *pBuffer++ = AMF_OBJECT; + + for (i = 0; i < obj->o_num; i++) { + char *res = AMFProp_Encode(&obj->o_props[i], pBuffer, pBufEnd); + if (res == NULL) { + RTMP_Log(RTMP_LOGERROR, "AMF_Encode - failed to encode property in index %d", + i); + break; + } else { + pBuffer = res; + } + } + + if (pBuffer + 3 >= pBufEnd) + return NULL; /* no room for the end marker */ + + pBuffer = AMF_EncodeInt24(pBuffer, pBufEnd, AMF_OBJECT_END); + + return pBuffer; +} + +int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, + int nArrayLen, int bDecodeName) { + int nOriginalSize = nSize; + int bError = FALSE; + + obj->o_num = 0; + obj->o_props = NULL; + while (nArrayLen > 0) { + AMFObjectProperty prop; + int nRes; + nArrayLen--; + + nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); + if (nRes == -1) + bError = TRUE; + else { + nSize -= nRes; + pBuffer += nRes; + AMF_AddProp(obj, &prop); + } + } + if (bError) + return -1; + + return nOriginalSize - nSize; +} + +int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bAMFData) { + int nOriginalSize = nSize; + int32_t ref; + int len; + + obj->o_num = 0; + obj->o_props = NULL; + if (bAMFData) { + if (*pBuffer != AMF3_OBJECT) + RTMP_Log(RTMP_LOGERROR, + "AMF3 Object encapsulated in AMF stream does not start with AMF3_OBJECT!"); + pBuffer++; + nSize--; + } + + ref = 0; + len = AMF3ReadInteger(pBuffer, &ref); + pBuffer += len; + nSize -= len; + + if ((ref & 1) == 0) { /* object reference, 0xxx */ + uint32_t objectIndex = (ref >> 1); + + RTMP_Log(RTMP_LOGDEBUG, "Object reference, index: %d", objectIndex); + } else /* object instance */ + { + int32_t classRef = (ref >> 1); + + AMF3ClassDef cd = {{0, 0}}; + AMFObjectProperty prop; + + if ((classRef & 0x1) == 0) { /* class reference */ + uint32_t classIndex = (classRef >> 1); + RTMP_Log(RTMP_LOGDEBUG, "Class reference: %d", classIndex); + } else { + int32_t classExtRef = (classRef >> 1); + int i; + + cd.cd_externalizable = (classExtRef & 0x1) == 1; + cd.cd_dynamic = ((classExtRef >> 1) & 0x1) == 1; + + cd.cd_num = classExtRef >> 2; + + /* class name */ + + len = AMF3ReadString(pBuffer, &cd.cd_name); + nSize -= len; + pBuffer += len; + + /*std::string str = className; */ + + RTMP_Log(RTMP_LOGDEBUG, + "Class name: %s, externalizable: %d, dynamic: %d, classMembers: %d", + cd.cd_name.av_val, cd.cd_externalizable, cd.cd_dynamic, + cd.cd_num); + + for (i = 0; i < cd.cd_num; i++) { + AVal memberName; + len = AMF3ReadString(pBuffer, &memberName); + RTMP_Log(RTMP_LOGDEBUG, "Member: %s", memberName.av_val); + AMF3CD_AddProp(&cd, &memberName); + nSize -= len; + pBuffer += len; + } + } + + /* add as referencable object */ + + if (cd.cd_externalizable) { + int nRes; + AVal name = AVC("DEFAULT_ATTRIBUTE"); + + RTMP_Log(RTMP_LOGDEBUG, "Externalizable, TODO check"); + + nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); + if (nRes == -1) + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", + __FUNCTION__); + else { + nSize -= nRes; + pBuffer += nRes; + } + + AMFProp_SetName(&prop, &name); + AMF_AddProp(obj, &prop); + } else { + int nRes, i; + for (i = 0; i < cd.cd_num; i++) /* non-dynamic */ + { + nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); + if (nRes == -1) + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", + __FUNCTION__); + + AMFProp_SetName(&prop, AMF3CD_GetProp(&cd, i)); + AMF_AddProp(obj, &prop); + + pBuffer += nRes; + nSize -= nRes; + } + if (cd.cd_dynamic) { + int len = 0; + + do { + nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, TRUE); + AMF_AddProp(obj, &prop); + + pBuffer += nRes; + nSize -= nRes; + + len = prop.p_name.av_len; + } while (len > 0); + } + } + RTMP_Log(RTMP_LOGDEBUG, "class object!"); + } + return nOriginalSize - nSize; +} + +int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName) { + int nOriginalSize = nSize; + int bError = FALSE; /* if there is an error while decoding - try to at least find the end mark AMF_OBJECT_END */ + + obj->o_num = 0; + obj->o_props = NULL; + while (nSize > 0) { + AMFObjectProperty prop; + int nRes; + + if (nSize >= 3 && AMF_DecodeInt24(pBuffer) == AMF_OBJECT_END) { + nSize -= 3; + bError = FALSE; + break; + } + + if (bError) { + RTMP_Log(RTMP_LOGERROR, + "DECODING ERROR, IGNORING BYTES UNTIL NEXT KNOWN PATTERN!"); + nSize--; + pBuffer++; + continue; + } + + nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); + if (nRes == -1) + bError = TRUE; + else { + nSize -= nRes; + pBuffer += nRes; + AMF_AddProp(obj, &prop); + } + } + + if (bError) + return -1; + + return nOriginalSize - nSize; +} + +void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop) { + if (!(obj->o_num & 0x0f)) + obj->o_props = + realloc(obj->o_props, (obj->o_num + 16) * sizeof(AMFObjectProperty)); + obj->o_props[obj->o_num++] = *prop; +} + +int AMF_CountProp(AMFObject *obj) { + return obj->o_num; +} + +AMFObjectProperty * + AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex) { + if (nIndex >= 0) { + if (nIndex <= obj->o_num) + return &obj->o_props[nIndex]; + } else { + int n; + for (n = 0; n < obj->o_num; n++) { + if (AVMATCH(&obj->o_props[n].p_name, name)) + return &obj->o_props[n]; + } + } + + return (AMFObjectProperty *)&AMFProp_Invalid; +} + +void AMF_Dump(AMFObject *obj) { + int n; + RTMP_Log(RTMP_LOGDEBUG, "(object begin)"); + for (n = 0; n < obj->o_num; n++) { + AMFProp_Dump(&obj->o_props[n]); + } + RTMP_Log(RTMP_LOGDEBUG, "(object end)"); +} + +void AMF_Reset(AMFObject *obj) { + int n; + for (n = 0; n < obj->o_num; n++) { + AMFProp_Reset(&obj->o_props[n]); + } + free(obj->o_props); + obj->o_props = NULL; + obj->o_num = 0; +} + +/* AMF3ClassDefinition */ + +void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop) { + if (!(cd->cd_num & 0x0f)) + cd->cd_props = realloc(cd->cd_props, (cd->cd_num + 16) * sizeof(AVal)); + cd->cd_props[cd->cd_num++] = *prop; +} + +AVal * + AMF3CD_GetProp(AMF3ClassDef *cd, int nIndex) { + if (nIndex >= cd->cd_num) + return (AVal *)&AV_empty; + return &cd->cd_props[nIndex]; +} diff --git a/LFLiveKit/publish/pili-librtmp/amf.h b/LFLiveKit/publish/pili-librtmp/amf.h new file mode 100755 index 00000000..77f93e84 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/amf.h @@ -0,0 +1,180 @@ +#ifndef __AMF_H__ +#define __AMF_H__ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include + +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + AMF_NUMBER = 0, + AMF_BOOLEAN, + AMF_STRING, + AMF_OBJECT, + AMF_MOVIECLIP, /* reserved, not used */ + AMF_NULL, + AMF_UNDEFINED, + AMF_REFERENCE, + AMF_ECMA_ARRAY, + AMF_OBJECT_END, + AMF_STRICT_ARRAY, + AMF_DATE, + AMF_LONG_STRING, + AMF_UNSUPPORTED, + AMF_RECORDSET, /* reserved, not used */ + AMF_XML_DOC, + AMF_TYPED_OBJECT, + AMF_AVMPLUS, /* switch to AMF3 */ + AMF_INVALID = 0xff +} AMFDataType; + +typedef enum { + AMF3_UNDEFINED = 0, + AMF3_NULL, + AMF3_FALSE, + AMF3_TRUE, + AMF3_INTEGER, + AMF3_DOUBLE, + AMF3_STRING, + AMF3_XML_DOC, + AMF3_DATE, + AMF3_ARRAY, + AMF3_OBJECT, + AMF3_XML, + AMF3_BYTE_ARRAY +} AMF3DataType; + +typedef struct AVal { + char *av_val; + int av_len; +} AVal; +#define AVC(str) \ + { str, sizeof(str) - 1 } +#define AVMATCH(a1, a2) \ + ((a1)->av_len == (a2)->av_len && \ + !memcmp((a1)->av_val, (a2)->av_val, (a1)->av_len)) + +struct AMFObjectProperty; + +typedef struct AMFObject { + int o_num; + struct AMFObjectProperty *o_props; +} AMFObject; + +typedef struct AMFObjectProperty { + AVal p_name; + AMFDataType p_type; + union { + double p_number; + AVal p_aval; + AMFObject p_object; + } p_vu; + int16_t p_UTCoffset; +} AMFObjectProperty; + +char *AMF_EncodeString(char *output, char *outend, const AVal *str); +char *AMF_EncodeNumber(char *output, char *outend, double dVal); +char *AMF_EncodeInt16(char *output, char *outend, short nVal); +char *AMF_EncodeInt24(char *output, char *outend, int nVal); +char *AMF_EncodeInt32(char *output, char *outend, int nVal); +char *AMF_EncodeBoolean(char *output, char *outend, int bVal); + +/* Shortcuts for AMFProp_Encode */ +char *AMF_EncodeNamedString(char *output, char *outend, const AVal *name, + const AVal *value); +char *AMF_EncodeNamedNumber(char *output, char *outend, const AVal *name, + double dVal); +char *AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *name, + int bVal); + +unsigned short AMF_DecodeInt16(const char *data); +unsigned int AMF_DecodeInt24(const char *data); +unsigned int AMF_DecodeInt32(const char *data); +void AMF_DecodeString(const char *data, AVal *str); +void AMF_DecodeLongString(const char *data, AVal *str); +int AMF_DecodeBoolean(const char *data); +double AMF_DecodeNumber(const char *data); + +char *AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd); +int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName); +int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, + int nArrayLen, int bDecodeName); +int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, + int bDecodeName); +void AMF_Dump(AMFObject *obj); +void AMF_Reset(AMFObject *obj); + +void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop); +int AMF_CountProp(AMFObject *obj); +AMFObjectProperty *AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex); + +AMFDataType AMFProp_GetType(AMFObjectProperty *prop); +void AMFProp_SetNumber(AMFObjectProperty *prop, double dval); +void AMFProp_SetBoolean(AMFObjectProperty *prop, int bflag); +void AMFProp_SetString(AMFObjectProperty *prop, AVal *str); +void AMFProp_SetObject(AMFObjectProperty *prop, AMFObject *obj); + +void AMFProp_GetName(AMFObjectProperty *prop, AVal *name); +void AMFProp_SetName(AMFObjectProperty *prop, AVal *name); +double AMFProp_GetNumber(AMFObjectProperty *prop); +int AMFProp_GetBoolean(AMFObjectProperty *prop); +void AMFProp_GetString(AMFObjectProperty *prop, AVal *str); +void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj); + +int AMFProp_IsValid(AMFObjectProperty *prop); + +char *AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd); +int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName); +int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName); + +void AMFProp_Dump(AMFObjectProperty *prop); +void AMFProp_Reset(AMFObjectProperty *prop); + +typedef struct AMF3ClassDef { + AVal cd_name; + char cd_externalizable; + char cd_dynamic; + int cd_num; + AVal *cd_props; +} AMF3ClassDef; + +void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop); +AVal *AMF3CD_GetProp(AMF3ClassDef *cd, int idx); + +#ifdef __cplusplus +} +#endif + +#endif /* __AMF_H__ */ diff --git a/LFLiveKit/publish/pili-librtmp/bytes.h b/LFLiveKit/publish/pili-librtmp/bytes.h new file mode 100755 index 00000000..87221cf1 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/bytes.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#ifndef __BYTES_H__ +#define __BYTES_H__ + +#include + +#ifdef _WIN32 +/* Windows is little endian only */ +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN +#define __FLOAT_WORD_ORDER __BYTE_ORDER + +typedef unsigned char uint8_t; + +#else /* !_WIN32 */ + +#include + +#if defined(BYTE_ORDER) && !defined(__BYTE_ORDER) +#define __BYTE_ORDER BYTE_ORDER +#endif + +#if defined(BIG_ENDIAN) && !defined(__BIG_ENDIAN) +#define __BIG_ENDIAN BIG_ENDIAN +#endif + +#if defined(LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#endif + +#endif /* !_WIN32 */ + +/* define default endianness */ +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN 1234 +#endif + +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN 4321 +#endif + +#ifndef __BYTE_ORDER +#warning "Byte order not defined on your system, assuming little endian!" +#define __BYTE_ORDER __LITTLE_ENDIAN +#endif + +/* ok, we assume to have the same float word order and byte order if float word + * order is not defined */ +#ifndef __FLOAT_WORD_ORDER +#warning "Float word order not defined, assuming the same as byte order!" +#define __FLOAT_WORD_ORDER __BYTE_ORDER +#endif + +#if !defined(__BYTE_ORDER) || !defined(__FLOAT_WORD_ORDER) +#error "Undefined byte or float word order!" +#endif + +#if __FLOAT_WORD_ORDER != __BIG_ENDIAN && __FLOAT_WORD_ORDER != __LITTLE_ENDIAN +#error "Unknown/unsupported float word order!" +#endif + +#if __BYTE_ORDER != __BIG_ENDIAN && __BYTE_ORDER != __LITTLE_ENDIAN +#error "Unknown/unsupported byte order!" +#endif + +#endif diff --git a/LFLiveKit/publish/pili-librtmp/dh.h b/LFLiveKit/publish/pili-librtmp/dh.h new file mode 100755 index 00000000..d7aeb5a5 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/dh.h @@ -0,0 +1,345 @@ +/* RTMPDump - Diffie-Hellmann Key Exchange + * Copyright (C) 2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include + +#ifdef USE_POLARSSL +#include +typedef mpi *MP_t; +#define MP_new(m) \ + m = malloc(sizeof(mpi)); \ + mpi_init(m, NULL) +#define MP_set_w(mpi, w) mpi_lset(mpi, w) +#define MP_cmp(u, v) mpi_cmp_mpi(u, v) +#define MP_set(u, v) mpi_copy(u, v) +#define MP_sub_w(mpi, w) mpi_sub_int(mpi, mpi, w) +#define MP_cmp_1(mpi) mpi_cmp_int(mpi, 1) +#define MP_modexp(r, y, q, p) mpi_exp_mod(r, y, q, p, NULL) +#define MP_free(mpi) \ + mpi_free(mpi, NULL); \ + free(mpi) +#define MP_gethex(u, hex, res) \ + MP_new(u); \ + res = mpi_read_string(u, 16, hex) == 0 +#define MP_bytes(u) mpi_size(u) +#define MP_setbin(u, buf, len) mpi_write_binary(u, buf, len) +#define MP_getbin(u, buf, len) \ + MP_new(u); \ + mpi_read_binary(u, buf, len) + +typedef struct MDH { + MP_t p; + MP_t g; + MP_t pub_key; + MP_t priv_key; + long length; + dhm_context ctx; +} MDH; + +#define MDH_new() calloc(1, sizeof(MDH)) +#define MDH_free(vp) \ + { \ + MDH *dh = vp; \ + dhm_free(&dh->ctx); \ + MP_free(dh->p); \ + MP_free(dh->g); \ + MP_free(dh->pub_key); \ + MP_free(dh->priv_key); \ + free(dh); \ + } + +static int MDH_generate_key(MDH *dh) { + unsigned char out[2]; + MP_set(&dh->ctx.P, dh->p); + MP_set(&dh->ctx.G, dh->g); + dh->ctx.len = 128; + dhm_make_public(&dh->ctx, 1024, out, 1, havege_rand, &RTMP_TLS_ctx->hs); + MP_new(dh->pub_key); + MP_new(dh->priv_key); + MP_set(dh->pub_key, &dh->ctx.GX); + MP_set(dh->priv_key, &dh->ctx.X); + return 1; +} + +static int MDH_compute_key(uint8_t *secret, size_t len, MP_t pub, MDH *dh) { + int n = len; + MP_set(&dh->ctx.GY, pub); + dhm_calc_secret(&dh->ctx, secret, &n); + return 0; +} + +#elif defined(USE_GNUTLS) +#include +typedef gcry_mpi_t MP_t; +#define MP_new(m) m = gcry_mpi_new(1) +#define MP_set_w(mpi, w) gcry_mpi_set_ui(mpi, w) +#define MP_cmp(u, v) gcry_mpi_cmp(u, v) +#define MP_set(u, v) gcry_mpi_set(u, v) +#define MP_sub_w(mpi, w) gcry_mpi_sub_ui(mpi, mpi, w) +#define MP_cmp_1(mpi) gcry_mpi_cmp_ui(mpi, 1) +#define MP_modexp(r, y, q, p) gcry_mpi_powm(r, y, q, p) +#define MP_free(mpi) gcry_mpi_release(mpi) +#define MP_gethex(u, hex, res) \ + res = (gcry_mpi_scan(&u, GCRYMPI_FMT_HEX, hex, 0, 0) == 0) +#define MP_bytes(u) (gcry_mpi_get_nbits(u) + 7) / 8 +#define MP_setbin(u, buf, len) \ + gcry_mpi_print(GCRYMPI_FMT_USG, buf, len, NULL, u) +#define MP_getbin(u, buf, len) \ + gcry_mpi_scan(&u, GCRYMPI_FMT_USG, buf, len, NULL) + +typedef struct MDH { + MP_t p; + MP_t g; + MP_t pub_key; + MP_t priv_key; + long length; +} MDH; + +#define MDH_new() calloc(1, sizeof(MDH)) +#define MDH_free(dh) \ + do { \ + MP_free(((MDH *)(dh))->p); \ + MP_free(((MDH *)(dh))->g); \ + MP_free(((MDH *)(dh))->pub_key); \ + MP_free(((MDH *)(dh))->priv_key); \ + free(dh); \ + } while (0) + +extern MP_t gnutls_calc_dh_secret(MP_t *priv, MP_t g, MP_t p); +extern MP_t gnutls_calc_dh_key(MP_t y, MP_t x, MP_t p); + +#define MDH_generate_key(dh) \ + (dh->pub_key = gnutls_calc_dh_secret(&dh->priv_key, dh->g, dh->p)) +static int MDH_compute_key(uint8_t *secret, size_t len, MP_t pub, MDH *dh) { + MP_t sec = gnutls_calc_dh_key(pub, dh->priv_key, dh->p); + if (sec) { + MP_setbin(sec, secret, len); + MP_free(sec); + return 0; + } else + return -1; +} + +#else /* USE_OPENSSL */ +#include +#include + +typedef BIGNUM *MP_t; +#define MP_new(m) m = BN_new() +#define MP_set_w(mpi, w) BN_set_word(mpi, w) +#define MP_cmp(u, v) BN_cmp(u, v) +#define MP_set(u, v) BN_copy(u, v) +#define MP_sub_w(mpi, w) BN_sub_word(mpi, w) +#define MP_cmp_1(mpi) BN_cmp(mpi, BN_value_one()) +#define MP_modexp(r, y, q, p) \ + do { \ + BN_CTX *ctx = BN_CTX_new(); \ + BN_mod_exp(r, y, q, p, ctx); \ + BN_CTX_free(ctx); \ + } while (0) +#define MP_free(mpi) BN_free(mpi) +#define MP_gethex(u, hex, res) res = BN_hex2bn(&u, hex) +#define MP_bytes(u) BN_num_bytes(u) +#define MP_setbin(u, buf, len) BN_bn2bin(u, buf) +#define MP_getbin(u, buf, len) u = BN_bin2bn(buf, len, 0) + +#define MDH DH +#define MDH_new() DH_new() +#define MDH_free(dh) DH_free(dh) +#define MDH_generate_key(dh) DH_generate_key(dh) +#define MDH_compute_key(secret, seclen, pub, dh) DH_compute_key(secret, pub, dh) + +#endif + +#include "dhgroups.h" +#include "log.h" + +/* RFC 2631, Section 2.1.5, http://www.ietf.org/rfc/rfc2631.txt */ +static int isValidPublicKey(MP_t y, MP_t p, MP_t q) { + int ret = TRUE; + MP_t bn; + assert(y); + + MP_new(bn); + assert(bn); + + /* y must lie in [2,p-1] */ + MP_set_w(bn, 1); + if (MP_cmp(y, bn) < 0) { + RTMP_Log(RTMP_LOGERROR, "DH public key must be at least 2"); + ret = FALSE; + goto failed; + } + + /* bn = p-2 */ + MP_set(bn, p); + MP_sub_w(bn, 1); + if (MP_cmp(y, bn) > 0) { + RTMP_Log(RTMP_LOGERROR, "DH public key must be at most p-2"); + ret = FALSE; + goto failed; + } + + /* Verify with Sophie-Germain prime + * + * This is a nice test to make sure the public key position is calculated + * correctly. This test will fail in about 50% of the cases if applied to + * random data. + */ + if (q) { + /* y must fulfill y^q mod p = 1 */ + MP_modexp(bn, y, q, p); + + if (MP_cmp_1(bn) != 0) { + RTMP_Log(RTMP_LOGWARNING, "DH public key does not fulfill y^q mod p = 1"); + } + } + +failed: + MP_free(bn); + return ret; +} + +static MDH *DHInit(int nKeyBits) { + size_t res; + MDH *dh = MDH_new(); + + if (!dh) + goto failed; + + MP_new(dh->g); + + if (!dh->g) + goto failed; + + MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */ + if (!res) { + goto failed; + } + + MP_set_w(dh->g, 2); /* base 2 */ + + dh->length = nKeyBits; + return dh; + +failed: + if (dh) + MDH_free(dh); + + return 0; +} + +static int DHGenerateKey(MDH *dh) { + size_t res = 0; + if (!dh) + return 0; + + while (!res) { + MP_t q1 = NULL; + + if (!MDH_generate_key(dh)) + return 0; + + MP_gethex(q1, Q1024, res); + assert(res); + + res = isValidPublicKey(dh->pub_key, dh->p, q1); + if (!res) { + MP_free(dh->pub_key); + MP_free(dh->priv_key); + dh->pub_key = dh->priv_key = 0; + } + + MP_free(q1); + } + return 1; +} + +/* fill pubkey with the public key in BIG ENDIAN order + * 00 00 00 00 00 x1 x2 x3 ..... + */ + +static int DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen) { + int len; + if (!dh || !dh->pub_key) + return 0; + + len = MP_bytes(dh->pub_key); + if (len <= 0 || len > (int)nPubkeyLen) + return 0; + + memset(pubkey, 0, nPubkeyLen); + MP_setbin(dh->pub_key, pubkey + (nPubkeyLen - len), len); + return 1; +} + +#if 0 /* unused */ +static int +DHGetPrivateKey(MDH *dh, uint8_t *privkey, size_t nPrivkeyLen) +{ + if (!dh || !dh->priv_key) + return 0; + + int len = MP_bytes(dh->priv_key); + if (len <= 0 || len > (int) nPrivkeyLen) + return 0; + + memset(privkey, 0, nPrivkeyLen); + MP_setbin(dh->priv_key, privkey + (nPrivkeyLen - len), len); + return 1; +} +#endif + +/* computes the shared secret key from the private MDH value and the + * other party's public key (pubkey) + */ +static int DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen, + uint8_t *secret) { + MP_t q1 = NULL, pubkeyBn = NULL; + size_t len; + int res; + + if (!dh || !secret || nPubkeyLen >= INT_MAX) + return -1; + + MP_getbin(pubkeyBn, pubkey, nPubkeyLen); + if (!pubkeyBn) + return -1; + + MP_gethex(q1, Q1024, len); + assert(len); + + if (isValidPublicKey(pubkeyBn, dh->p, q1)) + res = MDH_compute_key(secret, nPubkeyLen, pubkeyBn, dh); + else + res = -1; + + MP_free(q1); + MP_free(pubkeyBn); + + return res; +} diff --git a/LFLiveKit/publish/pili-librtmp/dhgroups.h b/LFLiveKit/publish/pili-librtmp/dhgroups.h new file mode 100755 index 00000000..f3d0293f --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/dhgroups.h @@ -0,0 +1,198 @@ +/* librtmp - Diffie-Hellmann Key Exchange + * Copyright (C) 2009 Andrej Stepanchuk + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +/* from RFC 3526, see http://www.ietf.org/rfc/rfc3526.txt */ + +/* 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 } */ +#define P768 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF" + +/* 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 } */ +#define P1024 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" \ + "FFFFFFFFFFFFFFFF" + +/* Group morder largest prime factor: */ +#define Q1024 \ + "7FFFFFFFFFFFFFFFE487ED5110B4611A62633145C06E0E68" \ + "948127044533E63A0105DF531D89CD9128A5043CC71A026E" \ + "F7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E122" \ + "F242DABB312F3F637A262174D31BF6B585FFAE5B7A035BF6" \ + "F71C35FDAD44CFD2D74F9208BE258FF324943328F67329C0" \ + "FFFFFFFFFFFFFFFF" + +/* 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 } */ +#define P1536 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF" + +/* 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 } */ +#define P2048 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AACAA68FFFFFFFFFFFFFFFF" + +/* 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 } */ +#define P3072 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" + +/* 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 } */ +#define P4096 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" \ + "FFFFFFFFFFFFFFFF" + +/* 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 } */ +#define P6144 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" \ + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" \ + "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" \ + "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" \ + "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" \ + "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" \ + "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" \ + "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" \ + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" \ + "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" \ + "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" \ + "12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF" + +/* 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 } */ +#define P8192 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" \ + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" \ + "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" \ + "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" \ + "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" \ + "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" \ + "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" \ + "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" \ + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" \ + "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" \ + "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" \ + "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4" \ + "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300" \ + "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568" \ + "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" \ + "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B" \ + "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A" \ + "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36" \ + "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1" \ + "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92" \ + "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47" \ + "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" \ + "60C980DD98EDD3DFFFFFFFFFFFFFFFFF" diff --git a/LFLiveKit/publish/pili-librtmp/error.c b/LFLiveKit/publish/pili-librtmp/error.c new file mode 100755 index 00000000..b47913df --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/error.c @@ -0,0 +1,26 @@ +#include "error.h" +#include +#include + +void RTMPError_Alloc(RTMPError *error, size_t msg_size) { + RTMPError_Free(error); + + error->code = 0; + error->message = (char *)malloc(msg_size + 1); + memset(error->message, 0, msg_size); +} + +void RTMPError_Free(RTMPError *error) { + if (error) { + if (error->message) { + free(error->message); + error->message = NULL; + } + } +} + +void RTMPError_Message(RTMPError *error, int code, const char *message) { + RTMPError_Alloc(error, strlen(message)); + error->code = code; + strcpy(error->message, message); +} diff --git a/LFLiveKit/publish/pili-librtmp/error.h b/LFLiveKit/publish/pili-librtmp/error.h new file mode 100755 index 00000000..6a8dcbe4 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/error.h @@ -0,0 +1,46 @@ +#ifndef __ERROR_H__ +#define __ERROR_H__ + +#include + +typedef struct RTMPError { + int code; + char *message; +} RTMPError; + +void RTMPError_Alloc(RTMPError *error, size_t msg_size); +void RTMPError_Free(RTMPError *error); +void RTMPError_Message(RTMPError *error, int code, const char *message); + +// error defines +enum { + RTMPErrorUnknow = -1, // "Unknow error" + RTMPErrorUnknowOption = -999, // "Unknown option %s" + RTMPErrorAccessDNSFailed = -1000, // "Failed to access the DNS. (addr: %s)" + RTMPErrorFailedToConnectSocket = + -1001, // "Failed to connect socket. %d (%s)" + RTMPErrorSocksNegotiationFailed = -1002, // "Socks negotiation failed" + RTMPErrorFailedToCreateSocket = + -1003, // "Failed to create socket. %d (%s)" + RTMPErrorHandshakeFailed = -1004, // "Handshake failed" + RTMPErrorRTMPConnectFailed = -1005, // "RTMP connect failed" + RTMPErrorSendFailed = -1006, // "Send error %d (%s), (%d bytes)" + RTMPErrorServerRequestedClose = -1007, // "RTMP server requested close" + RTMPErrorNetStreamFailed = -1008, // "NetStream failed" + RTMPErrorNetStreamPlayFailed = -1009, // "NetStream play failed" + RTMPErrorNetStreamPlayStreamNotFound = + -1010, // "NetStream play stream not found" + RTMPErrorNetConnectionConnectInvalidApp = + -1011, // "NetConnection connect invalip app" + RTMPErrorSanityFailed = + -1012, // "Sanity failed. Trying to send header of type: 0x%02X" + RTMPErrorSocketClosedByPeer = -1013, // "RTMP socket closed by peer" + RTMPErrorRTMPConnectStreamFailed = -1014, // "RTMP connect stream failed" + RTMPErrorSocketTimeout = -1015, // "RTMP socket timeout" + + // SSL errors + RTMPErrorTLSConnectFailed = -1200, // "TLS_Connect failed" + RTMPErrorNoSSLOrTLSSupport = -1201, // "No SSL/TLS support" +}; + +#endif diff --git a/LFLiveKit/publish/pili-librtmp/handshake.h b/LFLiveKit/publish/pili-librtmp/handshake.h new file mode 100755 index 00000000..f791cf74 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/handshake.h @@ -0,0 +1,1034 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * Copyright (C) 2010 + * 2a665470ced7adb7156fcef47f8199a6371c117b8a79e399a2771e0b36384090 + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +/* This file is #included in rtmp.c, it is not meant to be compiled alone */ + +#ifdef USE_POLARSSL +#include +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX sha2_context +#define HMAC_setup(ctx, key, len) \ + sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) +#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + sha2_hmac_finish(&ctx, dig) + +typedef arc4_context *RC4_handle; +#define RC4_alloc(h) *h = malloc(sizeof(arc4_context)) +#define RC4_setkey(h, l, k) arc4_setup(h, k, l) +#define RC4_encrypt(h, l, d) \ + arc4_crypt(h, l, (unsigned char *)d, (unsigned char *)d) +#define RC4_encrypt2(h, l, s, d) \ + arc4_crypt(h, l, (unsigned char *)s, (unsigned char *)d) +#define RC4_free(h) free(h) + +#elif defined(USE_GNUTLS) +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX gcry_md_hd_t +#define HMAC_setup(ctx, key, len) \ + gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ + gcry_md_setkey(ctx, key, len) +#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + memcpy(dig, gcry_md_read(ctx, 0), dlen); \ + gcry_md_close(ctx) + +typedef gcry_cipher_hd_t RC4_handle; +#define RC4_alloc(h) \ + gcry_cipher_open(h, GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM, 0) +#define RC4_setkey(h, l, k) gcry_cipher_setkey(h, k, l) +#define RC4_encrypt(h, l, d) gcry_cipher_encrypt(h, (void *)d, l, NULL, 0) +#define RC4_encrypt2(h, l, s, d) \ + gcry_cipher_encrypt(h, (void *)d, l, (void *)s, l) +#define RC4_free(h) gcry_cipher_close(h) + +#else /* USE_OPENSSL */ +#include +#include +#include +#if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH) +#error Your OpenSSL is too old, need 0.9.8 or newer with SHA256 +#endif +#define HMAC_setup(ctx, key, len) \ + HMAC_CTX_init(&ctx); \ + HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0) +#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + HMAC_Final(&ctx, dig, &dlen); \ + HMAC_CTX_cleanup(&ctx) + +typedef RC4_KEY *RC4_handle; +#define RC4_alloc(h) *h = malloc(sizeof(RC4_KEY)) +#define RC4_setkey(h, l, k) RC4_set_key(h, l, k) +#define RC4_encrypt(h, l, d) RC4(h, l, (uint8_t *)d, (uint8_t *)d) +#define RC4_encrypt2(h, l, s, d) RC4(h, l, (uint8_t *)s, (uint8_t *)d) +#define RC4_free(h) free(h) +#endif + +#define FP10 + +#include "dh.h" + +static const uint8_t GenuineFMSKey[] = { + 0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, + 0x62, 0x65, 0x20, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x30, 0x30, 0x31, /* Genuine Adobe Flash Media Server 001 */ + + 0xf0, 0xee, 0xc2, 0x4a, 0x80, 0x68, 0xbe, 0xe8, 0x2e, 0x00, 0xd0, + 0xd1, 0x02, 0x9e, 0x7e, 0x57, 0x6e, 0xec, 0x5d, 0x2d, 0x29, 0x80, + 0x6f, 0xab, 0x93, 0xb8, 0xe6, 0x36, 0xcf, 0xeb, 0x31, 0xae}; /* 68 */ + +static const uint8_t GenuineFPKey[] = { + 0x47, 0x65, 0x6E, 0x75, 0x69, 0x6E, 0x65, 0x20, 0x41, 0x64, 0x6F, + 0x62, 0x65, 0x20, 0x46, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x50, 0x6C, + 0x61, 0x79, 0x65, 0x72, 0x20, 0x30, 0x30, 0x31, /* Genuine Adobe Flash + Player 001 */ + 0xF0, 0xEE, 0xC2, 0x4A, 0x80, 0x68, 0xBE, 0xE8, 0x2E, 0x00, 0xD0, + 0xD1, 0x02, 0x9E, 0x7E, 0x57, 0x6E, 0xEC, 0x5D, 0x2D, 0x29, 0x80, + 0x6F, 0xAB, 0x93, 0xB8, 0xE6, 0x36, 0xCF, 0xEB, 0x31, 0xAE}; /* 62 */ + +static void InitRC4Encryption(uint8_t *secretKey, uint8_t *pubKeyIn, + uint8_t *pubKeyOut, RC4_handle *rc4keyIn, + RC4_handle *rc4keyOut) { + uint8_t digest[SHA256_DIGEST_LENGTH]; + unsigned int digestLen = 0; + HMAC_CTX ctx; + + RC4_alloc(rc4keyIn); + RC4_alloc(rc4keyOut); + + HMAC_setup(ctx, secretKey, 128); + HMAC_crunch(ctx, pubKeyIn, 128); + HMAC_finish(ctx, digest, digestLen); + + RTMP_Log(RTMP_LOGDEBUG, "RC4 Out Key: "); + RTMP_LogHex(RTMP_LOGDEBUG, digest, 16); + + RC4_setkey(*rc4keyOut, 16, digest); + + HMAC_setup(ctx, secretKey, 128); + HMAC_crunch(ctx, pubKeyOut, 128); + HMAC_finish(ctx, digest, digestLen); + + RTMP_Log(RTMP_LOGDEBUG, "RC4 In Key: "); + RTMP_LogHex(RTMP_LOGDEBUG, digest, 16); + + RC4_setkey(*rc4keyIn, 16, digest); +} + +typedef unsigned int(getoff)(uint8_t *buf, unsigned int len); + +static unsigned int GetDHOffset2(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 768; + unsigned int res; + + assert(RTMP_SIG_SIZE <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 632) + 8; + + if (res + 128 > 767) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate correct DH offset (got %d), exiting!", + __FUNCTION__, res); + exit(1); + } + return res; +} + +static unsigned int GetDigestOffset2(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 772; + unsigned int res; + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 776; + + if (res + 32 > 1535) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate correct digest offset (got %d), exiting", + __FUNCTION__, res); + exit(1); + } + return res; +} + +static unsigned int GetDHOffset1(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 1532; + unsigned int res; + + assert(RTMP_SIG_SIZE <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 632) + 772; + + if (res + 128 > 1531) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate DH offset (got %d), exiting!", + __FUNCTION__, res); + exit(1); + } + + return res; +} + +static unsigned int GetDigestOffset1(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 8; + unsigned int res; + + assert(12 <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 12; + + if (res + 32 > 771) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate digest offset (got %d), exiting!", + __FUNCTION__, res); + exit(1); + } + + return res; +} + +static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2}; +static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2}; + +static void HMACsha256(const uint8_t *message, size_t messageLen, + const uint8_t *key, size_t keylen, uint8_t *digest) { + unsigned int digestLen; + HMAC_CTX ctx; + + HMAC_setup(ctx, key, keylen); + HMAC_crunch(ctx, message, messageLen); + HMAC_finish(ctx, digest, digestLen); + + assert(digestLen == 32); +} + +static void CalculateDigest(unsigned int digestPos, uint8_t *handshakeMessage, + const uint8_t *key, size_t keyLen, + uint8_t *digest) { + const int messageLen = RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + uint8_t message[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH]; + + memcpy(message, handshakeMessage, digestPos); + memcpy(message + digestPos, + &handshakeMessage[digestPos + SHA256_DIGEST_LENGTH], + messageLen - digestPos); + + HMACsha256(message, messageLen, key, keyLen, digest); +} + +static int VerifyDigest(unsigned int digestPos, uint8_t *handshakeMessage, + const uint8_t *key, size_t keyLen) { + uint8_t calcDigest[SHA256_DIGEST_LENGTH]; + + CalculateDigest(digestPos, handshakeMessage, key, keyLen, calcDigest); + + return memcmp(&handshakeMessage[digestPos], calcDigest, + SHA256_DIGEST_LENGTH) == 0; +} + +/* handshake + * + * Type = [1 bytes] plain: 0x03, encrypted: 0x06, 0x08, 0x09 + * -------------------------------------------------------------------- [1536 + * bytes] + * Uptime = [4 bytes] big endian unsigned number, uptime + * Version = [4 bytes] each byte represents a version number, e.g. + * 9.0.124.0 + * ... + * + */ + +static const uint32_t rtmpe8_keys[16][4] = { + {0xbff034b2, 0x11d9081f, 0xccdfb795, 0x748de732}, + {0x086a5eb6, 0x1743090e, 0x6ef05ab8, 0xfe5a39e2}, + {0x7b10956f, 0x76ce0521, 0x2388a73a, 0x440149a1}, + {0xa943f317, 0xebf11bb2, 0xa691a5ee, 0x17f36339}, + {0x7a30e00a, 0xb529e22c, 0xa087aea5, 0xc0cb79ac}, + {0xbdce0c23, 0x2febdeff, 0x1cfaae16, 0x1123239d}, + {0x55dd3f7b, 0x77e7e62e, 0x9bb8c499, 0xc9481ee4}, + {0x407bb6b4, 0x71e89136, 0xa7aebf55, 0xca33b839}, + {0xfcf6bdc3, 0xb63c3697, 0x7ce4f825, 0x04d959b2}, + {0x28e091fd, 0x41954c4c, 0x7fb7db00, 0xe3a066f8}, + {0x57845b76, 0x4f251b03, 0x46d45bcd, 0xa2c30d29}, + {0x0acceef8, 0xda55b546, 0x03473452, 0x5863713b}, + {0xb82075dc, 0xa75f1fee, 0xd84268e8, 0xa72a44cc}, + {0x07cf6e9e, 0xa16d7b25, 0x9fa7ae6c, 0xd92f5629}, + {0xfeb1eae4, 0x8c8c3ce1, 0x4e0064a7, 0x6a387c2a}, + {0x893a9427, 0xcc3013a2, 0xf106385b, 0xa829f927}}; + +/* RTMPE type 8 uses XTEA on the regular signature + * http://en.wikipedia.org/wiki/XTEA + */ +static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid) { + unsigned int i, num_rounds = 32; + uint32_t v0, v1, sum = 0, delta = 0x9E3779B9; + uint32_t const *k; + + v0 = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); + v1 = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); + k = rtmpe8_keys[keyid]; + + for (i = 0; i < num_rounds; i++) { + v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); + sum += delta; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]); + } + + out[0] = v0; + v0 >>= 8; + out[1] = v0; + v0 >>= 8; + out[2] = v0; + v0 >>= 8; + out[3] = v0; + + out[4] = v1; + v1 >>= 8; + out[5] = v1; + v1 >>= 8; + out[6] = v1; + v1 >>= 8; + out[7] = v1; +} + +static int HandShake(RTMP *r, int FP9HandShake) { + int i, offalg = 0; + int dhposClient = 0; + int digestPosClient = 0; + int encrypted = r->Link.protocol & RTMP_FEATURE_ENC; + + RC4_handle keyIn = 0; + RC4_handle keyOut = 0; + + int32_t *ip; + uint32_t uptime; + + uint8_t clientbuf[RTMP_SIG_SIZE + 4], *clientsig = clientbuf + 4; + uint8_t serversig[RTMP_SIG_SIZE], client2[RTMP_SIG_SIZE], *reply; + uint8_t type; + getoff *getdh = NULL, *getdig = NULL; + + if (encrypted || r->Link.SWFSize) + FP9HandShake = TRUE; + else + FP9HandShake = FALSE; + + r->Link.rc4keyIn = r->Link.rc4keyOut = 0; + + if (encrypted) { + clientsig[-1] = 0x06; /* 0x08 is RTMPE as well */ + offalg = 1; + } else + clientsig[-1] = 0x03; + + uptime = htonl(RTMP_GetTime()); + memcpy(clientsig, &uptime, 4); + + if (FP9HandShake) { + /* set version to at least 9.0.115.0 */ + if (encrypted) { + clientsig[4] = 128; + clientsig[6] = 3; + } else { + clientsig[4] = 10; + clientsig[6] = 45; + } + clientsig[5] = 0; + clientsig[7] = 2; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client type: %02X", __FUNCTION__, + clientsig[-1]); + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + } else { + memset(&clientsig[4], 0, 4); + } + +/* generate random data */ +#ifdef _DEBUG + memset(clientsig + 8, 0, RTMP_SIG_SIZE - 8); +#else + ip = (int32_t *)(clientsig + 8); + for (i = 2; i < RTMP_SIG_SIZE / 4; i++) + *ip++ = rand(); +#endif + + /* set handshake digest */ + if (FP9HandShake) { + if (encrypted) { + /* generate Diffie-Hellmann parameters */ + r->Link.dh = DHInit(1024); + if (!r->Link.dh) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!", + __FUNCTION__); + return FALSE; + } + + dhposClient = getdh(clientsig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, + dhposClient); + + if (!DHGenerateKey(r->Link.dh)) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't generate Diffie-Hellmann public key!", + __FUNCTION__); + return FALSE; + } + + if (!DHGetPublicKey(r->Link.dh, &clientsig[dhposClient], 128)) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__); + return FALSE; + } + } + + digestPosClient = + getdig(clientsig, RTMP_SIG_SIZE); /* reuse this value in verification */ + RTMP_Log(RTMP_LOGDEBUG, "%s: Client digest offset: %d", __FUNCTION__, + digestPosClient); + + CalculateDigest(digestPosClient, clientsig, GenuineFPKey, 30, + &clientsig[digestPosClient]); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Initial client digest: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, clientsig + digestPosClient, + SHA256_DIGEST_LENGTH); + } + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, "Clientsig: "); + RTMP_LogHex(RTMP_LOGDEBUG, clientsig, RTMP_SIG_SIZE); +#endif + + if (!WriteN(r, (char *)clientsig - 1, RTMP_SIG_SIZE + 1)) + return FALSE; + + if (ReadN(r, (char *)&type, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); + + if (type != clientsig[-1]) + RTMP_Log(RTMP_LOGWARNING, + "%s: Type mismatch: client sent %d, server answered %d", + __FUNCTION__, clientsig[-1], type); + + if (ReadN(r, (char *)serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + /* decode server response */ + memcpy(&uptime, serversig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, + serversig[4], serversig[5], serversig[6], serversig[7]); + + if (FP9HandShake && type == 3 && !serversig[4]) + FP9HandShake = FALSE; + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, "Server signature:"); + RTMP_LogHex(RTMP_LOGDEBUG, serversig, RTMP_SIG_SIZE); +#endif + + if (FP9HandShake) { + uint8_t digestResp[SHA256_DIGEST_LENGTH]; + uint8_t *signatureResp = NULL; + + /* we have to use this signature now to find the correct algorithms for + * getting the digest and DH positions */ + int digestPosServer = getdig(serversig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36)) { + RTMP_Log(RTMP_LOGWARNING, "Trying different position for server digest!"); + offalg ^= 1; + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + digestPosServer = getdig(serversig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36)) { + RTMP_Log( + RTMP_LOGERROR, + "Couldn't verify the server digest"); /* continuing anyway will + probably fail */ + return FALSE; + } + } + + /* generate SWFVerification token (SHA256 HMAC hash of decompressed SWF, key + * are the last 32 bytes of the server handshake) */ + if (r->Link.SWFSize) { + const char swfVerify[] = {0x01, 0x01}; + char *vend = r->Link.SWFVerificationResponse + + sizeof(r->Link.SWFVerificationResponse); + + memcpy(r->Link.SWFVerificationResponse, swfVerify, 2); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[2], vend, + r->Link.SWFSize); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[6], vend, + r->Link.SWFSize); + HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH, + &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH], + SHA256_DIGEST_LENGTH, + (uint8_t *)&r->Link.SWFVerificationResponse[10]); + } + + /* do Diffie-Hellmann Key exchange for encrypted RTMP */ + if (encrypted) { + /* compute secret key */ + uint8_t secretKey[128] = {0}; + int len, dhposServer; + + dhposServer = getdh(serversig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: Server DH public key offset: %d", + __FUNCTION__, dhposServer); + len = DHComputeSharedSecretKey(r->Link.dh, &serversig[dhposServer], 128, + secretKey); + if (len < 0) { + RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__); + return FALSE; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Secret key: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128); + + InitRC4Encryption(secretKey, (uint8_t *)&serversig[dhposServer], + (uint8_t *)&clientsig[dhposClient], &keyIn, &keyOut); + } + + reply = client2; +#ifdef _DEBUG + memset(reply, 0xff, RTMP_SIG_SIZE); +#else + ip = (int32_t *)reply; + for (i = 0; i < RTMP_SIG_SIZE / 4; i++) + *ip++ = rand(); +#endif + /* calculate response now */ + signatureResp = reply + RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + + HMACsha256(&serversig[digestPosServer], SHA256_DIGEST_LENGTH, GenuineFPKey, + sizeof(GenuineFPKey), digestResp); + HMACsha256(reply, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, + SHA256_DIGEST_LENGTH, signatureResp); + + /* some info output */ + RTMP_Log(RTMP_LOGDEBUG, + "%s: Calculated digest key from secure key and server digest: ", + __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH); + +#ifdef FP10 + if (type == 8) { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i = 0; i < SHA256_DIGEST_LENGTH; i += 8) + rtmpe8_sig(sig + i, sig + i, dptr[i] % 15); + } +#if 0 + else if (type == 9)) + { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i=0; iLink.rc4keyIn = keyIn; + r->Link.rc4keyOut = keyOut; + + /* update the keystreams */ + if (r->Link.rc4keyIn) { + RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *)buff); + } + + if (r->Link.rc4keyOut) { + RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *)buff); + } + } + } else { + if (memcmp(serversig, clientsig, RTMP_SIG_SIZE) != 0) { + RTMP_Log(RTMP_LOGWARNING, "%s: client signature does not match!", + __FUNCTION__); + } + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Handshaking finished....", __FUNCTION__); + return TRUE; +} + +static int SHandShake(RTMP *r) { + int i, offalg = 0; + int dhposServer = 0; + int digestPosServer = 0; + RC4_handle keyIn = 0; + RC4_handle keyOut = 0; + int FP9HandShake = FALSE; + int encrypted; + int32_t *ip; + + uint8_t clientsig[RTMP_SIG_SIZE]; + uint8_t serverbuf[RTMP_SIG_SIZE + 4], *serversig = serverbuf + 4; + uint8_t type; + uint32_t uptime; + getoff *getdh = NULL, *getdig = NULL; + + if (ReadN(r, (char *)&type, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + if (ReadN(r, (char *)clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Requested : %02X", __FUNCTION__, type); + RTMP_LogHex(RTMP_LOGDEBUG2, clientsig, RTMP_SIG_SIZE); + + if (type == 3) { + encrypted = FALSE; + } else if (type == 6 || type == 8) { + offalg = 1; + encrypted = TRUE; + FP9HandShake = TRUE; + r->Link.protocol |= RTMP_FEATURE_ENC; + /* use FP10 if client is capable */ + if (clientsig[4] == 128) + type = 8; + } else { + RTMP_Log(RTMP_LOGERROR, "%s: Unknown version %02x", __FUNCTION__, type); + return FALSE; + } + + if (!FP9HandShake && clientsig[4]) + FP9HandShake = TRUE; + + serversig[-1] = type; + + r->Link.rc4keyIn = r->Link.rc4keyOut = 0; + + uptime = htonl(RTMP_GetTime()); + memcpy(serversig, &uptime, 4); + + if (FP9HandShake) { + /* Server version */ + serversig[4] = 3; + serversig[5] = 5; + serversig[6] = 1; + serversig[7] = 1; + + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + } else { + memset(&serversig[4], 0, 4); + } + +/* generate random data */ +#ifdef _DEBUG + memset(serversig + 8, 0, RTMP_SIG_SIZE - 8); +#else + ip = (int32_t *)(serversig + 8); + for (i = 2; i < RTMP_SIG_SIZE / 4; i++) + *ip++ = rand(); +#endif + + /* set handshake digest */ + if (FP9HandShake) { + if (encrypted) { + /* generate Diffie-Hellmann parameters */ + r->Link.dh = DHInit(1024); + if (!r->Link.dh) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!", + __FUNCTION__); + return FALSE; + } + + dhposServer = getdh(serversig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, + dhposServer); + + if (!DHGenerateKey(r->Link.dh)) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't generate Diffie-Hellmann public key!", + __FUNCTION__); + return FALSE; + } + + if (!DHGetPublicKey(r->Link.dh, (uint8_t *)&serversig[dhposServer], + 128)) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__); + return FALSE; + } + } + + digestPosServer = + getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */ + RTMP_Log(RTMP_LOGDEBUG, "%s: Server digest offset: %d", __FUNCTION__, + digestPosServer); + + CalculateDigest(digestPosServer, serversig, GenuineFMSKey, 36, + &serversig[digestPosServer]); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Initial server digest: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, serversig + digestPosServer, + SHA256_DIGEST_LENGTH); + } + + RTMP_Log(RTMP_LOGDEBUG2, "Serversig: "); + RTMP_LogHex(RTMP_LOGDEBUG2, serversig, RTMP_SIG_SIZE); + + if (!WriteN(r, (char *)serversig - 1, RTMP_SIG_SIZE + 1)) + return FALSE; + + /* decode client response */ + memcpy(&uptime, clientsig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, + clientsig[4], clientsig[5], clientsig[6], clientsig[7]); + + if (FP9HandShake) { + uint8_t digestResp[SHA256_DIGEST_LENGTH]; + uint8_t *signatureResp = NULL; + + /* we have to use this signature now to find the correct algorithms for + * getting the digest and DH positions */ + int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log(RTMP_LOGWARNING, "Trying different position for client digest!"); + offalg ^= 1; + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + + digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log( + RTMP_LOGERROR, + "Couldn't verify the client digest"); /* continuing anyway will + probably fail */ + return FALSE; + } + } + + /* generate SWFVerification token (SHA256 HMAC hash of decompressed SWF, key + * are the last 32 bytes of the server handshake) */ + if (r->Link.SWFSize) { + const char swfVerify[] = {0x01, 0x01}; + char *vend = r->Link.SWFVerificationResponse + + sizeof(r->Link.SWFVerificationResponse); + + memcpy(r->Link.SWFVerificationResponse, swfVerify, 2); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[2], vend, + r->Link.SWFSize); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[6], vend, + r->Link.SWFSize); + HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH, + &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH], + SHA256_DIGEST_LENGTH, + (uint8_t *)&r->Link.SWFVerificationResponse[10]); + } + + /* do Diffie-Hellmann Key exchange for encrypted RTMP */ + if (encrypted) { + int dhposClient, len; + /* compute secret key */ + uint8_t secretKey[128] = {0}; + + dhposClient = getdh(clientsig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: Client DH public key offset: %d", + __FUNCTION__, dhposClient); + len = DHComputeSharedSecretKey( + r->Link.dh, (uint8_t *)&clientsig[dhposClient], 128, secretKey); + if (len < 0) { + RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__); + return FALSE; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Secret key: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128); + + InitRC4Encryption(secretKey, (uint8_t *)&clientsig[dhposClient], + (uint8_t *)&serversig[dhposServer], &keyIn, &keyOut); + } + + /* calculate response now */ + signatureResp = clientsig + RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + + HMACsha256(&clientsig[digestPosClient], SHA256_DIGEST_LENGTH, GenuineFMSKey, + sizeof(GenuineFMSKey), digestResp); + HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, + SHA256_DIGEST_LENGTH, signatureResp); +#ifdef FP10 + if (type == 8) { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i = 0; i < SHA256_DIGEST_LENGTH; i += 8) + rtmpe8_sig(sig + i, sig + i, dptr[i] % 15); + } +#if 0 + else if (type == 9)) + { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i=0; iLink.rc4keyIn = keyIn; + r->Link.rc4keyOut = keyOut; + + /* update the keystreams */ + if (r->Link.rc4keyIn) { + RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *)buff); + } + + if (r->Link.rc4keyOut) { + RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *)buff); + } + } + } else { + if (memcmp(serversig, clientsig, RTMP_SIG_SIZE) != 0) { + RTMP_Log(RTMP_LOGWARNING, "%s: client signature does not match!", + __FUNCTION__); + } + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Handshaking finished....", __FUNCTION__); + return TRUE; +} diff --git a/LFLiveKit/publish/pili-librtmp/hashswf.c b/LFLiveKit/publish/pili-librtmp/hashswf.c new file mode 100755 index 00000000..28ceeb4a --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/hashswf.c @@ -0,0 +1,626 @@ +/* + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include + +#include "http.h" +#include "log.h" +#include "rtmp_sys.h" + +#ifdef CRYPTO +#ifdef USE_POLARSSL +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX sha2_context +#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) +#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + sha2_hmac_finish(&ctx, dig) +#define HMAC_close(ctx) +#elif defined(USE_GNUTLS) +#include +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX gcry_md_hd_t +#define HMAC_setup(ctx, key, len) \ + gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ + gcry_md_setkey(ctx, key, len) +#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + memcpy(dig, gcry_md_read(ctx, 0), dlen) +#define HMAC_close(ctx) gcry_md_close(ctx) +#else /* USE_OPENSSL */ +#include +#include +#include +#include +#define HMAC_setup(ctx, key, len) \ + HMAC_CTX_init(&ctx); \ + HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0) +#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len) +#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen); +#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx) +#endif + +extern void RTMP_TLS_Init(); +extern TLS_CTX RTMP_TLS_ctx; + +#endif /* CRYPTO */ + +#include + +#define AGENT "Mozilla/5.0" + +HTTPResult + HTTP_get(struct HTTP_ctx *http, const char *url, HTTP_read_callback *cb) { + char *host, *path; + char *p1, *p2; + char hbuf[256]; + int port = 80; +#ifdef CRYPTO + int ssl = 0; +#endif + int hlen, flen = 0; + int rc, i; + int len_known; + HTTPResult ret = HTTPRES_OK; + // struct sockaddr_in sa; + PILI_RTMPSockBuf sb = {0}; + + http->status = -1; + + // memset(&sa, 0, sizeof(struct sockaddr_in)); + // sa.sin_family = AF_INET; + + /* we only handle http here */ + if (strncasecmp(url, "http", 4)) + return HTTPRES_BAD_REQUEST; + + if (url[4] == 's') { +#ifdef CRYPTO + ssl = 1; + port = 443; + if (!RTMP_TLS_ctx) + RTMP_TLS_Init(); +#else + return HTTPRES_BAD_REQUEST; +#endif + } + + p1 = strchr(url + 4, ':'); + if (!p1 || strncmp(p1, "://", 3)) + return HTTPRES_BAD_REQUEST; + + host = p1 + 3; + path = strchr(host, '/'); + hlen = path - host; + strncpy(hbuf, host, hlen); + hbuf[hlen] = '\0'; + host = hbuf; + p1 = strrchr(host, ':'); + if (p1) { + *p1++ = '\0'; + port = atoi(p1); + } + + // sa.sin_addr.s_addr = inet_addr(host); + // if (sa.sin_addr.s_addr == INADDR_NONE) + // { + // struct hostent *hp = gethostbyname(host); + // if (!hp || !hp->h_addr) + // return HTTPRES_LOST_CONNECTION; + // sa.sin_addr = *(struct in_addr *)hp->h_addr; + // } + // sa.sin_port = htons(port); + struct addrinfo hints = {0}, *ai, *cur_ai; + char portstr[10]; + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + snprintf(portstr, sizeof(portstr), "%d", port); + ret = getaddrinfo(host, portstr, &hints, &ai); + if (ret != 0) { + return HTTPRES_LOST_CONNECTION; + } + + cur_ai = ai; + + sb.sb_socket = socket(cur_ai->ai_family, + cur_ai->ai_socktype, + cur_ai->ai_protocol); + // sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sb.sb_socket == -1) { + freeaddrinfo(ai); + return HTTPRES_LOST_CONNECTION; + } + i = sprintf(sb.sb_buf, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s\r\nReferrer: %.*s\r\n", + path, AGENT, host, (int)(path - url + 1), url); + if (http->date[0]) + i += sprintf(sb.sb_buf + i, "If-Modified-Since: %s\r\n", http->date); + i += sprintf(sb.sb_buf + i, "\r\n"); + + if (cur_ai->ai_family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)cur_ai->ai_addr; + in6->sin6_port = htons(port); + } + + if (connect(sb.sb_socket, cur_ai->ai_addr, cur_ai->ai_addrlen) < 0) { + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } +#ifdef CRYPTO + if (ssl) { +#ifdef NO_SSL + RTMP_Log(RTMP_LOGERROR, "%s, No SSL/TLS support", __FUNCTION__); + ret = HTTPRES_BAD_REQUEST; + goto leave; +#else + TLS_client(RTMP_TLS_ctx, sb.sb_ssl); + TLS_setfd(sb.sb_ssl, sb.sb_socket); + if ((i = TLS_connect(sb.sb_ssl)) < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } +#endif + } +#endif + PILI_RTMPSockBuf_Send(&sb, sb.sb_buf, i); + +/* set timeout */ +#define HTTP_TIMEOUT 5 + { + SET_RCVTIMEO(tv, HTTP_TIMEOUT); + if (setsockopt(sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { + RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %ds failed!", + __FUNCTION__, HTTP_TIMEOUT); + } + } + + sb.sb_size = 0; + sb.sb_timedout = FALSE; + if (PILI_RTMPSockBuf_Fill(&sb, HTTP_TIMEOUT) < 1) { + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } + if (strncmp(sb.sb_buf, "HTTP/1", 6)) { + ret = HTTPRES_BAD_REQUEST; + goto leave; + } + + p1 = strchr(sb.sb_buf, ' '); + rc = atoi(p1 + 1); + http->status = rc; + + if (rc >= 300) { + if (rc == 304) { + ret = HTTPRES_OK_NOT_MODIFIED; + goto leave; + } else if (rc == 404) + ret = HTTPRES_NOT_FOUND; + else if (rc >= 500) + ret = HTTPRES_SERVER_ERROR; + else if (rc >= 400) + ret = HTTPRES_BAD_REQUEST; + else + ret = HTTPRES_REDIRECTED; + } + + p1 = memchr(sb.sb_buf, '\n', sb.sb_size); + if (!p1) { + ret = HTTPRES_BAD_REQUEST; + goto leave; + } + sb.sb_start = p1 + 1; + sb.sb_size -= sb.sb_start - sb.sb_buf; + + while ((p2 = memchr(sb.sb_start, '\r', sb.sb_size))) { + if (*sb.sb_start == '\r') { + sb.sb_start += 2; + sb.sb_size -= 2; + break; + } else if (!strncasecmp(sb.sb_start, "Content-Length: ", sizeof("Content-Length: ") - 1)) { + flen = atoi(sb.sb_start + sizeof("Content-Length: ") - 1); + } else if (!strncasecmp(sb.sb_start, "Last-Modified: ", sizeof("Last-Modified: ") - 1)) { + *p2 = '\0'; + strcpy(http->date, sb.sb_start + sizeof("Last-Modified: ") - 1); + } + p2 += 2; + sb.sb_size -= p2 - sb.sb_start; + sb.sb_start = p2; + if (sb.sb_size < 1) { + if (PILI_RTMPSockBuf_Fill(&sb, HTTP_TIMEOUT) < 1) { + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } + } + } + + len_known = flen > 0; + while ((!len_known || flen > 0) && + (sb.sb_size > 0 || PILI_RTMPSockBuf_Fill(&sb, HTTP_TIMEOUT) > 0)) { + cb(sb.sb_start, 1, sb.sb_size, http->data); + if (len_known) + flen -= sb.sb_size; + http->size += sb.sb_size; + sb.sb_size = 0; + } + + if (flen > 0) + ret = HTTPRES_LOST_CONNECTION; + +leave: + PILI_RTMPSockBuf_Close(&sb); + freeaddrinfo(ai); + return ret; +} + +#ifdef CRYPTO + +#define CHUNK 16384 + +struct info { + z_stream *zs; + HMAC_CTX ctx; + int first; + int zlib; + int size; +}; + +static size_t + swfcrunch(void *ptr, size_t size, size_t nmemb, void *stream) { + struct info *i = stream; + char *p = ptr; + size_t len = size * nmemb; + + if (i->first) { + i->first = 0; + /* compressed? */ + if (!strncmp(p, "CWS", 3)) { + *p = 'F'; + i->zlib = 1; + } + HMAC_crunch(i->ctx, (unsigned char *)p, 8); + p += 8; + len -= 8; + i->size = 8; + } + + if (i->zlib) { + unsigned char out[CHUNK]; + i->zs->next_in = (unsigned char *)p; + i->zs->avail_in = len; + do { + i->zs->avail_out = CHUNK; + i->zs->next_out = out; + inflate(i->zs, Z_NO_FLUSH); + len = CHUNK - i->zs->avail_out; + i->size += len; + HMAC_crunch(i->ctx, out, len); + } while (i->zs->avail_out == 0); + } else { + i->size += len; + HMAC_crunch(i->ctx, (unsigned char *)p, len); + } + return size * nmemb; +} + +static int tzoff; +static int tzchecked; + +#define JAN02_1980 318340800 + +static const char *monthtab[12] = {"Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; +static const char *days[] = + {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; + +/* Parse an HTTP datestamp into Unix time */ +static time_t + make_unix_time(char *s) { + struct tm time; + int i, ysub = 1900, fmt = 0; + char *month; + char *n; + time_t res; + + if (s[3] != ' ') { + fmt = 1; + if (s[3] != ',') + ysub = 0; + } + for (n = s; *n; ++n) + if (*n == '-' || *n == ':') + *n = ' '; + + time.tm_mon = 0; + n = strchr(s, ' '); + if (fmt) { + /* Day, DD-MMM-YYYY HH:MM:SS GMT */ + time.tm_mday = strtol(n + 1, &n, 0); + month = n + 1; + n = strchr(month, ' '); + time.tm_year = strtol(n + 1, &n, 0); + time.tm_hour = strtol(n + 1, &n, 0); + time.tm_min = strtol(n + 1, &n, 0); + time.tm_sec = strtol(n + 1, NULL, 0); + } else { + /* Unix ctime() format. Does not conform to HTTP spec. */ + /* Day MMM DD HH:MM:SS YYYY */ + month = n + 1; + n = strchr(month, ' '); + while (isspace(*n)) + n++; + time.tm_mday = strtol(n, &n, 0); + time.tm_hour = strtol(n + 1, &n, 0); + time.tm_min = strtol(n + 1, &n, 0); + time.tm_sec = strtol(n + 1, &n, 0); + time.tm_year = strtol(n + 1, NULL, 0); + } + if (time.tm_year > 100) + time.tm_year -= ysub; + + for (i = 0; i < 12; i++) + if (!strncasecmp(month, monthtab[i], 3)) { + time.tm_mon = i; + break; + } + time.tm_isdst = 0; /* daylight saving is never in effect in GMT */ + + /* this is normally the value of extern int timezone, but some + * braindead C libraries don't provide it. + */ + if (!tzchecked) { + struct tm *tc; + time_t then = JAN02_1980; + tc = localtime(&then); + tzoff = (12 - tc->tm_hour) * 3600 + tc->tm_min * 60 + tc->tm_sec; + tzchecked = 1; + } + res = mktime(&time); + /* Unfortunately, mktime() assumes the input is in local time, + * not GMT, so we have to correct it here. + */ + if (res != -1) + res += tzoff; + return res; +} + +/* Convert a Unix time to a network time string + * Weekday, DD-MMM-YYYY HH:MM:SS GMT + */ +void strtime(time_t *t, char *s) { + struct tm *tm; + + tm = gmtime((time_t *)t); + sprintf(s, "%s, %02d %s %d %02d:%02d:%02d GMT", + days[tm->tm_wday], tm->tm_mday, monthtab[tm->tm_mon], + tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec); +} + +#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) + +int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, + int age) { + FILE *f = NULL; + char *path, date[64], cctim[64]; + long pos = 0; + time_t ctim = -1, cnow; + int i, got = 0, ret = 0; + unsigned int hlen; + struct info in = {0}; + struct HTTP_ctx http = {0}; + HTTPResult httpres; + z_stream zs = {0}; + AVal home, hpre; + + date[0] = '\0'; +#ifdef _WIN32 +#ifdef _XBOX + hpre.av_val = "Q:"; + hpre.av_len = 2; + home.av_val = "\\UserData"; +#else + hpre.av_val = getenv("HOMEDRIVE"); + hpre.av_len = strlen(hpre.av_val); + home.av_val = getenv("HOMEPATH"); +#endif +#define DIRSEP "\\" + +#else /* !_WIN32 */ + hpre.av_val = ""; + hpre.av_len = 0; + home.av_val = getenv("HOME"); +#define DIRSEP "/" +#endif + if (!home.av_val) + home.av_val = "."; + home.av_len = strlen(home.av_val); + + /* SWF hash info is cached in a fixed-format file. + * url: + * ctim: HTTP datestamp of when we last checked it. + * date: HTTP datestamp of the SWF's last modification. + * size: SWF size in hex + * hash: SWF hash in hex + * + * These fields must be present in this order. All fields + * besides URL are fixed size. + */ + path = malloc(hpre.av_len + home.av_len + sizeof(DIRSEP ".swfinfo")); + sprintf(path, "%s%s" DIRSEP ".swfinfo", hpre.av_val, home.av_val); + + f = fopen(path, "r+"); + while (f) { + char buf[4096], *file, *p; + + file = strchr(url, '/'); + if (!file) + break; + file += 2; + file = strchr(file, '/'); + if (!file) + break; + file++; + hlen = file - url; + p = strrchr(file, '/'); + if (p) + file = p; + else + file--; + + while (fgets(buf, sizeof(buf), f)) { + char *r1; + + got = 0; + + if (strncmp(buf, "url: ", 5)) + continue; + if (strncmp(buf + 5, url, hlen)) + continue; + r1 = strrchr(buf, '/'); + i = strlen(r1); + r1[--i] = '\0'; + if (strncmp(r1, file, i)) + continue; + pos = ftell(f); + while (got < 4 && fgets(buf, sizeof(buf), f)) { + if (!strncmp(buf, "size: ", 6)) { + *size = strtol(buf + 6, NULL, 16); + got++; + } else if (!strncmp(buf, "hash: ", 6)) { + unsigned char *ptr = hash, *in = (unsigned char *)buf + 6; + int l = strlen((char *)in) - 1; + for (i = 0; i < l; i += 2) + *ptr++ = (HEX2BIN(in[i]) << 4) | HEX2BIN(in[i + 1]); + got++; + } else if (!strncmp(buf, "date: ", 6)) { + buf[strlen(buf) - 1] = '\0'; + strncpy(date, buf + 6, sizeof(date)); + got++; + } else if (!strncmp(buf, "ctim: ", 6)) { + buf[strlen(buf) - 1] = '\0'; + ctim = make_unix_time(buf + 6); + got++; + } else if (!strncmp(buf, "url: ", 5)) + break; + } + break; + } + break; + } + + cnow = time(NULL); + /* If we got a cache time, see if it's young enough to use directly */ + if (age && ctim > 0) { + ctim = cnow - ctim; + ctim /= 3600 * 24; /* seconds to days */ + if (ctim < age) /* ok, it's new enough */ + goto out; + } + + in.first = 1; + HMAC_setup(in.ctx, "Genuine Adobe Flash Player 001", 30); + inflateInit(&zs); + in.zs = &zs; + + http.date = date; + http.data = ∈ + + httpres = HTTP_get(&http, url, swfcrunch); + + inflateEnd(&zs); + + if (httpres != HTTPRES_OK && httpres != HTTPRES_OK_NOT_MODIFIED) { + ret = -1; + if (httpres == HTTPRES_LOST_CONNECTION) + RTMP_Log(RTMP_LOGERROR, "%s: connection lost while downloading swfurl %s", + __FUNCTION__, url); + else if (httpres == HTTPRES_NOT_FOUND) + RTMP_Log(RTMP_LOGERROR, "%s: swfurl %s not found", __FUNCTION__, url); + else + RTMP_Log(RTMP_LOGERROR, "%s: couldn't contact swfurl %s (HTTP error %d)", + __FUNCTION__, url, http.status); + } else { + if (got && pos) + fseek(f, pos, SEEK_SET); + else { + char *q; + if (!f) + f = fopen(path, "w"); + if (!f) { + int err = errno; + RTMP_Log(RTMP_LOGERROR, + "%s: couldn't open %s for writing, errno %d (%s)", + __FUNCTION__, path, err, strerror(err)); + ret = -1; + goto out; + } + fseek(f, 0, SEEK_END); + q = strchr(url, '?'); + if (q) + i = q - url; + else + i = strlen(url); + + fprintf(f, "url: %.*s\n", i, url); + } + strtime(&cnow, cctim); + fprintf(f, "ctim: %s\n", cctim); + + if (!in.first) { + HMAC_finish(in.ctx, hash, hlen); + *size = in.size; + + fprintf(f, "date: %s\n", date); + fprintf(f, "size: %08x\n", in.size); + fprintf(f, "hash: "); + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) + fprintf(f, "%02x", hash[i]); + fprintf(f, "\n"); + } + } + HMAC_close(in.ctx); +out: + free(path); + if (f) + fclose(f); + return ret; +} +#else +int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, + int age) { + return -1; +} +#endif diff --git a/LFLiveKit/publish/pili-librtmp/http.h b/LFLiveKit/publish/pili-librtmp/http.h new file mode 100755 index 00000000..1eb7a462 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/http.h @@ -0,0 +1,49 @@ +#ifndef __RTMP_HTTP_H__ +#define __RTMP_HTTP_H__ +/* + * Copyright (C) 2010 Howard Chu + * Copyright (C) 2010 Antti Ajanki + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +typedef enum { + HTTPRES_OK, /* result OK */ + HTTPRES_OK_NOT_MODIFIED, /* not modified since last request */ + HTTPRES_NOT_FOUND, /* not found */ + HTTPRES_BAD_REQUEST, /* client error */ + HTTPRES_SERVER_ERROR, /* server reported an error */ + HTTPRES_REDIRECTED, /* resource has been moved */ + HTTPRES_LOST_CONNECTION /* connection lost while waiting for data */ +} HTTPResult; + +struct HTTP_ctx { + char *date; + int size; + int status; + void *data; +}; + +typedef size_t(HTTP_read_callback)(void *ptr, size_t size, size_t nmemb, + void *stream); + +HTTPResult HTTP_get(struct HTTP_ctx *http, const char *url, + HTTP_read_callback *cb); + +#endif diff --git a/LFLiveKit/publish/pili-librtmp/log.c b/LFLiveKit/publish/pili-librtmp/log.c new file mode 100755 index 00000000..d3934366 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/log.c @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include + +#include "log.h" +#include "rtmp_sys.h" + +#define MAX_PRINT_LEN 2048 + +RTMP_LogLevel RTMP_debuglevel = RTMP_LOGERROR; + +static int neednl; + +static FILE *fmsg; + +static RTMP_LogCallback rtmp_log_default, *cb = rtmp_log_default; + +static const char *levels[] = { + "CRIT", "ERROR", "WARNING", "INFO", + "DEBUG", "DEBUG2"}; + +static void rtmp_log_default(int level, const char *format, va_list vl) { + char str[MAX_PRINT_LEN] = ""; + + vsnprintf(str, MAX_PRINT_LEN - 1, format, vl); + + /* Filter out 'no-name' */ + if (RTMP_debuglevel < RTMP_LOGALL && strstr(str, "no-name") != NULL) + return; + + if (!fmsg) fmsg = stderr; + + if (level <= RTMP_debuglevel) { + if (neednl) { + putc('\n', fmsg); + neednl = 0; + } + fprintf(fmsg, "%s: %s\n", levels[level], str); +#ifdef _DEBUG + fflush(fmsg); +#endif + } +} + +void RTMP_LogSetOutput(FILE *file) { + fmsg = file; +} + +void RTMP_LogSetLevel(RTMP_LogLevel level) { + RTMP_debuglevel = level; +} + +void RTMP_LogSetCallback(RTMP_LogCallback *cbp) { + cb = cbp; +} + +RTMP_LogLevel RTMP_LogGetLevel() { + return RTMP_debuglevel; +} + +void RTMP_Log(int level, const char *format, ...) { + va_list args; + va_start(args, format); + cb(level, format, args); + va_end(args); +} + +static const char hexdig[] = "0123456789abcdef"; + +void RTMP_LogHex(int level, const uint8_t *data, unsigned long len) { + unsigned long i; + char line[50], *ptr; + + if (level > RTMP_debuglevel) + return; + + ptr = line; + + for (i = 0; i < len; i++) { + *ptr++ = hexdig[0x0f & (data[i] >> 4)]; + *ptr++ = hexdig[0x0f & data[i]]; + if ((i & 0x0f) == 0x0f) { + *ptr = '\0'; + ptr = line; + RTMP_Log(level, "%s", line); + } else { + *ptr++ = ' '; + } + } + if (i & 0x0f) { + *ptr = '\0'; + RTMP_Log(level, "%s", line); + } +} + +void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len) { +#define BP_OFFSET 9 +#define BP_GRAPH 60 +#define BP_LEN 80 + char line[BP_LEN]; + unsigned long i; + + if (!data || level > RTMP_debuglevel) + return; + + /* in case len is zero */ + line[0] = '\0'; + + for (i = 0; i < len; i++) { + int n = i % 16; + unsigned off; + + if (!n) { + if (i) RTMP_Log(level, "%s", line); + memset(line, ' ', sizeof(line) - 2); + line[sizeof(line) - 2] = '\0'; + + off = i % 0x0ffffU; + + line[2] = hexdig[0x0f & (off >> 12)]; + line[3] = hexdig[0x0f & (off >> 8)]; + line[4] = hexdig[0x0f & (off >> 4)]; + line[5] = hexdig[0x0f & off]; + line[6] = ':'; + } + + off = BP_OFFSET + n * 3 + ((n >= 8) ? 1 : 0); + line[off] = hexdig[0x0f & (data[i] >> 4)]; + line[off + 1] = hexdig[0x0f & data[i]]; + + off = BP_GRAPH + n + ((n >= 8) ? 1 : 0); + + if (isprint(data[i])) { + line[BP_GRAPH + n] = data[i]; + } else { + line[BP_GRAPH + n] = '.'; + } + } + + RTMP_Log(level, "%s", line); +} + +/* These should only be used by apps, never by the library itself */ +void RTMP_LogPrintf(const char *format, ...) { + char str[MAX_PRINT_LEN] = ""; + int len; + va_list args; + va_start(args, format); + len = vsnprintf(str, MAX_PRINT_LEN - 1, format, args); + va_end(args); + + if (RTMP_debuglevel == RTMP_LOGCRIT) + return; + + if (!fmsg) fmsg = stderr; + + if (neednl) { + putc('\n', fmsg); + neednl = 0; + } + + if (len > MAX_PRINT_LEN - 1) + len = MAX_PRINT_LEN - 1; + fprintf(fmsg, "%s", str); + if (str[len - 1] == '\n') + fflush(fmsg); +} + +void RTMP_LogStatus(const char *format, ...) { + char str[MAX_PRINT_LEN] = ""; + va_list args; + va_start(args, format); + vsnprintf(str, MAX_PRINT_LEN - 1, format, args); + va_end(args); + + if (RTMP_debuglevel == RTMP_LOGCRIT) + return; + + if (!fmsg) fmsg = stderr; + + fprintf(fmsg, "%s", str); + fflush(fmsg); + neednl = 1; +} diff --git a/LFLiveKit/publish/pili-librtmp/log.h b/LFLiveKit/publish/pili-librtmp/log.h new file mode 100755 index 00000000..f7daf375 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/log.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#ifndef __RTMP_LOG_H__ +#define __RTMP_LOG_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +/* Enable this to get full debugging output */ +/* #define _DEBUG */ + +#ifdef _DEBUG +#undef NODEBUG +#endif + +typedef enum { + RTMP_LOGCRIT = 0, + RTMP_LOGERROR, + RTMP_LOGWARNING, + RTMP_LOGINFO, + RTMP_LOGDEBUG, + RTMP_LOGDEBUG2, + RTMP_LOGALL +} RTMP_LogLevel; + +extern RTMP_LogLevel RTMP_debuglevel; + +typedef void(RTMP_LogCallback)(int level, const char *fmt, va_list); +void RTMP_LogSetCallback(RTMP_LogCallback *cb); +void RTMP_LogSetOutput(FILE *file); +void RTMP_LogPrintf(const char *format, ...); +void RTMP_LogStatus(const char *format, ...); +void RTMP_Log(int level, const char *format, ...); +void RTMP_LogHex(int level, const uint8_t *data, unsigned long len); +void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len); +void RTMP_LogSetLevel(RTMP_LogLevel lvl); +RTMP_LogLevel RTMP_LogGetLevel(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/LFLiveKit/publish/pili-librtmp/parseurl.c b/LFLiveKit/publish/pili-librtmp/parseurl.c new file mode 100755 index 00000000..0e50352b --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/parseurl.c @@ -0,0 +1,312 @@ +/* + * Copyright (C) 2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include + +#include +#include + +#include "log.h" +#include "rtmp_sys.h" + +int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, unsigned int *port, + AVal *playpath, AVal *app, AVal *domainName) { + char *p, *end, *col, *ques, *slash; + + RTMP_Log(RTMP_LOGDEBUG, "Parsing..."); + + *protocol = RTMP_PROTOCOL_RTMP; + *port = 0; + playpath->av_len = 0; + playpath->av_val = NULL; + app->av_len = 0; + app->av_val = NULL; + + /* Old School Parsing */ + + /* look for usual :// pattern */ + p = strstr(url, "://"); + if (!p) { + RTMP_Log(RTMP_LOGERROR, "RTMP URL: No :// in url!"); + return FALSE; + } + { + int len = (int)(p - url); + + if (len == 4 && strncasecmp(url, "rtmp", 4) == 0) + *protocol = RTMP_PROTOCOL_RTMP; + else if (len == 5 && strncasecmp(url, "rtmpt", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMPT; + else if (len == 5 && strncasecmp(url, "rtmps", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMPS; + else if (len == 5 && strncasecmp(url, "rtmpe", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMPE; + else if (len == 5 && strncasecmp(url, "rtmfp", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMFP; + else if (len == 6 && strncasecmp(url, "rtmpte", 6) == 0) + *protocol = RTMP_PROTOCOL_RTMPTE; + else if (len == 6 && strncasecmp(url, "rtmpts", 6) == 0) + *protocol = RTMP_PROTOCOL_RTMPTS; + else { + RTMP_Log(RTMP_LOGWARNING, "Unknown protocol!\n"); + goto parsehost; + } + } + + RTMP_Log(RTMP_LOGDEBUG, "Parsed protocol: %d", *protocol); + +parsehost: + /* let's get the hostname */ + p += 3; + + /* check for sudden death */ + if (*p == 0) { + RTMP_Log(RTMP_LOGWARNING, "No hostname in URL!"); + return FALSE; + } + + end = p + strlen(p); + col = strchr(p, ':'); + ques = strchr(p, '?'); + slash = strchr(p, '/'); + + { + int hostlen; + if (slash) + hostlen = slash - p; + else + hostlen = end - p; + if (col && col - p < hostlen) + hostlen = col - p; + + if (hostlen < 256) { + host->av_val = p; + host->av_len = hostlen; + RTMP_Log(RTMP_LOGDEBUG, "Parsed host : %.*s", hostlen, host->av_val); + } else { + RTMP_Log(RTMP_LOGWARNING, "Hostname exceeds 255 characters!"); + } + + p += hostlen; + } + + /* get the port number if available */ + if (*p == ':') { + unsigned int p2; + p++; + p2 = atoi(p); + if (p2 > 65535) { + RTMP_Log(RTMP_LOGWARNING, "Invalid port number!"); + } else { + *port = p2; + } + } + + if (!slash) { + RTMP_Log(RTMP_LOGWARNING, "No application or playpath in URL!"); + return TRUE; + } + p = slash + 1; + + /** parse domain + + * rtmp://host:[port]/app/...?domain=a.com + + * use domain to replace host + + */ + + if (domainName != NULL && ques != NULL) { + char *domain = strstr(ques, "domain="); + if (domain) { + end = domain - 1; + domain += 7; //skip "domain=" + char *domain_end = strchr(domain, '&'); + int host_len = 0; + if (domain_end) { + host_len = domain_end - domain; + } else { + host_len = strlen(domain); + } + if (host_len < 256) { + domainName->av_val = domain; + domainName->av_len = host_len; + RTMP_Log(RTMP_LOGDEBUG, "Parsed host and domain : %.*s", host_len, host->av_val); + } + } + } + + { + /* parse application + * + * rtmp://host[:port]/app[/appinstance][/...] + * application = app[/appinstance] + */ + + char *slash2, *slash3 = NULL; + int applen, appnamelen; + + slash2 = strchr(p, '/'); + if (slash2) + slash3 = strchr(slash2 + 1, '/'); + + applen = end - p; /* ondemand, pass all parameters as app */ + appnamelen = applen; /* ondemand length */ + + if (ques && strstr(p, "slist=")) { /* whatever it is, the '?' and slist= means we need to use everything as app and parse plapath from slist= */ + appnamelen = ques - p; + } else if (strncmp(p, "ondemand/", 9) == 0) { + /* app = ondemand/foobar, only pass app=ondemand */ + applen = 8; + appnamelen = 8; + } else { /* app!=ondemand, so app is app[/appinstance] */ + if (slash3) + appnamelen = slash3 - p; + else if (slash2) + appnamelen = slash2 - p; + + applen = appnamelen; + } + + app->av_val = p; + app->av_len = applen; + RTMP_Log(RTMP_LOGDEBUG, "Parsed app : %.*s", applen, p); + + p += appnamelen; + } + + if (*p == '/') + p++; + + if (end - p) { + AVal av = {p, end - p}; + PILI_RTMP_ParsePlaypath(&av, playpath); + } + + return TRUE; +} + +/* + * Extracts playpath from RTMP URL. playpath is the file part of the + * URL, i.e. the part that comes after rtmp://host:port/app/ + * + * Returns the stream name in a format understood by FMS. The name is + * the playpath part of the URL with formatting depending on the stream + * type: + * + * mp4 streams: prepend "mp4:", remove extension + * mp3 streams: prepend "mp3:", remove extension + * flv streams: remove extension + */ +void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out) { + int addMP4 = 0; + int addMP3 = 0; + int subExt = 0; + const char *playpath = in->av_val; + const char *temp, *q, *ext = NULL; + const char *ppstart = playpath; + char *streamname, *destptr, *p; + + int pplen = in->av_len; + + out->av_val = NULL; + out->av_len = 0; + + if ((*ppstart == '?') && + (temp = strstr(ppstart, "slist=")) != 0) { + ppstart = temp + 6; + pplen = strlen(ppstart); + + temp = strchr(ppstart, '&'); + if (temp) { + pplen = temp - ppstart; + } + } + + q = strchr(ppstart, '?'); + if (pplen >= 4) { + if (q) + ext = q - 4; + else + ext = &ppstart[pplen - 4]; + if ((strncmp(ext, ".f4v", 4) == 0) || + (strncmp(ext, ".mp4", 4) == 0)) { + addMP4 = 1; + subExt = 1; + /* Only remove .flv from rtmp URL, not slist params */ + } else if ((ppstart == playpath) && + (strncmp(ext, ".flv", 4) == 0)) { + subExt = 1; + } else if (strncmp(ext, ".mp3", 4) == 0) { + addMP3 = 1; + subExt = 1; + } + } + + streamname = (char *)malloc((pplen + 4 + 1) * sizeof(char)); + if (!streamname) + return; + + destptr = streamname; + if (addMP4) { + if (strncmp(ppstart, "mp4:", 4)) { + strcpy(destptr, "mp4:"); + destptr += 4; + } else { + subExt = 0; + } + } else if (addMP3) { + if (strncmp(ppstart, "mp3:", 4)) { + strcpy(destptr, "mp3:"); + destptr += 4; + } else { + subExt = 0; + } + } + + for (p = (char *)ppstart; pplen > 0;) { + /* skip extension */ + if (subExt && p == ext) { + p += 4; + pplen -= 4; + continue; + } + if (*p == '%') { + unsigned int c; + sscanf(p + 1, "%02x", &c); + *destptr++ = c; + pplen -= 3; + p += 3; + } else { + *destptr++ = *p++; + pplen--; + } + } + *destptr = '\0'; + + out->av_val = streamname; + out->av_len = destptr - streamname; +} + +int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, + unsigned int *port, AVal *playpath, AVal *app) { + return PILI_RTMP_ParseURL2(url, protocol, host, port, playpath, app, NULL); +} diff --git a/LFLiveKit/publish/pili-librtmp/rtmp.c b/LFLiveKit/publish/pili-librtmp/rtmp.c new file mode 100755 index 00000000..c7e0df79 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/rtmp.c @@ -0,0 +1,4331 @@ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * libPILI_RTMP is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * libPILI_RTMP is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libPILI_RTMP see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include +#include + +#include "log.h" +#include "rtmp_sys.h" +#include "time.h" + +#ifdef CRYPTO +#ifdef USE_POLARSSL +#include +#elif defined(USE_GNUTLS) +#include +#else /* USE_OPENSSL */ +#include +#include +#endif +TLS_CTX RTMP_TLS_ctx; +#endif + +#define RTMP_SIG_SIZE 1536 +#define RTMP_LARGE_HEADER_SIZE 12 + +static const int packetSize[] = {12, 8, 4, 1}; + +int PILI_RTMP_ctrlC; +static char reqid[30]; + +const char PILI_RTMPProtocolStrings[][7] = { + "RTMP", + "RTMPT", + "RTMPE", + "RTMPTE", + "RTMPS", + "RTMPTS", + "", + "", + "RTMFP"}; + +const char PILI_RTMPProtocolStringsLower[][7] = { + "rtmp", + "rtmpt", + "rtmpe", + "rtmpte", + "rtmps", + "rtmpts", + "", + "", + "rtmfp"}; + +static const char *RTMPT_cmds[] = { + "open", + "send", + "idle", + "close"}; + +typedef enum { + RTMPT_OPEN = 0, + RTMPT_SEND, + RTMPT_IDLE, + RTMPT_CLOSE +} RTMPTCmd; + +static int DumpMetaData(AMFObject *obj); +static int HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error); +static int SocksNegotiate(PILI_RTMP *r, RTMPError *error); + +static int SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); +static int SendCheckBW(PILI_RTMP *r, RTMPError *error); +static int SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error); +static int SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error); +static int SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error); +static int SendPlay(PILI_RTMP *r, RTMPError *error); +static int SendBytesReceived(PILI_RTMP *r, RTMPError *error); + +#if 0 /* unused */ +static int SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath); +#endif + +static int HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize); +static int HandleMetadata(PILI_RTMP *r, char *body, unsigned int len); +static void HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); + +static int ReadN(PILI_RTMP *r, char *buffer, int n); +static int WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error); + +static void DecodeTEA(AVal *key, AVal *text); + +static int HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len); +static int HTTP_read(PILI_RTMP *r, int fill); + +#ifndef _WIN32 +static int clk_tck; +#endif + +#ifdef CRYPTO +#include "handshake.h" +#endif + +uint32_t + PILI_RTMP_GetTime() { +#ifdef _DEBUG + return 0; +#elif defined(_WIN32) + return timeGetTime(); +#else + struct tms t; + if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK); + return times(&t) * 1000 / clk_tck; +#endif +} + +void PILI_RTMP_UserInterrupt() { + PILI_RTMP_ctrlC = TRUE; +} + +void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p) { + p->m_headerType = 0; + p->m_packetType = 0; + p->m_nChannel = 0; + p->m_nTimeStamp = 0; + p->m_nInfoField2 = 0; + p->m_hasAbsTimestamp = FALSE; + p->m_nBodySize = 0; + p->m_nBytesRead = 0; +} + +int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize) { + char *ptr = calloc(1, nSize + RTMP_MAX_HEADER_SIZE); + if (!ptr) + return FALSE; + p->m_body = ptr + RTMP_MAX_HEADER_SIZE; + p->m_nBytesRead = 0; + return TRUE; +} + +void PILI_RTMPPacket_Free(PILI_RTMPPacket *p) { + if (p->m_body) { + free(p->m_body - RTMP_MAX_HEADER_SIZE); + p->m_body = NULL; + } +} + +void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p) { + RTMP_Log(RTMP_LOGDEBUG, + "PILI_RTMP PACKET: packet type: 0x%02x. channel: 0x%02x. info 1: %d info 2: %d. Body size: %lu. body: 0x%02x", + p->m_packetType, p->m_nChannel, p->m_nTimeStamp, p->m_nInfoField2, + p->m_nBodySize, p->m_body ? (unsigned char)p->m_body[0] : 0); +} + +int PILI_RTMP_LibVersion() { + return RTMP_LIB_VERSION; +} + +void PILI_RTMP_TLS_Init() { +#ifdef CRYPTO +#ifdef USE_POLARSSL + /* Do this regardless of NO_SSL, we use havege for rtmpe too */ + RTMP_TLS_ctx = calloc(1, sizeof(struct tls_ctx)); + havege_init(&RTMP_TLS_ctx->hs); +#elif defined(USE_GNUTLS) && !defined(NO_SSL) + /* Technically we need to initialize libgcrypt ourselves if + * we're not going to call gnutls_global_init(). Ignoring this + * for now. + */ + gnutls_global_init(); + RTMP_TLS_ctx = malloc(sizeof(struct tls_ctx)); + gnutls_certificate_allocate_credentials(&RTMP_TLS_ctx->cred); + gnutls_priority_init(&RTMP_TLS_ctx->prios, "NORMAL", NULL); + gnutls_certificate_set_x509_trust_file(RTMP_TLS_ctx->cred, + "ca.pem", GNUTLS_X509_FMT_PEM); +#elif !defined(NO_SSL) /* USE_OPENSSL */ + /* libcrypto doesn't need anything special */ + SSL_load_error_strings(); + SSL_library_init(); + OpenSSL_add_all_digests(); + RTMP_TLS_ctx = SSL_CTX_new(SSLv23_method()); + SSL_CTX_set_options(RTMP_TLS_ctx, SSL_OP_ALL); + SSL_CTX_set_default_verify_paths(RTMP_TLS_ctx); +#endif +#endif +} + +PILI_RTMP * + PILI_RTMP_Alloc() { + return calloc(1, sizeof(PILI_RTMP)); +} + +void PILI_RTMP_Free(PILI_RTMP *r) { + r->m_errorCallback = NULL; + r->m_userData = NULL; + RTMPError_Free(r->m_error); + r->m_error = NULL; + + free(r); +} + +void PILI_RTMP_Init(PILI_RTMP *r) { +#ifdef CRYPTO + if (!RTMP_TLS_ctx) + RTMP_TLS_Init(); +#endif + + memset(r, 0, sizeof(PILI_RTMP)); + r->m_sb.sb_socket = -1; + r->m_inChunkSize = RTMP_DEFAULT_CHUNKSIZE; + r->m_outChunkSize = RTMP_DEFAULT_CHUNKSIZE; + r->m_nBufferMS = 30000; + r->m_nClientBW = 2500000; + r->m_nClientBW2 = 2; + r->m_nServerBW = 2500000; + r->m_fAudioCodecs = 3191.0; + r->m_fVideoCodecs = 252.0; + r->Link.timeout = 10; + r->Link.send_timeout = 10; + r->Link.swfAge = 30; + + r->m_errorCallback = NULL; + r->m_error = NULL; + r->m_userData = NULL; + r->m_is_closing = 0; + r->m_tcp_nodelay = 1; + + r->m_connCallback = NULL; + r->ip = 0; +} + +void PILI_RTMP_EnableWrite(PILI_RTMP *r) { + r->Link.protocol |= RTMP_FEATURE_WRITE; +} + +double + PILI_RTMP_GetDuration(PILI_RTMP *r) { + return r->m_fDuration; +} + +int PILI_RTMP_IsConnected(PILI_RTMP *r) { + return r->m_sb.sb_socket != -1; +} + +int PILI_RTMP_Socket(PILI_RTMP *r) { + return r->m_sb.sb_socket; +} + +int PILI_RTMP_IsTimedout(PILI_RTMP *r) { + return r->m_sb.sb_timedout; +} + +void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size) { + r->m_nBufferMS = size; +} + +void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error) { + PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, error); +} + +#undef OSS +#ifdef _WIN32 +#define OSS "WIN" +#elif defined(__sun__) +#define OSS "SOL" +#elif defined(__APPLE__) +#define OSS "MAC" +#elif defined(__linux__) +#define OSS "LNX" +#else +#define OSS "GNU" +#endif +#define DEF_VERSTR OSS " 10,0,32,18" +static const char DEFAULT_FLASH_VER[] = DEF_VERSTR; +const AVal RTMP_DefaultFlashVer = + {(char *)DEFAULT_FLASH_VER, sizeof(DEFAULT_FLASH_VER) - 1}; + +void PILI_RTMP_SetupStream(PILI_RTMP *r, + int protocol, + AVal *host, + unsigned int port, + AVal *sockshost, + AVal *playpath, + AVal *tcUrl, + AVal *swfUrl, + AVal *pageUrl, + AVal *app, + AVal *auth, + AVal *swfSHA256Hash, + uint32_t swfSize, + AVal *flashVer, + AVal *subscribepath, + int dStart, + int dStop, int bLiveStream, long int timeout) { + RTMP_Log(RTMP_LOGDEBUG, "Protocol : %s", PILI_RTMPProtocolStrings[protocol & 7]); + RTMP_Log(RTMP_LOGDEBUG, "Hostname : %.*s", host->av_len, host->av_val); + RTMP_Log(RTMP_LOGDEBUG, "Port : %d", port); + RTMP_Log(RTMP_LOGDEBUG, "Playpath : %s", playpath->av_val); + + if (tcUrl && tcUrl->av_val) + RTMP_Log(RTMP_LOGDEBUG, "tcUrl : %s", tcUrl->av_val); + if (swfUrl && swfUrl->av_val) + RTMP_Log(RTMP_LOGDEBUG, "swfUrl : %s", swfUrl->av_val); + if (pageUrl && pageUrl->av_val) + RTMP_Log(RTMP_LOGDEBUG, "pageUrl : %s", pageUrl->av_val); + if (app && app->av_val) + RTMP_Log(RTMP_LOGDEBUG, "app : %.*s", app->av_len, app->av_val); + if (auth && auth->av_val) + RTMP_Log(RTMP_LOGDEBUG, "auth : %s", auth->av_val); + if (subscribepath && subscribepath->av_val) + RTMP_Log(RTMP_LOGDEBUG, "subscribepath : %s", subscribepath->av_val); + if (flashVer && flashVer->av_val) + RTMP_Log(RTMP_LOGDEBUG, "flashVer : %s", flashVer->av_val); + if (dStart > 0) + RTMP_Log(RTMP_LOGDEBUG, "StartTime : %d msec", dStart); + if (dStop > 0) + RTMP_Log(RTMP_LOGDEBUG, "StopTime : %d msec", dStop); + + RTMP_Log(RTMP_LOGDEBUG, "live : %s", bLiveStream ? "yes" : "no"); + RTMP_Log(RTMP_LOGDEBUG, "timeout : %d sec", timeout); + +#ifdef CRYPTO + if (swfSHA256Hash != NULL && swfSize > 0) { + memcpy(r->Link.SWFHash, swfSHA256Hash->av_val, sizeof(r->Link.SWFHash)); + r->Link.SWFSize = swfSize; + RTMP_Log(RTMP_LOGDEBUG, "SWFSHA256:"); + RTMP_LogHex(RTMP_LOGDEBUG, r->Link.SWFHash, sizeof(r->Link.SWFHash)); + RTMP_Log(RTMP_LOGDEBUG, "SWFSize : %lu", r->Link.SWFSize); + } else { + r->Link.SWFSize = 0; + } +#endif + + if (sockshost->av_len) { + const char *socksport = strchr(sockshost->av_val, ':'); + char *hostname = strdup(sockshost->av_val); + + if (socksport) + hostname[socksport - sockshost->av_val] = '\0'; + r->Link.sockshost.av_val = hostname; + r->Link.sockshost.av_len = strlen(hostname); + + r->Link.socksport = socksport ? atoi(socksport + 1) : 1080; + RTMP_Log(RTMP_LOGDEBUG, "Connecting via SOCKS proxy: %s:%d", r->Link.sockshost.av_val, + r->Link.socksport); + } else { + r->Link.sockshost.av_val = NULL; + r->Link.sockshost.av_len = 0; + r->Link.socksport = 0; + } + + if (tcUrl && tcUrl->av_len) + r->Link.tcUrl = *tcUrl; + if (swfUrl && swfUrl->av_len) + r->Link.swfUrl = *swfUrl; + if (pageUrl && pageUrl->av_len) + r->Link.pageUrl = *pageUrl; + if (app && app->av_len) + r->Link.app = *app; + if (auth && auth->av_len) { + r->Link.auth = *auth; + r->Link.lFlags |= RTMP_LF_AUTH; + } + if (flashVer && flashVer->av_len) + r->Link.flashVer = *flashVer; + else + r->Link.flashVer = RTMP_DefaultFlashVer; + if (subscribepath && subscribepath->av_len) + r->Link.subscribepath = *subscribepath; + r->Link.seekTime = dStart; + r->Link.stopTime = dStop; + if (bLiveStream) + r->Link.lFlags |= RTMP_LF_LIVE; + r->Link.timeout = timeout; + + r->Link.protocol = protocol; + r->Link.hostname = *host; + r->Link.port = port; + r->Link.playpath = *playpath; + + if (r->Link.port == 0) { + if (protocol & RTMP_FEATURE_SSL) + r->Link.port = 443; + else if (protocol & RTMP_FEATURE_HTTP) + r->Link.port = 80; + else + r->Link.port = 1935; + } +} + +enum { OPT_STR = 0, + OPT_INT, + OPT_BOOL, + OPT_CONN }; +static const char *optinfo[] = { + "string", "integer", "boolean", "AMF"}; + +#define OFF(x) offsetof(struct PILI_RTMP, x) + +static struct urlopt { + AVal name; + off_t off; + int otype; + int omisc; + char *use; +} options[] = { + {AVC("socks"), OFF(Link.sockshost), OPT_STR, 0, + "Use the specified SOCKS proxy"}, + {AVC("app"), OFF(Link.app), OPT_STR, 0, + "Name of target app on server"}, + {AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0, + "URL to played stream"}, + {AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0, + "URL of played media's web page"}, + {AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0, + "URL to player SWF file"}, + {AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0, + "Flash version string (default " DEF_VERSTR ")"}, + {AVC("conn"), OFF(Link.extras), OPT_CONN, 0, + "Append arbitrary AMF data to Connect message"}, + {AVC("playpath"), OFF(Link.playpath), OPT_STR, 0, + "Path to target media on server"}, + {AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST, + "Set playlist before play command"}, + {AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE, + "Stream is live, no seeking possible"}, + {AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0, + "Stream to subscribe to"}, + {AVC("token"), OFF(Link.token), OPT_STR, 0, + "Key for SecureToken response"}, + {AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV, + "Perform SWF Verification"}, + {AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0, + "Number of days to use cached SWF hash"}, + {AVC("start"), OFF(Link.seekTime), OPT_INT, 0, + "Stream start position in milliseconds"}, + {AVC("stop"), OFF(Link.stopTime), OPT_INT, 0, + "Stream stop position in milliseconds"}, + {AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0, + "Buffer time in milliseconds"}, + {AVC("timeout"), OFF(Link.timeout), OPT_INT, 0, + "Session timeout in seconds"}, + {{NULL, 0}, 0, 0}}; + +static const AVal truth[] = { + AVC("1"), + AVC("on"), + AVC("yes"), + AVC("true"), + {0, 0}}; + +static void RTMP_OptUsage() { + int i; + + RTMP_Log(RTMP_LOGERROR, "Valid PILI_RTMP options are:\n"); + for (i = 0; options[i].name.av_len; i++) { + RTMP_Log(RTMP_LOGERROR, "%10s %-7s %s\n", options[i].name.av_val, + optinfo[options[i].otype], options[i].use); + } +} + +static int + parseAMF(AMFObject *obj, AVal *av, int *depth) { + AMFObjectProperty prop = {{0, 0}}; + int i; + char *p, *arg = av->av_val; + + if (arg[1] == ':') { + p = (char *)arg + 2; + switch (arg[0]) { + case 'B': + prop.p_type = AMF_BOOLEAN; + prop.p_vu.p_number = atoi(p); + break; + case 'S': + prop.p_type = AMF_STRING; + prop.p_vu.p_aval.av_val = p; + prop.p_vu.p_aval.av_len = av->av_len - (p - arg); + break; + case 'N': + prop.p_type = AMF_NUMBER; + prop.p_vu.p_number = strtod(p, NULL); + break; + case 'Z': + prop.p_type = AMF_NULL; + break; + case 'O': + i = atoi(p); + if (i) { + prop.p_type = AMF_OBJECT; + } else { + (*depth)--; + return 0; + } + break; + default: + return -1; + } + } else if (arg[2] == ':' && arg[0] == 'N') { + p = strchr(arg + 3, ':'); + if (!p || !*depth) + return -1; + prop.p_name.av_val = (char *)arg + 3; + prop.p_name.av_len = p - (arg + 3); + + p++; + switch (arg[1]) { + case 'B': + prop.p_type = AMF_BOOLEAN; + prop.p_vu.p_number = atoi(p); + break; + case 'S': + prop.p_type = AMF_STRING; + prop.p_vu.p_aval.av_val = p; + prop.p_vu.p_aval.av_len = av->av_len - (p - arg); + break; + case 'N': + prop.p_type = AMF_NUMBER; + prop.p_vu.p_number = strtod(p, NULL); + break; + case 'O': + prop.p_type = AMF_OBJECT; + break; + default: + return -1; + } + } else + return -1; + + if (*depth) { + AMFObject *o2; + for (i = 0; i < *depth; i++) { + o2 = &obj->o_props[obj->o_num - 1].p_vu.p_object; + obj = o2; + } + } + AMF_AddProp(obj, &prop); + if (prop.p_type == AMF_OBJECT) + (*depth)++; + return 0; +} + +int RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, RTMPError *error) { + int i; + void *v; + + for (i = 0; options[i].name.av_len; i++) { + if (opt->av_len != options[i].name.av_len) continue; + if (strcasecmp(opt->av_val, options[i].name.av_val)) continue; + v = (char *)r + options[i].off; + switch (options[i].otype) { + case OPT_STR: { + AVal *aptr = v; + *aptr = *arg; + } break; + case OPT_INT: { + long l = strtol(arg->av_val, NULL, 0); + *(int *)v = l; + } break; + case OPT_BOOL: { + int j, fl; + fl = *(int *)v; + for (j = 0; truth[j].av_len; j++) { + if (arg->av_len != truth[j].av_len) continue; + if (strcasecmp(arg->av_val, truth[j].av_val)) continue; + fl |= options[i].omisc; + break; + } + *(int *)v = fl; + } break; + case OPT_CONN: + if (parseAMF(&r->Link.extras, arg, &r->Link.edepth)) + return FALSE; + break; + } + break; + } + if (!options[i].name.av_len) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Unknown option "); + strcat(msg, opt->av_val); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorUnknowOption; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "Unknown option %s", opt->av_val); + RTMP_OptUsage(); + return FALSE; + } + + return TRUE; +} + +int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error) { + AVal opt, arg; + char *p1, *p2, *ptr = strchr(url, ' '); + int ret, len; + unsigned int port = 0; + + if (ptr) + *ptr = '\0'; + + len = (int)strlen(url); + ret = PILI_RTMP_ParseURL2(url, &r->Link.protocol, &r->Link.hostname, + &port, &r->Link.playpath0, &r->Link.app, &r->Link.domain); + if (!ret) + return ret; + r->Link.port = port; + r->Link.playpath = r->Link.playpath0; + + while (ptr) { + *ptr++ = '\0'; + p1 = ptr; + p2 = strchr(p1, '='); + if (!p2) + break; + opt.av_val = p1; + opt.av_len = p2 - p1; + *p2++ = '\0'; + arg.av_val = p2; + ptr = strchr(p2, ' '); + if (ptr) { + *ptr = '\0'; + arg.av_len = ptr - p2; + /* skip repeated spaces */ + while (ptr[1] == ' ') + *ptr++ = '\0'; + } else { + arg.av_len = strlen(p2); + } + + /* unescape */ + port = arg.av_len; + for (p1 = p2; port > 0;) { + if (*p1 == '\\') { + unsigned int c; + if (port < 3) + return FALSE; + sscanf(p1 + 1, "%02x", &c); + *p2++ = c; + port -= 3; + p1 += 3; + } else { + *p2++ = *p1++; + port--; + } + } + arg.av_len = p2 - arg.av_val; + + ret = RTMP_SetOpt(r, &opt, &arg, error); + if (!ret) + return ret; + } + + if (!r->Link.tcUrl.av_len) { + r->Link.tcUrl.av_val = url; + if (r->Link.app.av_len) { + AVal *domain = &r->Link.domain; + if (domain->av_len == 0 && r->Link.app.av_val < url + len) { + /* if app is part of original url, just use it */ + r->Link.tcUrl.av_len = r->Link.app.av_len + (r->Link.app.av_val - url); + } else { + if (domain->av_len == 0) { + domain = &r->Link.hostname; + } + if (r->Link.port = 0) { + r->Link.port = 1935; + } + len = domain->av_len + r->Link.app.av_len + sizeof("rtmpte://:65535/"); + r->Link.tcUrl.av_val = malloc(len); + r->Link.tcUrl.av_len = snprintf(r->Link.tcUrl.av_val, len, + "%s://%.*s:%d/%.*s", + PILI_RTMPProtocolStringsLower[r->Link.protocol], + domain->av_len, domain->av_val, + r->Link.port, + r->Link.app.av_len, r->Link.app.av_val); + r->Link.lFlags |= RTMP_LF_FTCU; + } + } else { + r->Link.tcUrl.av_len = strlen(url); + } + } + +#ifdef CRYPTO + if ((r->Link.lFlags & RTMP_LF_SWFV) && r->Link.swfUrl.av_len) + RTMP_HashSWF(r->Link.swfUrl.av_val, &r->Link.SWFSize, + (unsigned char *)r->Link.SWFHash, r->Link.swfAge); +#endif + + if (r->Link.port == 0) { + if (r->Link.protocol & RTMP_FEATURE_SSL) + r->Link.port = 443; + else if (r->Link.protocol & RTMP_FEATURE_HTTP) + r->Link.port = 80; + else + r->Link.port = 1935; + } + return TRUE; +} + +static int add_addr_info(PILI_RTMP *r, struct addrinfo *hints, struct addrinfo **ai, AVal *host, int port, RTMPError *error) { + char *hostname; + int ret = TRUE; + if (host->av_val[host->av_len]) { + hostname = malloc(host->av_len + 1); + memcpy(hostname, host->av_val, host->av_len); + hostname[host->av_len] = '\0'; + } else { + hostname = host->av_val; + } + + struct addrinfo *cur_ai; + char portstr[10]; + snprintf(portstr, sizeof(portstr), "%d", port); + int addrret = getaddrinfo(hostname, portstr, hints, ai); + if (addrret != 0) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Problem accessing the DNS. addr: "); + strcat(msg, hostname); + + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorAccessDNSFailed; + strcpy(error->message, msg); + RTMP_Log(RTMP_LOGERROR, "Problem accessing the DNS. %d (addr: %s) (port: %s)", addrret, hostname, portstr); + ret = FALSE; + } + + if (hostname != host->av_val) { + free(hostname); + } + return ret; +} + +int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, RTMPError *error) { + r->m_sb.sb_timedout = FALSE; + r->m_pausing = 0; + r->m_fDuration = 0.0; + + r->m_sb.sb_socket = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (ai->ai_family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)ai->ai_addr; + in6->sin6_port = htons(port); + } + if (r->m_sb.sb_socket != -1) { +#ifdef RTMP_FEATURE_NONBLOCK + /* set socket non block */ + { + int flags = fcntl(r->m_sb.sb_socket, F_GETFL, 0); + if (fcntl(r->m_sb.sb_socket, F_SETFL, flags | O_NONBLOCK) < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, set socket non block failed", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + } +#endif + if (connect(r->m_sb.sb_socket, ai->ai_addr, ai->ai_addrlen) < 0) { + int err = GetSockError(); +#ifdef RTMP_FEATURE_NONBLOCK + if ((err == EINTR && !PILI_RTMP_ctrlC) || + err == EINPROGRESS) { + SET_RCVTIMEO(tv, r->Link.timeout); + fd_set wfds; + while (1) { + FD_ZERO(&wfds); + FD_SET(r->m_sb.sb_socket, &wfds); + int ret = select(r->m_sb.sb_socket + 1, NULL, &wfds, NULL, &tv); + if (ret < 0) { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect select error %d, %s", __FUNCTION__, + sockerr, strerror(sockerr)); + if (sockerr == EINTR && !PILI_RTMP_ctrlC) + continue; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP connect select error. "); + strcat(msg, strerror(sockerr)); + RTMPError_Message(error, RTMPErrorFailedToConnectSocket, msg); + PILI_RTMP_Close(r, error); + RTMPError_Free(error); + return FALSE; + } else if (ret == 0) { + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect error select timeout", __FUNCTION__); + RTMPError_Message(error, RTMPErrorSocketTimeout, "PILI_RTMP connect error. select timeout: "); + PILI_RTMP_Close(r, error); + RTMPError_Free(error); + return FALSE; + } else if (!FD_ISSET(r->m_sb.sb_socket, &wfds)) { + PILI_RTMP_Close(r, error); + RTMPError_Message(error, RTMPErrorFailedToConnectSocket, "PILI_RTMP connect error"); + RTMPError_Free(error); + return FALSE; + } else { + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect success", __FUNCTION__); + break; + } + } + } else { +#endif + + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Failed to connect socket. "); + strcat(msg, strerror(err)); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorFailedToConnectSocket; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, failed to connect socket. %d (%s)", + __FUNCTION__, err, strerror(err)); + + PILI_RTMP_Close(r, NULL); + return FALSE; +#ifdef RTMP_FEATURE_NONBLOCK + } +#endif + } + + if (r->Link.socksport) { + RTMP_Log(RTMP_LOGDEBUG, "%s ... SOCKS negotiation", __FUNCTION__); + if (!SocksNegotiate(r, error)) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Socks negotiation failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorSocksNegotiationFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, SOCKS negotiation failed.", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + } + } else { + int err = GetSockError(); + + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Failed to create socket. "); + strcat(msg, strerror(err)); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorFailedToCreateSocket; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, failed to create socket. Error: %d (%s)", __FUNCTION__, err, strerror(err)); + + return FALSE; + } + +#if RTMP_FEATURE_NONBLOCK + +#else + /* set receive timeout */ + { + SET_RCVTIMEO(tv, r->Link.timeout); + if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { + RTMP_Log(RTMP_LOGERROR, "%s, Setting socket recieve timeout to %ds failed!", + __FUNCTION__, r->Link.timeout); + } + } + + /* set send timeout*/ + { + struct timeval timeout; + timeout.tv_sec = r->Link.send_timeout; + timeout.tv_usec = 0; + + if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout))) { + RTMP_Log(RTMP_LOGERROR, "%s, Setting socket send timeout to %ds failed!", + __FUNCTION__, r->Link.timeout); + } + } +#endif + + /* ignore sigpipe */ + int kOne = 1; +#ifdef __linux + setsockopt(r->m_sb.sb_socket, SOL_SOCKET, MSG_NOSIGNAL, &kOne, sizeof(kOne)); +#else + setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_NOSIGPIPE, &kOne, sizeof(kOne)); +#endif + if (r->m_tcp_nodelay) { + int on = 1; + setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *)&on, sizeof(on)); + } + + return TRUE; +} + +int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { + if (r->Link.protocol & RTMP_FEATURE_SSL) { +#if defined(CRYPTO) && !defined(NO_SSL) + TLS_client(RTMP_TLS_ctx, r->m_sb.sb_ssl); + TLS_setfd(r->m_sb.sb_ssl, r->m_sb.sb_socket); + if (TLS_connect(r->m_sb.sb_ssl) < 0) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "TLS_Connect failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorTLSConnectFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); + RTMP_Close(r, NULL); + return FALSE; + } +#else + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "No SSL/TLS support."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorNoSSLOrTLSSupport; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, no SSL/TLS support", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + +#endif + } + if (r->Link.protocol & RTMP_FEATURE_HTTP) { + r->m_msgCounter = 1; + r->m_clientID.av_val = NULL; + r->m_clientID.av_len = 0; + HTTP_Post(r, RTMPT_OPEN, "", 1); + HTTP_read(r, 1); + r->m_msgCounter = 0; + } + RTMP_Log(RTMP_LOGDEBUG, "%s, ... connected, handshaking", __FUNCTION__); + if (!HandShake(r, TRUE, error)) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Handshake failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorHandshakeFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, handshake failed.", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + RTMP_Log(RTMP_LOGDEBUG, "%s, handshaked", __FUNCTION__); + + if (!SendConnectPacket(r, cp, error)) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP connect failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorRTMPConnectFailed; + strcpy(error->message, msg); + } + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect failed.", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + return TRUE; +} + +int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { + //获取hub + char hub[5] = {0}; + if (r->Link.app.av_len>4) { + strncpy(hub, r->Link.app.av_val,4); + }else if(r->Link.app.av_len>0){ + strncpy(hub, r->Link.app.av_val,r->Link.app.av_len); + } + + if (strlen(hub)>0) { + time_t nowtime; + time ( &nowtime ); + char tempTime[20]={0}; + sprintf(tempTime,"%ld",nowtime); + reqid[0] = '\0'; + strncat(reqid, hub, strlen(hub)); + strncat(reqid, tempTime, strlen(tempTime)); + } + + struct PILI_CONNECTION_TIME conn_time; + if (!r->Link.hostname.av_len) + return FALSE; + + struct addrinfo hints = {0}, *ai, *cur_ai; + + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + + unsigned short port; + if (r->Link.socksport) { + port = r->Link.socksport; + /* Connect via SOCKS */ + if (!add_addr_info(r, &hints, &ai, &r->Link.sockshost, r->Link.socksport, error)) { + return FALSE; + } + } else { + port = r->Link.port; + /* Connect directly */ + if (!add_addr_info(r, &hints, &ai, &r->Link.hostname, r->Link.port, error)) { + return FALSE; + } + } + r->ip = 0; //useless for ipv6 + cur_ai = ai; + + int t1 = PILI_RTMP_GetTime(); + if (!PILI_RTMP_Connect0(r, cur_ai, port, error)) { + freeaddrinfo(ai); + return FALSE; + } + conn_time.connect_time = PILI_RTMP_GetTime() - t1; + r->m_bSendCounter = TRUE; + + int t2 = PILI_RTMP_GetTime(); + int ret = PILI_RTMP_Connect1(r, cp, error); + conn_time.handshake_time = PILI_RTMP_GetTime() - t2; + + if (r->m_connCallback != NULL) { + r->m_connCallback(&conn_time, r->m_userData); + } + freeaddrinfo(ai); + return ret; +} + +//useless +static int + SocksNegotiate(PILI_RTMP *r, RTMPError *error) { + // unsigned long addr; + // struct sockaddr_in service; + // memset(&service, 0, sizeof(struct sockaddr_in)); + // + // add_addr_info(r, &service, &r->Link.hostname, r->Link.port, error); + // addr = htonl(service.sin_addr.s_addr); + // + // { + // char packet[] = { + // 4, 1, /* SOCKS 4, connect */ + // (r->Link.port >> 8) & 0xFF, + // (r->Link.port) & 0xFF, + // (char)(addr >> 24) & 0xFF, (char)(addr >> 16) & 0xFF, + // (char)(addr >> 8) & 0xFF, (char)addr & 0xFF, + // 0 + // }; /* NULL terminate */ + // + // WriteN(r, packet, sizeof packet, error); + // + // if (ReadN(r, packet, 8) != 8) + // return FALSE; + // + // if (packet[0] == 0 && packet[1] == 90) + // { + // return TRUE; + // } + // else + // { + // RTMP_Log(RTMP_LOGERROR, "%s, SOCKS returned error code %d", packet[1]); + // return FALSE; + // } + // } + return 0; +} + +int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { + PILI_RTMPPacket packet = {0}; + + /* seekTime was already set by SetupStream / SetupURL. + * This is only needed by ReconnectStream. + */ + if (seekTime > 0) + r->Link.seekTime = seekTime; + + r->m_mediaChannel = 0; + + while (!r->m_bPlaying && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, &packet)) { + if (RTMPPacket_IsReady(&packet)) { + if (!packet.m_nBodySize) + continue; + if ((packet.m_packetType == RTMP_PACKET_TYPE_AUDIO) || + (packet.m_packetType == RTMP_PACKET_TYPE_VIDEO) || + (packet.m_packetType == RTMP_PACKET_TYPE_INFO)) { + RTMP_Log(RTMP_LOGWARNING, "Received FLV packet before play()! Ignoring."); + PILI_RTMPPacket_Free(&packet); + continue; + } + + PILI_RTMP_ClientPacket(r, &packet); + PILI_RTMPPacket_Free(&packet); + } + } + + if (!r->m_bPlaying && error) { + char *msg = "PILI_RTMP connect stream failed."; + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorRTMPConnectStreamFailed; + strcpy(error->message, msg); + } + + return r->m_bPlaying; +} + +int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { + PILI_RTMP_DeleteStream(r, error); + + PILI_RTMP_SendCreateStream(r, error); + + return PILI_RTMP_ConnectStream(r, seekTime, error); +} + +int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error) { + int res; + + if (!r->m_pausing) { + res = PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, error); + if (!res) + return res; + + r->m_pausing = 1; + sleep(1); + } + res = PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, error); + r->m_pausing = 3; + return res; +} + +void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error) { + if (r->m_stream_id < 0) + return; + + r->m_bPlaying = FALSE; + + SendDeleteStream(r, r->m_stream_id, error); + r->m_stream_id = -1; +} + +int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { + int bHasMediaPacket = 0; + + while (!bHasMediaPacket && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, packet)) { + if (!RTMPPacket_IsReady(packet)) { + continue; + } + + bHasMediaPacket = PILI_RTMP_ClientPacket(r, packet); + + if (!bHasMediaPacket) { + PILI_RTMPPacket_Free(packet); + } else if (r->m_pausing == 3) { + if (packet->m_nTimeStamp <= r->m_mediaStamp) { + bHasMediaPacket = 0; +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, + "Skipped type: %02X, size: %d, TS: %d ms, abs TS: %d, pause: %d ms", + packet->m_packetType, packet->m_nBodySize, + packet->m_nTimeStamp, packet->m_hasAbsTimestamp, + r->m_mediaStamp); +#endif + continue; + } + r->m_pausing = 0; + } + } + + if (bHasMediaPacket) + r->m_bPlaying = TRUE; + else if (r->m_sb.sb_timedout && !r->m_pausing) + r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; + + return bHasMediaPacket; +} + +int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { + int bHasMediaPacket = 0; + switch (packet->m_packetType) { + case 0x01: + /* chunk size */ + HandleChangeChunkSize(r, packet); + break; + + case 0x03: + /* bytes read report */ + RTMP_Log(RTMP_LOGDEBUG, "%s, received: bytes read report", __FUNCTION__); + break; + + case 0x04: + /* ctrl */ + HandleCtrl(r, packet); + break; + + case 0x05: + /* server bw */ + HandleServerBW(r, packet); + break; + + case 0x06: + /* client bw */ + HandleClientBW(r, packet); + break; + + case 0x08: + /* audio data */ + /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: audio %lu bytes", __FUNCTION__, packet.m_nBodySize); */ + HandleAudio(r, packet); + bHasMediaPacket = 1; + if (!r->m_mediaChannel) + r->m_mediaChannel = packet->m_nChannel; + if (!r->m_pausing) + r->m_mediaStamp = packet->m_nTimeStamp; + break; + + case 0x09: + /* video data */ + /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: video %lu bytes", __FUNCTION__, packet.m_nBodySize); */ + HandleVideo(r, packet); + bHasMediaPacket = 1; + if (!r->m_mediaChannel) + r->m_mediaChannel = packet->m_nChannel; + if (!r->m_pausing) + r->m_mediaStamp = packet->m_nTimeStamp; + break; + + case 0x0F: /* flex stream send */ + RTMP_Log(RTMP_LOGDEBUG, + "%s, flex stream send, size %lu bytes, not supported, ignoring", + __FUNCTION__, packet->m_nBodySize); + break; + + case 0x10: /* flex shared object */ + RTMP_Log(RTMP_LOGDEBUG, + "%s, flex shared object, size %lu bytes, not supported, ignoring", + __FUNCTION__, packet->m_nBodySize); + break; + + case 0x11: /* flex message */ + { + RTMP_Log(RTMP_LOGDEBUG, + "%s, flex message, size %lu bytes, not fully supported", + __FUNCTION__, packet->m_nBodySize); +/*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + +/* some DEBUG code */ +#if 0 + RTMP_LIB_AMFObject obj; + int nRes = obj.Decode(packet.m_body+1, packet.m_nBodySize-1); + if(nRes < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, error decoding AMF3 packet", __FUNCTION__); + /*return; */ + } + + obj.Dump(); +#endif + + if (HandleInvoke(r, packet->m_body + 1, packet->m_nBodySize - 1) == 1) + bHasMediaPacket = 2; + break; + } + case 0x12: + /* metadata (notify) */ + RTMP_Log(RTMP_LOGDEBUG, "%s, received: notify %lu bytes", __FUNCTION__, + packet->m_nBodySize); + if (HandleMetadata(r, packet->m_body, packet->m_nBodySize)) + bHasMediaPacket = 1; + break; + + case 0x13: + RTMP_Log(RTMP_LOGDEBUG, "%s, shared object, not supported, ignoring", + __FUNCTION__); + break; + + case 0x14: + /* invoke */ + RTMP_Log(RTMP_LOGDEBUG, "%s, received: invoke %lu bytes", __FUNCTION__, + packet->m_nBodySize); + /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + + if (HandleInvoke(r, packet->m_body, packet->m_nBodySize) == 1) + bHasMediaPacket = 2; + break; + + case 0x16: { + /* go through FLV packets and handle metadata packets */ + unsigned int pos = 0; + uint32_t nTimeStamp = packet->m_nTimeStamp; + + while (pos + 11 < packet->m_nBodySize) { + uint32_t dataSize = AMF_DecodeInt24(packet->m_body + pos + 1); /* size without header (11) and prevTagSize (4) */ + + if (pos + 11 + dataSize + 4 > packet->m_nBodySize) { + RTMP_Log(RTMP_LOGWARNING, "Stream corrupt?!"); + break; + } + if (packet->m_body[pos] == 0x12) { + HandleMetadata(r, packet->m_body + pos + 11, dataSize); + } else if (packet->m_body[pos] == 8 || packet->m_body[pos] == 9) { + nTimeStamp = AMF_DecodeInt24(packet->m_body + pos + 4); + nTimeStamp |= (packet->m_body[pos + 7] << 24); + } + pos += (11 + dataSize + 4); + } + if (!r->m_pausing) + r->m_mediaStamp = nTimeStamp; + + /* FLV tag(s) */ + /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: FLV tag(s) %lu bytes", __FUNCTION__, packet.m_nBodySize); */ + bHasMediaPacket = 1; + break; + } + default: + RTMP_Log(RTMP_LOGDEBUG, "%s, unknown packet type received: 0x%02x", __FUNCTION__, + packet->m_packetType); +#ifdef _DEBUG + RTMP_LogHex(RTMP_LOGDEBUG, packet->m_body, packet->m_nBodySize); +#endif + } + + return bHasMediaPacket; +} + +#ifdef _DEBUG +extern FILE *netstackdump; +extern FILE *netstackdump_read; +#endif + +static int + ReadN(PILI_RTMP *r, char *buffer, int n) { + int nOriginalSize = n; + int avail; + char *ptr; + + r->m_sb.sb_timedout = FALSE; + +#ifdef _DEBUG + memset(buffer, 0, n); +#endif + + ptr = buffer; + while (n > 0) { + int nBytes = 0, nRead; + if (r->Link.protocol & RTMP_FEATURE_HTTP) { + while (!r->m_resplen) { + if (r->m_sb.sb_size < 144) { + if (!r->m_unackd) + HTTP_Post(r, RTMPT_IDLE, "", 1); + if (PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout) < 1) { + if (!r->m_sb.sb_timedout) { + PILI_RTMP_Close(r, NULL); + } else { + RTMPError error = {0}; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP socket timeout"); + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorSocketTimeout; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + } + + return 0; + } + } + HTTP_read(r, 0); + } + if (r->m_resplen && !r->m_sb.sb_size) + PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout); + avail = r->m_sb.sb_size; + if (avail > r->m_resplen) + avail = r->m_resplen; + } else { + avail = r->m_sb.sb_size; + if (avail == 0) { + if (PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout) < 1) { + if (!r->m_sb.sb_timedout) { + PILI_RTMP_Close(r, NULL); + } else { + RTMPError error = {0}; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP socket timeout"); + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorSocketTimeout; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + } + + return 0; + } + avail = r->m_sb.sb_size; + } + } + nRead = ((n < avail) ? n : avail); + if (nRead > 0) { + memcpy(ptr, r->m_sb.sb_start, nRead); + r->m_sb.sb_start += nRead; + r->m_sb.sb_size -= nRead; + nBytes = nRead; + r->m_nBytesIn += nRead; + if (r->m_bSendCounter && r->m_nBytesIn > r->m_nBytesInSent + r->m_nClientBW / 2) + SendBytesReceived(r, NULL); + } +/*RTMP_Log(RTMP_LOGDEBUG, "%s: %d bytes\n", __FUNCTION__, nBytes); */ +#ifdef _DEBUG + fwrite(ptr, 1, nBytes, netstackdump_read); +#endif + + if (nBytes == 0) { + RTMP_Log(RTMP_LOGDEBUG, "%s, PILI_RTMP socket closed by peer", __FUNCTION__); + /*goto again; */ + RTMPError error = {0}; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP socket closed by peer. "); + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorSocketClosedByPeer; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + break; + } + + if (r->Link.protocol & RTMP_FEATURE_HTTP) + r->m_resplen -= nBytes; + +#ifdef CRYPTO + if (r->Link.rc4keyIn) { + RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr); + } +#endif + + n -= nBytes; + ptr += nBytes; + } + + return nOriginalSize - n; +} + +static int + WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error) { + const char *ptr = buffer; +#ifdef CRYPTO + char *encrypted = 0; + char buf[RTMP_BUFFER_CACHE_SIZE]; + + if (r->Link.rc4keyOut) { + if (n > sizeof(buf)) + encrypted = (char *)malloc(n); + else + encrypted = (char *)buf; + ptr = encrypted; + RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr); + } +#endif + +#ifdef RTMP_FEATURE_NONBLOCK + SET_RCVTIMEO(tv, r->Link.timeout); + fd_set wfds; +#endif + while (n > 0) { + +#ifdef RTMP_FEATURE_NONBLOCK + FD_ZERO(&wfds); + FD_SET(r->m_sb.sb_socket, &wfds); + int ret = select(r->m_sb.sb_socket + 1, NULL, &wfds, NULL, &tv); + if (ret < 0) { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send select error %d, %s", __FUNCTION__, + sockerr, strerror(sockerr)); + if (sockerr == EINTR && !PILI_RTMP_ctrlC) + continue; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP send select error. "); + strcat(msg, strerror(sockerr)); + RTMPError_Message(error, RTMPErrorSendFailed, msg); + PILI_RTMP_Close(r, error); + RTMPError_Free(error); + n = 1; + break; + } else if (ret == 0) { + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send error select timeout", __FUNCTION__); + RTMPError_Message(error, RTMPErrorSocketTimeout, "PILI_RTMP send error. select timeout: "); + PILI_RTMP_Close(r, error); + RTMPError_Free(error); + n = 1; + break; + } else if (!FD_ISSET(r->m_sb.sb_socket, &wfds)) { + PILI_RTMP_Close(r, error); + RTMPError_Message(error, RTMPErrorSendFailed, "PILI_RTMP send error socket can not write"); + RTMPError_Free(error); + n = 1; + break; + } +#endif + int nBytes; + + if (r->Link.protocol & RTMP_FEATURE_HTTP) + nBytes = HTTP_Post(r, RTMPT_SEND, ptr, n); + else + nBytes = PILI_RTMPSockBuf_Send(&r->m_sb, ptr, n); + /*RTMP_Log(RTMP_LOGDEBUG, "%s: %d\n", __FUNCTION__, nBytes); */ + + if (nBytes < 0) { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send error %d, %s, (%d bytes)", __FUNCTION__, + sockerr, strerror(sockerr), n); + + /* + Specify the receiving or sending timeouts until reporting an error. + The argument is a struct timeval. + If an input or output function blocks for this period of time, + and data has been sent or received, + the return value of that function will be the amount of data transferred; + if no data has been transferred and the timeout has been reached then -1 is returned + with errno set to EAGAIN or EWOULDBLOCK, or EINPROGRESS (for connect(2)) just as if the socket was specified to be nonblocking. + If the timeout is set to zero (the default) then the operation will never timeout. + Timeouts only have effect for system calls that perform socket I/O (e.g., read(2), recvmsg(2), send(2), sendmsg(2)); + timeouts have no effect for select(2), poll(2), epoll_wait(2), and so on. + */ + if ((sockerr == EINTR && !PILI_RTMP_ctrlC ) || sockerr == EAGAIN) + continue; + +#ifdef RTMP_FEATURE_NONBLOCK + if (sockerr == EWOULDBLOCK || sockerr == EAGAIN) { + continue; + } else if (error) { +#else + if (error) { +#endif + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP send error. socket error: "); + strcat(msg, strerror(sockerr)); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorSendFailed; + strcpy(error->message, msg); + } + + PILI_RTMP_Close(r, error); + + RTMPError_Free(error); + + n = 1; + break; + } + + if (nBytes == 0) + break; + + n -= nBytes; + ptr += nBytes; + } + +#ifdef CRYPTO + if (encrypted && encrypted != buf) + free(encrypted); +#endif + + return n == 0; +} + +#define SAVC(x) static const AVal av_##x = AVC(#x) + +SAVC(app); +SAVC(connect); +SAVC(flashVer); +SAVC(swfUrl); +SAVC(pageUrl); +SAVC(tcUrl); +SAVC(fpad); +SAVC(capabilities); +SAVC(audioCodecs); +SAVC(videoCodecs); +SAVC(videoFunction); +SAVC(objectEncoding); +SAVC(secureToken); +SAVC(secureTokenResponse); +SAVC(type); +SAVC(nonprivate); +SAVC(xreqid); + +static int + SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[4096], *pend = pbuf + sizeof(pbuf); + char *enc; + + if (cp) + return PILI_RTMP_SendPacket(r, cp, TRUE, error); + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_connect); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_OBJECT; + + enc = AMF_EncodeNamedString(enc, pend, &av_app, &r->Link.app); + if (!enc) + return FALSE; + AVal requestId; + requestId.av_val = reqid; + requestId.av_len = (int)strlen(reqid); + + if (requestId.av_len){ + enc = AMF_EncodeNamedString(enc,pend,&av_xreqid,&requestId); + if (!enc) + return FALSE; + } + + if (r->Link.protocol & RTMP_FEATURE_WRITE) { + enc = AMF_EncodeNamedString(enc, pend, &av_type, &av_nonprivate); + if (!enc) + return FALSE; + } + if (r->Link.flashVer.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_flashVer, &r->Link.flashVer); + if (!enc) + return FALSE; + } + if (r->Link.swfUrl.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_swfUrl, &r->Link.swfUrl); + if (!enc) + return FALSE; + } + if (r->Link.tcUrl.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_tcUrl, &r->Link.tcUrl); + if (!enc) + return FALSE; + } + if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { + enc = AMF_EncodeNamedBoolean(enc, pend, &av_fpad, FALSE); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_capabilities, 15.0); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_audioCodecs, r->m_fAudioCodecs); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_videoCodecs, r->m_fVideoCodecs); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_videoFunction, 1.0); + if (!enc) + return FALSE; + if (r->Link.pageUrl.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_pageUrl, &r->Link.pageUrl); + if (!enc) + return FALSE; + } + } + if (r->m_fEncoding != 0.0 || r->m_bSendEncoding) { /* AMF0, AMF3 not fully supported yet */ + enc = AMF_EncodeNamedNumber(enc, pend, &av_objectEncoding, r->m_fEncoding); + if (!enc) + return FALSE; + } + if (enc + 3 >= pend) + return FALSE; + *enc++ = 0; + *enc++ = 0; /* end of object - 0x00 0x00 0x09 */ + *enc++ = AMF_OBJECT_END; + + /* add auth string */ + if (r->Link.auth.av_len) { + enc = AMF_EncodeBoolean(enc, pend, r->Link.lFlags & RTMP_LF_AUTH); + if (!enc) + return FALSE; + enc = AMF_EncodeString(enc, pend, &r->Link.auth); + if (!enc) + return FALSE; + } + if (r->Link.extras.o_num) { + int i; + for (i = 0; i < r->Link.extras.o_num; i++) { + enc = AMFProp_Encode(&r->Link.extras.o_props[i], enc, pend); + if (!enc) + return FALSE; + } + } + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +#if 0 /* unused */ +SAVC(bgHasStream); + +static int +SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath) +{ + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_bgHasStream); + enc = AMF_EncodeNumber(enc, pend, dId); + *enc++ = AMF_NULL; + + enc = AMF_EncodeString(enc, pend, playpath); + if (enc == NULL) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE); +} +#endif + +SAVC(createStream); + +int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_createStream); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; /* NULL */ + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(FCSubscribe); + +static int + SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[512], *pend = pbuf + sizeof(pbuf); + char *enc; + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + RTMP_Log(RTMP_LOGDEBUG, "FCSubscribe: %s", subscribepath->av_val); + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_FCSubscribe); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, subscribepath); + + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(releaseStream); + +static int + SendReleaseStream(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_releaseStream); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(FCPublish); + +static int + SendFCPublish(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_FCPublish); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(FCUnpublish); + +static int + SendFCUnpublish(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_FCUnpublish); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(publish); +SAVC(live); +SAVC(record); + +static int + SendPublish(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x04; /* source channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = r->m_stream_id; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_publish); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + /* FIXME: should we choose live based on Link.lFlags & RTMP_LF_LIVE? */ + enc = AMF_EncodeString(enc, pend, &av_live); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(deleteStream); + +static int + SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_deleteStream); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeNumber(enc, pend, dStreamId); + + packet.m_nBodySize = enc - packet.m_body; + + /* no response expected */ + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(pause); + +int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int iTime, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* video channel */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* invoke */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_pause); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeBoolean(enc, pend, DoPause); + enc = AMF_EncodeNumber(enc, pend, (double)iTime); + + packet.m_nBodySize = enc - packet.m_body; + + RTMP_Log(RTMP_LOGDEBUG, "%s, %d, pauseTime=%d", __FUNCTION__, DoPause, iTime); + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error) { + if (DoPause) + r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; + return PILI_RTMP_SendPause(r, DoPause, r->m_pauseStamp, error); +} + +SAVC(seek); + +int PILI_RTMP_SendSeek(PILI_RTMP *r, int iTime, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* video channel */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* invoke */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_seek); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeNumber(enc, pend, (double)iTime); + + packet.m_nBodySize = enc - packet.m_body; + + r->m_read.flags |= RTMP_READ_SEEKING; + r->m_read.nResumeTS = 0; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x02; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x05; /* Server BW */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + packet.m_nBodySize = 4; + + AMF_EncodeInt32(packet.m_body, pend, r->m_nServerBW); + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x02; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x06; /* Client BW */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + packet.m_nBodySize = 5; + + AMF_EncodeInt32(packet.m_body, pend, r->m_nClientBW); + packet.m_body[4] = r->m_nClientBW2; + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +static int + SendBytesReceived(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x02; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x03; /* bytes in */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + packet.m_nBodySize = 4; + + AMF_EncodeInt32(packet.m_body, pend, r->m_nBytesIn); /* hard coded for now */ + r->m_nBytesInSent = r->m_nBytesIn; + + /*RTMP_Log(RTMP_LOGDEBUG, "Send bytes report. 0x%x (%d bytes)", (unsigned int)m_nBytesIn, m_nBytesIn); */ + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(_checkbw); + +static int + SendCheckBW(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av__checkbw); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + + packet.m_nBodySize = enc - packet.m_body; + + /* triggers _onbwcheck and eventually results in _onbwdone */ + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(_result); + +static int + SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av__result); + enc = AMF_EncodeNumber(enc, pend, txn); + *enc++ = AMF_NULL; + enc = AMF_EncodeNumber(enc, pend, (double)r->m_nBWCheckCounter++); + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(ping); +SAVC(pong); + +static int + SendPong(PILI_RTMP *r, double txn, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_pong); + enc = AMF_EncodeNumber(enc, pend, txn); + *enc++ = AMF_NULL; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(play); + +static int + SendPlay(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* we make 8 our stream channel */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_play); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + + RTMP_Log(RTMP_LOGDEBUG, "%s, seekTime=%d, stopTime=%d, sending play: %s", + __FUNCTION__, r->Link.seekTime, r->Link.stopTime, + r->Link.playpath.av_val); + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + /* Optional parameters start and len. + * + * start: -2, -1, 0, positive number + * -2: looks for a live stream, then a recorded stream, + * if not found any open a live stream + * -1: plays a live stream + * >=0: plays a recorded streams from 'start' milliseconds + */ + if (r->Link.lFlags & RTMP_LF_LIVE) + enc = AMF_EncodeNumber(enc, pend, -1000.0); + else { + if (r->Link.seekTime > 0.0) + enc = AMF_EncodeNumber(enc, pend, r->Link.seekTime); /* resume from here */ + else + enc = AMF_EncodeNumber(enc, pend, 0.0); /*-2000.0);*/ /* recorded as default, -2000.0 is not reliable since that freezes the player if the stream is not found */ + } + if (!enc) + return FALSE; + + /* len: -1, 0, positive number + * -1: plays live or recorded stream to the end (default) + * 0: plays a frame 'start' ms away from the beginning + * >0: plays a live or recoded stream for 'len' milliseconds + */ + /*enc += EncodeNumber(enc, -1.0); */ /* len */ + if (r->Link.stopTime) { + enc = AMF_EncodeNumber(enc, pend, r->Link.stopTime - r->Link.seekTime); + if (!enc) + return FALSE; + } + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(set_playlist); +SAVC(0); + +static int + SendPlaylist(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* we make 8 our stream channel */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_set_playlist); + enc = AMF_EncodeNumber(enc, pend, 0); + *enc++ = AMF_NULL; + *enc++ = AMF_ECMA_ARRAY; + *enc++ = 0; + *enc++ = 0; + *enc++ = 0; + *enc++ = AMF_OBJECT; + enc = AMF_EncodeNamedString(enc, pend, &av_0, &r->Link.playpath); + if (!enc) + return FALSE; + if (enc + 3 >= pend) + return FALSE; + *enc++ = 0; + *enc++ = 0; + *enc++ = AMF_OBJECT_END; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +static int + SendSecureTokenResponse(PILI_RTMP *r, AVal *resp, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_secureTokenResponse); + enc = AMF_EncodeNumber(enc, pend, 0.0); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, resp); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +/* +from http://jira.red5.org/confluence/display/docs/Ping: + +Ping is the most mysterious message in PILI_RTMP and till now we haven't fully interpreted it yet. In summary, Ping message is used as a special command that are exchanged between client and server. This page aims to document all known Ping messages. Expect the list to grow. + +The type of Ping packet is 0x4 and contains two mandatory parameters and two optional parameters. The first parameter is the type of Ping and in short integer. The second parameter is the target of the ping. As Ping is always sent in Channel 2 (control channel) and the target object in PILI_RTMP header is always 0 which means the Connection object, it's necessary to put an extra parameter to indicate the exact target object the Ping is sent to. The second parameter takes this responsibility. The value has the same meaning as the target object field in PILI_RTMP header. (The second value could also be used as other purposes, like RTT Ping/Pong. It is used as the timestamp.) The third and fourth parameters are optional and could be looked upon as the parameter of the Ping packet. Below is an unexhausted list of Ping messages. + + * type 0: Clear the stream. No third and fourth parameters. The second parameter could be 0. After the connection is established, a Ping 0,0 will be sent from server to client. The message will also be sent to client on the start of Play and in response of a Seek or Pause/Resume request. This Ping tells client to re-calibrate the clock with the timestamp of the next packet server sends. + * type 1: Tell the stream to clear the playing buffer. + * type 3: Buffer time of the client. The third parameter is the buffer time in millisecond. + * type 4: Reset a stream. Used together with type 0 in the case of VOD. Often sent before type 0. + * type 6: Ping the client from server. The second parameter is the current time. + * type 7: Pong reply from client. The second parameter is the time the server sent with his ping request. + * type 26: SWFVerification request + * type 27: SWFVerification response +*/ +int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, unsigned int nTime, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + int nSize; + char *buf; + + RTMP_Log(RTMP_LOGDEBUG, "sending ctrl. type: 0x%04x", (unsigned short)nType); + + packet.m_nChannel = 0x02; /* control channel (ping) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x04; /* ctrl */ + packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + switch (nType) { + case 0x03: + nSize = 10; + break; /* buffer time */ + case 0x1A: + nSize = 3; + break; /* SWF verify request */ + case 0x1B: + nSize = 44; + break; /* SWF verify response */ + default: + nSize = 6; + break; + } + + packet.m_nBodySize = nSize; + + buf = packet.m_body; + buf = AMF_EncodeInt16(buf, pend, nType); + + if (nType == 0x1B) { +#ifdef CRYPTO + memcpy(buf, r->Link.SWFVerificationResponse, 42); + RTMP_Log(RTMP_LOGDEBUG, "Sending SWFVerification response: "); + RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize); +#endif + } else if (nType == 0x1A) { + *buf = nObject & 0xff; + } else { + if (nSize > 2) + buf = AMF_EncodeInt32(buf, pend, nObject); + + if (nSize > 6) + buf = AMF_EncodeInt32(buf, pend, nTime); + } + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +static void + AV_erase(PILI_RTMP_METHOD *vals, int *num, int i, int freeit) { + if (freeit) + free(vals[i].name.av_val); + (*num)--; + for (; i < *num; i++) { + vals[i] = vals[i + 1]; + } + vals[i].name.av_val = NULL; + vals[i].name.av_len = 0; + vals[i].num = 0; +} + +void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, freeit); +} + +static void + AV_queue(PILI_RTMP_METHOD **vals, int *num, AVal *av, int txn) { + char *tmp; + if (!(*num & 0x0f)) + *vals = realloc(*vals, (*num + 16) * sizeof(PILI_RTMP_METHOD)); + tmp = malloc(av->av_len + 1); + memcpy(tmp, av->av_val, av->av_len); + tmp[av->av_len] = '\0'; + (*vals)[*num].num = txn; + (*vals)[*num].name.av_len = av->av_len; + (*vals)[(*num)++].name.av_val = tmp; +} + +static void + AV_clear(PILI_RTMP_METHOD *vals, int num) { + int i; + for (i = 0; i < num; i++) + free(vals[i].name.av_val); + free(vals); +} + +SAVC(onBWDone); +SAVC(onFCSubscribe); +SAVC(onFCUnsubscribe); +SAVC(_onbwcheck); +SAVC(_onbwdone); +SAVC(_error); +SAVC(close); +SAVC(code); +SAVC(level); +SAVC(onStatus); +SAVC(playlist_ready); +static const AVal av_NetStream_Failed = AVC("NetStream.Failed"); +static const AVal av_NetStream_Play_Failed = AVC("NetStream.Play.Failed"); +static const AVal av_NetStream_Play_StreamNotFound = + AVC("NetStream.Play.StreamNotFound"); +static const AVal av_NetConnection_Connect_InvalidApp = + AVC("NetConnection.Connect.InvalidApp"); +static const AVal av_NetStream_Play_Start = AVC("NetStream.Play.Start"); +static const AVal av_NetStream_Play_Complete = AVC("NetStream.Play.Complete"); +static const AVal av_NetStream_Play_Stop = AVC("NetStream.Play.Stop"); +static const AVal av_NetStream_Seek_Notify = AVC("NetStream.Seek.Notify"); +static const AVal av_NetStream_Pause_Notify = AVC("NetStream.Pause.Notify"); +static const AVal av_NetStream_Play_UnpublishNotify = + AVC("NetStream.Play.UnpublishNotify"); +static const AVal av_NetStream_Publish_Start = AVC("NetStream.Publish.Start"); + +/* Returns 0 for OK/Failed/error, 1 for 'Stop or Complete' */ +static int + HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize) { + AMFObject obj; + AVal method; + int txn; + int ret = 0, nRes; + if (body[0] != 0x02) /* make sure it is a string method name we start with */ + { + RTMP_Log(RTMP_LOGWARNING, "%s, Sanity failed. no string method in invoke packet", + __FUNCTION__); + return 0; + } + + nRes = AMF_Decode(&obj, body, nBodySize, FALSE); + if (nRes < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, error decoding invoke packet", __FUNCTION__); + return 0; + } + + AMF_Dump(&obj); + AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &method); + txn = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 1)); + RTMP_Log(RTMP_LOGDEBUG, "%s, server invoking <%s>", __FUNCTION__, method.av_val); + + RTMPError error = {0}; + + if (AVMATCH(&method, &av__result)) { + AVal methodInvoked = {0}; + int i; + + for (i = 0; i < r->m_numCalls; i++) { + if (r->m_methodCalls[i].num == txn) { + methodInvoked = r->m_methodCalls[i].name; + AV_erase(r->m_methodCalls, &r->m_numCalls, i, FALSE); + break; + } + } + if (!methodInvoked.av_val) { + RTMP_Log(RTMP_LOGDEBUG, "%s, received result id %d without matching request", + __FUNCTION__, txn); + goto leave; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s, received result for method call <%s>", __FUNCTION__, + methodInvoked.av_val); + + if (AVMATCH(&methodInvoked, &av_connect)) { + if (r->Link.token.av_len) { + AMFObjectProperty p; + if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_secureToken, &p)) { + DecodeTEA(&r->Link.token, &p.p_vu.p_aval); + SendSecureTokenResponse(r, &p.p_vu.p_aval, &error); + } + } + if (r->Link.protocol & RTMP_FEATURE_WRITE) { + SendReleaseStream(r, &error); + SendFCPublish(r, &error); + } else { + PILI_RTMP_SendServerBW(r, &error); + PILI_RTMP_SendCtrl(r, 3, 0, 300, &error); + } + PILI_RTMP_SendCreateStream(r, &error); + + if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { + /* Send the FCSubscribe if live stream or if subscribepath is set */ + if (r->Link.subscribepath.av_len) + SendFCSubscribe(r, &r->Link.subscribepath, &error); + else if (r->Link.lFlags & RTMP_LF_LIVE) + SendFCSubscribe(r, &r->Link.playpath, &error); + } + } else if (AVMATCH(&methodInvoked, &av_createStream)) { + r->m_stream_id = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 3)); + + if (r->Link.protocol & RTMP_FEATURE_WRITE) { + SendPublish(r, &error); + } else { + if (r->Link.lFlags & RTMP_LF_PLST) + SendPlaylist(r, &error); + SendPlay(r, &error); + PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, &error); + } + } else if (AVMATCH(&methodInvoked, &av_play) || + AVMATCH(&methodInvoked, &av_publish)) { + r->m_bPlaying = TRUE; + } + free(methodInvoked.av_val); + } else if (AVMATCH(&method, &av_onBWDone)) { + if (!r->m_nBWCheckCounter) + SendCheckBW(r, &error); + } else if (AVMATCH(&method, &av_onFCSubscribe)) { + /* SendOnFCSubscribe(); */ + } else if (AVMATCH(&method, &av_onFCUnsubscribe)) { + PILI_RTMP_Close(r, NULL); + ret = 1; + } else if (AVMATCH(&method, &av_ping)) { + SendPong(r, txn, &error); + } else if (AVMATCH(&method, &av__onbwcheck)) { + SendCheckBWResult(r, txn, &error); + } else if (AVMATCH(&method, &av__onbwdone)) { + int i; + for (i = 0; i < r->m_numCalls; i++) + if (AVMATCH(&r->m_methodCalls[i].name, &av__checkbw)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } else if (AVMATCH(&method, &av__error)) { + RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server sent error"); + } else if (AVMATCH(&method, &av_close)) { + RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server requested close"); + RTMPError error = {0}; + char *msg = "PILI_RTMP server requested close."; + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorServerRequestedClose; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + } else if (AVMATCH(&method, &av_onStatus)) { + AMFObject obj2; + AVal code, level; + AMFProp_GetObject(AMF_GetProp(&obj, NULL, 3), &obj2); + AMFProp_GetString(AMF_GetProp(&obj2, &av_code, -1), &code); + AMFProp_GetString(AMF_GetProp(&obj2, &av_level, -1), &level); + + RTMP_Log(RTMP_LOGDEBUG, "%s, onStatus: %s", __FUNCTION__, code.av_val); + if (AVMATCH(&code, &av_NetStream_Failed) || AVMATCH(&code, &av_NetStream_Play_Failed) || AVMATCH(&code, &av_NetStream_Play_StreamNotFound) || AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { + r->m_stream_id = -1; + + int err_code; + char msg[100]; + memset(msg, 0, 100); + + if (AVMATCH(&code, &av_NetStream_Failed)) { + err_code = RTMPErrorNetStreamFailed; + strcpy(msg, "NetStream failed."); + } else if (AVMATCH(&code, &av_NetStream_Play_Failed)) { + err_code = RTMPErrorNetStreamPlayFailed; + strcpy(msg, "NetStream play failed."); + } else if (AVMATCH(&code, &av_NetStream_Play_StreamNotFound)) { + err_code = RTMPErrorNetStreamPlayStreamNotFound; + strcpy(msg, "NetStream play stream not found."); + } else if (AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { + err_code = RTMPErrorNetConnectionConnectInvalidApp; + strcpy(msg, "NetConnection connect invalip app."); + } else { + err_code = RTMPErrorUnknow; + strcpy(msg, "Unknow error."); + } + + RTMPError_Alloc(&error, strlen(msg)); + error.code = err_code; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + + RTMP_Log(RTMP_LOGERROR, "Closing connection: %s", code.av_val); + } + + else if (AVMATCH(&code, &av_NetStream_Play_Start)) { + int i; + r->m_bPlaying = TRUE; + for (i = 0; i < r->m_numCalls; i++) { + if (AVMATCH(&r->m_methodCalls[i].name, &av_play)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } + } + + else if (AVMATCH(&code, &av_NetStream_Publish_Start)) { + int i; + r->m_bPlaying = TRUE; + for (i = 0; i < r->m_numCalls; i++) { + if (AVMATCH(&r->m_methodCalls[i].name, &av_publish)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } + } + + /* Return 1 if this is a Play.Complete or Play.Stop */ + else if (AVMATCH(&code, &av_NetStream_Play_Complete) || AVMATCH(&code, &av_NetStream_Play_Stop) || AVMATCH(&code, &av_NetStream_Play_UnpublishNotify)) { + PILI_RTMP_Close(r, NULL); + ret = 1; + } + + else if (AVMATCH(&code, &av_NetStream_Seek_Notify)) { + r->m_read.flags &= ~RTMP_READ_SEEKING; + } + + else if (AVMATCH(&code, &av_NetStream_Pause_Notify)) { + if (r->m_pausing == 1 || r->m_pausing == 2) { + PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, &error); + r->m_pausing = 3; + } + } + } else if (AVMATCH(&method, &av_playlist_ready)) { + int i; + for (i = 0; i < r->m_numCalls; i++) { + if (AVMATCH(&r->m_methodCalls[i].name, &av_set_playlist)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } + } else { + } +leave: + AMF_Reset(&obj); + return ret; +} + +int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, + AMFObjectProperty *p) { + int n; + /* this is a small object search to locate the "duration" property */ + for (n = 0; n < obj->o_num; n++) { + AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); + + if (AVMATCH(&prop->p_name, name)) { + *p = *prop; + return TRUE; + } + + if (prop->p_type == AMF_OBJECT) { + if (PILI_RTMP_FindFirstMatchingProperty(&prop->p_vu.p_object, name, p)) + return TRUE; + } + } + return FALSE; +} + +/* Like above, but only check if name is a prefix of property */ +int PILI_RTMP_FindPrefixProperty(AMFObject *obj, const AVal *name, + AMFObjectProperty *p) { + int n; + for (n = 0; n < obj->o_num; n++) { + AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); + + if (prop->p_name.av_len > name->av_len && + !memcmp(prop->p_name.av_val, name->av_val, name->av_len)) { + *p = *prop; + return TRUE; + } + + if (prop->p_type == AMF_OBJECT) { + if (PILI_RTMP_FindPrefixProperty(&prop->p_vu.p_object, name, p)) + return TRUE; + } + } + return FALSE; +} + +static int + DumpMetaData(AMFObject *obj) { + AMFObjectProperty *prop; + int n; + for (n = 0; n < obj->o_num; n++) { + prop = AMF_GetProp(obj, NULL, n); + if (prop->p_type != AMF_OBJECT) { + char str[256] = ""; + switch (prop->p_type) { + case AMF_NUMBER: + snprintf(str, 255, "%.2f", prop->p_vu.p_number); + break; + case AMF_BOOLEAN: + snprintf(str, 255, "%s", + prop->p_vu.p_number != 0. ? "TRUE" : "FALSE"); + break; + case AMF_STRING: + snprintf(str, 255, "%.*s", prop->p_vu.p_aval.av_len, + prop->p_vu.p_aval.av_val); + break; + case AMF_DATE: + snprintf(str, 255, "timestamp:%.2f", prop->p_vu.p_number); + break; + default: + snprintf(str, 255, "INVALID TYPE 0x%02x", + (unsigned char)prop->p_type); + } + if (prop->p_name.av_len) { + /* chomp */ + if (strlen(str) >= 1 && str[strlen(str) - 1] == '\n') + str[strlen(str) - 1] = '\0'; + RTMP_Log(RTMP_LOGINFO, " %-22.*s%s", prop->p_name.av_len, + prop->p_name.av_val, str); + } + } else { + if (prop->p_name.av_len) + RTMP_Log(RTMP_LOGINFO, "%.*s:", prop->p_name.av_len, prop->p_name.av_val); + DumpMetaData(&prop->p_vu.p_object); + } + } + return FALSE; +} + +SAVC(onMetaData); +SAVC(duration); +SAVC(video); +SAVC(audio); + +static int + HandleMetadata(PILI_RTMP *r, char *body, unsigned int len) { + /* allright we get some info here, so parse it and print it */ + /* also keep duration or filesize to make a nice progress bar */ + + AMFObject obj; + AVal metastring; + int ret = FALSE; + + int nRes = AMF_Decode(&obj, body, len, FALSE); + if (nRes < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, error decoding meta data packet", __FUNCTION__); + return FALSE; + } + + AMF_Dump(&obj); + AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &metastring); + + if (AVMATCH(&metastring, &av_onMetaData)) { + AMFObjectProperty prop; + /* Show metadata */ + RTMP_Log(RTMP_LOGINFO, "Metadata:"); + DumpMetaData(&obj); + if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_duration, &prop)) { + r->m_fDuration = prop.p_vu.p_number; + /*RTMP_Log(RTMP_LOGDEBUG, "Set duration: %.2f", m_fDuration); */ + } + /* Search for audio or video tags */ + if (PILI_RTMP_FindPrefixProperty(&obj, &av_video, &prop)) + r->m_read.dataType |= 1; + if (PILI_RTMP_FindPrefixProperty(&obj, &av_audio, &prop)) + r->m_read.dataType |= 4; + ret = TRUE; + } + AMF_Reset(&obj); + return ret; +} + +static void + HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + if (packet->m_nBodySize >= 4) { + r->m_inChunkSize = AMF_DecodeInt32(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s, received: chunk size change to %d", __FUNCTION__, + r->m_inChunkSize); + } +} + +static void + HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet) { +} + +static void + HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet) { +} + +static void + HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + short nType = -1; + unsigned int tmp; + if (packet->m_body && packet->m_nBodySize >= 2) + nType = AMF_DecodeInt16(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s, received ctrl. type: %d, len: %d", __FUNCTION__, nType, + packet->m_nBodySize); + /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + + if (packet->m_nBodySize >= 6) { + switch (nType) { + case 0: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Begin %d", __FUNCTION__, tmp); + break; + + case 1: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream EOF %d", __FUNCTION__, tmp); + if (r->m_pausing == 1) + r->m_pausing = 2; + break; + + case 2: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Dry %d", __FUNCTION__, tmp); + break; + + case 4: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream IsRecorded %d", __FUNCTION__, tmp); + break; + + case 6: /* server ping. reply with pong. */ + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Ping %d", __FUNCTION__, tmp); + PILI_RTMP_SendCtrl(r, 0x07, tmp, 0, NULL); + break; + + /* FMS 3.5 servers send the following two controls to let the client + * know when the server has sent a complete buffer. I.e., when the + * server has sent an amount of data equal to m_nBufferMS in duration. + * The server meters its output so that data arrives at the client + * in realtime and no faster. + * + * The rtmpdump program tries to set m_nBufferMS as large as + * possible, to force the server to send data as fast as possible. + * In practice, the server appears to cap this at about 1 hour's + * worth of data. After the server has sent a complete buffer, and + * sends this BufferEmpty message, it will wait until the play + * duration of that buffer has passed before sending a new buffer. + * The BufferReady message will be sent when the new buffer starts. + * (There is no BufferReady message for the very first buffer; + * presumably the Stream Begin message is sufficient for that + * purpose.) + * + * If the network speed is much faster than the data bitrate, then + * there may be long delays between the end of one buffer and the + * start of the next. + * + * Since usually the network allows data to be sent at + * faster than realtime, and rtmpdump wants to download the data + * as fast as possible, we use this RTMP_LF_BUFX hack: when we + * get the BufferEmpty message, we send a Pause followed by an + * Unpause. This causes the server to send the next buffer immediately + * instead of waiting for the full duration to elapse. (That's + * also the purpose of the ToggleStream function, which rtmpdump + * calls if we get a read timeout.) + * + * Media player apps don't need this hack since they are just + * going to play the data in realtime anyway. It also doesn't work + * for live streams since they obviously can only be sent in + * realtime. And it's all moot if the network speed is actually + * slower than the media bitrate. + */ + case 31: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferEmpty %d", __FUNCTION__, tmp); + if (!(r->Link.lFlags & RTMP_LF_BUFX)) + break; + if (!r->m_pausing) { + r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; + PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, NULL); + r->m_pausing = 1; + } else if (r->m_pausing == 2) { + PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, NULL); + r->m_pausing = 3; + } + break; + + case 32: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferReady %d", __FUNCTION__, tmp); + break; + + default: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream xx %d", __FUNCTION__, tmp); + break; + } + } + + if (nType == 0x1A) { + RTMP_Log(RTMP_LOGDEBUG, "%s, SWFVerification ping received: ", __FUNCTION__); +#ifdef CRYPTO + /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + + /* respond with HMAC SHA256 of decompressed SWF, key is the 30byte player key, also the last 30 bytes of the server handshake are applied */ + if (r->Link.SWFSize) { + PILI_RTMP_SendCtrl(r, 0x1B, 0, 0); + } else { + RTMP_Log(RTMP_LOGERROR, + "%s: Ignoring SWFVerification request, use --swfVfy!", + __FUNCTION__); + } +#else + RTMP_Log(RTMP_LOGERROR, + "%s: Ignoring SWFVerification request, no CRYPTO support!", + __FUNCTION__); +#endif + } +} + +static void + HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + r->m_nServerBW = AMF_DecodeInt32(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s: server BW = %d", __FUNCTION__, r->m_nServerBW); +} + +static void + HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + r->m_nClientBW = AMF_DecodeInt32(packet->m_body); + if (packet->m_nBodySize > 4) + r->m_nClientBW2 = packet->m_body[4]; + else + r->m_nClientBW2 = -1; + RTMP_Log(RTMP_LOGDEBUG, "%s: client BW = %d %d", __FUNCTION__, r->m_nClientBW, + r->m_nClientBW2); +} + +static int + DecodeInt32LE(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned int val; + + val = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0]; + return val; +} + +static int + EncodeInt32LE(char *output, int nVal) { + output[0] = nVal; + nVal >>= 8; + output[1] = nVal; + nVal >>= 8; + output[2] = nVal; + nVal >>= 8; + output[3] = nVal; + return 4; +} + +int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { + uint8_t hbuf[RTMP_MAX_HEADER_SIZE] = {0}; + char *header = (char *)hbuf; + int nSize, hSize, nToRead, nChunk; + int didAlloc = FALSE; + + RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d", __FUNCTION__, r->m_sb.sb_socket); + + if (ReadN(r, (char *)hbuf, 1) == 0) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header", __FUNCTION__); + return FALSE; + } + + packet->m_headerType = (hbuf[0] & 0xc0) >> 6; + packet->m_nChannel = (hbuf[0] & 0x3f); + header++; + if (packet->m_nChannel == 0) { + if (ReadN(r, (char *)&hbuf[1], 1) != 1) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 2nd byte", + __FUNCTION__); + return FALSE; + } + packet->m_nChannel = hbuf[1]; + packet->m_nChannel += 64; + header++; + } else if (packet->m_nChannel == 1) { + int tmp; + if (ReadN(r, (char *)&hbuf[1], 2) != 2) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 3nd byte", + __FUNCTION__); + return FALSE; + } + tmp = (hbuf[2] << 8) + hbuf[1]; + packet->m_nChannel = tmp + 64; + RTMP_Log(RTMP_LOGDEBUG, "%s, m_nChannel: %0x", __FUNCTION__, packet->m_nChannel); + header += 2; + } + + nSize = packetSize[packet->m_headerType]; + + if (nSize == RTMP_LARGE_HEADER_SIZE) /* if we get a full header the timestamp is absolute */ + packet->m_hasAbsTimestamp = TRUE; + + else if (nSize < RTMP_LARGE_HEADER_SIZE) { /* using values from the last message of this channel */ + if (r->m_vecChannelsIn[packet->m_nChannel]) + memcpy(packet, r->m_vecChannelsIn[packet->m_nChannel], + sizeof(PILI_RTMPPacket)); + } + + nSize--; + + if (nSize > 0 && ReadN(r, header, nSize) != nSize) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header. type: %x", + __FUNCTION__, (unsigned int)hbuf[0]); + return FALSE; + } + + hSize = nSize + (header - (char *)hbuf); + + if (nSize >= 3) { + packet->m_nTimeStamp = AMF_DecodeInt24(header); + + /*RTMP_Log(RTMP_LOGDEBUG, "%s, reading PILI_RTMP packet chunk on channel %x, headersz %i, timestamp %i, abs timestamp %i", __FUNCTION__, packet.m_nChannel, nSize, packet.m_nTimeStamp, packet.m_hasAbsTimestamp); */ + + if (nSize >= 6) { + packet->m_nBodySize = AMF_DecodeInt24(header + 3); + packet->m_nBytesRead = 0; + PILI_RTMPPacket_Free(packet); + + if (nSize > 6) { + packet->m_packetType = header[6]; + + if (nSize == 11) + packet->m_nInfoField2 = DecodeInt32LE(header + 7); + } + } + if (packet->m_nTimeStamp == 0xffffff) { + if (ReadN(r, header + nSize, 4) != 4) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read extended timestamp", + __FUNCTION__); + return FALSE; + } + packet->m_nTimeStamp = AMF_DecodeInt32(header + nSize); + hSize += 4; + } + } + + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize); + + if (packet->m_nBodySize > 0 && packet->m_body == NULL) { + if (!PILI_RTMPPacket_Alloc(packet, packet->m_nBodySize)) { + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); + return FALSE; + } + didAlloc = TRUE; + packet->m_headerType = (hbuf[0] & 0xc0) >> 6; + } + + nToRead = packet->m_nBodySize - packet->m_nBytesRead; + nChunk = r->m_inChunkSize; + if (nToRead < nChunk) + nChunk = nToRead; + + /* Does the caller want the raw chunk? */ + if (packet->m_chunk) { + packet->m_chunk->c_headerSize = hSize; + memcpy(packet->m_chunk->c_header, hbuf, hSize); + packet->m_chunk->c_chunk = packet->m_body + packet->m_nBytesRead; + packet->m_chunk->c_chunkSize = nChunk; + } + + if (ReadN(r, packet->m_body + packet->m_nBytesRead, nChunk) != nChunk) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet body. len: %lu", + __FUNCTION__, packet->m_nBodySize); + return FALSE; + } + + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk); + + packet->m_nBytesRead += nChunk; + + /* keep the packet as ref for other packets on this channel */ + if (!r->m_vecChannelsIn[packet->m_nChannel]) + r->m_vecChannelsIn[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); + memcpy(r->m_vecChannelsIn[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); + + if (RTMPPacket_IsReady(packet)) { + /* make packet's timestamp absolute */ + if (!packet->m_hasAbsTimestamp) + packet->m_nTimeStamp += r->m_channelTimestamp[packet->m_nChannel]; /* timestamps seem to be always relative!! */ + + r->m_channelTimestamp[packet->m_nChannel] = packet->m_nTimeStamp; + + /* reset the data from the stored packet. we keep the header since we may use it later if a new packet for this channel */ + /* arrives and requests to re-use some info (small packet header) */ + r->m_vecChannelsIn[packet->m_nChannel]->m_body = NULL; + r->m_vecChannelsIn[packet->m_nChannel]->m_nBytesRead = 0; + r->m_vecChannelsIn[packet->m_nChannel]->m_hasAbsTimestamp = FALSE; /* can only be false if we reuse header */ + } else { + packet->m_body = NULL; /* so it won't be erased on free */ + } + + return TRUE; +} + +#ifndef CRYPTO +static int + HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error) { + int i; + uint32_t uptime, suptime; + int bMatch; + char type; + char clientbuf[RTMP_SIG_SIZE + 1], *clientsig = clientbuf + 1; + char serversig[RTMP_SIG_SIZE]; + + clientbuf[0] = 0x03; /* not encrypted */ + + uptime = htonl(PILI_RTMP_GetTime()); + memcpy(clientsig, &uptime, 4); + + memset(&clientsig[4], 0, 4); + +#ifdef _DEBUG + for (i = 8; i < RTMP_SIG_SIZE; i++) + clientsig[i] = 0xff; +#else + for (i = 8; i < RTMP_SIG_SIZE; i++) + clientsig[i] = (char)(rand() % 256); +#endif + + if (!WriteN(r, clientbuf, RTMP_SIG_SIZE + 1, error)) + return FALSE; + + if (ReadN(r, &type, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); + + if (type != clientbuf[0]) + RTMP_Log(RTMP_LOGWARNING, "%s: Type mismatch: client sent %d, server answered %d", + __FUNCTION__, clientbuf[0], type); + + if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + /* decode server response */ + + memcpy(&suptime, serversig, 4); + suptime = ntohl(suptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, suptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, + serversig[4], serversig[5], serversig[6], serversig[7]); + + /* 2nd part of handshake */ + if (!WriteN(r, serversig, RTMP_SIG_SIZE, error)) + return FALSE; + + if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); + if (!bMatch) { + RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); + } + return TRUE; +} + +static int + SHandShake(PILI_RTMP *r, RTMPError *error) { + int i; + char serverbuf[RTMP_SIG_SIZE + 1], *serversig = serverbuf + 1; + char clientsig[RTMP_SIG_SIZE]; + uint32_t uptime; + int bMatch; + + if (ReadN(r, serverbuf, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Request : %02X", __FUNCTION__, serverbuf[0]); + + if (serverbuf[0] != 3) { + RTMP_Log(RTMP_LOGERROR, "%s: Type unknown: client sent %02X", + __FUNCTION__, serverbuf[0]); + return FALSE; + } + + uptime = htonl(PILI_RTMP_GetTime()); + memcpy(serversig, &uptime, 4); + + memset(&serversig[4], 0, 4); +#ifdef _DEBUG + for (i = 8; i < RTMP_SIG_SIZE; i++) + serversig[i] = 0xff; +#else + for (i = 8; i < RTMP_SIG_SIZE; i++) + serversig[i] = (char)(rand() % 256); +#endif + + if (!WriteN(r, serverbuf, RTMP_SIG_SIZE + 1, error)) + return FALSE; + + if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + /* decode client response */ + + memcpy(&uptime, clientsig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, + clientsig[4], clientsig[5], clientsig[6], clientsig[7]); + + /* 2nd part of handshake */ + if (!WriteN(r, clientsig, RTMP_SIG_SIZE, error)) + return FALSE; + + if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); + if (!bMatch) { + RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); + } + return TRUE; +} +#endif + +int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error) { + int wrote; + char hbuf[RTMP_MAX_HEADER_SIZE]; + + RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, + chunk->c_chunkSize); + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize); + if (chunk->c_chunkSize) { + char *ptr = chunk->c_chunk - chunk->c_headerSize; + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize); + /* save header bytes we're about to overwrite */ + memcpy(hbuf, ptr, chunk->c_headerSize); + memcpy(ptr, chunk->c_header, chunk->c_headerSize); + wrote = WriteN(r, ptr, chunk->c_headerSize + chunk->c_chunkSize, error); + memcpy(ptr, hbuf, chunk->c_headerSize); + } else + wrote = WriteN(r, chunk->c_header, chunk->c_headerSize, error); + return wrote; +} + +int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, RTMPError *error) { + const PILI_RTMPPacket *prevPacket = r->m_vecChannelsOut[packet->m_nChannel]; + uint32_t last = 0; + int nSize; + int hSize, cSize; + char *header, *hptr, *hend, hbuf[RTMP_MAX_HEADER_SIZE], c; + uint32_t t; + char *buffer, *tbuf = NULL, *toff = NULL; + int nChunkSize; + int tlen; + + if (prevPacket && packet->m_headerType != RTMP_PACKET_SIZE_LARGE) { + /* compress a bit by using the prev packet's attributes */ + if (prevPacket->m_nBodySize == packet->m_nBodySize && prevPacket->m_packetType == packet->m_packetType && packet->m_headerType == RTMP_PACKET_SIZE_MEDIUM) + packet->m_headerType = RTMP_PACKET_SIZE_SMALL; + + if (prevPacket->m_nTimeStamp == packet->m_nTimeStamp && packet->m_headerType == RTMP_PACKET_SIZE_SMALL) + packet->m_headerType = RTMP_PACKET_SIZE_MINIMUM; + last = prevPacket->m_nTimeStamp; + } + + if (packet->m_headerType > 3) /* sanity */ + { + if (error) { + char *msg = "Sanity failed."; + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorSanityFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "sanity failed!! trying to send header of type: 0x%02x.", + (unsigned char)packet->m_headerType); + + return FALSE; + } + + nSize = packetSize[packet->m_headerType]; + hSize = nSize; + cSize = 0; + t = packet->m_nTimeStamp - last; + + if (packet->m_body) { + header = packet->m_body - nSize; + hend = packet->m_body; + } else { + header = hbuf + 6; + hend = hbuf + sizeof(hbuf); + } + + if (packet->m_nChannel > 319) + cSize = 2; + else if (packet->m_nChannel > 63) + cSize = 1; + if (cSize) { + header -= cSize; + hSize += cSize; + } + + if (nSize > 1 && t >= 0xffffff) { + header -= 4; + hSize += 4; + } + + hptr = header; + c = packet->m_headerType << 6; + switch (cSize) { + case 0: + c |= packet->m_nChannel; + break; + case 1: + break; + case 2: + c |= 1; + break; + } + *hptr++ = c; + if (cSize) { + int tmp = packet->m_nChannel - 64; + *hptr++ = tmp & 0xff; + if (cSize == 2) + *hptr++ = tmp >> 8; + } + + if (nSize > 1) { + hptr = AMF_EncodeInt24(hptr, hend, t > 0xffffff ? 0xffffff : t); + } + + if (nSize > 4) { + hptr = AMF_EncodeInt24(hptr, hend, packet->m_nBodySize); + *hptr++ = packet->m_packetType; + } + + if (nSize > 8) + hptr += EncodeInt32LE(hptr, packet->m_nInfoField2); + + if (nSize > 1 && t >= 0xffffff) + hptr = AMF_EncodeInt32(hptr, hend, t); + + nSize = packet->m_nBodySize; + buffer = packet->m_body; + nChunkSize = r->m_outChunkSize; + + RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, + nSize); + /* send all chunks in one HTTP request */ + if (r->Link.protocol & RTMP_FEATURE_HTTP) { + int chunks = (nSize + nChunkSize - 1) / nChunkSize; + if (chunks > 1) { + tlen = chunks * (cSize + 1) + nSize + hSize; + tbuf = malloc(tlen); + if (!tbuf) + return FALSE; + toff = tbuf; + } + } + while (nSize + hSize) { + int wrote; + + if (nSize < nChunkSize) + nChunkSize = nSize; + + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize); + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize); + if (tbuf) { + memcpy(toff, header, nChunkSize + hSize); + toff += nChunkSize + hSize; + } else { + wrote = WriteN(r, header, nChunkSize + hSize, error); + if (!wrote) + return FALSE; + } + nSize -= nChunkSize; + buffer += nChunkSize; + hSize = 0; + + if (nSize > 0) { + header = buffer - 1; + hSize = 1; + if (cSize) { + header -= cSize; + hSize += cSize; + } + *header = (0xc0 | c); + if (cSize) { + int tmp = packet->m_nChannel - 64; + header[1] = tmp & 0xff; + if (cSize == 2) + header[2] = tmp >> 8; + } + } + } + if (tbuf) { + int wrote = WriteN(r, tbuf, toff - tbuf, error); + free(tbuf); + tbuf = NULL; + if (!wrote) + return FALSE; + } + + /* we invoked a remote method */ + if (packet->m_packetType == 0x14) { + AVal method; + char *ptr; + ptr = packet->m_body + 1; + AMF_DecodeString(ptr, &method); + RTMP_Log(RTMP_LOGDEBUG, "Invoking %s", method.av_val); + /* keep it in call queue till result arrives */ + if (queue) { + int txn; + ptr += 3 + method.av_len; + txn = (int)AMF_DecodeNumber(ptr); + AV_queue(&r->m_methodCalls, &r->m_numCalls, &method, txn); + } + } + + if (!r->m_vecChannelsOut[packet->m_nChannel]) + r->m_vecChannelsOut[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); + memcpy(r->m_vecChannelsOut[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); + return TRUE; +} + +int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error) { + return SHandShake(r, error); +} + +void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error) { + if (r->m_is_closing) { + return; + } + r->m_is_closing = 1; + int i; + if (PILI_RTMP_IsConnected(r)) { + if (r->m_stream_id > 0) { + if ((r->Link.protocol & RTMP_FEATURE_WRITE)) + SendFCUnpublish(r, NULL); + i = r->m_stream_id; + r->m_stream_id = 0; + SendDeleteStream(r, i, NULL); + } + if (r->m_clientID.av_val) { + HTTP_Post(r, RTMPT_CLOSE, "", 1); + free(r->m_clientID.av_val); + r->m_clientID.av_val = NULL; + r->m_clientID.av_len = 0; + } + PILI_RTMPSockBuf_Close(&r->m_sb); + + if (error && r->m_errorCallback) { + r->m_errorCallback(error, r->m_userData); + } + } + + r->m_stream_id = -1; + r->m_sb.sb_socket = -1; + r->m_nBWCheckCounter = 0; + r->m_nBytesIn = 0; + r->m_nBytesInSent = 0; + + if (r->m_read.flags & RTMP_READ_HEADER) { + free(r->m_read.buf); + r->m_read.buf = NULL; + } + r->m_read.dataType = 0; + r->m_read.flags = 0; + r->m_read.status = 0; + r->m_read.nResumeTS = 0; + r->m_read.nIgnoredFrameCounter = 0; + r->m_read.nIgnoredFlvFrameCounter = 0; + + r->m_write.m_nBytesRead = 0; + PILI_RTMPPacket_Free(&r->m_write); + + for (i = 0; i < RTMP_CHANNELS; i++) { + if (r->m_vecChannelsIn[i]) { + PILI_RTMPPacket_Free(r->m_vecChannelsIn[i]); + free(r->m_vecChannelsIn[i]); + r->m_vecChannelsIn[i] = NULL; + } + if (r->m_vecChannelsOut[i]) { + free(r->m_vecChannelsOut[i]); + r->m_vecChannelsOut[i] = NULL; + } + } + AV_clear(r->m_methodCalls, r->m_numCalls); + r->m_methodCalls = NULL; + r->m_numCalls = 0; + r->m_numInvokes = 0; + + r->m_bPlaying = FALSE; + r->m_sb.sb_size = 0; + + r->m_msgCounter = 0; + r->m_resplen = 0; + r->m_unackd = 0; + + free(r->Link.playpath0.av_val); + r->Link.playpath0.av_val = NULL; + + if (r->Link.lFlags & RTMP_LF_FTCU) { + free(r->Link.tcUrl.av_val); + r->Link.tcUrl.av_val = NULL; + r->Link.tcUrl.av_len = 0; + r->Link.lFlags ^= RTMP_LF_FTCU; + } + +#ifdef CRYPTO + if (r->Link.dh) { + MDH_free(r->Link.dh); + r->Link.dh = NULL; + } + if (r->Link.rc4keyIn) { + RC4_free(r->Link.rc4keyIn); + r->Link.rc4keyIn = NULL; + } + if (r->Link.rc4keyOut) { + RC4_free(r->Link.rc4keyOut); + r->Link.rc4keyOut = NULL; + } +#endif +} + +int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb, int timeout) { + int nBytes; + + if (!sb->sb_size) + sb->sb_start = sb->sb_buf; + +#ifdef RTMP_FEATURE_NONBLOCK + SET_RCVTIMEO(tv, timeout); + fd_set rfds; +#endif + while (1) { +#ifdef RTMP_FEATURE_NONBLOCK + FD_ZERO(&rfds); + FD_SET(sb->sb_socket, &rfds); + int ret = select(sb->sb_socket + 1, &rfds, NULL, NULL, &tv); + if (ret < 0) { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGDEBUG, "%s, recv select error. GetSockError(): %d (%s)", + __FUNCTION__, sockerr, strerror(sockerr)); + if (sockerr == EINTR && !PILI_RTMP_ctrlC) + continue; + + sb->sb_timedout = TRUE; + nBytes = 0; + break; + } else if (ret == 0) { + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP recv error select timeout %d", __FUNCTION__, timeout); + sb->sb_timedout = TRUE; + nBytes = 0; + break; + } else if (!FD_ISSET(sb->sb_socket, &rfds)) { + sb->sb_timedout = TRUE; + nBytes = 0; + break; + } +#endif + + nBytes = sizeof(sb->sb_buf) - sb->sb_size - (sb->sb_start - sb->sb_buf); +#if defined(CRYPTO) && !defined(NO_SSL) + if (sb->sb_ssl) { + nBytes = TLS_read(sb->sb_ssl, sb->sb_start + sb->sb_size, nBytes); + } else +#endif + { + nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, 0); + } + if (nBytes != -1) { + sb->sb_size += nBytes; + } else { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGDEBUG, "%s, recv returned %d. GetSockError(): %d (%s)", + __FUNCTION__, nBytes, sockerr, strerror(sockerr)); + if (sockerr == EINTR && !PILI_RTMP_ctrlC) + continue; + + if (sockerr == EWOULDBLOCK || sockerr == EAGAIN) { +#ifdef RTMP_FEATURE_NONBLOCK + continue; +#else + sb->sb_timedout = TRUE; + nBytes = 0; +#endif + } + } + break; + } + + return nBytes; +} + +int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len) { + int rc; + +#ifdef _DEBUG + fwrite(buf, 1, len, netstackdump); +#endif + +#if defined(CRYPTO) && !defined(NO_SSL) + if (sb->sb_ssl) { + rc = TLS_write(sb->sb_ssl, buf, len); + } else +#endif + { + rc = send(sb->sb_socket, buf, len, 0); + } + return rc; +} + +int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb) { +#if defined(CRYPTO) && !defined(NO_SSL) + if (sb->sb_ssl) { + TLS_shutdown(sb->sb_ssl); + TLS_close(sb->sb_ssl); + sb->sb_ssl = NULL; + } +#endif + return closesocket(sb->sb_socket); +} + +#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) + +static void + DecodeTEA(AVal *key, AVal *text) { + uint32_t *v, k[4] = {0}, u; + uint32_t z, y, sum = 0, e, DELTA = 0x9e3779b9; + int32_t p, q; + int i, n; + unsigned char *ptr, *out; + + /* prep key: pack 1st 16 chars into 4 LittleEndian ints */ + ptr = (unsigned char *)key->av_val; + u = 0; + n = 0; + v = k; + p = key->av_len > 16 ? 16 : key->av_len; + for (i = 0; i < p; i++) { + u |= ptr[i] << (n * 8); + if (n == 3) { + *v++ = u; + u = 0; + n = 0; + } else { + n++; + } + } + /* any trailing chars */ + if (u) + *v = u; + + /* prep text: hex2bin, multiples of 4 */ + n = (text->av_len + 7) / 8; + out = malloc(n * 8); + ptr = (unsigned char *)text->av_val; + v = (uint32_t *)out; + for (i = 0; i < n; i++) { + u = (HEX2BIN(ptr[0]) << 4) + HEX2BIN(ptr[1]); + u |= ((HEX2BIN(ptr[2]) << 4) + HEX2BIN(ptr[3])) << 8; + u |= ((HEX2BIN(ptr[4]) << 4) + HEX2BIN(ptr[5])) << 16; + u |= ((HEX2BIN(ptr[6]) << 4) + HEX2BIN(ptr[7])) << 24; + *v++ = u; + ptr += 8; + } + v = (uint32_t *)out; + +/* http://www.movable-type.co.uk/scripts/tea-block.html */ +#define MX (((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (k[(p & 3) ^ e] ^ z)); + z = v[n - 1]; + y = v[0]; + q = 6 + 52 / n; + sum = q * DELTA; + while (sum != 0) { + e = sum >> 2 & 3; + for (p = n - 1; p > 0; p--) + z = v[p - 1], y = v[p] -= MX; + z = v[n - 1]; + y = v[0] -= MX; + sum -= DELTA; + } + + text->av_len /= 2; + memcpy(text->av_val, out, text->av_len); + free(out); +} + +static int + HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len) { + char hbuf[512]; + int hlen = snprintf(hbuf, sizeof(hbuf), "POST /%s%s/%d HTTP/1.1\r\n" + "Host: %.*s:%d\r\n" + "Accept: */*\r\n" + "User-Agent: Shockwave Flash\n" + "Connection: Keep-Alive\n" + "Cache-Control: no-cache\r\n" + "Content-type: application/x-fcs\r\n" + "Content-length: %d\r\n\r\n", + RTMPT_cmds[cmd], + r->m_clientID.av_val ? r->m_clientID.av_val : "", + r->m_msgCounter, r->Link.hostname.av_len, r->Link.hostname.av_val, + r->Link.port, len); + PILI_RTMPSockBuf_Send(&r->m_sb, hbuf, hlen); + hlen = PILI_RTMPSockBuf_Send(&r->m_sb, buf, len); + r->m_msgCounter++; + r->m_unackd++; + return hlen; +} + +static int + HTTP_read(PILI_RTMP *r, int fill) { + char *ptr; + int hlen; + + if (fill) + PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout); + if (r->m_sb.sb_size < 144) + return -1; + if (strncmp(r->m_sb.sb_start, "HTTP/1.1 200 ", 13)) + return -1; + ptr = strstr(r->m_sb.sb_start, "Content-Length:"); + if (!ptr) + return -1; + hlen = atoi(ptr + 16); + ptr = strstr(ptr, "\r\n\r\n"); + if (!ptr) + return -1; + ptr += 4; + r->m_sb.sb_size -= ptr - r->m_sb.sb_start; + r->m_sb.sb_start = ptr; + r->m_unackd--; + + if (!r->m_clientID.av_val) { + r->m_clientID.av_len = hlen; + r->m_clientID.av_val = malloc(hlen + 1); + if (!r->m_clientID.av_val) + return -1; + r->m_clientID.av_val[0] = '/'; + memcpy(r->m_clientID.av_val + 1, ptr, hlen - 1); + r->m_clientID.av_val[hlen] = 0; + r->m_sb.sb_size = 0; + } else { + r->m_polling = *ptr++; + r->m_resplen = hlen - 1; + r->m_sb.sb_start++; + r->m_sb.sb_size--; + } + return 0; +} + +#define MAX_IGNORED_FRAMES 50 + +/* Read from the stream until we get a media packet. + * Returns -3 if Play.Close/Stop, -2 if fatal error, -1 if no more media + * packets, 0 if ignorable error, >0 if there is a media packet + */ +static int + Read_1_Packet(PILI_RTMP *r, char *buf, unsigned int buflen) { + uint32_t prevTagSize = 0; + int rtnGetNextMediaPacket = 0, ret = RTMP_READ_EOF; + PILI_RTMPPacket packet = {0}; + int recopy = FALSE; + unsigned int size; + char *ptr, *pend; + uint32_t nTimeStamp = 0; + unsigned int len; + + rtnGetNextMediaPacket = PILI_RTMP_GetNextMediaPacket(r, &packet); + while (rtnGetNextMediaPacket) { + char *packetBody = packet.m_body; + unsigned int nPacketLen = packet.m_nBodySize; + + /* Return -3 if this was completed nicely with invoke message + * Play.Stop or Play.Complete + */ + if (rtnGetNextMediaPacket == 2) { + RTMP_Log(RTMP_LOGDEBUG, + "Got Play.Complete or Play.Stop from server. " + "Assuming stream is complete"); + ret = RTMP_READ_COMPLETE; + break; + } + + r->m_read.dataType |= (((packet.m_packetType == 0x08) << 2) | + (packet.m_packetType == 0x09)); + + if (packet.m_packetType == 0x09 && nPacketLen <= 5) { + RTMP_Log(RTMP_LOGDEBUG, "ignoring too small video packet: size: %d", + nPacketLen); + ret = RTMP_READ_IGNORE; + break; + } + if (packet.m_packetType == 0x08 && nPacketLen <= 1) { + RTMP_Log(RTMP_LOGDEBUG, "ignoring too small audio packet: size: %d", + nPacketLen); + ret = RTMP_READ_IGNORE; + break; + } + + if (r->m_read.flags & RTMP_READ_SEEKING) { + ret = RTMP_READ_IGNORE; + break; + } +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, TS: %d ms, abs TS: %d", + packet.m_packetType, nPacketLen, packet.m_nTimeStamp, + packet.m_hasAbsTimestamp); + if (packet.m_packetType == 0x09) + RTMP_Log(RTMP_LOGDEBUG, "frametype: %02X", (*packetBody & 0xf0)); +#endif + + if (r->m_read.flags & RTMP_READ_RESUME) { + /* check the header if we get one */ + if (packet.m_nTimeStamp == 0) { + if (r->m_read.nMetaHeaderSize > 0 && packet.m_packetType == 0x12) { + AMFObject metaObj; + int nRes = + AMF_Decode(&metaObj, packetBody, nPacketLen, FALSE); + if (nRes >= 0) { + AVal metastring; + AMFProp_GetString(AMF_GetProp(&metaObj, NULL, 0), + &metastring); + + if (AVMATCH(&metastring, &av_onMetaData)) { + /* compare */ + if ((r->m_read.nMetaHeaderSize != nPacketLen) || + (memcmp(r->m_read.metaHeader, packetBody, + r->m_read.nMetaHeaderSize) != 0)) { + ret = RTMP_READ_ERROR; + } + } + AMF_Reset(&metaObj); + if (ret == RTMP_READ_ERROR) + break; + } + } + + /* check first keyframe to make sure we got the right position + * in the stream! (the first non ignored frame) + */ + if (r->m_read.nInitialFrameSize > 0) { + /* video or audio data */ + if (packet.m_packetType == r->m_read.initialFrameType && r->m_read.nInitialFrameSize == nPacketLen) { + /* we don't compare the sizes since the packet can + * contain several FLV packets, just make sure the + * first frame is our keyframe (which we are going + * to rewrite) + */ + if (memcmp(r->m_read.initialFrame, packetBody, + r->m_read.nInitialFrameSize) == 0) { + RTMP_Log(RTMP_LOGDEBUG, "Checked keyframe successfully!"); + r->m_read.flags |= RTMP_READ_GOTKF; + /* ignore it! (what about audio data after it? it is + * handled by ignoring all 0ms frames, see below) + */ + ret = RTMP_READ_IGNORE; + break; + } + } + + /* hande FLV streams, even though the server resends the + * keyframe as an extra video packet it is also included + * in the first FLV stream chunk and we have to compare + * it and filter it out !! + */ + if (packet.m_packetType == 0x16) { + /* basically we have to find the keyframe with the + * correct TS being nResumeTS + */ + unsigned int pos = 0; + uint32_t ts = 0; + + while (pos + 11 < nPacketLen) { + /* size without header (11) and prevTagSize (4) */ + uint32_t dataSize = + AMF_DecodeInt24(packetBody + pos + 1); + ts = AMF_DecodeInt24(packetBody + pos + 4); + ts |= (packetBody[pos + 7] << 24); + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, + "keyframe search: FLV Packet: type %02X, dataSize: %d, timeStamp: %d ms", + packetBody[pos], dataSize, ts); +#endif + /* ok, is it a keyframe?: + * well doesn't work for audio! + */ + if (packetBody[pos /*6928, test 0 */] == + r->m_read.initialFrameType + /* && (packetBody[11]&0xf0) == 0x10 */) { + if (ts == r->m_read.nResumeTS) { + RTMP_Log(RTMP_LOGDEBUG, + "Found keyframe with resume-keyframe timestamp!"); + if (r->m_read.nInitialFrameSize != dataSize || memcmp(r->m_read.initialFrame, packetBody + pos + 11, r->m_read.nInitialFrameSize) != 0) { + RTMP_Log(RTMP_LOGERROR, + "FLV Stream: Keyframe doesn't match!"); + ret = RTMP_READ_ERROR; + break; + } + r->m_read.flags |= RTMP_READ_GOTFLVK; + + /* skip this packet? + * check whether skippable: + */ + if (pos + 11 + dataSize + 4 > nPacketLen) { + RTMP_Log(RTMP_LOGWARNING, + "Non skipable packet since it doesn't end with chunk, stream corrupt!"); + ret = RTMP_READ_ERROR; + break; + } + packetBody += (pos + 11 + dataSize + 4); + nPacketLen -= (pos + 11 + dataSize + 4); + + goto stopKeyframeSearch; + + } else if (r->m_read.nResumeTS < ts) { + /* the timestamp ts will only increase with + * further packets, wait for seek + */ + goto stopKeyframeSearch; + } + } + pos += (11 + dataSize + 4); + } + if (ts < r->m_read.nResumeTS) { + RTMP_Log(RTMP_LOGERROR, + "First packet does not contain keyframe, all " + "timestamps are smaller than the keyframe " + "timestamp; probably the resume seek failed?"); + } + stopKeyframeSearch:; + if (!(r->m_read.flags & RTMP_READ_GOTFLVK)) { + RTMP_Log(RTMP_LOGERROR, + "Couldn't find the seeked keyframe in this chunk!"); + ret = RTMP_READ_IGNORE; + break; + } + } + } + } + + if (packet.m_nTimeStamp > 0 && (r->m_read.flags & (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK))) { + /* another problem is that the server can actually change from + * 09/08 video/audio packets to an FLV stream or vice versa and + * our keyframe check will prevent us from going along with the + * new stream if we resumed. + * + * in this case set the 'found keyframe' variables to true. + * We assume that if we found one keyframe somewhere and were + * already beyond TS > 0 we have written data to the output + * which means we can accept all forthcoming data including the + * change between 08/09 <-> FLV packets + */ + r->m_read.flags |= (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK); + } + + /* skip till we find our keyframe + * (seeking might put us somewhere before it) + */ + if (!(r->m_read.flags & RTMP_READ_GOTKF) && + packet.m_packetType != 0x16) { + RTMP_Log(RTMP_LOGWARNING, + "Stream does not start with requested frame, ignoring data... "); + r->m_read.nIgnoredFrameCounter++; + if (r->m_read.nIgnoredFrameCounter > MAX_IGNORED_FRAMES) + ret = RTMP_READ_ERROR; /* fatal error, couldn't continue stream */ + else + ret = RTMP_READ_IGNORE; + break; + } + /* ok, do the same for FLV streams */ + if (!(r->m_read.flags & RTMP_READ_GOTFLVK) && + packet.m_packetType == 0x16) { + RTMP_Log(RTMP_LOGWARNING, + "Stream does not start with requested FLV frame, ignoring data... "); + r->m_read.nIgnoredFlvFrameCounter++; + if (r->m_read.nIgnoredFlvFrameCounter > MAX_IGNORED_FRAMES) + ret = RTMP_READ_ERROR; + else + ret = RTMP_READ_IGNORE; + break; + } + + /* we have to ignore the 0ms frames since these are the first + * keyframes; we've got these so don't mess around with multiple + * copies sent by the server to us! (if the keyframe is found at a + * later position there is only one copy and it will be ignored by + * the preceding if clause) + */ + if (!(r->m_read.flags & RTMP_READ_NO_IGNORE) && + packet.m_packetType != 0x16) { /* exclude type 0x16 (FLV) since it can + * contain several FLV packets */ + if (packet.m_nTimeStamp == 0) { + ret = RTMP_READ_IGNORE; + break; + } else { + /* stop ignoring packets */ + r->m_read.flags |= RTMP_READ_NO_IGNORE; + } + } + } + + /* calculate packet size and allocate slop buffer if necessary */ + size = nPacketLen + + ((packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) ? 11 : 0) + + (packet.m_packetType != 0x16 ? 4 : 0); + + if (size + 4 > buflen) { + /* the extra 4 is for the case of an FLV stream without a last + * prevTagSize (we need extra 4 bytes to append it) */ + r->m_read.buf = malloc(size + 4); + if (r->m_read.buf == 0) { + RTMP_Log(RTMP_LOGERROR, "Couldn't allocate memory!"); + ret = RTMP_READ_ERROR; /* fatal error */ + break; + } + recopy = TRUE; + ptr = r->m_read.buf; + } else { + ptr = buf; + } + pend = ptr + size + 4; + + /* use to return timestamp of last processed packet */ + + /* audio (0x08), video (0x09) or metadata (0x12) packets : + * construct 11 byte header then add PILI_RTMP packet's data */ + if (packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) { + nTimeStamp = r->m_read.nResumeTS + packet.m_nTimeStamp; + prevTagSize = 11 + nPacketLen; + + *ptr = packet.m_packetType; + ptr++; + ptr = AMF_EncodeInt24(ptr, pend, nPacketLen); + +#if 0 + if(packet.m_packetType == 0x09) { /* video */ + + /* H264 fix: */ + if((packetBody[0] & 0x0f) == 7) { /* CodecId = H264 */ + uint8_t packetType = *(packetBody+1); + + uint32_t ts = AMF_DecodeInt24(packetBody+2); /* composition time */ + int32_t cts = (ts+0xff800000)^0xff800000; + RTMP_Log(RTMP_LOGDEBUG, "cts : %d\n", cts); + + nTimeStamp -= cts; + /* get rid of the composition time */ + CRTMP::EncodeInt24(packetBody+2, 0); + } + RTMP_Log(RTMP_LOGDEBUG, "VIDEO: nTimeStamp: 0x%08X (%d)\n", nTimeStamp, nTimeStamp); + } +#endif + + ptr = AMF_EncodeInt24(ptr, pend, nTimeStamp); + *ptr = (char)((nTimeStamp & 0xFF000000) >> 24); + ptr++; + + /* stream id */ + ptr = AMF_EncodeInt24(ptr, pend, 0); + } + + memcpy(ptr, packetBody, nPacketLen); + len = nPacketLen; + + /* correct tagSize and obtain timestamp if we have an FLV stream */ + if (packet.m_packetType == 0x16) { + unsigned int pos = 0; + int delta; + + /* grab first timestamp and see if it needs fixing */ + nTimeStamp = AMF_DecodeInt24(packetBody + 4); + nTimeStamp |= (packetBody[7] << 24); + delta = packet.m_nTimeStamp - nTimeStamp; + + while (pos + 11 < nPacketLen) { + /* size without header (11) and without prevTagSize (4) */ + uint32_t dataSize = AMF_DecodeInt24(packetBody + pos + 1); + nTimeStamp = AMF_DecodeInt24(packetBody + pos + 4); + nTimeStamp |= (packetBody[pos + 7] << 24); + + if (delta) { + nTimeStamp += delta; + AMF_EncodeInt24(ptr + pos + 4, pend, nTimeStamp); + ptr[pos + 7] = nTimeStamp >> 24; + } + + /* set data type */ + r->m_read.dataType |= (((*(packetBody + pos) == 0x08) << 2) | + (*(packetBody + pos) == 0x09)); + + if (pos + 11 + dataSize + 4 > nPacketLen) { + if (pos + 11 + dataSize > nPacketLen) { + RTMP_Log(RTMP_LOGERROR, + "Wrong data size (%lu), stream corrupted, aborting!", + dataSize); + ret = RTMP_READ_ERROR; + break; + } + RTMP_Log(RTMP_LOGWARNING, "No tagSize found, appending!"); + + /* we have to append a last tagSize! */ + prevTagSize = dataSize + 11; + AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, + prevTagSize); + size += 4; + len += 4; + } else { + prevTagSize = + AMF_DecodeInt32(packetBody + pos + 11 + dataSize); + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, + "FLV Packet: type %02X, dataSize: %lu, tagSize: %lu, timeStamp: %lu ms", + (unsigned char)packetBody[pos], dataSize, prevTagSize, + nTimeStamp); +#endif + + if (prevTagSize != (dataSize + 11)) { +#ifdef _DEBUG + RTMP_Log(RTMP_LOGWARNING, + "Tag and data size are not consitent, writing tag size according to dataSize+11: %d", + dataSize + 11); +#endif + + prevTagSize = dataSize + 11; + AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, + prevTagSize); + } + } + + pos += prevTagSize + 4; /*(11+dataSize+4); */ + } + } + ptr += len; + + if (packet.m_packetType != 0x16) { + /* FLV tag packets contain their own prevTagSize */ + AMF_EncodeInt32(ptr, pend, prevTagSize); + } + + /* In non-live this nTimeStamp can contain an absolute TS. + * Update ext timestamp with this absolute offset in non-live mode + * otherwise report the relative one + */ + /* RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, pktTS: %dms, TS: %dms, bLiveStream: %d", packet.m_packetType, nPacketLen, packet.m_nTimeStamp, nTimeStamp, r->Link.lFlags & RTMP_LF_LIVE); */ + r->m_read.timestamp = (r->Link.lFlags & RTMP_LF_LIVE) ? packet.m_nTimeStamp : nTimeStamp; + + ret = size; + break; + } + + if (rtnGetNextMediaPacket) + PILI_RTMPPacket_Free(&packet); + + if (recopy) { + len = ret > buflen ? buflen : ret; + memcpy(buf, r->m_read.buf, len); + r->m_read.bufpos = r->m_read.buf + len; + r->m_read.buflen = ret - len; + } + return ret; +} + +static const char flvHeader[] = {'F', 'L', 'V', 0x01, + 0x00, /* 0x04 == audio, 0x01 == video */ + 0x00, 0x00, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x00}; + +#define HEADERBUF (128 * 1024) +int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size) { + int nRead = 0, total = 0; + +/* can't continue */ +fail: + switch (r->m_read.status) { + case RTMP_READ_EOF: + case RTMP_READ_COMPLETE: + return 0; + case RTMP_READ_ERROR: /* corrupted stream, resume failed */ + SetSockError(EINVAL); + return -1; + default: + break; + } + + if ((r->m_read.flags & RTMP_READ_SEEKING) && r->m_read.buf) { + /* drop whatever's here */ + free(r->m_read.buf); + r->m_read.buf = NULL; + r->m_read.bufpos = NULL; + r->m_read.buflen = 0; + } + + /* If there's leftover data buffered, use it up */ + if (r->m_read.buf) { + nRead = r->m_read.buflen; + if (nRead > size) + nRead = size; + memcpy(buf, r->m_read.bufpos, nRead); + r->m_read.buflen -= nRead; + if (!r->m_read.buflen) { + free(r->m_read.buf); + r->m_read.buf = NULL; + r->m_read.bufpos = NULL; + } else { + r->m_read.bufpos += nRead; + } + buf += nRead; + total += nRead; + size -= nRead; + } + + while (size > 0 && (nRead = Read_1_Packet(r, buf, size)) >= 0) { + if (!nRead) continue; + buf += nRead; + total += nRead; + size -= nRead; + break; + } + if (nRead < 0) + r->m_read.status = nRead; + + if (size < 0) + total += size; + return total; +} + +static const AVal av_setDataFrame = AVC("@setDataFrame"); + +int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error) { + PILI_RTMPPacket *pkt = &r->m_write; + char *pend, *enc; + int s2 = size, ret, num; + + pkt->m_nChannel = 0x04; /* source channel */ + pkt->m_nInfoField2 = r->m_stream_id; + + while (s2) { + if (!pkt->m_nBytesRead) { + if (size < 11) { + /* FLV pkt too small */ + return 0; + } + + if (buf[0] == 'F' && buf[1] == 'L' && buf[2] == 'V') { + buf += 13; + s2 -= 13; + } + + pkt->m_packetType = *buf++; + pkt->m_nBodySize = AMF_DecodeInt24(buf); + buf += 3; + pkt->m_nTimeStamp = AMF_DecodeInt24(buf); + buf += 3; + pkt->m_nTimeStamp |= *buf++ << 24; + buf += 3; + s2 -= 11; + + if (((pkt->m_packetType == 0x08 || pkt->m_packetType == 0x09) && + !pkt->m_nTimeStamp) || + pkt->m_packetType == 0x12) { + pkt->m_headerType = RTMP_PACKET_SIZE_LARGE; + if (pkt->m_packetType == 0x12) + pkt->m_nBodySize += 16; + } else { + pkt->m_headerType = RTMP_PACKET_SIZE_MEDIUM; + } + + if (!PILI_RTMPPacket_Alloc(pkt, pkt->m_nBodySize)) { + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); + return FALSE; + } + enc = pkt->m_body; + pend = enc + pkt->m_nBodySize; + if (pkt->m_packetType == 0x12) { + enc = AMF_EncodeString(enc, pend, &av_setDataFrame); + pkt->m_nBytesRead = enc - pkt->m_body; + } + } else { + enc = pkt->m_body + pkt->m_nBytesRead; + } + num = pkt->m_nBodySize - pkt->m_nBytesRead; + if (num > s2) + num = s2; + memcpy(enc, buf, num); + pkt->m_nBytesRead += num; + s2 -= num; + buf += num; + if (pkt->m_nBytesRead == pkt->m_nBodySize) { + ret = PILI_RTMP_SendPacket(r, pkt, FALSE, error); + PILI_RTMPPacket_Free(pkt); + pkt->m_nBytesRead = 0; + if (!ret) + return -1; + buf += 4; + s2 -= 4; + if (s2 < 0) + break; + } + } + return size + s2; +} + +int PILI_RTMP_Version() { + return MAJOR * 100 * 100 + MINOR * 100 + PATCH; +} + +const char * PILI_RTMP_GetReqId(){ + return reqid; +} \ No newline at end of file diff --git a/LFLiveKit/publish/pili-librtmp/rtmp.h b/LFLiveKit/publish/pili-librtmp/rtmp.h new file mode 100755 index 00000000..d8438cf0 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/rtmp.h @@ -0,0 +1,365 @@ +#ifndef __RTMP_H__ +#define __RTMP_H__ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#define NO_CRYPTO + +#if !defined(NO_CRYPTO) && !defined(CRYPTO) +#define CRYPTO +#endif + +#include +#include +#include + +#include "amf.h" +#include "error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define RTMP_LIB_VERSION 0x020300 /* 2.3 */ + +#define RTMP_FEATURE_HTTP 0x01 +#define RTMP_FEATURE_ENC 0x02 +#define RTMP_FEATURE_SSL 0x04 +#define RTMP_FEATURE_MFP 0x08 /* not yet supported */ +#define RTMP_FEATURE_WRITE 0x10 /* publish, not play */ +#define RTMP_FEATURE_HTTP2 0x20 /* server-side rtmpt */ +#define RTMP_FEATURE_NONBLOCK 0x40 /* non block socket */ + +#define RTMP_PROTOCOL_UNDEFINED -1 +#define RTMP_PROTOCOL_RTMP 0 +#define RTMP_PROTOCOL_RTMPE RTMP_FEATURE_ENC +#define RTMP_PROTOCOL_RTMPT RTMP_FEATURE_HTTP +#define RTMP_PROTOCOL_RTMPS RTMP_FEATURE_SSL +#define RTMP_PROTOCOL_RTMPTE (RTMP_FEATURE_HTTP | RTMP_FEATURE_ENC) +#define RTMP_PROTOCOL_RTMPTS (RTMP_FEATURE_HTTP | RTMP_FEATURE_SSL) +#define RTMP_PROTOCOL_RTMFP RTMP_FEATURE_MFP + +#define RTMP_DEFAULT_CHUNKSIZE 128 + +/* needs to fit largest number of bytes recv() may return */ +#define RTMP_BUFFER_CACHE_SIZE (16 * 1024) + +#define RTMP_CHANNELS 65600 + +extern const char PILI_RTMPProtocolStringsLower[][7]; +extern const AVal PILI_RTMP_DefaultFlashVer; +extern int PILI_RTMP_ctrlC; + +uint32_t PILI_RTMP_GetTime(void); + +#define RTMP_PACKET_TYPE_AUDIO 0x08 +#define RTMP_PACKET_TYPE_VIDEO 0x09 +#define RTMP_PACKET_TYPE_INFO 0x12 + +#define RTMP_MAX_HEADER_SIZE 18 + +#define RTMP_PACKET_SIZE_LARGE 0 +#define RTMP_PACKET_SIZE_MEDIUM 1 +#define RTMP_PACKET_SIZE_SMALL 2 +#define RTMP_PACKET_SIZE_MINIMUM 3 + +typedef struct PILI_RTMPChunk { + int c_headerSize; + int c_chunkSize; + char *c_chunk; + char c_header[RTMP_MAX_HEADER_SIZE]; +} PILI_RTMPChunk; + +typedef struct PILI_RTMPPacket { + uint8_t m_headerType; + uint8_t m_packetType; + uint8_t m_hasAbsTimestamp; /* timestamp absolute or relative? */ + int m_nChannel; + uint32_t m_nTimeStamp; /* timestamp */ + int32_t m_nInfoField2; /* last 4 bytes in a long header */ + uint32_t m_nBodySize; + uint32_t m_nBytesRead; + PILI_RTMPChunk *m_chunk; + char *m_body; +} PILI_RTMPPacket; + +typedef struct PILI_RTMPSockBuf { + int sb_socket; + int sb_size; /* number of unprocessed bytes in buffer */ + char *sb_start; /* pointer into sb_pBuffer of next byte to process */ + char sb_buf[RTMP_BUFFER_CACHE_SIZE]; /* data read from socket */ + int sb_timedout; + void *sb_ssl; +} PILI_RTMPSockBuf; + +void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p); +void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p); +int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize); +void PILI_RTMPPacket_Free(PILI_RTMPPacket *p); + +#define RTMPPacket_IsReady(a) ((a)->m_nBytesRead == (a)->m_nBodySize) + +typedef struct PILI_RTMP_LNK { + AVal hostname; + AVal domain; + AVal sockshost; + + AVal playpath0; /* parsed from URL */ + AVal playpath; /* passed in explicitly */ + AVal tcUrl; + AVal swfUrl; + AVal pageUrl; + AVal app; + AVal auth; + AVal flashVer; + AVal subscribepath; + AVal token; + AMFObject extras; + int edepth; + + int seekTime; + int stopTime; + +#define RTMP_LF_AUTH 0x0001 /* using auth param */ +#define RTMP_LF_LIVE 0x0002 /* stream is live */ +#define RTMP_LF_SWFV 0x0004 /* do SWF verification */ +#define RTMP_LF_PLST 0x0008 /* send playlist before play */ +#define RTMP_LF_BUFX 0x0010 /* toggle stream on BufferEmpty msg */ +#define RTMP_LF_FTCU 0x0020 /* free tcUrl on close */ + int lFlags; + + int swfAge; + + int protocol; + int timeout; /* connection timeout in seconds */ + int send_timeout; /* send data timeout */ + + unsigned short socksport; + unsigned short port; + +#ifdef CRYPTO +#define RTMP_SWF_HASHLEN 32 + void *dh; /* for encryption */ + void *rc4keyIn; + void *rc4keyOut; + + uint32_t SWFSize; + uint8_t SWFHash[RTMP_SWF_HASHLEN]; + char SWFVerificationResponse[RTMP_SWF_HASHLEN + 10]; +#endif +} PILI_RTMP_LNK; + +/* state for read() wrapper */ +typedef struct PILI_RTMP_READ { + char *buf; + char *bufpos; + unsigned int buflen; + uint32_t timestamp; + uint8_t dataType; + uint8_t flags; +#define RTMP_READ_HEADER 0x01 +#define RTMP_READ_RESUME 0x02 +#define RTMP_READ_NO_IGNORE 0x04 +#define RTMP_READ_GOTKF 0x08 +#define RTMP_READ_GOTFLVK 0x10 +#define RTMP_READ_SEEKING 0x20 + int8_t status; +#define RTMP_READ_COMPLETE -3 +#define RTMP_READ_ERROR -2 +#define RTMP_READ_EOF -1 +#define RTMP_READ_IGNORE 0 + + /* if bResume == TRUE */ + uint8_t initialFrameType; + uint32_t nResumeTS; + char *metaHeader; + char *initialFrame; + uint32_t nMetaHeaderSize; + uint32_t nInitialFrameSize; + uint32_t nIgnoredFrameCounter; + uint32_t nIgnoredFlvFrameCounter; +} PILI_RTMP_READ; + +typedef struct PILI_RTMP_METHOD { + AVal name; + int num; +} PILI_RTMP_METHOD; + +typedef void (*PILI_RTMPErrorCallback)(RTMPError *error, void *userData); + +typedef struct PILI_CONNECTION_TIME { + uint32_t connect_time; + uint32_t handshake_time; +} PILI_CONNECTION_TIME; + +typedef void (*PILI_RTMP_ConnectionTimeCallback)( + PILI_CONNECTION_TIME *conn_time, void *userData); + +typedef struct PILI_RTMP { + int m_inChunkSize; + int m_outChunkSize; + int m_nBWCheckCounter; + int m_nBytesIn; + int m_nBytesInSent; + int m_nBufferMS; + int m_stream_id; /* returned in _result from createStream */ + int m_mediaChannel; + uint32_t m_mediaStamp; + uint32_t m_pauseStamp; + int m_pausing; + int m_nServerBW; + int m_nClientBW; + uint8_t m_nClientBW2; + uint8_t m_bPlaying; + uint8_t m_bSendEncoding; + uint8_t m_bSendCounter; + + int m_numInvokes; + int m_numCalls; + PILI_RTMP_METHOD *m_methodCalls; /* remote method calls queue */ + + PILI_RTMPPacket *m_vecChannelsIn[RTMP_CHANNELS]; + PILI_RTMPPacket *m_vecChannelsOut[RTMP_CHANNELS]; + int m_channelTimestamp[RTMP_CHANNELS]; /* abs timestamp of last packet */ + + double m_fAudioCodecs; /* audioCodecs for the connect packet */ + double m_fVideoCodecs; /* videoCodecs for the connect packet */ + double m_fEncoding; /* AMF0 or AMF3 */ + + double m_fDuration; /* duration of stream in seconds */ + + int m_msgCounter; /* RTMPT stuff */ + int m_polling; + int m_resplen; + int m_unackd; + AVal m_clientID; + + PILI_RTMP_READ m_read; + PILI_RTMPPacket m_write; + PILI_RTMPSockBuf m_sb; + PILI_RTMP_LNK Link; + + PILI_RTMPErrorCallback m_errorCallback; + PILI_RTMP_ConnectionTimeCallback m_connCallback; + RTMPError *m_error; + void *m_userData; + int m_is_closing; + int m_tcp_nodelay; + uint32_t ip; +} PILI_RTMP; + +int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, + unsigned int *port, AVal *playpath, AVal *app); + +int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, + unsigned int *port, AVal *playpath, AVal *app, AVal *domain); + +void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out); +void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size); +void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error); + +int PILI_RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, + RTMPError *error); +int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error); +void PILI_RTMP_SetupStream(PILI_RTMP *r, int protocol, AVal *hostname, + unsigned int port, AVal *sockshost, AVal *playpath, + AVal *tcUrl, AVal *swfUrl, AVal *pageUrl, AVal *app, + AVal *auth, AVal *swfSHA256Hash, uint32_t swfSize, + AVal *flashVer, AVal *subscribepath, int dStart, + int dStop, int bLiveStream, long int timeout); + +int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); +struct sockaddr; +int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, + RTMPError *error); +int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); +int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error); + +int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); +int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, + RTMPError *error); +int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error); +int PILI_RTMP_IsConnected(PILI_RTMP *r); +int PILI_RTMP_Socket(PILI_RTMP *r); +int PILI_RTMP_IsTimedout(PILI_RTMP *r); +double PILI_RTMP_GetDuration(PILI_RTMP *r); +int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error); + +int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error); +int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error); +void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error); +int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); +int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); + +void PILI_RTMP_Init(PILI_RTMP *r); +void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error); +PILI_RTMP *PILI_RTMP_Alloc(void); +void PILI_RTMP_Free(PILI_RTMP *r); +void PILI_RTMP_EnableWrite(PILI_RTMP *r); + +int PILI_RTMP_LibVersion(void); +void PILI_RTMP_UserInterrupt(void); /* user typed Ctrl-C */ + +int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, + unsigned int nTime, RTMPError *error); + +/* caller probably doesn't know current timestamp, should + * just use RTMP_Pause instead + */ +int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int dTime, RTMPError *error); +int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error); + +int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, + AMFObjectProperty *p); + +int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb, int timeout); +int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len); +int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb); + +int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error); +int PILI_RTMP_SendSeek(PILI_RTMP *r, int dTime, RTMPError *error); +int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error); +int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error); +void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit); +int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size); +int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error); + +#define MAJOR 1 +#define MINOR 0 +#define PATCH 4 + +int PILI_RTMP_Version(); + +const char * PILI_RTMP_GetReqId(); + +/* hashswf.c */ +int PILI_RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, + int age); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/LFLiveKit/publish/pili-librtmp/rtmp_sys.h b/LFLiveKit/publish/pili-librtmp/rtmp_sys.h new file mode 100755 index 00000000..880457c3 --- /dev/null +++ b/LFLiveKit/publish/pili-librtmp/rtmp_sys.h @@ -0,0 +1,123 @@ +#ifndef __RTMP_SYS_H__ +#define __RTMP_SYS_H__ +/* + * Copyright (C) 2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#ifdef _WIN32 + +#ifdef _XBOX +#include +#include +#define snprintf _snprintf +#define strcasecmp stricmp +#define strncasecmp strnicmp +#define vsnprintf _vsnprintf + +#else /* !_XBOX */ +#include +#include +#endif + +#define GetSockError() WSAGetLastError() +#define SetSockError(e) WSASetLastError(e) +#define setsockopt(a, b, c, d, e) (setsockopt)(a, b, c, (const char *)d, (int)e) +#define EWOULDBLOCK \ + WSAETIMEDOUT /* we don't use nonblocking, but we do use timeouts */ +#define sleep(n) Sleep(n * 1000) +#define msleep(n) Sleep(n) +#define SET_RCVTIMEO(tv, s) int tv = s * 1000 +#else /* !_WIN32 */ +#include +#include +#include +#include +#include +#include +#include +#include +#define GetSockError() errno +#define SetSockError(e) errno = e +#undef closesocket +#define closesocket(s) close(s) +#define msleep(n) usleep(n * 1000) +#define SET_RCVTIMEO(tv, s) struct timeval tv = {s, 0} +#endif + +#include "rtmp.h" + +#ifdef USE_POLARSSL +#include +#include +#include +typedef struct tls_ctx { + havege_state hs; + ssl_session ssn; +} tls_ctx; +#define TLS_CTX tls_ctx * +#define TLS_client(ctx, s) \ + s = malloc(sizeof(ssl_context)); \ + ssl_init(s); \ + ssl_set_endpoint(s, SSL_IS_CLIENT); \ + ssl_set_authmode(s, SSL_VERIFY_NONE); \ + ssl_set_rng(s, havege_rand, &ctx->hs); \ + ssl_set_ciphers(s, ssl_default_ciphers); \ + ssl_set_session(s, 1, 600, &ctx->ssn) +#define TLS_setfd(s, fd) ssl_set_bio(s, net_recv, &fd, net_send, &fd) +#define TLS_connect(s) ssl_handshake(s) +#define TLS_read(s, b, l) ssl_read(s, (unsigned char *)b, l) +#define TLS_write(s, b, l) ssl_write(s, (unsigned char *)b, l) +#define TLS_shutdown(s) ssl_close_notify(s) +#define TLS_close(s) \ + ssl_free(s); \ + free(s) + +#elif defined(USE_GNUTLS) +#include +typedef struct tls_ctx { + gnutls_certificate_credentials_t cred; + gnutls_priority_t prios; +} tls_ctx; +#define TLS_CTX tls_ctx * +#define TLS_client(ctx, s) \ + gnutls_init((gnutls_session_t *)(&s), GNUTLS_CLIENT); \ + gnutls_priority_set(s, ctx->prios); \ + gnutls_credentials_set(s, GNUTLS_CRD_CERTIFICATE, ctx->cred) +#define TLS_setfd(s, fd) \ + gnutls_transport_set_ptr(s, (gnutls_transport_ptr_t)(long)fd) +#define TLS_connect(s) gnutls_handshake(s) +#define TLS_read(s, b, l) gnutls_record_recv(s, b, l) +#define TLS_write(s, b, l) gnutls_record_send(s, b, l) +#define TLS_shutdown(s) gnutls_bye(s, GNUTLS_SHUT_RDWR) +#define TLS_close(s) gnutls_deinit(s) + +#else /* USE_OPENSSL */ +#define TLS_CTX SSL_CTX * +#define TLS_client(ctx, s) s = SSL_new(ctx) +#define TLS_setfd(s, fd) SSL_set_fd(s, fd) +#define TLS_connect(s) SSL_connect(s) +#define TLS_read(s, b, l) SSL_read(s, b, l) +#define TLS_write(s, b, l) SSL_write(s, b, l) +#define TLS_shutdown(s) SSL_shutdown(s) +#define TLS_close(s) SSL_free(s) + +#endif +#endif diff --git a/Podfile b/Podfile index fd799652..8be53e88 100755 --- a/Podfile +++ b/Podfile @@ -2,7 +2,6 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'7.0' target 'LFLiveKit' do - pod 'pili-librtmp', '~> 1.0.3.1' pod 'LMGPUImage', '~> 0.1.9' end From 807d83c263f3901cc81d8d4b94353512ee1c61f9 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 29 Jul 2016 17:48:54 +0800 Subject: [PATCH 056/178] update podspec --- LFLiveKit.podspec | 2 +- LFLiveKit.xcodeproj/project.pbxproj | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 13633 -> 13213 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 1415f6fe..169486c8 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.platform = :ios, "7.0" s.ios.deployment_target = "7.0" s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" } - s.source_files = "LFLiveKit/**/*.{h,m,mm,cpp}" + s.source_files = "LFLiveKit/**/*.{h,m,mm,cpp,c}" s.public_header_files = "LFLiveKit/**/*.h" s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 1260774b..6d935d9f 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -721,7 +721,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = LFLiveKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -744,7 +744,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = LFLiveKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index b8b1809ad3b584a4c3ba316040f5c736785d2e1f..9b97746439e05a430762504f5e804d9b0c158917 100644 GIT binary patch delta 7599 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%0AL!&dwN9(k>C8Hd&Zcwde7dJ~ZFTK+$-2(EuDb5J z9=dGZ5Zwq}p>DLUSQpfd(T&qh&`r|4q1&Q6synT_q6=Nq-O&A}`$KnIcSkSQOZ3rt zxn7}H={0&@pQvxIFVfG}FV}ypKcGLTKcqjZ|5kroe?fmse@A~$f8T%%*dRBU3^s$q z;55V=e1=3rV?z@|lA(*ChaugNX~;J8HS{;+81fAzhUX0xhB1b5h6#q346_V#4D$^O zLx!+nrJ=^~rr|BaI>UOyhlcHjj|@8v#|*cPoY7!38DouBqum&1bQwLyc%#qQ&e*}2 zV(e(_Z0u_6ZtP)9H)a}p8%G;M#;~#4xZQZrc+vR4q&L}34wKWAXi73Ao4S}XO}$Ld zng*B#ng*MOn?{%lP35KvQ>7_1#Wc!v?Uw@r6U_sz(R&74_djx{Hk8=IS&o133DCz;!r+nIZrCz)rO zmzkHFUo)>TuQXSiSD9Cvx0<(^KQ!+!e`4Nk-fRBC{H6J4^Zi&^tTPnbH+Dqql-T*P z%VL+uz81S8c4h3^*tcUh#BPdxH}<{Qs}_SL)iT&J%2I48wUk?emNAy8mT8ukEHf=j zEH#!lEo&@mEpJ;kSTlEvJ>q2YTy4bqY`lap|-w zo5|+2HMKRjwY0UewYH_$I@&thy4t$ide{QCIkx4t-L?a^W40e{7i>3ezuRuv{?d-|+RC_0TZ+n)#PsrZSKHI*`{;GY2y~@7IzS_Rq ze!zave%OB0{;U0-L*$S+q8&0vj6>zHI+{B=JGwg399fQB$52P9W1M55W0_;KW1r)g z%A348po^bx?Jmoy&Jm>t?dC7Uz zdBcTWB3G14>XN&ZE{#j)GPq1Gm#c}Zn=98<;hN!E>H5&M*A4C{x5907d)$rOP2DZr zt=#S0$?lHsF79sb3GT)2jqYvk-R`|1_ZRL1?t|{b?xXJ0?(^=8?kn!=?%VFW?!P^3 zXYNV#|&k4^d&t=bVo?D(fp1-`r zEA~pga<9T`@S44DZ*y;wx2?B>H`UwS+tZureb$@p9poMAE%F8vP9*%85IUFeTf$u* z_!PcapUoHNbNk|beqUo>8(({0vah4Bi?5q6&DYac=3DIh#CO4W(|6ZT{9?b-ulL9L z+xa{A)BIWfzW)CH9Djko&_CK=;xF@;`$K-gKh;0oztR7xf3N>QT|tO(-I;r??u=Mn JQ~UFO{eM!*>r4Ou delta 8139 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 From d0ef23d887386c7a9f47e1b2291904c4002eca96 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 10:59:57 +0800 Subject: [PATCH 057/178] modify readme --- LFLiveKit.xcodeproj/project.pbxproj | 73 - .../UserInterfaceState.xcuserstate | Bin 13213 -> 13597 bytes LFLiveKit/publish/pili-librtmp/amf.c | 1037 ---- LFLiveKit/publish/pili-librtmp/amf.h | 180 - LFLiveKit/publish/pili-librtmp/bytes.h | 91 - LFLiveKit/publish/pili-librtmp/dh.h | 345 -- LFLiveKit/publish/pili-librtmp/dhgroups.h | 198 - LFLiveKit/publish/pili-librtmp/error.c | 26 - LFLiveKit/publish/pili-librtmp/error.h | 46 - LFLiveKit/publish/pili-librtmp/handshake.h | 1034 ---- LFLiveKit/publish/pili-librtmp/hashswf.c | 626 --- LFLiveKit/publish/pili-librtmp/http.h | 49 - LFLiveKit/publish/pili-librtmp/log.c | 209 - LFLiveKit/publish/pili-librtmp/log.h | 68 - LFLiveKit/publish/pili-librtmp/parseurl.c | 312 -- LFLiveKit/publish/pili-librtmp/rtmp.c | 4331 ----------------- LFLiveKit/publish/pili-librtmp/rtmp.h | 365 -- LFLiveKit/publish/pili-librtmp/rtmp_sys.h | 123 - Podfile | 1 + README.md | 16 +- 20 files changed, 16 insertions(+), 9114 deletions(-) delete mode 100755 LFLiveKit/publish/pili-librtmp/amf.c delete mode 100755 LFLiveKit/publish/pili-librtmp/amf.h delete mode 100755 LFLiveKit/publish/pili-librtmp/bytes.h delete mode 100755 LFLiveKit/publish/pili-librtmp/dh.h delete mode 100755 LFLiveKit/publish/pili-librtmp/dhgroups.h delete mode 100755 LFLiveKit/publish/pili-librtmp/error.c delete mode 100755 LFLiveKit/publish/pili-librtmp/error.h delete mode 100755 LFLiveKit/publish/pili-librtmp/handshake.h delete mode 100755 LFLiveKit/publish/pili-librtmp/hashswf.c delete mode 100755 LFLiveKit/publish/pili-librtmp/http.h delete mode 100755 LFLiveKit/publish/pili-librtmp/log.c delete mode 100755 LFLiveKit/publish/pili-librtmp/log.h delete mode 100755 LFLiveKit/publish/pili-librtmp/parseurl.c delete mode 100755 LFLiveKit/publish/pili-librtmp/rtmp.c delete mode 100755 LFLiveKit/publish/pili-librtmp/rtmp.h delete mode 100755 LFLiveKit/publish/pili-librtmp/rtmp_sys.h diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 6d935d9f..bc08b250 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -46,22 +46,6 @@ 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; - 849005B01D4B5C8400D2A3D5 /* amf.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005A01D4B5C8400D2A3D5 /* amf.c */; }; - 849005B11D4B5C8400D2A3D5 /* amf.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A11D4B5C8400D2A3D5 /* amf.h */; }; - 849005B21D4B5C8400D2A3D5 /* bytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A21D4B5C8400D2A3D5 /* bytes.h */; }; - 849005B31D4B5C8400D2A3D5 /* dh.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A31D4B5C8400D2A3D5 /* dh.h */; }; - 849005B41D4B5C8400D2A3D5 /* dhgroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A41D4B5C8400D2A3D5 /* dhgroups.h */; }; - 849005B51D4B5C8400D2A3D5 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005A51D4B5C8400D2A3D5 /* error.c */; }; - 849005B61D4B5C8400D2A3D5 /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A61D4B5C8400D2A3D5 /* error.h */; }; - 849005B71D4B5C8400D2A3D5 /* handshake.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A71D4B5C8400D2A3D5 /* handshake.h */; }; - 849005B81D4B5C8400D2A3D5 /* hashswf.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005A81D4B5C8400D2A3D5 /* hashswf.c */; }; - 849005B91D4B5C8400D2A3D5 /* http.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005A91D4B5C8400D2A3D5 /* http.h */; }; - 849005BA1D4B5C8400D2A3D5 /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005AA1D4B5C8400D2A3D5 /* log.c */; }; - 849005BB1D4B5C8400D2A3D5 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005AB1D4B5C8400D2A3D5 /* log.h */; }; - 849005BC1D4B5C8400D2A3D5 /* parseurl.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005AC1D4B5C8400D2A3D5 /* parseurl.c */; }; - 849005BD1D4B5C8400D2A3D5 /* rtmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 849005AD1D4B5C8400D2A3D5 /* rtmp.c */; }; - 849005BE1D4B5C8400D2A3D5 /* rtmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005AE1D4B5C8400D2A3D5 /* rtmp.h */; }; - 849005BF1D4B5C8400D2A3D5 /* rtmp_sys.h in Headers */ = {isa = PBXBuildFile; fileRef = 849005AF1D4B5C8400D2A3D5 /* rtmp_sys.h */; }; AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; @@ -136,22 +120,6 @@ 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 849005A01D4B5C8400D2A3D5 /* amf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amf.c; sourceTree = ""; }; - 849005A11D4B5C8400D2A3D5 /* amf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amf.h; sourceTree = ""; }; - 849005A21D4B5C8400D2A3D5 /* bytes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bytes.h; sourceTree = ""; }; - 849005A31D4B5C8400D2A3D5 /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = ""; }; - 849005A41D4B5C8400D2A3D5 /* dhgroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dhgroups.h; sourceTree = ""; }; - 849005A51D4B5C8400D2A3D5 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; - 849005A61D4B5C8400D2A3D5 /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; - 849005A71D4B5C8400D2A3D5 /* handshake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = handshake.h; sourceTree = ""; }; - 849005A81D4B5C8400D2A3D5 /* hashswf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashswf.c; sourceTree = ""; }; - 849005A91D4B5C8400D2A3D5 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = ""; }; - 849005AA1D4B5C8400D2A3D5 /* log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = ""; }; - 849005AB1D4B5C8400D2A3D5 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; - 849005AC1D4B5C8400D2A3D5 /* parseurl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parseurl.c; sourceTree = ""; }; - 849005AD1D4B5C8400D2A3D5 /* rtmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtmp.c; sourceTree = ""; }; - 849005AE1D4B5C8400D2A3D5 /* rtmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp.h; sourceTree = ""; }; - 849005AF1D4B5C8400D2A3D5 /* rtmp_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp_sys.h; sourceTree = ""; }; A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; @@ -330,7 +298,6 @@ 84001FC91D0016380026C63F /* publish */ = { isa = PBXGroup; children = ( - 8490059F1D4B5C8400D2A3D5 /* pili-librtmp */, B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, @@ -343,30 +310,6 @@ path = upload; sourceTree = ""; }; - 8490059F1D4B5C8400D2A3D5 /* pili-librtmp */ = { - isa = PBXGroup; - children = ( - 849005A01D4B5C8400D2A3D5 /* amf.c */, - 849005A11D4B5C8400D2A3D5 /* amf.h */, - 849005A21D4B5C8400D2A3D5 /* bytes.h */, - 849005A31D4B5C8400D2A3D5 /* dh.h */, - 849005A41D4B5C8400D2A3D5 /* dhgroups.h */, - 849005A51D4B5C8400D2A3D5 /* error.c */, - 849005A61D4B5C8400D2A3D5 /* error.h */, - 849005A71D4B5C8400D2A3D5 /* handshake.h */, - 849005A81D4B5C8400D2A3D5 /* hashswf.c */, - 849005A91D4B5C8400D2A3D5 /* http.h */, - 849005AA1D4B5C8400D2A3D5 /* log.c */, - 849005AB1D4B5C8400D2A3D5 /* log.h */, - 849005AC1D4B5C8400D2A3D5 /* parseurl.c */, - 849005AD1D4B5C8400D2A3D5 /* rtmp.c */, - 849005AE1D4B5C8400D2A3D5 /* rtmp.h */, - 849005AF1D4B5C8400D2A3D5 /* rtmp_sys.h */, - ); - name = "pili-librtmp"; - path = "LFLiveKit/publish/pili-librtmp"; - sourceTree = SOURCE_ROOT; - }; B2CD14611D45F18B008082E8 /* H264 */ = { isa = PBXGroup; children = ( @@ -399,16 +342,12 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 849005B21D4B5C8400D2A3D5 /* bytes.h in Headers */, 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, - 849005B61D4B5C8400D2A3D5 /* error.h in Headers */, B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */, 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, - 849005B71D4B5C8400D2A3D5 /* handshake.h in Headers */, - 849005BB1D4B5C8400D2A3D5 /* log.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, 84001FE71D0016380026C63F /* LFFrame.h in Headers */, @@ -418,21 +357,15 @@ 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, - 849005B91D4B5C8400D2A3D5 /* http.h in Headers */, 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, - 849005B31D4B5C8400D2A3D5 /* dh.h in Headers */, 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, - 849005BF1D4B5C8400D2A3D5 /* rtmp_sys.h in Headers */, - 849005BE1D4B5C8400D2A3D5 /* rtmp.h in Headers */, B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */, B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, - 849005B41D4B5C8400D2A3D5 /* dhgroups.h in Headers */, B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, - 849005B11D4B5C8400D2A3D5 /* amf.h in Headers */, B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */, 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, ); @@ -571,7 +504,6 @@ files = ( 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, - 849005B81D4B5C8400D2A3D5 /* hashswf.c in Sources */, B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */, 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, @@ -579,23 +511,18 @@ 84001FE81D0016380026C63F /* LFFrame.m in Sources */, B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */, B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, - 849005B51D4B5C8400D2A3D5 /* error.c in Sources */, B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */, - 849005BC1D4B5C8400D2A3D5 /* parseurl.c in Sources */, 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */, B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */, B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, - 849005BA1D4B5C8400D2A3D5 /* log.c in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, - 849005B01D4B5C8400D2A3D5 /* amf.c in Sources */, 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, - 849005BD1D4B5C8400D2A3D5 /* rtmp.c in Sources */, 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */, ); diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 9b97746439e05a430762504f5e804d9b0c158917..dd95fbe7be4f2bddedc05c5b185d17780923ecad 100644 GIT binary patch delta 7756 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 -#include -#include - -#include "amf.h" -#include "bytes.h" -#include "log.h" -#include "rtmp_sys.h" - -static const AMFObjectProperty AMFProp_Invalid = {{0, 0}, AMF_INVALID}; -static const AVal AV_empty = {0, 0}; - -/* Data is Big-Endian */ -unsigned short - AMF_DecodeInt16(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned short val; - val = (c[0] << 8) | c[1]; - return val; -} - -unsigned int - AMF_DecodeInt24(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned int val; - val = (c[0] << 16) | (c[1] << 8) | c[2]; - return val; -} - -unsigned int - AMF_DecodeInt32(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned int val; - val = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3]; - return val; -} - -void AMF_DecodeString(const char *data, AVal *bv) { - bv->av_len = AMF_DecodeInt16(data); - bv->av_val = (bv->av_len > 0) ? (char *)data + 2 : NULL; -} - -void AMF_DecodeLongString(const char *data, AVal *bv) { - bv->av_len = AMF_DecodeInt32(data); - bv->av_val = (bv->av_len > 0) ? (char *)data + 4 : NULL; -} - -double - AMF_DecodeNumber(const char *data) { - double dVal; -#if __FLOAT_WORD_ORDER == __BYTE_ORDER -#if __BYTE_ORDER == __BIG_ENDIAN - memcpy(&dVal, data, 8); -#elif __BYTE_ORDER == __LITTLE_ENDIAN - unsigned char *ci, *co; - ci = (unsigned char *)data; - co = (unsigned char *)&dVal; - co[0] = ci[7]; - co[1] = ci[6]; - co[2] = ci[5]; - co[3] = ci[4]; - co[4] = ci[3]; - co[5] = ci[2]; - co[6] = ci[1]; - co[7] = ci[0]; -#endif -#else -#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ - unsigned char *ci, *co; - ci = (unsigned char *)data; - co = (unsigned char *)&dVal; - co[0] = ci[3]; - co[1] = ci[2]; - co[2] = ci[1]; - co[3] = ci[0]; - co[4] = ci[7]; - co[5] = ci[6]; - co[6] = ci[5]; - co[7] = ci[4]; -#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ - unsigned char *ci, *co; - ci = (unsigned char *)data; - co = (unsigned char *)&dVal; - co[0] = ci[4]; - co[1] = ci[5]; - co[2] = ci[6]; - co[3] = ci[7]; - co[4] = ci[0]; - co[5] = ci[1]; - co[6] = ci[2]; - co[7] = ci[3]; -#endif -#endif - return dVal; -} - -int AMF_DecodeBoolean(const char *data) { - return *data != 0; -} - -char * - AMF_EncodeInt16(char *output, char *outend, short nVal) { - if (output + 2 > outend) - return NULL; - - output[1] = nVal & 0xff; - output[0] = nVal >> 8; - return output + 2; -} - -char * - AMF_EncodeInt24(char *output, char *outend, int nVal) { - if (output + 3 > outend) - return NULL; - - output[2] = nVal & 0xff; - output[1] = nVal >> 8; - output[0] = nVal >> 16; - return output + 3; -} - -char * - AMF_EncodeInt32(char *output, char *outend, int nVal) { - if (output + 4 > outend) - return NULL; - - output[3] = nVal & 0xff; - output[2] = nVal >> 8; - output[1] = nVal >> 16; - output[0] = nVal >> 24; - return output + 4; -} - -char * - AMF_EncodeString(char *output, char *outend, const AVal *bv) { - if ((bv->av_len < 65536 && output + 1 + 2 + bv->av_len > outend) || - output + 1 + 4 + bv->av_len > outend) - return NULL; - - if (bv->av_len < 65536) { - *output++ = AMF_STRING; - - output = AMF_EncodeInt16(output, outend, bv->av_len); - } else { - *output++ = AMF_LONG_STRING; - - output = AMF_EncodeInt32(output, outend, bv->av_len); - } - memcpy(output, bv->av_val, bv->av_len); - output += bv->av_len; - - return output; -} - -char * - AMF_EncodeNumber(char *output, char *outend, double dVal) { - if (output + 1 + 8 > outend) - return NULL; - - *output++ = AMF_NUMBER; /* type: Number */ - -#if __FLOAT_WORD_ORDER == __BYTE_ORDER -#if __BYTE_ORDER == __BIG_ENDIAN - memcpy(output, &dVal, 8); -#elif __BYTE_ORDER == __LITTLE_ENDIAN - { - unsigned char *ci, *co; - ci = (unsigned char *)&dVal; - co = (unsigned char *)output; - co[0] = ci[7]; - co[1] = ci[6]; - co[2] = ci[5]; - co[3] = ci[4]; - co[4] = ci[3]; - co[5] = ci[2]; - co[6] = ci[1]; - co[7] = ci[0]; - } -#endif -#else -#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ - { - unsigned char *ci, *co; - ci = (unsigned char *)&dVal; - co = (unsigned char *)output; - co[0] = ci[3]; - co[1] = ci[2]; - co[2] = ci[1]; - co[3] = ci[0]; - co[4] = ci[7]; - co[5] = ci[6]; - co[6] = ci[5]; - co[7] = ci[4]; - } -#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ - { - unsigned char *ci, *co; - ci = (unsigned char *)&dVal; - co = (unsigned char *)output; - co[0] = ci[4]; - co[1] = ci[5]; - co[2] = ci[6]; - co[3] = ci[7]; - co[4] = ci[0]; - co[5] = ci[1]; - co[6] = ci[2]; - co[7] = ci[3]; - } -#endif -#endif - - return output + 8; -} - -char * - AMF_EncodeBoolean(char *output, char *outend, int bVal) { - if (output + 2 > outend) - return NULL; - - *output++ = AMF_BOOLEAN; - - *output++ = bVal ? 0x01 : 0x00; - - return output; -} - -char * - AMF_EncodeNamedString(char *output, char *outend, const AVal *strName, const AVal *strValue) { - if (output + 2 + strName->av_len > outend) - return NULL; - output = AMF_EncodeInt16(output, outend, strName->av_len); - - memcpy(output, strName->av_val, strName->av_len); - output += strName->av_len; - - return AMF_EncodeString(output, outend, strValue); -} - -char * - AMF_EncodeNamedNumber(char *output, char *outend, const AVal *strName, double dVal) { - if (output + 2 + strName->av_len > outend) - return NULL; - output = AMF_EncodeInt16(output, outend, strName->av_len); - - memcpy(output, strName->av_val, strName->av_len); - output += strName->av_len; - - return AMF_EncodeNumber(output, outend, dVal); -} - -char * - AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *strName, int bVal) { - if (output + 2 + strName->av_len > outend) - return NULL; - output = AMF_EncodeInt16(output, outend, strName->av_len); - - memcpy(output, strName->av_val, strName->av_len); - output += strName->av_len; - - return AMF_EncodeBoolean(output, outend, bVal); -} - -void AMFProp_GetName(AMFObjectProperty *prop, AVal *name) { - *name = prop->p_name; -} - -void AMFProp_SetName(AMFObjectProperty *prop, AVal *name) { - prop->p_name = *name; -} - -AMFDataType - AMFProp_GetType(AMFObjectProperty *prop) { - return prop->p_type; -} - -double - AMFProp_GetNumber(AMFObjectProperty *prop) { - return prop->p_vu.p_number; -} - -int AMFProp_GetBoolean(AMFObjectProperty *prop) { - return prop->p_vu.p_number != 0; -} - -void AMFProp_GetString(AMFObjectProperty *prop, AVal *str) { - *str = prop->p_vu.p_aval; -} - -void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj) { - *obj = prop->p_vu.p_object; -} - -int AMFProp_IsValid(AMFObjectProperty *prop) { - return prop->p_type != AMF_INVALID; -} - -char * - AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd) { - if (prop->p_type == AMF_INVALID) - return NULL; - - if (prop->p_type != AMF_NULL && pBuffer + prop->p_name.av_len + 2 + 1 >= pBufEnd) - return NULL; - - if (prop->p_type != AMF_NULL && prop->p_name.av_len) { - *pBuffer++ = prop->p_name.av_len >> 8; - *pBuffer++ = prop->p_name.av_len & 0xff; - memcpy(pBuffer, prop->p_name.av_val, prop->p_name.av_len); - pBuffer += prop->p_name.av_len; - } - - switch (prop->p_type) { - case AMF_NUMBER: - pBuffer = AMF_EncodeNumber(pBuffer, pBufEnd, prop->p_vu.p_number); - break; - - case AMF_BOOLEAN: - pBuffer = AMF_EncodeBoolean(pBuffer, pBufEnd, prop->p_vu.p_number != 0); - break; - - case AMF_STRING: - pBuffer = AMF_EncodeString(pBuffer, pBufEnd, &prop->p_vu.p_aval); - break; - - case AMF_NULL: - if (pBuffer + 1 >= pBufEnd) - return NULL; - *pBuffer++ = AMF_NULL; - break; - - case AMF_OBJECT: - pBuffer = AMF_Encode(&prop->p_vu.p_object, pBuffer, pBufEnd); - break; - - default: - RTMP_Log(RTMP_LOGERROR, "%s, invalid type. %d", __FUNCTION__, prop->p_type); - pBuffer = NULL; - }; - - return pBuffer; -} - -#define AMF3_INTEGER_MAX 268435455 -#define AMF3_INTEGER_MIN -268435456 - -int AMF3ReadInteger(const char *data, int32_t *valp) { - int i = 0; - int32_t val = 0; - - while (i <= 2) { /* handle first 3 bytes */ - if (data[i] & 0x80) { /* byte used */ - val <<= 7; /* shift up */ - val |= (data[i] & 0x7f); /* add bits */ - i++; - } else { - break; - } - } - - if (i > 2) { /* use 4th byte, all 8bits */ - val <<= 8; - val |= data[3]; - - /* range check */ - if (val > AMF3_INTEGER_MAX) - val -= (1 << 29); - } else { /* use 7bits of last unparsed byte (0xxxxxxx) */ - val <<= 7; - val |= data[i]; - } - - *valp = val; - - return i > 2 ? 4 : i + 1; -} - -int AMF3ReadString(const char *data, AVal *str) { - int32_t ref = 0; - int len; - assert(str != 0); - - len = AMF3ReadInteger(data, &ref); - data += len; - - if ((ref & 0x1) == 0) { /* reference: 0xxx */ - uint32_t refIndex = (ref >> 1); - RTMP_Log(RTMP_LOGDEBUG, - "%s, string reference, index: %d, not supported, ignoring!", - __FUNCTION__, refIndex); - return len; - } else { - uint32_t nSize = (ref >> 1); - - str->av_val = (char *)data; - str->av_len = nSize; - - return len + nSize; - } - return len; -} - -int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, - int bDecodeName) { - int nOriginalSize = nSize; - AMF3DataType type; - - prop->p_name.av_len = 0; - prop->p_name.av_val = NULL; - - if (nSize == 0 || !pBuffer) { - RTMP_Log(RTMP_LOGDEBUG, "empty buffer/no buffer pointer!"); - return -1; - } - - /* decode name */ - if (bDecodeName) { - AVal name; - int nRes = AMF3ReadString(pBuffer, &name); - - if (name.av_len <= 0) - return nRes; - - prop->p_name = name; - pBuffer += nRes; - nSize -= nRes; - } - - /* decode */ - type = *pBuffer++; - nSize--; - - switch (type) { - case AMF3_UNDEFINED: - case AMF3_NULL: - prop->p_type = AMF_NULL; - break; - case AMF3_FALSE: - prop->p_type = AMF_BOOLEAN; - prop->p_vu.p_number = 0.0; - break; - case AMF3_TRUE: - prop->p_type = AMF_BOOLEAN; - prop->p_vu.p_number = 1.0; - break; - case AMF3_INTEGER: { - int32_t res = 0; - int len = AMF3ReadInteger(pBuffer, &res); - prop->p_vu.p_number = (double)res; - prop->p_type = AMF_NUMBER; - nSize -= len; - break; - } - case AMF3_DOUBLE: - if (nSize < 8) - return -1; - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - prop->p_type = AMF_NUMBER; - nSize -= 8; - break; - case AMF3_STRING: - case AMF3_XML_DOC: - case AMF3_XML: { - int len = AMF3ReadString(pBuffer, &prop->p_vu.p_aval); - prop->p_type = AMF_STRING; - nSize -= len; - break; - } - case AMF3_DATE: { - int32_t res = 0; - int len = AMF3ReadInteger(pBuffer, &res); - - nSize -= len; - pBuffer += len; - - if ((res & 0x1) == 0) { /* reference */ - uint32_t nIndex = (res >> 1); - RTMP_Log(RTMP_LOGDEBUG, "AMF3_DATE reference: %d, not supported!", nIndex); - } else { - if (nSize < 8) - return -1; - - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - nSize -= 8; - prop->p_type = AMF_NUMBER; - } - break; - } - case AMF3_OBJECT: { - int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - case AMF3_ARRAY: - case AMF3_BYTE_ARRAY: - default: - RTMP_Log(RTMP_LOGDEBUG, "%s - AMF3 unknown/unsupported datatype 0x%02x, @0x%08X", - __FUNCTION__, (unsigned char)(*pBuffer), pBuffer); - return -1; - } - - return nOriginalSize - nSize; -} - -int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, - int bDecodeName) { - int nOriginalSize = nSize; - int nRes; - - prop->p_name.av_len = 0; - prop->p_name.av_val = NULL; - - if (nSize == 0 || !pBuffer) { - RTMP_Log(RTMP_LOGDEBUG, "%s: Empty buffer/no buffer pointer!", __FUNCTION__); - return -1; - } - - if (bDecodeName && nSize < 4) { /* at least name (length + at least 1 byte) and 1 byte of data */ - RTMP_Log(RTMP_LOGDEBUG, - "%s: Not enough data for decoding with name, less than 4 bytes!", - __FUNCTION__); - return -1; - } - - if (bDecodeName) { - unsigned short nNameSize = AMF_DecodeInt16(pBuffer); - if (nNameSize > nSize - 2) { - RTMP_Log(RTMP_LOGDEBUG, - "%s: Name size out of range: namesize (%d) > len (%d) - 2", - __FUNCTION__, nNameSize, nSize); - return -1; - } - - AMF_DecodeString(pBuffer, &prop->p_name); - nSize -= 2 + nNameSize; - pBuffer += 2 + nNameSize; - } - - if (nSize == 0) { - return -1; - } - - nSize--; - - prop->p_type = *pBuffer++; - switch (prop->p_type) { - case AMF_NUMBER: - if (nSize < 8) - return -1; - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - nSize -= 8; - break; - case AMF_BOOLEAN: - if (nSize < 1) - return -1; - prop->p_vu.p_number = (double)AMF_DecodeBoolean(pBuffer); - nSize--; - break; - case AMF_STRING: { - unsigned short nStringSize = AMF_DecodeInt16(pBuffer); - - if (nSize < (long)nStringSize + 2) - return -1; - AMF_DecodeString(pBuffer, &prop->p_vu.p_aval); - nSize -= (2 + nStringSize); - break; - } - case AMF_OBJECT: { - int nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - break; - } - case AMF_MOVIECLIP: { - RTMP_Log(RTMP_LOGERROR, "AMF_MOVIECLIP reserved!"); - return -1; - break; - } - case AMF_NULL: - case AMF_UNDEFINED: - case AMF_UNSUPPORTED: - prop->p_type = AMF_NULL; - break; - case AMF_REFERENCE: { - RTMP_Log(RTMP_LOGERROR, "AMF_REFERENCE not supported!"); - return -1; - break; - } - case AMF_ECMA_ARRAY: { - nSize -= 4; - - /* next comes the rest, mixed array has a final 0x000009 mark and names, so its an object */ - nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer + 4, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - case AMF_OBJECT_END: { - return -1; - break; - } - case AMF_STRICT_ARRAY: { - unsigned int nArrayLen = AMF_DecodeInt32(pBuffer); - nSize -= 4; - - nRes = AMF_DecodeArray(&prop->p_vu.p_object, pBuffer + 4, nSize, - nArrayLen, FALSE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - case AMF_DATE: { - RTMP_Log(RTMP_LOGDEBUG, "AMF_DATE"); - - if (nSize < 10) - return -1; - - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - prop->p_UTCoffset = AMF_DecodeInt16(pBuffer + 8); - - nSize -= 10; - break; - } - case AMF_LONG_STRING: { - unsigned int nStringSize = AMF_DecodeInt32(pBuffer); - if (nSize < (long)nStringSize + 4) - return -1; - AMF_DecodeLongString(pBuffer, &prop->p_vu.p_aval); - nSize -= (4 + nStringSize); - prop->p_type = AMF_STRING; - break; - } - case AMF_RECORDSET: { - RTMP_Log(RTMP_LOGERROR, "AMF_RECORDSET reserved!"); - return -1; - break; - } - case AMF_XML_DOC: { - RTMP_Log(RTMP_LOGERROR, "AMF_XML_DOC not supported!"); - return -1; - break; - } - case AMF_TYPED_OBJECT: { - RTMP_Log(RTMP_LOGERROR, "AMF_TYPED_OBJECT not supported!"); - return -1; - break; - } - case AMF_AVMPLUS: { - int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - default: - RTMP_Log(RTMP_LOGDEBUG, "%s - unknown datatype 0x%02x, @0x%08X", __FUNCTION__, - prop->p_type, pBuffer - 1); - return -1; - } - - return nOriginalSize - nSize; -} - -void AMFProp_Dump(AMFObjectProperty *prop) { - char strRes[256]; - char str[256]; - AVal name; - - if (prop->p_type == AMF_INVALID) { - RTMP_Log(RTMP_LOGDEBUG, "Property: INVALID"); - return; - } - - if (prop->p_type == AMF_NULL) { - RTMP_Log(RTMP_LOGDEBUG, "Property: NULL"); - return; - } - - if (prop->p_name.av_len) { - name = prop->p_name; - } else { - name.av_val = "no-name."; - name.av_len = sizeof("no-name.") - 1; - } - if (name.av_len > 18) - name.av_len = 18; - - snprintf(strRes, 255, "Name: %18.*s, ", name.av_len, name.av_val); - - if (prop->p_type == AMF_OBJECT) { - RTMP_Log(RTMP_LOGDEBUG, "Property: <%sOBJECT>", strRes); - AMF_Dump(&prop->p_vu.p_object); - return; - } - - switch (prop->p_type) { - case AMF_NUMBER: - snprintf(str, 255, "NUMBER:\t%.2f", prop->p_vu.p_number); - break; - case AMF_BOOLEAN: - snprintf(str, 255, "BOOLEAN:\t%s", - prop->p_vu.p_number != 0.0 ? "TRUE" : "FALSE"); - break; - case AMF_STRING: - snprintf(str, 255, "STRING:\t%.*s", prop->p_vu.p_aval.av_len, - prop->p_vu.p_aval.av_val); - break; - case AMF_DATE: - snprintf(str, 255, "DATE:\ttimestamp: %.2f, UTC offset: %d", - prop->p_vu.p_number, prop->p_UTCoffset); - break; - default: - snprintf(str, 255, "INVALID TYPE 0x%02x", (unsigned char)prop->p_type); - } - - RTMP_Log(RTMP_LOGDEBUG, "Property: <%s%s>", strRes, str); -} - -void AMFProp_Reset(AMFObjectProperty *prop) { - if (prop->p_type == AMF_OBJECT) - AMF_Reset(&prop->p_vu.p_object); - else { - prop->p_vu.p_aval.av_len = 0; - prop->p_vu.p_aval.av_val = NULL; - } - prop->p_type = AMF_INVALID; -} - -/* AMFObject */ - -char * - AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd) { - int i; - - if (pBuffer + 4 >= pBufEnd) - return NULL; - - *pBuffer++ = AMF_OBJECT; - - for (i = 0; i < obj->o_num; i++) { - char *res = AMFProp_Encode(&obj->o_props[i], pBuffer, pBufEnd); - if (res == NULL) { - RTMP_Log(RTMP_LOGERROR, "AMF_Encode - failed to encode property in index %d", - i); - break; - } else { - pBuffer = res; - } - } - - if (pBuffer + 3 >= pBufEnd) - return NULL; /* no room for the end marker */ - - pBuffer = AMF_EncodeInt24(pBuffer, pBufEnd, AMF_OBJECT_END); - - return pBuffer; -} - -int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, - int nArrayLen, int bDecodeName) { - int nOriginalSize = nSize; - int bError = FALSE; - - obj->o_num = 0; - obj->o_props = NULL; - while (nArrayLen > 0) { - AMFObjectProperty prop; - int nRes; - nArrayLen--; - - nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); - if (nRes == -1) - bError = TRUE; - else { - nSize -= nRes; - pBuffer += nRes; - AMF_AddProp(obj, &prop); - } - } - if (bError) - return -1; - - return nOriginalSize - nSize; -} - -int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bAMFData) { - int nOriginalSize = nSize; - int32_t ref; - int len; - - obj->o_num = 0; - obj->o_props = NULL; - if (bAMFData) { - if (*pBuffer != AMF3_OBJECT) - RTMP_Log(RTMP_LOGERROR, - "AMF3 Object encapsulated in AMF stream does not start with AMF3_OBJECT!"); - pBuffer++; - nSize--; - } - - ref = 0; - len = AMF3ReadInteger(pBuffer, &ref); - pBuffer += len; - nSize -= len; - - if ((ref & 1) == 0) { /* object reference, 0xxx */ - uint32_t objectIndex = (ref >> 1); - - RTMP_Log(RTMP_LOGDEBUG, "Object reference, index: %d", objectIndex); - } else /* object instance */ - { - int32_t classRef = (ref >> 1); - - AMF3ClassDef cd = {{0, 0}}; - AMFObjectProperty prop; - - if ((classRef & 0x1) == 0) { /* class reference */ - uint32_t classIndex = (classRef >> 1); - RTMP_Log(RTMP_LOGDEBUG, "Class reference: %d", classIndex); - } else { - int32_t classExtRef = (classRef >> 1); - int i; - - cd.cd_externalizable = (classExtRef & 0x1) == 1; - cd.cd_dynamic = ((classExtRef >> 1) & 0x1) == 1; - - cd.cd_num = classExtRef >> 2; - - /* class name */ - - len = AMF3ReadString(pBuffer, &cd.cd_name); - nSize -= len; - pBuffer += len; - - /*std::string str = className; */ - - RTMP_Log(RTMP_LOGDEBUG, - "Class name: %s, externalizable: %d, dynamic: %d, classMembers: %d", - cd.cd_name.av_val, cd.cd_externalizable, cd.cd_dynamic, - cd.cd_num); - - for (i = 0; i < cd.cd_num; i++) { - AVal memberName; - len = AMF3ReadString(pBuffer, &memberName); - RTMP_Log(RTMP_LOGDEBUG, "Member: %s", memberName.av_val); - AMF3CD_AddProp(&cd, &memberName); - nSize -= len; - pBuffer += len; - } - } - - /* add as referencable object */ - - if (cd.cd_externalizable) { - int nRes; - AVal name = AVC("DEFAULT_ATTRIBUTE"); - - RTMP_Log(RTMP_LOGDEBUG, "Externalizable, TODO check"); - - nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); - if (nRes == -1) - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", - __FUNCTION__); - else { - nSize -= nRes; - pBuffer += nRes; - } - - AMFProp_SetName(&prop, &name); - AMF_AddProp(obj, &prop); - } else { - int nRes, i; - for (i = 0; i < cd.cd_num; i++) /* non-dynamic */ - { - nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); - if (nRes == -1) - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", - __FUNCTION__); - - AMFProp_SetName(&prop, AMF3CD_GetProp(&cd, i)); - AMF_AddProp(obj, &prop); - - pBuffer += nRes; - nSize -= nRes; - } - if (cd.cd_dynamic) { - int len = 0; - - do { - nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, TRUE); - AMF_AddProp(obj, &prop); - - pBuffer += nRes; - nSize -= nRes; - - len = prop.p_name.av_len; - } while (len > 0); - } - } - RTMP_Log(RTMP_LOGDEBUG, "class object!"); - } - return nOriginalSize - nSize; -} - -int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName) { - int nOriginalSize = nSize; - int bError = FALSE; /* if there is an error while decoding - try to at least find the end mark AMF_OBJECT_END */ - - obj->o_num = 0; - obj->o_props = NULL; - while (nSize > 0) { - AMFObjectProperty prop; - int nRes; - - if (nSize >= 3 && AMF_DecodeInt24(pBuffer) == AMF_OBJECT_END) { - nSize -= 3; - bError = FALSE; - break; - } - - if (bError) { - RTMP_Log(RTMP_LOGERROR, - "DECODING ERROR, IGNORING BYTES UNTIL NEXT KNOWN PATTERN!"); - nSize--; - pBuffer++; - continue; - } - - nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); - if (nRes == -1) - bError = TRUE; - else { - nSize -= nRes; - pBuffer += nRes; - AMF_AddProp(obj, &prop); - } - } - - if (bError) - return -1; - - return nOriginalSize - nSize; -} - -void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop) { - if (!(obj->o_num & 0x0f)) - obj->o_props = - realloc(obj->o_props, (obj->o_num + 16) * sizeof(AMFObjectProperty)); - obj->o_props[obj->o_num++] = *prop; -} - -int AMF_CountProp(AMFObject *obj) { - return obj->o_num; -} - -AMFObjectProperty * - AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex) { - if (nIndex >= 0) { - if (nIndex <= obj->o_num) - return &obj->o_props[nIndex]; - } else { - int n; - for (n = 0; n < obj->o_num; n++) { - if (AVMATCH(&obj->o_props[n].p_name, name)) - return &obj->o_props[n]; - } - } - - return (AMFObjectProperty *)&AMFProp_Invalid; -} - -void AMF_Dump(AMFObject *obj) { - int n; - RTMP_Log(RTMP_LOGDEBUG, "(object begin)"); - for (n = 0; n < obj->o_num; n++) { - AMFProp_Dump(&obj->o_props[n]); - } - RTMP_Log(RTMP_LOGDEBUG, "(object end)"); -} - -void AMF_Reset(AMFObject *obj) { - int n; - for (n = 0; n < obj->o_num; n++) { - AMFProp_Reset(&obj->o_props[n]); - } - free(obj->o_props); - obj->o_props = NULL; - obj->o_num = 0; -} - -/* AMF3ClassDefinition */ - -void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop) { - if (!(cd->cd_num & 0x0f)) - cd->cd_props = realloc(cd->cd_props, (cd->cd_num + 16) * sizeof(AVal)); - cd->cd_props[cd->cd_num++] = *prop; -} - -AVal * - AMF3CD_GetProp(AMF3ClassDef *cd, int nIndex) { - if (nIndex >= cd->cd_num) - return (AVal *)&AV_empty; - return &cd->cd_props[nIndex]; -} diff --git a/LFLiveKit/publish/pili-librtmp/amf.h b/LFLiveKit/publish/pili-librtmp/amf.h deleted file mode 100755 index 77f93e84..00000000 --- a/LFLiveKit/publish/pili-librtmp/amf.h +++ /dev/null @@ -1,180 +0,0 @@ -#ifndef __AMF_H__ -#define __AMF_H__ -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include - -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - AMF_NUMBER = 0, - AMF_BOOLEAN, - AMF_STRING, - AMF_OBJECT, - AMF_MOVIECLIP, /* reserved, not used */ - AMF_NULL, - AMF_UNDEFINED, - AMF_REFERENCE, - AMF_ECMA_ARRAY, - AMF_OBJECT_END, - AMF_STRICT_ARRAY, - AMF_DATE, - AMF_LONG_STRING, - AMF_UNSUPPORTED, - AMF_RECORDSET, /* reserved, not used */ - AMF_XML_DOC, - AMF_TYPED_OBJECT, - AMF_AVMPLUS, /* switch to AMF3 */ - AMF_INVALID = 0xff -} AMFDataType; - -typedef enum { - AMF3_UNDEFINED = 0, - AMF3_NULL, - AMF3_FALSE, - AMF3_TRUE, - AMF3_INTEGER, - AMF3_DOUBLE, - AMF3_STRING, - AMF3_XML_DOC, - AMF3_DATE, - AMF3_ARRAY, - AMF3_OBJECT, - AMF3_XML, - AMF3_BYTE_ARRAY -} AMF3DataType; - -typedef struct AVal { - char *av_val; - int av_len; -} AVal; -#define AVC(str) \ - { str, sizeof(str) - 1 } -#define AVMATCH(a1, a2) \ - ((a1)->av_len == (a2)->av_len && \ - !memcmp((a1)->av_val, (a2)->av_val, (a1)->av_len)) - -struct AMFObjectProperty; - -typedef struct AMFObject { - int o_num; - struct AMFObjectProperty *o_props; -} AMFObject; - -typedef struct AMFObjectProperty { - AVal p_name; - AMFDataType p_type; - union { - double p_number; - AVal p_aval; - AMFObject p_object; - } p_vu; - int16_t p_UTCoffset; -} AMFObjectProperty; - -char *AMF_EncodeString(char *output, char *outend, const AVal *str); -char *AMF_EncodeNumber(char *output, char *outend, double dVal); -char *AMF_EncodeInt16(char *output, char *outend, short nVal); -char *AMF_EncodeInt24(char *output, char *outend, int nVal); -char *AMF_EncodeInt32(char *output, char *outend, int nVal); -char *AMF_EncodeBoolean(char *output, char *outend, int bVal); - -/* Shortcuts for AMFProp_Encode */ -char *AMF_EncodeNamedString(char *output, char *outend, const AVal *name, - const AVal *value); -char *AMF_EncodeNamedNumber(char *output, char *outend, const AVal *name, - double dVal); -char *AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *name, - int bVal); - -unsigned short AMF_DecodeInt16(const char *data); -unsigned int AMF_DecodeInt24(const char *data); -unsigned int AMF_DecodeInt32(const char *data); -void AMF_DecodeString(const char *data, AVal *str); -void AMF_DecodeLongString(const char *data, AVal *str); -int AMF_DecodeBoolean(const char *data); -double AMF_DecodeNumber(const char *data); - -char *AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd); -int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName); -int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, - int nArrayLen, int bDecodeName); -int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, - int bDecodeName); -void AMF_Dump(AMFObject *obj); -void AMF_Reset(AMFObject *obj); - -void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop); -int AMF_CountProp(AMFObject *obj); -AMFObjectProperty *AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex); - -AMFDataType AMFProp_GetType(AMFObjectProperty *prop); -void AMFProp_SetNumber(AMFObjectProperty *prop, double dval); -void AMFProp_SetBoolean(AMFObjectProperty *prop, int bflag); -void AMFProp_SetString(AMFObjectProperty *prop, AVal *str); -void AMFProp_SetObject(AMFObjectProperty *prop, AMFObject *obj); - -void AMFProp_GetName(AMFObjectProperty *prop, AVal *name); -void AMFProp_SetName(AMFObjectProperty *prop, AVal *name); -double AMFProp_GetNumber(AMFObjectProperty *prop); -int AMFProp_GetBoolean(AMFObjectProperty *prop); -void AMFProp_GetString(AMFObjectProperty *prop, AVal *str); -void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj); - -int AMFProp_IsValid(AMFObjectProperty *prop); - -char *AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd); -int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, - int bDecodeName); -int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, - int bDecodeName); - -void AMFProp_Dump(AMFObjectProperty *prop); -void AMFProp_Reset(AMFObjectProperty *prop); - -typedef struct AMF3ClassDef { - AVal cd_name; - char cd_externalizable; - char cd_dynamic; - int cd_num; - AVal *cd_props; -} AMF3ClassDef; - -void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop); -AVal *AMF3CD_GetProp(AMF3ClassDef *cd, int idx); - -#ifdef __cplusplus -} -#endif - -#endif /* __AMF_H__ */ diff --git a/LFLiveKit/publish/pili-librtmp/bytes.h b/LFLiveKit/publish/pili-librtmp/bytes.h deleted file mode 100755 index 87221cf1..00000000 --- a/LFLiveKit/publish/pili-librtmp/bytes.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#ifndef __BYTES_H__ -#define __BYTES_H__ - -#include - -#ifdef _WIN32 -/* Windows is little endian only */ -#define __LITTLE_ENDIAN 1234 -#define __BIG_ENDIAN 4321 -#define __BYTE_ORDER __LITTLE_ENDIAN -#define __FLOAT_WORD_ORDER __BYTE_ORDER - -typedef unsigned char uint8_t; - -#else /* !_WIN32 */ - -#include - -#if defined(BYTE_ORDER) && !defined(__BYTE_ORDER) -#define __BYTE_ORDER BYTE_ORDER -#endif - -#if defined(BIG_ENDIAN) && !defined(__BIG_ENDIAN) -#define __BIG_ENDIAN BIG_ENDIAN -#endif - -#if defined(LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) -#define __LITTLE_ENDIAN LITTLE_ENDIAN -#endif - -#endif /* !_WIN32 */ - -/* define default endianness */ -#ifndef __LITTLE_ENDIAN -#define __LITTLE_ENDIAN 1234 -#endif - -#ifndef __BIG_ENDIAN -#define __BIG_ENDIAN 4321 -#endif - -#ifndef __BYTE_ORDER -#warning "Byte order not defined on your system, assuming little endian!" -#define __BYTE_ORDER __LITTLE_ENDIAN -#endif - -/* ok, we assume to have the same float word order and byte order if float word - * order is not defined */ -#ifndef __FLOAT_WORD_ORDER -#warning "Float word order not defined, assuming the same as byte order!" -#define __FLOAT_WORD_ORDER __BYTE_ORDER -#endif - -#if !defined(__BYTE_ORDER) || !defined(__FLOAT_WORD_ORDER) -#error "Undefined byte or float word order!" -#endif - -#if __FLOAT_WORD_ORDER != __BIG_ENDIAN && __FLOAT_WORD_ORDER != __LITTLE_ENDIAN -#error "Unknown/unsupported float word order!" -#endif - -#if __BYTE_ORDER != __BIG_ENDIAN && __BYTE_ORDER != __LITTLE_ENDIAN -#error "Unknown/unsupported byte order!" -#endif - -#endif diff --git a/LFLiveKit/publish/pili-librtmp/dh.h b/LFLiveKit/publish/pili-librtmp/dh.h deleted file mode 100755 index d7aeb5a5..00000000 --- a/LFLiveKit/publish/pili-librtmp/dh.h +++ /dev/null @@ -1,345 +0,0 @@ -/* RTMPDump - Diffie-Hellmann Key Exchange - * Copyright (C) 2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include -#include - -#ifdef USE_POLARSSL -#include -typedef mpi *MP_t; -#define MP_new(m) \ - m = malloc(sizeof(mpi)); \ - mpi_init(m, NULL) -#define MP_set_w(mpi, w) mpi_lset(mpi, w) -#define MP_cmp(u, v) mpi_cmp_mpi(u, v) -#define MP_set(u, v) mpi_copy(u, v) -#define MP_sub_w(mpi, w) mpi_sub_int(mpi, mpi, w) -#define MP_cmp_1(mpi) mpi_cmp_int(mpi, 1) -#define MP_modexp(r, y, q, p) mpi_exp_mod(r, y, q, p, NULL) -#define MP_free(mpi) \ - mpi_free(mpi, NULL); \ - free(mpi) -#define MP_gethex(u, hex, res) \ - MP_new(u); \ - res = mpi_read_string(u, 16, hex) == 0 -#define MP_bytes(u) mpi_size(u) -#define MP_setbin(u, buf, len) mpi_write_binary(u, buf, len) -#define MP_getbin(u, buf, len) \ - MP_new(u); \ - mpi_read_binary(u, buf, len) - -typedef struct MDH { - MP_t p; - MP_t g; - MP_t pub_key; - MP_t priv_key; - long length; - dhm_context ctx; -} MDH; - -#define MDH_new() calloc(1, sizeof(MDH)) -#define MDH_free(vp) \ - { \ - MDH *dh = vp; \ - dhm_free(&dh->ctx); \ - MP_free(dh->p); \ - MP_free(dh->g); \ - MP_free(dh->pub_key); \ - MP_free(dh->priv_key); \ - free(dh); \ - } - -static int MDH_generate_key(MDH *dh) { - unsigned char out[2]; - MP_set(&dh->ctx.P, dh->p); - MP_set(&dh->ctx.G, dh->g); - dh->ctx.len = 128; - dhm_make_public(&dh->ctx, 1024, out, 1, havege_rand, &RTMP_TLS_ctx->hs); - MP_new(dh->pub_key); - MP_new(dh->priv_key); - MP_set(dh->pub_key, &dh->ctx.GX); - MP_set(dh->priv_key, &dh->ctx.X); - return 1; -} - -static int MDH_compute_key(uint8_t *secret, size_t len, MP_t pub, MDH *dh) { - int n = len; - MP_set(&dh->ctx.GY, pub); - dhm_calc_secret(&dh->ctx, secret, &n); - return 0; -} - -#elif defined(USE_GNUTLS) -#include -typedef gcry_mpi_t MP_t; -#define MP_new(m) m = gcry_mpi_new(1) -#define MP_set_w(mpi, w) gcry_mpi_set_ui(mpi, w) -#define MP_cmp(u, v) gcry_mpi_cmp(u, v) -#define MP_set(u, v) gcry_mpi_set(u, v) -#define MP_sub_w(mpi, w) gcry_mpi_sub_ui(mpi, mpi, w) -#define MP_cmp_1(mpi) gcry_mpi_cmp_ui(mpi, 1) -#define MP_modexp(r, y, q, p) gcry_mpi_powm(r, y, q, p) -#define MP_free(mpi) gcry_mpi_release(mpi) -#define MP_gethex(u, hex, res) \ - res = (gcry_mpi_scan(&u, GCRYMPI_FMT_HEX, hex, 0, 0) == 0) -#define MP_bytes(u) (gcry_mpi_get_nbits(u) + 7) / 8 -#define MP_setbin(u, buf, len) \ - gcry_mpi_print(GCRYMPI_FMT_USG, buf, len, NULL, u) -#define MP_getbin(u, buf, len) \ - gcry_mpi_scan(&u, GCRYMPI_FMT_USG, buf, len, NULL) - -typedef struct MDH { - MP_t p; - MP_t g; - MP_t pub_key; - MP_t priv_key; - long length; -} MDH; - -#define MDH_new() calloc(1, sizeof(MDH)) -#define MDH_free(dh) \ - do { \ - MP_free(((MDH *)(dh))->p); \ - MP_free(((MDH *)(dh))->g); \ - MP_free(((MDH *)(dh))->pub_key); \ - MP_free(((MDH *)(dh))->priv_key); \ - free(dh); \ - } while (0) - -extern MP_t gnutls_calc_dh_secret(MP_t *priv, MP_t g, MP_t p); -extern MP_t gnutls_calc_dh_key(MP_t y, MP_t x, MP_t p); - -#define MDH_generate_key(dh) \ - (dh->pub_key = gnutls_calc_dh_secret(&dh->priv_key, dh->g, dh->p)) -static int MDH_compute_key(uint8_t *secret, size_t len, MP_t pub, MDH *dh) { - MP_t sec = gnutls_calc_dh_key(pub, dh->priv_key, dh->p); - if (sec) { - MP_setbin(sec, secret, len); - MP_free(sec); - return 0; - } else - return -1; -} - -#else /* USE_OPENSSL */ -#include -#include - -typedef BIGNUM *MP_t; -#define MP_new(m) m = BN_new() -#define MP_set_w(mpi, w) BN_set_word(mpi, w) -#define MP_cmp(u, v) BN_cmp(u, v) -#define MP_set(u, v) BN_copy(u, v) -#define MP_sub_w(mpi, w) BN_sub_word(mpi, w) -#define MP_cmp_1(mpi) BN_cmp(mpi, BN_value_one()) -#define MP_modexp(r, y, q, p) \ - do { \ - BN_CTX *ctx = BN_CTX_new(); \ - BN_mod_exp(r, y, q, p, ctx); \ - BN_CTX_free(ctx); \ - } while (0) -#define MP_free(mpi) BN_free(mpi) -#define MP_gethex(u, hex, res) res = BN_hex2bn(&u, hex) -#define MP_bytes(u) BN_num_bytes(u) -#define MP_setbin(u, buf, len) BN_bn2bin(u, buf) -#define MP_getbin(u, buf, len) u = BN_bin2bn(buf, len, 0) - -#define MDH DH -#define MDH_new() DH_new() -#define MDH_free(dh) DH_free(dh) -#define MDH_generate_key(dh) DH_generate_key(dh) -#define MDH_compute_key(secret, seclen, pub, dh) DH_compute_key(secret, pub, dh) - -#endif - -#include "dhgroups.h" -#include "log.h" - -/* RFC 2631, Section 2.1.5, http://www.ietf.org/rfc/rfc2631.txt */ -static int isValidPublicKey(MP_t y, MP_t p, MP_t q) { - int ret = TRUE; - MP_t bn; - assert(y); - - MP_new(bn); - assert(bn); - - /* y must lie in [2,p-1] */ - MP_set_w(bn, 1); - if (MP_cmp(y, bn) < 0) { - RTMP_Log(RTMP_LOGERROR, "DH public key must be at least 2"); - ret = FALSE; - goto failed; - } - - /* bn = p-2 */ - MP_set(bn, p); - MP_sub_w(bn, 1); - if (MP_cmp(y, bn) > 0) { - RTMP_Log(RTMP_LOGERROR, "DH public key must be at most p-2"); - ret = FALSE; - goto failed; - } - - /* Verify with Sophie-Germain prime - * - * This is a nice test to make sure the public key position is calculated - * correctly. This test will fail in about 50% of the cases if applied to - * random data. - */ - if (q) { - /* y must fulfill y^q mod p = 1 */ - MP_modexp(bn, y, q, p); - - if (MP_cmp_1(bn) != 0) { - RTMP_Log(RTMP_LOGWARNING, "DH public key does not fulfill y^q mod p = 1"); - } - } - -failed: - MP_free(bn); - return ret; -} - -static MDH *DHInit(int nKeyBits) { - size_t res; - MDH *dh = MDH_new(); - - if (!dh) - goto failed; - - MP_new(dh->g); - - if (!dh->g) - goto failed; - - MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */ - if (!res) { - goto failed; - } - - MP_set_w(dh->g, 2); /* base 2 */ - - dh->length = nKeyBits; - return dh; - -failed: - if (dh) - MDH_free(dh); - - return 0; -} - -static int DHGenerateKey(MDH *dh) { - size_t res = 0; - if (!dh) - return 0; - - while (!res) { - MP_t q1 = NULL; - - if (!MDH_generate_key(dh)) - return 0; - - MP_gethex(q1, Q1024, res); - assert(res); - - res = isValidPublicKey(dh->pub_key, dh->p, q1); - if (!res) { - MP_free(dh->pub_key); - MP_free(dh->priv_key); - dh->pub_key = dh->priv_key = 0; - } - - MP_free(q1); - } - return 1; -} - -/* fill pubkey with the public key in BIG ENDIAN order - * 00 00 00 00 00 x1 x2 x3 ..... - */ - -static int DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen) { - int len; - if (!dh || !dh->pub_key) - return 0; - - len = MP_bytes(dh->pub_key); - if (len <= 0 || len > (int)nPubkeyLen) - return 0; - - memset(pubkey, 0, nPubkeyLen); - MP_setbin(dh->pub_key, pubkey + (nPubkeyLen - len), len); - return 1; -} - -#if 0 /* unused */ -static int -DHGetPrivateKey(MDH *dh, uint8_t *privkey, size_t nPrivkeyLen) -{ - if (!dh || !dh->priv_key) - return 0; - - int len = MP_bytes(dh->priv_key); - if (len <= 0 || len > (int) nPrivkeyLen) - return 0; - - memset(privkey, 0, nPrivkeyLen); - MP_setbin(dh->priv_key, privkey + (nPrivkeyLen - len), len); - return 1; -} -#endif - -/* computes the shared secret key from the private MDH value and the - * other party's public key (pubkey) - */ -static int DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen, - uint8_t *secret) { - MP_t q1 = NULL, pubkeyBn = NULL; - size_t len; - int res; - - if (!dh || !secret || nPubkeyLen >= INT_MAX) - return -1; - - MP_getbin(pubkeyBn, pubkey, nPubkeyLen); - if (!pubkeyBn) - return -1; - - MP_gethex(q1, Q1024, len); - assert(len); - - if (isValidPublicKey(pubkeyBn, dh->p, q1)) - res = MDH_compute_key(secret, nPubkeyLen, pubkeyBn, dh); - else - res = -1; - - MP_free(q1); - MP_free(pubkeyBn); - - return res; -} diff --git a/LFLiveKit/publish/pili-librtmp/dhgroups.h b/LFLiveKit/publish/pili-librtmp/dhgroups.h deleted file mode 100755 index f3d0293f..00000000 --- a/LFLiveKit/publish/pili-librtmp/dhgroups.h +++ /dev/null @@ -1,198 +0,0 @@ -/* librtmp - Diffie-Hellmann Key Exchange - * Copyright (C) 2009 Andrej Stepanchuk - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -/* from RFC 3526, see http://www.ietf.org/rfc/rfc3526.txt */ - -/* 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 } */ -#define P768 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF" - -/* 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 } */ -#define P1024 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" \ - "FFFFFFFFFFFFFFFF" - -/* Group morder largest prime factor: */ -#define Q1024 \ - "7FFFFFFFFFFFFFFFE487ED5110B4611A62633145C06E0E68" \ - "948127044533E63A0105DF531D89CD9128A5043CC71A026E" \ - "F7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E122" \ - "F242DABB312F3F637A262174D31BF6B585FFAE5B7A035BF6" \ - "F71C35FDAD44CFD2D74F9208BE258FF324943328F67329C0" \ - "FFFFFFFFFFFFFFFF" - -/* 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 } */ -#define P1536 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ - "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF" - -/* 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 } */ -#define P2048 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ - "15728E5A8AACAA68FFFFFFFFFFFFFFFF" - -/* 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 } */ -#define P3072 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ - "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" - -/* 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 } */ -#define P4096 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ - "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ - "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ - "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ - "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ - "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ - "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" \ - "FFFFFFFFFFFFFFFF" - -/* 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 } */ -#define P6144 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ - "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ - "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ - "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ - "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ - "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ - "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" \ - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" \ - "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" \ - "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" \ - "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" \ - "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" \ - "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" \ - "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" \ - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" \ - "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" \ - "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" \ - "12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF" - -/* 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 } */ -#define P8192 \ - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ - "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ - "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ - "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ - "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ - "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ - "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" \ - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" \ - "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" \ - "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" \ - "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" \ - "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" \ - "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" \ - "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" \ - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" \ - "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" \ - "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" \ - "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4" \ - "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300" \ - "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568" \ - "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" \ - "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B" \ - "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A" \ - "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36" \ - "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1" \ - "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92" \ - "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47" \ - "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" \ - "60C980DD98EDD3DFFFFFFFFFFFFFFFFF" diff --git a/LFLiveKit/publish/pili-librtmp/error.c b/LFLiveKit/publish/pili-librtmp/error.c deleted file mode 100755 index b47913df..00000000 --- a/LFLiveKit/publish/pili-librtmp/error.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "error.h" -#include -#include - -void RTMPError_Alloc(RTMPError *error, size_t msg_size) { - RTMPError_Free(error); - - error->code = 0; - error->message = (char *)malloc(msg_size + 1); - memset(error->message, 0, msg_size); -} - -void RTMPError_Free(RTMPError *error) { - if (error) { - if (error->message) { - free(error->message); - error->message = NULL; - } - } -} - -void RTMPError_Message(RTMPError *error, int code, const char *message) { - RTMPError_Alloc(error, strlen(message)); - error->code = code; - strcpy(error->message, message); -} diff --git a/LFLiveKit/publish/pili-librtmp/error.h b/LFLiveKit/publish/pili-librtmp/error.h deleted file mode 100755 index 6a8dcbe4..00000000 --- a/LFLiveKit/publish/pili-librtmp/error.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __ERROR_H__ -#define __ERROR_H__ - -#include - -typedef struct RTMPError { - int code; - char *message; -} RTMPError; - -void RTMPError_Alloc(RTMPError *error, size_t msg_size); -void RTMPError_Free(RTMPError *error); -void RTMPError_Message(RTMPError *error, int code, const char *message); - -// error defines -enum { - RTMPErrorUnknow = -1, // "Unknow error" - RTMPErrorUnknowOption = -999, // "Unknown option %s" - RTMPErrorAccessDNSFailed = -1000, // "Failed to access the DNS. (addr: %s)" - RTMPErrorFailedToConnectSocket = - -1001, // "Failed to connect socket. %d (%s)" - RTMPErrorSocksNegotiationFailed = -1002, // "Socks negotiation failed" - RTMPErrorFailedToCreateSocket = - -1003, // "Failed to create socket. %d (%s)" - RTMPErrorHandshakeFailed = -1004, // "Handshake failed" - RTMPErrorRTMPConnectFailed = -1005, // "RTMP connect failed" - RTMPErrorSendFailed = -1006, // "Send error %d (%s), (%d bytes)" - RTMPErrorServerRequestedClose = -1007, // "RTMP server requested close" - RTMPErrorNetStreamFailed = -1008, // "NetStream failed" - RTMPErrorNetStreamPlayFailed = -1009, // "NetStream play failed" - RTMPErrorNetStreamPlayStreamNotFound = - -1010, // "NetStream play stream not found" - RTMPErrorNetConnectionConnectInvalidApp = - -1011, // "NetConnection connect invalip app" - RTMPErrorSanityFailed = - -1012, // "Sanity failed. Trying to send header of type: 0x%02X" - RTMPErrorSocketClosedByPeer = -1013, // "RTMP socket closed by peer" - RTMPErrorRTMPConnectStreamFailed = -1014, // "RTMP connect stream failed" - RTMPErrorSocketTimeout = -1015, // "RTMP socket timeout" - - // SSL errors - RTMPErrorTLSConnectFailed = -1200, // "TLS_Connect failed" - RTMPErrorNoSSLOrTLSSupport = -1201, // "No SSL/TLS support" -}; - -#endif diff --git a/LFLiveKit/publish/pili-librtmp/handshake.h b/LFLiveKit/publish/pili-librtmp/handshake.h deleted file mode 100755 index f791cf74..00000000 --- a/LFLiveKit/publish/pili-librtmp/handshake.h +++ /dev/null @@ -1,1034 +0,0 @@ -/* - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * Copyright (C) 2010 - * 2a665470ced7adb7156fcef47f8199a6371c117b8a79e399a2771e0b36384090 - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -/* This file is #included in rtmp.c, it is not meant to be compiled alone */ - -#ifdef USE_POLARSSL -#include -#include -#ifndef SHA256_DIGEST_LENGTH -#define SHA256_DIGEST_LENGTH 32 -#endif -#define HMAC_CTX sha2_context -#define HMAC_setup(ctx, key, len) \ - sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) -#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - dlen = SHA256_DIGEST_LENGTH; \ - sha2_hmac_finish(&ctx, dig) - -typedef arc4_context *RC4_handle; -#define RC4_alloc(h) *h = malloc(sizeof(arc4_context)) -#define RC4_setkey(h, l, k) arc4_setup(h, k, l) -#define RC4_encrypt(h, l, d) \ - arc4_crypt(h, l, (unsigned char *)d, (unsigned char *)d) -#define RC4_encrypt2(h, l, s, d) \ - arc4_crypt(h, l, (unsigned char *)s, (unsigned char *)d) -#define RC4_free(h) free(h) - -#elif defined(USE_GNUTLS) -#include -#ifndef SHA256_DIGEST_LENGTH -#define SHA256_DIGEST_LENGTH 32 -#endif -#define HMAC_CTX gcry_md_hd_t -#define HMAC_setup(ctx, key, len) \ - gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ - gcry_md_setkey(ctx, key, len) -#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - dlen = SHA256_DIGEST_LENGTH; \ - memcpy(dig, gcry_md_read(ctx, 0), dlen); \ - gcry_md_close(ctx) - -typedef gcry_cipher_hd_t RC4_handle; -#define RC4_alloc(h) \ - gcry_cipher_open(h, GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM, 0) -#define RC4_setkey(h, l, k) gcry_cipher_setkey(h, k, l) -#define RC4_encrypt(h, l, d) gcry_cipher_encrypt(h, (void *)d, l, NULL, 0) -#define RC4_encrypt2(h, l, s, d) \ - gcry_cipher_encrypt(h, (void *)d, l, (void *)s, l) -#define RC4_free(h) gcry_cipher_close(h) - -#else /* USE_OPENSSL */ -#include -#include -#include -#if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH) -#error Your OpenSSL is too old, need 0.9.8 or newer with SHA256 -#endif -#define HMAC_setup(ctx, key, len) \ - HMAC_CTX_init(&ctx); \ - HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0) -#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - HMAC_Final(&ctx, dig, &dlen); \ - HMAC_CTX_cleanup(&ctx) - -typedef RC4_KEY *RC4_handle; -#define RC4_alloc(h) *h = malloc(sizeof(RC4_KEY)) -#define RC4_setkey(h, l, k) RC4_set_key(h, l, k) -#define RC4_encrypt(h, l, d) RC4(h, l, (uint8_t *)d, (uint8_t *)d) -#define RC4_encrypt2(h, l, s, d) RC4(h, l, (uint8_t *)s, (uint8_t *)d) -#define RC4_free(h) free(h) -#endif - -#define FP10 - -#include "dh.h" - -static const uint8_t GenuineFMSKey[] = { - 0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, - 0x62, 0x65, 0x20, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x4d, 0x65, - 0x64, 0x69, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x30, 0x30, 0x31, /* Genuine Adobe Flash Media Server 001 */ - - 0xf0, 0xee, 0xc2, 0x4a, 0x80, 0x68, 0xbe, 0xe8, 0x2e, 0x00, 0xd0, - 0xd1, 0x02, 0x9e, 0x7e, 0x57, 0x6e, 0xec, 0x5d, 0x2d, 0x29, 0x80, - 0x6f, 0xab, 0x93, 0xb8, 0xe6, 0x36, 0xcf, 0xeb, 0x31, 0xae}; /* 68 */ - -static const uint8_t GenuineFPKey[] = { - 0x47, 0x65, 0x6E, 0x75, 0x69, 0x6E, 0x65, 0x20, 0x41, 0x64, 0x6F, - 0x62, 0x65, 0x20, 0x46, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x50, 0x6C, - 0x61, 0x79, 0x65, 0x72, 0x20, 0x30, 0x30, 0x31, /* Genuine Adobe Flash - Player 001 */ - 0xF0, 0xEE, 0xC2, 0x4A, 0x80, 0x68, 0xBE, 0xE8, 0x2E, 0x00, 0xD0, - 0xD1, 0x02, 0x9E, 0x7E, 0x57, 0x6E, 0xEC, 0x5D, 0x2D, 0x29, 0x80, - 0x6F, 0xAB, 0x93, 0xB8, 0xE6, 0x36, 0xCF, 0xEB, 0x31, 0xAE}; /* 62 */ - -static void InitRC4Encryption(uint8_t *secretKey, uint8_t *pubKeyIn, - uint8_t *pubKeyOut, RC4_handle *rc4keyIn, - RC4_handle *rc4keyOut) { - uint8_t digest[SHA256_DIGEST_LENGTH]; - unsigned int digestLen = 0; - HMAC_CTX ctx; - - RC4_alloc(rc4keyIn); - RC4_alloc(rc4keyOut); - - HMAC_setup(ctx, secretKey, 128); - HMAC_crunch(ctx, pubKeyIn, 128); - HMAC_finish(ctx, digest, digestLen); - - RTMP_Log(RTMP_LOGDEBUG, "RC4 Out Key: "); - RTMP_LogHex(RTMP_LOGDEBUG, digest, 16); - - RC4_setkey(*rc4keyOut, 16, digest); - - HMAC_setup(ctx, secretKey, 128); - HMAC_crunch(ctx, pubKeyOut, 128); - HMAC_finish(ctx, digest, digestLen); - - RTMP_Log(RTMP_LOGDEBUG, "RC4 In Key: "); - RTMP_LogHex(RTMP_LOGDEBUG, digest, 16); - - RC4_setkey(*rc4keyIn, 16, digest); -} - -typedef unsigned int(getoff)(uint8_t *buf, unsigned int len); - -static unsigned int GetDHOffset2(uint8_t *handshake, unsigned int len) { - unsigned int offset = 0; - uint8_t *ptr = handshake + 768; - unsigned int res; - - assert(RTMP_SIG_SIZE <= len); - - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - - res = (offset % 632) + 8; - - if (res + 128 > 767) { - RTMP_Log(RTMP_LOGERROR, - "%s: Couldn't calculate correct DH offset (got %d), exiting!", - __FUNCTION__, res); - exit(1); - } - return res; -} - -static unsigned int GetDigestOffset2(uint8_t *handshake, unsigned int len) { - unsigned int offset = 0; - uint8_t *ptr = handshake + 772; - unsigned int res; - - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - - res = (offset % 728) + 776; - - if (res + 32 > 1535) { - RTMP_Log(RTMP_LOGERROR, - "%s: Couldn't calculate correct digest offset (got %d), exiting", - __FUNCTION__, res); - exit(1); - } - return res; -} - -static unsigned int GetDHOffset1(uint8_t *handshake, unsigned int len) { - unsigned int offset = 0; - uint8_t *ptr = handshake + 1532; - unsigned int res; - - assert(RTMP_SIG_SIZE <= len); - - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - - res = (offset % 632) + 772; - - if (res + 128 > 1531) { - RTMP_Log(RTMP_LOGERROR, - "%s: Couldn't calculate DH offset (got %d), exiting!", - __FUNCTION__, res); - exit(1); - } - - return res; -} - -static unsigned int GetDigestOffset1(uint8_t *handshake, unsigned int len) { - unsigned int offset = 0; - uint8_t *ptr = handshake + 8; - unsigned int res; - - assert(12 <= len); - - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - ptr++; - offset += (*ptr); - - res = (offset % 728) + 12; - - if (res + 32 > 771) { - RTMP_Log(RTMP_LOGERROR, - "%s: Couldn't calculate digest offset (got %d), exiting!", - __FUNCTION__, res); - exit(1); - } - - return res; -} - -static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2}; -static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2}; - -static void HMACsha256(const uint8_t *message, size_t messageLen, - const uint8_t *key, size_t keylen, uint8_t *digest) { - unsigned int digestLen; - HMAC_CTX ctx; - - HMAC_setup(ctx, key, keylen); - HMAC_crunch(ctx, message, messageLen); - HMAC_finish(ctx, digest, digestLen); - - assert(digestLen == 32); -} - -static void CalculateDigest(unsigned int digestPos, uint8_t *handshakeMessage, - const uint8_t *key, size_t keyLen, - uint8_t *digest) { - const int messageLen = RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; - uint8_t message[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH]; - - memcpy(message, handshakeMessage, digestPos); - memcpy(message + digestPos, - &handshakeMessage[digestPos + SHA256_DIGEST_LENGTH], - messageLen - digestPos); - - HMACsha256(message, messageLen, key, keyLen, digest); -} - -static int VerifyDigest(unsigned int digestPos, uint8_t *handshakeMessage, - const uint8_t *key, size_t keyLen) { - uint8_t calcDigest[SHA256_DIGEST_LENGTH]; - - CalculateDigest(digestPos, handshakeMessage, key, keyLen, calcDigest); - - return memcmp(&handshakeMessage[digestPos], calcDigest, - SHA256_DIGEST_LENGTH) == 0; -} - -/* handshake - * - * Type = [1 bytes] plain: 0x03, encrypted: 0x06, 0x08, 0x09 - * -------------------------------------------------------------------- [1536 - * bytes] - * Uptime = [4 bytes] big endian unsigned number, uptime - * Version = [4 bytes] each byte represents a version number, e.g. - * 9.0.124.0 - * ... - * - */ - -static const uint32_t rtmpe8_keys[16][4] = { - {0xbff034b2, 0x11d9081f, 0xccdfb795, 0x748de732}, - {0x086a5eb6, 0x1743090e, 0x6ef05ab8, 0xfe5a39e2}, - {0x7b10956f, 0x76ce0521, 0x2388a73a, 0x440149a1}, - {0xa943f317, 0xebf11bb2, 0xa691a5ee, 0x17f36339}, - {0x7a30e00a, 0xb529e22c, 0xa087aea5, 0xc0cb79ac}, - {0xbdce0c23, 0x2febdeff, 0x1cfaae16, 0x1123239d}, - {0x55dd3f7b, 0x77e7e62e, 0x9bb8c499, 0xc9481ee4}, - {0x407bb6b4, 0x71e89136, 0xa7aebf55, 0xca33b839}, - {0xfcf6bdc3, 0xb63c3697, 0x7ce4f825, 0x04d959b2}, - {0x28e091fd, 0x41954c4c, 0x7fb7db00, 0xe3a066f8}, - {0x57845b76, 0x4f251b03, 0x46d45bcd, 0xa2c30d29}, - {0x0acceef8, 0xda55b546, 0x03473452, 0x5863713b}, - {0xb82075dc, 0xa75f1fee, 0xd84268e8, 0xa72a44cc}, - {0x07cf6e9e, 0xa16d7b25, 0x9fa7ae6c, 0xd92f5629}, - {0xfeb1eae4, 0x8c8c3ce1, 0x4e0064a7, 0x6a387c2a}, - {0x893a9427, 0xcc3013a2, 0xf106385b, 0xa829f927}}; - -/* RTMPE type 8 uses XTEA on the regular signature - * http://en.wikipedia.org/wiki/XTEA - */ -static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid) { - unsigned int i, num_rounds = 32; - uint32_t v0, v1, sum = 0, delta = 0x9E3779B9; - uint32_t const *k; - - v0 = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); - v1 = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); - k = rtmpe8_keys[keyid]; - - for (i = 0; i < num_rounds; i++) { - v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); - sum += delta; - v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]); - } - - out[0] = v0; - v0 >>= 8; - out[1] = v0; - v0 >>= 8; - out[2] = v0; - v0 >>= 8; - out[3] = v0; - - out[4] = v1; - v1 >>= 8; - out[5] = v1; - v1 >>= 8; - out[6] = v1; - v1 >>= 8; - out[7] = v1; -} - -static int HandShake(RTMP *r, int FP9HandShake) { - int i, offalg = 0; - int dhposClient = 0; - int digestPosClient = 0; - int encrypted = r->Link.protocol & RTMP_FEATURE_ENC; - - RC4_handle keyIn = 0; - RC4_handle keyOut = 0; - - int32_t *ip; - uint32_t uptime; - - uint8_t clientbuf[RTMP_SIG_SIZE + 4], *clientsig = clientbuf + 4; - uint8_t serversig[RTMP_SIG_SIZE], client2[RTMP_SIG_SIZE], *reply; - uint8_t type; - getoff *getdh = NULL, *getdig = NULL; - - if (encrypted || r->Link.SWFSize) - FP9HandShake = TRUE; - else - FP9HandShake = FALSE; - - r->Link.rc4keyIn = r->Link.rc4keyOut = 0; - - if (encrypted) { - clientsig[-1] = 0x06; /* 0x08 is RTMPE as well */ - offalg = 1; - } else - clientsig[-1] = 0x03; - - uptime = htonl(RTMP_GetTime()); - memcpy(clientsig, &uptime, 4); - - if (FP9HandShake) { - /* set version to at least 9.0.115.0 */ - if (encrypted) { - clientsig[4] = 128; - clientsig[6] = 3; - } else { - clientsig[4] = 10; - clientsig[6] = 45; - } - clientsig[5] = 0; - clientsig[7] = 2; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Client type: %02X", __FUNCTION__, - clientsig[-1]); - getdig = digoff[offalg]; - getdh = dhoff[offalg]; - } else { - memset(&clientsig[4], 0, 4); - } - -/* generate random data */ -#ifdef _DEBUG - memset(clientsig + 8, 0, RTMP_SIG_SIZE - 8); -#else - ip = (int32_t *)(clientsig + 8); - for (i = 2; i < RTMP_SIG_SIZE / 4; i++) - *ip++ = rand(); -#endif - - /* set handshake digest */ - if (FP9HandShake) { - if (encrypted) { - /* generate Diffie-Hellmann parameters */ - r->Link.dh = DHInit(1024); - if (!r->Link.dh) { - RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!", - __FUNCTION__); - return FALSE; - } - - dhposClient = getdh(clientsig, RTMP_SIG_SIZE); - RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, - dhposClient); - - if (!DHGenerateKey(r->Link.dh)) { - RTMP_Log(RTMP_LOGERROR, - "%s: Couldn't generate Diffie-Hellmann public key!", - __FUNCTION__); - return FALSE; - } - - if (!DHGetPublicKey(r->Link.dh, &clientsig[dhposClient], 128)) { - RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__); - return FALSE; - } - } - - digestPosClient = - getdig(clientsig, RTMP_SIG_SIZE); /* reuse this value in verification */ - RTMP_Log(RTMP_LOGDEBUG, "%s: Client digest offset: %d", __FUNCTION__, - digestPosClient); - - CalculateDigest(digestPosClient, clientsig, GenuineFPKey, 30, - &clientsig[digestPosClient]); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Initial client digest: ", __FUNCTION__); - RTMP_LogHex(RTMP_LOGDEBUG, clientsig + digestPosClient, - SHA256_DIGEST_LENGTH); - } - -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, "Clientsig: "); - RTMP_LogHex(RTMP_LOGDEBUG, clientsig, RTMP_SIG_SIZE); -#endif - - if (!WriteN(r, (char *)clientsig - 1, RTMP_SIG_SIZE + 1)) - return FALSE; - - if (ReadN(r, (char *)&type, 1) != 1) /* 0x03 or 0x06 */ - return FALSE; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); - - if (type != clientsig[-1]) - RTMP_Log(RTMP_LOGWARNING, - "%s: Type mismatch: client sent %d, server answered %d", - __FUNCTION__, clientsig[-1], type); - - if (ReadN(r, (char *)serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - /* decode server response */ - memcpy(&uptime, serversig, 4); - uptime = ntohl(uptime); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, uptime); - RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, - serversig[4], serversig[5], serversig[6], serversig[7]); - - if (FP9HandShake && type == 3 && !serversig[4]) - FP9HandShake = FALSE; - -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, "Server signature:"); - RTMP_LogHex(RTMP_LOGDEBUG, serversig, RTMP_SIG_SIZE); -#endif - - if (FP9HandShake) { - uint8_t digestResp[SHA256_DIGEST_LENGTH]; - uint8_t *signatureResp = NULL; - - /* we have to use this signature now to find the correct algorithms for - * getting the digest and DH positions */ - int digestPosServer = getdig(serversig, RTMP_SIG_SIZE); - - if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36)) { - RTMP_Log(RTMP_LOGWARNING, "Trying different position for server digest!"); - offalg ^= 1; - getdig = digoff[offalg]; - getdh = dhoff[offalg]; - digestPosServer = getdig(serversig, RTMP_SIG_SIZE); - - if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36)) { - RTMP_Log( - RTMP_LOGERROR, - "Couldn't verify the server digest"); /* continuing anyway will - probably fail */ - return FALSE; - } - } - - /* generate SWFVerification token (SHA256 HMAC hash of decompressed SWF, key - * are the last 32 bytes of the server handshake) */ - if (r->Link.SWFSize) { - const char swfVerify[] = {0x01, 0x01}; - char *vend = r->Link.SWFVerificationResponse + - sizeof(r->Link.SWFVerificationResponse); - - memcpy(r->Link.SWFVerificationResponse, swfVerify, 2); - AMF_EncodeInt32(&r->Link.SWFVerificationResponse[2], vend, - r->Link.SWFSize); - AMF_EncodeInt32(&r->Link.SWFVerificationResponse[6], vend, - r->Link.SWFSize); - HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH, - &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH], - SHA256_DIGEST_LENGTH, - (uint8_t *)&r->Link.SWFVerificationResponse[10]); - } - - /* do Diffie-Hellmann Key exchange for encrypted RTMP */ - if (encrypted) { - /* compute secret key */ - uint8_t secretKey[128] = {0}; - int len, dhposServer; - - dhposServer = getdh(serversig, RTMP_SIG_SIZE); - RTMP_Log(RTMP_LOGDEBUG, "%s: Server DH public key offset: %d", - __FUNCTION__, dhposServer); - len = DHComputeSharedSecretKey(r->Link.dh, &serversig[dhposServer], 128, - secretKey); - if (len < 0) { - RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__); - return FALSE; - } - - RTMP_Log(RTMP_LOGDEBUG, "%s: Secret key: ", __FUNCTION__); - RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128); - - InitRC4Encryption(secretKey, (uint8_t *)&serversig[dhposServer], - (uint8_t *)&clientsig[dhposClient], &keyIn, &keyOut); - } - - reply = client2; -#ifdef _DEBUG - memset(reply, 0xff, RTMP_SIG_SIZE); -#else - ip = (int32_t *)reply; - for (i = 0; i < RTMP_SIG_SIZE / 4; i++) - *ip++ = rand(); -#endif - /* calculate response now */ - signatureResp = reply + RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; - - HMACsha256(&serversig[digestPosServer], SHA256_DIGEST_LENGTH, GenuineFPKey, - sizeof(GenuineFPKey), digestResp); - HMACsha256(reply, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, - SHA256_DIGEST_LENGTH, signatureResp); - - /* some info output */ - RTMP_Log(RTMP_LOGDEBUG, - "%s: Calculated digest key from secure key and server digest: ", - __FUNCTION__); - RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH); - -#ifdef FP10 - if (type == 8) { - uint8_t *dptr = digestResp; - uint8_t *sig = signatureResp; - /* encrypt signatureResp */ - for (i = 0; i < SHA256_DIGEST_LENGTH; i += 8) - rtmpe8_sig(sig + i, sig + i, dptr[i] % 15); - } -#if 0 - else if (type == 9)) - { - uint8_t *dptr = digestResp; - uint8_t *sig = signatureResp; - /* encrypt signatureResp */ - for (i=0; iLink.rc4keyIn = keyIn; - r->Link.rc4keyOut = keyOut; - - /* update the keystreams */ - if (r->Link.rc4keyIn) { - RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *)buff); - } - - if (r->Link.rc4keyOut) { - RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *)buff); - } - } - } else { - if (memcmp(serversig, clientsig, RTMP_SIG_SIZE) != 0) { - RTMP_Log(RTMP_LOGWARNING, "%s: client signature does not match!", - __FUNCTION__); - } - } - - RTMP_Log(RTMP_LOGDEBUG, "%s: Handshaking finished....", __FUNCTION__); - return TRUE; -} - -static int SHandShake(RTMP *r) { - int i, offalg = 0; - int dhposServer = 0; - int digestPosServer = 0; - RC4_handle keyIn = 0; - RC4_handle keyOut = 0; - int FP9HandShake = FALSE; - int encrypted; - int32_t *ip; - - uint8_t clientsig[RTMP_SIG_SIZE]; - uint8_t serverbuf[RTMP_SIG_SIZE + 4], *serversig = serverbuf + 4; - uint8_t type; - uint32_t uptime; - getoff *getdh = NULL, *getdig = NULL; - - if (ReadN(r, (char *)&type, 1) != 1) /* 0x03 or 0x06 */ - return FALSE; - - if (ReadN(r, (char *)clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Type Requested : %02X", __FUNCTION__, type); - RTMP_LogHex(RTMP_LOGDEBUG2, clientsig, RTMP_SIG_SIZE); - - if (type == 3) { - encrypted = FALSE; - } else if (type == 6 || type == 8) { - offalg = 1; - encrypted = TRUE; - FP9HandShake = TRUE; - r->Link.protocol |= RTMP_FEATURE_ENC; - /* use FP10 if client is capable */ - if (clientsig[4] == 128) - type = 8; - } else { - RTMP_Log(RTMP_LOGERROR, "%s: Unknown version %02x", __FUNCTION__, type); - return FALSE; - } - - if (!FP9HandShake && clientsig[4]) - FP9HandShake = TRUE; - - serversig[-1] = type; - - r->Link.rc4keyIn = r->Link.rc4keyOut = 0; - - uptime = htonl(RTMP_GetTime()); - memcpy(serversig, &uptime, 4); - - if (FP9HandShake) { - /* Server version */ - serversig[4] = 3; - serversig[5] = 5; - serversig[6] = 1; - serversig[7] = 1; - - getdig = digoff[offalg]; - getdh = dhoff[offalg]; - } else { - memset(&serversig[4], 0, 4); - } - -/* generate random data */ -#ifdef _DEBUG - memset(serversig + 8, 0, RTMP_SIG_SIZE - 8); -#else - ip = (int32_t *)(serversig + 8); - for (i = 2; i < RTMP_SIG_SIZE / 4; i++) - *ip++ = rand(); -#endif - - /* set handshake digest */ - if (FP9HandShake) { - if (encrypted) { - /* generate Diffie-Hellmann parameters */ - r->Link.dh = DHInit(1024); - if (!r->Link.dh) { - RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!", - __FUNCTION__); - return FALSE; - } - - dhposServer = getdh(serversig, RTMP_SIG_SIZE); - RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, - dhposServer); - - if (!DHGenerateKey(r->Link.dh)) { - RTMP_Log(RTMP_LOGERROR, - "%s: Couldn't generate Diffie-Hellmann public key!", - __FUNCTION__); - return FALSE; - } - - if (!DHGetPublicKey(r->Link.dh, (uint8_t *)&serversig[dhposServer], - 128)) { - RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__); - return FALSE; - } - } - - digestPosServer = - getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */ - RTMP_Log(RTMP_LOGDEBUG, "%s: Server digest offset: %d", __FUNCTION__, - digestPosServer); - - CalculateDigest(digestPosServer, serversig, GenuineFMSKey, 36, - &serversig[digestPosServer]); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Initial server digest: ", __FUNCTION__); - RTMP_LogHex(RTMP_LOGDEBUG, serversig + digestPosServer, - SHA256_DIGEST_LENGTH); - } - - RTMP_Log(RTMP_LOGDEBUG2, "Serversig: "); - RTMP_LogHex(RTMP_LOGDEBUG2, serversig, RTMP_SIG_SIZE); - - if (!WriteN(r, (char *)serversig - 1, RTMP_SIG_SIZE + 1)) - return FALSE; - - /* decode client response */ - memcpy(&uptime, clientsig, 4); - uptime = ntohl(uptime); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); - RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, - clientsig[4], clientsig[5], clientsig[6], clientsig[7]); - - if (FP9HandShake) { - uint8_t digestResp[SHA256_DIGEST_LENGTH]; - uint8_t *signatureResp = NULL; - - /* we have to use this signature now to find the correct algorithms for - * getting the digest and DH positions */ - int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); - - if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { - RTMP_Log(RTMP_LOGWARNING, "Trying different position for client digest!"); - offalg ^= 1; - getdig = digoff[offalg]; - getdh = dhoff[offalg]; - - digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); - - if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { - RTMP_Log( - RTMP_LOGERROR, - "Couldn't verify the client digest"); /* continuing anyway will - probably fail */ - return FALSE; - } - } - - /* generate SWFVerification token (SHA256 HMAC hash of decompressed SWF, key - * are the last 32 bytes of the server handshake) */ - if (r->Link.SWFSize) { - const char swfVerify[] = {0x01, 0x01}; - char *vend = r->Link.SWFVerificationResponse + - sizeof(r->Link.SWFVerificationResponse); - - memcpy(r->Link.SWFVerificationResponse, swfVerify, 2); - AMF_EncodeInt32(&r->Link.SWFVerificationResponse[2], vend, - r->Link.SWFSize); - AMF_EncodeInt32(&r->Link.SWFVerificationResponse[6], vend, - r->Link.SWFSize); - HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH, - &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH], - SHA256_DIGEST_LENGTH, - (uint8_t *)&r->Link.SWFVerificationResponse[10]); - } - - /* do Diffie-Hellmann Key exchange for encrypted RTMP */ - if (encrypted) { - int dhposClient, len; - /* compute secret key */ - uint8_t secretKey[128] = {0}; - - dhposClient = getdh(clientsig, RTMP_SIG_SIZE); - RTMP_Log(RTMP_LOGDEBUG, "%s: Client DH public key offset: %d", - __FUNCTION__, dhposClient); - len = DHComputeSharedSecretKey( - r->Link.dh, (uint8_t *)&clientsig[dhposClient], 128, secretKey); - if (len < 0) { - RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__); - return FALSE; - } - - RTMP_Log(RTMP_LOGDEBUG, "%s: Secret key: ", __FUNCTION__); - RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128); - - InitRC4Encryption(secretKey, (uint8_t *)&clientsig[dhposClient], - (uint8_t *)&serversig[dhposServer], &keyIn, &keyOut); - } - - /* calculate response now */ - signatureResp = clientsig + RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; - - HMACsha256(&clientsig[digestPosClient], SHA256_DIGEST_LENGTH, GenuineFMSKey, - sizeof(GenuineFMSKey), digestResp); - HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, - SHA256_DIGEST_LENGTH, signatureResp); -#ifdef FP10 - if (type == 8) { - uint8_t *dptr = digestResp; - uint8_t *sig = signatureResp; - /* encrypt signatureResp */ - for (i = 0; i < SHA256_DIGEST_LENGTH; i += 8) - rtmpe8_sig(sig + i, sig + i, dptr[i] % 15); - } -#if 0 - else if (type == 9)) - { - uint8_t *dptr = digestResp; - uint8_t *sig = signatureResp; - /* encrypt signatureResp */ - for (i=0; iLink.rc4keyIn = keyIn; - r->Link.rc4keyOut = keyOut; - - /* update the keystreams */ - if (r->Link.rc4keyIn) { - RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *)buff); - } - - if (r->Link.rc4keyOut) { - RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *)buff); - } - } - } else { - if (memcmp(serversig, clientsig, RTMP_SIG_SIZE) != 0) { - RTMP_Log(RTMP_LOGWARNING, "%s: client signature does not match!", - __FUNCTION__); - } - } - - RTMP_Log(RTMP_LOGDEBUG, "%s: Handshaking finished....", __FUNCTION__); - return TRUE; -} diff --git a/LFLiveKit/publish/pili-librtmp/hashswf.c b/LFLiveKit/publish/pili-librtmp/hashswf.c deleted file mode 100755 index 28ceeb4a..00000000 --- a/LFLiveKit/publish/pili-librtmp/hashswf.c +++ /dev/null @@ -1,626 +0,0 @@ -/* - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include -#include - -#include "http.h" -#include "log.h" -#include "rtmp_sys.h" - -#ifdef CRYPTO -#ifdef USE_POLARSSL -#include -#ifndef SHA256_DIGEST_LENGTH -#define SHA256_DIGEST_LENGTH 32 -#endif -#define HMAC_CTX sha2_context -#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) -#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - dlen = SHA256_DIGEST_LENGTH; \ - sha2_hmac_finish(&ctx, dig) -#define HMAC_close(ctx) -#elif defined(USE_GNUTLS) -#include -#include -#ifndef SHA256_DIGEST_LENGTH -#define SHA256_DIGEST_LENGTH 32 -#endif -#define HMAC_CTX gcry_md_hd_t -#define HMAC_setup(ctx, key, len) \ - gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ - gcry_md_setkey(ctx, key, len) -#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - dlen = SHA256_DIGEST_LENGTH; \ - memcpy(dig, gcry_md_read(ctx, 0), dlen) -#define HMAC_close(ctx) gcry_md_close(ctx) -#else /* USE_OPENSSL */ -#include -#include -#include -#include -#define HMAC_setup(ctx, key, len) \ - HMAC_CTX_init(&ctx); \ - HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0) -#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len) -#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen); -#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx) -#endif - -extern void RTMP_TLS_Init(); -extern TLS_CTX RTMP_TLS_ctx; - -#endif /* CRYPTO */ - -#include - -#define AGENT "Mozilla/5.0" - -HTTPResult - HTTP_get(struct HTTP_ctx *http, const char *url, HTTP_read_callback *cb) { - char *host, *path; - char *p1, *p2; - char hbuf[256]; - int port = 80; -#ifdef CRYPTO - int ssl = 0; -#endif - int hlen, flen = 0; - int rc, i; - int len_known; - HTTPResult ret = HTTPRES_OK; - // struct sockaddr_in sa; - PILI_RTMPSockBuf sb = {0}; - - http->status = -1; - - // memset(&sa, 0, sizeof(struct sockaddr_in)); - // sa.sin_family = AF_INET; - - /* we only handle http here */ - if (strncasecmp(url, "http", 4)) - return HTTPRES_BAD_REQUEST; - - if (url[4] == 's') { -#ifdef CRYPTO - ssl = 1; - port = 443; - if (!RTMP_TLS_ctx) - RTMP_TLS_Init(); -#else - return HTTPRES_BAD_REQUEST; -#endif - } - - p1 = strchr(url + 4, ':'); - if (!p1 || strncmp(p1, "://", 3)) - return HTTPRES_BAD_REQUEST; - - host = p1 + 3; - path = strchr(host, '/'); - hlen = path - host; - strncpy(hbuf, host, hlen); - hbuf[hlen] = '\0'; - host = hbuf; - p1 = strrchr(host, ':'); - if (p1) { - *p1++ = '\0'; - port = atoi(p1); - } - - // sa.sin_addr.s_addr = inet_addr(host); - // if (sa.sin_addr.s_addr == INADDR_NONE) - // { - // struct hostent *hp = gethostbyname(host); - // if (!hp || !hp->h_addr) - // return HTTPRES_LOST_CONNECTION; - // sa.sin_addr = *(struct in_addr *)hp->h_addr; - // } - // sa.sin_port = htons(port); - struct addrinfo hints = {0}, *ai, *cur_ai; - char portstr[10]; - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - snprintf(portstr, sizeof(portstr), "%d", port); - ret = getaddrinfo(host, portstr, &hints, &ai); - if (ret != 0) { - return HTTPRES_LOST_CONNECTION; - } - - cur_ai = ai; - - sb.sb_socket = socket(cur_ai->ai_family, - cur_ai->ai_socktype, - cur_ai->ai_protocol); - // sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sb.sb_socket == -1) { - freeaddrinfo(ai); - return HTTPRES_LOST_CONNECTION; - } - i = sprintf(sb.sb_buf, - "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s\r\nReferrer: %.*s\r\n", - path, AGENT, host, (int)(path - url + 1), url); - if (http->date[0]) - i += sprintf(sb.sb_buf + i, "If-Modified-Since: %s\r\n", http->date); - i += sprintf(sb.sb_buf + i, "\r\n"); - - if (cur_ai->ai_family == AF_INET6) { - struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)cur_ai->ai_addr; - in6->sin6_port = htons(port); - } - - if (connect(sb.sb_socket, cur_ai->ai_addr, cur_ai->ai_addrlen) < 0) { - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } -#ifdef CRYPTO - if (ssl) { -#ifdef NO_SSL - RTMP_Log(RTMP_LOGERROR, "%s, No SSL/TLS support", __FUNCTION__); - ret = HTTPRES_BAD_REQUEST; - goto leave; -#else - TLS_client(RTMP_TLS_ctx, sb.sb_ssl); - TLS_setfd(sb.sb_ssl, sb.sb_socket); - if ((i = TLS_connect(sb.sb_ssl)) < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } -#endif - } -#endif - PILI_RTMPSockBuf_Send(&sb, sb.sb_buf, i); - -/* set timeout */ -#define HTTP_TIMEOUT 5 - { - SET_RCVTIMEO(tv, HTTP_TIMEOUT); - if (setsockopt(sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { - RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %ds failed!", - __FUNCTION__, HTTP_TIMEOUT); - } - } - - sb.sb_size = 0; - sb.sb_timedout = FALSE; - if (PILI_RTMPSockBuf_Fill(&sb, HTTP_TIMEOUT) < 1) { - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } - if (strncmp(sb.sb_buf, "HTTP/1", 6)) { - ret = HTTPRES_BAD_REQUEST; - goto leave; - } - - p1 = strchr(sb.sb_buf, ' '); - rc = atoi(p1 + 1); - http->status = rc; - - if (rc >= 300) { - if (rc == 304) { - ret = HTTPRES_OK_NOT_MODIFIED; - goto leave; - } else if (rc == 404) - ret = HTTPRES_NOT_FOUND; - else if (rc >= 500) - ret = HTTPRES_SERVER_ERROR; - else if (rc >= 400) - ret = HTTPRES_BAD_REQUEST; - else - ret = HTTPRES_REDIRECTED; - } - - p1 = memchr(sb.sb_buf, '\n', sb.sb_size); - if (!p1) { - ret = HTTPRES_BAD_REQUEST; - goto leave; - } - sb.sb_start = p1 + 1; - sb.sb_size -= sb.sb_start - sb.sb_buf; - - while ((p2 = memchr(sb.sb_start, '\r', sb.sb_size))) { - if (*sb.sb_start == '\r') { - sb.sb_start += 2; - sb.sb_size -= 2; - break; - } else if (!strncasecmp(sb.sb_start, "Content-Length: ", sizeof("Content-Length: ") - 1)) { - flen = atoi(sb.sb_start + sizeof("Content-Length: ") - 1); - } else if (!strncasecmp(sb.sb_start, "Last-Modified: ", sizeof("Last-Modified: ") - 1)) { - *p2 = '\0'; - strcpy(http->date, sb.sb_start + sizeof("Last-Modified: ") - 1); - } - p2 += 2; - sb.sb_size -= p2 - sb.sb_start; - sb.sb_start = p2; - if (sb.sb_size < 1) { - if (PILI_RTMPSockBuf_Fill(&sb, HTTP_TIMEOUT) < 1) { - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } - } - } - - len_known = flen > 0; - while ((!len_known || flen > 0) && - (sb.sb_size > 0 || PILI_RTMPSockBuf_Fill(&sb, HTTP_TIMEOUT) > 0)) { - cb(sb.sb_start, 1, sb.sb_size, http->data); - if (len_known) - flen -= sb.sb_size; - http->size += sb.sb_size; - sb.sb_size = 0; - } - - if (flen > 0) - ret = HTTPRES_LOST_CONNECTION; - -leave: - PILI_RTMPSockBuf_Close(&sb); - freeaddrinfo(ai); - return ret; -} - -#ifdef CRYPTO - -#define CHUNK 16384 - -struct info { - z_stream *zs; - HMAC_CTX ctx; - int first; - int zlib; - int size; -}; - -static size_t - swfcrunch(void *ptr, size_t size, size_t nmemb, void *stream) { - struct info *i = stream; - char *p = ptr; - size_t len = size * nmemb; - - if (i->first) { - i->first = 0; - /* compressed? */ - if (!strncmp(p, "CWS", 3)) { - *p = 'F'; - i->zlib = 1; - } - HMAC_crunch(i->ctx, (unsigned char *)p, 8); - p += 8; - len -= 8; - i->size = 8; - } - - if (i->zlib) { - unsigned char out[CHUNK]; - i->zs->next_in = (unsigned char *)p; - i->zs->avail_in = len; - do { - i->zs->avail_out = CHUNK; - i->zs->next_out = out; - inflate(i->zs, Z_NO_FLUSH); - len = CHUNK - i->zs->avail_out; - i->size += len; - HMAC_crunch(i->ctx, out, len); - } while (i->zs->avail_out == 0); - } else { - i->size += len; - HMAC_crunch(i->ctx, (unsigned char *)p, len); - } - return size * nmemb; -} - -static int tzoff; -static int tzchecked; - -#define JAN02_1980 318340800 - -static const char *monthtab[12] = {"Jan", "Feb", "Mar", - "Apr", "May", "Jun", - "Jul", "Aug", "Sep", - "Oct", "Nov", "Dec"}; -static const char *days[] = - {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; - -/* Parse an HTTP datestamp into Unix time */ -static time_t - make_unix_time(char *s) { - struct tm time; - int i, ysub = 1900, fmt = 0; - char *month; - char *n; - time_t res; - - if (s[3] != ' ') { - fmt = 1; - if (s[3] != ',') - ysub = 0; - } - for (n = s; *n; ++n) - if (*n == '-' || *n == ':') - *n = ' '; - - time.tm_mon = 0; - n = strchr(s, ' '); - if (fmt) { - /* Day, DD-MMM-YYYY HH:MM:SS GMT */ - time.tm_mday = strtol(n + 1, &n, 0); - month = n + 1; - n = strchr(month, ' '); - time.tm_year = strtol(n + 1, &n, 0); - time.tm_hour = strtol(n + 1, &n, 0); - time.tm_min = strtol(n + 1, &n, 0); - time.tm_sec = strtol(n + 1, NULL, 0); - } else { - /* Unix ctime() format. Does not conform to HTTP spec. */ - /* Day MMM DD HH:MM:SS YYYY */ - month = n + 1; - n = strchr(month, ' '); - while (isspace(*n)) - n++; - time.tm_mday = strtol(n, &n, 0); - time.tm_hour = strtol(n + 1, &n, 0); - time.tm_min = strtol(n + 1, &n, 0); - time.tm_sec = strtol(n + 1, &n, 0); - time.tm_year = strtol(n + 1, NULL, 0); - } - if (time.tm_year > 100) - time.tm_year -= ysub; - - for (i = 0; i < 12; i++) - if (!strncasecmp(month, monthtab[i], 3)) { - time.tm_mon = i; - break; - } - time.tm_isdst = 0; /* daylight saving is never in effect in GMT */ - - /* this is normally the value of extern int timezone, but some - * braindead C libraries don't provide it. - */ - if (!tzchecked) { - struct tm *tc; - time_t then = JAN02_1980; - tc = localtime(&then); - tzoff = (12 - tc->tm_hour) * 3600 + tc->tm_min * 60 + tc->tm_sec; - tzchecked = 1; - } - res = mktime(&time); - /* Unfortunately, mktime() assumes the input is in local time, - * not GMT, so we have to correct it here. - */ - if (res != -1) - res += tzoff; - return res; -} - -/* Convert a Unix time to a network time string - * Weekday, DD-MMM-YYYY HH:MM:SS GMT - */ -void strtime(time_t *t, char *s) { - struct tm *tm; - - tm = gmtime((time_t *)t); - sprintf(s, "%s, %02d %s %d %02d:%02d:%02d GMT", - days[tm->tm_wday], tm->tm_mday, monthtab[tm->tm_mon], - tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec); -} - -#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) - -int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, - int age) { - FILE *f = NULL; - char *path, date[64], cctim[64]; - long pos = 0; - time_t ctim = -1, cnow; - int i, got = 0, ret = 0; - unsigned int hlen; - struct info in = {0}; - struct HTTP_ctx http = {0}; - HTTPResult httpres; - z_stream zs = {0}; - AVal home, hpre; - - date[0] = '\0'; -#ifdef _WIN32 -#ifdef _XBOX - hpre.av_val = "Q:"; - hpre.av_len = 2; - home.av_val = "\\UserData"; -#else - hpre.av_val = getenv("HOMEDRIVE"); - hpre.av_len = strlen(hpre.av_val); - home.av_val = getenv("HOMEPATH"); -#endif -#define DIRSEP "\\" - -#else /* !_WIN32 */ - hpre.av_val = ""; - hpre.av_len = 0; - home.av_val = getenv("HOME"); -#define DIRSEP "/" -#endif - if (!home.av_val) - home.av_val = "."; - home.av_len = strlen(home.av_val); - - /* SWF hash info is cached in a fixed-format file. - * url: - * ctim: HTTP datestamp of when we last checked it. - * date: HTTP datestamp of the SWF's last modification. - * size: SWF size in hex - * hash: SWF hash in hex - * - * These fields must be present in this order. All fields - * besides URL are fixed size. - */ - path = malloc(hpre.av_len + home.av_len + sizeof(DIRSEP ".swfinfo")); - sprintf(path, "%s%s" DIRSEP ".swfinfo", hpre.av_val, home.av_val); - - f = fopen(path, "r+"); - while (f) { - char buf[4096], *file, *p; - - file = strchr(url, '/'); - if (!file) - break; - file += 2; - file = strchr(file, '/'); - if (!file) - break; - file++; - hlen = file - url; - p = strrchr(file, '/'); - if (p) - file = p; - else - file--; - - while (fgets(buf, sizeof(buf), f)) { - char *r1; - - got = 0; - - if (strncmp(buf, "url: ", 5)) - continue; - if (strncmp(buf + 5, url, hlen)) - continue; - r1 = strrchr(buf, '/'); - i = strlen(r1); - r1[--i] = '\0'; - if (strncmp(r1, file, i)) - continue; - pos = ftell(f); - while (got < 4 && fgets(buf, sizeof(buf), f)) { - if (!strncmp(buf, "size: ", 6)) { - *size = strtol(buf + 6, NULL, 16); - got++; - } else if (!strncmp(buf, "hash: ", 6)) { - unsigned char *ptr = hash, *in = (unsigned char *)buf + 6; - int l = strlen((char *)in) - 1; - for (i = 0; i < l; i += 2) - *ptr++ = (HEX2BIN(in[i]) << 4) | HEX2BIN(in[i + 1]); - got++; - } else if (!strncmp(buf, "date: ", 6)) { - buf[strlen(buf) - 1] = '\0'; - strncpy(date, buf + 6, sizeof(date)); - got++; - } else if (!strncmp(buf, "ctim: ", 6)) { - buf[strlen(buf) - 1] = '\0'; - ctim = make_unix_time(buf + 6); - got++; - } else if (!strncmp(buf, "url: ", 5)) - break; - } - break; - } - break; - } - - cnow = time(NULL); - /* If we got a cache time, see if it's young enough to use directly */ - if (age && ctim > 0) { - ctim = cnow - ctim; - ctim /= 3600 * 24; /* seconds to days */ - if (ctim < age) /* ok, it's new enough */ - goto out; - } - - in.first = 1; - HMAC_setup(in.ctx, "Genuine Adobe Flash Player 001", 30); - inflateInit(&zs); - in.zs = &zs; - - http.date = date; - http.data = ∈ - - httpres = HTTP_get(&http, url, swfcrunch); - - inflateEnd(&zs); - - if (httpres != HTTPRES_OK && httpres != HTTPRES_OK_NOT_MODIFIED) { - ret = -1; - if (httpres == HTTPRES_LOST_CONNECTION) - RTMP_Log(RTMP_LOGERROR, "%s: connection lost while downloading swfurl %s", - __FUNCTION__, url); - else if (httpres == HTTPRES_NOT_FOUND) - RTMP_Log(RTMP_LOGERROR, "%s: swfurl %s not found", __FUNCTION__, url); - else - RTMP_Log(RTMP_LOGERROR, "%s: couldn't contact swfurl %s (HTTP error %d)", - __FUNCTION__, url, http.status); - } else { - if (got && pos) - fseek(f, pos, SEEK_SET); - else { - char *q; - if (!f) - f = fopen(path, "w"); - if (!f) { - int err = errno; - RTMP_Log(RTMP_LOGERROR, - "%s: couldn't open %s for writing, errno %d (%s)", - __FUNCTION__, path, err, strerror(err)); - ret = -1; - goto out; - } - fseek(f, 0, SEEK_END); - q = strchr(url, '?'); - if (q) - i = q - url; - else - i = strlen(url); - - fprintf(f, "url: %.*s\n", i, url); - } - strtime(&cnow, cctim); - fprintf(f, "ctim: %s\n", cctim); - - if (!in.first) { - HMAC_finish(in.ctx, hash, hlen); - *size = in.size; - - fprintf(f, "date: %s\n", date); - fprintf(f, "size: %08x\n", in.size); - fprintf(f, "hash: "); - for (i = 0; i < SHA256_DIGEST_LENGTH; i++) - fprintf(f, "%02x", hash[i]); - fprintf(f, "\n"); - } - } - HMAC_close(in.ctx); -out: - free(path); - if (f) - fclose(f); - return ret; -} -#else -int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, - int age) { - return -1; -} -#endif diff --git a/LFLiveKit/publish/pili-librtmp/http.h b/LFLiveKit/publish/pili-librtmp/http.h deleted file mode 100755 index 1eb7a462..00000000 --- a/LFLiveKit/publish/pili-librtmp/http.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __RTMP_HTTP_H__ -#define __RTMP_HTTP_H__ -/* - * Copyright (C) 2010 Howard Chu - * Copyright (C) 2010 Antti Ajanki - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -typedef enum { - HTTPRES_OK, /* result OK */ - HTTPRES_OK_NOT_MODIFIED, /* not modified since last request */ - HTTPRES_NOT_FOUND, /* not found */ - HTTPRES_BAD_REQUEST, /* client error */ - HTTPRES_SERVER_ERROR, /* server reported an error */ - HTTPRES_REDIRECTED, /* resource has been moved */ - HTTPRES_LOST_CONNECTION /* connection lost while waiting for data */ -} HTTPResult; - -struct HTTP_ctx { - char *date; - int size; - int status; - void *data; -}; - -typedef size_t(HTTP_read_callback)(void *ptr, size_t size, size_t nmemb, - void *stream); - -HTTPResult HTTP_get(struct HTTP_ctx *http, const char *url, - HTTP_read_callback *cb); - -#endif diff --git a/LFLiveKit/publish/pili-librtmp/log.c b/LFLiveKit/publish/pili-librtmp/log.c deleted file mode 100755 index d3934366..00000000 --- a/LFLiveKit/publish/pili-librtmp/log.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include -#include - -#include "log.h" -#include "rtmp_sys.h" - -#define MAX_PRINT_LEN 2048 - -RTMP_LogLevel RTMP_debuglevel = RTMP_LOGERROR; - -static int neednl; - -static FILE *fmsg; - -static RTMP_LogCallback rtmp_log_default, *cb = rtmp_log_default; - -static const char *levels[] = { - "CRIT", "ERROR", "WARNING", "INFO", - "DEBUG", "DEBUG2"}; - -static void rtmp_log_default(int level, const char *format, va_list vl) { - char str[MAX_PRINT_LEN] = ""; - - vsnprintf(str, MAX_PRINT_LEN - 1, format, vl); - - /* Filter out 'no-name' */ - if (RTMP_debuglevel < RTMP_LOGALL && strstr(str, "no-name") != NULL) - return; - - if (!fmsg) fmsg = stderr; - - if (level <= RTMP_debuglevel) { - if (neednl) { - putc('\n', fmsg); - neednl = 0; - } - fprintf(fmsg, "%s: %s\n", levels[level], str); -#ifdef _DEBUG - fflush(fmsg); -#endif - } -} - -void RTMP_LogSetOutput(FILE *file) { - fmsg = file; -} - -void RTMP_LogSetLevel(RTMP_LogLevel level) { - RTMP_debuglevel = level; -} - -void RTMP_LogSetCallback(RTMP_LogCallback *cbp) { - cb = cbp; -} - -RTMP_LogLevel RTMP_LogGetLevel() { - return RTMP_debuglevel; -} - -void RTMP_Log(int level, const char *format, ...) { - va_list args; - va_start(args, format); - cb(level, format, args); - va_end(args); -} - -static const char hexdig[] = "0123456789abcdef"; - -void RTMP_LogHex(int level, const uint8_t *data, unsigned long len) { - unsigned long i; - char line[50], *ptr; - - if (level > RTMP_debuglevel) - return; - - ptr = line; - - for (i = 0; i < len; i++) { - *ptr++ = hexdig[0x0f & (data[i] >> 4)]; - *ptr++ = hexdig[0x0f & data[i]]; - if ((i & 0x0f) == 0x0f) { - *ptr = '\0'; - ptr = line; - RTMP_Log(level, "%s", line); - } else { - *ptr++ = ' '; - } - } - if (i & 0x0f) { - *ptr = '\0'; - RTMP_Log(level, "%s", line); - } -} - -void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len) { -#define BP_OFFSET 9 -#define BP_GRAPH 60 -#define BP_LEN 80 - char line[BP_LEN]; - unsigned long i; - - if (!data || level > RTMP_debuglevel) - return; - - /* in case len is zero */ - line[0] = '\0'; - - for (i = 0; i < len; i++) { - int n = i % 16; - unsigned off; - - if (!n) { - if (i) RTMP_Log(level, "%s", line); - memset(line, ' ', sizeof(line) - 2); - line[sizeof(line) - 2] = '\0'; - - off = i % 0x0ffffU; - - line[2] = hexdig[0x0f & (off >> 12)]; - line[3] = hexdig[0x0f & (off >> 8)]; - line[4] = hexdig[0x0f & (off >> 4)]; - line[5] = hexdig[0x0f & off]; - line[6] = ':'; - } - - off = BP_OFFSET + n * 3 + ((n >= 8) ? 1 : 0); - line[off] = hexdig[0x0f & (data[i] >> 4)]; - line[off + 1] = hexdig[0x0f & data[i]]; - - off = BP_GRAPH + n + ((n >= 8) ? 1 : 0); - - if (isprint(data[i])) { - line[BP_GRAPH + n] = data[i]; - } else { - line[BP_GRAPH + n] = '.'; - } - } - - RTMP_Log(level, "%s", line); -} - -/* These should only be used by apps, never by the library itself */ -void RTMP_LogPrintf(const char *format, ...) { - char str[MAX_PRINT_LEN] = ""; - int len; - va_list args; - va_start(args, format); - len = vsnprintf(str, MAX_PRINT_LEN - 1, format, args); - va_end(args); - - if (RTMP_debuglevel == RTMP_LOGCRIT) - return; - - if (!fmsg) fmsg = stderr; - - if (neednl) { - putc('\n', fmsg); - neednl = 0; - } - - if (len > MAX_PRINT_LEN - 1) - len = MAX_PRINT_LEN - 1; - fprintf(fmsg, "%s", str); - if (str[len - 1] == '\n') - fflush(fmsg); -} - -void RTMP_LogStatus(const char *format, ...) { - char str[MAX_PRINT_LEN] = ""; - va_list args; - va_start(args, format); - vsnprintf(str, MAX_PRINT_LEN - 1, format, args); - va_end(args); - - if (RTMP_debuglevel == RTMP_LOGCRIT) - return; - - if (!fmsg) fmsg = stderr; - - fprintf(fmsg, "%s", str); - fflush(fmsg); - neednl = 1; -} diff --git a/LFLiveKit/publish/pili-librtmp/log.h b/LFLiveKit/publish/pili-librtmp/log.h deleted file mode 100755 index f7daf375..00000000 --- a/LFLiveKit/publish/pili-librtmp/log.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#ifndef __RTMP_LOG_H__ -#define __RTMP_LOG_H__ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif -/* Enable this to get full debugging output */ -/* #define _DEBUG */ - -#ifdef _DEBUG -#undef NODEBUG -#endif - -typedef enum { - RTMP_LOGCRIT = 0, - RTMP_LOGERROR, - RTMP_LOGWARNING, - RTMP_LOGINFO, - RTMP_LOGDEBUG, - RTMP_LOGDEBUG2, - RTMP_LOGALL -} RTMP_LogLevel; - -extern RTMP_LogLevel RTMP_debuglevel; - -typedef void(RTMP_LogCallback)(int level, const char *fmt, va_list); -void RTMP_LogSetCallback(RTMP_LogCallback *cb); -void RTMP_LogSetOutput(FILE *file); -void RTMP_LogPrintf(const char *format, ...); -void RTMP_LogStatus(const char *format, ...); -void RTMP_Log(int level, const char *format, ...); -void RTMP_LogHex(int level, const uint8_t *data, unsigned long len); -void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len); -void RTMP_LogSetLevel(RTMP_LogLevel lvl); -RTMP_LogLevel RTMP_LogGetLevel(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/LFLiveKit/publish/pili-librtmp/parseurl.c b/LFLiveKit/publish/pili-librtmp/parseurl.c deleted file mode 100755 index 0e50352b..00000000 --- a/LFLiveKit/publish/pili-librtmp/parseurl.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (C) 2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include - -#include -#include - -#include "log.h" -#include "rtmp_sys.h" - -int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, unsigned int *port, - AVal *playpath, AVal *app, AVal *domainName) { - char *p, *end, *col, *ques, *slash; - - RTMP_Log(RTMP_LOGDEBUG, "Parsing..."); - - *protocol = RTMP_PROTOCOL_RTMP; - *port = 0; - playpath->av_len = 0; - playpath->av_val = NULL; - app->av_len = 0; - app->av_val = NULL; - - /* Old School Parsing */ - - /* look for usual :// pattern */ - p = strstr(url, "://"); - if (!p) { - RTMP_Log(RTMP_LOGERROR, "RTMP URL: No :// in url!"); - return FALSE; - } - { - int len = (int)(p - url); - - if (len == 4 && strncasecmp(url, "rtmp", 4) == 0) - *protocol = RTMP_PROTOCOL_RTMP; - else if (len == 5 && strncasecmp(url, "rtmpt", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMPT; - else if (len == 5 && strncasecmp(url, "rtmps", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMPS; - else if (len == 5 && strncasecmp(url, "rtmpe", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMPE; - else if (len == 5 && strncasecmp(url, "rtmfp", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMFP; - else if (len == 6 && strncasecmp(url, "rtmpte", 6) == 0) - *protocol = RTMP_PROTOCOL_RTMPTE; - else if (len == 6 && strncasecmp(url, "rtmpts", 6) == 0) - *protocol = RTMP_PROTOCOL_RTMPTS; - else { - RTMP_Log(RTMP_LOGWARNING, "Unknown protocol!\n"); - goto parsehost; - } - } - - RTMP_Log(RTMP_LOGDEBUG, "Parsed protocol: %d", *protocol); - -parsehost: - /* let's get the hostname */ - p += 3; - - /* check for sudden death */ - if (*p == 0) { - RTMP_Log(RTMP_LOGWARNING, "No hostname in URL!"); - return FALSE; - } - - end = p + strlen(p); - col = strchr(p, ':'); - ques = strchr(p, '?'); - slash = strchr(p, '/'); - - { - int hostlen; - if (slash) - hostlen = slash - p; - else - hostlen = end - p; - if (col && col - p < hostlen) - hostlen = col - p; - - if (hostlen < 256) { - host->av_val = p; - host->av_len = hostlen; - RTMP_Log(RTMP_LOGDEBUG, "Parsed host : %.*s", hostlen, host->av_val); - } else { - RTMP_Log(RTMP_LOGWARNING, "Hostname exceeds 255 characters!"); - } - - p += hostlen; - } - - /* get the port number if available */ - if (*p == ':') { - unsigned int p2; - p++; - p2 = atoi(p); - if (p2 > 65535) { - RTMP_Log(RTMP_LOGWARNING, "Invalid port number!"); - } else { - *port = p2; - } - } - - if (!slash) { - RTMP_Log(RTMP_LOGWARNING, "No application or playpath in URL!"); - return TRUE; - } - p = slash + 1; - - /** parse domain - + * rtmp://host:[port]/app/...?domain=a.com - + * use domain to replace host - + */ - - if (domainName != NULL && ques != NULL) { - char *domain = strstr(ques, "domain="); - if (domain) { - end = domain - 1; - domain += 7; //skip "domain=" - char *domain_end = strchr(domain, '&'); - int host_len = 0; - if (domain_end) { - host_len = domain_end - domain; - } else { - host_len = strlen(domain); - } - if (host_len < 256) { - domainName->av_val = domain; - domainName->av_len = host_len; - RTMP_Log(RTMP_LOGDEBUG, "Parsed host and domain : %.*s", host_len, host->av_val); - } - } - } - - { - /* parse application - * - * rtmp://host[:port]/app[/appinstance][/...] - * application = app[/appinstance] - */ - - char *slash2, *slash3 = NULL; - int applen, appnamelen; - - slash2 = strchr(p, '/'); - if (slash2) - slash3 = strchr(slash2 + 1, '/'); - - applen = end - p; /* ondemand, pass all parameters as app */ - appnamelen = applen; /* ondemand length */ - - if (ques && strstr(p, "slist=")) { /* whatever it is, the '?' and slist= means we need to use everything as app and parse plapath from slist= */ - appnamelen = ques - p; - } else if (strncmp(p, "ondemand/", 9) == 0) { - /* app = ondemand/foobar, only pass app=ondemand */ - applen = 8; - appnamelen = 8; - } else { /* app!=ondemand, so app is app[/appinstance] */ - if (slash3) - appnamelen = slash3 - p; - else if (slash2) - appnamelen = slash2 - p; - - applen = appnamelen; - } - - app->av_val = p; - app->av_len = applen; - RTMP_Log(RTMP_LOGDEBUG, "Parsed app : %.*s", applen, p); - - p += appnamelen; - } - - if (*p == '/') - p++; - - if (end - p) { - AVal av = {p, end - p}; - PILI_RTMP_ParsePlaypath(&av, playpath); - } - - return TRUE; -} - -/* - * Extracts playpath from RTMP URL. playpath is the file part of the - * URL, i.e. the part that comes after rtmp://host:port/app/ - * - * Returns the stream name in a format understood by FMS. The name is - * the playpath part of the URL with formatting depending on the stream - * type: - * - * mp4 streams: prepend "mp4:", remove extension - * mp3 streams: prepend "mp3:", remove extension - * flv streams: remove extension - */ -void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out) { - int addMP4 = 0; - int addMP3 = 0; - int subExt = 0; - const char *playpath = in->av_val; - const char *temp, *q, *ext = NULL; - const char *ppstart = playpath; - char *streamname, *destptr, *p; - - int pplen = in->av_len; - - out->av_val = NULL; - out->av_len = 0; - - if ((*ppstart == '?') && - (temp = strstr(ppstart, "slist=")) != 0) { - ppstart = temp + 6; - pplen = strlen(ppstart); - - temp = strchr(ppstart, '&'); - if (temp) { - pplen = temp - ppstart; - } - } - - q = strchr(ppstart, '?'); - if (pplen >= 4) { - if (q) - ext = q - 4; - else - ext = &ppstart[pplen - 4]; - if ((strncmp(ext, ".f4v", 4) == 0) || - (strncmp(ext, ".mp4", 4) == 0)) { - addMP4 = 1; - subExt = 1; - /* Only remove .flv from rtmp URL, not slist params */ - } else if ((ppstart == playpath) && - (strncmp(ext, ".flv", 4) == 0)) { - subExt = 1; - } else if (strncmp(ext, ".mp3", 4) == 0) { - addMP3 = 1; - subExt = 1; - } - } - - streamname = (char *)malloc((pplen + 4 + 1) * sizeof(char)); - if (!streamname) - return; - - destptr = streamname; - if (addMP4) { - if (strncmp(ppstart, "mp4:", 4)) { - strcpy(destptr, "mp4:"); - destptr += 4; - } else { - subExt = 0; - } - } else if (addMP3) { - if (strncmp(ppstart, "mp3:", 4)) { - strcpy(destptr, "mp3:"); - destptr += 4; - } else { - subExt = 0; - } - } - - for (p = (char *)ppstart; pplen > 0;) { - /* skip extension */ - if (subExt && p == ext) { - p += 4; - pplen -= 4; - continue; - } - if (*p == '%') { - unsigned int c; - sscanf(p + 1, "%02x", &c); - *destptr++ = c; - pplen -= 3; - p += 3; - } else { - *destptr++ = *p++; - pplen--; - } - } - *destptr = '\0'; - - out->av_val = streamname; - out->av_len = destptr - streamname; -} - -int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, - unsigned int *port, AVal *playpath, AVal *app) { - return PILI_RTMP_ParseURL2(url, protocol, host, port, playpath, app, NULL); -} diff --git a/LFLiveKit/publish/pili-librtmp/rtmp.c b/LFLiveKit/publish/pili-librtmp/rtmp.c deleted file mode 100755 index c7e0df79..00000000 --- a/LFLiveKit/publish/pili-librtmp/rtmp.c +++ /dev/null @@ -1,4331 +0,0 @@ -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * libPILI_RTMP is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * libPILI_RTMP is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with libPILI_RTMP see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include -#include -#include - -#include "log.h" -#include "rtmp_sys.h" -#include "time.h" - -#ifdef CRYPTO -#ifdef USE_POLARSSL -#include -#elif defined(USE_GNUTLS) -#include -#else /* USE_OPENSSL */ -#include -#include -#endif -TLS_CTX RTMP_TLS_ctx; -#endif - -#define RTMP_SIG_SIZE 1536 -#define RTMP_LARGE_HEADER_SIZE 12 - -static const int packetSize[] = {12, 8, 4, 1}; - -int PILI_RTMP_ctrlC; -static char reqid[30]; - -const char PILI_RTMPProtocolStrings[][7] = { - "RTMP", - "RTMPT", - "RTMPE", - "RTMPTE", - "RTMPS", - "RTMPTS", - "", - "", - "RTMFP"}; - -const char PILI_RTMPProtocolStringsLower[][7] = { - "rtmp", - "rtmpt", - "rtmpe", - "rtmpte", - "rtmps", - "rtmpts", - "", - "", - "rtmfp"}; - -static const char *RTMPT_cmds[] = { - "open", - "send", - "idle", - "close"}; - -typedef enum { - RTMPT_OPEN = 0, - RTMPT_SEND, - RTMPT_IDLE, - RTMPT_CLOSE -} RTMPTCmd; - -static int DumpMetaData(AMFObject *obj); -static int HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error); -static int SocksNegotiate(PILI_RTMP *r, RTMPError *error); - -static int SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); -static int SendCheckBW(PILI_RTMP *r, RTMPError *error); -static int SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error); -static int SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error); -static int SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error); -static int SendPlay(PILI_RTMP *r, RTMPError *error); -static int SendBytesReceived(PILI_RTMP *r, RTMPError *error); - -#if 0 /* unused */ -static int SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath); -#endif - -static int HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize); -static int HandleMetadata(PILI_RTMP *r, char *body, unsigned int len); -static void HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); - -static int ReadN(PILI_RTMP *r, char *buffer, int n); -static int WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error); - -static void DecodeTEA(AVal *key, AVal *text); - -static int HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len); -static int HTTP_read(PILI_RTMP *r, int fill); - -#ifndef _WIN32 -static int clk_tck; -#endif - -#ifdef CRYPTO -#include "handshake.h" -#endif - -uint32_t - PILI_RTMP_GetTime() { -#ifdef _DEBUG - return 0; -#elif defined(_WIN32) - return timeGetTime(); -#else - struct tms t; - if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK); - return times(&t) * 1000 / clk_tck; -#endif -} - -void PILI_RTMP_UserInterrupt() { - PILI_RTMP_ctrlC = TRUE; -} - -void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p) { - p->m_headerType = 0; - p->m_packetType = 0; - p->m_nChannel = 0; - p->m_nTimeStamp = 0; - p->m_nInfoField2 = 0; - p->m_hasAbsTimestamp = FALSE; - p->m_nBodySize = 0; - p->m_nBytesRead = 0; -} - -int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize) { - char *ptr = calloc(1, nSize + RTMP_MAX_HEADER_SIZE); - if (!ptr) - return FALSE; - p->m_body = ptr + RTMP_MAX_HEADER_SIZE; - p->m_nBytesRead = 0; - return TRUE; -} - -void PILI_RTMPPacket_Free(PILI_RTMPPacket *p) { - if (p->m_body) { - free(p->m_body - RTMP_MAX_HEADER_SIZE); - p->m_body = NULL; - } -} - -void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p) { - RTMP_Log(RTMP_LOGDEBUG, - "PILI_RTMP PACKET: packet type: 0x%02x. channel: 0x%02x. info 1: %d info 2: %d. Body size: %lu. body: 0x%02x", - p->m_packetType, p->m_nChannel, p->m_nTimeStamp, p->m_nInfoField2, - p->m_nBodySize, p->m_body ? (unsigned char)p->m_body[0] : 0); -} - -int PILI_RTMP_LibVersion() { - return RTMP_LIB_VERSION; -} - -void PILI_RTMP_TLS_Init() { -#ifdef CRYPTO -#ifdef USE_POLARSSL - /* Do this regardless of NO_SSL, we use havege for rtmpe too */ - RTMP_TLS_ctx = calloc(1, sizeof(struct tls_ctx)); - havege_init(&RTMP_TLS_ctx->hs); -#elif defined(USE_GNUTLS) && !defined(NO_SSL) - /* Technically we need to initialize libgcrypt ourselves if - * we're not going to call gnutls_global_init(). Ignoring this - * for now. - */ - gnutls_global_init(); - RTMP_TLS_ctx = malloc(sizeof(struct tls_ctx)); - gnutls_certificate_allocate_credentials(&RTMP_TLS_ctx->cred); - gnutls_priority_init(&RTMP_TLS_ctx->prios, "NORMAL", NULL); - gnutls_certificate_set_x509_trust_file(RTMP_TLS_ctx->cred, - "ca.pem", GNUTLS_X509_FMT_PEM); -#elif !defined(NO_SSL) /* USE_OPENSSL */ - /* libcrypto doesn't need anything special */ - SSL_load_error_strings(); - SSL_library_init(); - OpenSSL_add_all_digests(); - RTMP_TLS_ctx = SSL_CTX_new(SSLv23_method()); - SSL_CTX_set_options(RTMP_TLS_ctx, SSL_OP_ALL); - SSL_CTX_set_default_verify_paths(RTMP_TLS_ctx); -#endif -#endif -} - -PILI_RTMP * - PILI_RTMP_Alloc() { - return calloc(1, sizeof(PILI_RTMP)); -} - -void PILI_RTMP_Free(PILI_RTMP *r) { - r->m_errorCallback = NULL; - r->m_userData = NULL; - RTMPError_Free(r->m_error); - r->m_error = NULL; - - free(r); -} - -void PILI_RTMP_Init(PILI_RTMP *r) { -#ifdef CRYPTO - if (!RTMP_TLS_ctx) - RTMP_TLS_Init(); -#endif - - memset(r, 0, sizeof(PILI_RTMP)); - r->m_sb.sb_socket = -1; - r->m_inChunkSize = RTMP_DEFAULT_CHUNKSIZE; - r->m_outChunkSize = RTMP_DEFAULT_CHUNKSIZE; - r->m_nBufferMS = 30000; - r->m_nClientBW = 2500000; - r->m_nClientBW2 = 2; - r->m_nServerBW = 2500000; - r->m_fAudioCodecs = 3191.0; - r->m_fVideoCodecs = 252.0; - r->Link.timeout = 10; - r->Link.send_timeout = 10; - r->Link.swfAge = 30; - - r->m_errorCallback = NULL; - r->m_error = NULL; - r->m_userData = NULL; - r->m_is_closing = 0; - r->m_tcp_nodelay = 1; - - r->m_connCallback = NULL; - r->ip = 0; -} - -void PILI_RTMP_EnableWrite(PILI_RTMP *r) { - r->Link.protocol |= RTMP_FEATURE_WRITE; -} - -double - PILI_RTMP_GetDuration(PILI_RTMP *r) { - return r->m_fDuration; -} - -int PILI_RTMP_IsConnected(PILI_RTMP *r) { - return r->m_sb.sb_socket != -1; -} - -int PILI_RTMP_Socket(PILI_RTMP *r) { - return r->m_sb.sb_socket; -} - -int PILI_RTMP_IsTimedout(PILI_RTMP *r) { - return r->m_sb.sb_timedout; -} - -void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size) { - r->m_nBufferMS = size; -} - -void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error) { - PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, error); -} - -#undef OSS -#ifdef _WIN32 -#define OSS "WIN" -#elif defined(__sun__) -#define OSS "SOL" -#elif defined(__APPLE__) -#define OSS "MAC" -#elif defined(__linux__) -#define OSS "LNX" -#else -#define OSS "GNU" -#endif -#define DEF_VERSTR OSS " 10,0,32,18" -static const char DEFAULT_FLASH_VER[] = DEF_VERSTR; -const AVal RTMP_DefaultFlashVer = - {(char *)DEFAULT_FLASH_VER, sizeof(DEFAULT_FLASH_VER) - 1}; - -void PILI_RTMP_SetupStream(PILI_RTMP *r, - int protocol, - AVal *host, - unsigned int port, - AVal *sockshost, - AVal *playpath, - AVal *tcUrl, - AVal *swfUrl, - AVal *pageUrl, - AVal *app, - AVal *auth, - AVal *swfSHA256Hash, - uint32_t swfSize, - AVal *flashVer, - AVal *subscribepath, - int dStart, - int dStop, int bLiveStream, long int timeout) { - RTMP_Log(RTMP_LOGDEBUG, "Protocol : %s", PILI_RTMPProtocolStrings[protocol & 7]); - RTMP_Log(RTMP_LOGDEBUG, "Hostname : %.*s", host->av_len, host->av_val); - RTMP_Log(RTMP_LOGDEBUG, "Port : %d", port); - RTMP_Log(RTMP_LOGDEBUG, "Playpath : %s", playpath->av_val); - - if (tcUrl && tcUrl->av_val) - RTMP_Log(RTMP_LOGDEBUG, "tcUrl : %s", tcUrl->av_val); - if (swfUrl && swfUrl->av_val) - RTMP_Log(RTMP_LOGDEBUG, "swfUrl : %s", swfUrl->av_val); - if (pageUrl && pageUrl->av_val) - RTMP_Log(RTMP_LOGDEBUG, "pageUrl : %s", pageUrl->av_val); - if (app && app->av_val) - RTMP_Log(RTMP_LOGDEBUG, "app : %.*s", app->av_len, app->av_val); - if (auth && auth->av_val) - RTMP_Log(RTMP_LOGDEBUG, "auth : %s", auth->av_val); - if (subscribepath && subscribepath->av_val) - RTMP_Log(RTMP_LOGDEBUG, "subscribepath : %s", subscribepath->av_val); - if (flashVer && flashVer->av_val) - RTMP_Log(RTMP_LOGDEBUG, "flashVer : %s", flashVer->av_val); - if (dStart > 0) - RTMP_Log(RTMP_LOGDEBUG, "StartTime : %d msec", dStart); - if (dStop > 0) - RTMP_Log(RTMP_LOGDEBUG, "StopTime : %d msec", dStop); - - RTMP_Log(RTMP_LOGDEBUG, "live : %s", bLiveStream ? "yes" : "no"); - RTMP_Log(RTMP_LOGDEBUG, "timeout : %d sec", timeout); - -#ifdef CRYPTO - if (swfSHA256Hash != NULL && swfSize > 0) { - memcpy(r->Link.SWFHash, swfSHA256Hash->av_val, sizeof(r->Link.SWFHash)); - r->Link.SWFSize = swfSize; - RTMP_Log(RTMP_LOGDEBUG, "SWFSHA256:"); - RTMP_LogHex(RTMP_LOGDEBUG, r->Link.SWFHash, sizeof(r->Link.SWFHash)); - RTMP_Log(RTMP_LOGDEBUG, "SWFSize : %lu", r->Link.SWFSize); - } else { - r->Link.SWFSize = 0; - } -#endif - - if (sockshost->av_len) { - const char *socksport = strchr(sockshost->av_val, ':'); - char *hostname = strdup(sockshost->av_val); - - if (socksport) - hostname[socksport - sockshost->av_val] = '\0'; - r->Link.sockshost.av_val = hostname; - r->Link.sockshost.av_len = strlen(hostname); - - r->Link.socksport = socksport ? atoi(socksport + 1) : 1080; - RTMP_Log(RTMP_LOGDEBUG, "Connecting via SOCKS proxy: %s:%d", r->Link.sockshost.av_val, - r->Link.socksport); - } else { - r->Link.sockshost.av_val = NULL; - r->Link.sockshost.av_len = 0; - r->Link.socksport = 0; - } - - if (tcUrl && tcUrl->av_len) - r->Link.tcUrl = *tcUrl; - if (swfUrl && swfUrl->av_len) - r->Link.swfUrl = *swfUrl; - if (pageUrl && pageUrl->av_len) - r->Link.pageUrl = *pageUrl; - if (app && app->av_len) - r->Link.app = *app; - if (auth && auth->av_len) { - r->Link.auth = *auth; - r->Link.lFlags |= RTMP_LF_AUTH; - } - if (flashVer && flashVer->av_len) - r->Link.flashVer = *flashVer; - else - r->Link.flashVer = RTMP_DefaultFlashVer; - if (subscribepath && subscribepath->av_len) - r->Link.subscribepath = *subscribepath; - r->Link.seekTime = dStart; - r->Link.stopTime = dStop; - if (bLiveStream) - r->Link.lFlags |= RTMP_LF_LIVE; - r->Link.timeout = timeout; - - r->Link.protocol = protocol; - r->Link.hostname = *host; - r->Link.port = port; - r->Link.playpath = *playpath; - - if (r->Link.port == 0) { - if (protocol & RTMP_FEATURE_SSL) - r->Link.port = 443; - else if (protocol & RTMP_FEATURE_HTTP) - r->Link.port = 80; - else - r->Link.port = 1935; - } -} - -enum { OPT_STR = 0, - OPT_INT, - OPT_BOOL, - OPT_CONN }; -static const char *optinfo[] = { - "string", "integer", "boolean", "AMF"}; - -#define OFF(x) offsetof(struct PILI_RTMP, x) - -static struct urlopt { - AVal name; - off_t off; - int otype; - int omisc; - char *use; -} options[] = { - {AVC("socks"), OFF(Link.sockshost), OPT_STR, 0, - "Use the specified SOCKS proxy"}, - {AVC("app"), OFF(Link.app), OPT_STR, 0, - "Name of target app on server"}, - {AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0, - "URL to played stream"}, - {AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0, - "URL of played media's web page"}, - {AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0, - "URL to player SWF file"}, - {AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0, - "Flash version string (default " DEF_VERSTR ")"}, - {AVC("conn"), OFF(Link.extras), OPT_CONN, 0, - "Append arbitrary AMF data to Connect message"}, - {AVC("playpath"), OFF(Link.playpath), OPT_STR, 0, - "Path to target media on server"}, - {AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST, - "Set playlist before play command"}, - {AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE, - "Stream is live, no seeking possible"}, - {AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0, - "Stream to subscribe to"}, - {AVC("token"), OFF(Link.token), OPT_STR, 0, - "Key for SecureToken response"}, - {AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV, - "Perform SWF Verification"}, - {AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0, - "Number of days to use cached SWF hash"}, - {AVC("start"), OFF(Link.seekTime), OPT_INT, 0, - "Stream start position in milliseconds"}, - {AVC("stop"), OFF(Link.stopTime), OPT_INT, 0, - "Stream stop position in milliseconds"}, - {AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0, - "Buffer time in milliseconds"}, - {AVC("timeout"), OFF(Link.timeout), OPT_INT, 0, - "Session timeout in seconds"}, - {{NULL, 0}, 0, 0}}; - -static const AVal truth[] = { - AVC("1"), - AVC("on"), - AVC("yes"), - AVC("true"), - {0, 0}}; - -static void RTMP_OptUsage() { - int i; - - RTMP_Log(RTMP_LOGERROR, "Valid PILI_RTMP options are:\n"); - for (i = 0; options[i].name.av_len; i++) { - RTMP_Log(RTMP_LOGERROR, "%10s %-7s %s\n", options[i].name.av_val, - optinfo[options[i].otype], options[i].use); - } -} - -static int - parseAMF(AMFObject *obj, AVal *av, int *depth) { - AMFObjectProperty prop = {{0, 0}}; - int i; - char *p, *arg = av->av_val; - - if (arg[1] == ':') { - p = (char *)arg + 2; - switch (arg[0]) { - case 'B': - prop.p_type = AMF_BOOLEAN; - prop.p_vu.p_number = atoi(p); - break; - case 'S': - prop.p_type = AMF_STRING; - prop.p_vu.p_aval.av_val = p; - prop.p_vu.p_aval.av_len = av->av_len - (p - arg); - break; - case 'N': - prop.p_type = AMF_NUMBER; - prop.p_vu.p_number = strtod(p, NULL); - break; - case 'Z': - prop.p_type = AMF_NULL; - break; - case 'O': - i = atoi(p); - if (i) { - prop.p_type = AMF_OBJECT; - } else { - (*depth)--; - return 0; - } - break; - default: - return -1; - } - } else if (arg[2] == ':' && arg[0] == 'N') { - p = strchr(arg + 3, ':'); - if (!p || !*depth) - return -1; - prop.p_name.av_val = (char *)arg + 3; - prop.p_name.av_len = p - (arg + 3); - - p++; - switch (arg[1]) { - case 'B': - prop.p_type = AMF_BOOLEAN; - prop.p_vu.p_number = atoi(p); - break; - case 'S': - prop.p_type = AMF_STRING; - prop.p_vu.p_aval.av_val = p; - prop.p_vu.p_aval.av_len = av->av_len - (p - arg); - break; - case 'N': - prop.p_type = AMF_NUMBER; - prop.p_vu.p_number = strtod(p, NULL); - break; - case 'O': - prop.p_type = AMF_OBJECT; - break; - default: - return -1; - } - } else - return -1; - - if (*depth) { - AMFObject *o2; - for (i = 0; i < *depth; i++) { - o2 = &obj->o_props[obj->o_num - 1].p_vu.p_object; - obj = o2; - } - } - AMF_AddProp(obj, &prop); - if (prop.p_type == AMF_OBJECT) - (*depth)++; - return 0; -} - -int RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, RTMPError *error) { - int i; - void *v; - - for (i = 0; options[i].name.av_len; i++) { - if (opt->av_len != options[i].name.av_len) continue; - if (strcasecmp(opt->av_val, options[i].name.av_val)) continue; - v = (char *)r + options[i].off; - switch (options[i].otype) { - case OPT_STR: { - AVal *aptr = v; - *aptr = *arg; - } break; - case OPT_INT: { - long l = strtol(arg->av_val, NULL, 0); - *(int *)v = l; - } break; - case OPT_BOOL: { - int j, fl; - fl = *(int *)v; - for (j = 0; truth[j].av_len; j++) { - if (arg->av_len != truth[j].av_len) continue; - if (strcasecmp(arg->av_val, truth[j].av_val)) continue; - fl |= options[i].omisc; - break; - } - *(int *)v = fl; - } break; - case OPT_CONN: - if (parseAMF(&r->Link.extras, arg, &r->Link.edepth)) - return FALSE; - break; - } - break; - } - if (!options[i].name.av_len) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Unknown option "); - strcat(msg, opt->av_val); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorUnknowOption; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "Unknown option %s", opt->av_val); - RTMP_OptUsage(); - return FALSE; - } - - return TRUE; -} - -int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error) { - AVal opt, arg; - char *p1, *p2, *ptr = strchr(url, ' '); - int ret, len; - unsigned int port = 0; - - if (ptr) - *ptr = '\0'; - - len = (int)strlen(url); - ret = PILI_RTMP_ParseURL2(url, &r->Link.protocol, &r->Link.hostname, - &port, &r->Link.playpath0, &r->Link.app, &r->Link.domain); - if (!ret) - return ret; - r->Link.port = port; - r->Link.playpath = r->Link.playpath0; - - while (ptr) { - *ptr++ = '\0'; - p1 = ptr; - p2 = strchr(p1, '='); - if (!p2) - break; - opt.av_val = p1; - opt.av_len = p2 - p1; - *p2++ = '\0'; - arg.av_val = p2; - ptr = strchr(p2, ' '); - if (ptr) { - *ptr = '\0'; - arg.av_len = ptr - p2; - /* skip repeated spaces */ - while (ptr[1] == ' ') - *ptr++ = '\0'; - } else { - arg.av_len = strlen(p2); - } - - /* unescape */ - port = arg.av_len; - for (p1 = p2; port > 0;) { - if (*p1 == '\\') { - unsigned int c; - if (port < 3) - return FALSE; - sscanf(p1 + 1, "%02x", &c); - *p2++ = c; - port -= 3; - p1 += 3; - } else { - *p2++ = *p1++; - port--; - } - } - arg.av_len = p2 - arg.av_val; - - ret = RTMP_SetOpt(r, &opt, &arg, error); - if (!ret) - return ret; - } - - if (!r->Link.tcUrl.av_len) { - r->Link.tcUrl.av_val = url; - if (r->Link.app.av_len) { - AVal *domain = &r->Link.domain; - if (domain->av_len == 0 && r->Link.app.av_val < url + len) { - /* if app is part of original url, just use it */ - r->Link.tcUrl.av_len = r->Link.app.av_len + (r->Link.app.av_val - url); - } else { - if (domain->av_len == 0) { - domain = &r->Link.hostname; - } - if (r->Link.port = 0) { - r->Link.port = 1935; - } - len = domain->av_len + r->Link.app.av_len + sizeof("rtmpte://:65535/"); - r->Link.tcUrl.av_val = malloc(len); - r->Link.tcUrl.av_len = snprintf(r->Link.tcUrl.av_val, len, - "%s://%.*s:%d/%.*s", - PILI_RTMPProtocolStringsLower[r->Link.protocol], - domain->av_len, domain->av_val, - r->Link.port, - r->Link.app.av_len, r->Link.app.av_val); - r->Link.lFlags |= RTMP_LF_FTCU; - } - } else { - r->Link.tcUrl.av_len = strlen(url); - } - } - -#ifdef CRYPTO - if ((r->Link.lFlags & RTMP_LF_SWFV) && r->Link.swfUrl.av_len) - RTMP_HashSWF(r->Link.swfUrl.av_val, &r->Link.SWFSize, - (unsigned char *)r->Link.SWFHash, r->Link.swfAge); -#endif - - if (r->Link.port == 0) { - if (r->Link.protocol & RTMP_FEATURE_SSL) - r->Link.port = 443; - else if (r->Link.protocol & RTMP_FEATURE_HTTP) - r->Link.port = 80; - else - r->Link.port = 1935; - } - return TRUE; -} - -static int add_addr_info(PILI_RTMP *r, struct addrinfo *hints, struct addrinfo **ai, AVal *host, int port, RTMPError *error) { - char *hostname; - int ret = TRUE; - if (host->av_val[host->av_len]) { - hostname = malloc(host->av_len + 1); - memcpy(hostname, host->av_val, host->av_len); - hostname[host->av_len] = '\0'; - } else { - hostname = host->av_val; - } - - struct addrinfo *cur_ai; - char portstr[10]; - snprintf(portstr, sizeof(portstr), "%d", port); - int addrret = getaddrinfo(hostname, portstr, hints, ai); - if (addrret != 0) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Problem accessing the DNS. addr: "); - strcat(msg, hostname); - - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorAccessDNSFailed; - strcpy(error->message, msg); - RTMP_Log(RTMP_LOGERROR, "Problem accessing the DNS. %d (addr: %s) (port: %s)", addrret, hostname, portstr); - ret = FALSE; - } - - if (hostname != host->av_val) { - free(hostname); - } - return ret; -} - -int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, RTMPError *error) { - r->m_sb.sb_timedout = FALSE; - r->m_pausing = 0; - r->m_fDuration = 0.0; - - r->m_sb.sb_socket = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (ai->ai_family == AF_INET6) { - struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)ai->ai_addr; - in6->sin6_port = htons(port); - } - if (r->m_sb.sb_socket != -1) { -#ifdef RTMP_FEATURE_NONBLOCK - /* set socket non block */ - { - int flags = fcntl(r->m_sb.sb_socket, F_GETFL, 0); - if (fcntl(r->m_sb.sb_socket, F_SETFL, flags | O_NONBLOCK) < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, set socket non block failed", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - } -#endif - if (connect(r->m_sb.sb_socket, ai->ai_addr, ai->ai_addrlen) < 0) { - int err = GetSockError(); -#ifdef RTMP_FEATURE_NONBLOCK - if ((err == EINTR && !PILI_RTMP_ctrlC) || - err == EINPROGRESS) { - SET_RCVTIMEO(tv, r->Link.timeout); - fd_set wfds; - while (1) { - FD_ZERO(&wfds); - FD_SET(r->m_sb.sb_socket, &wfds); - int ret = select(r->m_sb.sb_socket + 1, NULL, &wfds, NULL, &tv); - if (ret < 0) { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect select error %d, %s", __FUNCTION__, - sockerr, strerror(sockerr)); - if (sockerr == EINTR && !PILI_RTMP_ctrlC) - continue; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP connect select error. "); - strcat(msg, strerror(sockerr)); - RTMPError_Message(error, RTMPErrorFailedToConnectSocket, msg); - PILI_RTMP_Close(r, error); - RTMPError_Free(error); - return FALSE; - } else if (ret == 0) { - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect error select timeout", __FUNCTION__); - RTMPError_Message(error, RTMPErrorSocketTimeout, "PILI_RTMP connect error. select timeout: "); - PILI_RTMP_Close(r, error); - RTMPError_Free(error); - return FALSE; - } else if (!FD_ISSET(r->m_sb.sb_socket, &wfds)) { - PILI_RTMP_Close(r, error); - RTMPError_Message(error, RTMPErrorFailedToConnectSocket, "PILI_RTMP connect error"); - RTMPError_Free(error); - return FALSE; - } else { - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect success", __FUNCTION__); - break; - } - } - } else { -#endif - - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Failed to connect socket. "); - strcat(msg, strerror(err)); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorFailedToConnectSocket; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, failed to connect socket. %d (%s)", - __FUNCTION__, err, strerror(err)); - - PILI_RTMP_Close(r, NULL); - return FALSE; -#ifdef RTMP_FEATURE_NONBLOCK - } -#endif - } - - if (r->Link.socksport) { - RTMP_Log(RTMP_LOGDEBUG, "%s ... SOCKS negotiation", __FUNCTION__); - if (!SocksNegotiate(r, error)) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Socks negotiation failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorSocksNegotiationFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, SOCKS negotiation failed.", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - } - } else { - int err = GetSockError(); - - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Failed to create socket. "); - strcat(msg, strerror(err)); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorFailedToCreateSocket; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, failed to create socket. Error: %d (%s)", __FUNCTION__, err, strerror(err)); - - return FALSE; - } - -#if RTMP_FEATURE_NONBLOCK - -#else - /* set receive timeout */ - { - SET_RCVTIMEO(tv, r->Link.timeout); - if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { - RTMP_Log(RTMP_LOGERROR, "%s, Setting socket recieve timeout to %ds failed!", - __FUNCTION__, r->Link.timeout); - } - } - - /* set send timeout*/ - { - struct timeval timeout; - timeout.tv_sec = r->Link.send_timeout; - timeout.tv_usec = 0; - - if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout))) { - RTMP_Log(RTMP_LOGERROR, "%s, Setting socket send timeout to %ds failed!", - __FUNCTION__, r->Link.timeout); - } - } -#endif - - /* ignore sigpipe */ - int kOne = 1; -#ifdef __linux - setsockopt(r->m_sb.sb_socket, SOL_SOCKET, MSG_NOSIGNAL, &kOne, sizeof(kOne)); -#else - setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_NOSIGPIPE, &kOne, sizeof(kOne)); -#endif - if (r->m_tcp_nodelay) { - int on = 1; - setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *)&on, sizeof(on)); - } - - return TRUE; -} - -int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { - if (r->Link.protocol & RTMP_FEATURE_SSL) { -#if defined(CRYPTO) && !defined(NO_SSL) - TLS_client(RTMP_TLS_ctx, r->m_sb.sb_ssl); - TLS_setfd(r->m_sb.sb_ssl, r->m_sb.sb_socket); - if (TLS_connect(r->m_sb.sb_ssl) < 0) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "TLS_Connect failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorTLSConnectFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); - RTMP_Close(r, NULL); - return FALSE; - } -#else - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "No SSL/TLS support."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorNoSSLOrTLSSupport; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, no SSL/TLS support", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - -#endif - } - if (r->Link.protocol & RTMP_FEATURE_HTTP) { - r->m_msgCounter = 1; - r->m_clientID.av_val = NULL; - r->m_clientID.av_len = 0; - HTTP_Post(r, RTMPT_OPEN, "", 1); - HTTP_read(r, 1); - r->m_msgCounter = 0; - } - RTMP_Log(RTMP_LOGDEBUG, "%s, ... connected, handshaking", __FUNCTION__); - if (!HandShake(r, TRUE, error)) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Handshake failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorHandshakeFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, handshake failed.", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - RTMP_Log(RTMP_LOGDEBUG, "%s, handshaked", __FUNCTION__); - - if (!SendConnectPacket(r, cp, error)) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP connect failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorRTMPConnectFailed; - strcpy(error->message, msg); - } - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect failed.", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - return TRUE; -} - -int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { - //获取hub - char hub[5] = {0}; - if (r->Link.app.av_len>4) { - strncpy(hub, r->Link.app.av_val,4); - }else if(r->Link.app.av_len>0){ - strncpy(hub, r->Link.app.av_val,r->Link.app.av_len); - } - - if (strlen(hub)>0) { - time_t nowtime; - time ( &nowtime ); - char tempTime[20]={0}; - sprintf(tempTime,"%ld",nowtime); - reqid[0] = '\0'; - strncat(reqid, hub, strlen(hub)); - strncat(reqid, tempTime, strlen(tempTime)); - } - - struct PILI_CONNECTION_TIME conn_time; - if (!r->Link.hostname.av_len) - return FALSE; - - struct addrinfo hints = {0}, *ai, *cur_ai; - - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - - unsigned short port; - if (r->Link.socksport) { - port = r->Link.socksport; - /* Connect via SOCKS */ - if (!add_addr_info(r, &hints, &ai, &r->Link.sockshost, r->Link.socksport, error)) { - return FALSE; - } - } else { - port = r->Link.port; - /* Connect directly */ - if (!add_addr_info(r, &hints, &ai, &r->Link.hostname, r->Link.port, error)) { - return FALSE; - } - } - r->ip = 0; //useless for ipv6 - cur_ai = ai; - - int t1 = PILI_RTMP_GetTime(); - if (!PILI_RTMP_Connect0(r, cur_ai, port, error)) { - freeaddrinfo(ai); - return FALSE; - } - conn_time.connect_time = PILI_RTMP_GetTime() - t1; - r->m_bSendCounter = TRUE; - - int t2 = PILI_RTMP_GetTime(); - int ret = PILI_RTMP_Connect1(r, cp, error); - conn_time.handshake_time = PILI_RTMP_GetTime() - t2; - - if (r->m_connCallback != NULL) { - r->m_connCallback(&conn_time, r->m_userData); - } - freeaddrinfo(ai); - return ret; -} - -//useless -static int - SocksNegotiate(PILI_RTMP *r, RTMPError *error) { - // unsigned long addr; - // struct sockaddr_in service; - // memset(&service, 0, sizeof(struct sockaddr_in)); - // - // add_addr_info(r, &service, &r->Link.hostname, r->Link.port, error); - // addr = htonl(service.sin_addr.s_addr); - // - // { - // char packet[] = { - // 4, 1, /* SOCKS 4, connect */ - // (r->Link.port >> 8) & 0xFF, - // (r->Link.port) & 0xFF, - // (char)(addr >> 24) & 0xFF, (char)(addr >> 16) & 0xFF, - // (char)(addr >> 8) & 0xFF, (char)addr & 0xFF, - // 0 - // }; /* NULL terminate */ - // - // WriteN(r, packet, sizeof packet, error); - // - // if (ReadN(r, packet, 8) != 8) - // return FALSE; - // - // if (packet[0] == 0 && packet[1] == 90) - // { - // return TRUE; - // } - // else - // { - // RTMP_Log(RTMP_LOGERROR, "%s, SOCKS returned error code %d", packet[1]); - // return FALSE; - // } - // } - return 0; -} - -int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { - PILI_RTMPPacket packet = {0}; - - /* seekTime was already set by SetupStream / SetupURL. - * This is only needed by ReconnectStream. - */ - if (seekTime > 0) - r->Link.seekTime = seekTime; - - r->m_mediaChannel = 0; - - while (!r->m_bPlaying && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, &packet)) { - if (RTMPPacket_IsReady(&packet)) { - if (!packet.m_nBodySize) - continue; - if ((packet.m_packetType == RTMP_PACKET_TYPE_AUDIO) || - (packet.m_packetType == RTMP_PACKET_TYPE_VIDEO) || - (packet.m_packetType == RTMP_PACKET_TYPE_INFO)) { - RTMP_Log(RTMP_LOGWARNING, "Received FLV packet before play()! Ignoring."); - PILI_RTMPPacket_Free(&packet); - continue; - } - - PILI_RTMP_ClientPacket(r, &packet); - PILI_RTMPPacket_Free(&packet); - } - } - - if (!r->m_bPlaying && error) { - char *msg = "PILI_RTMP connect stream failed."; - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorRTMPConnectStreamFailed; - strcpy(error->message, msg); - } - - return r->m_bPlaying; -} - -int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { - PILI_RTMP_DeleteStream(r, error); - - PILI_RTMP_SendCreateStream(r, error); - - return PILI_RTMP_ConnectStream(r, seekTime, error); -} - -int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error) { - int res; - - if (!r->m_pausing) { - res = PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, error); - if (!res) - return res; - - r->m_pausing = 1; - sleep(1); - } - res = PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, error); - r->m_pausing = 3; - return res; -} - -void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error) { - if (r->m_stream_id < 0) - return; - - r->m_bPlaying = FALSE; - - SendDeleteStream(r, r->m_stream_id, error); - r->m_stream_id = -1; -} - -int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { - int bHasMediaPacket = 0; - - while (!bHasMediaPacket && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, packet)) { - if (!RTMPPacket_IsReady(packet)) { - continue; - } - - bHasMediaPacket = PILI_RTMP_ClientPacket(r, packet); - - if (!bHasMediaPacket) { - PILI_RTMPPacket_Free(packet); - } else if (r->m_pausing == 3) { - if (packet->m_nTimeStamp <= r->m_mediaStamp) { - bHasMediaPacket = 0; -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, - "Skipped type: %02X, size: %d, TS: %d ms, abs TS: %d, pause: %d ms", - packet->m_packetType, packet->m_nBodySize, - packet->m_nTimeStamp, packet->m_hasAbsTimestamp, - r->m_mediaStamp); -#endif - continue; - } - r->m_pausing = 0; - } - } - - if (bHasMediaPacket) - r->m_bPlaying = TRUE; - else if (r->m_sb.sb_timedout && !r->m_pausing) - r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; - - return bHasMediaPacket; -} - -int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { - int bHasMediaPacket = 0; - switch (packet->m_packetType) { - case 0x01: - /* chunk size */ - HandleChangeChunkSize(r, packet); - break; - - case 0x03: - /* bytes read report */ - RTMP_Log(RTMP_LOGDEBUG, "%s, received: bytes read report", __FUNCTION__); - break; - - case 0x04: - /* ctrl */ - HandleCtrl(r, packet); - break; - - case 0x05: - /* server bw */ - HandleServerBW(r, packet); - break; - - case 0x06: - /* client bw */ - HandleClientBW(r, packet); - break; - - case 0x08: - /* audio data */ - /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: audio %lu bytes", __FUNCTION__, packet.m_nBodySize); */ - HandleAudio(r, packet); - bHasMediaPacket = 1; - if (!r->m_mediaChannel) - r->m_mediaChannel = packet->m_nChannel; - if (!r->m_pausing) - r->m_mediaStamp = packet->m_nTimeStamp; - break; - - case 0x09: - /* video data */ - /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: video %lu bytes", __FUNCTION__, packet.m_nBodySize); */ - HandleVideo(r, packet); - bHasMediaPacket = 1; - if (!r->m_mediaChannel) - r->m_mediaChannel = packet->m_nChannel; - if (!r->m_pausing) - r->m_mediaStamp = packet->m_nTimeStamp; - break; - - case 0x0F: /* flex stream send */ - RTMP_Log(RTMP_LOGDEBUG, - "%s, flex stream send, size %lu bytes, not supported, ignoring", - __FUNCTION__, packet->m_nBodySize); - break; - - case 0x10: /* flex shared object */ - RTMP_Log(RTMP_LOGDEBUG, - "%s, flex shared object, size %lu bytes, not supported, ignoring", - __FUNCTION__, packet->m_nBodySize); - break; - - case 0x11: /* flex message */ - { - RTMP_Log(RTMP_LOGDEBUG, - "%s, flex message, size %lu bytes, not fully supported", - __FUNCTION__, packet->m_nBodySize); -/*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - -/* some DEBUG code */ -#if 0 - RTMP_LIB_AMFObject obj; - int nRes = obj.Decode(packet.m_body+1, packet.m_nBodySize-1); - if(nRes < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, error decoding AMF3 packet", __FUNCTION__); - /*return; */ - } - - obj.Dump(); -#endif - - if (HandleInvoke(r, packet->m_body + 1, packet->m_nBodySize - 1) == 1) - bHasMediaPacket = 2; - break; - } - case 0x12: - /* metadata (notify) */ - RTMP_Log(RTMP_LOGDEBUG, "%s, received: notify %lu bytes", __FUNCTION__, - packet->m_nBodySize); - if (HandleMetadata(r, packet->m_body, packet->m_nBodySize)) - bHasMediaPacket = 1; - break; - - case 0x13: - RTMP_Log(RTMP_LOGDEBUG, "%s, shared object, not supported, ignoring", - __FUNCTION__); - break; - - case 0x14: - /* invoke */ - RTMP_Log(RTMP_LOGDEBUG, "%s, received: invoke %lu bytes", __FUNCTION__, - packet->m_nBodySize); - /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - - if (HandleInvoke(r, packet->m_body, packet->m_nBodySize) == 1) - bHasMediaPacket = 2; - break; - - case 0x16: { - /* go through FLV packets and handle metadata packets */ - unsigned int pos = 0; - uint32_t nTimeStamp = packet->m_nTimeStamp; - - while (pos + 11 < packet->m_nBodySize) { - uint32_t dataSize = AMF_DecodeInt24(packet->m_body + pos + 1); /* size without header (11) and prevTagSize (4) */ - - if (pos + 11 + dataSize + 4 > packet->m_nBodySize) { - RTMP_Log(RTMP_LOGWARNING, "Stream corrupt?!"); - break; - } - if (packet->m_body[pos] == 0x12) { - HandleMetadata(r, packet->m_body + pos + 11, dataSize); - } else if (packet->m_body[pos] == 8 || packet->m_body[pos] == 9) { - nTimeStamp = AMF_DecodeInt24(packet->m_body + pos + 4); - nTimeStamp |= (packet->m_body[pos + 7] << 24); - } - pos += (11 + dataSize + 4); - } - if (!r->m_pausing) - r->m_mediaStamp = nTimeStamp; - - /* FLV tag(s) */ - /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: FLV tag(s) %lu bytes", __FUNCTION__, packet.m_nBodySize); */ - bHasMediaPacket = 1; - break; - } - default: - RTMP_Log(RTMP_LOGDEBUG, "%s, unknown packet type received: 0x%02x", __FUNCTION__, - packet->m_packetType); -#ifdef _DEBUG - RTMP_LogHex(RTMP_LOGDEBUG, packet->m_body, packet->m_nBodySize); -#endif - } - - return bHasMediaPacket; -} - -#ifdef _DEBUG -extern FILE *netstackdump; -extern FILE *netstackdump_read; -#endif - -static int - ReadN(PILI_RTMP *r, char *buffer, int n) { - int nOriginalSize = n; - int avail; - char *ptr; - - r->m_sb.sb_timedout = FALSE; - -#ifdef _DEBUG - memset(buffer, 0, n); -#endif - - ptr = buffer; - while (n > 0) { - int nBytes = 0, nRead; - if (r->Link.protocol & RTMP_FEATURE_HTTP) { - while (!r->m_resplen) { - if (r->m_sb.sb_size < 144) { - if (!r->m_unackd) - HTTP_Post(r, RTMPT_IDLE, "", 1); - if (PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout) < 1) { - if (!r->m_sb.sb_timedout) { - PILI_RTMP_Close(r, NULL); - } else { - RTMPError error = {0}; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP socket timeout"); - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorSocketTimeout; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - } - - return 0; - } - } - HTTP_read(r, 0); - } - if (r->m_resplen && !r->m_sb.sb_size) - PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout); - avail = r->m_sb.sb_size; - if (avail > r->m_resplen) - avail = r->m_resplen; - } else { - avail = r->m_sb.sb_size; - if (avail == 0) { - if (PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout) < 1) { - if (!r->m_sb.sb_timedout) { - PILI_RTMP_Close(r, NULL); - } else { - RTMPError error = {0}; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP socket timeout"); - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorSocketTimeout; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - } - - return 0; - } - avail = r->m_sb.sb_size; - } - } - nRead = ((n < avail) ? n : avail); - if (nRead > 0) { - memcpy(ptr, r->m_sb.sb_start, nRead); - r->m_sb.sb_start += nRead; - r->m_sb.sb_size -= nRead; - nBytes = nRead; - r->m_nBytesIn += nRead; - if (r->m_bSendCounter && r->m_nBytesIn > r->m_nBytesInSent + r->m_nClientBW / 2) - SendBytesReceived(r, NULL); - } -/*RTMP_Log(RTMP_LOGDEBUG, "%s: %d bytes\n", __FUNCTION__, nBytes); */ -#ifdef _DEBUG - fwrite(ptr, 1, nBytes, netstackdump_read); -#endif - - if (nBytes == 0) { - RTMP_Log(RTMP_LOGDEBUG, "%s, PILI_RTMP socket closed by peer", __FUNCTION__); - /*goto again; */ - RTMPError error = {0}; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP socket closed by peer. "); - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorSocketClosedByPeer; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - break; - } - - if (r->Link.protocol & RTMP_FEATURE_HTTP) - r->m_resplen -= nBytes; - -#ifdef CRYPTO - if (r->Link.rc4keyIn) { - RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr); - } -#endif - - n -= nBytes; - ptr += nBytes; - } - - return nOriginalSize - n; -} - -static int - WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error) { - const char *ptr = buffer; -#ifdef CRYPTO - char *encrypted = 0; - char buf[RTMP_BUFFER_CACHE_SIZE]; - - if (r->Link.rc4keyOut) { - if (n > sizeof(buf)) - encrypted = (char *)malloc(n); - else - encrypted = (char *)buf; - ptr = encrypted; - RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr); - } -#endif - -#ifdef RTMP_FEATURE_NONBLOCK - SET_RCVTIMEO(tv, r->Link.timeout); - fd_set wfds; -#endif - while (n > 0) { - -#ifdef RTMP_FEATURE_NONBLOCK - FD_ZERO(&wfds); - FD_SET(r->m_sb.sb_socket, &wfds); - int ret = select(r->m_sb.sb_socket + 1, NULL, &wfds, NULL, &tv); - if (ret < 0) { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send select error %d, %s", __FUNCTION__, - sockerr, strerror(sockerr)); - if (sockerr == EINTR && !PILI_RTMP_ctrlC) - continue; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP send select error. "); - strcat(msg, strerror(sockerr)); - RTMPError_Message(error, RTMPErrorSendFailed, msg); - PILI_RTMP_Close(r, error); - RTMPError_Free(error); - n = 1; - break; - } else if (ret == 0) { - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send error select timeout", __FUNCTION__); - RTMPError_Message(error, RTMPErrorSocketTimeout, "PILI_RTMP send error. select timeout: "); - PILI_RTMP_Close(r, error); - RTMPError_Free(error); - n = 1; - break; - } else if (!FD_ISSET(r->m_sb.sb_socket, &wfds)) { - PILI_RTMP_Close(r, error); - RTMPError_Message(error, RTMPErrorSendFailed, "PILI_RTMP send error socket can not write"); - RTMPError_Free(error); - n = 1; - break; - } -#endif - int nBytes; - - if (r->Link.protocol & RTMP_FEATURE_HTTP) - nBytes = HTTP_Post(r, RTMPT_SEND, ptr, n); - else - nBytes = PILI_RTMPSockBuf_Send(&r->m_sb, ptr, n); - /*RTMP_Log(RTMP_LOGDEBUG, "%s: %d\n", __FUNCTION__, nBytes); */ - - if (nBytes < 0) { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send error %d, %s, (%d bytes)", __FUNCTION__, - sockerr, strerror(sockerr), n); - - /* - Specify the receiving or sending timeouts until reporting an error. - The argument is a struct timeval. - If an input or output function blocks for this period of time, - and data has been sent or received, - the return value of that function will be the amount of data transferred; - if no data has been transferred and the timeout has been reached then -1 is returned - with errno set to EAGAIN or EWOULDBLOCK, or EINPROGRESS (for connect(2)) just as if the socket was specified to be nonblocking. - If the timeout is set to zero (the default) then the operation will never timeout. - Timeouts only have effect for system calls that perform socket I/O (e.g., read(2), recvmsg(2), send(2), sendmsg(2)); - timeouts have no effect for select(2), poll(2), epoll_wait(2), and so on. - */ - if ((sockerr == EINTR && !PILI_RTMP_ctrlC ) || sockerr == EAGAIN) - continue; - -#ifdef RTMP_FEATURE_NONBLOCK - if (sockerr == EWOULDBLOCK || sockerr == EAGAIN) { - continue; - } else if (error) { -#else - if (error) { -#endif - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP send error. socket error: "); - strcat(msg, strerror(sockerr)); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorSendFailed; - strcpy(error->message, msg); - } - - PILI_RTMP_Close(r, error); - - RTMPError_Free(error); - - n = 1; - break; - } - - if (nBytes == 0) - break; - - n -= nBytes; - ptr += nBytes; - } - -#ifdef CRYPTO - if (encrypted && encrypted != buf) - free(encrypted); -#endif - - return n == 0; -} - -#define SAVC(x) static const AVal av_##x = AVC(#x) - -SAVC(app); -SAVC(connect); -SAVC(flashVer); -SAVC(swfUrl); -SAVC(pageUrl); -SAVC(tcUrl); -SAVC(fpad); -SAVC(capabilities); -SAVC(audioCodecs); -SAVC(videoCodecs); -SAVC(videoFunction); -SAVC(objectEncoding); -SAVC(secureToken); -SAVC(secureTokenResponse); -SAVC(type); -SAVC(nonprivate); -SAVC(xreqid); - -static int - SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[4096], *pend = pbuf + sizeof(pbuf); - char *enc; - - if (cp) - return PILI_RTMP_SendPacket(r, cp, TRUE, error); - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_connect); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_OBJECT; - - enc = AMF_EncodeNamedString(enc, pend, &av_app, &r->Link.app); - if (!enc) - return FALSE; - AVal requestId; - requestId.av_val = reqid; - requestId.av_len = (int)strlen(reqid); - - if (requestId.av_len){ - enc = AMF_EncodeNamedString(enc,pend,&av_xreqid,&requestId); - if (!enc) - return FALSE; - } - - if (r->Link.protocol & RTMP_FEATURE_WRITE) { - enc = AMF_EncodeNamedString(enc, pend, &av_type, &av_nonprivate); - if (!enc) - return FALSE; - } - if (r->Link.flashVer.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_flashVer, &r->Link.flashVer); - if (!enc) - return FALSE; - } - if (r->Link.swfUrl.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_swfUrl, &r->Link.swfUrl); - if (!enc) - return FALSE; - } - if (r->Link.tcUrl.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_tcUrl, &r->Link.tcUrl); - if (!enc) - return FALSE; - } - if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { - enc = AMF_EncodeNamedBoolean(enc, pend, &av_fpad, FALSE); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_capabilities, 15.0); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_audioCodecs, r->m_fAudioCodecs); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_videoCodecs, r->m_fVideoCodecs); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_videoFunction, 1.0); - if (!enc) - return FALSE; - if (r->Link.pageUrl.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_pageUrl, &r->Link.pageUrl); - if (!enc) - return FALSE; - } - } - if (r->m_fEncoding != 0.0 || r->m_bSendEncoding) { /* AMF0, AMF3 not fully supported yet */ - enc = AMF_EncodeNamedNumber(enc, pend, &av_objectEncoding, r->m_fEncoding); - if (!enc) - return FALSE; - } - if (enc + 3 >= pend) - return FALSE; - *enc++ = 0; - *enc++ = 0; /* end of object - 0x00 0x00 0x09 */ - *enc++ = AMF_OBJECT_END; - - /* add auth string */ - if (r->Link.auth.av_len) { - enc = AMF_EncodeBoolean(enc, pend, r->Link.lFlags & RTMP_LF_AUTH); - if (!enc) - return FALSE; - enc = AMF_EncodeString(enc, pend, &r->Link.auth); - if (!enc) - return FALSE; - } - if (r->Link.extras.o_num) { - int i; - for (i = 0; i < r->Link.extras.o_num; i++) { - enc = AMFProp_Encode(&r->Link.extras.o_props[i], enc, pend); - if (!enc) - return FALSE; - } - } - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -#if 0 /* unused */ -SAVC(bgHasStream); - -static int -SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath) -{ - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_bgHasStream); - enc = AMF_EncodeNumber(enc, pend, dId); - *enc++ = AMF_NULL; - - enc = AMF_EncodeString(enc, pend, playpath); - if (enc == NULL) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE); -} -#endif - -SAVC(createStream); - -int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_createStream); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; /* NULL */ - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(FCSubscribe); - -static int - SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[512], *pend = pbuf + sizeof(pbuf); - char *enc; - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - RTMP_Log(RTMP_LOGDEBUG, "FCSubscribe: %s", subscribepath->av_val); - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_FCSubscribe); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, subscribepath); - - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(releaseStream); - -static int - SendReleaseStream(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_releaseStream); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(FCPublish); - -static int - SendFCPublish(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_FCPublish); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(FCUnpublish); - -static int - SendFCUnpublish(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_FCUnpublish); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(publish); -SAVC(live); -SAVC(record); - -static int - SendPublish(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x04; /* source channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = r->m_stream_id; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_publish); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - /* FIXME: should we choose live based on Link.lFlags & RTMP_LF_LIVE? */ - enc = AMF_EncodeString(enc, pend, &av_live); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(deleteStream); - -static int - SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_deleteStream); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeNumber(enc, pend, dStreamId); - - packet.m_nBodySize = enc - packet.m_body; - - /* no response expected */ - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(pause); - -int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int iTime, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* video channel */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* invoke */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_pause); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeBoolean(enc, pend, DoPause); - enc = AMF_EncodeNumber(enc, pend, (double)iTime); - - packet.m_nBodySize = enc - packet.m_body; - - RTMP_Log(RTMP_LOGDEBUG, "%s, %d, pauseTime=%d", __FUNCTION__, DoPause, iTime); - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error) { - if (DoPause) - r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; - return PILI_RTMP_SendPause(r, DoPause, r->m_pauseStamp, error); -} - -SAVC(seek); - -int PILI_RTMP_SendSeek(PILI_RTMP *r, int iTime, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* video channel */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* invoke */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_seek); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeNumber(enc, pend, (double)iTime); - - packet.m_nBodySize = enc - packet.m_body; - - r->m_read.flags |= RTMP_READ_SEEKING; - r->m_read.nResumeTS = 0; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - - packet.m_nChannel = 0x02; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x05; /* Server BW */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - packet.m_nBodySize = 4; - - AMF_EncodeInt32(packet.m_body, pend, r->m_nServerBW); - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - - packet.m_nChannel = 0x02; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x06; /* Client BW */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - packet.m_nBodySize = 5; - - AMF_EncodeInt32(packet.m_body, pend, r->m_nClientBW); - packet.m_body[4] = r->m_nClientBW2; - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -static int - SendBytesReceived(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - - packet.m_nChannel = 0x02; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x03; /* bytes in */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - packet.m_nBodySize = 4; - - AMF_EncodeInt32(packet.m_body, pend, r->m_nBytesIn); /* hard coded for now */ - r->m_nBytesInSent = r->m_nBytesIn; - - /*RTMP_Log(RTMP_LOGDEBUG, "Send bytes report. 0x%x (%d bytes)", (unsigned int)m_nBytesIn, m_nBytesIn); */ - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(_checkbw); - -static int - SendCheckBW(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av__checkbw); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - - packet.m_nBodySize = enc - packet.m_body; - - /* triggers _onbwcheck and eventually results in _onbwdone */ - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(_result); - -static int - SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av__result); - enc = AMF_EncodeNumber(enc, pend, txn); - *enc++ = AMF_NULL; - enc = AMF_EncodeNumber(enc, pend, (double)r->m_nBWCheckCounter++); - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(ping); -SAVC(pong); - -static int - SendPong(PILI_RTMP *r, double txn, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_pong); - enc = AMF_EncodeNumber(enc, pend, txn); - *enc++ = AMF_NULL; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(play); - -static int - SendPlay(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* we make 8 our stream channel */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_play); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - - RTMP_Log(RTMP_LOGDEBUG, "%s, seekTime=%d, stopTime=%d, sending play: %s", - __FUNCTION__, r->Link.seekTime, r->Link.stopTime, - r->Link.playpath.av_val); - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - /* Optional parameters start and len. - * - * start: -2, -1, 0, positive number - * -2: looks for a live stream, then a recorded stream, - * if not found any open a live stream - * -1: plays a live stream - * >=0: plays a recorded streams from 'start' milliseconds - */ - if (r->Link.lFlags & RTMP_LF_LIVE) - enc = AMF_EncodeNumber(enc, pend, -1000.0); - else { - if (r->Link.seekTime > 0.0) - enc = AMF_EncodeNumber(enc, pend, r->Link.seekTime); /* resume from here */ - else - enc = AMF_EncodeNumber(enc, pend, 0.0); /*-2000.0);*/ /* recorded as default, -2000.0 is not reliable since that freezes the player if the stream is not found */ - } - if (!enc) - return FALSE; - - /* len: -1, 0, positive number - * -1: plays live or recorded stream to the end (default) - * 0: plays a frame 'start' ms away from the beginning - * >0: plays a live or recoded stream for 'len' milliseconds - */ - /*enc += EncodeNumber(enc, -1.0); */ /* len */ - if (r->Link.stopTime) { - enc = AMF_EncodeNumber(enc, pend, r->Link.stopTime - r->Link.seekTime); - if (!enc) - return FALSE; - } - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(set_playlist); -SAVC(0); - -static int - SendPlaylist(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* we make 8 our stream channel */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_set_playlist); - enc = AMF_EncodeNumber(enc, pend, 0); - *enc++ = AMF_NULL; - *enc++ = AMF_ECMA_ARRAY; - *enc++ = 0; - *enc++ = 0; - *enc++ = 0; - *enc++ = AMF_OBJECT; - enc = AMF_EncodeNamedString(enc, pend, &av_0, &r->Link.playpath); - if (!enc) - return FALSE; - if (enc + 3 >= pend) - return FALSE; - *enc++ = 0; - *enc++ = 0; - *enc++ = AMF_OBJECT_END; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -static int - SendSecureTokenResponse(PILI_RTMP *r, AVal *resp, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_secureTokenResponse); - enc = AMF_EncodeNumber(enc, pend, 0.0); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, resp); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -/* -from http://jira.red5.org/confluence/display/docs/Ping: - -Ping is the most mysterious message in PILI_RTMP and till now we haven't fully interpreted it yet. In summary, Ping message is used as a special command that are exchanged between client and server. This page aims to document all known Ping messages. Expect the list to grow. - -The type of Ping packet is 0x4 and contains two mandatory parameters and two optional parameters. The first parameter is the type of Ping and in short integer. The second parameter is the target of the ping. As Ping is always sent in Channel 2 (control channel) and the target object in PILI_RTMP header is always 0 which means the Connection object, it's necessary to put an extra parameter to indicate the exact target object the Ping is sent to. The second parameter takes this responsibility. The value has the same meaning as the target object field in PILI_RTMP header. (The second value could also be used as other purposes, like RTT Ping/Pong. It is used as the timestamp.) The third and fourth parameters are optional and could be looked upon as the parameter of the Ping packet. Below is an unexhausted list of Ping messages. - - * type 0: Clear the stream. No third and fourth parameters. The second parameter could be 0. After the connection is established, a Ping 0,0 will be sent from server to client. The message will also be sent to client on the start of Play and in response of a Seek or Pause/Resume request. This Ping tells client to re-calibrate the clock with the timestamp of the next packet server sends. - * type 1: Tell the stream to clear the playing buffer. - * type 3: Buffer time of the client. The third parameter is the buffer time in millisecond. - * type 4: Reset a stream. Used together with type 0 in the case of VOD. Often sent before type 0. - * type 6: Ping the client from server. The second parameter is the current time. - * type 7: Pong reply from client. The second parameter is the time the server sent with his ping request. - * type 26: SWFVerification request - * type 27: SWFVerification response -*/ -int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, unsigned int nTime, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - int nSize; - char *buf; - - RTMP_Log(RTMP_LOGDEBUG, "sending ctrl. type: 0x%04x", (unsigned short)nType); - - packet.m_nChannel = 0x02; /* control channel (ping) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x04; /* ctrl */ - packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - switch (nType) { - case 0x03: - nSize = 10; - break; /* buffer time */ - case 0x1A: - nSize = 3; - break; /* SWF verify request */ - case 0x1B: - nSize = 44; - break; /* SWF verify response */ - default: - nSize = 6; - break; - } - - packet.m_nBodySize = nSize; - - buf = packet.m_body; - buf = AMF_EncodeInt16(buf, pend, nType); - - if (nType == 0x1B) { -#ifdef CRYPTO - memcpy(buf, r->Link.SWFVerificationResponse, 42); - RTMP_Log(RTMP_LOGDEBUG, "Sending SWFVerification response: "); - RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize); -#endif - } else if (nType == 0x1A) { - *buf = nObject & 0xff; - } else { - if (nSize > 2) - buf = AMF_EncodeInt32(buf, pend, nObject); - - if (nSize > 6) - buf = AMF_EncodeInt32(buf, pend, nTime); - } - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -static void - AV_erase(PILI_RTMP_METHOD *vals, int *num, int i, int freeit) { - if (freeit) - free(vals[i].name.av_val); - (*num)--; - for (; i < *num; i++) { - vals[i] = vals[i + 1]; - } - vals[i].name.av_val = NULL; - vals[i].name.av_len = 0; - vals[i].num = 0; -} - -void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, freeit); -} - -static void - AV_queue(PILI_RTMP_METHOD **vals, int *num, AVal *av, int txn) { - char *tmp; - if (!(*num & 0x0f)) - *vals = realloc(*vals, (*num + 16) * sizeof(PILI_RTMP_METHOD)); - tmp = malloc(av->av_len + 1); - memcpy(tmp, av->av_val, av->av_len); - tmp[av->av_len] = '\0'; - (*vals)[*num].num = txn; - (*vals)[*num].name.av_len = av->av_len; - (*vals)[(*num)++].name.av_val = tmp; -} - -static void - AV_clear(PILI_RTMP_METHOD *vals, int num) { - int i; - for (i = 0; i < num; i++) - free(vals[i].name.av_val); - free(vals); -} - -SAVC(onBWDone); -SAVC(onFCSubscribe); -SAVC(onFCUnsubscribe); -SAVC(_onbwcheck); -SAVC(_onbwdone); -SAVC(_error); -SAVC(close); -SAVC(code); -SAVC(level); -SAVC(onStatus); -SAVC(playlist_ready); -static const AVal av_NetStream_Failed = AVC("NetStream.Failed"); -static const AVal av_NetStream_Play_Failed = AVC("NetStream.Play.Failed"); -static const AVal av_NetStream_Play_StreamNotFound = - AVC("NetStream.Play.StreamNotFound"); -static const AVal av_NetConnection_Connect_InvalidApp = - AVC("NetConnection.Connect.InvalidApp"); -static const AVal av_NetStream_Play_Start = AVC("NetStream.Play.Start"); -static const AVal av_NetStream_Play_Complete = AVC("NetStream.Play.Complete"); -static const AVal av_NetStream_Play_Stop = AVC("NetStream.Play.Stop"); -static const AVal av_NetStream_Seek_Notify = AVC("NetStream.Seek.Notify"); -static const AVal av_NetStream_Pause_Notify = AVC("NetStream.Pause.Notify"); -static const AVal av_NetStream_Play_UnpublishNotify = - AVC("NetStream.Play.UnpublishNotify"); -static const AVal av_NetStream_Publish_Start = AVC("NetStream.Publish.Start"); - -/* Returns 0 for OK/Failed/error, 1 for 'Stop or Complete' */ -static int - HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize) { - AMFObject obj; - AVal method; - int txn; - int ret = 0, nRes; - if (body[0] != 0x02) /* make sure it is a string method name we start with */ - { - RTMP_Log(RTMP_LOGWARNING, "%s, Sanity failed. no string method in invoke packet", - __FUNCTION__); - return 0; - } - - nRes = AMF_Decode(&obj, body, nBodySize, FALSE); - if (nRes < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, error decoding invoke packet", __FUNCTION__); - return 0; - } - - AMF_Dump(&obj); - AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &method); - txn = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 1)); - RTMP_Log(RTMP_LOGDEBUG, "%s, server invoking <%s>", __FUNCTION__, method.av_val); - - RTMPError error = {0}; - - if (AVMATCH(&method, &av__result)) { - AVal methodInvoked = {0}; - int i; - - for (i = 0; i < r->m_numCalls; i++) { - if (r->m_methodCalls[i].num == txn) { - methodInvoked = r->m_methodCalls[i].name; - AV_erase(r->m_methodCalls, &r->m_numCalls, i, FALSE); - break; - } - } - if (!methodInvoked.av_val) { - RTMP_Log(RTMP_LOGDEBUG, "%s, received result id %d without matching request", - __FUNCTION__, txn); - goto leave; - } - - RTMP_Log(RTMP_LOGDEBUG, "%s, received result for method call <%s>", __FUNCTION__, - methodInvoked.av_val); - - if (AVMATCH(&methodInvoked, &av_connect)) { - if (r->Link.token.av_len) { - AMFObjectProperty p; - if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_secureToken, &p)) { - DecodeTEA(&r->Link.token, &p.p_vu.p_aval); - SendSecureTokenResponse(r, &p.p_vu.p_aval, &error); - } - } - if (r->Link.protocol & RTMP_FEATURE_WRITE) { - SendReleaseStream(r, &error); - SendFCPublish(r, &error); - } else { - PILI_RTMP_SendServerBW(r, &error); - PILI_RTMP_SendCtrl(r, 3, 0, 300, &error); - } - PILI_RTMP_SendCreateStream(r, &error); - - if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { - /* Send the FCSubscribe if live stream or if subscribepath is set */ - if (r->Link.subscribepath.av_len) - SendFCSubscribe(r, &r->Link.subscribepath, &error); - else if (r->Link.lFlags & RTMP_LF_LIVE) - SendFCSubscribe(r, &r->Link.playpath, &error); - } - } else if (AVMATCH(&methodInvoked, &av_createStream)) { - r->m_stream_id = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 3)); - - if (r->Link.protocol & RTMP_FEATURE_WRITE) { - SendPublish(r, &error); - } else { - if (r->Link.lFlags & RTMP_LF_PLST) - SendPlaylist(r, &error); - SendPlay(r, &error); - PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, &error); - } - } else if (AVMATCH(&methodInvoked, &av_play) || - AVMATCH(&methodInvoked, &av_publish)) { - r->m_bPlaying = TRUE; - } - free(methodInvoked.av_val); - } else if (AVMATCH(&method, &av_onBWDone)) { - if (!r->m_nBWCheckCounter) - SendCheckBW(r, &error); - } else if (AVMATCH(&method, &av_onFCSubscribe)) { - /* SendOnFCSubscribe(); */ - } else if (AVMATCH(&method, &av_onFCUnsubscribe)) { - PILI_RTMP_Close(r, NULL); - ret = 1; - } else if (AVMATCH(&method, &av_ping)) { - SendPong(r, txn, &error); - } else if (AVMATCH(&method, &av__onbwcheck)) { - SendCheckBWResult(r, txn, &error); - } else if (AVMATCH(&method, &av__onbwdone)) { - int i; - for (i = 0; i < r->m_numCalls; i++) - if (AVMATCH(&r->m_methodCalls[i].name, &av__checkbw)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } else if (AVMATCH(&method, &av__error)) { - RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server sent error"); - } else if (AVMATCH(&method, &av_close)) { - RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server requested close"); - RTMPError error = {0}; - char *msg = "PILI_RTMP server requested close."; - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorServerRequestedClose; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - } else if (AVMATCH(&method, &av_onStatus)) { - AMFObject obj2; - AVal code, level; - AMFProp_GetObject(AMF_GetProp(&obj, NULL, 3), &obj2); - AMFProp_GetString(AMF_GetProp(&obj2, &av_code, -1), &code); - AMFProp_GetString(AMF_GetProp(&obj2, &av_level, -1), &level); - - RTMP_Log(RTMP_LOGDEBUG, "%s, onStatus: %s", __FUNCTION__, code.av_val); - if (AVMATCH(&code, &av_NetStream_Failed) || AVMATCH(&code, &av_NetStream_Play_Failed) || AVMATCH(&code, &av_NetStream_Play_StreamNotFound) || AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { - r->m_stream_id = -1; - - int err_code; - char msg[100]; - memset(msg, 0, 100); - - if (AVMATCH(&code, &av_NetStream_Failed)) { - err_code = RTMPErrorNetStreamFailed; - strcpy(msg, "NetStream failed."); - } else if (AVMATCH(&code, &av_NetStream_Play_Failed)) { - err_code = RTMPErrorNetStreamPlayFailed; - strcpy(msg, "NetStream play failed."); - } else if (AVMATCH(&code, &av_NetStream_Play_StreamNotFound)) { - err_code = RTMPErrorNetStreamPlayStreamNotFound; - strcpy(msg, "NetStream play stream not found."); - } else if (AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { - err_code = RTMPErrorNetConnectionConnectInvalidApp; - strcpy(msg, "NetConnection connect invalip app."); - } else { - err_code = RTMPErrorUnknow; - strcpy(msg, "Unknow error."); - } - - RTMPError_Alloc(&error, strlen(msg)); - error.code = err_code; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - - RTMP_Log(RTMP_LOGERROR, "Closing connection: %s", code.av_val); - } - - else if (AVMATCH(&code, &av_NetStream_Play_Start)) { - int i; - r->m_bPlaying = TRUE; - for (i = 0; i < r->m_numCalls; i++) { - if (AVMATCH(&r->m_methodCalls[i].name, &av_play)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } - } - - else if (AVMATCH(&code, &av_NetStream_Publish_Start)) { - int i; - r->m_bPlaying = TRUE; - for (i = 0; i < r->m_numCalls; i++) { - if (AVMATCH(&r->m_methodCalls[i].name, &av_publish)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } - } - - /* Return 1 if this is a Play.Complete or Play.Stop */ - else if (AVMATCH(&code, &av_NetStream_Play_Complete) || AVMATCH(&code, &av_NetStream_Play_Stop) || AVMATCH(&code, &av_NetStream_Play_UnpublishNotify)) { - PILI_RTMP_Close(r, NULL); - ret = 1; - } - - else if (AVMATCH(&code, &av_NetStream_Seek_Notify)) { - r->m_read.flags &= ~RTMP_READ_SEEKING; - } - - else if (AVMATCH(&code, &av_NetStream_Pause_Notify)) { - if (r->m_pausing == 1 || r->m_pausing == 2) { - PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, &error); - r->m_pausing = 3; - } - } - } else if (AVMATCH(&method, &av_playlist_ready)) { - int i; - for (i = 0; i < r->m_numCalls; i++) { - if (AVMATCH(&r->m_methodCalls[i].name, &av_set_playlist)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } - } else { - } -leave: - AMF_Reset(&obj); - return ret; -} - -int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, - AMFObjectProperty *p) { - int n; - /* this is a small object search to locate the "duration" property */ - for (n = 0; n < obj->o_num; n++) { - AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); - - if (AVMATCH(&prop->p_name, name)) { - *p = *prop; - return TRUE; - } - - if (prop->p_type == AMF_OBJECT) { - if (PILI_RTMP_FindFirstMatchingProperty(&prop->p_vu.p_object, name, p)) - return TRUE; - } - } - return FALSE; -} - -/* Like above, but only check if name is a prefix of property */ -int PILI_RTMP_FindPrefixProperty(AMFObject *obj, const AVal *name, - AMFObjectProperty *p) { - int n; - for (n = 0; n < obj->o_num; n++) { - AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); - - if (prop->p_name.av_len > name->av_len && - !memcmp(prop->p_name.av_val, name->av_val, name->av_len)) { - *p = *prop; - return TRUE; - } - - if (prop->p_type == AMF_OBJECT) { - if (PILI_RTMP_FindPrefixProperty(&prop->p_vu.p_object, name, p)) - return TRUE; - } - } - return FALSE; -} - -static int - DumpMetaData(AMFObject *obj) { - AMFObjectProperty *prop; - int n; - for (n = 0; n < obj->o_num; n++) { - prop = AMF_GetProp(obj, NULL, n); - if (prop->p_type != AMF_OBJECT) { - char str[256] = ""; - switch (prop->p_type) { - case AMF_NUMBER: - snprintf(str, 255, "%.2f", prop->p_vu.p_number); - break; - case AMF_BOOLEAN: - snprintf(str, 255, "%s", - prop->p_vu.p_number != 0. ? "TRUE" : "FALSE"); - break; - case AMF_STRING: - snprintf(str, 255, "%.*s", prop->p_vu.p_aval.av_len, - prop->p_vu.p_aval.av_val); - break; - case AMF_DATE: - snprintf(str, 255, "timestamp:%.2f", prop->p_vu.p_number); - break; - default: - snprintf(str, 255, "INVALID TYPE 0x%02x", - (unsigned char)prop->p_type); - } - if (prop->p_name.av_len) { - /* chomp */ - if (strlen(str) >= 1 && str[strlen(str) - 1] == '\n') - str[strlen(str) - 1] = '\0'; - RTMP_Log(RTMP_LOGINFO, " %-22.*s%s", prop->p_name.av_len, - prop->p_name.av_val, str); - } - } else { - if (prop->p_name.av_len) - RTMP_Log(RTMP_LOGINFO, "%.*s:", prop->p_name.av_len, prop->p_name.av_val); - DumpMetaData(&prop->p_vu.p_object); - } - } - return FALSE; -} - -SAVC(onMetaData); -SAVC(duration); -SAVC(video); -SAVC(audio); - -static int - HandleMetadata(PILI_RTMP *r, char *body, unsigned int len) { - /* allright we get some info here, so parse it and print it */ - /* also keep duration or filesize to make a nice progress bar */ - - AMFObject obj; - AVal metastring; - int ret = FALSE; - - int nRes = AMF_Decode(&obj, body, len, FALSE); - if (nRes < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, error decoding meta data packet", __FUNCTION__); - return FALSE; - } - - AMF_Dump(&obj); - AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &metastring); - - if (AVMATCH(&metastring, &av_onMetaData)) { - AMFObjectProperty prop; - /* Show metadata */ - RTMP_Log(RTMP_LOGINFO, "Metadata:"); - DumpMetaData(&obj); - if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_duration, &prop)) { - r->m_fDuration = prop.p_vu.p_number; - /*RTMP_Log(RTMP_LOGDEBUG, "Set duration: %.2f", m_fDuration); */ - } - /* Search for audio or video tags */ - if (PILI_RTMP_FindPrefixProperty(&obj, &av_video, &prop)) - r->m_read.dataType |= 1; - if (PILI_RTMP_FindPrefixProperty(&obj, &av_audio, &prop)) - r->m_read.dataType |= 4; - ret = TRUE; - } - AMF_Reset(&obj); - return ret; -} - -static void - HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - if (packet->m_nBodySize >= 4) { - r->m_inChunkSize = AMF_DecodeInt32(packet->m_body); - RTMP_Log(RTMP_LOGDEBUG, "%s, received: chunk size change to %d", __FUNCTION__, - r->m_inChunkSize); - } -} - -static void - HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet) { -} - -static void - HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet) { -} - -static void - HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - short nType = -1; - unsigned int tmp; - if (packet->m_body && packet->m_nBodySize >= 2) - nType = AMF_DecodeInt16(packet->m_body); - RTMP_Log(RTMP_LOGDEBUG, "%s, received ctrl. type: %d, len: %d", __FUNCTION__, nType, - packet->m_nBodySize); - /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - - if (packet->m_nBodySize >= 6) { - switch (nType) { - case 0: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Begin %d", __FUNCTION__, tmp); - break; - - case 1: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream EOF %d", __FUNCTION__, tmp); - if (r->m_pausing == 1) - r->m_pausing = 2; - break; - - case 2: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Dry %d", __FUNCTION__, tmp); - break; - - case 4: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream IsRecorded %d", __FUNCTION__, tmp); - break; - - case 6: /* server ping. reply with pong. */ - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Ping %d", __FUNCTION__, tmp); - PILI_RTMP_SendCtrl(r, 0x07, tmp, 0, NULL); - break; - - /* FMS 3.5 servers send the following two controls to let the client - * know when the server has sent a complete buffer. I.e., when the - * server has sent an amount of data equal to m_nBufferMS in duration. - * The server meters its output so that data arrives at the client - * in realtime and no faster. - * - * The rtmpdump program tries to set m_nBufferMS as large as - * possible, to force the server to send data as fast as possible. - * In practice, the server appears to cap this at about 1 hour's - * worth of data. After the server has sent a complete buffer, and - * sends this BufferEmpty message, it will wait until the play - * duration of that buffer has passed before sending a new buffer. - * The BufferReady message will be sent when the new buffer starts. - * (There is no BufferReady message for the very first buffer; - * presumably the Stream Begin message is sufficient for that - * purpose.) - * - * If the network speed is much faster than the data bitrate, then - * there may be long delays between the end of one buffer and the - * start of the next. - * - * Since usually the network allows data to be sent at - * faster than realtime, and rtmpdump wants to download the data - * as fast as possible, we use this RTMP_LF_BUFX hack: when we - * get the BufferEmpty message, we send a Pause followed by an - * Unpause. This causes the server to send the next buffer immediately - * instead of waiting for the full duration to elapse. (That's - * also the purpose of the ToggleStream function, which rtmpdump - * calls if we get a read timeout.) - * - * Media player apps don't need this hack since they are just - * going to play the data in realtime anyway. It also doesn't work - * for live streams since they obviously can only be sent in - * realtime. And it's all moot if the network speed is actually - * slower than the media bitrate. - */ - case 31: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferEmpty %d", __FUNCTION__, tmp); - if (!(r->Link.lFlags & RTMP_LF_BUFX)) - break; - if (!r->m_pausing) { - r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; - PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, NULL); - r->m_pausing = 1; - } else if (r->m_pausing == 2) { - PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, NULL); - r->m_pausing = 3; - } - break; - - case 32: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferReady %d", __FUNCTION__, tmp); - break; - - default: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream xx %d", __FUNCTION__, tmp); - break; - } - } - - if (nType == 0x1A) { - RTMP_Log(RTMP_LOGDEBUG, "%s, SWFVerification ping received: ", __FUNCTION__); -#ifdef CRYPTO - /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - - /* respond with HMAC SHA256 of decompressed SWF, key is the 30byte player key, also the last 30 bytes of the server handshake are applied */ - if (r->Link.SWFSize) { - PILI_RTMP_SendCtrl(r, 0x1B, 0, 0); - } else { - RTMP_Log(RTMP_LOGERROR, - "%s: Ignoring SWFVerification request, use --swfVfy!", - __FUNCTION__); - } -#else - RTMP_Log(RTMP_LOGERROR, - "%s: Ignoring SWFVerification request, no CRYPTO support!", - __FUNCTION__); -#endif - } -} - -static void - HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - r->m_nServerBW = AMF_DecodeInt32(packet->m_body); - RTMP_Log(RTMP_LOGDEBUG, "%s: server BW = %d", __FUNCTION__, r->m_nServerBW); -} - -static void - HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - r->m_nClientBW = AMF_DecodeInt32(packet->m_body); - if (packet->m_nBodySize > 4) - r->m_nClientBW2 = packet->m_body[4]; - else - r->m_nClientBW2 = -1; - RTMP_Log(RTMP_LOGDEBUG, "%s: client BW = %d %d", __FUNCTION__, r->m_nClientBW, - r->m_nClientBW2); -} - -static int - DecodeInt32LE(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned int val; - - val = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0]; - return val; -} - -static int - EncodeInt32LE(char *output, int nVal) { - output[0] = nVal; - nVal >>= 8; - output[1] = nVal; - nVal >>= 8; - output[2] = nVal; - nVal >>= 8; - output[3] = nVal; - return 4; -} - -int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { - uint8_t hbuf[RTMP_MAX_HEADER_SIZE] = {0}; - char *header = (char *)hbuf; - int nSize, hSize, nToRead, nChunk; - int didAlloc = FALSE; - - RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d", __FUNCTION__, r->m_sb.sb_socket); - - if (ReadN(r, (char *)hbuf, 1) == 0) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header", __FUNCTION__); - return FALSE; - } - - packet->m_headerType = (hbuf[0] & 0xc0) >> 6; - packet->m_nChannel = (hbuf[0] & 0x3f); - header++; - if (packet->m_nChannel == 0) { - if (ReadN(r, (char *)&hbuf[1], 1) != 1) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 2nd byte", - __FUNCTION__); - return FALSE; - } - packet->m_nChannel = hbuf[1]; - packet->m_nChannel += 64; - header++; - } else if (packet->m_nChannel == 1) { - int tmp; - if (ReadN(r, (char *)&hbuf[1], 2) != 2) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 3nd byte", - __FUNCTION__); - return FALSE; - } - tmp = (hbuf[2] << 8) + hbuf[1]; - packet->m_nChannel = tmp + 64; - RTMP_Log(RTMP_LOGDEBUG, "%s, m_nChannel: %0x", __FUNCTION__, packet->m_nChannel); - header += 2; - } - - nSize = packetSize[packet->m_headerType]; - - if (nSize == RTMP_LARGE_HEADER_SIZE) /* if we get a full header the timestamp is absolute */ - packet->m_hasAbsTimestamp = TRUE; - - else if (nSize < RTMP_LARGE_HEADER_SIZE) { /* using values from the last message of this channel */ - if (r->m_vecChannelsIn[packet->m_nChannel]) - memcpy(packet, r->m_vecChannelsIn[packet->m_nChannel], - sizeof(PILI_RTMPPacket)); - } - - nSize--; - - if (nSize > 0 && ReadN(r, header, nSize) != nSize) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header. type: %x", - __FUNCTION__, (unsigned int)hbuf[0]); - return FALSE; - } - - hSize = nSize + (header - (char *)hbuf); - - if (nSize >= 3) { - packet->m_nTimeStamp = AMF_DecodeInt24(header); - - /*RTMP_Log(RTMP_LOGDEBUG, "%s, reading PILI_RTMP packet chunk on channel %x, headersz %i, timestamp %i, abs timestamp %i", __FUNCTION__, packet.m_nChannel, nSize, packet.m_nTimeStamp, packet.m_hasAbsTimestamp); */ - - if (nSize >= 6) { - packet->m_nBodySize = AMF_DecodeInt24(header + 3); - packet->m_nBytesRead = 0; - PILI_RTMPPacket_Free(packet); - - if (nSize > 6) { - packet->m_packetType = header[6]; - - if (nSize == 11) - packet->m_nInfoField2 = DecodeInt32LE(header + 7); - } - } - if (packet->m_nTimeStamp == 0xffffff) { - if (ReadN(r, header + nSize, 4) != 4) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read extended timestamp", - __FUNCTION__); - return FALSE; - } - packet->m_nTimeStamp = AMF_DecodeInt32(header + nSize); - hSize += 4; - } - } - - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize); - - if (packet->m_nBodySize > 0 && packet->m_body == NULL) { - if (!PILI_RTMPPacket_Alloc(packet, packet->m_nBodySize)) { - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); - return FALSE; - } - didAlloc = TRUE; - packet->m_headerType = (hbuf[0] & 0xc0) >> 6; - } - - nToRead = packet->m_nBodySize - packet->m_nBytesRead; - nChunk = r->m_inChunkSize; - if (nToRead < nChunk) - nChunk = nToRead; - - /* Does the caller want the raw chunk? */ - if (packet->m_chunk) { - packet->m_chunk->c_headerSize = hSize; - memcpy(packet->m_chunk->c_header, hbuf, hSize); - packet->m_chunk->c_chunk = packet->m_body + packet->m_nBytesRead; - packet->m_chunk->c_chunkSize = nChunk; - } - - if (ReadN(r, packet->m_body + packet->m_nBytesRead, nChunk) != nChunk) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet body. len: %lu", - __FUNCTION__, packet->m_nBodySize); - return FALSE; - } - - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk); - - packet->m_nBytesRead += nChunk; - - /* keep the packet as ref for other packets on this channel */ - if (!r->m_vecChannelsIn[packet->m_nChannel]) - r->m_vecChannelsIn[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); - memcpy(r->m_vecChannelsIn[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); - - if (RTMPPacket_IsReady(packet)) { - /* make packet's timestamp absolute */ - if (!packet->m_hasAbsTimestamp) - packet->m_nTimeStamp += r->m_channelTimestamp[packet->m_nChannel]; /* timestamps seem to be always relative!! */ - - r->m_channelTimestamp[packet->m_nChannel] = packet->m_nTimeStamp; - - /* reset the data from the stored packet. we keep the header since we may use it later if a new packet for this channel */ - /* arrives and requests to re-use some info (small packet header) */ - r->m_vecChannelsIn[packet->m_nChannel]->m_body = NULL; - r->m_vecChannelsIn[packet->m_nChannel]->m_nBytesRead = 0; - r->m_vecChannelsIn[packet->m_nChannel]->m_hasAbsTimestamp = FALSE; /* can only be false if we reuse header */ - } else { - packet->m_body = NULL; /* so it won't be erased on free */ - } - - return TRUE; -} - -#ifndef CRYPTO -static int - HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error) { - int i; - uint32_t uptime, suptime; - int bMatch; - char type; - char clientbuf[RTMP_SIG_SIZE + 1], *clientsig = clientbuf + 1; - char serversig[RTMP_SIG_SIZE]; - - clientbuf[0] = 0x03; /* not encrypted */ - - uptime = htonl(PILI_RTMP_GetTime()); - memcpy(clientsig, &uptime, 4); - - memset(&clientsig[4], 0, 4); - -#ifdef _DEBUG - for (i = 8; i < RTMP_SIG_SIZE; i++) - clientsig[i] = 0xff; -#else - for (i = 8; i < RTMP_SIG_SIZE; i++) - clientsig[i] = (char)(rand() % 256); -#endif - - if (!WriteN(r, clientbuf, RTMP_SIG_SIZE + 1, error)) - return FALSE; - - if (ReadN(r, &type, 1) != 1) /* 0x03 or 0x06 */ - return FALSE; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); - - if (type != clientbuf[0]) - RTMP_Log(RTMP_LOGWARNING, "%s: Type mismatch: client sent %d, server answered %d", - __FUNCTION__, clientbuf[0], type); - - if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - /* decode server response */ - - memcpy(&suptime, serversig, 4); - suptime = ntohl(suptime); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, suptime); - RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, - serversig[4], serversig[5], serversig[6], serversig[7]); - - /* 2nd part of handshake */ - if (!WriteN(r, serversig, RTMP_SIG_SIZE, error)) - return FALSE; - - if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); - if (!bMatch) { - RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); - } - return TRUE; -} - -static int - SHandShake(PILI_RTMP *r, RTMPError *error) { - int i; - char serverbuf[RTMP_SIG_SIZE + 1], *serversig = serverbuf + 1; - char clientsig[RTMP_SIG_SIZE]; - uint32_t uptime; - int bMatch; - - if (ReadN(r, serverbuf, 1) != 1) /* 0x03 or 0x06 */ - return FALSE; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Type Request : %02X", __FUNCTION__, serverbuf[0]); - - if (serverbuf[0] != 3) { - RTMP_Log(RTMP_LOGERROR, "%s: Type unknown: client sent %02X", - __FUNCTION__, serverbuf[0]); - return FALSE; - } - - uptime = htonl(PILI_RTMP_GetTime()); - memcpy(serversig, &uptime, 4); - - memset(&serversig[4], 0, 4); -#ifdef _DEBUG - for (i = 8; i < RTMP_SIG_SIZE; i++) - serversig[i] = 0xff; -#else - for (i = 8; i < RTMP_SIG_SIZE; i++) - serversig[i] = (char)(rand() % 256); -#endif - - if (!WriteN(r, serverbuf, RTMP_SIG_SIZE + 1, error)) - return FALSE; - - if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - /* decode client response */ - - memcpy(&uptime, clientsig, 4); - uptime = ntohl(uptime); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); - RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, - clientsig[4], clientsig[5], clientsig[6], clientsig[7]); - - /* 2nd part of handshake */ - if (!WriteN(r, clientsig, RTMP_SIG_SIZE, error)) - return FALSE; - - if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); - if (!bMatch) { - RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); - } - return TRUE; -} -#endif - -int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error) { - int wrote; - char hbuf[RTMP_MAX_HEADER_SIZE]; - - RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, - chunk->c_chunkSize); - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize); - if (chunk->c_chunkSize) { - char *ptr = chunk->c_chunk - chunk->c_headerSize; - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize); - /* save header bytes we're about to overwrite */ - memcpy(hbuf, ptr, chunk->c_headerSize); - memcpy(ptr, chunk->c_header, chunk->c_headerSize); - wrote = WriteN(r, ptr, chunk->c_headerSize + chunk->c_chunkSize, error); - memcpy(ptr, hbuf, chunk->c_headerSize); - } else - wrote = WriteN(r, chunk->c_header, chunk->c_headerSize, error); - return wrote; -} - -int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, RTMPError *error) { - const PILI_RTMPPacket *prevPacket = r->m_vecChannelsOut[packet->m_nChannel]; - uint32_t last = 0; - int nSize; - int hSize, cSize; - char *header, *hptr, *hend, hbuf[RTMP_MAX_HEADER_SIZE], c; - uint32_t t; - char *buffer, *tbuf = NULL, *toff = NULL; - int nChunkSize; - int tlen; - - if (prevPacket && packet->m_headerType != RTMP_PACKET_SIZE_LARGE) { - /* compress a bit by using the prev packet's attributes */ - if (prevPacket->m_nBodySize == packet->m_nBodySize && prevPacket->m_packetType == packet->m_packetType && packet->m_headerType == RTMP_PACKET_SIZE_MEDIUM) - packet->m_headerType = RTMP_PACKET_SIZE_SMALL; - - if (prevPacket->m_nTimeStamp == packet->m_nTimeStamp && packet->m_headerType == RTMP_PACKET_SIZE_SMALL) - packet->m_headerType = RTMP_PACKET_SIZE_MINIMUM; - last = prevPacket->m_nTimeStamp; - } - - if (packet->m_headerType > 3) /* sanity */ - { - if (error) { - char *msg = "Sanity failed."; - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorSanityFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "sanity failed!! trying to send header of type: 0x%02x.", - (unsigned char)packet->m_headerType); - - return FALSE; - } - - nSize = packetSize[packet->m_headerType]; - hSize = nSize; - cSize = 0; - t = packet->m_nTimeStamp - last; - - if (packet->m_body) { - header = packet->m_body - nSize; - hend = packet->m_body; - } else { - header = hbuf + 6; - hend = hbuf + sizeof(hbuf); - } - - if (packet->m_nChannel > 319) - cSize = 2; - else if (packet->m_nChannel > 63) - cSize = 1; - if (cSize) { - header -= cSize; - hSize += cSize; - } - - if (nSize > 1 && t >= 0xffffff) { - header -= 4; - hSize += 4; - } - - hptr = header; - c = packet->m_headerType << 6; - switch (cSize) { - case 0: - c |= packet->m_nChannel; - break; - case 1: - break; - case 2: - c |= 1; - break; - } - *hptr++ = c; - if (cSize) { - int tmp = packet->m_nChannel - 64; - *hptr++ = tmp & 0xff; - if (cSize == 2) - *hptr++ = tmp >> 8; - } - - if (nSize > 1) { - hptr = AMF_EncodeInt24(hptr, hend, t > 0xffffff ? 0xffffff : t); - } - - if (nSize > 4) { - hptr = AMF_EncodeInt24(hptr, hend, packet->m_nBodySize); - *hptr++ = packet->m_packetType; - } - - if (nSize > 8) - hptr += EncodeInt32LE(hptr, packet->m_nInfoField2); - - if (nSize > 1 && t >= 0xffffff) - hptr = AMF_EncodeInt32(hptr, hend, t); - - nSize = packet->m_nBodySize; - buffer = packet->m_body; - nChunkSize = r->m_outChunkSize; - - RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, - nSize); - /* send all chunks in one HTTP request */ - if (r->Link.protocol & RTMP_FEATURE_HTTP) { - int chunks = (nSize + nChunkSize - 1) / nChunkSize; - if (chunks > 1) { - tlen = chunks * (cSize + 1) + nSize + hSize; - tbuf = malloc(tlen); - if (!tbuf) - return FALSE; - toff = tbuf; - } - } - while (nSize + hSize) { - int wrote; - - if (nSize < nChunkSize) - nChunkSize = nSize; - - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize); - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize); - if (tbuf) { - memcpy(toff, header, nChunkSize + hSize); - toff += nChunkSize + hSize; - } else { - wrote = WriteN(r, header, nChunkSize + hSize, error); - if (!wrote) - return FALSE; - } - nSize -= nChunkSize; - buffer += nChunkSize; - hSize = 0; - - if (nSize > 0) { - header = buffer - 1; - hSize = 1; - if (cSize) { - header -= cSize; - hSize += cSize; - } - *header = (0xc0 | c); - if (cSize) { - int tmp = packet->m_nChannel - 64; - header[1] = tmp & 0xff; - if (cSize == 2) - header[2] = tmp >> 8; - } - } - } - if (tbuf) { - int wrote = WriteN(r, tbuf, toff - tbuf, error); - free(tbuf); - tbuf = NULL; - if (!wrote) - return FALSE; - } - - /* we invoked a remote method */ - if (packet->m_packetType == 0x14) { - AVal method; - char *ptr; - ptr = packet->m_body + 1; - AMF_DecodeString(ptr, &method); - RTMP_Log(RTMP_LOGDEBUG, "Invoking %s", method.av_val); - /* keep it in call queue till result arrives */ - if (queue) { - int txn; - ptr += 3 + method.av_len; - txn = (int)AMF_DecodeNumber(ptr); - AV_queue(&r->m_methodCalls, &r->m_numCalls, &method, txn); - } - } - - if (!r->m_vecChannelsOut[packet->m_nChannel]) - r->m_vecChannelsOut[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); - memcpy(r->m_vecChannelsOut[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); - return TRUE; -} - -int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error) { - return SHandShake(r, error); -} - -void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error) { - if (r->m_is_closing) { - return; - } - r->m_is_closing = 1; - int i; - if (PILI_RTMP_IsConnected(r)) { - if (r->m_stream_id > 0) { - if ((r->Link.protocol & RTMP_FEATURE_WRITE)) - SendFCUnpublish(r, NULL); - i = r->m_stream_id; - r->m_stream_id = 0; - SendDeleteStream(r, i, NULL); - } - if (r->m_clientID.av_val) { - HTTP_Post(r, RTMPT_CLOSE, "", 1); - free(r->m_clientID.av_val); - r->m_clientID.av_val = NULL; - r->m_clientID.av_len = 0; - } - PILI_RTMPSockBuf_Close(&r->m_sb); - - if (error && r->m_errorCallback) { - r->m_errorCallback(error, r->m_userData); - } - } - - r->m_stream_id = -1; - r->m_sb.sb_socket = -1; - r->m_nBWCheckCounter = 0; - r->m_nBytesIn = 0; - r->m_nBytesInSent = 0; - - if (r->m_read.flags & RTMP_READ_HEADER) { - free(r->m_read.buf); - r->m_read.buf = NULL; - } - r->m_read.dataType = 0; - r->m_read.flags = 0; - r->m_read.status = 0; - r->m_read.nResumeTS = 0; - r->m_read.nIgnoredFrameCounter = 0; - r->m_read.nIgnoredFlvFrameCounter = 0; - - r->m_write.m_nBytesRead = 0; - PILI_RTMPPacket_Free(&r->m_write); - - for (i = 0; i < RTMP_CHANNELS; i++) { - if (r->m_vecChannelsIn[i]) { - PILI_RTMPPacket_Free(r->m_vecChannelsIn[i]); - free(r->m_vecChannelsIn[i]); - r->m_vecChannelsIn[i] = NULL; - } - if (r->m_vecChannelsOut[i]) { - free(r->m_vecChannelsOut[i]); - r->m_vecChannelsOut[i] = NULL; - } - } - AV_clear(r->m_methodCalls, r->m_numCalls); - r->m_methodCalls = NULL; - r->m_numCalls = 0; - r->m_numInvokes = 0; - - r->m_bPlaying = FALSE; - r->m_sb.sb_size = 0; - - r->m_msgCounter = 0; - r->m_resplen = 0; - r->m_unackd = 0; - - free(r->Link.playpath0.av_val); - r->Link.playpath0.av_val = NULL; - - if (r->Link.lFlags & RTMP_LF_FTCU) { - free(r->Link.tcUrl.av_val); - r->Link.tcUrl.av_val = NULL; - r->Link.tcUrl.av_len = 0; - r->Link.lFlags ^= RTMP_LF_FTCU; - } - -#ifdef CRYPTO - if (r->Link.dh) { - MDH_free(r->Link.dh); - r->Link.dh = NULL; - } - if (r->Link.rc4keyIn) { - RC4_free(r->Link.rc4keyIn); - r->Link.rc4keyIn = NULL; - } - if (r->Link.rc4keyOut) { - RC4_free(r->Link.rc4keyOut); - r->Link.rc4keyOut = NULL; - } -#endif -} - -int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb, int timeout) { - int nBytes; - - if (!sb->sb_size) - sb->sb_start = sb->sb_buf; - -#ifdef RTMP_FEATURE_NONBLOCK - SET_RCVTIMEO(tv, timeout); - fd_set rfds; -#endif - while (1) { -#ifdef RTMP_FEATURE_NONBLOCK - FD_ZERO(&rfds); - FD_SET(sb->sb_socket, &rfds); - int ret = select(sb->sb_socket + 1, &rfds, NULL, NULL, &tv); - if (ret < 0) { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGDEBUG, "%s, recv select error. GetSockError(): %d (%s)", - __FUNCTION__, sockerr, strerror(sockerr)); - if (sockerr == EINTR && !PILI_RTMP_ctrlC) - continue; - - sb->sb_timedout = TRUE; - nBytes = 0; - break; - } else if (ret == 0) { - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP recv error select timeout %d", __FUNCTION__, timeout); - sb->sb_timedout = TRUE; - nBytes = 0; - break; - } else if (!FD_ISSET(sb->sb_socket, &rfds)) { - sb->sb_timedout = TRUE; - nBytes = 0; - break; - } -#endif - - nBytes = sizeof(sb->sb_buf) - sb->sb_size - (sb->sb_start - sb->sb_buf); -#if defined(CRYPTO) && !defined(NO_SSL) - if (sb->sb_ssl) { - nBytes = TLS_read(sb->sb_ssl, sb->sb_start + sb->sb_size, nBytes); - } else -#endif - { - nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, 0); - } - if (nBytes != -1) { - sb->sb_size += nBytes; - } else { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGDEBUG, "%s, recv returned %d. GetSockError(): %d (%s)", - __FUNCTION__, nBytes, sockerr, strerror(sockerr)); - if (sockerr == EINTR && !PILI_RTMP_ctrlC) - continue; - - if (sockerr == EWOULDBLOCK || sockerr == EAGAIN) { -#ifdef RTMP_FEATURE_NONBLOCK - continue; -#else - sb->sb_timedout = TRUE; - nBytes = 0; -#endif - } - } - break; - } - - return nBytes; -} - -int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len) { - int rc; - -#ifdef _DEBUG - fwrite(buf, 1, len, netstackdump); -#endif - -#if defined(CRYPTO) && !defined(NO_SSL) - if (sb->sb_ssl) { - rc = TLS_write(sb->sb_ssl, buf, len); - } else -#endif - { - rc = send(sb->sb_socket, buf, len, 0); - } - return rc; -} - -int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb) { -#if defined(CRYPTO) && !defined(NO_SSL) - if (sb->sb_ssl) { - TLS_shutdown(sb->sb_ssl); - TLS_close(sb->sb_ssl); - sb->sb_ssl = NULL; - } -#endif - return closesocket(sb->sb_socket); -} - -#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) - -static void - DecodeTEA(AVal *key, AVal *text) { - uint32_t *v, k[4] = {0}, u; - uint32_t z, y, sum = 0, e, DELTA = 0x9e3779b9; - int32_t p, q; - int i, n; - unsigned char *ptr, *out; - - /* prep key: pack 1st 16 chars into 4 LittleEndian ints */ - ptr = (unsigned char *)key->av_val; - u = 0; - n = 0; - v = k; - p = key->av_len > 16 ? 16 : key->av_len; - for (i = 0; i < p; i++) { - u |= ptr[i] << (n * 8); - if (n == 3) { - *v++ = u; - u = 0; - n = 0; - } else { - n++; - } - } - /* any trailing chars */ - if (u) - *v = u; - - /* prep text: hex2bin, multiples of 4 */ - n = (text->av_len + 7) / 8; - out = malloc(n * 8); - ptr = (unsigned char *)text->av_val; - v = (uint32_t *)out; - for (i = 0; i < n; i++) { - u = (HEX2BIN(ptr[0]) << 4) + HEX2BIN(ptr[1]); - u |= ((HEX2BIN(ptr[2]) << 4) + HEX2BIN(ptr[3])) << 8; - u |= ((HEX2BIN(ptr[4]) << 4) + HEX2BIN(ptr[5])) << 16; - u |= ((HEX2BIN(ptr[6]) << 4) + HEX2BIN(ptr[7])) << 24; - *v++ = u; - ptr += 8; - } - v = (uint32_t *)out; - -/* http://www.movable-type.co.uk/scripts/tea-block.html */ -#define MX (((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (k[(p & 3) ^ e] ^ z)); - z = v[n - 1]; - y = v[0]; - q = 6 + 52 / n; - sum = q * DELTA; - while (sum != 0) { - e = sum >> 2 & 3; - for (p = n - 1; p > 0; p--) - z = v[p - 1], y = v[p] -= MX; - z = v[n - 1]; - y = v[0] -= MX; - sum -= DELTA; - } - - text->av_len /= 2; - memcpy(text->av_val, out, text->av_len); - free(out); -} - -static int - HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len) { - char hbuf[512]; - int hlen = snprintf(hbuf, sizeof(hbuf), "POST /%s%s/%d HTTP/1.1\r\n" - "Host: %.*s:%d\r\n" - "Accept: */*\r\n" - "User-Agent: Shockwave Flash\n" - "Connection: Keep-Alive\n" - "Cache-Control: no-cache\r\n" - "Content-type: application/x-fcs\r\n" - "Content-length: %d\r\n\r\n", - RTMPT_cmds[cmd], - r->m_clientID.av_val ? r->m_clientID.av_val : "", - r->m_msgCounter, r->Link.hostname.av_len, r->Link.hostname.av_val, - r->Link.port, len); - PILI_RTMPSockBuf_Send(&r->m_sb, hbuf, hlen); - hlen = PILI_RTMPSockBuf_Send(&r->m_sb, buf, len); - r->m_msgCounter++; - r->m_unackd++; - return hlen; -} - -static int - HTTP_read(PILI_RTMP *r, int fill) { - char *ptr; - int hlen; - - if (fill) - PILI_RTMPSockBuf_Fill(&r->m_sb, r->Link.timeout); - if (r->m_sb.sb_size < 144) - return -1; - if (strncmp(r->m_sb.sb_start, "HTTP/1.1 200 ", 13)) - return -1; - ptr = strstr(r->m_sb.sb_start, "Content-Length:"); - if (!ptr) - return -1; - hlen = atoi(ptr + 16); - ptr = strstr(ptr, "\r\n\r\n"); - if (!ptr) - return -1; - ptr += 4; - r->m_sb.sb_size -= ptr - r->m_sb.sb_start; - r->m_sb.sb_start = ptr; - r->m_unackd--; - - if (!r->m_clientID.av_val) { - r->m_clientID.av_len = hlen; - r->m_clientID.av_val = malloc(hlen + 1); - if (!r->m_clientID.av_val) - return -1; - r->m_clientID.av_val[0] = '/'; - memcpy(r->m_clientID.av_val + 1, ptr, hlen - 1); - r->m_clientID.av_val[hlen] = 0; - r->m_sb.sb_size = 0; - } else { - r->m_polling = *ptr++; - r->m_resplen = hlen - 1; - r->m_sb.sb_start++; - r->m_sb.sb_size--; - } - return 0; -} - -#define MAX_IGNORED_FRAMES 50 - -/* Read from the stream until we get a media packet. - * Returns -3 if Play.Close/Stop, -2 if fatal error, -1 if no more media - * packets, 0 if ignorable error, >0 if there is a media packet - */ -static int - Read_1_Packet(PILI_RTMP *r, char *buf, unsigned int buflen) { - uint32_t prevTagSize = 0; - int rtnGetNextMediaPacket = 0, ret = RTMP_READ_EOF; - PILI_RTMPPacket packet = {0}; - int recopy = FALSE; - unsigned int size; - char *ptr, *pend; - uint32_t nTimeStamp = 0; - unsigned int len; - - rtnGetNextMediaPacket = PILI_RTMP_GetNextMediaPacket(r, &packet); - while (rtnGetNextMediaPacket) { - char *packetBody = packet.m_body; - unsigned int nPacketLen = packet.m_nBodySize; - - /* Return -3 if this was completed nicely with invoke message - * Play.Stop or Play.Complete - */ - if (rtnGetNextMediaPacket == 2) { - RTMP_Log(RTMP_LOGDEBUG, - "Got Play.Complete or Play.Stop from server. " - "Assuming stream is complete"); - ret = RTMP_READ_COMPLETE; - break; - } - - r->m_read.dataType |= (((packet.m_packetType == 0x08) << 2) | - (packet.m_packetType == 0x09)); - - if (packet.m_packetType == 0x09 && nPacketLen <= 5) { - RTMP_Log(RTMP_LOGDEBUG, "ignoring too small video packet: size: %d", - nPacketLen); - ret = RTMP_READ_IGNORE; - break; - } - if (packet.m_packetType == 0x08 && nPacketLen <= 1) { - RTMP_Log(RTMP_LOGDEBUG, "ignoring too small audio packet: size: %d", - nPacketLen); - ret = RTMP_READ_IGNORE; - break; - } - - if (r->m_read.flags & RTMP_READ_SEEKING) { - ret = RTMP_READ_IGNORE; - break; - } -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, TS: %d ms, abs TS: %d", - packet.m_packetType, nPacketLen, packet.m_nTimeStamp, - packet.m_hasAbsTimestamp); - if (packet.m_packetType == 0x09) - RTMP_Log(RTMP_LOGDEBUG, "frametype: %02X", (*packetBody & 0xf0)); -#endif - - if (r->m_read.flags & RTMP_READ_RESUME) { - /* check the header if we get one */ - if (packet.m_nTimeStamp == 0) { - if (r->m_read.nMetaHeaderSize > 0 && packet.m_packetType == 0x12) { - AMFObject metaObj; - int nRes = - AMF_Decode(&metaObj, packetBody, nPacketLen, FALSE); - if (nRes >= 0) { - AVal metastring; - AMFProp_GetString(AMF_GetProp(&metaObj, NULL, 0), - &metastring); - - if (AVMATCH(&metastring, &av_onMetaData)) { - /* compare */ - if ((r->m_read.nMetaHeaderSize != nPacketLen) || - (memcmp(r->m_read.metaHeader, packetBody, - r->m_read.nMetaHeaderSize) != 0)) { - ret = RTMP_READ_ERROR; - } - } - AMF_Reset(&metaObj); - if (ret == RTMP_READ_ERROR) - break; - } - } - - /* check first keyframe to make sure we got the right position - * in the stream! (the first non ignored frame) - */ - if (r->m_read.nInitialFrameSize > 0) { - /* video or audio data */ - if (packet.m_packetType == r->m_read.initialFrameType && r->m_read.nInitialFrameSize == nPacketLen) { - /* we don't compare the sizes since the packet can - * contain several FLV packets, just make sure the - * first frame is our keyframe (which we are going - * to rewrite) - */ - if (memcmp(r->m_read.initialFrame, packetBody, - r->m_read.nInitialFrameSize) == 0) { - RTMP_Log(RTMP_LOGDEBUG, "Checked keyframe successfully!"); - r->m_read.flags |= RTMP_READ_GOTKF; - /* ignore it! (what about audio data after it? it is - * handled by ignoring all 0ms frames, see below) - */ - ret = RTMP_READ_IGNORE; - break; - } - } - - /* hande FLV streams, even though the server resends the - * keyframe as an extra video packet it is also included - * in the first FLV stream chunk and we have to compare - * it and filter it out !! - */ - if (packet.m_packetType == 0x16) { - /* basically we have to find the keyframe with the - * correct TS being nResumeTS - */ - unsigned int pos = 0; - uint32_t ts = 0; - - while (pos + 11 < nPacketLen) { - /* size without header (11) and prevTagSize (4) */ - uint32_t dataSize = - AMF_DecodeInt24(packetBody + pos + 1); - ts = AMF_DecodeInt24(packetBody + pos + 4); - ts |= (packetBody[pos + 7] << 24); - -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, - "keyframe search: FLV Packet: type %02X, dataSize: %d, timeStamp: %d ms", - packetBody[pos], dataSize, ts); -#endif - /* ok, is it a keyframe?: - * well doesn't work for audio! - */ - if (packetBody[pos /*6928, test 0 */] == - r->m_read.initialFrameType - /* && (packetBody[11]&0xf0) == 0x10 */) { - if (ts == r->m_read.nResumeTS) { - RTMP_Log(RTMP_LOGDEBUG, - "Found keyframe with resume-keyframe timestamp!"); - if (r->m_read.nInitialFrameSize != dataSize || memcmp(r->m_read.initialFrame, packetBody + pos + 11, r->m_read.nInitialFrameSize) != 0) { - RTMP_Log(RTMP_LOGERROR, - "FLV Stream: Keyframe doesn't match!"); - ret = RTMP_READ_ERROR; - break; - } - r->m_read.flags |= RTMP_READ_GOTFLVK; - - /* skip this packet? - * check whether skippable: - */ - if (pos + 11 + dataSize + 4 > nPacketLen) { - RTMP_Log(RTMP_LOGWARNING, - "Non skipable packet since it doesn't end with chunk, stream corrupt!"); - ret = RTMP_READ_ERROR; - break; - } - packetBody += (pos + 11 + dataSize + 4); - nPacketLen -= (pos + 11 + dataSize + 4); - - goto stopKeyframeSearch; - - } else if (r->m_read.nResumeTS < ts) { - /* the timestamp ts will only increase with - * further packets, wait for seek - */ - goto stopKeyframeSearch; - } - } - pos += (11 + dataSize + 4); - } - if (ts < r->m_read.nResumeTS) { - RTMP_Log(RTMP_LOGERROR, - "First packet does not contain keyframe, all " - "timestamps are smaller than the keyframe " - "timestamp; probably the resume seek failed?"); - } - stopKeyframeSearch:; - if (!(r->m_read.flags & RTMP_READ_GOTFLVK)) { - RTMP_Log(RTMP_LOGERROR, - "Couldn't find the seeked keyframe in this chunk!"); - ret = RTMP_READ_IGNORE; - break; - } - } - } - } - - if (packet.m_nTimeStamp > 0 && (r->m_read.flags & (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK))) { - /* another problem is that the server can actually change from - * 09/08 video/audio packets to an FLV stream or vice versa and - * our keyframe check will prevent us from going along with the - * new stream if we resumed. - * - * in this case set the 'found keyframe' variables to true. - * We assume that if we found one keyframe somewhere and were - * already beyond TS > 0 we have written data to the output - * which means we can accept all forthcoming data including the - * change between 08/09 <-> FLV packets - */ - r->m_read.flags |= (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK); - } - - /* skip till we find our keyframe - * (seeking might put us somewhere before it) - */ - if (!(r->m_read.flags & RTMP_READ_GOTKF) && - packet.m_packetType != 0x16) { - RTMP_Log(RTMP_LOGWARNING, - "Stream does not start with requested frame, ignoring data... "); - r->m_read.nIgnoredFrameCounter++; - if (r->m_read.nIgnoredFrameCounter > MAX_IGNORED_FRAMES) - ret = RTMP_READ_ERROR; /* fatal error, couldn't continue stream */ - else - ret = RTMP_READ_IGNORE; - break; - } - /* ok, do the same for FLV streams */ - if (!(r->m_read.flags & RTMP_READ_GOTFLVK) && - packet.m_packetType == 0x16) { - RTMP_Log(RTMP_LOGWARNING, - "Stream does not start with requested FLV frame, ignoring data... "); - r->m_read.nIgnoredFlvFrameCounter++; - if (r->m_read.nIgnoredFlvFrameCounter > MAX_IGNORED_FRAMES) - ret = RTMP_READ_ERROR; - else - ret = RTMP_READ_IGNORE; - break; - } - - /* we have to ignore the 0ms frames since these are the first - * keyframes; we've got these so don't mess around with multiple - * copies sent by the server to us! (if the keyframe is found at a - * later position there is only one copy and it will be ignored by - * the preceding if clause) - */ - if (!(r->m_read.flags & RTMP_READ_NO_IGNORE) && - packet.m_packetType != 0x16) { /* exclude type 0x16 (FLV) since it can - * contain several FLV packets */ - if (packet.m_nTimeStamp == 0) { - ret = RTMP_READ_IGNORE; - break; - } else { - /* stop ignoring packets */ - r->m_read.flags |= RTMP_READ_NO_IGNORE; - } - } - } - - /* calculate packet size and allocate slop buffer if necessary */ - size = nPacketLen + - ((packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) ? 11 : 0) + - (packet.m_packetType != 0x16 ? 4 : 0); - - if (size + 4 > buflen) { - /* the extra 4 is for the case of an FLV stream without a last - * prevTagSize (we need extra 4 bytes to append it) */ - r->m_read.buf = malloc(size + 4); - if (r->m_read.buf == 0) { - RTMP_Log(RTMP_LOGERROR, "Couldn't allocate memory!"); - ret = RTMP_READ_ERROR; /* fatal error */ - break; - } - recopy = TRUE; - ptr = r->m_read.buf; - } else { - ptr = buf; - } - pend = ptr + size + 4; - - /* use to return timestamp of last processed packet */ - - /* audio (0x08), video (0x09) or metadata (0x12) packets : - * construct 11 byte header then add PILI_RTMP packet's data */ - if (packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) { - nTimeStamp = r->m_read.nResumeTS + packet.m_nTimeStamp; - prevTagSize = 11 + nPacketLen; - - *ptr = packet.m_packetType; - ptr++; - ptr = AMF_EncodeInt24(ptr, pend, nPacketLen); - -#if 0 - if(packet.m_packetType == 0x09) { /* video */ - - /* H264 fix: */ - if((packetBody[0] & 0x0f) == 7) { /* CodecId = H264 */ - uint8_t packetType = *(packetBody+1); - - uint32_t ts = AMF_DecodeInt24(packetBody+2); /* composition time */ - int32_t cts = (ts+0xff800000)^0xff800000; - RTMP_Log(RTMP_LOGDEBUG, "cts : %d\n", cts); - - nTimeStamp -= cts; - /* get rid of the composition time */ - CRTMP::EncodeInt24(packetBody+2, 0); - } - RTMP_Log(RTMP_LOGDEBUG, "VIDEO: nTimeStamp: 0x%08X (%d)\n", nTimeStamp, nTimeStamp); - } -#endif - - ptr = AMF_EncodeInt24(ptr, pend, nTimeStamp); - *ptr = (char)((nTimeStamp & 0xFF000000) >> 24); - ptr++; - - /* stream id */ - ptr = AMF_EncodeInt24(ptr, pend, 0); - } - - memcpy(ptr, packetBody, nPacketLen); - len = nPacketLen; - - /* correct tagSize and obtain timestamp if we have an FLV stream */ - if (packet.m_packetType == 0x16) { - unsigned int pos = 0; - int delta; - - /* grab first timestamp and see if it needs fixing */ - nTimeStamp = AMF_DecodeInt24(packetBody + 4); - nTimeStamp |= (packetBody[7] << 24); - delta = packet.m_nTimeStamp - nTimeStamp; - - while (pos + 11 < nPacketLen) { - /* size without header (11) and without prevTagSize (4) */ - uint32_t dataSize = AMF_DecodeInt24(packetBody + pos + 1); - nTimeStamp = AMF_DecodeInt24(packetBody + pos + 4); - nTimeStamp |= (packetBody[pos + 7] << 24); - - if (delta) { - nTimeStamp += delta; - AMF_EncodeInt24(ptr + pos + 4, pend, nTimeStamp); - ptr[pos + 7] = nTimeStamp >> 24; - } - - /* set data type */ - r->m_read.dataType |= (((*(packetBody + pos) == 0x08) << 2) | - (*(packetBody + pos) == 0x09)); - - if (pos + 11 + dataSize + 4 > nPacketLen) { - if (pos + 11 + dataSize > nPacketLen) { - RTMP_Log(RTMP_LOGERROR, - "Wrong data size (%lu), stream corrupted, aborting!", - dataSize); - ret = RTMP_READ_ERROR; - break; - } - RTMP_Log(RTMP_LOGWARNING, "No tagSize found, appending!"); - - /* we have to append a last tagSize! */ - prevTagSize = dataSize + 11; - AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, - prevTagSize); - size += 4; - len += 4; - } else { - prevTagSize = - AMF_DecodeInt32(packetBody + pos + 11 + dataSize); - -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, - "FLV Packet: type %02X, dataSize: %lu, tagSize: %lu, timeStamp: %lu ms", - (unsigned char)packetBody[pos], dataSize, prevTagSize, - nTimeStamp); -#endif - - if (prevTagSize != (dataSize + 11)) { -#ifdef _DEBUG - RTMP_Log(RTMP_LOGWARNING, - "Tag and data size are not consitent, writing tag size according to dataSize+11: %d", - dataSize + 11); -#endif - - prevTagSize = dataSize + 11; - AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, - prevTagSize); - } - } - - pos += prevTagSize + 4; /*(11+dataSize+4); */ - } - } - ptr += len; - - if (packet.m_packetType != 0x16) { - /* FLV tag packets contain their own prevTagSize */ - AMF_EncodeInt32(ptr, pend, prevTagSize); - } - - /* In non-live this nTimeStamp can contain an absolute TS. - * Update ext timestamp with this absolute offset in non-live mode - * otherwise report the relative one - */ - /* RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, pktTS: %dms, TS: %dms, bLiveStream: %d", packet.m_packetType, nPacketLen, packet.m_nTimeStamp, nTimeStamp, r->Link.lFlags & RTMP_LF_LIVE); */ - r->m_read.timestamp = (r->Link.lFlags & RTMP_LF_LIVE) ? packet.m_nTimeStamp : nTimeStamp; - - ret = size; - break; - } - - if (rtnGetNextMediaPacket) - PILI_RTMPPacket_Free(&packet); - - if (recopy) { - len = ret > buflen ? buflen : ret; - memcpy(buf, r->m_read.buf, len); - r->m_read.bufpos = r->m_read.buf + len; - r->m_read.buflen = ret - len; - } - return ret; -} - -static const char flvHeader[] = {'F', 'L', 'V', 0x01, - 0x00, /* 0x04 == audio, 0x01 == video */ - 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x00}; - -#define HEADERBUF (128 * 1024) -int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size) { - int nRead = 0, total = 0; - -/* can't continue */ -fail: - switch (r->m_read.status) { - case RTMP_READ_EOF: - case RTMP_READ_COMPLETE: - return 0; - case RTMP_READ_ERROR: /* corrupted stream, resume failed */ - SetSockError(EINVAL); - return -1; - default: - break; - } - - if ((r->m_read.flags & RTMP_READ_SEEKING) && r->m_read.buf) { - /* drop whatever's here */ - free(r->m_read.buf); - r->m_read.buf = NULL; - r->m_read.bufpos = NULL; - r->m_read.buflen = 0; - } - - /* If there's leftover data buffered, use it up */ - if (r->m_read.buf) { - nRead = r->m_read.buflen; - if (nRead > size) - nRead = size; - memcpy(buf, r->m_read.bufpos, nRead); - r->m_read.buflen -= nRead; - if (!r->m_read.buflen) { - free(r->m_read.buf); - r->m_read.buf = NULL; - r->m_read.bufpos = NULL; - } else { - r->m_read.bufpos += nRead; - } - buf += nRead; - total += nRead; - size -= nRead; - } - - while (size > 0 && (nRead = Read_1_Packet(r, buf, size)) >= 0) { - if (!nRead) continue; - buf += nRead; - total += nRead; - size -= nRead; - break; - } - if (nRead < 0) - r->m_read.status = nRead; - - if (size < 0) - total += size; - return total; -} - -static const AVal av_setDataFrame = AVC("@setDataFrame"); - -int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error) { - PILI_RTMPPacket *pkt = &r->m_write; - char *pend, *enc; - int s2 = size, ret, num; - - pkt->m_nChannel = 0x04; /* source channel */ - pkt->m_nInfoField2 = r->m_stream_id; - - while (s2) { - if (!pkt->m_nBytesRead) { - if (size < 11) { - /* FLV pkt too small */ - return 0; - } - - if (buf[0] == 'F' && buf[1] == 'L' && buf[2] == 'V') { - buf += 13; - s2 -= 13; - } - - pkt->m_packetType = *buf++; - pkt->m_nBodySize = AMF_DecodeInt24(buf); - buf += 3; - pkt->m_nTimeStamp = AMF_DecodeInt24(buf); - buf += 3; - pkt->m_nTimeStamp |= *buf++ << 24; - buf += 3; - s2 -= 11; - - if (((pkt->m_packetType == 0x08 || pkt->m_packetType == 0x09) && - !pkt->m_nTimeStamp) || - pkt->m_packetType == 0x12) { - pkt->m_headerType = RTMP_PACKET_SIZE_LARGE; - if (pkt->m_packetType == 0x12) - pkt->m_nBodySize += 16; - } else { - pkt->m_headerType = RTMP_PACKET_SIZE_MEDIUM; - } - - if (!PILI_RTMPPacket_Alloc(pkt, pkt->m_nBodySize)) { - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); - return FALSE; - } - enc = pkt->m_body; - pend = enc + pkt->m_nBodySize; - if (pkt->m_packetType == 0x12) { - enc = AMF_EncodeString(enc, pend, &av_setDataFrame); - pkt->m_nBytesRead = enc - pkt->m_body; - } - } else { - enc = pkt->m_body + pkt->m_nBytesRead; - } - num = pkt->m_nBodySize - pkt->m_nBytesRead; - if (num > s2) - num = s2; - memcpy(enc, buf, num); - pkt->m_nBytesRead += num; - s2 -= num; - buf += num; - if (pkt->m_nBytesRead == pkt->m_nBodySize) { - ret = PILI_RTMP_SendPacket(r, pkt, FALSE, error); - PILI_RTMPPacket_Free(pkt); - pkt->m_nBytesRead = 0; - if (!ret) - return -1; - buf += 4; - s2 -= 4; - if (s2 < 0) - break; - } - } - return size + s2; -} - -int PILI_RTMP_Version() { - return MAJOR * 100 * 100 + MINOR * 100 + PATCH; -} - -const char * PILI_RTMP_GetReqId(){ - return reqid; -} \ No newline at end of file diff --git a/LFLiveKit/publish/pili-librtmp/rtmp.h b/LFLiveKit/publish/pili-librtmp/rtmp.h deleted file mode 100755 index d8438cf0..00000000 --- a/LFLiveKit/publish/pili-librtmp/rtmp.h +++ /dev/null @@ -1,365 +0,0 @@ -#ifndef __RTMP_H__ -#define __RTMP_H__ -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#define NO_CRYPTO - -#if !defined(NO_CRYPTO) && !defined(CRYPTO) -#define CRYPTO -#endif - -#include -#include -#include - -#include "amf.h" -#include "error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define RTMP_LIB_VERSION 0x020300 /* 2.3 */ - -#define RTMP_FEATURE_HTTP 0x01 -#define RTMP_FEATURE_ENC 0x02 -#define RTMP_FEATURE_SSL 0x04 -#define RTMP_FEATURE_MFP 0x08 /* not yet supported */ -#define RTMP_FEATURE_WRITE 0x10 /* publish, not play */ -#define RTMP_FEATURE_HTTP2 0x20 /* server-side rtmpt */ -#define RTMP_FEATURE_NONBLOCK 0x40 /* non block socket */ - -#define RTMP_PROTOCOL_UNDEFINED -1 -#define RTMP_PROTOCOL_RTMP 0 -#define RTMP_PROTOCOL_RTMPE RTMP_FEATURE_ENC -#define RTMP_PROTOCOL_RTMPT RTMP_FEATURE_HTTP -#define RTMP_PROTOCOL_RTMPS RTMP_FEATURE_SSL -#define RTMP_PROTOCOL_RTMPTE (RTMP_FEATURE_HTTP | RTMP_FEATURE_ENC) -#define RTMP_PROTOCOL_RTMPTS (RTMP_FEATURE_HTTP | RTMP_FEATURE_SSL) -#define RTMP_PROTOCOL_RTMFP RTMP_FEATURE_MFP - -#define RTMP_DEFAULT_CHUNKSIZE 128 - -/* needs to fit largest number of bytes recv() may return */ -#define RTMP_BUFFER_CACHE_SIZE (16 * 1024) - -#define RTMP_CHANNELS 65600 - -extern const char PILI_RTMPProtocolStringsLower[][7]; -extern const AVal PILI_RTMP_DefaultFlashVer; -extern int PILI_RTMP_ctrlC; - -uint32_t PILI_RTMP_GetTime(void); - -#define RTMP_PACKET_TYPE_AUDIO 0x08 -#define RTMP_PACKET_TYPE_VIDEO 0x09 -#define RTMP_PACKET_TYPE_INFO 0x12 - -#define RTMP_MAX_HEADER_SIZE 18 - -#define RTMP_PACKET_SIZE_LARGE 0 -#define RTMP_PACKET_SIZE_MEDIUM 1 -#define RTMP_PACKET_SIZE_SMALL 2 -#define RTMP_PACKET_SIZE_MINIMUM 3 - -typedef struct PILI_RTMPChunk { - int c_headerSize; - int c_chunkSize; - char *c_chunk; - char c_header[RTMP_MAX_HEADER_SIZE]; -} PILI_RTMPChunk; - -typedef struct PILI_RTMPPacket { - uint8_t m_headerType; - uint8_t m_packetType; - uint8_t m_hasAbsTimestamp; /* timestamp absolute or relative? */ - int m_nChannel; - uint32_t m_nTimeStamp; /* timestamp */ - int32_t m_nInfoField2; /* last 4 bytes in a long header */ - uint32_t m_nBodySize; - uint32_t m_nBytesRead; - PILI_RTMPChunk *m_chunk; - char *m_body; -} PILI_RTMPPacket; - -typedef struct PILI_RTMPSockBuf { - int sb_socket; - int sb_size; /* number of unprocessed bytes in buffer */ - char *sb_start; /* pointer into sb_pBuffer of next byte to process */ - char sb_buf[RTMP_BUFFER_CACHE_SIZE]; /* data read from socket */ - int sb_timedout; - void *sb_ssl; -} PILI_RTMPSockBuf; - -void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p); -void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p); -int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize); -void PILI_RTMPPacket_Free(PILI_RTMPPacket *p); - -#define RTMPPacket_IsReady(a) ((a)->m_nBytesRead == (a)->m_nBodySize) - -typedef struct PILI_RTMP_LNK { - AVal hostname; - AVal domain; - AVal sockshost; - - AVal playpath0; /* parsed from URL */ - AVal playpath; /* passed in explicitly */ - AVal tcUrl; - AVal swfUrl; - AVal pageUrl; - AVal app; - AVal auth; - AVal flashVer; - AVal subscribepath; - AVal token; - AMFObject extras; - int edepth; - - int seekTime; - int stopTime; - -#define RTMP_LF_AUTH 0x0001 /* using auth param */ -#define RTMP_LF_LIVE 0x0002 /* stream is live */ -#define RTMP_LF_SWFV 0x0004 /* do SWF verification */ -#define RTMP_LF_PLST 0x0008 /* send playlist before play */ -#define RTMP_LF_BUFX 0x0010 /* toggle stream on BufferEmpty msg */ -#define RTMP_LF_FTCU 0x0020 /* free tcUrl on close */ - int lFlags; - - int swfAge; - - int protocol; - int timeout; /* connection timeout in seconds */ - int send_timeout; /* send data timeout */ - - unsigned short socksport; - unsigned short port; - -#ifdef CRYPTO -#define RTMP_SWF_HASHLEN 32 - void *dh; /* for encryption */ - void *rc4keyIn; - void *rc4keyOut; - - uint32_t SWFSize; - uint8_t SWFHash[RTMP_SWF_HASHLEN]; - char SWFVerificationResponse[RTMP_SWF_HASHLEN + 10]; -#endif -} PILI_RTMP_LNK; - -/* state for read() wrapper */ -typedef struct PILI_RTMP_READ { - char *buf; - char *bufpos; - unsigned int buflen; - uint32_t timestamp; - uint8_t dataType; - uint8_t flags; -#define RTMP_READ_HEADER 0x01 -#define RTMP_READ_RESUME 0x02 -#define RTMP_READ_NO_IGNORE 0x04 -#define RTMP_READ_GOTKF 0x08 -#define RTMP_READ_GOTFLVK 0x10 -#define RTMP_READ_SEEKING 0x20 - int8_t status; -#define RTMP_READ_COMPLETE -3 -#define RTMP_READ_ERROR -2 -#define RTMP_READ_EOF -1 -#define RTMP_READ_IGNORE 0 - - /* if bResume == TRUE */ - uint8_t initialFrameType; - uint32_t nResumeTS; - char *metaHeader; - char *initialFrame; - uint32_t nMetaHeaderSize; - uint32_t nInitialFrameSize; - uint32_t nIgnoredFrameCounter; - uint32_t nIgnoredFlvFrameCounter; -} PILI_RTMP_READ; - -typedef struct PILI_RTMP_METHOD { - AVal name; - int num; -} PILI_RTMP_METHOD; - -typedef void (*PILI_RTMPErrorCallback)(RTMPError *error, void *userData); - -typedef struct PILI_CONNECTION_TIME { - uint32_t connect_time; - uint32_t handshake_time; -} PILI_CONNECTION_TIME; - -typedef void (*PILI_RTMP_ConnectionTimeCallback)( - PILI_CONNECTION_TIME *conn_time, void *userData); - -typedef struct PILI_RTMP { - int m_inChunkSize; - int m_outChunkSize; - int m_nBWCheckCounter; - int m_nBytesIn; - int m_nBytesInSent; - int m_nBufferMS; - int m_stream_id; /* returned in _result from createStream */ - int m_mediaChannel; - uint32_t m_mediaStamp; - uint32_t m_pauseStamp; - int m_pausing; - int m_nServerBW; - int m_nClientBW; - uint8_t m_nClientBW2; - uint8_t m_bPlaying; - uint8_t m_bSendEncoding; - uint8_t m_bSendCounter; - - int m_numInvokes; - int m_numCalls; - PILI_RTMP_METHOD *m_methodCalls; /* remote method calls queue */ - - PILI_RTMPPacket *m_vecChannelsIn[RTMP_CHANNELS]; - PILI_RTMPPacket *m_vecChannelsOut[RTMP_CHANNELS]; - int m_channelTimestamp[RTMP_CHANNELS]; /* abs timestamp of last packet */ - - double m_fAudioCodecs; /* audioCodecs for the connect packet */ - double m_fVideoCodecs; /* videoCodecs for the connect packet */ - double m_fEncoding; /* AMF0 or AMF3 */ - - double m_fDuration; /* duration of stream in seconds */ - - int m_msgCounter; /* RTMPT stuff */ - int m_polling; - int m_resplen; - int m_unackd; - AVal m_clientID; - - PILI_RTMP_READ m_read; - PILI_RTMPPacket m_write; - PILI_RTMPSockBuf m_sb; - PILI_RTMP_LNK Link; - - PILI_RTMPErrorCallback m_errorCallback; - PILI_RTMP_ConnectionTimeCallback m_connCallback; - RTMPError *m_error; - void *m_userData; - int m_is_closing; - int m_tcp_nodelay; - uint32_t ip; -} PILI_RTMP; - -int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, - unsigned int *port, AVal *playpath, AVal *app); - -int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, - unsigned int *port, AVal *playpath, AVal *app, AVal *domain); - -void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out); -void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size); -void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error); - -int PILI_RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, - RTMPError *error); -int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error); -void PILI_RTMP_SetupStream(PILI_RTMP *r, int protocol, AVal *hostname, - unsigned int port, AVal *sockshost, AVal *playpath, - AVal *tcUrl, AVal *swfUrl, AVal *pageUrl, AVal *app, - AVal *auth, AVal *swfSHA256Hash, uint32_t swfSize, - AVal *flashVer, AVal *subscribepath, int dStart, - int dStop, int bLiveStream, long int timeout); - -int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); -struct sockaddr; -int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, - RTMPError *error); -int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); -int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error); - -int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); -int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, - RTMPError *error); -int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error); -int PILI_RTMP_IsConnected(PILI_RTMP *r); -int PILI_RTMP_Socket(PILI_RTMP *r); -int PILI_RTMP_IsTimedout(PILI_RTMP *r); -double PILI_RTMP_GetDuration(PILI_RTMP *r); -int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error); - -int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error); -int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error); -void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error); -int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); -int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); - -void PILI_RTMP_Init(PILI_RTMP *r); -void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error); -PILI_RTMP *PILI_RTMP_Alloc(void); -void PILI_RTMP_Free(PILI_RTMP *r); -void PILI_RTMP_EnableWrite(PILI_RTMP *r); - -int PILI_RTMP_LibVersion(void); -void PILI_RTMP_UserInterrupt(void); /* user typed Ctrl-C */ - -int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, - unsigned int nTime, RTMPError *error); - -/* caller probably doesn't know current timestamp, should - * just use RTMP_Pause instead - */ -int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int dTime, RTMPError *error); -int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error); - -int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, - AMFObjectProperty *p); - -int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb, int timeout); -int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len); -int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb); - -int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error); -int PILI_RTMP_SendSeek(PILI_RTMP *r, int dTime, RTMPError *error); -int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error); -int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error); -void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit); -int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size); -int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error); - -#define MAJOR 1 -#define MINOR 0 -#define PATCH 4 - -int PILI_RTMP_Version(); - -const char * PILI_RTMP_GetReqId(); - -/* hashswf.c */ -int PILI_RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, - int age); - -#ifdef __cplusplus -}; -#endif - -#endif diff --git a/LFLiveKit/publish/pili-librtmp/rtmp_sys.h b/LFLiveKit/publish/pili-librtmp/rtmp_sys.h deleted file mode 100755 index 880457c3..00000000 --- a/LFLiveKit/publish/pili-librtmp/rtmp_sys.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef __RTMP_SYS_H__ -#define __RTMP_SYS_H__ -/* - * Copyright (C) 2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#ifdef _WIN32 - -#ifdef _XBOX -#include -#include -#define snprintf _snprintf -#define strcasecmp stricmp -#define strncasecmp strnicmp -#define vsnprintf _vsnprintf - -#else /* !_XBOX */ -#include -#include -#endif - -#define GetSockError() WSAGetLastError() -#define SetSockError(e) WSASetLastError(e) -#define setsockopt(a, b, c, d, e) (setsockopt)(a, b, c, (const char *)d, (int)e) -#define EWOULDBLOCK \ - WSAETIMEDOUT /* we don't use nonblocking, but we do use timeouts */ -#define sleep(n) Sleep(n * 1000) -#define msleep(n) Sleep(n) -#define SET_RCVTIMEO(tv, s) int tv = s * 1000 -#else /* !_WIN32 */ -#include -#include -#include -#include -#include -#include -#include -#include -#define GetSockError() errno -#define SetSockError(e) errno = e -#undef closesocket -#define closesocket(s) close(s) -#define msleep(n) usleep(n * 1000) -#define SET_RCVTIMEO(tv, s) struct timeval tv = {s, 0} -#endif - -#include "rtmp.h" - -#ifdef USE_POLARSSL -#include -#include -#include -typedef struct tls_ctx { - havege_state hs; - ssl_session ssn; -} tls_ctx; -#define TLS_CTX tls_ctx * -#define TLS_client(ctx, s) \ - s = malloc(sizeof(ssl_context)); \ - ssl_init(s); \ - ssl_set_endpoint(s, SSL_IS_CLIENT); \ - ssl_set_authmode(s, SSL_VERIFY_NONE); \ - ssl_set_rng(s, havege_rand, &ctx->hs); \ - ssl_set_ciphers(s, ssl_default_ciphers); \ - ssl_set_session(s, 1, 600, &ctx->ssn) -#define TLS_setfd(s, fd) ssl_set_bio(s, net_recv, &fd, net_send, &fd) -#define TLS_connect(s) ssl_handshake(s) -#define TLS_read(s, b, l) ssl_read(s, (unsigned char *)b, l) -#define TLS_write(s, b, l) ssl_write(s, (unsigned char *)b, l) -#define TLS_shutdown(s) ssl_close_notify(s) -#define TLS_close(s) \ - ssl_free(s); \ - free(s) - -#elif defined(USE_GNUTLS) -#include -typedef struct tls_ctx { - gnutls_certificate_credentials_t cred; - gnutls_priority_t prios; -} tls_ctx; -#define TLS_CTX tls_ctx * -#define TLS_client(ctx, s) \ - gnutls_init((gnutls_session_t *)(&s), GNUTLS_CLIENT); \ - gnutls_priority_set(s, ctx->prios); \ - gnutls_credentials_set(s, GNUTLS_CRD_CERTIFICATE, ctx->cred) -#define TLS_setfd(s, fd) \ - gnutls_transport_set_ptr(s, (gnutls_transport_ptr_t)(long)fd) -#define TLS_connect(s) gnutls_handshake(s) -#define TLS_read(s, b, l) gnutls_record_recv(s, b, l) -#define TLS_write(s, b, l) gnutls_record_send(s, b, l) -#define TLS_shutdown(s) gnutls_bye(s, GNUTLS_SHUT_RDWR) -#define TLS_close(s) gnutls_deinit(s) - -#else /* USE_OPENSSL */ -#define TLS_CTX SSL_CTX * -#define TLS_client(ctx, s) s = SSL_new(ctx) -#define TLS_setfd(s, fd) SSL_set_fd(s, fd) -#define TLS_connect(s) SSL_connect(s) -#define TLS_read(s, b, l) SSL_read(s, b, l) -#define TLS_write(s, b, l) SSL_write(s, b, l) -#define TLS_shutdown(s) SSL_shutdown(s) -#define TLS_close(s) SSL_free(s) - -#endif -#endif diff --git a/Podfile b/Podfile index 8be53e88..3d1f0976 100755 --- a/Podfile +++ b/Podfile @@ -3,6 +3,7 @@ platform :ios,'7.0' target 'LFLiveKit' do pod 'LMGPUImage', '~> 0.1.9' + pod 'pili-librtmp', '~> 1.0.3.1' end diff --git a/README.md b/README.md index b541aa91..bfe29565 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +LFLiveKit +============== [![Build Status](https://travis-ci.org/LaiFengiOS/LFLiveKit.svg)](https://travis-ci.org/LaiFengiOS/LFLiveKit)  [![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/chenliming777/LFLiveKit/master/LICENSE)  @@ -5,7 +7,6 @@ [![Support](https://img.shields.io/badge/support-ios8%2B-orange.svg)](https://www.apple.com/nl/ios/)  ![platform](https://img.shields.io/badge/platform-ios-ff69b4.svg)  -## LFLiveKit **LFLiveKit is a opensource RTMP streaming SDK for iOS.** @@ -40,6 +41,19 @@ $ pod install +### Manually + +1. Download all the files in the `LFLiveKit` subdirectory. +2. Add the source files to your Xcode project. +3. Link with required frameworks: +* UIKit +* Foundation +* AVFoundation +* VideoToolbox +* AudioToolbox +* libz +5. Add `LMGPUImage and pili-librtmp`(static library) to your Xcode project. + ## Architecture: capture: LFAudioCapture and LFVideoCapture From 0967800b238c3bf909175146400ea80ed7586aef Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 11:01:55 +0800 Subject: [PATCH 058/178] update read --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bfe29565..c1a34844 100644 --- a/README.md +++ b/README.md @@ -46,12 +46,12 @@ LFLiveKit 1. Download all the files in the `LFLiveKit` subdirectory. 2. Add the source files to your Xcode project. 3. Link with required frameworks: -* UIKit -* Foundation -* AVFoundation -* VideoToolbox -* AudioToolbox -* libz + * UIKit + * Foundation + * AVFoundation + * VideoToolbox + * AudioToolbox + * libz 5. Add `LMGPUImage and pili-librtmp`(static library) to your Xcode project. ## Architecture: From ba19663059de34956149d5c5dc5a064dfffd4b22 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 11:22:16 +0800 Subject: [PATCH 059/178] update version --- LFLiveKit.podspec | 2 +- LFLiveKit.xcodeproj/project.pbxproj | 24 ++++++++++++++++-- .../UserInterfaceState.xcuserstate | Bin 13597 -> 15247 bytes LFLiveKit/Info.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 95062 -> 118380 bytes 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 169486c8..a199f57d 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.9.2" + s.version = "1.9.3" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index bc08b250..75d97d8c 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -645,7 +645,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; INFOPLIST_FILE = LFLiveKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; @@ -654,6 +654,16 @@ "$(inherited)", "$(PROJECT_DIR)/LFLiveKit/publish/libpili-librtmp", ); + OTHER_CFLAGS = ( + "$(inherited)", + "-isystem", + "\"${PODS_ROOT}/Headers/Public\"", + "-isystem", + "\"${PODS_ROOT}/Headers/Public/LMGPUImage\"", + "-isystem", + "\"${PODS_ROOT}/Headers/Public/pili-librtmp\"", + "-fembed-bitcode", + ); PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -668,7 +678,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; INFOPLIST_FILE = LFLiveKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; @@ -677,6 +687,16 @@ "$(inherited)", "$(PROJECT_DIR)/LFLiveKit/publish/libpili-librtmp", ); + OTHER_CFLAGS = ( + "$(inherited)", + "-isystem", + "\"${PODS_ROOT}/Headers/Public\"", + "-isystem", + "\"${PODS_ROOT}/Headers/Public/LMGPUImage\"", + "-isystem", + "\"${PODS_ROOT}/Headers/Public/pili-librtmp\"", + "-fembed-bitcode", + ); PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index dd95fbe7be4f2bddedc05c5b185d17780923ecad..14d471beccc50fbeaa3995d90dc1974515a05060 100644 GIT binary patch delta 8584 zcmd5=cUaTc*S{-)Kp=aPkR3vTBq&Re!u7a_s#ct@=fl&=iGD7J?C@Ixyy&l88ugl z_mczjH1V)z(z0;x}gU)fh}Px z*czt7_Anj31~Xwd*cVK)q3aREUbv zU^D^w5k(xDh~7k#&}1|PO+_=%TWB6yfEJ;pXcbz6Hlrb zSLkbW5q*O$q08tNx{dCjyXYQzfH5YRhXsBdjYU|6)!2@m*oEELgOhPn+#I*SZE#!M z1$V_6I1_in-Ej}x6X)T4JOCHqfw&MCVJ{wzD{&R};SqQw9)(BaNq91zf~VqXcsibe zXW~V8Feyd1B_(VveNHj4M3$YR#v6DFBAo0XWTqJ=sB8kLJnv)i!C22*{Nhaw= zx|1HHC&?n&B#-2i0i=KoC8cB-8AV2uH^_Lxk$Gf33FycIvXCqx%gA!Fg4B>rWGmT5 zc9IXshh$&i9%_Tn(%e8I)9X!|w|ysuFg!V>ae^@^xmjQzSrN6AuA(1PE&ZG((7Zqi z@1inaEbH2_YspA&ml9v%=)&?MZ$)MKkU&>{Q_mn!46Go7Jwrh$7zS+AMqgpX3G8`; z&ZF}w+oW%4!5ifxeA$&=Z{P#|+tz%sIBRhEsC4hZ5yi#c%Ct&v!FezSj0NLBBp44S z06(CCfVhjX2?f+nn_U1C!JBMq5||98u<7w&I+y`wf?0vb;>_44w5b@ zY%Z7w=7RuO02YF`1I;6P3fwfFHl_}m7+4UIlC}git_Dk~lSZEd%fSjpv69JO-M3Sb zx6D^EsKi^D)2Xb;JDR$f5{+`7seTqDgQlPktPZq@G~gPrCXf=3IgBhA_XD7Tfw%# zcNQh%`(B_x7>jp+oq>tMMsQbPtFTe(%O=>(j4+*H%LFisCNmo~rQj@xV7u=Ps^(`l ziw-e82oB|o<2t2x2z-u}ny$}|A(Ne94LA%^p3epfrLqWc6dcPJTb>dqo)gr7kAsUF zW-QNV&H+LF*2lp~V6O%zXi7CWMVm9%@r8NXo?(Kq(a&j%YH*IWqLwnW0c<7|P zX&<(G3y~?H)HU+gy8ujrjbG2qN-rt&m6VqiRK8IIlR!!XlVteHOH5K=bJ~x-PIJ3k zQl~gT@Dt+F2DZ)1%*q(yD;QYnO{=Udc%v4!0nI>4XgUqHV<7QtLH%yR`t53AT5!Wa znNHgWc3>w7JJJFgeI9mVp~3@~0l>`9BLw+3dz96E>=Gb<_djR|}m_78N?n+VK<`GE?3TR$v-g+X%;q(iD< z5gkhN^2O%=dIB9wN`2nSF5Wl#ck>PQRvOzIJC+s{S2b*20*3(ms#P@a1(boqU|A4l z;BZ<=%jywkczqngDyC>B=%eM&Fb0kaVhpW#8B+c;c!Xf$Iq(FsH7z=wgA4-UBrpL^ z0ULW~W+e_RsPgt>?@DiJfscVR!-0|16FQISa7IpM7Q>zzI6Zhq3>)CApz&wZ(SZ?B zrpEK&+rVB2=feP802k6RbSxc5$JfC{a4}p0m(mGzGJT8Ap?Q6}dI$M>m3T)5E=Q?5 z_6@~-2J`IPo+ZVD>t`BFR1MbzdDg&MSO-^AKc$qT6YGEtWWe>n$}&L$oy2lOUceqb z${rq)>OIhS)w95cJK_7m6Wc|nRKwkL>eB%DC>Q{H;XXQz&U_vK2jP*IeD^3kMyJym zECBk6wEmOuvzKO1!!vXiolSF}%WX*=TT$=g4GMe#zYOkvfzGW48BAE_FOv4v30@94M8m*$@cU=Md(BS+G%uv#k3s2gz?*adUG!Y~JMjKX^8EyVrVHuY zOg;v_AxyBOmJE1FzTe;?UaH<3>TKuTubU?^^0tg3@QKDN;O-#GC8=kY}HFkb;t

    z6Lpw3nidNC=t2oYPyE5rR(T=x?v4ULXDZ{*-%r|jBcdcnD@O&-=jO& zF8dTJQ695buac?~hGsn(>;#m`_JJ=HX|FeMZ;R4^v>K(-P1UF!eYe5Hy$VW4c&pN? zf~8Eu(vGMTgC+DTdW~+TTWU~e)R}H&Pu}wY&hB1bRMkBoP#Lm&qU>jkbLe)O+rXv| z>dVdty-GJ%*E48H<1XckK{Ptya-Y_)7;Hb`L@#QxNW0h;r4 zIfEiJA6iz?{-N=OFN`m)|J`7bchK@@9=n2m(%`Yx&{B(PP(m%LqsQqfdiuHBu0TT}-39<=YJ+5L?6OpumUtIQ5LzLL@s zUkN*WR;}iXoq+>7XJ&(>N71LO9zn;@$LJGu9GyTX(J6Y4o~K{X3-n9+75#cGu%grG z4Eh|MMd#3YhJqJ4_zDMGaPTz_mT+(gbIcO;0oS+a8Us;u1$~FEqVMT9^b);HzpX<* zpzG*Ibc0@@H#r!?K^t42t=U$3AF)!XnpHR>s?jg>JNnFR9-_Zle8B%!y`Xz&V2QddDIVfZLKhKjmzCI`34m{R7CC{=aPOKlj8`vL7l`pOi zb{iw<{d{ry)AC#z*R^AokDd3hp4l1Qv&svHdVPt*UL;AWC;2%rC$_WVg?(Gs5C57k zPJPNLB2W~o@r0^ZoQgZJBgSdC9d3`)=|lP(eMEn+!yWOfz=k`~Kj@z<0{>zM{KPOe zBlGujwh5Q|jPml7w%2}q5smy^hq7g#eEsO z*Et9{2EaXN}3N=a`)QNl=7Nkn0#c7LUW@ zIVj{{6bGX@D5}GLOc~dS929d<667ka=epc83(pG@&BkxxIe0Dy zD*Pn_D_IBNPWO)VmX=p|E8X?6$NpEc`mrdzz*pdY*6lVb96Dr_&*v>K7*RHC=$OL7 zF~ciH7gYL2SNVn(xa(UOH*0Q+Milz07zftMH!7(ZTwdlauX2}`3=C$xM$ecf76hY4 z_OyP*7ejKz=Zkwh4G?o+v_%rr;L?}zmEd`N%RyH){*HseiwK#?tP6I6_&Nt0G3>!N zLk$GTz_;-od^aGmXrmH1=;mM|2R;7}R1P*U(ZBui$BGT1bN(6s5;$lv@M`g|_(5R5 zrLF8Y{CiN(M;v5&{lUQ|Aw8Y{1oixvgUK)HNgzS^E@e74<6zTz9bYt`w!wTPjIhSF znlSH7sU{H|>*;a>604y%5fL?zt|MY1AyOhEa-twgqT*mn4z}W8YYw*IU|SBRaxjg9 z?bZi|f|7mS8864!B%fY_&d@ZTs`U)2GY+-!ro1~0X{wLBZ;v*wC$l$g=2lHs2 zrR~ol(n4UgAz(a9#(+pNmW&IwZri_&8;bn-^=?5X5P$z?wNo$#YuOM5DZN^ja3He@2Mak^w1#wsOUNuToAq!@n0@G59Q1Oqn6+|m z)px%PWYSoZJ+j32M$f=Kr!;WU=}&x{3ATtV4hj~$sjBb0y%(HWjo7VmJ9b~3&GKnK+@IYN7vVuHFV4Yh@OB39 zNANKQ(I*%fe}>QCEBGqA?!C?~d~Y#Ky2q}3AF~VILUt{?gPb9Ecwsy-PsUU5R6HZk z#Y^V3;-&FA`+2>2LwKdUGF}C*lIP=%?X;mzX(cnf)pcuRQi@Rsvd@~U~Y zye+&#yfb{jm+{;2bNEI4@%#XP0l%8RgTITvoBtvIBmO@A0sbNW5&kj$*Zgnzm-$!t zSNYfY*ZDX2xA=GX_xOK=Nx}?a&BD^cdWVe(dn?Re9rj+>$6;5){t0^=4#H753D<|) z!yAP+4}U#;aQKk$((tnIitx&CU-wm0-PKm*9}#l;AVL8Nu0zun2L4J;D`{7STCkM8ueg z)e-yr5eFg;MI4DZ7I8Y_Y{dD93lUc$1(DH_DUoTB#gV0v^CMSA)n9Z|cYc1PWemPNOV9v)pCeIojY=wG5AMn8)F zGy3o7e?=0JR%8&FL>7@v)L8V2sJW=6C{@%>lrHKh$`%!iW{MVwmWwuswun9w9TXiF z9rcS&h)#(<6P*!#F1jeXCi+$Mrx=OVVuLtY+*+I}ZYNF`=ZN#g1>!=nS6nQv5RVs6 z6i*UQ5ziFQ7S9pS6E7C86z>r46MrneA-*q(mRKc8l4MCUNpnd{No&bKNrhy*WP-#m z;UsTM7E6{&mPuAfR!P=NHc2*1wo3eaCHo}@C5I)SN-jvQNv=z7NN!0UNE=C8NZUy> zrQM}HrP2Rq}I#N1XI!C%px>~wcx?Z|b`mS`Bbhq?F=||Fi(gV`t(yP+D z(nm5Z6Uw4xVwqGXm+55&nMr1m*<^9D4zhu=$+8u)m9llR^|Fn!-LgG?*aq&!NllpEv;@+5f^c~f}{c`JDvd8)j#JWD=6 zUMTm<2g`@ZOXXBPTmF`Oj(nbcg}ho`D_nV zH}cE!EAm_NU*%5}exl$j!WB^pkwT)7DQt>FMN35+MXI8`qJ!d9MR!GxqPHSf(N8g0 zF-%de7_Jzp7_Ati7^j%5n6Fr*SfY4Gu}V>+s8g&_Y*BoqIIK9T_*ijVaYk`gab9sj z@s;9lrAX;kwo-Odc2Q<1yD57pvy?f?fyyG~Amw1?5WliiS*EN|PF23G+^PIpc}JyH z#i^XC1eIHrq-vt-pz5jWt;$vPQw>lJR28WPsVY<>R3lZhRZCUNRV!6Bsyfvg)ppe` z)o#@u)n3(p)hX3!)#s}7stc;GRM%BMs&1%msfB8dIzgSN_NW`Hlhw`CDe4yLR_ZqD z9%_GUNu!OP_I+JuRg85rhcN4Yh0RSO;gP)np91OCR@{2 zQ>ZD@4APWqDm0avv6^w337V;zX_^_DMVh6WWtx?mYE7+XlV-bSr{;al2bw*aPc)xu zPHR5bT+n=_xv06M`APGKmZy!-3boOGtxT)XsY}K?oHif-89_{-7KAdiEfQ< zoo<6}lWwzatL{DBe%(RcVck*P$GYRXle$lJH+28#dHQgDgkGrE>kWF7-lDhZ6ZI|i zsrq*MbbTj%7k!4lo4!atTt7}fK~MD)^^^2d^z-xq{X+d>{X6;<`c?XO^;`7Y^xO5{ z=x^$8>+kCC$Cky8jU6BB_s4RvpTvF<`(^CcvELZ1h9pB1LsP>mhB1bzhPj6Mh6RSV z4T}xchFZgF!&<|7!$!j~!#%^_MvF1Q*won8*wvV0>}||7_A~Z34lSyv#G|e^bHXSsbG@UnH zHQhGdGyQCOV0vVFVn$}3Im{ek7MkPCndaBclgzWti_F#L&F1&bADZ`?510>|Pnl1f z&zjGhzchbserSoY#9Mk;`dW%Dl@`BcqGhsWnq{VCwq>bhnPr8g+H%2i&GMt=mgTPH zC(AF^D67({@mqD)SZfn&M{9R$mNm!P%bII_-CANDZ=GwMZ(V3zVclTeV%=jsV!dqr z!TPUFW;5DsHiyk+^Vpi$n%Pop9c-`KI@!9~uGsF{?%RI0J+QxO&$jor_qF%853mok zPq0t5&#=$7&#|wve_-EZ-)BE)KN8nFZa`c~+_X6VoVd+#N8&z@J0JID+{L)daaZF0 zb`VFHBf=qc=p6=!*A2&#?|2fA;z>L|UJx&g7sX5C$?i6ly4B>M8S7c*cAD9?ml<-E-3OmFJ@8 wlIM!&uIIkzXU~JAswA2;F=O?sjK)XXZQK+1Z_2ykf*WJs!#AgeKK- zGh0=#_xyHA!3lr>9=r>tg9RW27J~P|Qm_$h0-M1WuoY|r+rbX76C3~s!69%Mdz$5S!0tlf9N}(L8pc+O(4n{#cbijJB zK8%44U_;mhwty{Rs~~I#+ruufC+r1NU@Ghl2f@KG9S()VU=ADw3*ZDe5l(_r;8Zvb z&VftdN>~Bc!A)=*+zxlakKw2AF#HmJ3s1nG;5qm+yaKPnKj9tt7rcu^NQ@*%iexAP z$&msn5sOqvi;T#EB9R?AQP72&pr)u9ibZj#If_RKs0-?fx}ikW3-v(*(GcWES!fg* zgT|s_6hs8^Xa<^z-a{+UO0)`up zbPD~1&Y_FwH*^F2j&7n`=x=l%JwOkG=rINuVuYnwh9j^XE3gI|a5VPdTDT6biyPpE zxHWEr<8cB`!pXQh?tus5L3l7u$0KnL9))vp9?r+3aRDBOC*jHX9Xth3$Mf*}cqv|q zEATqJ9&g3l@Q3(gybphZ58)&DEBrOSfPcaMi}(`0jDN*f@Kt;bU&p`U8~As86W_-V z@I(9$e!)l>DI;Sd7&)V0l#GcnGZx0mxET*qi>b{tVj43|m^h{tlf)!5-I*RtPo_81 zk4aK`KUq2W|57fIcD2SX@s)F`G-RO2Rbp-0S0`E)Xu>?US%kaQ%e zp>n}FNxz)zp%dyA4b2RNgiT^yAPYD_5`9L3954#x5*Kk(`HuAIOGc9dGLfXFvuw)n zyyEtOp<}YL0tE>L0e|R`aFMHjj(>dKn4;8zKtOy7NPrZ`z(g<^xJ$t#;wc4hky>=o zjk1_FZ-Xh})^|wlQZSWxNos16KRdT(%nUFasLR1j@E({&e54MkTMp(>mFAIpRE^%$ zKy$>VuMD_n%0SmnS2s722H>b@YTTNl=j&fMcH||{(|vkv?cZj@C`Uh-S;i{4jco= z!S~<dRLAeO%M)veFK^H5i5UHpQ!c9r^Y zI_nO_Sgpa7yfFnCfp&SBfm09x8N}cr6oC7ElT+%2(HcPC1%VuY5!HtPl0uRz7lC3Z z>7ATH6)A&a5L?wIgAwVhCOIW(Op$+RPT&;`k zK@BtlcLmf!9n?bu=||E?e=?u~nxGk4pp^_HLrEqHkko#Ofnh~`vIE6wy|S~0SAOfC zSV@#5YCt-x>(ahMN`6juWltri!i1_0H5d(Rg_m(c7j#1p8AJw?bTXs@s9Yck`hb(h zSx4fh3{4GrG{vb^>NWxmOJ33fHifa2Y_J*0C>~fq#5C90Hnx z*qTK%U?y;vl#tY#hAfyJ)_6E6EQKRTQKfMerJazQ*6`Cb+qhvTwgh*`zl(TgA>d6o$L0 z%8O_T@(^4mQ>jJM2!$(5jeTKi%%T=5s^B{S4~8yEeGEKANqbT1t)epg41OL;ka-yR z1#M1{xq~&}9f4oJ47YE{3{oA!--R(d29J}OWcDk}PQoAFK;;blk-SG{k@z0b@l%bJ zAk@rz9$x$((aThH4vCMB&n*F<4i&Buy#{{=?s9k?{swQ5d1O9WP!4axTktjskqWY! zGC--1(o)u>1ablyMS;v@|Jdv-e^FjR=y!uR2=BqCz`Y*+4e!GT@FDyMK7#+k$M6YR zNZu!l$YQdDEG5gxa`M4?;DXQL3j}}*A%y9tfD(8GSxHLhyOfmC&+>5m8flDmC@9D) zsA6b#ZdQlfaDK`hOgs8y7iQD%y{Il!sn9#dEoo|`DIu#W5kNYmryELjLQ4r0mD3gj zh^48I{-^{EnX1JpfXE6vmyrCbcJ8%yN9A{Fp)byj>H_x~78$v(n6GDsh?P?H5El?|UfV&K}L+!~Hvb79#L>WgS*s#c>v`S6wKAT+p2GBnn}bsdUmwy8>oC_wg9$0r&N zJC~zuGy;tzACZ0J)0Z)da?$A50}mCTLb8{9O!LZllhZT~O?;zw5}HgtA^T~s$;_GF zMpNJDokqtVs2tnVtb>uE1kTW#+B+;e=cS8gp@p>QL9@{uG#AZ7^U(qnB8SOm)o64Z-FZXmFLak&CcjqZmT9#rb4!S0 z%?;2$G~=O1OfAbi)2_!@4&5 zAf|d*jIof0IA*Yb{7!C`VG$OSTjVyiXg=GJ!Ai`A{$!&BL10d|K1n6!$>#7DwVyg+QS1@8< zrPSZ)Y<#tpCNz{Y>0XnFsg!t-&UUPp@P#5dQCwC1j~iiHeEk1X8OPz~z=d0qf5;=6 zDE=j>)G^8TrrhqdBUC5KQoAkg^q<2z<1TbqH}Zr$rNf?4FZGPB9qftw{HJtZ+>c84 zCogyih>M4?dYO6aUbOqKg1iQkAvh3rs2>l-890-Nn1>7x1w0g1;9)q6&Y8_a5f8=0 z#X|{!skF|Y7<$*?@D$=PG%j%w4`rozEDz;x`g~&8S3Hael}5MHyoE_vHpoLoDdu@v zU#5ocMmzdUrSXNQ@sK5oAHsz+o&oORnfN`r_m0OC@mzZR3XIG5=VqoB_;U+03bONy z(z3(FeGh-pa2{$15Yr`is5*t`;{|k!Ziz#9VJO?_OH)_w5O@(@Ol#!I13`F98D0Wn zUvH?AT85XWvwFJUB<5wcudd<~^D<~zotImVKfo(M?92YpN>4rSDqI>isDy{QQe4K< zs`&McfY(+TuTN)tR!2%pOO3}j;7#G78+m9f#hZC(s`Q0dYo;W_yQ)YAlJFk<5#Adr zahv5Gd1&RKg@?9R({-q-HSm7?X=tv8qntT_4~AxY+Gq~r&uOm5pYf0@#b59+igLfC z7S|VlgHHkVI(!s=i@(Fi@NxV-K7mj2(80rK9y)nQ0e17y!^2uUti2AOrl(^U{t=(W zKjCwL_IqhMr7}Jq*5P4Y9@eA3<9F(73t=sM3*Vu21-^~{z<=^EhKCJ!*svV`h412f zJZ!|n9z5(x4Q=nu>5d=4&a3gi_%VKhpWVWsFm?NOyFT#N}qVPG82Mc%|r8jns_f$@4trCXJQy?Y0Pl4%NLOfx2SXL_AH6zo(Pa7=Ti#h{mkOM8EjznnI;1hIYS@tFRqjuoagLyLkn z)CKWO0)v@$3|)pgq6-hZQeW_}8xIrLFal^{Ix}79S&RlrEXm|y5>HPjne?Icm4k+L z0zGk$%`O_>E0k1!e!X5)p%f-He1;4kQ!CTaybeMNT-E83>BID`QY28u^a(}8L?a4o?{D6Fr%2<-YG@?q5y$F3{3R++&~gUf1tnV zwU(G(WtnNZx6|vaTG&gkv+CjA^vY^Hy`GwhXW=>Yl4=27NSVJHucen%8}Vj(QMDcK z#Jlk4_y)aQ>c>oA7BSnI@0c^pPt4EE1?D<)mw7Be0+E0f*aR_xhJwa|rh-^Ob3sc% zYeBrAt)RCc*jJDy7$6uVNEi488G?WyOOP!XBbY8&B=}PBlTa+Q2))8~!bD+`u)lDW zFi$vISSTDLEEbLzP83cS289cR3x$h>ON7gW9|%_pON3>@3gH^zUg1gMCE-6JBr=Lx zh`NjViw1~>i$;n@iSk7Sq9V};qV=LpqAjBBLD5dpF44!LBcfxX??op?r$s-DE{HCQ zE{m>+m12*$jkvS8n>b0_T|7`cQannWCmt;>6ps-Xi^q$ni)V^wiRXyti5G|$iWiBO zh*yiZi@z0L5&lzTTgnsUUFAdMS@L{&p?r+ISUyL-TwWnx zBVQ-qAm1e4CEp|8E8i#IFFzpvN`6v)LH*tWm60tXJ$->{aYje5yF8IIK9MIIFm(xS_bI_(O3=aaS1>C>2VLQl~U1O-i@Y zr>v{2uWYPrs*F`OS9VqoP-ZGeDJLj{N?!Sna=LP+a+Y$Aa*483xk0&Cc~JSC@|g0t z@`UmiVfI3YKNnEXO)oH(QIX%hqQbu#MPOY)3YQ?Z@_K2eN)P zgAD}PEOtEmHXCBsv4`0U>_zr6dxgEmK39oU3YA&aO4UWxO_ikTuIi~8rW&pqp~_L^ zs`6FiRYdi+YKm%_YP#xu)ne6B)pFH3)dtlj)fUx0)qd3h)gjeU)mha!)p^w~s()1f zs-CExsa~kXYMENDR;rEaw(3sm(dys?b%}bl`l$M>`e*e8^(FPM>Z|HM)c4f))eqH= zGy;uO6QNOPG#Z`8pfPF8nrKaorirGRCQj2@6R&BjX|GAr^w;<`8Jd75OOva~*A!@q zG-EZ3G#fPEY0hc>(A?47)%>k_p!rAhujYy7ndXI7t<`GvTBFviwFb43+9<6<>(sin z3ECdoOzk-ByV_OSo!aBttJ)_zMkmmTbga&%bLzahM!Lqjrn)w|cwJjvH(jDGS=U$B zPuE{JSvOO+ShrNST(?5EN>{2Y*KO17(0!=et@}v#vF;Pyr@9|>zv=b*Ci*n}FnzXu zq&`=luP@L~(Ff=27wMPim+4pOOZDaY)%vaa5B0nBhxK3RkLbVAf2%*H|5<-te?fmy ze_MY?e^-BB|4{$PATS6GB7?*bWvFY2F*GzZF*Gy88QL1U7`hpf4BZVq4TB9ChJYc< zkYmU-T;j-b1;hNz$!(*ex zSj*VV7-wu@Y-Ma?Ofa@Hb}*(I`xyHf2N(w%{l-jVmNDB%j4O;AjE9W(O+u61RL|7R z6lZE-YGrC;>TK$2N;Gvh^)jWJ=9u=FE}Nd2rDnNVX;z!HX1zJu>@s`IwatUgBhA6F z=5gi;=1Jza%*6bjdA513dA>Phe&4*0LjJJd=C6;o_YRfvy2FoVPLCe>c zW0vnNCoQKfmo3*VH!L?TcPw`;e_I|{u~lzvZf$4nVeM`0YfZBbwhpllwPsoa)?Dj5 z)>+oM*7??uwZgi^y3M-7`k{4q(0a>y-v(_$o7g6`DQzm7#-_7bZPB(^TU%Q<+ell1 zZGml_ZI^AgZI5lQ?MvHn+X>q#+Yh!MZI^7n+OFEJ+kUs*vOTgrwmr2yk90>iifj_u zEHW-~Qsj)t_abLU&W$`9c`fqK$iE`*Mc$8m82N&O9OeX^h?8(?E@4d ziMzsG=YHqzaSymh++*$;_ae$1l@QfEsyK>7&5T+YRT@^tlq+V|KG z+P}4*uwSrWx4&=*9h{?yqphQZqqC!%BiYfzG02hb@H;XcA345oeC0UmIOaIvIOVwG zc;tBEcpeR+Rngw)I??r`8%8&Yo)NtudU^E6(ZNH}m!cm!u~X=jI3t`&r^?AWYdf1d zJ2|^Llbk)ADb7C5H0MBPx-;Kd=p5rLc200kb`s}1&Z*9Ko%5X^ICnX}bzXKpbSYdO zS0h)RYm94>Ynm(MTIO2eDsh#&Hn=vswz+n?cDZi2vD@l)xntao+)dqa?w0O0L3e^X z+1=aS&pp6B*d1^WcaL=Ey7S#j-ACMiyPtZnNA59u>>j7by$ihWdzW~Zd)Ik4dN+Hwd3SnudG~ntdVld@ zUtM2c-w@w$-)LWvZ?bQSZ-#G^Z;NlA?{nV~-`BpQzSF*ozRSKVzH7c4zFWROe2;xk feb4KFI_f%xI<~615z#BN@E?;`^{)9ub-4cno@Uug diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index ce0bd8b0..8a41c117 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.9.2 + 1.9.3 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index ed553b16cf088ab26b69e4031e98d5c6428917c7..e3be43c628bce40badbc2eddaf300751b5f74be9 100644 GIT binary patch literal 118380 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

    YQoy(smf)Qid?k3x#@4n$2y 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 bo4yufR`!$*7( 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 From df6164fed1e412165ac78bcaaf67efa91b50c1ec Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 11:24:19 +0800 Subject: [PATCH 060/178] modify podspec --- LFLiveKit.podspec | 1 + 1 file changed, 1 insertion(+) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index a199f57d..43fdebbd 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -19,4 +19,5 @@ Pod::Spec.new do |s| s.requires_arc = true s.dependency 'LMGPUImage', '~> 0.1.9' + s.dependency 'pili-librtmp', '~> 1.0.3.1' end From d93d4b9bf5e34ac90147f248b804375c70491040 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 11:50:05 +0800 Subject: [PATCH 061/178] support carthage --- .gitignore | 23 +++++++++++++++++- LFLiveKit.podspec | 2 +- LFLiveKit.xcodeproj/project.pbxproj | 12 ++++----- .../UserInterfaceState.xcuserstate | Bin 15247 -> 16189 bytes LFLiveKit/Info.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 118380 -> 118716 bytes 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 382f8343..3a6477f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,25 @@ +# infer +infer-out/ -#CocoaPods +# Xcode +.DS_Store +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +*.xcworkspace +!default.xcworkspace +xcuserdata +profile +*.moved-aside +DerivedData +.idea/ + +# CocoaPods Pods/ Podfile.lock \ No newline at end of file diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 43fdebbd..a2603571 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.9.3" + s.version = "1.9.4" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 75d97d8c..f2a63fab 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -30,15 +30,15 @@ 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; }; + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; - 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; }; + 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; }; + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; @@ -342,6 +342,9 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, + 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, + 84001FE71D0016380026C63F /* LFFrame.h in Headers */, 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, @@ -350,7 +353,6 @@ B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, - 84001FE71D0016380026C63F /* LFFrame.h in Headers */, B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */, 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, @@ -359,8 +361,6 @@ 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */, B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 14d471beccc50fbeaa3995d90dc1974515a05060..6867e013df3a8be188e8fa300666d512aefbbc8f 100644 GIT binary patch delta 8787 zcmaJ_30RXyx1KXIfdm2xAv*~PWCKD1A*kT*E^4j2xS=Q_prQf_xG$Nnb+^_f+D)wj zTI*V?UA5M|YHe%lQmxfm>u#&oT6e2=Ld50v{x{$AK{O~3$fp=jktc3Sr6|9CeumL`Vk6{aJgI%y2_P~Dl8VmTjMtP zCEO8b<32bS7vdsZhKJ)3xE#NNU&WL06g(AA!_)EWcn*FOzlGn%@8Cta3a`ZL@P~LK z-iP<&ukiu=4gMB?hY#ZK@elY2KIX$G@G1N&zJUM0f8$&DHhzR36GX&BLc&NmF_Ktf zB4!dt;)#V=NhG~y-cq#8^{-AEBTUaBiqRivXks02g XcrU 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 QjDv4cbnspGoqp$k0FI4}6#xJL delta 7976 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 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 8a41c117..c1bb3453 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.9.3 + 1.9.4 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index e3be43c628bce40badbc2eddaf300751b5f74be9..575000bb1915dc25f45c97cfc55023f7a6cf1fe5 100644 GIT binary patch delta 34612 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 X;D3LuKkA1cCqDeckN^J~4z>IjoETpP From 981b0dd2cd4dbe6e7665be29ce601507ee015669 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 12:13:57 +0800 Subject: [PATCH 062/178] update... --- .../UserInterfaceState.xcuserstate | Bin 13643 -> 13708 bytes .../contents.xcworkspacedata | 10 ---------- .../UserInterfaceState.xcuserstate | Bin 16189 -> 0 bytes 3 files changed, 10 deletions(-) delete mode 100644 LFLiveKit.xcworkspace/contents.xcworkspacedata delete mode 100644 LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 769c914bc51effbe3b2a693f28d26f3ebb3944f4..f879a919dac67a9780764071951a5e11ce9d1e26 100644 GIT binary patch literal 13708 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 SL_CNP@tbQEzeAt4&Hn{L%Eg8N delta 8293 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 diff --git a/LFLiveKit.xcworkspace/contents.xcworkspacedata b/LFLiveKit.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 7e1121d5..00000000 --- a/LFLiveKit.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 6867e013df3a8be188e8fa300666d512aefbbc8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16189 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 Date: Mon, 1 Aug 2016 12:16:37 +0800 Subject: [PATCH 063/178] update.. --- LFLiveKit.xcodeproj/project.pbxproj | 35 ------------------ .../UserInterfaceState.xcuserstate | Bin 13708 -> 15204 bytes 2 files changed, 35 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index f2a63fab..cf0338b6 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -378,12 +378,10 @@ isa = PBXNativeTarget; buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; buildPhases = ( - 5ED199EAC89EE599F1E56B19 /* 📦 Check Pods Manifest.lock */, 84001F851D0015D10026C63F /* Sources */, 84001F861D0015D10026C63F /* Frameworks */, 84001F871D0015D10026C63F /* Headers */, 84001F881D0015D10026C63F /* Resources */, - 36D0848EAED7999C442A99BD /* 📦 Copy Pods Resources */, ); buildRules = ( ); @@ -464,39 +462,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 36D0848EAED7999C442A99BD /* 📦 Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 5ED199EAC89EE599F1E56B19 /* 📦 Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 84001F851D0015D10026C63F /* Sources */ = { isa = PBXSourcesBuildPhase; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index f879a919dac67a9780764071951a5e11ce9d1e26..1610ac68371257e9693697d75aea1bca79c5dca2 100644 GIT binary patch delta 8394 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 delta 7017 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 Date: Mon, 1 Aug 2016 12:28:52 +0800 Subject: [PATCH 064/178] =?UTF-8?q?update=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit.xcodeproj/project.pbxproj | 14 -------------- .../UserInterfaceState.xcuserstate | Bin 15204 -> 17663 bytes 2 files changed, 14 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index cf0338b6..70712727 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -120,7 +120,6 @@ 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; @@ -139,7 +138,6 @@ B2CD146A1D45F18B008082E8 /* VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoEncoder.m; sourceTree = ""; }; B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; - B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -189,7 +187,6 @@ 84001F8C1D0015D10026C63F /* LFLiveKit */, 84001F981D0015D10026C63F /* LFLiveKitTests */, 84001F8B1D0015D10026C63F /* Products */, - EDD4B76A07A6817C79BB4E5C /* Pods */, 0C07D14560B9E91EA1B59306 /* Frameworks */, ); sourceTree = ""; @@ -326,15 +323,6 @@ path = H264; sourceTree = ""; }; - EDD4B76A07A6817C79BB4E5C /* Pods */ = { - isa = PBXGroup; - children = ( - A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */, - B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -604,7 +592,6 @@ }; 84001F9F1D0015D10026C63F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A17586B27CD6843997425CCF /* Pods-LFLiveKit.debug.xcconfig */; buildSettings = { DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -637,7 +624,6 @@ }; 84001FA01D0015D10026C63F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B75B965E6B94DE4CBCC82EA7 /* Pods-LFLiveKit.release.xcconfig */; buildSettings = { DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 1610ac68371257e9693697d75aea1bca79c5dca2..c5c1602f4019e4389d5d91691d1052ad1a07caa3 100644 GIT binary patch delta 9644 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 delta 8013 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 BW}*N9 From ba1280af3a203dee9a8fb43866ab32e8c776b1c1 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 13:25:03 +0800 Subject: [PATCH 065/178] update... --- .../UserInterfaceState.xcuserstate | Bin 17663 -> 17319 bytes LFLiveKit/filter/LFGPUImageBeautyFilter.h | 4 +++- LFLiveKit/filter/LFGPUImageEmptyFilter.h | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index c5c1602f4019e4389d5d91691d1052ad1a07caa3..50fa540c5669436aca65e753fd31eb2c250c95c6 100644 GIT binary patch delta 9296 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 VrljG%hJmp0mwmnQx9OQF`yUO|y0!oS delta 9272 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 diff --git a/LFLiveKit/filter/LFGPUImageBeautyFilter.h b/LFLiveKit/filter/LFGPUImageBeautyFilter.h index d698db18..34ee2e14 100755 --- a/LFLiveKit/filter/LFGPUImageBeautyFilter.h +++ b/LFLiveKit/filter/LFGPUImageBeautyFilter.h @@ -1,4 +1,6 @@ -#import "GPUImageFilter.h" +#import + +@class GPUImageFilter; @interface LFGPUImageBeautyFilter : GPUImageFilter { } diff --git a/LFLiveKit/filter/LFGPUImageEmptyFilter.h b/LFLiveKit/filter/LFGPUImageEmptyFilter.h index fc6ac327..d25a9032 100755 --- a/LFLiveKit/filter/LFGPUImageEmptyFilter.h +++ b/LFLiveKit/filter/LFGPUImageEmptyFilter.h @@ -1,4 +1,6 @@ -#import "GPUImageFilter.h" +#import + +@class GPUImageFilter; @interface LFGPUImageEmptyFilter : GPUImageFilter { From ec61b1f7ec8902b466b8fea827f34e9938d94ea3 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 13:27:41 +0800 Subject: [PATCH 066/178] update.... --- LFLiveKit/filter/LFGPUImageBeautyFilter.h | 2 +- LFLiveKit/filter/LFGPUImageEmptyFilter.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit/filter/LFGPUImageBeautyFilter.h b/LFLiveKit/filter/LFGPUImageBeautyFilter.h index 34ee2e14..c83493bf 100755 --- a/LFLiveKit/filter/LFGPUImageBeautyFilter.h +++ b/LFLiveKit/filter/LFGPUImageBeautyFilter.h @@ -1,4 +1,4 @@ -#import +#import "GPUImage.h" @class GPUImageFilter; diff --git a/LFLiveKit/filter/LFGPUImageEmptyFilter.h b/LFLiveKit/filter/LFGPUImageEmptyFilter.h index d25a9032..a77974dc 100755 --- a/LFLiveKit/filter/LFGPUImageEmptyFilter.h +++ b/LFLiveKit/filter/LFGPUImageEmptyFilter.h @@ -1,4 +1,4 @@ -#import +#import "GPUImage.h" @class GPUImageFilter; From fb7ad31bf019e1ab4fc426ea71b2c26127c65c3d Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 13:49:59 +0800 Subject: [PATCH 067/178] update.... --- LFLiveKit.xcodeproj/project.pbxproj | 51 +++++++++++++++++++++++ LFLiveKit/filter/LFGPUImageBeautyFilter.h | 4 +- LFLiveKit/filter/LFGPUImageEmptyFilter.h | 4 +- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 70712727..307dc0f9 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -78,6 +78,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0BA5A0CE1F07E1D707F69735 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -139,6 +140,7 @@ B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -181,6 +183,15 @@ name = Frameworks; sourceTree = ""; }; + 4FDA0F424950EEA14E09E312 /* Pods */ = { + isa = PBXGroup; + children = ( + D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */, + 0BA5A0CE1F07E1D707F69735 /* Pods-LFLiveKit.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; 84001F801D0015D10026C63F = { isa = PBXGroup; children = ( @@ -188,6 +199,7 @@ 84001F981D0015D10026C63F /* LFLiveKitTests */, 84001F8B1D0015D10026C63F /* Products */, 0C07D14560B9E91EA1B59306 /* Frameworks */, + 4FDA0F424950EEA14E09E312 /* Pods */, ); sourceTree = ""; }; @@ -366,10 +378,12 @@ isa = PBXNativeTarget; buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; buildPhases = ( + 59B15CB863CEC87780FC058E /* 📦 Check Pods Manifest.lock */, 84001F851D0015D10026C63F /* Sources */, 84001F861D0015D10026C63F /* Frameworks */, 84001F871D0015D10026C63F /* Headers */, 84001F881D0015D10026C63F /* Resources */, + 49F3EAFC1828A54738134F66 /* 📦 Copy Pods Resources */, ); buildRules = ( ); @@ -450,6 +464,39 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 49F3EAFC1828A54738134F66 /* 📦 Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 59B15CB863CEC87780FC058E /* 📦 Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 84001F851D0015D10026C63F /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -592,6 +639,7 @@ }; 84001F9F1D0015D10026C63F /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */; buildSettings = { DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -619,11 +667,13 @@ PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + USER_HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/**"; }; name = Debug; }; 84001FA01D0015D10026C63F /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 0BA5A0CE1F07E1D707F69735 /* Pods-LFLiveKit.release.xcconfig */; buildSettings = { DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -651,6 +701,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + USER_HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/**"; }; name = Release; }; diff --git a/LFLiveKit/filter/LFGPUImageBeautyFilter.h b/LFLiveKit/filter/LFGPUImageBeautyFilter.h index c83493bf..d698db18 100755 --- a/LFLiveKit/filter/LFGPUImageBeautyFilter.h +++ b/LFLiveKit/filter/LFGPUImageBeautyFilter.h @@ -1,6 +1,4 @@ -#import "GPUImage.h" - -@class GPUImageFilter; +#import "GPUImageFilter.h" @interface LFGPUImageBeautyFilter : GPUImageFilter { } diff --git a/LFLiveKit/filter/LFGPUImageEmptyFilter.h b/LFLiveKit/filter/LFGPUImageEmptyFilter.h index a77974dc..fc6ac327 100755 --- a/LFLiveKit/filter/LFGPUImageEmptyFilter.h +++ b/LFLiveKit/filter/LFGPUImageEmptyFilter.h @@ -1,6 +1,4 @@ -#import "GPUImage.h" - -@class GPUImageFilter; +#import "GPUImageFilter.h" @interface LFGPUImageEmptyFilter : GPUImageFilter { From d7164f8b7640680b64d265f308bf39f71417b5f2 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 13:52:51 +0800 Subject: [PATCH 068/178] update... --- LFLiveKit.xcodeproj/project.pbxproj | 35 ------------------ .../UserInterfaceState.xcuserstate | Bin 17319 -> 17882 bytes 2 files changed, 35 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 307dc0f9..d44c03e5 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -378,12 +378,10 @@ isa = PBXNativeTarget; buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; buildPhases = ( - 59B15CB863CEC87780FC058E /* 📦 Check Pods Manifest.lock */, 84001F851D0015D10026C63F /* Sources */, 84001F861D0015D10026C63F /* Frameworks */, 84001F871D0015D10026C63F /* Headers */, 84001F881D0015D10026C63F /* Resources */, - 49F3EAFC1828A54738134F66 /* 📦 Copy Pods Resources */, ); buildRules = ( ); @@ -464,39 +462,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 49F3EAFC1828A54738134F66 /* 📦 Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 59B15CB863CEC87780FC058E /* 📦 Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 84001F851D0015D10026C63F /* Sources */ = { isa = PBXSourcesBuildPhase; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 50fa540c5669436aca65e753fd31eb2c250c95c6..52415b0a0f60f1ad2a3811bffd6536fcd5df2908 100644 GIT binary patch delta 9192 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 HL;n8&ZMj+G From 984bcb8e15546dcc0b7f9c5ec10a889aafd25965 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 14:21:40 +0800 Subject: [PATCH 069/178] update version --- LFLiveKit.podspec | 2 +- LFLiveKit/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index a2603571..d91c4b38 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.9.4" + s.version = "1.9.5" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index c1bb3453..84df70fc 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.9.4 + 1.9.5 CFBundleSignature ???? CFBundleVersion From cfb84d31fb1a67b278d20f251df3b4c34139fd72 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 14:54:46 +0800 Subject: [PATCH 070/178] update version --- LFLiveKit.podspec | 4 +- LFLiveKit.xcodeproj/project.pbxproj | 1492 +++++- .../UserInterfaceState.xcuserstate | Bin 17882 -> 17738 bytes LFLiveKit/Info.plist | 2 +- LFLiveKit/Vendor/GPUImage/GLProgram.h | 42 + LFLiveKit/Vendor/GPUImage/GLProgram.m | 236 + LFLiveKit/Vendor/GPUImage/GPUImage.h | 170 + .../GPUImage/GPUImage3x3ConvolutionFilter.h | 18 + .../GPUImage/GPUImage3x3ConvolutionFilter.m | 128 + .../GPUImage3x3TextureSamplingFilter.h | 18 + .../GPUImage3x3TextureSamplingFilter.m | 121 + .../GPUImageAdaptiveThresholdFilter.h | 9 + .../GPUImageAdaptiveThresholdFilter.m | 100 + .../Vendor/GPUImage/GPUImageAddBlendFilter.h | 5 + .../Vendor/GPUImage/GPUImageAddBlendFilter.m | 100 + .../GPUImage/GPUImageAlphaBlendFilter.h | 11 + .../GPUImage/GPUImageAlphaBlendFilter.m | 72 + .../Vendor/GPUImage/GPUImageAmatorkaFilter.h | 17 + .../Vendor/GPUImage/GPUImageAmatorkaFilter.m | 38 + .../Vendor/GPUImage/GPUImageAverageColor.h | 20 + .../Vendor/GPUImage/GPUImageAverageColor.m | 204 + .../GPUImageAverageLuminanceThresholdFilter.h | 8 + .../GPUImageAverageLuminanceThresholdFilter.m | 47 + .../Vendor/GPUImage/GPUImageBilateralFilter.h | 10 + .../Vendor/GPUImage/GPUImageBilateralFilter.m | 231 + .../Vendor/GPUImage/GPUImageBoxBlurFilter.h | 7 + .../Vendor/GPUImage/GPUImageBoxBlurFilter.m | 178 + .../GPUImage/GPUImageBrightnessFilter.h | 11 + .../GPUImage/GPUImageBrightnessFilter.m | 66 + LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h | 10 + LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m | 112 + .../GPUImage/GPUImageBulgeDistortionFilter.h | 16 + .../GPUImage/GPUImageBulgeDistortionFilter.m | 174 + .../GPUImage/GPUImageCGAColorspaceFilter.h | 5 + .../GPUImage/GPUImageCGAColorspaceFilter.m | 113 + .../GPUImageCannyEdgeDetectionFilter.h | 62 + .../GPUImageCannyEdgeDetectionFilter.m | 125 + .../GPUImage/GPUImageChromaKeyBlendFilter.h | 32 + .../GPUImage/GPUImageChromaKeyBlendFilter.m | 117 + .../Vendor/GPUImage/GPUImageChromaKeyFilter.h | 30 + .../Vendor/GPUImage/GPUImageChromaKeyFilter.m | 113 + .../Vendor/GPUImage/GPUImageClosingFilter.h | 19 + .../Vendor/GPUImage/GPUImageClosingFilter.m | 57 + .../GPUImage/GPUImageColorBlendFilter.h | 5 + .../GPUImage/GPUImageColorBlendFilter.m | 113 + .../GPUImage/GPUImageColorBurnBlendFilter.h | 9 + .../GPUImage/GPUImageColorBurnBlendFilter.m | 52 + .../Vendor/GPUImage/GPUImageColorConversion.h | 12 + .../Vendor/GPUImage/GPUImageColorConversion.m | 159 + .../GPUImage/GPUImageColorDodgeBlendFilter.h | 9 + .../GPUImage/GPUImageColorDodgeBlendFilter.m | 75 + .../GPUImage/GPUImageColorInvertFilter.h | 7 + .../GPUImage/GPUImageColorInvertFilter.m | 46 + .../GPUImageColorLocalBinaryPatternFilter.h | 5 + .../GPUImageColorLocalBinaryPatternFilter.m | 159 + .../GPUImage/GPUImageColorMatrixFilter.h | 19 + .../GPUImage/GPUImageColorMatrixFilter.m | 87 + .../GPUImage/GPUImageColorPackingFilter.h | 10 + .../GPUImage/GPUImageColorPackingFilter.m | 139 + .../GPUImageColourFASTFeatureDetector.h | 21 + .../GPUImageColourFASTFeatureDetector.m | 48 + .../GPUImageColourFASTSamplingOperation.h | 22 + .../GPUImageColourFASTSamplingOperation.m | 204 + .../Vendor/GPUImage/GPUImageContrastFilter.h | 14 + .../Vendor/GPUImage/GPUImageContrastFilter.m | 66 + .../Vendor/GPUImage/GPUImageCropFilter.h | 14 + .../Vendor/GPUImage/GPUImageCropFilter.m | 274 ++ .../GPUImage/GPUImageCrosshairGenerator.h | 17 + .../GPUImage/GPUImageCrosshairGenerator.m | 139 + .../GPUImage/GPUImageCrosshatchFilter.h | 13 + .../GPUImage/GPUImageCrosshatchFilter.m | 163 + .../GPUImage/GPUImageDarkenBlendFilter.h | 7 + .../GPUImage/GPUImageDarkenBlendFilter.m | 52 + .../GPUImage/GPUImageDifferenceBlendFilter.h | 7 + .../GPUImage/GPUImageDifferenceBlendFilter.m | 50 + .../Vendor/GPUImage/GPUImageDilationFilter.h | 16 + .../Vendor/GPUImage/GPUImageDilationFilter.m | 431 ++ ...geDirectionalNonMaximumSuppressionFilter.h | 19 + ...geDirectionalNonMaximumSuppressionFilter.m | 141 + ...ImageDirectionalSobelEdgeDetectionFilter.h | 5 + ...ImageDirectionalSobelEdgeDetectionFilter.m | 103 + .../GPUImage/GPUImageDissolveBlendFilter.h | 11 + .../GPUImage/GPUImageDissolveBlendFilter.m | 72 + .../GPUImage/GPUImageDivideBlendFilter.h | 5 + .../GPUImage/GPUImageDivideBlendFilter.m | 96 + .../Vendor/GPUImage/GPUImageEmbossFilter.h | 8 + .../Vendor/GPUImage/GPUImageEmbossFilter.m | 49 + .../Vendor/GPUImage/GPUImageErosionFilter.h | 11 + .../Vendor/GPUImage/GPUImageErosionFilter.m | 312 ++ .../GPUImage/GPUImageExclusionBlendFilter.h | 7 + .../GPUImage/GPUImageExclusionBlendFilter.m | 56 + .../Vendor/GPUImage/GPUImageExposureFilter.h | 11 + .../Vendor/GPUImage/GPUImageExposureFilter.m | 66 + .../GPUImageFASTCornerDetectionFilter.h | 33 + .../GPUImageFASTCornerDetectionFilter.m | 89 + .../GPUImage/GPUImageFalseColorFilter.h | 15 + .../GPUImage/GPUImageFalseColorFilter.m | 101 + LFLiveKit/Vendor/GPUImage/GPUImageFilter.h | 134 + LFLiveKit/Vendor/GPUImage/GPUImageFilter.m | 753 +++ .../Vendor/GPUImage/GPUImageFilterGroup.h | 19 + .../Vendor/GPUImage/GPUImageFilterGroup.m | 208 + .../Vendor/GPUImage/GPUImageFilterPipeline.h | 30 + .../Vendor/GPUImage/GPUImageFilterPipeline.m | 218 + .../Vendor/GPUImage/GPUImageFourInputFilter.h | 21 + .../Vendor/GPUImage/GPUImageFourInputFilter.m | 401 ++ .../Vendor/GPUImage/GPUImageFramebuffer.h | 59 + .../Vendor/GPUImage/GPUImageFramebuffer.m | 457 ++ .../GPUImage/GPUImageFramebufferCache.h | 15 + .../GPUImage/GPUImageFramebufferCache.m | 190 + .../Vendor/GPUImage/GPUImageGammaFilter.h | 11 + .../Vendor/GPUImage/GPUImageGammaFilter.m | 66 + .../GPUImage/GPUImageGaussianBlurFilter.h | 36 + .../GPUImage/GPUImageGaussianBlurFilter.m | 513 ++ .../GPUImageGaussianBlurPositionFilter.h | 22 + .../GPUImageGaussianBlurPositionFilter.m | 232 + .../GPUImageGaussianSelectiveBlurFilter.h | 30 + .../GPUImageGaussianSelectiveBlurFilter.m | 147 + .../GPUImage/GPUImageGlassSphereFilter.h | 5 + .../GPUImage/GPUImageGlassSphereFilter.m | 106 + .../Vendor/GPUImage/GPUImageGrayscaleFilter.h | 9 + .../Vendor/GPUImage/GPUImageGrayscaleFilter.m | 141 + LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h | 27 + LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m | 414 ++ .../Vendor/GPUImage/GPUImageHalftoneFilter.h | 5 + .../Vendor/GPUImage/GPUImageHalftoneFilter.m | 79 + .../GPUImage/GPUImageHardLightBlendFilter.h | 7 + .../GPUImage/GPUImageHardLightBlendFilter.m | 99 + .../GPUImageHarrisCornerDetectionFilter.h | 53 + .../GPUImageHarrisCornerDetectionFilter.m | 292 ++ .../Vendor/GPUImage/GPUImageHazeFilter.h | 29 + .../Vendor/GPUImage/GPUImageHazeFilter.m | 96 + .../Vendor/GPUImage/GPUImageHighPassFilter.h | 14 + .../Vendor/GPUImage/GPUImageHighPassFilter.m | 46 + .../GPUImage/GPUImageHighlightShadowFilter.h | 20 + .../GPUImage/GPUImageHighlightShadowFilter.m | 93 + .../GPUImageHighlightShadowTintFilter.h | 25 + .../GPUImageHighlightShadowTintFilter.m | 136 + .../GPUImageHistogramEqualizationFilter.h | 26 + .../GPUImageHistogramEqualizationFilter.m | 307 ++ .../Vendor/GPUImage/GPUImageHistogramFilter.h | 22 + .../Vendor/GPUImage/GPUImageHistogramFilter.m | 341 ++ .../GPUImage/GPUImageHistogramGenerator.h | 8 + .../GPUImage/GPUImageHistogramGenerator.m | 87 + .../GPUImageHoughTransformLineDetector.h | 49 + .../GPUImageHoughTransformLineDetector.m | 241 + .../Vendor/GPUImage/GPUImageHueBlendFilter.h | 5 + .../Vendor/GPUImage/GPUImageHueBlendFilter.m | 212 + LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h | 11 + LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m | 123 + .../GPUImage/GPUImageJFAVoronoiFilter.h | 17 + .../GPUImage/GPUImageJFAVoronoiFilter.m | 446 ++ .../Vendor/GPUImage/GPUImageKuwaharaFilter.h | 13 + .../Vendor/GPUImage/GPUImageKuwaharaFilter.m | 223 + .../GPUImage/GPUImageKuwaharaRadius3Filter.h | 8 + .../GPUImage/GPUImageKuwaharaRadius3Filter.m | 547 +++ .../GPUImageLanczosResamplingFilter.h | 7 + .../GPUImageLanczosResamplingFilter.m | 239 + .../Vendor/GPUImage/GPUImageLaplacianFilter.h | 5 + .../Vendor/GPUImage/GPUImageLaplacianFilter.m | 115 + .../Vendor/GPUImage/GPUImageLevelsFilter.h | 45 + .../Vendor/GPUImage/GPUImageLevelsFilter.m | 152 + .../GPUImage/GPUImageLightenBlendFilter.h | 8 + .../GPUImage/GPUImageLightenBlendFilter.m | 52 + .../Vendor/GPUImage/GPUImageLineGenerator.h | 18 + .../Vendor/GPUImage/GPUImageLineGenerator.m | 164 + .../GPUImage/GPUImageLinearBurnBlendFilter.h | 5 + .../GPUImage/GPUImageLinearBurnBlendFilter.m | 51 + .../GPUImageLocalBinaryPatternFilter.h | 5 + .../GPUImageLocalBinaryPatternFilter.m | 123 + .../Vendor/GPUImage/GPUImageLookupFilter.h | 34 + .../Vendor/GPUImage/GPUImageLookupFilter.m | 115 + .../Vendor/GPUImage/GPUImageLowPassFilter.h | 14 + .../Vendor/GPUImage/GPUImageLowPassFilter.m | 61 + .../GPUImage/GPUImageLuminanceRangeFilter.h | 12 + .../GPUImage/GPUImageLuminanceRangeFilter.m | 76 + .../GPUImageLuminanceThresholdFilter.h | 14 + .../GPUImageLuminanceThresholdFilter.m | 74 + .../Vendor/GPUImage/GPUImageLuminosity.h | 17 + .../Vendor/GPUImage/GPUImageLuminosity.m | 329 ++ .../GPUImage/GPUImageLuminosityBlendFilter.h | 5 + .../GPUImage/GPUImageLuminosityBlendFilter.m | 113 + .../Vendor/GPUImage/GPUImageMaskFilter.h | 5 + .../Vendor/GPUImage/GPUImageMaskFilter.m | 76 + .../Vendor/GPUImage/GPUImageMedianFilter.h | 5 + .../Vendor/GPUImage/GPUImageMedianFilter.m | 178 + .../GPUImage/GPUImageMissEtikateFilter.h | 17 + .../GPUImage/GPUImageMissEtikateFilter.m | 38 + .../GPUImage/GPUImageMonochromeFilter.h | 13 + .../GPUImage/GPUImageMonochromeFilter.m | 115 + .../Vendor/GPUImage/GPUImageMosaicFilter.h | 22 + .../Vendor/GPUImage/GPUImageMosaicFilter.m | 188 + .../GPUImage/GPUImageMotionBlurFilter.h | 13 + .../GPUImage/GPUImageMotionBlurFilter.m | 209 + .../Vendor/GPUImage/GPUImageMotionDetector.h | 18 + .../Vendor/GPUImage/GPUImageMotionDetector.m | 112 + LFLiveKit/Vendor/GPUImage/GPUImageMovie.h | 61 + LFLiveKit/Vendor/GPUImage/GPUImageMovie.m | 876 ++++ .../GPUImage/GPUImageMovieComposition.h | 21 + .../GPUImage/GPUImageMovieComposition.m | 70 + .../GPUImage/GPUImageMultiplyBlendFilter.h | 7 + .../GPUImage/GPUImageMultiplyBlendFilter.m | 52 + .../GPUImageNobleCornerDetectionFilter.h | 12 + .../GPUImageNobleCornerDetectionFilter.m | 74 + .../GPUImageNonMaximumSuppressionFilter.h | 5 + .../GPUImageNonMaximumSuppressionFilter.m | 107 + .../GPUImage/GPUImageNormalBlendFilter.h | 8 + .../GPUImage/GPUImageNormalBlendFilter.m | 96 + .../Vendor/GPUImage/GPUImageOpacityFilter.h | 11 + .../Vendor/GPUImage/GPUImageOpacityFilter.m | 65 + .../Vendor/GPUImage/GPUImageOpeningFilter.h | 19 + .../Vendor/GPUImage/GPUImageOpeningFilter.m | 57 + LFLiveKit/Vendor/GPUImage/GPUImageOutput.h | 128 + LFLiveKit/Vendor/GPUImage/GPUImageOutput.m | 439 ++ .../GPUImage/GPUImageOverlayBlendFilter.h | 5 + .../GPUImage/GPUImageOverlayBlendFilter.m | 94 + ...ageParallelCoordinateLineTransformFilter.h | 16 + ...ageParallelCoordinateLineTransformFilter.m | 266 ++ .../GPUImage/GPUImagePerlinNoiseFilter.h | 13 + .../GPUImage/GPUImagePerlinNoiseFilter.m | 239 + .../GPUImage/GPUImagePinchDistortionFilter.h | 20 + .../GPUImage/GPUImagePinchDistortionFilter.m | 176 + .../Vendor/GPUImage/GPUImagePixellateFilter.h | 12 + .../Vendor/GPUImage/GPUImagePixellateFilter.m | 151 + .../GPUImagePixellatePositionFilter.h | 17 + .../GPUImagePixellatePositionFilter.m | 194 + .../GPUImage/GPUImagePoissonBlendFilter.h | 18 + .../GPUImage/GPUImagePoissonBlendFilter.m | 175 + .../GPUImage/GPUImagePolarPixellateFilter.h | 13 + .../GPUImage/GPUImagePolarPixellateFilter.m | 128 + .../Vendor/GPUImage/GPUImagePolkaDotFilter.h | 10 + .../Vendor/GPUImage/GPUImagePolkaDotFilter.m | 85 + .../Vendor/GPUImage/GPUImagePosterizeFilter.h | 14 + .../Vendor/GPUImage/GPUImagePosterizeFilter.m | 66 + .../GPUImagePrewittEdgeDetectionFilter.h | 5 + .../GPUImagePrewittEdgeDetectionFilter.m | 97 + .../GPUImage/GPUImageRGBClosingFilter.h | 18 + .../GPUImage/GPUImageRGBClosingFilter.m | 41 + .../GPUImage/GPUImageRGBDilationFilter.h | 11 + .../GPUImage/GPUImageRGBDilationFilter.m | 306 ++ .../GPUImage/GPUImageRGBErosionFilter.h | 11 + .../GPUImage/GPUImageRGBErosionFilter.m | 304 ++ LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h | 15 + LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m | 89 + .../GPUImage/GPUImageRGBOpeningFilter.h | 17 + .../GPUImage/GPUImageRGBOpeningFilter.m | 41 + .../Vendor/GPUImage/GPUImageRawDataInput.h | 43 + .../Vendor/GPUImage/GPUImageRawDataInput.m | 139 + .../Vendor/GPUImage/GPUImageRawDataOutput.h | 44 + .../Vendor/GPUImage/GPUImageRawDataOutput.m | 307 ++ .../GPUImage/GPUImageSaturationBlendFilter.h | 5 + .../GPUImage/GPUImageSaturationBlendFilter.m | 213 + .../GPUImage/GPUImageSaturationFilter.h | 14 + .../GPUImage/GPUImageSaturationFilter.m | 78 + .../GPUImage/GPUImageScreenBlendFilter.h | 7 + .../GPUImage/GPUImageScreenBlendFilter.m | 52 + .../Vendor/GPUImage/GPUImageSepiaFilter.h | 6 + .../Vendor/GPUImage/GPUImageSepiaFilter.m | 24 + .../Vendor/GPUImage/GPUImageSharpenFilter.h | 12 + .../Vendor/GPUImage/GPUImageSharpenFilter.m | 147 + .../GPUImageShiTomasiFeatureDetectionFilter.h | 13 + .../GPUImageShiTomasiFeatureDetectionFilter.m | 65 + ...PUImageSingleComponentGaussianBlurFilter.h | 7 + ...PUImageSingleComponentGaussianBlurFilter.m | 189 + .../Vendor/GPUImage/GPUImageSketchFilter.h | 11 + .../Vendor/GPUImage/GPUImageSketchFilter.m | 98 + .../Vendor/GPUImage/GPUImageSkinToneFilter.h | 47 + .../Vendor/GPUImage/GPUImageSkinToneFilter.m | 246 + .../GPUImage/GPUImageSmoothToonFilter.h | 28 + .../GPUImage/GPUImageSmoothToonFilter.m | 94 + .../GPUImageSobelEdgeDetectionFilter.h | 16 + .../GPUImageSobelEdgeDetectionFilter.m | 188 + .../GPUImage/GPUImageSoftEleganceFilter.h | 19 + .../GPUImage/GPUImageSoftEleganceFilter.m | 62 + .../GPUImage/GPUImageSoftLightBlendFilter.h | 7 + .../GPUImage/GPUImageSoftLightBlendFilter.m | 54 + .../Vendor/GPUImage/GPUImageSolarizeFilter.h | 14 + .../Vendor/GPUImage/GPUImageSolarizeFilter.m | 76 + .../GPUImage/GPUImageSolidColorGenerator.h | 19 + .../GPUImage/GPUImageSolidColorGenerator.m | 123 + .../GPUImage/GPUImageSourceOverBlendFilter.h | 5 + .../GPUImage/GPUImageSourceOverBlendFilter.m | 51 + .../GPUImage/GPUImageSphereRefractionFilter.h | 15 + .../GPUImage/GPUImageSphereRefractionFilter.m | 179 + .../Vendor/GPUImage/GPUImageStillCamera.h | 24 + .../Vendor/GPUImage/GPUImageStillCamera.m | 338 ++ .../GPUImageStretchDistortionFilter.h | 13 + .../GPUImageStretchDistortionFilter.m | 99 + .../GPUImage/GPUImageSubtractBlendFilter.h | 5 + .../GPUImage/GPUImageSubtractBlendFilter.m | 52 + .../Vendor/GPUImage/GPUImageSwirlFilter.h | 17 + .../Vendor/GPUImage/GPUImageSwirlFilter.m | 123 + .../Vendor/GPUImage/GPUImageTextureInput.h | 14 + .../Vendor/GPUImage/GPUImageTextureInput.m | 46 + .../Vendor/GPUImage/GPUImageTextureOutput.h | 21 + .../Vendor/GPUImage/GPUImageTextureOutput.m | 83 + .../GPUImage/GPUImageThreeInputFilter.h | 21 + .../GPUImage/GPUImageThreeInputFilter.m | 328 ++ .../GPUImageThresholdEdgeDetectionFilter.h | 12 + .../GPUImageThresholdEdgeDetectionFilter.m | 145 + .../GPUImage/GPUImageThresholdSketchFilter.h | 5 + .../GPUImage/GPUImageThresholdSketchFilter.m | 103 + ...geThresholdedNonMaximumSuppressionFilter.h | 14 + ...geThresholdedNonMaximumSuppressionFilter.m | 297 ++ .../Vendor/GPUImage/GPUImageTiltShiftFilter.h | 24 + .../Vendor/GPUImage/GPUImageTiltShiftFilter.m | 126 + .../Vendor/GPUImage/GPUImageToneCurveFilter.h | 30 + .../Vendor/GPUImage/GPUImageToneCurveFilter.m | 621 +++ .../Vendor/GPUImage/GPUImageToonFilter.h | 19 + .../Vendor/GPUImage/GPUImageToonFilter.m | 149 + .../Vendor/GPUImage/GPUImageTransformFilter.h | 19 + .../Vendor/GPUImage/GPUImageTransformFilter.m | 260 ++ ...UImageTwoInputCrossTextureSamplingFilter.h | 15 + ...UImageTwoInputCrossTextureSamplingFilter.m | 108 + .../Vendor/GPUImage/GPUImageTwoInputFilter.h | 21 + .../Vendor/GPUImage/GPUImageTwoInputFilter.m | 264 ++ .../Vendor/GPUImage/GPUImageTwoPassFilter.h | 19 + .../Vendor/GPUImage/GPUImageTwoPassFilter.m | 201 + .../GPUImageTwoPassTextureSamplingFilter.h | 13 + .../GPUImageTwoPassTextureSamplingFilter.m | 85 + LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h | 15 + LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m | 123 + .../GPUImage/GPUImageUnsharpMaskFilter.h | 16 + .../GPUImage/GPUImageUnsharpMaskFilter.m | 101 + .../Vendor/GPUImage/GPUImageVideoCamera.h | 156 + .../Vendor/GPUImage/GPUImageVideoCamera.m | 1062 +++++ .../Vendor/GPUImage/GPUImageVignetteFilter.h | 22 + .../Vendor/GPUImage/GPUImageVignetteFilter.m | 104 + .../GPUImage/GPUImageVoronoiConsumerFilter.h | 10 + .../GPUImage/GPUImageVoronoiConsumerFilter.m | 94 + .../GPUImageWeakPixelInclusionFilter.h | 5 + .../GPUImageWeakPixelInclusionFilter.m | 94 + .../GPUImage/GPUImageWhiteBalanceFilter.h | 17 + .../GPUImage/GPUImageWhiteBalanceFilter.m | 107 + .../GPUImage/GPUImageXYDerivativeFilter.h | 5 + .../GPUImage/GPUImageXYDerivativeFilter.m | 106 + .../Vendor/GPUImage/GPUImageZoomBlurFilter.h | 13 + .../Vendor/GPUImage/GPUImageZoomBlurFilter.m | 115 + .../Vendor/GPUImage/GPUImageiOSBlurFilter.h | 31 + .../Vendor/GPUImage/GPUImageiOSBlurFilter.m | 114 + .../iOS/Framework/GPUImageFramework.h | 177 + .../Vendor/GPUImage/iOS/GPUImageContext.h | 64 + .../Vendor/GPUImage/iOS/GPUImageContext.m | 320 ++ .../Vendor/GPUImage/iOS/GPUImageMovieWriter.h | 67 + .../Vendor/GPUImage/iOS/GPUImageMovieWriter.m | 1016 ++++ .../iOS/GPUImagePicture+TextureSubimage.h | 19 + .../iOS/GPUImagePicture+TextureSubimage.m | 103 + .../Vendor/GPUImage/iOS/GPUImagePicture.h | 38 + .../Vendor/GPUImage/iOS/GPUImagePicture.m | 371 ++ LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h | 41 + LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m | 484 ++ LFLiveKit/Vendor/pili-librtmp/amf.c | 1037 +++++ LFLiveKit/Vendor/pili-librtmp/amf.h | 180 + LFLiveKit/Vendor/pili-librtmp/bytes.h | 91 + LFLiveKit/Vendor/pili-librtmp/dh.h | 345 ++ LFLiveKit/Vendor/pili-librtmp/dhgroups.h | 198 + LFLiveKit/Vendor/pili-librtmp/error.c | 20 + LFLiveKit/Vendor/pili-librtmp/error.h | 45 + LFLiveKit/Vendor/pili-librtmp/handshake.h | 1034 +++++ LFLiveKit/Vendor/pili-librtmp/hashswf.c | 626 +++ LFLiveKit/Vendor/pili-librtmp/http.h | 49 + LFLiveKit/Vendor/pili-librtmp/log.c | 209 + LFLiveKit/Vendor/pili-librtmp/log.h | 68 + LFLiveKit/Vendor/pili-librtmp/parseurl.c | 312 ++ LFLiveKit/Vendor/pili-librtmp/rtmp.c | 4136 +++++++++++++++++ LFLiveKit/Vendor/pili-librtmp/rtmp.h | 356 ++ LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h | 123 + .../UserInterfaceState.xcuserstate | Bin 118716 -> 123847 bytes .../project.pbxproj | 50 +- LFLiveKitSwiftDemo/Podfile | 4 +- Podfile | 10 - 370 files changed, 43923 insertions(+), 36 deletions(-) create mode 100755 LFLiveKit/Vendor/GPUImage/GLProgram.h create mode 100755 LFLiveKit/Vendor/GPUImage/GLProgram.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImage.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMovie.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMovie.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageOutput.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageOutput.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.h create mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.h create mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m create mode 100644 LFLiveKit/Vendor/GPUImage/iOS/Framework/GPUImageFramework.h create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.h create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.h create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m create mode 100644 LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.h create mode 100644 LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.h create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h create mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m create mode 100644 LFLiveKit/Vendor/pili-librtmp/amf.c create mode 100644 LFLiveKit/Vendor/pili-librtmp/amf.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/bytes.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/dh.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/dhgroups.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/error.c create mode 100644 LFLiveKit/Vendor/pili-librtmp/error.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/handshake.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/hashswf.c create mode 100644 LFLiveKit/Vendor/pili-librtmp/http.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/log.c create mode 100644 LFLiveKit/Vendor/pili-librtmp/log.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/parseurl.c create mode 100644 LFLiveKit/Vendor/pili-librtmp/rtmp.c create mode 100644 LFLiveKit/Vendor/pili-librtmp/rtmp.h create mode 100644 LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h delete mode 100755 Podfile diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index d91c4b38..e17a0a04 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.9.5" + s.version = "1.9.6" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -18,6 +18,4 @@ Pod::Spec.new do |s| s.requires_arc = true - s.dependency 'LMGPUImage', '~> 0.1.9' - s.dependency 'pili-librtmp', '~> 1.0.3.1' end diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index d44c03e5..96009537 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -46,7 +46,368 @@ 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; - AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */; }; + 8437239A1D4F260A002B398B /* GLProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437222D1D4F260A002B398B /* GLProgram.h */; }; + 8437239B1D4F260A002B398B /* GLProgram.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437222E1D4F260A002B398B /* GLProgram.m */; }; + 8437239C1D4F260A002B398B /* GPUImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437222F1D4F260A002B398B /* GPUImage.h */; }; + 8437239D1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722301D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h */; }; + 8437239E1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722311D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m */; }; + 8437239F1D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722321D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h */; }; + 843723A01D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722331D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m */; }; + 843723A11D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722341D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h */; }; + 843723A21D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722351D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m */; }; + 843723A31D4F260A002B398B /* GPUImageAddBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722361D4F260A002B398B /* GPUImageAddBlendFilter.h */; }; + 843723A41D4F260A002B398B /* GPUImageAddBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722371D4F260A002B398B /* GPUImageAddBlendFilter.m */; }; + 843723A51D4F260A002B398B /* GPUImageAlphaBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722381D4F260A002B398B /* GPUImageAlphaBlendFilter.h */; }; + 843723A61D4F260A002B398B /* GPUImageAlphaBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722391D4F260A002B398B /* GPUImageAlphaBlendFilter.m */; }; + 843723A71D4F260A002B398B /* GPUImageAmatorkaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437223A1D4F260A002B398B /* GPUImageAmatorkaFilter.h */; }; + 843723A81D4F260A002B398B /* GPUImageAmatorkaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437223B1D4F260A002B398B /* GPUImageAmatorkaFilter.m */; }; + 843723A91D4F260A002B398B /* GPUImageAverageColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437223C1D4F260A002B398B /* GPUImageAverageColor.h */; }; + 843723AA1D4F260A002B398B /* GPUImageAverageColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437223D1D4F260A002B398B /* GPUImageAverageColor.m */; }; + 843723AB1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437223E1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h */; }; + 843723AC1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437223F1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m */; }; + 843723AD1D4F260A002B398B /* GPUImageBilateralFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722401D4F260A002B398B /* GPUImageBilateralFilter.h */; }; + 843723AE1D4F260A002B398B /* GPUImageBilateralFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722411D4F260A002B398B /* GPUImageBilateralFilter.m */; }; + 843723AF1D4F260A002B398B /* GPUImageBoxBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722421D4F260A002B398B /* GPUImageBoxBlurFilter.h */; }; + 843723B01D4F260A002B398B /* GPUImageBoxBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722431D4F260A002B398B /* GPUImageBoxBlurFilter.m */; }; + 843723B11D4F260A002B398B /* GPUImageBrightnessFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722441D4F260A002B398B /* GPUImageBrightnessFilter.h */; }; + 843723B21D4F260A002B398B /* GPUImageBrightnessFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722451D4F260A002B398B /* GPUImageBrightnessFilter.m */; }; + 843723B31D4F260A002B398B /* GPUImageBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722461D4F260A002B398B /* GPUImageBuffer.h */; }; + 843723B41D4F260A002B398B /* GPUImageBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722471D4F260A002B398B /* GPUImageBuffer.m */; }; + 843723B51D4F260A002B398B /* GPUImageBulgeDistortionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722481D4F260A002B398B /* GPUImageBulgeDistortionFilter.h */; }; + 843723B61D4F260A002B398B /* GPUImageBulgeDistortionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722491D4F260A002B398B /* GPUImageBulgeDistortionFilter.m */; }; + 843723B71D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437224A1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h */; }; + 843723B81D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437224B1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m */; }; + 843723B91D4F260A002B398B /* GPUImageCGAColorspaceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437224C1D4F260A002B398B /* GPUImageCGAColorspaceFilter.h */; }; + 843723BA1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437224D1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m */; }; + 843723BB1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437224E1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h */; }; + 843723BC1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437224F1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m */; }; + 843723BD1D4F260A002B398B /* GPUImageChromaKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722501D4F260A002B398B /* GPUImageChromaKeyFilter.h */; }; + 843723BE1D4F260A002B398B /* GPUImageChromaKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722511D4F260A002B398B /* GPUImageChromaKeyFilter.m */; }; + 843723BF1D4F260A002B398B /* GPUImageClosingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722521D4F260A002B398B /* GPUImageClosingFilter.h */; }; + 843723C01D4F260A002B398B /* GPUImageClosingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722531D4F260A002B398B /* GPUImageClosingFilter.m */; }; + 843723C11D4F260A002B398B /* GPUImageColorBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722541D4F260A002B398B /* GPUImageColorBlendFilter.h */; }; + 843723C21D4F260A002B398B /* GPUImageColorBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722551D4F260A002B398B /* GPUImageColorBlendFilter.m */; }; + 843723C31D4F260A002B398B /* GPUImageColorBurnBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722561D4F260A002B398B /* GPUImageColorBurnBlendFilter.h */; }; + 843723C41D4F260A002B398B /* GPUImageColorBurnBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722571D4F260A002B398B /* GPUImageColorBurnBlendFilter.m */; }; + 843723C51D4F260A002B398B /* GPUImageColorConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722581D4F260A002B398B /* GPUImageColorConversion.h */; }; + 843723C61D4F260A002B398B /* GPUImageColorConversion.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722591D4F260A002B398B /* GPUImageColorConversion.m */; }; + 843723C71D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437225A1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h */; }; + 843723C81D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437225B1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m */; }; + 843723C91D4F260A002B398B /* GPUImageColorInvertFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437225C1D4F260A002B398B /* GPUImageColorInvertFilter.h */; }; + 843723CA1D4F260A002B398B /* GPUImageColorInvertFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437225D1D4F260A002B398B /* GPUImageColorInvertFilter.m */; }; + 843723CB1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437225E1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h */; }; + 843723CC1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437225F1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m */; }; + 843723CD1D4F260A002B398B /* GPUImageColorMatrixFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722601D4F260A002B398B /* GPUImageColorMatrixFilter.h */; }; + 843723CE1D4F260A002B398B /* GPUImageColorMatrixFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722611D4F260A002B398B /* GPUImageColorMatrixFilter.m */; }; + 843723CF1D4F260A002B398B /* GPUImageColorPackingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722621D4F260A002B398B /* GPUImageColorPackingFilter.h */; }; + 843723D01D4F260A002B398B /* GPUImageColorPackingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722631D4F260A002B398B /* GPUImageColorPackingFilter.m */; }; + 843723D11D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722641D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h */; }; + 843723D21D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722651D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m */; }; + 843723D31D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722661D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h */; }; + 843723D41D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722671D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m */; }; + 843723D51D4F260A002B398B /* GPUImageContrastFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722681D4F260A002B398B /* GPUImageContrastFilter.h */; }; + 843723D61D4F260A002B398B /* GPUImageContrastFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722691D4F260A002B398B /* GPUImageContrastFilter.m */; }; + 843723D71D4F260A002B398B /* GPUImageCropFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437226A1D4F260A002B398B /* GPUImageCropFilter.h */; }; + 843723D81D4F260A002B398B /* GPUImageCropFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437226B1D4F260A002B398B /* GPUImageCropFilter.m */; }; + 843723D91D4F260A002B398B /* GPUImageCrosshairGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437226C1D4F260A002B398B /* GPUImageCrosshairGenerator.h */; }; + 843723DA1D4F260A002B398B /* GPUImageCrosshairGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437226D1D4F260A002B398B /* GPUImageCrosshairGenerator.m */; }; + 843723DB1D4F260A002B398B /* GPUImageCrosshatchFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437226E1D4F260A002B398B /* GPUImageCrosshatchFilter.h */; }; + 843723DC1D4F260A002B398B /* GPUImageCrosshatchFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437226F1D4F260A002B398B /* GPUImageCrosshatchFilter.m */; }; + 843723DD1D4F260A002B398B /* GPUImageDarkenBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722701D4F260A002B398B /* GPUImageDarkenBlendFilter.h */; }; + 843723DE1D4F260A002B398B /* GPUImageDarkenBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722711D4F260A002B398B /* GPUImageDarkenBlendFilter.m */; }; + 843723DF1D4F260A002B398B /* GPUImageDifferenceBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722721D4F260A002B398B /* GPUImageDifferenceBlendFilter.h */; }; + 843723E01D4F260A002B398B /* GPUImageDifferenceBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722731D4F260A002B398B /* GPUImageDifferenceBlendFilter.m */; }; + 843723E11D4F260A002B398B /* GPUImageDilationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722741D4F260A002B398B /* GPUImageDilationFilter.h */; }; + 843723E21D4F260A002B398B /* GPUImageDilationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722751D4F260A002B398B /* GPUImageDilationFilter.m */; }; + 843723E31D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722761D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h */; }; + 843723E41D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722771D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m */; }; + 843723E51D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722781D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h */; }; + 843723E61D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722791D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m */; }; + 843723E71D4F260A002B398B /* GPUImageDissolveBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437227A1D4F260A002B398B /* GPUImageDissolveBlendFilter.h */; }; + 843723E81D4F260A002B398B /* GPUImageDissolveBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437227B1D4F260A002B398B /* GPUImageDissolveBlendFilter.m */; }; + 843723E91D4F260A002B398B /* GPUImageDivideBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437227C1D4F260A002B398B /* GPUImageDivideBlendFilter.h */; }; + 843723EA1D4F260A002B398B /* GPUImageDivideBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437227D1D4F260A002B398B /* GPUImageDivideBlendFilter.m */; }; + 843723EB1D4F260A002B398B /* GPUImageEmbossFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437227E1D4F260A002B398B /* GPUImageEmbossFilter.h */; }; + 843723EC1D4F260A002B398B /* GPUImageEmbossFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437227F1D4F260A002B398B /* GPUImageEmbossFilter.m */; }; + 843723ED1D4F260A002B398B /* GPUImageErosionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722801D4F260A002B398B /* GPUImageErosionFilter.h */; }; + 843723EE1D4F260A002B398B /* GPUImageErosionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722811D4F260A002B398B /* GPUImageErosionFilter.m */; }; + 843723EF1D4F260A002B398B /* GPUImageExclusionBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722821D4F260A002B398B /* GPUImageExclusionBlendFilter.h */; }; + 843723F01D4F260A002B398B /* GPUImageExclusionBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722831D4F260A002B398B /* GPUImageExclusionBlendFilter.m */; }; + 843723F11D4F260A002B398B /* GPUImageExposureFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722841D4F260A002B398B /* GPUImageExposureFilter.h */; }; + 843723F21D4F260A002B398B /* GPUImageExposureFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722851D4F260A002B398B /* GPUImageExposureFilter.m */; }; + 843723F31D4F260A002B398B /* GPUImageFalseColorFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722861D4F260A002B398B /* GPUImageFalseColorFilter.h */; }; + 843723F41D4F260A002B398B /* GPUImageFalseColorFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722871D4F260A002B398B /* GPUImageFalseColorFilter.m */; }; + 843723F51D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722881D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h */; }; + 843723F61D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722891D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m */; }; + 843723F71D4F260A002B398B /* GPUImageFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437228A1D4F260A002B398B /* GPUImageFilter.h */; }; + 843723F81D4F260A002B398B /* GPUImageFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437228B1D4F260A002B398B /* GPUImageFilter.m */; }; + 843723F91D4F260A002B398B /* GPUImageFilterGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437228C1D4F260A002B398B /* GPUImageFilterGroup.h */; }; + 843723FA1D4F260A002B398B /* GPUImageFilterGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437228D1D4F260A002B398B /* GPUImageFilterGroup.m */; }; + 843723FB1D4F260A002B398B /* GPUImageFilterPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437228E1D4F260A002B398B /* GPUImageFilterPipeline.h */; }; + 843723FC1D4F260A002B398B /* GPUImageFilterPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437228F1D4F260A002B398B /* GPUImageFilterPipeline.m */; }; + 843723FD1D4F260A002B398B /* GPUImageFourInputFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722901D4F260A002B398B /* GPUImageFourInputFilter.h */; }; + 843723FE1D4F260A002B398B /* GPUImageFourInputFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722911D4F260A002B398B /* GPUImageFourInputFilter.m */; }; + 843723FF1D4F260A002B398B /* GPUImageFramebuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722921D4F260A002B398B /* GPUImageFramebuffer.h */; }; + 843724001D4F260A002B398B /* GPUImageFramebuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722931D4F260A002B398B /* GPUImageFramebuffer.m */; }; + 843724011D4F260A002B398B /* GPUImageFramebufferCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722941D4F260A002B398B /* GPUImageFramebufferCache.h */; }; + 843724021D4F260A002B398B /* GPUImageFramebufferCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722951D4F260A002B398B /* GPUImageFramebufferCache.m */; }; + 843724031D4F260A002B398B /* GPUImageGammaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722961D4F260A002B398B /* GPUImageGammaFilter.h */; }; + 843724041D4F260A002B398B /* GPUImageGammaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722971D4F260A002B398B /* GPUImageGammaFilter.m */; }; + 843724051D4F260A002B398B /* GPUImageGaussianBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722981D4F260A002B398B /* GPUImageGaussianBlurFilter.h */; }; + 843724061D4F260A002B398B /* GPUImageGaussianBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722991D4F260A002B398B /* GPUImageGaussianBlurFilter.m */; }; + 843724071D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437229A1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h */; }; + 843724081D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437229B1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m */; }; + 843724091D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437229C1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h */; }; + 8437240A1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437229D1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m */; }; + 8437240B1D4F260A002B398B /* GPUImageGlassSphereFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437229E1D4F260A002B398B /* GPUImageGlassSphereFilter.h */; }; + 8437240C1D4F260A002B398B /* GPUImageGlassSphereFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437229F1D4F260A002B398B /* GPUImageGlassSphereFilter.m */; }; + 8437240D1D4F260A002B398B /* GPUImageGrayscaleFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A01D4F260A002B398B /* GPUImageGrayscaleFilter.h */; }; + 8437240E1D4F260A002B398B /* GPUImageGrayscaleFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A11D4F260A002B398B /* GPUImageGrayscaleFilter.m */; }; + 8437240F1D4F260A002B398B /* GPUImageHalftoneFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A21D4F260A002B398B /* GPUImageHalftoneFilter.h */; }; + 843724101D4F260A002B398B /* GPUImageHalftoneFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A31D4F260A002B398B /* GPUImageHalftoneFilter.m */; }; + 843724111D4F260A002B398B /* GPUImageHardLightBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A41D4F260A002B398B /* GPUImageHardLightBlendFilter.h */; }; + 843724121D4F260A002B398B /* GPUImageHardLightBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A51D4F260A002B398B /* GPUImageHardLightBlendFilter.m */; }; + 843724131D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A61D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h */; }; + 843724141D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A71D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m */; }; + 843724151D4F260A002B398B /* GPUImageHazeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A81D4F260A002B398B /* GPUImageHazeFilter.h */; }; + 843724161D4F260A002B398B /* GPUImageHazeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A91D4F260A002B398B /* GPUImageHazeFilter.m */; }; + 843724171D4F260A002B398B /* GPUImageHighlightShadowFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722AA1D4F260A002B398B /* GPUImageHighlightShadowFilter.h */; }; + 843724181D4F260A002B398B /* GPUImageHighlightShadowFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722AB1D4F260A002B398B /* GPUImageHighlightShadowFilter.m */; }; + 843724191D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722AC1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h */; }; + 8437241A1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722AD1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m */; }; + 8437241B1D4F260A002B398B /* GPUImageHighPassFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722AE1D4F260A002B398B /* GPUImageHighPassFilter.h */; }; + 8437241C1D4F260A002B398B /* GPUImageHighPassFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722AF1D4F260A002B398B /* GPUImageHighPassFilter.m */; }; + 8437241D1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B01D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h */; }; + 8437241E1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B11D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m */; }; + 8437241F1D4F260A002B398B /* GPUImageHistogramFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B21D4F260A002B398B /* GPUImageHistogramFilter.h */; }; + 843724201D4F260A002B398B /* GPUImageHistogramFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B31D4F260A002B398B /* GPUImageHistogramFilter.m */; }; + 843724211D4F260A002B398B /* GPUImageHistogramGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B41D4F260A002B398B /* GPUImageHistogramGenerator.h */; }; + 843724221D4F260A002B398B /* GPUImageHistogramGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B51D4F260A002B398B /* GPUImageHistogramGenerator.m */; }; + 843724231D4F260A002B398B /* GPUImageHoughTransformLineDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B61D4F260A002B398B /* GPUImageHoughTransformLineDetector.h */; }; + 843724241D4F260A002B398B /* GPUImageHoughTransformLineDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B71D4F260A002B398B /* GPUImageHoughTransformLineDetector.m */; }; + 843724251D4F260A002B398B /* GPUImageHSBFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B81D4F260A002B398B /* GPUImageHSBFilter.h */; }; + 843724261D4F260A002B398B /* GPUImageHSBFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B91D4F260A002B398B /* GPUImageHSBFilter.m */; }; + 843724271D4F260A002B398B /* GPUImageHueBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722BA1D4F260A002B398B /* GPUImageHueBlendFilter.h */; }; + 843724281D4F260A002B398B /* GPUImageHueBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722BB1D4F260A002B398B /* GPUImageHueBlendFilter.m */; }; + 843724291D4F260A002B398B /* GPUImageHueFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722BC1D4F260A002B398B /* GPUImageHueFilter.h */; }; + 8437242A1D4F260A002B398B /* GPUImageHueFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722BD1D4F260A002B398B /* GPUImageHueFilter.m */; }; + 8437242B1D4F260A002B398B /* GPUImageiOSBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722BE1D4F260A002B398B /* GPUImageiOSBlurFilter.h */; }; + 8437242C1D4F260A002B398B /* GPUImageiOSBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722BF1D4F260A002B398B /* GPUImageiOSBlurFilter.m */; }; + 8437242D1D4F260A002B398B /* GPUImageJFAVoronoiFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C01D4F260A002B398B /* GPUImageJFAVoronoiFilter.h */; }; + 8437242E1D4F260A002B398B /* GPUImageJFAVoronoiFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C11D4F260A002B398B /* GPUImageJFAVoronoiFilter.m */; }; + 8437242F1D4F260A002B398B /* GPUImageKuwaharaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C21D4F260A002B398B /* GPUImageKuwaharaFilter.h */; }; + 843724301D4F260A002B398B /* GPUImageKuwaharaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C31D4F260A002B398B /* GPUImageKuwaharaFilter.m */; }; + 843724311D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C41D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h */; }; + 843724321D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C51D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m */; }; + 843724331D4F260A002B398B /* GPUImageLanczosResamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C61D4F260A002B398B /* GPUImageLanczosResamplingFilter.h */; }; + 843724341D4F260A002B398B /* GPUImageLanczosResamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C71D4F260A002B398B /* GPUImageLanczosResamplingFilter.m */; }; + 843724351D4F260A002B398B /* GPUImageLaplacianFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C81D4F260A002B398B /* GPUImageLaplacianFilter.h */; }; + 843724361D4F260A002B398B /* GPUImageLaplacianFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C91D4F260A002B398B /* GPUImageLaplacianFilter.m */; }; + 843724371D4F260A002B398B /* GPUImageLevelsFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722CA1D4F260A002B398B /* GPUImageLevelsFilter.h */; }; + 843724381D4F260A002B398B /* GPUImageLevelsFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722CB1D4F260A002B398B /* GPUImageLevelsFilter.m */; }; + 843724391D4F260A002B398B /* GPUImageLightenBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722CC1D4F260A002B398B /* GPUImageLightenBlendFilter.h */; }; + 8437243A1D4F260A002B398B /* GPUImageLightenBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722CD1D4F260A002B398B /* GPUImageLightenBlendFilter.m */; }; + 8437243B1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722CE1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h */; }; + 8437243C1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722CF1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m */; }; + 8437243D1D4F260A002B398B /* GPUImageLineGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D01D4F260A002B398B /* GPUImageLineGenerator.h */; }; + 8437243E1D4F260A002B398B /* GPUImageLineGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D11D4F260A002B398B /* GPUImageLineGenerator.m */; }; + 8437243F1D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D21D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h */; }; + 843724401D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D31D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m */; }; + 843724411D4F260A002B398B /* GPUImageLookupFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D41D4F260A002B398B /* GPUImageLookupFilter.h */; }; + 843724421D4F260A002B398B /* GPUImageLookupFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D51D4F260A002B398B /* GPUImageLookupFilter.m */; }; + 843724431D4F260A002B398B /* GPUImageLowPassFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D61D4F260A002B398B /* GPUImageLowPassFilter.h */; }; + 843724441D4F260A002B398B /* GPUImageLowPassFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D71D4F260A002B398B /* GPUImageLowPassFilter.m */; }; + 843724451D4F260A002B398B /* GPUImageLuminanceRangeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D81D4F260A002B398B /* GPUImageLuminanceRangeFilter.h */; }; + 843724461D4F260A002B398B /* GPUImageLuminanceRangeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D91D4F260A002B398B /* GPUImageLuminanceRangeFilter.m */; }; + 843724471D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722DA1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h */; }; + 843724481D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722DB1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m */; }; + 843724491D4F260A002B398B /* GPUImageLuminosity.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722DC1D4F260A002B398B /* GPUImageLuminosity.h */; }; + 8437244A1D4F260A002B398B /* GPUImageLuminosity.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722DD1D4F260A002B398B /* GPUImageLuminosity.m */; }; + 8437244B1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722DE1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h */; }; + 8437244C1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722DF1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m */; }; + 8437244D1D4F260A002B398B /* GPUImageMaskFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E01D4F260A002B398B /* GPUImageMaskFilter.h */; }; + 8437244E1D4F260A002B398B /* GPUImageMaskFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E11D4F260A002B398B /* GPUImageMaskFilter.m */; }; + 8437244F1D4F260A002B398B /* GPUImageMedianFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E21D4F260A002B398B /* GPUImageMedianFilter.h */; }; + 843724501D4F260A002B398B /* GPUImageMedianFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E31D4F260A002B398B /* GPUImageMedianFilter.m */; }; + 843724511D4F260A002B398B /* GPUImageMissEtikateFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E41D4F260A002B398B /* GPUImageMissEtikateFilter.h */; }; + 843724521D4F260A002B398B /* GPUImageMissEtikateFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E51D4F260A002B398B /* GPUImageMissEtikateFilter.m */; }; + 843724531D4F260A002B398B /* GPUImageMonochromeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E61D4F260A002B398B /* GPUImageMonochromeFilter.h */; }; + 843724541D4F260A002B398B /* GPUImageMonochromeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E71D4F260A002B398B /* GPUImageMonochromeFilter.m */; }; + 843724551D4F260A002B398B /* GPUImageMosaicFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E81D4F260A002B398B /* GPUImageMosaicFilter.h */; }; + 843724561D4F260A002B398B /* GPUImageMosaicFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E91D4F260A002B398B /* GPUImageMosaicFilter.m */; }; + 843724571D4F260A002B398B /* GPUImageMotionBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722EA1D4F260A002B398B /* GPUImageMotionBlurFilter.h */; }; + 843724581D4F260A002B398B /* GPUImageMotionBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722EB1D4F260A002B398B /* GPUImageMotionBlurFilter.m */; }; + 843724591D4F260A002B398B /* GPUImageMotionDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722EC1D4F260A002B398B /* GPUImageMotionDetector.h */; }; + 8437245A1D4F260A002B398B /* GPUImageMotionDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722ED1D4F260A002B398B /* GPUImageMotionDetector.m */; }; + 8437245B1D4F260A002B398B /* GPUImageMovie.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722EE1D4F260A002B398B /* GPUImageMovie.h */; }; + 8437245C1D4F260A002B398B /* GPUImageMovie.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722EF1D4F260A002B398B /* GPUImageMovie.m */; }; + 8437245D1D4F260A002B398B /* GPUImageMovieComposition.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F01D4F260A002B398B /* GPUImageMovieComposition.h */; }; + 8437245E1D4F260A002B398B /* GPUImageMovieComposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F11D4F260A002B398B /* GPUImageMovieComposition.m */; }; + 8437245F1D4F260A002B398B /* GPUImageMultiplyBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F21D4F260A002B398B /* GPUImageMultiplyBlendFilter.h */; }; + 843724601D4F260A002B398B /* GPUImageMultiplyBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F31D4F260A002B398B /* GPUImageMultiplyBlendFilter.m */; }; + 843724611D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F41D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h */; }; + 843724621D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F51D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m */; }; + 843724631D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F61D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h */; }; + 843724641D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F71D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m */; }; + 843724651D4F260A002B398B /* GPUImageNormalBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F81D4F260A002B398B /* GPUImageNormalBlendFilter.h */; }; + 843724661D4F260A002B398B /* GPUImageNormalBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F91D4F260A002B398B /* GPUImageNormalBlendFilter.m */; }; + 843724671D4F260A002B398B /* GPUImageOpacityFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722FA1D4F260A002B398B /* GPUImageOpacityFilter.h */; }; + 843724681D4F260A002B398B /* GPUImageOpacityFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722FB1D4F260A002B398B /* GPUImageOpacityFilter.m */; }; + 843724691D4F260A002B398B /* GPUImageOpeningFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722FC1D4F260A002B398B /* GPUImageOpeningFilter.h */; }; + 8437246A1D4F260A002B398B /* GPUImageOpeningFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722FD1D4F260A002B398B /* GPUImageOpeningFilter.m */; }; + 8437246B1D4F260A002B398B /* GPUImageOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722FE1D4F260A002B398B /* GPUImageOutput.h */; }; + 8437246C1D4F260A002B398B /* GPUImageOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722FF1D4F260A002B398B /* GPUImageOutput.m */; }; + 8437246D1D4F260A002B398B /* GPUImageOverlayBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723001D4F260A002B398B /* GPUImageOverlayBlendFilter.h */; }; + 8437246E1D4F260A002B398B /* GPUImageOverlayBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723011D4F260A002B398B /* GPUImageOverlayBlendFilter.m */; }; + 8437246F1D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723021D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h */; }; + 843724701D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723031D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m */; }; + 843724711D4F260A002B398B /* GPUImagePerlinNoiseFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723041D4F260A002B398B /* GPUImagePerlinNoiseFilter.h */; }; + 843724721D4F260A002B398B /* GPUImagePerlinNoiseFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723051D4F260A002B398B /* GPUImagePerlinNoiseFilter.m */; }; + 843724731D4F260A002B398B /* GPUImagePinchDistortionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723061D4F260A002B398B /* GPUImagePinchDistortionFilter.h */; }; + 843724741D4F260A002B398B /* GPUImagePinchDistortionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723071D4F260A002B398B /* GPUImagePinchDistortionFilter.m */; }; + 843724751D4F260A002B398B /* GPUImagePixellateFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723081D4F260A002B398B /* GPUImagePixellateFilter.h */; }; + 843724761D4F260A002B398B /* GPUImagePixellateFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723091D4F260A002B398B /* GPUImagePixellateFilter.m */; }; + 843724771D4F260A002B398B /* GPUImagePixellatePositionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437230A1D4F260A002B398B /* GPUImagePixellatePositionFilter.h */; }; + 843724781D4F260A002B398B /* GPUImagePixellatePositionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437230B1D4F260A002B398B /* GPUImagePixellatePositionFilter.m */; }; + 843724791D4F260A002B398B /* GPUImagePoissonBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437230C1D4F260A002B398B /* GPUImagePoissonBlendFilter.h */; }; + 8437247A1D4F260A002B398B /* GPUImagePoissonBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437230D1D4F260A002B398B /* GPUImagePoissonBlendFilter.m */; }; + 8437247B1D4F260A002B398B /* GPUImagePolarPixellateFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437230E1D4F260A002B398B /* GPUImagePolarPixellateFilter.h */; }; + 8437247C1D4F260A002B398B /* GPUImagePolarPixellateFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437230F1D4F260A002B398B /* GPUImagePolarPixellateFilter.m */; }; + 8437247D1D4F260A002B398B /* GPUImagePolkaDotFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723101D4F260A002B398B /* GPUImagePolkaDotFilter.h */; }; + 8437247E1D4F260A002B398B /* GPUImagePolkaDotFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723111D4F260A002B398B /* GPUImagePolkaDotFilter.m */; }; + 8437247F1D4F260A002B398B /* GPUImagePosterizeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723121D4F260A002B398B /* GPUImagePosterizeFilter.h */; }; + 843724801D4F260A002B398B /* GPUImagePosterizeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723131D4F260A002B398B /* GPUImagePosterizeFilter.m */; }; + 843724811D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723141D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h */; }; + 843724821D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723151D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m */; }; + 843724831D4F260A002B398B /* GPUImageRawDataInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723161D4F260A002B398B /* GPUImageRawDataInput.h */; }; + 843724841D4F260A002B398B /* GPUImageRawDataInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723171D4F260A002B398B /* GPUImageRawDataInput.m */; }; + 843724851D4F260A002B398B /* GPUImageRawDataOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723181D4F260A002B398B /* GPUImageRawDataOutput.h */; }; + 843724861D4F260A002B398B /* GPUImageRawDataOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723191D4F260A002B398B /* GPUImageRawDataOutput.m */; }; + 843724871D4F260A002B398B /* GPUImageRGBClosingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437231A1D4F260A002B398B /* GPUImageRGBClosingFilter.h */; }; + 843724881D4F260A002B398B /* GPUImageRGBClosingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437231B1D4F260A002B398B /* GPUImageRGBClosingFilter.m */; }; + 843724891D4F260A002B398B /* GPUImageRGBDilationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437231C1D4F260A002B398B /* GPUImageRGBDilationFilter.h */; }; + 8437248A1D4F260A002B398B /* GPUImageRGBDilationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437231D1D4F260A002B398B /* GPUImageRGBDilationFilter.m */; }; + 8437248B1D4F260A002B398B /* GPUImageRGBErosionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437231E1D4F260A002B398B /* GPUImageRGBErosionFilter.h */; }; + 8437248C1D4F260A002B398B /* GPUImageRGBErosionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437231F1D4F260A002B398B /* GPUImageRGBErosionFilter.m */; }; + 8437248D1D4F260A002B398B /* GPUImageRGBFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723201D4F260A002B398B /* GPUImageRGBFilter.h */; }; + 8437248E1D4F260A002B398B /* GPUImageRGBFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723211D4F260A002B398B /* GPUImageRGBFilter.m */; }; + 8437248F1D4F260A002B398B /* GPUImageRGBOpeningFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723221D4F260A002B398B /* GPUImageRGBOpeningFilter.h */; }; + 843724901D4F260A002B398B /* GPUImageRGBOpeningFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723231D4F260A002B398B /* GPUImageRGBOpeningFilter.m */; }; + 843724911D4F260A002B398B /* GPUImageSaturationBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723241D4F260A002B398B /* GPUImageSaturationBlendFilter.h */; }; + 843724921D4F260A002B398B /* GPUImageSaturationBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723251D4F260A002B398B /* GPUImageSaturationBlendFilter.m */; }; + 843724931D4F260A002B398B /* GPUImageSaturationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723261D4F260A002B398B /* GPUImageSaturationFilter.h */; }; + 843724941D4F260A002B398B /* GPUImageSaturationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723271D4F260A002B398B /* GPUImageSaturationFilter.m */; }; + 843724951D4F260A002B398B /* GPUImageScreenBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723281D4F260A002B398B /* GPUImageScreenBlendFilter.h */; }; + 843724961D4F260A002B398B /* GPUImageScreenBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723291D4F260A002B398B /* GPUImageScreenBlendFilter.m */; }; + 843724971D4F260A002B398B /* GPUImageSepiaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437232A1D4F260A002B398B /* GPUImageSepiaFilter.h */; }; + 843724981D4F260A002B398B /* GPUImageSepiaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437232B1D4F260A002B398B /* GPUImageSepiaFilter.m */; }; + 843724991D4F260A002B398B /* GPUImageSharpenFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437232C1D4F260A002B398B /* GPUImageSharpenFilter.h */; }; + 8437249A1D4F260A002B398B /* GPUImageSharpenFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437232D1D4F260A002B398B /* GPUImageSharpenFilter.m */; }; + 8437249B1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437232E1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h */; }; + 8437249C1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437232F1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m */; }; + 8437249D1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723301D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h */; }; + 8437249E1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723311D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m */; }; + 8437249F1D4F260A002B398B /* GPUImageSketchFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723321D4F260A002B398B /* GPUImageSketchFilter.h */; }; + 843724A01D4F260A002B398B /* GPUImageSketchFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723331D4F260A002B398B /* GPUImageSketchFilter.m */; }; + 843724A11D4F260A002B398B /* GPUImageSkinToneFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723341D4F260A002B398B /* GPUImageSkinToneFilter.h */; }; + 843724A21D4F260A002B398B /* GPUImageSkinToneFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723351D4F260A002B398B /* GPUImageSkinToneFilter.m */; }; + 843724A31D4F260A002B398B /* GPUImageSmoothToonFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723361D4F260A002B398B /* GPUImageSmoothToonFilter.h */; }; + 843724A41D4F260A002B398B /* GPUImageSmoothToonFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723371D4F260A002B398B /* GPUImageSmoothToonFilter.m */; }; + 843724A51D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723381D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h */; }; + 843724A61D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723391D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m */; }; + 843724A71D4F260A002B398B /* GPUImageSoftEleganceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437233A1D4F260A002B398B /* GPUImageSoftEleganceFilter.h */; }; + 843724A81D4F260A002B398B /* GPUImageSoftEleganceFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437233B1D4F260A002B398B /* GPUImageSoftEleganceFilter.m */; }; + 843724A91D4F260A002B398B /* GPUImageSoftLightBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437233C1D4F260A002B398B /* GPUImageSoftLightBlendFilter.h */; }; + 843724AA1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437233D1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m */; }; + 843724AB1D4F260A002B398B /* GPUImageSolarizeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437233E1D4F260A002B398B /* GPUImageSolarizeFilter.h */; }; + 843724AC1D4F260A002B398B /* GPUImageSolarizeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437233F1D4F260A002B398B /* GPUImageSolarizeFilter.m */; }; + 843724AD1D4F260A002B398B /* GPUImageSolidColorGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723401D4F260A002B398B /* GPUImageSolidColorGenerator.h */; }; + 843724AE1D4F260A002B398B /* GPUImageSolidColorGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723411D4F260A002B398B /* GPUImageSolidColorGenerator.m */; }; + 843724AF1D4F260A002B398B /* GPUImageSourceOverBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723421D4F260A002B398B /* GPUImageSourceOverBlendFilter.h */; }; + 843724B01D4F260A002B398B /* GPUImageSourceOverBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723431D4F260A002B398B /* GPUImageSourceOverBlendFilter.m */; }; + 843724B11D4F260A002B398B /* GPUImageSphereRefractionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723441D4F260A002B398B /* GPUImageSphereRefractionFilter.h */; }; + 843724B21D4F260A002B398B /* GPUImageSphereRefractionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723451D4F260A002B398B /* GPUImageSphereRefractionFilter.m */; }; + 843724B31D4F260A002B398B /* GPUImageStillCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723461D4F260A002B398B /* GPUImageStillCamera.h */; }; + 843724B41D4F260A002B398B /* GPUImageStillCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723471D4F260A002B398B /* GPUImageStillCamera.m */; }; + 843724B51D4F260A002B398B /* GPUImageStretchDistortionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723481D4F260A002B398B /* GPUImageStretchDistortionFilter.h */; }; + 843724B61D4F260A002B398B /* GPUImageStretchDistortionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723491D4F260A002B398B /* GPUImageStretchDistortionFilter.m */; }; + 843724B71D4F260A002B398B /* GPUImageSubtractBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437234A1D4F260A002B398B /* GPUImageSubtractBlendFilter.h */; }; + 843724B81D4F260A002B398B /* GPUImageSubtractBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437234B1D4F260A002B398B /* GPUImageSubtractBlendFilter.m */; }; + 843724B91D4F260A002B398B /* GPUImageSwirlFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437234C1D4F260A002B398B /* GPUImageSwirlFilter.h */; }; + 843724BA1D4F260A002B398B /* GPUImageSwirlFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437234D1D4F260A002B398B /* GPUImageSwirlFilter.m */; }; + 843724BB1D4F260A002B398B /* GPUImageTextureInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437234E1D4F260A002B398B /* GPUImageTextureInput.h */; }; + 843724BC1D4F260A002B398B /* GPUImageTextureInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437234F1D4F260A002B398B /* GPUImageTextureInput.m */; }; + 843724BD1D4F260A002B398B /* GPUImageTextureOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723501D4F260A002B398B /* GPUImageTextureOutput.h */; }; + 843724BE1D4F260A002B398B /* GPUImageTextureOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723511D4F260A002B398B /* GPUImageTextureOutput.m */; }; + 843724BF1D4F260A002B398B /* GPUImageThreeInputFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723521D4F260A002B398B /* GPUImageThreeInputFilter.h */; }; + 843724C01D4F260A002B398B /* GPUImageThreeInputFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723531D4F260A002B398B /* GPUImageThreeInputFilter.m */; }; + 843724C11D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723541D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h */; }; + 843724C21D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723551D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m */; }; + 843724C31D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723561D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h */; }; + 843724C41D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723571D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m */; }; + 843724C51D4F260A002B398B /* GPUImageThresholdSketchFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723581D4F260A002B398B /* GPUImageThresholdSketchFilter.h */; }; + 843724C61D4F260A002B398B /* GPUImageThresholdSketchFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723591D4F260A002B398B /* GPUImageThresholdSketchFilter.m */; }; + 843724C71D4F260A002B398B /* GPUImageTiltShiftFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437235A1D4F260A002B398B /* GPUImageTiltShiftFilter.h */; }; + 843724C81D4F260A002B398B /* GPUImageTiltShiftFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437235B1D4F260A002B398B /* GPUImageTiltShiftFilter.m */; }; + 843724C91D4F260A002B398B /* GPUImageToneCurveFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437235C1D4F260A002B398B /* GPUImageToneCurveFilter.h */; }; + 843724CA1D4F260A002B398B /* GPUImageToneCurveFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437235D1D4F260A002B398B /* GPUImageToneCurveFilter.m */; }; + 843724CB1D4F260A002B398B /* GPUImageToonFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437235E1D4F260A002B398B /* GPUImageToonFilter.h */; }; + 843724CC1D4F260A002B398B /* GPUImageToonFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437235F1D4F260A002B398B /* GPUImageToonFilter.m */; }; + 843724CD1D4F260A002B398B /* GPUImageTransformFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723601D4F260A002B398B /* GPUImageTransformFilter.h */; }; + 843724CE1D4F260A002B398B /* GPUImageTransformFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723611D4F260A002B398B /* GPUImageTransformFilter.m */; }; + 843724CF1D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723621D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h */; }; + 843724D01D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723631D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m */; }; + 843724D11D4F260A002B398B /* GPUImageTwoInputFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723641D4F260A002B398B /* GPUImageTwoInputFilter.h */; }; + 843724D21D4F260A002B398B /* GPUImageTwoInputFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723651D4F260A002B398B /* GPUImageTwoInputFilter.m */; }; + 843724D31D4F260A002B398B /* GPUImageTwoPassFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723661D4F260A002B398B /* GPUImageTwoPassFilter.h */; }; + 843724D41D4F260A002B398B /* GPUImageTwoPassFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723671D4F260A002B398B /* GPUImageTwoPassFilter.m */; }; + 843724D51D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723681D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h */; }; + 843724D61D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723691D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m */; }; + 843724D71D4F260A002B398B /* GPUImageUIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437236A1D4F260A002B398B /* GPUImageUIElement.h */; }; + 843724D81D4F260A002B398B /* GPUImageUIElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437236B1D4F260A002B398B /* GPUImageUIElement.m */; }; + 843724D91D4F260A002B398B /* GPUImageUnsharpMaskFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437236C1D4F260A002B398B /* GPUImageUnsharpMaskFilter.h */; }; + 843724DA1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437236D1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m */; }; + 843724DB1D4F260A002B398B /* GPUImageVideoCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437236E1D4F260A002B398B /* GPUImageVideoCamera.h */; }; + 843724DC1D4F260A002B398B /* GPUImageVideoCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437236F1D4F260A002B398B /* GPUImageVideoCamera.m */; }; + 843724DD1D4F260A002B398B /* GPUImageVignetteFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723701D4F260A002B398B /* GPUImageVignetteFilter.h */; }; + 843724DE1D4F260A002B398B /* GPUImageVignetteFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723711D4F260A002B398B /* GPUImageVignetteFilter.m */; }; + 843724DF1D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723721D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h */; }; + 843724E01D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723731D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m */; }; + 843724E11D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723741D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h */; }; + 843724E21D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723751D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m */; }; + 843724E31D4F260A002B398B /* GPUImageWhiteBalanceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723761D4F260A002B398B /* GPUImageWhiteBalanceFilter.h */; }; + 843724E41D4F260A002B398B /* GPUImageWhiteBalanceFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723771D4F260A002B398B /* GPUImageWhiteBalanceFilter.m */; }; + 843724E51D4F260A002B398B /* GPUImageXYDerivativeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723781D4F260A002B398B /* GPUImageXYDerivativeFilter.h */; }; + 843724E61D4F260A002B398B /* GPUImageXYDerivativeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723791D4F260A002B398B /* GPUImageXYDerivativeFilter.m */; }; + 843724E71D4F260A002B398B /* GPUImageZoomBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437237A1D4F260A002B398B /* GPUImageZoomBlurFilter.h */; }; + 843724E81D4F260A002B398B /* GPUImageZoomBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437237B1D4F260A002B398B /* GPUImageZoomBlurFilter.m */; }; + 843724E91D4F260A002B398B /* GPUImageFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437237E1D4F260A002B398B /* GPUImageFramework.h */; }; + 843724EA1D4F260A002B398B /* GPUImageContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437237F1D4F260A002B398B /* GPUImageContext.h */; }; + 843724EB1D4F260A002B398B /* GPUImageContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723801D4F260A002B398B /* GPUImageContext.m */; }; + 843724EC1D4F260A002B398B /* GPUImageMovieWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723811D4F260A002B398B /* GPUImageMovieWriter.h */; }; + 843724ED1D4F260A002B398B /* GPUImageMovieWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723821D4F260A002B398B /* GPUImageMovieWriter.m */; }; + 843724EE1D4F260A002B398B /* GPUImagePicture+TextureSubimage.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723831D4F260A002B398B /* GPUImagePicture+TextureSubimage.h */; }; + 843724EF1D4F260A002B398B /* GPUImagePicture+TextureSubimage.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723841D4F260A002B398B /* GPUImagePicture+TextureSubimage.m */; }; + 843724F01D4F260A002B398B /* GPUImagePicture.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723851D4F260A002B398B /* GPUImagePicture.h */; }; + 843724F11D4F260A002B398B /* GPUImagePicture.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723861D4F260A002B398B /* GPUImagePicture.m */; }; + 843724F21D4F260A002B398B /* GPUImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723871D4F260A002B398B /* GPUImageView.h */; }; + 843724F31D4F260A002B398B /* GPUImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723881D4F260A002B398B /* GPUImageView.m */; }; + 843724F41D4F260A002B398B /* amf.c in Sources */ = {isa = PBXBuildFile; fileRef = 8437238A1D4F260A002B398B /* amf.c */; }; + 843724F51D4F260A002B398B /* amf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238B1D4F260A002B398B /* amf.h */; }; + 843724F61D4F260A002B398B /* bytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238C1D4F260A002B398B /* bytes.h */; }; + 843724F71D4F260A002B398B /* dh.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238D1D4F260A002B398B /* dh.h */; }; + 843724F81D4F260A002B398B /* dhgroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238E1D4F260A002B398B /* dhgroups.h */; }; + 843724F91D4F260A002B398B /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 8437238F1D4F260A002B398B /* error.c */; }; + 843724FA1D4F260A002B398B /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723901D4F260A002B398B /* error.h */; }; + 843724FB1D4F260A002B398B /* handshake.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723911D4F260A002B398B /* handshake.h */; }; + 843724FC1D4F260A002B398B /* hashswf.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723921D4F260A002B398B /* hashswf.c */; }; + 843724FD1D4F260A002B398B /* http.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723931D4F260A002B398B /* http.h */; }; + 843724FE1D4F260A002B398B /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723941D4F260A002B398B /* log.c */; }; + 843724FF1D4F260A002B398B /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723951D4F260A002B398B /* log.h */; }; + 843725001D4F260A002B398B /* parseurl.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723961D4F260A002B398B /* parseurl.c */; }; + 843725011D4F260A002B398B /* rtmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723971D4F260A002B398B /* rtmp.c */; }; + 843725021D4F260A002B398B /* rtmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723981D4F260A002B398B /* rtmp.h */; }; + 843725031D4F260A002B398B /* rtmp_sys.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723991D4F260A002B398B /* rtmp_sys.h */; }; B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; @@ -121,6 +482,368 @@ 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 8437222D1D4F260A002B398B /* GLProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLProgram.h; sourceTree = ""; }; + 8437222E1D4F260A002B398B /* GLProgram.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLProgram.m; sourceTree = ""; }; + 8437222F1D4F260A002B398B /* GPUImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImage.h; sourceTree = ""; }; + 843722301D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImage3x3ConvolutionFilter.h; sourceTree = ""; }; + 843722311D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImage3x3ConvolutionFilter.m; sourceTree = ""; }; + 843722321D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImage3x3TextureSamplingFilter.h; sourceTree = ""; }; + 843722331D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImage3x3TextureSamplingFilter.m; sourceTree = ""; }; + 843722341D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAdaptiveThresholdFilter.h; sourceTree = ""; }; + 843722351D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAdaptiveThresholdFilter.m; sourceTree = ""; }; + 843722361D4F260A002B398B /* GPUImageAddBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAddBlendFilter.h; sourceTree = ""; }; + 843722371D4F260A002B398B /* GPUImageAddBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAddBlendFilter.m; sourceTree = ""; }; + 843722381D4F260A002B398B /* GPUImageAlphaBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAlphaBlendFilter.h; sourceTree = ""; }; + 843722391D4F260A002B398B /* GPUImageAlphaBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAlphaBlendFilter.m; sourceTree = ""; }; + 8437223A1D4F260A002B398B /* GPUImageAmatorkaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAmatorkaFilter.h; sourceTree = ""; }; + 8437223B1D4F260A002B398B /* GPUImageAmatorkaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAmatorkaFilter.m; sourceTree = ""; }; + 8437223C1D4F260A002B398B /* GPUImageAverageColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAverageColor.h; sourceTree = ""; }; + 8437223D1D4F260A002B398B /* GPUImageAverageColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAverageColor.m; sourceTree = ""; }; + 8437223E1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAverageLuminanceThresholdFilter.h; sourceTree = ""; }; + 8437223F1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAverageLuminanceThresholdFilter.m; sourceTree = ""; }; + 843722401D4F260A002B398B /* GPUImageBilateralFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBilateralFilter.h; sourceTree = ""; }; + 843722411D4F260A002B398B /* GPUImageBilateralFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBilateralFilter.m; sourceTree = ""; }; + 843722421D4F260A002B398B /* GPUImageBoxBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBoxBlurFilter.h; sourceTree = ""; }; + 843722431D4F260A002B398B /* GPUImageBoxBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBoxBlurFilter.m; sourceTree = ""; }; + 843722441D4F260A002B398B /* GPUImageBrightnessFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBrightnessFilter.h; sourceTree = ""; }; + 843722451D4F260A002B398B /* GPUImageBrightnessFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBrightnessFilter.m; sourceTree = ""; }; + 843722461D4F260A002B398B /* GPUImageBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBuffer.h; sourceTree = ""; }; + 843722471D4F260A002B398B /* GPUImageBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBuffer.m; sourceTree = ""; }; + 843722481D4F260A002B398B /* GPUImageBulgeDistortionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBulgeDistortionFilter.h; sourceTree = ""; }; + 843722491D4F260A002B398B /* GPUImageBulgeDistortionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBulgeDistortionFilter.m; sourceTree = ""; }; + 8437224A1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCannyEdgeDetectionFilter.h; sourceTree = ""; }; + 8437224B1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCannyEdgeDetectionFilter.m; sourceTree = ""; }; + 8437224C1D4F260A002B398B /* GPUImageCGAColorspaceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCGAColorspaceFilter.h; sourceTree = ""; }; + 8437224D1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCGAColorspaceFilter.m; sourceTree = ""; }; + 8437224E1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageChromaKeyBlendFilter.h; sourceTree = ""; }; + 8437224F1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageChromaKeyBlendFilter.m; sourceTree = ""; }; + 843722501D4F260A002B398B /* GPUImageChromaKeyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageChromaKeyFilter.h; sourceTree = ""; }; + 843722511D4F260A002B398B /* GPUImageChromaKeyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageChromaKeyFilter.m; sourceTree = ""; }; + 843722521D4F260A002B398B /* GPUImageClosingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageClosingFilter.h; sourceTree = ""; }; + 843722531D4F260A002B398B /* GPUImageClosingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageClosingFilter.m; sourceTree = ""; }; + 843722541D4F260A002B398B /* GPUImageColorBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorBlendFilter.h; sourceTree = ""; }; + 843722551D4F260A002B398B /* GPUImageColorBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorBlendFilter.m; sourceTree = ""; }; + 843722561D4F260A002B398B /* GPUImageColorBurnBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorBurnBlendFilter.h; sourceTree = ""; }; + 843722571D4F260A002B398B /* GPUImageColorBurnBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorBurnBlendFilter.m; sourceTree = ""; }; + 843722581D4F260A002B398B /* GPUImageColorConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorConversion.h; sourceTree = ""; }; + 843722591D4F260A002B398B /* GPUImageColorConversion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorConversion.m; sourceTree = ""; }; + 8437225A1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorDodgeBlendFilter.h; sourceTree = ""; }; + 8437225B1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorDodgeBlendFilter.m; sourceTree = ""; }; + 8437225C1D4F260A002B398B /* GPUImageColorInvertFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorInvertFilter.h; sourceTree = ""; }; + 8437225D1D4F260A002B398B /* GPUImageColorInvertFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorInvertFilter.m; sourceTree = ""; }; + 8437225E1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorLocalBinaryPatternFilter.h; sourceTree = ""; }; + 8437225F1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorLocalBinaryPatternFilter.m; sourceTree = ""; }; + 843722601D4F260A002B398B /* GPUImageColorMatrixFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorMatrixFilter.h; sourceTree = ""; }; + 843722611D4F260A002B398B /* GPUImageColorMatrixFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorMatrixFilter.m; sourceTree = ""; }; + 843722621D4F260A002B398B /* GPUImageColorPackingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorPackingFilter.h; sourceTree = ""; }; + 843722631D4F260A002B398B /* GPUImageColorPackingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorPackingFilter.m; sourceTree = ""; }; + 843722641D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColourFASTFeatureDetector.h; sourceTree = ""; }; + 843722651D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColourFASTFeatureDetector.m; sourceTree = ""; }; + 843722661D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColourFASTSamplingOperation.h; sourceTree = ""; }; + 843722671D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColourFASTSamplingOperation.m; sourceTree = ""; }; + 843722681D4F260A002B398B /* GPUImageContrastFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageContrastFilter.h; sourceTree = ""; }; + 843722691D4F260A002B398B /* GPUImageContrastFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageContrastFilter.m; sourceTree = ""; }; + 8437226A1D4F260A002B398B /* GPUImageCropFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCropFilter.h; sourceTree = ""; }; + 8437226B1D4F260A002B398B /* GPUImageCropFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCropFilter.m; sourceTree = ""; }; + 8437226C1D4F260A002B398B /* GPUImageCrosshairGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCrosshairGenerator.h; sourceTree = ""; }; + 8437226D1D4F260A002B398B /* GPUImageCrosshairGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCrosshairGenerator.m; sourceTree = ""; }; + 8437226E1D4F260A002B398B /* GPUImageCrosshatchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCrosshatchFilter.h; sourceTree = ""; }; + 8437226F1D4F260A002B398B /* GPUImageCrosshatchFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCrosshatchFilter.m; sourceTree = ""; }; + 843722701D4F260A002B398B /* GPUImageDarkenBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDarkenBlendFilter.h; sourceTree = ""; }; + 843722711D4F260A002B398B /* GPUImageDarkenBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDarkenBlendFilter.m; sourceTree = ""; }; + 843722721D4F260A002B398B /* GPUImageDifferenceBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDifferenceBlendFilter.h; sourceTree = ""; }; + 843722731D4F260A002B398B /* GPUImageDifferenceBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDifferenceBlendFilter.m; sourceTree = ""; }; + 843722741D4F260A002B398B /* GPUImageDilationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDilationFilter.h; sourceTree = ""; }; + 843722751D4F260A002B398B /* GPUImageDilationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDilationFilter.m; sourceTree = ""; }; + 843722761D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDirectionalNonMaximumSuppressionFilter.h; sourceTree = ""; }; + 843722771D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDirectionalNonMaximumSuppressionFilter.m; sourceTree = ""; }; + 843722781D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDirectionalSobelEdgeDetectionFilter.h; sourceTree = ""; }; + 843722791D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDirectionalSobelEdgeDetectionFilter.m; sourceTree = ""; }; + 8437227A1D4F260A002B398B /* GPUImageDissolveBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDissolveBlendFilter.h; sourceTree = ""; }; + 8437227B1D4F260A002B398B /* GPUImageDissolveBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDissolveBlendFilter.m; sourceTree = ""; }; + 8437227C1D4F260A002B398B /* GPUImageDivideBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDivideBlendFilter.h; sourceTree = ""; }; + 8437227D1D4F260A002B398B /* GPUImageDivideBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDivideBlendFilter.m; sourceTree = ""; }; + 8437227E1D4F260A002B398B /* GPUImageEmbossFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageEmbossFilter.h; sourceTree = ""; }; + 8437227F1D4F260A002B398B /* GPUImageEmbossFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageEmbossFilter.m; sourceTree = ""; }; + 843722801D4F260A002B398B /* GPUImageErosionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageErosionFilter.h; sourceTree = ""; }; + 843722811D4F260A002B398B /* GPUImageErosionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageErosionFilter.m; sourceTree = ""; }; + 843722821D4F260A002B398B /* GPUImageExclusionBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageExclusionBlendFilter.h; sourceTree = ""; }; + 843722831D4F260A002B398B /* GPUImageExclusionBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageExclusionBlendFilter.m; sourceTree = ""; }; + 843722841D4F260A002B398B /* GPUImageExposureFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageExposureFilter.h; sourceTree = ""; }; + 843722851D4F260A002B398B /* GPUImageExposureFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageExposureFilter.m; sourceTree = ""; }; + 843722861D4F260A002B398B /* GPUImageFalseColorFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFalseColorFilter.h; sourceTree = ""; }; + 843722871D4F260A002B398B /* GPUImageFalseColorFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFalseColorFilter.m; sourceTree = ""; }; + 843722881D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFASTCornerDetectionFilter.h; sourceTree = ""; }; + 843722891D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFASTCornerDetectionFilter.m; sourceTree = ""; }; + 8437228A1D4F260A002B398B /* GPUImageFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFilter.h; sourceTree = ""; }; + 8437228B1D4F260A002B398B /* GPUImageFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFilter.m; sourceTree = ""; }; + 8437228C1D4F260A002B398B /* GPUImageFilterGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFilterGroup.h; sourceTree = ""; }; + 8437228D1D4F260A002B398B /* GPUImageFilterGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFilterGroup.m; sourceTree = ""; }; + 8437228E1D4F260A002B398B /* GPUImageFilterPipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFilterPipeline.h; sourceTree = ""; }; + 8437228F1D4F260A002B398B /* GPUImageFilterPipeline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFilterPipeline.m; sourceTree = ""; }; + 843722901D4F260A002B398B /* GPUImageFourInputFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFourInputFilter.h; sourceTree = ""; }; + 843722911D4F260A002B398B /* GPUImageFourInputFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFourInputFilter.m; sourceTree = ""; }; + 843722921D4F260A002B398B /* GPUImageFramebuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFramebuffer.h; sourceTree = ""; }; + 843722931D4F260A002B398B /* GPUImageFramebuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFramebuffer.m; sourceTree = ""; }; + 843722941D4F260A002B398B /* GPUImageFramebufferCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFramebufferCache.h; sourceTree = ""; }; + 843722951D4F260A002B398B /* GPUImageFramebufferCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFramebufferCache.m; sourceTree = ""; }; + 843722961D4F260A002B398B /* GPUImageGammaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGammaFilter.h; sourceTree = ""; }; + 843722971D4F260A002B398B /* GPUImageGammaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGammaFilter.m; sourceTree = ""; }; + 843722981D4F260A002B398B /* GPUImageGaussianBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGaussianBlurFilter.h; sourceTree = ""; }; + 843722991D4F260A002B398B /* GPUImageGaussianBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGaussianBlurFilter.m; sourceTree = ""; }; + 8437229A1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGaussianBlurPositionFilter.h; sourceTree = ""; }; + 8437229B1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGaussianBlurPositionFilter.m; sourceTree = ""; }; + 8437229C1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGaussianSelectiveBlurFilter.h; sourceTree = ""; }; + 8437229D1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGaussianSelectiveBlurFilter.m; sourceTree = ""; }; + 8437229E1D4F260A002B398B /* GPUImageGlassSphereFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGlassSphereFilter.h; sourceTree = ""; }; + 8437229F1D4F260A002B398B /* GPUImageGlassSphereFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGlassSphereFilter.m; sourceTree = ""; }; + 843722A01D4F260A002B398B /* GPUImageGrayscaleFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGrayscaleFilter.h; sourceTree = ""; }; + 843722A11D4F260A002B398B /* GPUImageGrayscaleFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGrayscaleFilter.m; sourceTree = ""; }; + 843722A21D4F260A002B398B /* GPUImageHalftoneFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHalftoneFilter.h; sourceTree = ""; }; + 843722A31D4F260A002B398B /* GPUImageHalftoneFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHalftoneFilter.m; sourceTree = ""; }; + 843722A41D4F260A002B398B /* GPUImageHardLightBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHardLightBlendFilter.h; sourceTree = ""; }; + 843722A51D4F260A002B398B /* GPUImageHardLightBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHardLightBlendFilter.m; sourceTree = ""; }; + 843722A61D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHarrisCornerDetectionFilter.h; sourceTree = ""; }; + 843722A71D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHarrisCornerDetectionFilter.m; sourceTree = ""; }; + 843722A81D4F260A002B398B /* GPUImageHazeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHazeFilter.h; sourceTree = ""; }; + 843722A91D4F260A002B398B /* GPUImageHazeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHazeFilter.m; sourceTree = ""; }; + 843722AA1D4F260A002B398B /* GPUImageHighlightShadowFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHighlightShadowFilter.h; sourceTree = ""; }; + 843722AB1D4F260A002B398B /* GPUImageHighlightShadowFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHighlightShadowFilter.m; sourceTree = ""; }; + 843722AC1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHighlightShadowTintFilter.h; sourceTree = ""; }; + 843722AD1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHighlightShadowTintFilter.m; sourceTree = ""; }; + 843722AE1D4F260A002B398B /* GPUImageHighPassFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHighPassFilter.h; sourceTree = ""; }; + 843722AF1D4F260A002B398B /* GPUImageHighPassFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHighPassFilter.m; sourceTree = ""; }; + 843722B01D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHistogramEqualizationFilter.h; sourceTree = ""; }; + 843722B11D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHistogramEqualizationFilter.m; sourceTree = ""; }; + 843722B21D4F260A002B398B /* GPUImageHistogramFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHistogramFilter.h; sourceTree = ""; }; + 843722B31D4F260A002B398B /* GPUImageHistogramFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHistogramFilter.m; sourceTree = ""; }; + 843722B41D4F260A002B398B /* GPUImageHistogramGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHistogramGenerator.h; sourceTree = ""; }; + 843722B51D4F260A002B398B /* GPUImageHistogramGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHistogramGenerator.m; sourceTree = ""; }; + 843722B61D4F260A002B398B /* GPUImageHoughTransformLineDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHoughTransformLineDetector.h; sourceTree = ""; }; + 843722B71D4F260A002B398B /* GPUImageHoughTransformLineDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHoughTransformLineDetector.m; sourceTree = ""; }; + 843722B81D4F260A002B398B /* GPUImageHSBFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHSBFilter.h; sourceTree = ""; }; + 843722B91D4F260A002B398B /* GPUImageHSBFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHSBFilter.m; sourceTree = ""; }; + 843722BA1D4F260A002B398B /* GPUImageHueBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHueBlendFilter.h; sourceTree = ""; }; + 843722BB1D4F260A002B398B /* GPUImageHueBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHueBlendFilter.m; sourceTree = ""; }; + 843722BC1D4F260A002B398B /* GPUImageHueFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHueFilter.h; sourceTree = ""; }; + 843722BD1D4F260A002B398B /* GPUImageHueFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHueFilter.m; sourceTree = ""; }; + 843722BE1D4F260A002B398B /* GPUImageiOSBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageiOSBlurFilter.h; sourceTree = ""; }; + 843722BF1D4F260A002B398B /* GPUImageiOSBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageiOSBlurFilter.m; sourceTree = ""; }; + 843722C01D4F260A002B398B /* GPUImageJFAVoronoiFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageJFAVoronoiFilter.h; sourceTree = ""; }; + 843722C11D4F260A002B398B /* GPUImageJFAVoronoiFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageJFAVoronoiFilter.m; sourceTree = ""; }; + 843722C21D4F260A002B398B /* GPUImageKuwaharaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageKuwaharaFilter.h; sourceTree = ""; }; + 843722C31D4F260A002B398B /* GPUImageKuwaharaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageKuwaharaFilter.m; sourceTree = ""; }; + 843722C41D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageKuwaharaRadius3Filter.h; sourceTree = ""; }; + 843722C51D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageKuwaharaRadius3Filter.m; sourceTree = ""; }; + 843722C61D4F260A002B398B /* GPUImageLanczosResamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLanczosResamplingFilter.h; sourceTree = ""; }; + 843722C71D4F260A002B398B /* GPUImageLanczosResamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLanczosResamplingFilter.m; sourceTree = ""; }; + 843722C81D4F260A002B398B /* GPUImageLaplacianFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLaplacianFilter.h; sourceTree = ""; }; + 843722C91D4F260A002B398B /* GPUImageLaplacianFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLaplacianFilter.m; sourceTree = ""; }; + 843722CA1D4F260A002B398B /* GPUImageLevelsFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLevelsFilter.h; sourceTree = ""; }; + 843722CB1D4F260A002B398B /* GPUImageLevelsFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLevelsFilter.m; sourceTree = ""; }; + 843722CC1D4F260A002B398B /* GPUImageLightenBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLightenBlendFilter.h; sourceTree = ""; }; + 843722CD1D4F260A002B398B /* GPUImageLightenBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLightenBlendFilter.m; sourceTree = ""; }; + 843722CE1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLinearBurnBlendFilter.h; sourceTree = ""; }; + 843722CF1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLinearBurnBlendFilter.m; sourceTree = ""; }; + 843722D01D4F260A002B398B /* GPUImageLineGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLineGenerator.h; sourceTree = ""; }; + 843722D11D4F260A002B398B /* GPUImageLineGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLineGenerator.m; sourceTree = ""; }; + 843722D21D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLocalBinaryPatternFilter.h; sourceTree = ""; }; + 843722D31D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLocalBinaryPatternFilter.m; sourceTree = ""; }; + 843722D41D4F260A002B398B /* GPUImageLookupFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLookupFilter.h; sourceTree = ""; }; + 843722D51D4F260A002B398B /* GPUImageLookupFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLookupFilter.m; sourceTree = ""; }; + 843722D61D4F260A002B398B /* GPUImageLowPassFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLowPassFilter.h; sourceTree = ""; }; + 843722D71D4F260A002B398B /* GPUImageLowPassFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLowPassFilter.m; sourceTree = ""; }; + 843722D81D4F260A002B398B /* GPUImageLuminanceRangeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminanceRangeFilter.h; sourceTree = ""; }; + 843722D91D4F260A002B398B /* GPUImageLuminanceRangeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminanceRangeFilter.m; sourceTree = ""; }; + 843722DA1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminanceThresholdFilter.h; sourceTree = ""; }; + 843722DB1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminanceThresholdFilter.m; sourceTree = ""; }; + 843722DC1D4F260A002B398B /* GPUImageLuminosity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminosity.h; sourceTree = ""; }; + 843722DD1D4F260A002B398B /* GPUImageLuminosity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminosity.m; sourceTree = ""; }; + 843722DE1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminosityBlendFilter.h; sourceTree = ""; }; + 843722DF1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminosityBlendFilter.m; sourceTree = ""; }; + 843722E01D4F260A002B398B /* GPUImageMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMaskFilter.h; sourceTree = ""; }; + 843722E11D4F260A002B398B /* GPUImageMaskFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMaskFilter.m; sourceTree = ""; }; + 843722E21D4F260A002B398B /* GPUImageMedianFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMedianFilter.h; sourceTree = ""; }; + 843722E31D4F260A002B398B /* GPUImageMedianFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMedianFilter.m; sourceTree = ""; }; + 843722E41D4F260A002B398B /* GPUImageMissEtikateFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMissEtikateFilter.h; sourceTree = ""; }; + 843722E51D4F260A002B398B /* GPUImageMissEtikateFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMissEtikateFilter.m; sourceTree = ""; }; + 843722E61D4F260A002B398B /* GPUImageMonochromeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMonochromeFilter.h; sourceTree = ""; }; + 843722E71D4F260A002B398B /* GPUImageMonochromeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMonochromeFilter.m; sourceTree = ""; }; + 843722E81D4F260A002B398B /* GPUImageMosaicFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMosaicFilter.h; sourceTree = ""; }; + 843722E91D4F260A002B398B /* GPUImageMosaicFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMosaicFilter.m; sourceTree = ""; }; + 843722EA1D4F260A002B398B /* GPUImageMotionBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMotionBlurFilter.h; sourceTree = ""; }; + 843722EB1D4F260A002B398B /* GPUImageMotionBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMotionBlurFilter.m; sourceTree = ""; }; + 843722EC1D4F260A002B398B /* GPUImageMotionDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMotionDetector.h; sourceTree = ""; }; + 843722ED1D4F260A002B398B /* GPUImageMotionDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMotionDetector.m; sourceTree = ""; }; + 843722EE1D4F260A002B398B /* GPUImageMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMovie.h; sourceTree = ""; }; + 843722EF1D4F260A002B398B /* GPUImageMovie.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMovie.m; sourceTree = ""; }; + 843722F01D4F260A002B398B /* GPUImageMovieComposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMovieComposition.h; sourceTree = ""; }; + 843722F11D4F260A002B398B /* GPUImageMovieComposition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMovieComposition.m; sourceTree = ""; }; + 843722F21D4F260A002B398B /* GPUImageMultiplyBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMultiplyBlendFilter.h; sourceTree = ""; }; + 843722F31D4F260A002B398B /* GPUImageMultiplyBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMultiplyBlendFilter.m; sourceTree = ""; }; + 843722F41D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageNobleCornerDetectionFilter.h; sourceTree = ""; }; + 843722F51D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageNobleCornerDetectionFilter.m; sourceTree = ""; }; + 843722F61D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageNonMaximumSuppressionFilter.h; sourceTree = ""; }; + 843722F71D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageNonMaximumSuppressionFilter.m; sourceTree = ""; }; + 843722F81D4F260A002B398B /* GPUImageNormalBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageNormalBlendFilter.h; sourceTree = ""; }; + 843722F91D4F260A002B398B /* GPUImageNormalBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageNormalBlendFilter.m; sourceTree = ""; }; + 843722FA1D4F260A002B398B /* GPUImageOpacityFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOpacityFilter.h; sourceTree = ""; }; + 843722FB1D4F260A002B398B /* GPUImageOpacityFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOpacityFilter.m; sourceTree = ""; }; + 843722FC1D4F260A002B398B /* GPUImageOpeningFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOpeningFilter.h; sourceTree = ""; }; + 843722FD1D4F260A002B398B /* GPUImageOpeningFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOpeningFilter.m; sourceTree = ""; }; + 843722FE1D4F260A002B398B /* GPUImageOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOutput.h; sourceTree = ""; }; + 843722FF1D4F260A002B398B /* GPUImageOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOutput.m; sourceTree = ""; }; + 843723001D4F260A002B398B /* GPUImageOverlayBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOverlayBlendFilter.h; sourceTree = ""; }; + 843723011D4F260A002B398B /* GPUImageOverlayBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOverlayBlendFilter.m; sourceTree = ""; }; + 843723021D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageParallelCoordinateLineTransformFilter.h; sourceTree = ""; }; + 843723031D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageParallelCoordinateLineTransformFilter.m; sourceTree = ""; }; + 843723041D4F260A002B398B /* GPUImagePerlinNoiseFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePerlinNoiseFilter.h; sourceTree = ""; }; + 843723051D4F260A002B398B /* GPUImagePerlinNoiseFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePerlinNoiseFilter.m; sourceTree = ""; }; + 843723061D4F260A002B398B /* GPUImagePinchDistortionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePinchDistortionFilter.h; sourceTree = ""; }; + 843723071D4F260A002B398B /* GPUImagePinchDistortionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePinchDistortionFilter.m; sourceTree = ""; }; + 843723081D4F260A002B398B /* GPUImagePixellateFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePixellateFilter.h; sourceTree = ""; }; + 843723091D4F260A002B398B /* GPUImagePixellateFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePixellateFilter.m; sourceTree = ""; }; + 8437230A1D4F260A002B398B /* GPUImagePixellatePositionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePixellatePositionFilter.h; sourceTree = ""; }; + 8437230B1D4F260A002B398B /* GPUImagePixellatePositionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePixellatePositionFilter.m; sourceTree = ""; }; + 8437230C1D4F260A002B398B /* GPUImagePoissonBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePoissonBlendFilter.h; sourceTree = ""; }; + 8437230D1D4F260A002B398B /* GPUImagePoissonBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePoissonBlendFilter.m; sourceTree = ""; }; + 8437230E1D4F260A002B398B /* GPUImagePolarPixellateFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePolarPixellateFilter.h; sourceTree = ""; }; + 8437230F1D4F260A002B398B /* GPUImagePolarPixellateFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePolarPixellateFilter.m; sourceTree = ""; }; + 843723101D4F260A002B398B /* GPUImagePolkaDotFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePolkaDotFilter.h; sourceTree = ""; }; + 843723111D4F260A002B398B /* GPUImagePolkaDotFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePolkaDotFilter.m; sourceTree = ""; }; + 843723121D4F260A002B398B /* GPUImagePosterizeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePosterizeFilter.h; sourceTree = ""; }; + 843723131D4F260A002B398B /* GPUImagePosterizeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePosterizeFilter.m; sourceTree = ""; }; + 843723141D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePrewittEdgeDetectionFilter.h; sourceTree = ""; }; + 843723151D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePrewittEdgeDetectionFilter.m; sourceTree = ""; }; + 843723161D4F260A002B398B /* GPUImageRawDataInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRawDataInput.h; sourceTree = ""; }; + 843723171D4F260A002B398B /* GPUImageRawDataInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRawDataInput.m; sourceTree = ""; }; + 843723181D4F260A002B398B /* GPUImageRawDataOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRawDataOutput.h; sourceTree = ""; }; + 843723191D4F260A002B398B /* GPUImageRawDataOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRawDataOutput.m; sourceTree = ""; }; + 8437231A1D4F260A002B398B /* GPUImageRGBClosingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBClosingFilter.h; sourceTree = ""; }; + 8437231B1D4F260A002B398B /* GPUImageRGBClosingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBClosingFilter.m; sourceTree = ""; }; + 8437231C1D4F260A002B398B /* GPUImageRGBDilationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBDilationFilter.h; sourceTree = ""; }; + 8437231D1D4F260A002B398B /* GPUImageRGBDilationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBDilationFilter.m; sourceTree = ""; }; + 8437231E1D4F260A002B398B /* GPUImageRGBErosionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBErosionFilter.h; sourceTree = ""; }; + 8437231F1D4F260A002B398B /* GPUImageRGBErosionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBErosionFilter.m; sourceTree = ""; }; + 843723201D4F260A002B398B /* GPUImageRGBFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBFilter.h; sourceTree = ""; }; + 843723211D4F260A002B398B /* GPUImageRGBFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBFilter.m; sourceTree = ""; }; + 843723221D4F260A002B398B /* GPUImageRGBOpeningFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBOpeningFilter.h; sourceTree = ""; }; + 843723231D4F260A002B398B /* GPUImageRGBOpeningFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBOpeningFilter.m; sourceTree = ""; }; + 843723241D4F260A002B398B /* GPUImageSaturationBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSaturationBlendFilter.h; sourceTree = ""; }; + 843723251D4F260A002B398B /* GPUImageSaturationBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSaturationBlendFilter.m; sourceTree = ""; }; + 843723261D4F260A002B398B /* GPUImageSaturationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSaturationFilter.h; sourceTree = ""; }; + 843723271D4F260A002B398B /* GPUImageSaturationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSaturationFilter.m; sourceTree = ""; }; + 843723281D4F260A002B398B /* GPUImageScreenBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageScreenBlendFilter.h; sourceTree = ""; }; + 843723291D4F260A002B398B /* GPUImageScreenBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageScreenBlendFilter.m; sourceTree = ""; }; + 8437232A1D4F260A002B398B /* GPUImageSepiaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSepiaFilter.h; sourceTree = ""; }; + 8437232B1D4F260A002B398B /* GPUImageSepiaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSepiaFilter.m; sourceTree = ""; }; + 8437232C1D4F260A002B398B /* GPUImageSharpenFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSharpenFilter.h; sourceTree = ""; }; + 8437232D1D4F260A002B398B /* GPUImageSharpenFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSharpenFilter.m; sourceTree = ""; }; + 8437232E1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageShiTomasiFeatureDetectionFilter.h; sourceTree = ""; }; + 8437232F1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageShiTomasiFeatureDetectionFilter.m; sourceTree = ""; }; + 843723301D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSingleComponentGaussianBlurFilter.h; sourceTree = ""; }; + 843723311D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSingleComponentGaussianBlurFilter.m; sourceTree = ""; }; + 843723321D4F260A002B398B /* GPUImageSketchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSketchFilter.h; sourceTree = ""; }; + 843723331D4F260A002B398B /* GPUImageSketchFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSketchFilter.m; sourceTree = ""; }; + 843723341D4F260A002B398B /* GPUImageSkinToneFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSkinToneFilter.h; sourceTree = ""; }; + 843723351D4F260A002B398B /* GPUImageSkinToneFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSkinToneFilter.m; sourceTree = ""; }; + 843723361D4F260A002B398B /* GPUImageSmoothToonFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSmoothToonFilter.h; sourceTree = ""; }; + 843723371D4F260A002B398B /* GPUImageSmoothToonFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSmoothToonFilter.m; sourceTree = ""; }; + 843723381D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSobelEdgeDetectionFilter.h; sourceTree = ""; }; + 843723391D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSobelEdgeDetectionFilter.m; sourceTree = ""; }; + 8437233A1D4F260A002B398B /* GPUImageSoftEleganceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSoftEleganceFilter.h; sourceTree = ""; }; + 8437233B1D4F260A002B398B /* GPUImageSoftEleganceFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSoftEleganceFilter.m; sourceTree = ""; }; + 8437233C1D4F260A002B398B /* GPUImageSoftLightBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSoftLightBlendFilter.h; sourceTree = ""; }; + 8437233D1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSoftLightBlendFilter.m; sourceTree = ""; }; + 8437233E1D4F260A002B398B /* GPUImageSolarizeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSolarizeFilter.h; sourceTree = ""; }; + 8437233F1D4F260A002B398B /* GPUImageSolarizeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSolarizeFilter.m; sourceTree = ""; }; + 843723401D4F260A002B398B /* GPUImageSolidColorGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSolidColorGenerator.h; sourceTree = ""; }; + 843723411D4F260A002B398B /* GPUImageSolidColorGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSolidColorGenerator.m; sourceTree = ""; }; + 843723421D4F260A002B398B /* GPUImageSourceOverBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSourceOverBlendFilter.h; sourceTree = ""; }; + 843723431D4F260A002B398B /* GPUImageSourceOverBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSourceOverBlendFilter.m; sourceTree = ""; }; + 843723441D4F260A002B398B /* GPUImageSphereRefractionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSphereRefractionFilter.h; sourceTree = ""; }; + 843723451D4F260A002B398B /* GPUImageSphereRefractionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSphereRefractionFilter.m; sourceTree = ""; }; + 843723461D4F260A002B398B /* GPUImageStillCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageStillCamera.h; sourceTree = ""; }; + 843723471D4F260A002B398B /* GPUImageStillCamera.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageStillCamera.m; sourceTree = ""; }; + 843723481D4F260A002B398B /* GPUImageStretchDistortionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageStretchDistortionFilter.h; sourceTree = ""; }; + 843723491D4F260A002B398B /* GPUImageStretchDistortionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageStretchDistortionFilter.m; sourceTree = ""; }; + 8437234A1D4F260A002B398B /* GPUImageSubtractBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSubtractBlendFilter.h; sourceTree = ""; }; + 8437234B1D4F260A002B398B /* GPUImageSubtractBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSubtractBlendFilter.m; sourceTree = ""; }; + 8437234C1D4F260A002B398B /* GPUImageSwirlFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSwirlFilter.h; sourceTree = ""; }; + 8437234D1D4F260A002B398B /* GPUImageSwirlFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSwirlFilter.m; sourceTree = ""; }; + 8437234E1D4F260A002B398B /* GPUImageTextureInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTextureInput.h; sourceTree = ""; }; + 8437234F1D4F260A002B398B /* GPUImageTextureInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTextureInput.m; sourceTree = ""; }; + 843723501D4F260A002B398B /* GPUImageTextureOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTextureOutput.h; sourceTree = ""; }; + 843723511D4F260A002B398B /* GPUImageTextureOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTextureOutput.m; sourceTree = ""; }; + 843723521D4F260A002B398B /* GPUImageThreeInputFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThreeInputFilter.h; sourceTree = ""; }; + 843723531D4F260A002B398B /* GPUImageThreeInputFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThreeInputFilter.m; sourceTree = ""; }; + 843723541D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThresholdEdgeDetectionFilter.h; sourceTree = ""; }; + 843723551D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThresholdEdgeDetectionFilter.m; sourceTree = ""; }; + 843723561D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThresholdedNonMaximumSuppressionFilter.h; sourceTree = ""; }; + 843723571D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThresholdedNonMaximumSuppressionFilter.m; sourceTree = ""; }; + 843723581D4F260A002B398B /* GPUImageThresholdSketchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThresholdSketchFilter.h; sourceTree = ""; }; + 843723591D4F260A002B398B /* GPUImageThresholdSketchFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThresholdSketchFilter.m; sourceTree = ""; }; + 8437235A1D4F260A002B398B /* GPUImageTiltShiftFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTiltShiftFilter.h; sourceTree = ""; }; + 8437235B1D4F260A002B398B /* GPUImageTiltShiftFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTiltShiftFilter.m; sourceTree = ""; }; + 8437235C1D4F260A002B398B /* GPUImageToneCurveFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageToneCurveFilter.h; sourceTree = ""; }; + 8437235D1D4F260A002B398B /* GPUImageToneCurveFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageToneCurveFilter.m; sourceTree = ""; }; + 8437235E1D4F260A002B398B /* GPUImageToonFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageToonFilter.h; sourceTree = ""; }; + 8437235F1D4F260A002B398B /* GPUImageToonFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageToonFilter.m; sourceTree = ""; }; + 843723601D4F260A002B398B /* GPUImageTransformFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTransformFilter.h; sourceTree = ""; }; + 843723611D4F260A002B398B /* GPUImageTransformFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTransformFilter.m; sourceTree = ""; }; + 843723621D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoInputCrossTextureSamplingFilter.h; sourceTree = ""; }; + 843723631D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoInputCrossTextureSamplingFilter.m; sourceTree = ""; }; + 843723641D4F260A002B398B /* GPUImageTwoInputFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoInputFilter.h; sourceTree = ""; }; + 843723651D4F260A002B398B /* GPUImageTwoInputFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoInputFilter.m; sourceTree = ""; }; + 843723661D4F260A002B398B /* GPUImageTwoPassFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoPassFilter.h; sourceTree = ""; }; + 843723671D4F260A002B398B /* GPUImageTwoPassFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoPassFilter.m; sourceTree = ""; }; + 843723681D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoPassTextureSamplingFilter.h; sourceTree = ""; }; + 843723691D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoPassTextureSamplingFilter.m; sourceTree = ""; }; + 8437236A1D4F260A002B398B /* GPUImageUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageUIElement.h; sourceTree = ""; }; + 8437236B1D4F260A002B398B /* GPUImageUIElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageUIElement.m; sourceTree = ""; }; + 8437236C1D4F260A002B398B /* GPUImageUnsharpMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageUnsharpMaskFilter.h; sourceTree = ""; }; + 8437236D1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageUnsharpMaskFilter.m; sourceTree = ""; }; + 8437236E1D4F260A002B398B /* GPUImageVideoCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageVideoCamera.h; sourceTree = ""; }; + 8437236F1D4F260A002B398B /* GPUImageVideoCamera.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageVideoCamera.m; sourceTree = ""; }; + 843723701D4F260A002B398B /* GPUImageVignetteFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageVignetteFilter.h; sourceTree = ""; }; + 843723711D4F260A002B398B /* GPUImageVignetteFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageVignetteFilter.m; sourceTree = ""; }; + 843723721D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageVoronoiConsumerFilter.h; sourceTree = ""; }; + 843723731D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageVoronoiConsumerFilter.m; sourceTree = ""; }; + 843723741D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageWeakPixelInclusionFilter.h; sourceTree = ""; }; + 843723751D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageWeakPixelInclusionFilter.m; sourceTree = ""; }; + 843723761D4F260A002B398B /* GPUImageWhiteBalanceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageWhiteBalanceFilter.h; sourceTree = ""; }; + 843723771D4F260A002B398B /* GPUImageWhiteBalanceFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageWhiteBalanceFilter.m; sourceTree = ""; }; + 843723781D4F260A002B398B /* GPUImageXYDerivativeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageXYDerivativeFilter.h; sourceTree = ""; }; + 843723791D4F260A002B398B /* GPUImageXYDerivativeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageXYDerivativeFilter.m; sourceTree = ""; }; + 8437237A1D4F260A002B398B /* GPUImageZoomBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageZoomBlurFilter.h; sourceTree = ""; }; + 8437237B1D4F260A002B398B /* GPUImageZoomBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageZoomBlurFilter.m; sourceTree = ""; }; + 8437237E1D4F260A002B398B /* GPUImageFramework.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFramework.h; sourceTree = ""; }; + 8437237F1D4F260A002B398B /* GPUImageContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageContext.h; sourceTree = ""; }; + 843723801D4F260A002B398B /* GPUImageContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageContext.m; sourceTree = ""; }; + 843723811D4F260A002B398B /* GPUImageMovieWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMovieWriter.h; sourceTree = ""; }; + 843723821D4F260A002B398B /* GPUImageMovieWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMovieWriter.m; sourceTree = ""; }; + 843723831D4F260A002B398B /* GPUImagePicture+TextureSubimage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GPUImagePicture+TextureSubimage.h"; sourceTree = ""; }; + 843723841D4F260A002B398B /* GPUImagePicture+TextureSubimage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GPUImagePicture+TextureSubimage.m"; sourceTree = ""; }; + 843723851D4F260A002B398B /* GPUImagePicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePicture.h; sourceTree = ""; }; + 843723861D4F260A002B398B /* GPUImagePicture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePicture.m; sourceTree = ""; }; + 843723871D4F260A002B398B /* GPUImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageView.h; sourceTree = ""; }; + 843723881D4F260A002B398B /* GPUImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageView.m; sourceTree = ""; }; + 8437238A1D4F260A002B398B /* amf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amf.c; sourceTree = ""; }; + 8437238B1D4F260A002B398B /* amf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amf.h; sourceTree = ""; }; + 8437238C1D4F260A002B398B /* bytes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bytes.h; sourceTree = ""; }; + 8437238D1D4F260A002B398B /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = ""; }; + 8437238E1D4F260A002B398B /* dhgroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dhgroups.h; sourceTree = ""; }; + 8437238F1D4F260A002B398B /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; + 843723901D4F260A002B398B /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; + 843723911D4F260A002B398B /* handshake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = handshake.h; sourceTree = ""; }; + 843723921D4F260A002B398B /* hashswf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashswf.c; sourceTree = ""; }; + 843723931D4F260A002B398B /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = ""; }; + 843723941D4F260A002B398B /* log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = ""; }; + 843723951D4F260A002B398B /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + 843723961D4F260A002B398B /* parseurl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parseurl.c; sourceTree = ""; }; + 843723971D4F260A002B398B /* rtmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtmp.c; sourceTree = ""; }; + 843723981D4F260A002B398B /* rtmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp.h; sourceTree = ""; }; + 843723991D4F260A002B398B /* rtmp_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp_sys.h; sourceTree = ""; }; B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; @@ -139,7 +862,6 @@ B2CD146A1D45F18B008082E8 /* VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoEncoder.m; sourceTree = ""; }; B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; - B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -154,7 +876,6 @@ 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, - AD7F89B4621A7EFEBEA72D49 /* libPods-LFLiveKit.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -178,7 +899,6 @@ 84001FFA1D0017630026C63F /* UIKit.framework */, 84001FF81D00175D0026C63F /* Foundation.framework */, 84001FF61D0017590026C63F /* AVFoundation.framework */, - B8CB02D2A92EA1F5A262F154 /* libPods-LFLiveKit.a */, ); name = Frameworks; sourceTree = ""; @@ -224,6 +944,7 @@ 84001FA91D0016380026C63F /* coder */, 84001FB51D0016380026C63F /* filter */, 84001FC91D0016380026C63F /* publish */, + 8437222B1D4F260A002B398B /* Vendor */, 84001F8F1D0015D10026C63F /* Info.plist */, ); path = LFLiveKit; @@ -319,6 +1040,407 @@ path = upload; sourceTree = ""; }; + 8437222B1D4F260A002B398B /* Vendor */ = { + isa = PBXGroup; + children = ( + 8437222C1D4F260A002B398B /* GPUImage */, + 843723891D4F260A002B398B /* pili-librtmp */, + ); + path = Vendor; + sourceTree = ""; + }; + 8437222C1D4F260A002B398B /* GPUImage */ = { + isa = PBXGroup; + children = ( + 8437222D1D4F260A002B398B /* GLProgram.h */, + 8437222E1D4F260A002B398B /* GLProgram.m */, + 8437222F1D4F260A002B398B /* GPUImage.h */, + 843722301D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h */, + 843722311D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m */, + 843722321D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h */, + 843722331D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m */, + 843722341D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h */, + 843722351D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m */, + 843722361D4F260A002B398B /* GPUImageAddBlendFilter.h */, + 843722371D4F260A002B398B /* GPUImageAddBlendFilter.m */, + 843722381D4F260A002B398B /* GPUImageAlphaBlendFilter.h */, + 843722391D4F260A002B398B /* GPUImageAlphaBlendFilter.m */, + 8437223A1D4F260A002B398B /* GPUImageAmatorkaFilter.h */, + 8437223B1D4F260A002B398B /* GPUImageAmatorkaFilter.m */, + 8437223C1D4F260A002B398B /* GPUImageAverageColor.h */, + 8437223D1D4F260A002B398B /* GPUImageAverageColor.m */, + 8437223E1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h */, + 8437223F1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m */, + 843722401D4F260A002B398B /* GPUImageBilateralFilter.h */, + 843722411D4F260A002B398B /* GPUImageBilateralFilter.m */, + 843722421D4F260A002B398B /* GPUImageBoxBlurFilter.h */, + 843722431D4F260A002B398B /* GPUImageBoxBlurFilter.m */, + 843722441D4F260A002B398B /* GPUImageBrightnessFilter.h */, + 843722451D4F260A002B398B /* GPUImageBrightnessFilter.m */, + 843722461D4F260A002B398B /* GPUImageBuffer.h */, + 843722471D4F260A002B398B /* GPUImageBuffer.m */, + 843722481D4F260A002B398B /* GPUImageBulgeDistortionFilter.h */, + 843722491D4F260A002B398B /* GPUImageBulgeDistortionFilter.m */, + 8437224A1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h */, + 8437224B1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m */, + 8437224C1D4F260A002B398B /* GPUImageCGAColorspaceFilter.h */, + 8437224D1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m */, + 8437224E1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h */, + 8437224F1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m */, + 843722501D4F260A002B398B /* GPUImageChromaKeyFilter.h */, + 843722511D4F260A002B398B /* GPUImageChromaKeyFilter.m */, + 843722521D4F260A002B398B /* GPUImageClosingFilter.h */, + 843722531D4F260A002B398B /* GPUImageClosingFilter.m */, + 843722541D4F260A002B398B /* GPUImageColorBlendFilter.h */, + 843722551D4F260A002B398B /* GPUImageColorBlendFilter.m */, + 843722561D4F260A002B398B /* GPUImageColorBurnBlendFilter.h */, + 843722571D4F260A002B398B /* GPUImageColorBurnBlendFilter.m */, + 843722581D4F260A002B398B /* GPUImageColorConversion.h */, + 843722591D4F260A002B398B /* GPUImageColorConversion.m */, + 8437225A1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h */, + 8437225B1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m */, + 8437225C1D4F260A002B398B /* GPUImageColorInvertFilter.h */, + 8437225D1D4F260A002B398B /* GPUImageColorInvertFilter.m */, + 8437225E1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h */, + 8437225F1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m */, + 843722601D4F260A002B398B /* GPUImageColorMatrixFilter.h */, + 843722611D4F260A002B398B /* GPUImageColorMatrixFilter.m */, + 843722621D4F260A002B398B /* GPUImageColorPackingFilter.h */, + 843722631D4F260A002B398B /* GPUImageColorPackingFilter.m */, + 843722641D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h */, + 843722651D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m */, + 843722661D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h */, + 843722671D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m */, + 843722681D4F260A002B398B /* GPUImageContrastFilter.h */, + 843722691D4F260A002B398B /* GPUImageContrastFilter.m */, + 8437226A1D4F260A002B398B /* GPUImageCropFilter.h */, + 8437226B1D4F260A002B398B /* GPUImageCropFilter.m */, + 8437226C1D4F260A002B398B /* GPUImageCrosshairGenerator.h */, + 8437226D1D4F260A002B398B /* GPUImageCrosshairGenerator.m */, + 8437226E1D4F260A002B398B /* GPUImageCrosshatchFilter.h */, + 8437226F1D4F260A002B398B /* GPUImageCrosshatchFilter.m */, + 843722701D4F260A002B398B /* GPUImageDarkenBlendFilter.h */, + 843722711D4F260A002B398B /* GPUImageDarkenBlendFilter.m */, + 843722721D4F260A002B398B /* GPUImageDifferenceBlendFilter.h */, + 843722731D4F260A002B398B /* GPUImageDifferenceBlendFilter.m */, + 843722741D4F260A002B398B /* GPUImageDilationFilter.h */, + 843722751D4F260A002B398B /* GPUImageDilationFilter.m */, + 843722761D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h */, + 843722771D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m */, + 843722781D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h */, + 843722791D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m */, + 8437227A1D4F260A002B398B /* GPUImageDissolveBlendFilter.h */, + 8437227B1D4F260A002B398B /* GPUImageDissolveBlendFilter.m */, + 8437227C1D4F260A002B398B /* GPUImageDivideBlendFilter.h */, + 8437227D1D4F260A002B398B /* GPUImageDivideBlendFilter.m */, + 8437227E1D4F260A002B398B /* GPUImageEmbossFilter.h */, + 8437227F1D4F260A002B398B /* GPUImageEmbossFilter.m */, + 843722801D4F260A002B398B /* GPUImageErosionFilter.h */, + 843722811D4F260A002B398B /* GPUImageErosionFilter.m */, + 843722821D4F260A002B398B /* GPUImageExclusionBlendFilter.h */, + 843722831D4F260A002B398B /* GPUImageExclusionBlendFilter.m */, + 843722841D4F260A002B398B /* GPUImageExposureFilter.h */, + 843722851D4F260A002B398B /* GPUImageExposureFilter.m */, + 843722861D4F260A002B398B /* GPUImageFalseColorFilter.h */, + 843722871D4F260A002B398B /* GPUImageFalseColorFilter.m */, + 843722881D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h */, + 843722891D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m */, + 8437228A1D4F260A002B398B /* GPUImageFilter.h */, + 8437228B1D4F260A002B398B /* GPUImageFilter.m */, + 8437228C1D4F260A002B398B /* GPUImageFilterGroup.h */, + 8437228D1D4F260A002B398B /* GPUImageFilterGroup.m */, + 8437228E1D4F260A002B398B /* GPUImageFilterPipeline.h */, + 8437228F1D4F260A002B398B /* GPUImageFilterPipeline.m */, + 843722901D4F260A002B398B /* GPUImageFourInputFilter.h */, + 843722911D4F260A002B398B /* GPUImageFourInputFilter.m */, + 843722921D4F260A002B398B /* GPUImageFramebuffer.h */, + 843722931D4F260A002B398B /* GPUImageFramebuffer.m */, + 843722941D4F260A002B398B /* GPUImageFramebufferCache.h */, + 843722951D4F260A002B398B /* GPUImageFramebufferCache.m */, + 843722961D4F260A002B398B /* GPUImageGammaFilter.h */, + 843722971D4F260A002B398B /* GPUImageGammaFilter.m */, + 843722981D4F260A002B398B /* GPUImageGaussianBlurFilter.h */, + 843722991D4F260A002B398B /* GPUImageGaussianBlurFilter.m */, + 8437229A1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h */, + 8437229B1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m */, + 8437229C1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h */, + 8437229D1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m */, + 8437229E1D4F260A002B398B /* GPUImageGlassSphereFilter.h */, + 8437229F1D4F260A002B398B /* GPUImageGlassSphereFilter.m */, + 843722A01D4F260A002B398B /* GPUImageGrayscaleFilter.h */, + 843722A11D4F260A002B398B /* GPUImageGrayscaleFilter.m */, + 843722A21D4F260A002B398B /* GPUImageHalftoneFilter.h */, + 843722A31D4F260A002B398B /* GPUImageHalftoneFilter.m */, + 843722A41D4F260A002B398B /* GPUImageHardLightBlendFilter.h */, + 843722A51D4F260A002B398B /* GPUImageHardLightBlendFilter.m */, + 843722A61D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h */, + 843722A71D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m */, + 843722A81D4F260A002B398B /* GPUImageHazeFilter.h */, + 843722A91D4F260A002B398B /* GPUImageHazeFilter.m */, + 843722AA1D4F260A002B398B /* GPUImageHighlightShadowFilter.h */, + 843722AB1D4F260A002B398B /* GPUImageHighlightShadowFilter.m */, + 843722AC1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h */, + 843722AD1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m */, + 843722AE1D4F260A002B398B /* GPUImageHighPassFilter.h */, + 843722AF1D4F260A002B398B /* GPUImageHighPassFilter.m */, + 843722B01D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h */, + 843722B11D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m */, + 843722B21D4F260A002B398B /* GPUImageHistogramFilter.h */, + 843722B31D4F260A002B398B /* GPUImageHistogramFilter.m */, + 843722B41D4F260A002B398B /* GPUImageHistogramGenerator.h */, + 843722B51D4F260A002B398B /* GPUImageHistogramGenerator.m */, + 843722B61D4F260A002B398B /* GPUImageHoughTransformLineDetector.h */, + 843722B71D4F260A002B398B /* GPUImageHoughTransformLineDetector.m */, + 843722B81D4F260A002B398B /* GPUImageHSBFilter.h */, + 843722B91D4F260A002B398B /* GPUImageHSBFilter.m */, + 843722BA1D4F260A002B398B /* GPUImageHueBlendFilter.h */, + 843722BB1D4F260A002B398B /* GPUImageHueBlendFilter.m */, + 843722BC1D4F260A002B398B /* GPUImageHueFilter.h */, + 843722BD1D4F260A002B398B /* GPUImageHueFilter.m */, + 843722BE1D4F260A002B398B /* GPUImageiOSBlurFilter.h */, + 843722BF1D4F260A002B398B /* GPUImageiOSBlurFilter.m */, + 843722C01D4F260A002B398B /* GPUImageJFAVoronoiFilter.h */, + 843722C11D4F260A002B398B /* GPUImageJFAVoronoiFilter.m */, + 843722C21D4F260A002B398B /* GPUImageKuwaharaFilter.h */, + 843722C31D4F260A002B398B /* GPUImageKuwaharaFilter.m */, + 843722C41D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h */, + 843722C51D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m */, + 843722C61D4F260A002B398B /* GPUImageLanczosResamplingFilter.h */, + 843722C71D4F260A002B398B /* GPUImageLanczosResamplingFilter.m */, + 843722C81D4F260A002B398B /* GPUImageLaplacianFilter.h */, + 843722C91D4F260A002B398B /* GPUImageLaplacianFilter.m */, + 843722CA1D4F260A002B398B /* GPUImageLevelsFilter.h */, + 843722CB1D4F260A002B398B /* GPUImageLevelsFilter.m */, + 843722CC1D4F260A002B398B /* GPUImageLightenBlendFilter.h */, + 843722CD1D4F260A002B398B /* GPUImageLightenBlendFilter.m */, + 843722CE1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h */, + 843722CF1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m */, + 843722D01D4F260A002B398B /* GPUImageLineGenerator.h */, + 843722D11D4F260A002B398B /* GPUImageLineGenerator.m */, + 843722D21D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h */, + 843722D31D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m */, + 843722D41D4F260A002B398B /* GPUImageLookupFilter.h */, + 843722D51D4F260A002B398B /* GPUImageLookupFilter.m */, + 843722D61D4F260A002B398B /* GPUImageLowPassFilter.h */, + 843722D71D4F260A002B398B /* GPUImageLowPassFilter.m */, + 843722D81D4F260A002B398B /* GPUImageLuminanceRangeFilter.h */, + 843722D91D4F260A002B398B /* GPUImageLuminanceRangeFilter.m */, + 843722DA1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h */, + 843722DB1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m */, + 843722DC1D4F260A002B398B /* GPUImageLuminosity.h */, + 843722DD1D4F260A002B398B /* GPUImageLuminosity.m */, + 843722DE1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h */, + 843722DF1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m */, + 843722E01D4F260A002B398B /* GPUImageMaskFilter.h */, + 843722E11D4F260A002B398B /* GPUImageMaskFilter.m */, + 843722E21D4F260A002B398B /* GPUImageMedianFilter.h */, + 843722E31D4F260A002B398B /* GPUImageMedianFilter.m */, + 843722E41D4F260A002B398B /* GPUImageMissEtikateFilter.h */, + 843722E51D4F260A002B398B /* GPUImageMissEtikateFilter.m */, + 843722E61D4F260A002B398B /* GPUImageMonochromeFilter.h */, + 843722E71D4F260A002B398B /* GPUImageMonochromeFilter.m */, + 843722E81D4F260A002B398B /* GPUImageMosaicFilter.h */, + 843722E91D4F260A002B398B /* GPUImageMosaicFilter.m */, + 843722EA1D4F260A002B398B /* GPUImageMotionBlurFilter.h */, + 843722EB1D4F260A002B398B /* GPUImageMotionBlurFilter.m */, + 843722EC1D4F260A002B398B /* GPUImageMotionDetector.h */, + 843722ED1D4F260A002B398B /* GPUImageMotionDetector.m */, + 843722EE1D4F260A002B398B /* GPUImageMovie.h */, + 843722EF1D4F260A002B398B /* GPUImageMovie.m */, + 843722F01D4F260A002B398B /* GPUImageMovieComposition.h */, + 843722F11D4F260A002B398B /* GPUImageMovieComposition.m */, + 843722F21D4F260A002B398B /* GPUImageMultiplyBlendFilter.h */, + 843722F31D4F260A002B398B /* GPUImageMultiplyBlendFilter.m */, + 843722F41D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h */, + 843722F51D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m */, + 843722F61D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h */, + 843722F71D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m */, + 843722F81D4F260A002B398B /* GPUImageNormalBlendFilter.h */, + 843722F91D4F260A002B398B /* GPUImageNormalBlendFilter.m */, + 843722FA1D4F260A002B398B /* GPUImageOpacityFilter.h */, + 843722FB1D4F260A002B398B /* GPUImageOpacityFilter.m */, + 843722FC1D4F260A002B398B /* GPUImageOpeningFilter.h */, + 843722FD1D4F260A002B398B /* GPUImageOpeningFilter.m */, + 843722FE1D4F260A002B398B /* GPUImageOutput.h */, + 843722FF1D4F260A002B398B /* GPUImageOutput.m */, + 843723001D4F260A002B398B /* GPUImageOverlayBlendFilter.h */, + 843723011D4F260A002B398B /* GPUImageOverlayBlendFilter.m */, + 843723021D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h */, + 843723031D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m */, + 843723041D4F260A002B398B /* GPUImagePerlinNoiseFilter.h */, + 843723051D4F260A002B398B /* GPUImagePerlinNoiseFilter.m */, + 843723061D4F260A002B398B /* GPUImagePinchDistortionFilter.h */, + 843723071D4F260A002B398B /* GPUImagePinchDistortionFilter.m */, + 843723081D4F260A002B398B /* GPUImagePixellateFilter.h */, + 843723091D4F260A002B398B /* GPUImagePixellateFilter.m */, + 8437230A1D4F260A002B398B /* GPUImagePixellatePositionFilter.h */, + 8437230B1D4F260A002B398B /* GPUImagePixellatePositionFilter.m */, + 8437230C1D4F260A002B398B /* GPUImagePoissonBlendFilter.h */, + 8437230D1D4F260A002B398B /* GPUImagePoissonBlendFilter.m */, + 8437230E1D4F260A002B398B /* GPUImagePolarPixellateFilter.h */, + 8437230F1D4F260A002B398B /* GPUImagePolarPixellateFilter.m */, + 843723101D4F260A002B398B /* GPUImagePolkaDotFilter.h */, + 843723111D4F260A002B398B /* GPUImagePolkaDotFilter.m */, + 843723121D4F260A002B398B /* GPUImagePosterizeFilter.h */, + 843723131D4F260A002B398B /* GPUImagePosterizeFilter.m */, + 843723141D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h */, + 843723151D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m */, + 843723161D4F260A002B398B /* GPUImageRawDataInput.h */, + 843723171D4F260A002B398B /* GPUImageRawDataInput.m */, + 843723181D4F260A002B398B /* GPUImageRawDataOutput.h */, + 843723191D4F260A002B398B /* GPUImageRawDataOutput.m */, + 8437231A1D4F260A002B398B /* GPUImageRGBClosingFilter.h */, + 8437231B1D4F260A002B398B /* GPUImageRGBClosingFilter.m */, + 8437231C1D4F260A002B398B /* GPUImageRGBDilationFilter.h */, + 8437231D1D4F260A002B398B /* GPUImageRGBDilationFilter.m */, + 8437231E1D4F260A002B398B /* GPUImageRGBErosionFilter.h */, + 8437231F1D4F260A002B398B /* GPUImageRGBErosionFilter.m */, + 843723201D4F260A002B398B /* GPUImageRGBFilter.h */, + 843723211D4F260A002B398B /* GPUImageRGBFilter.m */, + 843723221D4F260A002B398B /* GPUImageRGBOpeningFilter.h */, + 843723231D4F260A002B398B /* GPUImageRGBOpeningFilter.m */, + 843723241D4F260A002B398B /* GPUImageSaturationBlendFilter.h */, + 843723251D4F260A002B398B /* GPUImageSaturationBlendFilter.m */, + 843723261D4F260A002B398B /* GPUImageSaturationFilter.h */, + 843723271D4F260A002B398B /* GPUImageSaturationFilter.m */, + 843723281D4F260A002B398B /* GPUImageScreenBlendFilter.h */, + 843723291D4F260A002B398B /* GPUImageScreenBlendFilter.m */, + 8437232A1D4F260A002B398B /* GPUImageSepiaFilter.h */, + 8437232B1D4F260A002B398B /* GPUImageSepiaFilter.m */, + 8437232C1D4F260A002B398B /* GPUImageSharpenFilter.h */, + 8437232D1D4F260A002B398B /* GPUImageSharpenFilter.m */, + 8437232E1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h */, + 8437232F1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m */, + 843723301D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h */, + 843723311D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m */, + 843723321D4F260A002B398B /* GPUImageSketchFilter.h */, + 843723331D4F260A002B398B /* GPUImageSketchFilter.m */, + 843723341D4F260A002B398B /* GPUImageSkinToneFilter.h */, + 843723351D4F260A002B398B /* GPUImageSkinToneFilter.m */, + 843723361D4F260A002B398B /* GPUImageSmoothToonFilter.h */, + 843723371D4F260A002B398B /* GPUImageSmoothToonFilter.m */, + 843723381D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h */, + 843723391D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m */, + 8437233A1D4F260A002B398B /* GPUImageSoftEleganceFilter.h */, + 8437233B1D4F260A002B398B /* GPUImageSoftEleganceFilter.m */, + 8437233C1D4F260A002B398B /* GPUImageSoftLightBlendFilter.h */, + 8437233D1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m */, + 8437233E1D4F260A002B398B /* GPUImageSolarizeFilter.h */, + 8437233F1D4F260A002B398B /* GPUImageSolarizeFilter.m */, + 843723401D4F260A002B398B /* GPUImageSolidColorGenerator.h */, + 843723411D4F260A002B398B /* GPUImageSolidColorGenerator.m */, + 843723421D4F260A002B398B /* GPUImageSourceOverBlendFilter.h */, + 843723431D4F260A002B398B /* GPUImageSourceOverBlendFilter.m */, + 843723441D4F260A002B398B /* GPUImageSphereRefractionFilter.h */, + 843723451D4F260A002B398B /* GPUImageSphereRefractionFilter.m */, + 843723461D4F260A002B398B /* GPUImageStillCamera.h */, + 843723471D4F260A002B398B /* GPUImageStillCamera.m */, + 843723481D4F260A002B398B /* GPUImageStretchDistortionFilter.h */, + 843723491D4F260A002B398B /* GPUImageStretchDistortionFilter.m */, + 8437234A1D4F260A002B398B /* GPUImageSubtractBlendFilter.h */, + 8437234B1D4F260A002B398B /* GPUImageSubtractBlendFilter.m */, + 8437234C1D4F260A002B398B /* GPUImageSwirlFilter.h */, + 8437234D1D4F260A002B398B /* GPUImageSwirlFilter.m */, + 8437234E1D4F260A002B398B /* GPUImageTextureInput.h */, + 8437234F1D4F260A002B398B /* GPUImageTextureInput.m */, + 843723501D4F260A002B398B /* GPUImageTextureOutput.h */, + 843723511D4F260A002B398B /* GPUImageTextureOutput.m */, + 843723521D4F260A002B398B /* GPUImageThreeInputFilter.h */, + 843723531D4F260A002B398B /* GPUImageThreeInputFilter.m */, + 843723541D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h */, + 843723551D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m */, + 843723561D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h */, + 843723571D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m */, + 843723581D4F260A002B398B /* GPUImageThresholdSketchFilter.h */, + 843723591D4F260A002B398B /* GPUImageThresholdSketchFilter.m */, + 8437235A1D4F260A002B398B /* GPUImageTiltShiftFilter.h */, + 8437235B1D4F260A002B398B /* GPUImageTiltShiftFilter.m */, + 8437235C1D4F260A002B398B /* GPUImageToneCurveFilter.h */, + 8437235D1D4F260A002B398B /* GPUImageToneCurveFilter.m */, + 8437235E1D4F260A002B398B /* GPUImageToonFilter.h */, + 8437235F1D4F260A002B398B /* GPUImageToonFilter.m */, + 843723601D4F260A002B398B /* GPUImageTransformFilter.h */, + 843723611D4F260A002B398B /* GPUImageTransformFilter.m */, + 843723621D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h */, + 843723631D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m */, + 843723641D4F260A002B398B /* GPUImageTwoInputFilter.h */, + 843723651D4F260A002B398B /* GPUImageTwoInputFilter.m */, + 843723661D4F260A002B398B /* GPUImageTwoPassFilter.h */, + 843723671D4F260A002B398B /* GPUImageTwoPassFilter.m */, + 843723681D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h */, + 843723691D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m */, + 8437236A1D4F260A002B398B /* GPUImageUIElement.h */, + 8437236B1D4F260A002B398B /* GPUImageUIElement.m */, + 8437236C1D4F260A002B398B /* GPUImageUnsharpMaskFilter.h */, + 8437236D1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m */, + 8437236E1D4F260A002B398B /* GPUImageVideoCamera.h */, + 8437236F1D4F260A002B398B /* GPUImageVideoCamera.m */, + 843723701D4F260A002B398B /* GPUImageVignetteFilter.h */, + 843723711D4F260A002B398B /* GPUImageVignetteFilter.m */, + 843723721D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h */, + 843723731D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m */, + 843723741D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h */, + 843723751D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m */, + 843723761D4F260A002B398B /* GPUImageWhiteBalanceFilter.h */, + 843723771D4F260A002B398B /* GPUImageWhiteBalanceFilter.m */, + 843723781D4F260A002B398B /* GPUImageXYDerivativeFilter.h */, + 843723791D4F260A002B398B /* GPUImageXYDerivativeFilter.m */, + 8437237A1D4F260A002B398B /* GPUImageZoomBlurFilter.h */, + 8437237B1D4F260A002B398B /* GPUImageZoomBlurFilter.m */, + 8437237C1D4F260A002B398B /* iOS */, + ); + path = GPUImage; + sourceTree = ""; + }; + 8437237C1D4F260A002B398B /* iOS */ = { + isa = PBXGroup; + children = ( + 8437237D1D4F260A002B398B /* Framework */, + 8437237F1D4F260A002B398B /* GPUImageContext.h */, + 843723801D4F260A002B398B /* GPUImageContext.m */, + 843723811D4F260A002B398B /* GPUImageMovieWriter.h */, + 843723821D4F260A002B398B /* GPUImageMovieWriter.m */, + 843723831D4F260A002B398B /* GPUImagePicture+TextureSubimage.h */, + 843723841D4F260A002B398B /* GPUImagePicture+TextureSubimage.m */, + 843723851D4F260A002B398B /* GPUImagePicture.h */, + 843723861D4F260A002B398B /* GPUImagePicture.m */, + 843723871D4F260A002B398B /* GPUImageView.h */, + 843723881D4F260A002B398B /* GPUImageView.m */, + ); + path = iOS; + sourceTree = ""; + }; + 8437237D1D4F260A002B398B /* Framework */ = { + isa = PBXGroup; + children = ( + 8437237E1D4F260A002B398B /* GPUImageFramework.h */, + ); + path = Framework; + sourceTree = ""; + }; + 843723891D4F260A002B398B /* pili-librtmp */ = { + isa = PBXGroup; + children = ( + 8437238A1D4F260A002B398B /* amf.c */, + 8437238B1D4F260A002B398B /* amf.h */, + 8437238C1D4F260A002B398B /* bytes.h */, + 8437238D1D4F260A002B398B /* dh.h */, + 8437238E1D4F260A002B398B /* dhgroups.h */, + 8437238F1D4F260A002B398B /* error.c */, + 843723901D4F260A002B398B /* error.h */, + 843723911D4F260A002B398B /* handshake.h */, + 843723921D4F260A002B398B /* hashswf.c */, + 843723931D4F260A002B398B /* http.h */, + 843723941D4F260A002B398B /* log.c */, + 843723951D4F260A002B398B /* log.h */, + 843723961D4F260A002B398B /* parseurl.c */, + 843723971D4F260A002B398B /* rtmp.c */, + 843723981D4F260A002B398B /* rtmp.h */, + 843723991D4F260A002B398B /* rtmp_sys.h */, + ); + path = "pili-librtmp"; + sourceTree = ""; + }; B2CD14611D45F18B008082E8 /* H264 */ = { isa = PBXGroup; children = ( @@ -343,31 +1465,215 @@ buildActionMask = 2147483647; files = ( 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, + 843724711D4F260A002B398B /* GPUImagePerlinNoiseFilter.h in Headers */, + 843724F61D4F260A002B398B /* bytes.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, + 843724A51D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h in Headers */, + 843724231D4F260A002B398B /* GPUImageHoughTransformLineDetector.h in Headers */, + 8437246D1D4F260A002B398B /* GPUImageOverlayBlendFilter.h in Headers */, 84001FE71D0016380026C63F /* LFFrame.h in Headers */, + 843724C11D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h in Headers */, + 843724B71D4F260A002B398B /* GPUImageSubtractBlendFilter.h in Headers */, + 8437245B1D4F260A002B398B /* GPUImageMovie.h in Headers */, + 843724191D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h in Headers */, + 843724291D4F260A002B398B /* GPUImageHueFilter.h in Headers */, + 843724FF1D4F260A002B398B /* log.h in Headers */, + 843724AF1D4F260A002B398B /* GPUImageSourceOverBlendFilter.h in Headers */, + 843723CB1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h in Headers */, + 843723DF1D4F260A002B398B /* GPUImageDifferenceBlendFilter.h in Headers */, + 843724EA1D4F260A002B398B /* GPUImageContext.h in Headers */, + 843723D91D4F260A002B398B /* GPUImageCrosshairGenerator.h in Headers */, 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, + 843723ED1D4F260A002B398B /* GPUImageErosionFilter.h in Headers */, B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, + 843724211D4F260A002B398B /* GPUImageHistogramGenerator.h in Headers */, + 843723C51D4F260A002B398B /* GPUImageColorConversion.h in Headers */, + 8437239D1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h in Headers */, + 843724971D4F260A002B398B /* GPUImageSepiaFilter.h in Headers */, + 843723AF1D4F260A002B398B /* GPUImageBoxBlurFilter.h in Headers */, + 8437248B1D4F260A002B398B /* GPUImageRGBErosionFilter.h in Headers */, + 843724D11D4F260A002B398B /* GPUImageTwoInputFilter.h in Headers */, + 843723B31D4F260A002B398B /* GPUImageBuffer.h in Headers */, + 843724D31D4F260A002B398B /* GPUImageTwoPassFilter.h in Headers */, + 843724311D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h in Headers */, + 843724F21D4F260A002B398B /* GPUImageView.h in Headers */, + 843724991D4F260A002B398B /* GPUImageSharpenFilter.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, + 843724FB1D4F260A002B398B /* handshake.h in Headers */, B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */, + 843723F31D4F260A002B398B /* GPUImageFalseColorFilter.h in Headers */, + 843723B71D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h in Headers */, + 843724151D4F260A002B398B /* GPUImageHazeFilter.h in Headers */, + 843723E51D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h in Headers */, + 843724091D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h in Headers */, + 843724DD1D4F260A002B398B /* GPUImageVignetteFilter.h in Headers */, + 843724AD1D4F260A002B398B /* GPUImageSolidColorGenerator.h in Headers */, + 8437244D1D4F260A002B398B /* GPUImageMaskFilter.h in Headers */, + 843723E91D4F260A002B398B /* GPUImageDivideBlendFilter.h in Headers */, 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, + 843724411D4F260A002B398B /* GPUImageLookupFilter.h in Headers */, + 843724E91D4F260A002B398B /* GPUImageFramework.h in Headers */, + 8437244B1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h in Headers */, + 8437247D1D4F260A002B398B /* GPUImagePolkaDotFilter.h in Headers */, + 843724571D4F260A002B398B /* GPUImageMotionBlurFilter.h in Headers */, + 843724BD1D4F260A002B398B /* GPUImageTextureOutput.h in Headers */, + 843724DB1D4F260A002B398B /* GPUImageVideoCamera.h in Headers */, + 843724791D4F260A002B398B /* GPUImagePoissonBlendFilter.h in Headers */, B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, + 843724771D4F260A002B398B /* GPUImagePixellatePositionFilter.h in Headers */, + 843724911D4F260A002B398B /* GPUImageSaturationBlendFilter.h in Headers */, + 8437240D1D4F260A002B398B /* GPUImageGrayscaleFilter.h in Headers */, + 8437249D1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h in Headers */, + 843724751D4F260A002B398B /* GPUImagePixellateFilter.h in Headers */, + 843724E71D4F260A002B398B /* GPUImageZoomBlurFilter.h in Headers */, + 843723FF1D4F260A002B398B /* GPUImageFramebuffer.h in Headers */, + 8437244F1D4F260A002B398B /* GPUImageMedianFilter.h in Headers */, + 843724B11D4F260A002B398B /* GPUImageSphereRefractionFilter.h in Headers */, + 843724631D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h in Headers */, + 843724591D4F260A002B398B /* GPUImageMotionDetector.h in Headers */, + 8437246F1D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h in Headers */, + 843724931D4F260A002B398B /* GPUImageSaturationFilter.h in Headers */, + 843723EF1D4F260A002B398B /* GPUImageExclusionBlendFilter.h in Headers */, + 843724811D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h in Headers */, + 843724C91D4F260A002B398B /* GPUImageToneCurveFilter.h in Headers */, + 843724CF1D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h in Headers */, + 843723AD1D4F260A002B398B /* GPUImageBilateralFilter.h in Headers */, + 843724F81D4F260A002B398B /* dhgroups.h in Headers */, + 843724731D4F260A002B398B /* GPUImagePinchDistortionFilter.h in Headers */, + 843724D71D4F260A002B398B /* GPUImageUIElement.h in Headers */, + 843724BB1D4F260A002B398B /* GPUImageTextureInput.h in Headers */, + 843724871D4F260A002B398B /* GPUImageRGBClosingFilter.h in Headers */, + 843724371D4F260A002B398B /* GPUImageLevelsFilter.h in Headers */, + 843724951D4F260A002B398B /* GPUImageScreenBlendFilter.h in Headers */, 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, + 843724251D4F260A002B398B /* GPUImageHSBFilter.h in Headers */, + 843724891D4F260A002B398B /* GPUImageRGBDilationFilter.h in Headers */, + 843724C31D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h in Headers */, + 843723A71D4F260A002B398B /* GPUImageAmatorkaFilter.h in Headers */, + 8437245F1D4F260A002B398B /* GPUImageMultiplyBlendFilter.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, + 843723BB1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h in Headers */, + 8437239A1D4F260A002B398B /* GLProgram.h in Headers */, + 843723E71D4F260A002B398B /* GPUImageDissolveBlendFilter.h in Headers */, + 843723B51D4F260A002B398B /* GPUImageBulgeDistortionFilter.h in Headers */, + 843724331D4F260A002B398B /* GPUImageLanczosResamplingFilter.h in Headers */, + 843724131D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h in Headers */, + 843724C71D4F260A002B398B /* GPUImageTiltShiftFilter.h in Headers */, + 843723F91D4F260A002B398B /* GPUImageFilterGroup.h in Headers */, + 843723C31D4F260A002B398B /* GPUImageColorBurnBlendFilter.h in Headers */, + 8437243B1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h in Headers */, + 843724011D4F260A002B398B /* GPUImageFramebufferCache.h in Headers */, + 8437247B1D4F260A002B398B /* GPUImagePolarPixellateFilter.h in Headers */, + 843724AB1D4F260A002B398B /* GPUImageSolarizeFilter.h in Headers */, + 843724071D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h in Headers */, + 843723D71D4F260A002B398B /* GPUImageCropFilter.h in Headers */, + 8437249B1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h in Headers */, + 843724031D4F260A002B398B /* GPUImageGammaFilter.h in Headers */, + 8437242B1D4F260A002B398B /* GPUImageiOSBlurFilter.h in Headers */, + 843724EE1D4F260A002B398B /* GPUImagePicture+TextureSubimage.h in Headers */, + 843724111D4F260A002B398B /* GPUImageHardLightBlendFilter.h in Headers */, + 843723A51D4F260A002B398B /* GPUImageAlphaBlendFilter.h in Headers */, + 843724E11D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h in Headers */, + 843723EB1D4F260A002B398B /* GPUImageEmbossFilter.h in Headers */, + 843724EC1D4F260A002B398B /* GPUImageMovieWriter.h in Headers */, + 843724451D4F260A002B398B /* GPUImageLuminanceRangeFilter.h in Headers */, + 843723D31D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h in Headers */, + 8437243F1D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h in Headers */, + 843725021D4F260A002B398B /* rtmp.h in Headers */, B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */, + 843724FA1D4F260A002B398B /* error.h in Headers */, + 843723E31D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h in Headers */, + 843724351D4F260A002B398B /* GPUImageLaplacianFilter.h in Headers */, + 843724511D4F260A002B398B /* GPUImageMissEtikateFilter.h in Headers */, + 843724D91D4F260A002B398B /* GPUImageUnsharpMaskFilter.h in Headers */, + 843724A71D4F260A002B398B /* GPUImageSoftEleganceFilter.h in Headers */, + 843724CB1D4F260A002B398B /* GPUImageToonFilter.h in Headers */, + 843723DD1D4F260A002B398B /* GPUImageDarkenBlendFilter.h in Headers */, 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, + 8437242D1D4F260A002B398B /* GPUImageJFAVoronoiFilter.h in Headers */, + 843723D11D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h in Headers */, + 843723F51D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h in Headers */, 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, + 843723BF1D4F260A002B398B /* GPUImageClosingFilter.h in Headers */, + 843723FB1D4F260A002B398B /* GPUImageFilterPipeline.h in Headers */, + 843724E51D4F260A002B398B /* GPUImageXYDerivativeFilter.h in Headers */, + 8437241F1D4F260A002B398B /* GPUImageHistogramFilter.h in Headers */, + 8437248D1D4F260A002B398B /* GPUImageRGBFilter.h in Headers */, + 843723E11D4F260A002B398B /* GPUImageDilationFilter.h in Headers */, + 843724531D4F260A002B398B /* GPUImageMonochromeFilter.h in Headers */, + 843724391D4F260A002B398B /* GPUImageLightenBlendFilter.h in Headers */, + 843723CD1D4F260A002B398B /* GPUImageColorMatrixFilter.h in Headers */, + 843724DF1D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h in Headers */, + 8437241B1D4F260A002B398B /* GPUImageHighPassFilter.h in Headers */, + 843724CD1D4F260A002B398B /* GPUImageTransformFilter.h in Headers */, + 843724831D4F260A002B398B /* GPUImageRawDataInput.h in Headers */, + 843724F51D4F260A002B398B /* amf.h in Headers */, + 843723A31D4F260A002B398B /* GPUImageAddBlendFilter.h in Headers */, + 843724B91D4F260A002B398B /* GPUImageSwirlFilter.h in Headers */, + 8437246B1D4F260A002B398B /* GPUImageOutput.h in Headers */, + 843724851D4F260A002B398B /* GPUImageRawDataOutput.h in Headers */, + 843723DB1D4F260A002B398B /* GPUImageCrosshatchFilter.h in Headers */, + 843724491D4F260A002B398B /* GPUImageLuminosity.h in Headers */, 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, + 843723C71D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h in Headers */, + 8437241D1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h in Headers */, + 843723C91D4F260A002B398B /* GPUImageColorInvertFilter.h in Headers */, + 843724E31D4F260A002B398B /* GPUImageWhiteBalanceFilter.h in Headers */, + 843724C51D4F260A002B398B /* GPUImageThresholdSketchFilter.h in Headers */, + 8437248F1D4F260A002B398B /* GPUImageRGBOpeningFilter.h in Headers */, + 8437240B1D4F260A002B398B /* GPUImageGlassSphereFilter.h in Headers */, + 8437239F1D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h in Headers */, + 843724651D4F260A002B398B /* GPUImageNormalBlendFilter.h in Headers */, + 8437245D1D4F260A002B398B /* GPUImageMovieComposition.h in Headers */, 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, + 843724B51D4F260A002B398B /* GPUImageStretchDistortionFilter.h in Headers */, 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, + 843724BF1D4F260A002B398B /* GPUImageThreeInputFilter.h in Headers */, + 843724F71D4F260A002B398B /* dh.h in Headers */, B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */, + 843725031D4F260A002B398B /* rtmp_sys.h in Headers */, + 843724691D4F260A002B398B /* GPUImageOpeningFilter.h in Headers */, + 843723C11D4F260A002B398B /* GPUImageColorBlendFilter.h in Headers */, + 8437249F1D4F260A002B398B /* GPUImageSketchFilter.h in Headers */, B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, + 843724A91D4F260A002B398B /* GPUImageSoftLightBlendFilter.h in Headers */, + 843723A91D4F260A002B398B /* GPUImageAverageColor.h in Headers */, + 843723FD1D4F260A002B398B /* GPUImageFourInputFilter.h in Headers */, + 843724431D4F260A002B398B /* GPUImageLowPassFilter.h in Headers */, + 8437239C1D4F260A002B398B /* GPUImage.h in Headers */, B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, + 8437242F1D4F260A002B398B /* GPUImageKuwaharaFilter.h in Headers */, + 843723B11D4F260A002B398B /* GPUImageBrightnessFilter.h in Headers */, + 843724FD1D4F260A002B398B /* http.h in Headers */, + 843724611D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h in Headers */, + 8437243D1D4F260A002B398B /* GPUImageLineGenerator.h in Headers */, 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, + 843723AB1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h in Headers */, + 843723F71D4F260A002B398B /* GPUImageFilter.h in Headers */, + 8437240F1D4F260A002B398B /* GPUImageHalftoneFilter.h in Headers */, + 843723A11D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h in Headers */, + 843723CF1D4F260A002B398B /* GPUImageColorPackingFilter.h in Headers */, + 843723B91D4F260A002B398B /* GPUImageCGAColorspaceFilter.h in Headers */, B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */, + 843724051D4F260A002B398B /* GPUImageGaussianBlurFilter.h in Headers */, + 843724B31D4F260A002B398B /* GPUImageStillCamera.h in Headers */, + 843724D51D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h in Headers */, + 843723F11D4F260A002B398B /* GPUImageExposureFilter.h in Headers */, + 843723D51D4F260A002B398B /* GPUImageContrastFilter.h in Headers */, + 843724A11D4F260A002B398B /* GPUImageSkinToneFilter.h in Headers */, + 843724271D4F260A002B398B /* GPUImageHueBlendFilter.h in Headers */, + 843724471D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h in Headers */, + 843724551D4F260A002B398B /* GPUImageMosaicFilter.h in Headers */, + 843723BD1D4F260A002B398B /* GPUImageChromaKeyFilter.h in Headers */, + 843724171D4F260A002B398B /* GPUImageHighlightShadowFilter.h in Headers */, 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, + 843724671D4F260A002B398B /* GPUImageOpacityFilter.h in Headers */, + 8437247F1D4F260A002B398B /* GPUImagePosterizeFilter.h in Headers */, + 843724A31D4F260A002B398B /* GPUImageSmoothToonFilter.h in Headers */, + 843724F01D4F260A002B398B /* GPUImagePicture.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -468,28 +1774,206 @@ buildActionMask = 2147483647; files = ( 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, + 843724C21D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m in Sources */, 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, + 843724BA1D4F260A002B398B /* GPUImageSwirlFilter.m in Sources */, + 843723A41D4F260A002B398B /* GPUImageAddBlendFilter.m in Sources */, + 843723B01D4F260A002B398B /* GPUImageBoxBlurFilter.m in Sources */, + 843723DC1D4F260A002B398B /* GPUImageCrosshatchFilter.m in Sources */, + 843724E41D4F260A002B398B /* GPUImageWhiteBalanceFilter.m in Sources */, + 843724101D4F260A002B398B /* GPUImageHalftoneFilter.m in Sources */, + 843724301D4F260A002B398B /* GPUImageKuwaharaFilter.m in Sources */, B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */, + 843724201D4F260A002B398B /* GPUImageHistogramFilter.m in Sources */, + 8437246E1D4F260A002B398B /* GPUImageOverlayBlendFilter.m in Sources */, + 843723A81D4F260A002B398B /* GPUImageAmatorkaFilter.m in Sources */, 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, + 843724C41D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m in Sources */, + 843724F91D4F260A002B398B /* error.c in Sources */, + 843724DC1D4F260A002B398B /* GPUImageVideoCamera.m in Sources */, + 8437246C1D4F260A002B398B /* GPUImageOutput.m in Sources */, + 843724B01D4F260A002B398B /* GPUImageSourceOverBlendFilter.m in Sources */, + 843724581D4F260A002B398B /* GPUImageMotionBlurFilter.m in Sources */, 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, + 843723B81D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m in Sources */, 84001FE81D0016380026C63F /* LFFrame.m in Sources */, B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */, + 843724CE1D4F260A002B398B /* GPUImageTransformFilter.m in Sources */, + 843723E81D4F260A002B398B /* GPUImageDissolveBlendFilter.m in Sources */, + 843723D81D4F260A002B398B /* GPUImageCropFilter.m in Sources */, + 843723EC1D4F260A002B398B /* GPUImageEmbossFilter.m in Sources */, + 843724AA1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m in Sources */, + 843723F21D4F260A002B398B /* GPUImageExposureFilter.m in Sources */, + 8437244E1D4F260A002B398B /* GPUImageMaskFilter.m in Sources */, + 843724841D4F260A002B398B /* GPUImageRawDataInput.m in Sources */, B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, + 843723F01D4F260A002B398B /* GPUImageExclusionBlendFilter.m in Sources */, + 843724F31D4F260A002B398B /* GPUImageView.m in Sources */, + 843724081D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m in Sources */, + 843724A41D4F260A002B398B /* GPUImageSmoothToonFilter.m in Sources */, + 8437241A1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m in Sources */, + 843724821D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m in Sources */, + 843724CC1D4F260A002B398B /* GPUImageToonFilter.m in Sources */, + 843724801D4F260A002B398B /* GPUImagePosterizeFilter.m in Sources */, B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, + 843724041D4F260A002B398B /* GPUImageGammaFilter.m in Sources */, + 843724B21D4F260A002B398B /* GPUImageSphereRefractionFilter.m in Sources */, + 8437248E1D4F260A002B398B /* GPUImageRGBFilter.m in Sources */, + 843724161D4F260A002B398B /* GPUImageHazeFilter.m in Sources */, + 843723BC1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m in Sources */, + 8437247A1D4F260A002B398B /* GPUImagePoissonBlendFilter.m in Sources */, + 843723E01D4F260A002B398B /* GPUImageDifferenceBlendFilter.m in Sources */, + 843723EA1D4F260A002B398B /* GPUImageDivideBlendFilter.m in Sources */, + 8437243E1D4F260A002B398B /* GPUImageLineGenerator.m in Sources */, + 843723B21D4F260A002B398B /* GPUImageBrightnessFilter.m in Sources */, + 843723C21D4F260A002B398B /* GPUImageColorBlendFilter.m in Sources */, + 843724241D4F260A002B398B /* GPUImageHoughTransformLineDetector.m in Sources */, + 843723A21D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m in Sources */, + 843724BE1D4F260A002B398B /* GPUImageTextureOutput.m in Sources */, + 8437241C1D4F260A002B398B /* GPUImageHighPassFilter.m in Sources */, B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */, + 843723C01D4F260A002B398B /* GPUImageClosingFilter.m in Sources */, + 843724AE1D4F260A002B398B /* GPUImageSolidColorGenerator.m in Sources */, + 843724ED1D4F260A002B398B /* GPUImageMovieWriter.m in Sources */, + 843723AA1D4F260A002B398B /* GPUImageAverageColor.m in Sources */, 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, + 8437247E1D4F260A002B398B /* GPUImagePolkaDotFilter.m in Sources */, + 843723D01D4F260A002B398B /* GPUImageColorPackingFilter.m in Sources */, + 843724F41D4F260A002B398B /* amf.c in Sources */, + 8437242C1D4F260A002B398B /* GPUImageiOSBlurFilter.m in Sources */, + 843724941D4F260A002B398B /* GPUImageSaturationFilter.m in Sources */, + 8437248A1D4F260A002B398B /* GPUImageRGBDilationFilter.m in Sources */, + 843724781D4F260A002B398B /* GPUImagePixellatePositionFilter.m in Sources */, + 8437245A1D4F260A002B398B /* GPUImageMotionDetector.m in Sources */, 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, + 843724B81D4F260A002B398B /* GPUImageSubtractBlendFilter.m in Sources */, + 843724741D4F260A002B398B /* GPUImagePinchDistortionFilter.m in Sources */, + 843724D61D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m in Sources */, B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */, + 843723DA1D4F260A002B398B /* GPUImageCrosshairGenerator.m in Sources */, + 843724A01D4F260A002B398B /* GPUImageSketchFilter.m in Sources */, + 843723A01D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m in Sources */, + 8437249A1D4F260A002B398B /* GPUImageSharpenFilter.m in Sources */, + 843723C41D4F260A002B398B /* GPUImageColorBurnBlendFilter.m in Sources */, + 843724121D4F260A002B398B /* GPUImageHardLightBlendFilter.m in Sources */, + 843723D61D4F260A002B398B /* GPUImageContrastFilter.m in Sources */, + 843724BC1D4F260A002B398B /* GPUImageTextureInput.m in Sources */, + 843724521D4F260A002B398B /* GPUImageMissEtikateFilter.m in Sources */, B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */, B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, + 843724CA1D4F260A002B398B /* GPUImageToneCurveFilter.m in Sources */, + 843724D21D4F260A002B398B /* GPUImageTwoInputFilter.m in Sources */, + 843723F61D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m in Sources */, + 843724901D4F260A002B398B /* GPUImageRGBOpeningFilter.m in Sources */, + 843724861D4F260A002B398B /* GPUImageRawDataOutput.m in Sources */, + 843724F11D4F260A002B398B /* GPUImagePicture.m in Sources */, + 843723E41D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m in Sources */, + 843724DE1D4F260A002B398B /* GPUImageVignetteFilter.m in Sources */, + 8437245C1D4F260A002B398B /* GPUImageMovie.m in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, + 843724A61D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m in Sources */, + 843724281D4F260A002B398B /* GPUImageHueBlendFilter.m in Sources */, + 843723B61D4F260A002B398B /* GPUImageBulgeDistortionFilter.m in Sources */, + 8437243A1D4F260A002B398B /* GPUImageLightenBlendFilter.m in Sources */, + 843724AC1D4F260A002B398B /* GPUImageSolarizeFilter.m in Sources */, + 843724481D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m in Sources */, + 843723C61D4F260A002B398B /* GPUImageColorConversion.m in Sources */, + 843724561D4F260A002B398B /* GPUImageMosaicFilter.m in Sources */, + 8437245E1D4F260A002B398B /* GPUImageMovieComposition.m in Sources */, + 843724A81D4F260A002B398B /* GPUImageSoftEleganceFilter.m in Sources */, + 843724961D4F260A002B398B /* GPUImageScreenBlendFilter.m in Sources */, + 843724541D4F260A002B398B /* GPUImageMonochromeFilter.m in Sources */, + 843723B41D4F260A002B398B /* GPUImageBuffer.m in Sources */, + 8437239B1D4F260A002B398B /* GLProgram.m in Sources */, + 843724E81D4F260A002B398B /* GPUImageZoomBlurFilter.m in Sources */, 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, + 8437244A1D4F260A002B398B /* GPUImageLuminosity.m in Sources */, + 843724FC1D4F260A002B398B /* hashswf.c in Sources */, + 843724321D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m in Sources */, + 843724E21D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m in Sources */, 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, + 8437244C1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m in Sources */, + 843724FE1D4F260A002B398B /* log.c in Sources */, + 8437241E1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m in Sources */, 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, + 843723DE1D4F260A002B398B /* GPUImageDarkenBlendFilter.m in Sources */, + 843723D41D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m in Sources */, + 843724921D4F260A002B398B /* GPUImageSaturationBlendFilter.m in Sources */, + 843724261D4F260A002B398B /* GPUImageHSBFilter.m in Sources */, + 843724E61D4F260A002B398B /* GPUImageXYDerivativeFilter.m in Sources */, + 843724401D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m in Sources */, + 8437240E1D4F260A002B398B /* GPUImageGrayscaleFilter.m in Sources */, + 843724361D4F260A002B398B /* GPUImageLaplacianFilter.m in Sources */, + 843723FE1D4F260A002B398B /* GPUImageFourInputFilter.m in Sources */, + 843724061D4F260A002B398B /* GPUImageGaussianBlurFilter.m in Sources */, + 843724A21D4F260A002B398B /* GPUImageSkinToneFilter.m in Sources */, + 8437249C1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m in Sources */, + 843724601D4F260A002B398B /* GPUImageMultiplyBlendFilter.m in Sources */, + 843723E61D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m in Sources */, + 8437246A1D4F260A002B398B /* GPUImageOpeningFilter.m in Sources */, + 8437247C1D4F260A002B398B /* GPUImagePolarPixellateFilter.m in Sources */, + 843724381D4F260A002B398B /* GPUImageLevelsFilter.m in Sources */, + 8437248C1D4F260A002B398B /* GPUImageRGBErosionFilter.m in Sources */, + 843723CE1D4F260A002B398B /* GPUImageColorMatrixFilter.m in Sources */, + 8437242E1D4F260A002B398B /* GPUImageJFAVoronoiFilter.m in Sources */, + 843723CC1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m in Sources */, + 8437239E1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m in Sources */, + 843724021D4F260A002B398B /* GPUImageFramebufferCache.m in Sources */, + 843724501D4F260A002B398B /* GPUImageMedianFilter.m in Sources */, + 8437240C1D4F260A002B398B /* GPUImageGlassSphereFilter.m in Sources */, + 843724DA1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m in Sources */, + 8437240A1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m in Sources */, + 843723AE1D4F260A002B398B /* GPUImageBilateralFilter.m in Sources */, + 843724141D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m in Sources */, + 843724C01D4F260A002B398B /* GPUImageThreeInputFilter.m in Sources */, + 843724E01D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m in Sources */, + 843724721D4F260A002B398B /* GPUImagePerlinNoiseFilter.m in Sources */, + 843724701D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m in Sources */, + 843723F81D4F260A002B398B /* GPUImageFilter.m in Sources */, + 843724881D4F260A002B398B /* GPUImageRGBClosingFilter.m in Sources */, + 8437242A1D4F260A002B398B /* GPUImageHueFilter.m in Sources */, + 843724D41D4F260A002B398B /* GPUImageTwoPassFilter.m in Sources */, + 843723CA1D4F260A002B398B /* GPUImageColorInvertFilter.m in Sources */, + 843724D01D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m in Sources */, + 843724421D4F260A002B398B /* GPUImageLookupFilter.m in Sources */, + 843723BA1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m in Sources */, + 843724681D4F260A002B398B /* GPUImageOpacityFilter.m in Sources */, + 843724D81D4F260A002B398B /* GPUImageUIElement.m in Sources */, + 843724981D4F260A002B398B /* GPUImageSepiaFilter.m in Sources */, + 843724461D4F260A002B398B /* GPUImageLuminanceRangeFilter.m in Sources */, 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, + 843723BE1D4F260A002B398B /* GPUImageChromaKeyFilter.m in Sources */, + 843724761D4F260A002B398B /* GPUImagePixellateFilter.m in Sources */, + 843724641D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m in Sources */, + 843724181D4F260A002B398B /* GPUImageHighlightShadowFilter.m in Sources */, + 843723EE1D4F260A002B398B /* GPUImageErosionFilter.m in Sources */, + 843723F41D4F260A002B398B /* GPUImageFalseColorFilter.m in Sources */, + 843723A61D4F260A002B398B /* GPUImageAlphaBlendFilter.m in Sources */, + 843723D21D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m in Sources */, + 843724B41D4F260A002B398B /* GPUImageStillCamera.m in Sources */, + 843724B61D4F260A002B398B /* GPUImageStretchDistortionFilter.m in Sources */, + 843724001D4F260A002B398B /* GPUImageFramebuffer.m in Sources */, + 843724C61D4F260A002B398B /* GPUImageThresholdSketchFilter.m in Sources */, + 8437243C1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m in Sources */, + 843724EB1D4F260A002B398B /* GPUImageContext.m in Sources */, + 843724C81D4F260A002B398B /* GPUImageTiltShiftFilter.m in Sources */, + 843725001D4F260A002B398B /* parseurl.c in Sources */, + 843724EF1D4F260A002B398B /* GPUImagePicture+TextureSubimage.m in Sources */, + 843723C81D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m in Sources */, + 8437249E1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m in Sources */, + 843723E21D4F260A002B398B /* GPUImageDilationFilter.m in Sources */, + 843724661D4F260A002B398B /* GPUImageNormalBlendFilter.m in Sources */, + 843723AC1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m in Sources */, + 843723FA1D4F260A002B398B /* GPUImageFilterGroup.m in Sources */, 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, + 843723FC1D4F260A002B398B /* GPUImageFilterPipeline.m in Sources */, + 843724441D4F260A002B398B /* GPUImageLowPassFilter.m in Sources */, B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */, + 843725011D4F260A002B398B /* rtmp.c in Sources */, + 843724221D4F260A002B398B /* GPUImageHistogramGenerator.m in Sources */, + 843724621D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m in Sources */, + 843724341D4F260A002B398B /* GPUImageLanczosResamplingFilter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 52415b0a0f60f1ad2a3811bffd6536fcd5df2908..1eeb98fc49a942faecdcd4eda90ccebd4d20389a 100644 GIT binary patch literal 17738 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 diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 84df70fc..f80232a8 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.9.5 + 1.9.6 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/Vendor/GPUImage/GLProgram.h b/LFLiveKit/Vendor/GPUImage/GLProgram.h new file mode 100755 index 00000000..cd455e71 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GLProgram.h @@ -0,0 +1,42 @@ +// This is Jeff LaMarche's GLProgram OpenGL shader wrapper class from his OpenGL ES 2.0 book. +// A description of this can be found at his page on the topic: +// http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-ios-chapter-4.html +// I've extended this to be able to take programs as NSStrings in addition to files, for baked-in shaders + +#import + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#import +#import +#else +#import +#import +#endif + +@interface GLProgram : NSObject +{ + NSMutableArray *attributes; + NSMutableArray *uniforms; + GLuint program, + vertShader, + fragShader; +} + +@property(readwrite, nonatomic) BOOL initialized; +@property(readwrite, copy, nonatomic) NSString *vertexShaderLog; +@property(readwrite, copy, nonatomic) NSString *fragmentShaderLog; +@property(readwrite, copy, nonatomic) NSString *programLog; + +- (id)initWithVertexShaderString:(NSString *)vShaderString + fragmentShaderString:(NSString *)fShaderString; +- (id)initWithVertexShaderString:(NSString *)vShaderString + fragmentShaderFilename:(NSString *)fShaderFilename; +- (id)initWithVertexShaderFilename:(NSString *)vShaderFilename + fragmentShaderFilename:(NSString *)fShaderFilename; +- (void)addAttribute:(NSString *)attributeName; +- (GLuint)attributeIndex:(NSString *)attributeName; +- (GLuint)uniformIndex:(NSString *)uniformName; +- (BOOL)link; +- (void)use; +- (void)validate; +@end diff --git a/LFLiveKit/Vendor/GPUImage/GLProgram.m b/LFLiveKit/Vendor/GPUImage/GLProgram.m new file mode 100755 index 00000000..105d75fe --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GLProgram.m @@ -0,0 +1,236 @@ +// This is Jeff LaMarche's GLProgram OpenGL shader wrapper class from his OpenGL ES 2.0 book. +// A description of this can be found at his page on the topic: +// http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-ios-chapter-4.html + + +#import "GLProgram.h" +// START:typedefs +#pragma mark Function Pointer Definitions +typedef void (*GLInfoFunction)(GLuint program, GLenum pname, GLint* params); +typedef void (*GLLogFunction) (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); +// END:typedefs +#pragma mark - +#pragma mark Private Extension Method Declaration +// START:extension +@interface GLProgram() + +- (BOOL)compileShader:(GLuint *)shader + type:(GLenum)type + string:(NSString *)shaderString; +@end +// END:extension +#pragma mark - + +@implementation GLProgram +// START:init + +@synthesize initialized = _initialized; + +- (id)initWithVertexShaderString:(NSString *)vShaderString + fragmentShaderString:(NSString *)fShaderString; +{ + if ((self = [super init])) + { + _initialized = NO; + + attributes = [[NSMutableArray alloc] init]; + uniforms = [[NSMutableArray alloc] init]; + program = glCreateProgram(); + + if (![self compileShader:&vertShader + type:GL_VERTEX_SHADER + string:vShaderString]) + { + NSLog(@"Failed to compile vertex shader"); + } + + // Create and compile fragment shader + if (![self compileShader:&fragShader + type:GL_FRAGMENT_SHADER + string:fShaderString]) + { + NSLog(@"Failed to compile fragment shader"); + } + + glAttachShader(program, vertShader); + glAttachShader(program, fragShader); + } + + return self; +} + +- (id)initWithVertexShaderString:(NSString *)vShaderString + fragmentShaderFilename:(NSString *)fShaderFilename; +{ + NSString *fragShaderPathname = [[NSBundle mainBundle] pathForResource:fShaderFilename ofType:@"fsh"]; + NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragShaderPathname encoding:NSUTF8StringEncoding error:nil]; + + if ((self = [self initWithVertexShaderString:vShaderString fragmentShaderString:fragmentShaderString])) + { + } + + return self; +} + +- (id)initWithVertexShaderFilename:(NSString *)vShaderFilename + fragmentShaderFilename:(NSString *)fShaderFilename; +{ + NSString *vertShaderPathname = [[NSBundle mainBundle] pathForResource:vShaderFilename ofType:@"vsh"]; + NSString *vertexShaderString = [NSString stringWithContentsOfFile:vertShaderPathname encoding:NSUTF8StringEncoding error:nil]; + + NSString *fragShaderPathname = [[NSBundle mainBundle] pathForResource:fShaderFilename ofType:@"fsh"]; + NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragShaderPathname encoding:NSUTF8StringEncoding error:nil]; + + if ((self = [self initWithVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString])) + { + } + + return self; +} +// END:init +// START:compile +- (BOOL)compileShader:(GLuint *)shader + type:(GLenum)type + string:(NSString *)shaderString +{ +// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + + GLint status; + const GLchar *source; + + source = + (GLchar *)[shaderString UTF8String]; + if (!source) + { + NSLog(@"Failed to load vertex shader"); + return NO; + } + + *shader = glCreateShader(type); + glShaderSource(*shader, 1, &source, NULL); + glCompileShader(*shader); + + glGetShaderiv(*shader, GL_COMPILE_STATUS, &status); + + if (status != GL_TRUE) + { + GLint logLength; + glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength); + if (logLength > 0) + { + GLchar *log = (GLchar *)malloc(logLength); + glGetShaderInfoLog(*shader, logLength, &logLength, log); + if (shader == &vertShader) + { + self.vertexShaderLog = [NSString stringWithFormat:@"%s", log]; + } + else + { + self.fragmentShaderLog = [NSString stringWithFormat:@"%s", log]; + } + + free(log); + } + } + +// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); +// NSLog(@"Compiled in %f ms", linkTime * 1000.0); + + return status == GL_TRUE; +} +// END:compile +#pragma mark - +// START:addattribute +- (void)addAttribute:(NSString *)attributeName +{ + if (![attributes containsObject:attributeName]) + { + [attributes addObject:attributeName]; + glBindAttribLocation(program, + (GLuint)[attributes indexOfObject:attributeName], + [attributeName UTF8String]); + } +} +// END:addattribute +// START:indexmethods +- (GLuint)attributeIndex:(NSString *)attributeName +{ + return (GLuint)[attributes indexOfObject:attributeName]; +} +- (GLuint)uniformIndex:(NSString *)uniformName +{ + return glGetUniformLocation(program, [uniformName UTF8String]); +} +// END:indexmethods +#pragma mark - +// START:link +- (BOOL)link +{ +// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + + GLint status; + + glLinkProgram(program); + + glGetProgramiv(program, GL_LINK_STATUS, &status); + if (status == GL_FALSE) + return NO; + + if (vertShader) + { + glDeleteShader(vertShader); + vertShader = 0; + } + if (fragShader) + { + glDeleteShader(fragShader); + fragShader = 0; + } + + self.initialized = YES; + +// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); +// NSLog(@"Linked in %f ms", linkTime * 1000.0); + + return YES; +} +// END:link +// START:use +- (void)use +{ + glUseProgram(program); +} +// END:use +#pragma mark - + +- (void)validate; +{ + GLint logLength; + + glValidateProgram(program); + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); + if (logLength > 0) + { + GLchar *log = (GLchar *)malloc(logLength); + glGetProgramInfoLog(program, logLength, &logLength, log); + self.programLog = [NSString stringWithFormat:@"%s", log]; + free(log); + } +} + +#pragma mark - +// START:dealloc +- (void)dealloc +{ + if (vertShader) + glDeleteShader(vertShader); + + if (fragShader) + glDeleteShader(fragShader); + + if (program) + glDeleteProgram(program); + +} +// END:dealloc +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage.h b/LFLiveKit/Vendor/GPUImage/GPUImage.h new file mode 100755 index 00000000..3e91c29c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImage.h @@ -0,0 +1,170 @@ +#import "GLProgram.h" + +// Base classes +#import "GPUImageContext.h" +#import "GPUImageOutput.h" +#import "GPUImageView.h" +#import "GPUImageVideoCamera.h" +#import "GPUImageStillCamera.h" +#import "GPUImageMovie.h" +#import "GPUImagePicture.h" +#import "GPUImageRawDataInput.h" +#import "GPUImageRawDataOutput.h" +#import "GPUImageMovieWriter.h" +#import "GPUImageFilterPipeline.h" +#import "GPUImageTextureOutput.h" +#import "GPUImageFilterGroup.h" +#import "GPUImageTextureInput.h" +#import "GPUImageUIElement.h" +#import "GPUImageBuffer.h" +#import "GPUImageFramebuffer.h" +#import "GPUImageFramebufferCache.h" + +// Filters +#import "GPUImageFilter.h" +#import "GPUImageTwoInputFilter.h" +#import "GPUImagePixellateFilter.h" +#import "GPUImagePixellatePositionFilter.h" +#import "GPUImageSepiaFilter.h" +#import "GPUImageColorInvertFilter.h" +#import "GPUImageSaturationFilter.h" +#import "GPUImageContrastFilter.h" +#import "GPUImageExposureFilter.h" +#import "GPUImageBrightnessFilter.h" +#import "GPUImageLevelsFilter.h" +#import "GPUImageSharpenFilter.h" +#import "GPUImageGammaFilter.h" +#import "GPUImageSobelEdgeDetectionFilter.h" +#import "GPUImageSketchFilter.h" +#import "GPUImageToonFilter.h" +#import "GPUImageSmoothToonFilter.h" +#import "GPUImageMultiplyBlendFilter.h" +#import "GPUImageDissolveBlendFilter.h" +#import "GPUImageKuwaharaFilter.h" +#import "GPUImageKuwaharaRadius3Filter.h" +#import "GPUImageVignetteFilter.h" +#import "GPUImageGaussianBlurFilter.h" +#import "GPUImageGaussianBlurPositionFilter.h" +#import "GPUImageGaussianSelectiveBlurFilter.h" +#import "GPUImageOverlayBlendFilter.h" +#import "GPUImageDarkenBlendFilter.h" +#import "GPUImageLightenBlendFilter.h" +#import "GPUImageSwirlFilter.h" +#import "GPUImageSourceOverBlendFilter.h" +#import "GPUImageColorBurnBlendFilter.h" +#import "GPUImageColorDodgeBlendFilter.h" +#import "GPUImageScreenBlendFilter.h" +#import "GPUImageExclusionBlendFilter.h" +#import "GPUImageDifferenceBlendFilter.h" +#import "GPUImageSubtractBlendFilter.h" +#import "GPUImageHardLightBlendFilter.h" +#import "GPUImageSoftLightBlendFilter.h" +#import "GPUImageColorBlendFilter.h" +#import "GPUImageHueBlendFilter.h" +#import "GPUImageSaturationBlendFilter.h" +#import "GPUImageLuminosityBlendFilter.h" +#import "GPUImageCropFilter.h" +#import "GPUImageGrayscaleFilter.h" +#import "GPUImageTransformFilter.h" +#import "GPUImageChromaKeyBlendFilter.h" +#import "GPUImageHazeFilter.h" +#import "GPUImageLuminanceThresholdFilter.h" +#import "GPUImagePosterizeFilter.h" +#import "GPUImageBoxBlurFilter.h" +#import "GPUImageAdaptiveThresholdFilter.h" +#import "GPUImageSolarizeFilter.h" +#import "GPUImageUnsharpMaskFilter.h" +#import "GPUImageBulgeDistortionFilter.h" +#import "GPUImagePinchDistortionFilter.h" +#import "GPUImageCrosshatchFilter.h" +#import "GPUImageCGAColorspaceFilter.h" +#import "GPUImagePolarPixellateFilter.h" +#import "GPUImageStretchDistortionFilter.h" +#import "GPUImagePerlinNoiseFilter.h" +#import "GPUImageJFAVoronoiFilter.h" +#import "GPUImageVoronoiConsumerFilter.h" +#import "GPUImageMosaicFilter.h" +#import "GPUImageTiltShiftFilter.h" +#import "GPUImage3x3ConvolutionFilter.h" +#import "GPUImageEmbossFilter.h" +#import "GPUImageCannyEdgeDetectionFilter.h" +#import "GPUImageThresholdEdgeDetectionFilter.h" +#import "GPUImageMaskFilter.h" +#import "GPUImageHistogramFilter.h" +#import "GPUImageHistogramGenerator.h" +#import "GPUImageHistogramEqualizationFilter.h" +#import "GPUImagePrewittEdgeDetectionFilter.h" +#import "GPUImageXYDerivativeFilter.h" +#import "GPUImageHarrisCornerDetectionFilter.h" +#import "GPUImageAlphaBlendFilter.h" +#import "GPUImageNormalBlendFilter.h" +#import "GPUImageNonMaximumSuppressionFilter.h" +#import "GPUImageRGBFilter.h" +#import "GPUImageMedianFilter.h" +#import "GPUImageBilateralFilter.h" +#import "GPUImageCrosshairGenerator.h" +#import "GPUImageToneCurveFilter.h" +#import "GPUImageNobleCornerDetectionFilter.h" +#import "GPUImageShiTomasiFeatureDetectionFilter.h" +#import "GPUImageErosionFilter.h" +#import "GPUImageRGBErosionFilter.h" +#import "GPUImageDilationFilter.h" +#import "GPUImageRGBDilationFilter.h" +#import "GPUImageOpeningFilter.h" +#import "GPUImageRGBOpeningFilter.h" +#import "GPUImageClosingFilter.h" +#import "GPUImageRGBClosingFilter.h" +#import "GPUImageColorPackingFilter.h" +#import "GPUImageSphereRefractionFilter.h" +#import "GPUImageMonochromeFilter.h" +#import "GPUImageOpacityFilter.h" +#import "GPUImageHighlightShadowFilter.h" +#import "GPUImageFalseColorFilter.h" +#import "GPUImageHSBFilter.h" +#import "GPUImageHueFilter.h" +#import "GPUImageGlassSphereFilter.h" +#import "GPUImageLookupFilter.h" +#import "GPUImageAmatorkaFilter.h" +#import "GPUImageMissEtikateFilter.h" +#import "GPUImageSoftEleganceFilter.h" +#import "GPUImageAddBlendFilter.h" +#import "GPUImageDivideBlendFilter.h" +#import "GPUImagePolkaDotFilter.h" +#import "GPUImageLocalBinaryPatternFilter.h" +#import "GPUImageColorLocalBinaryPatternFilter.h" +#import "GPUImageLanczosResamplingFilter.h" +#import "GPUImageAverageColor.h" +#import "GPUImageSolidColorGenerator.h" +#import "GPUImageLuminosity.h" +#import "GPUImageAverageLuminanceThresholdFilter.h" +#import "GPUImageWhiteBalanceFilter.h" +#import "GPUImageChromaKeyFilter.h" +#import "GPUImageLowPassFilter.h" +#import "GPUImageHighPassFilter.h" +#import "GPUImageMotionDetector.h" +#import "GPUImageHalftoneFilter.h" +#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" +#import "GPUImageHoughTransformLineDetector.h" +#import "GPUImageParallelCoordinateLineTransformFilter.h" +#import "GPUImageThresholdSketchFilter.h" +#import "GPUImageLineGenerator.h" +#import "GPUImageLinearBurnBlendFilter.h" +#import "GPUImageGaussianBlurPositionFilter.h" +#import "GPUImagePixellatePositionFilter.h" +#import "GPUImageTwoInputCrossTextureSamplingFilter.h" +#import "GPUImagePoissonBlendFilter.h" +#import "GPUImageMotionBlurFilter.h" +#import "GPUImageZoomBlurFilter.h" +#import "GPUImageLaplacianFilter.h" +#import "GPUImageiOSBlurFilter.h" +#import "GPUImageLuminanceRangeFilter.h" +#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" +#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" +#import "GPUImageSingleComponentGaussianBlurFilter.h" +#import "GPUImageThreeInputFilter.h" +#import "GPUImageFourInputFilter.h" +#import "GPUImageWeakPixelInclusionFilter.h" +#import "GPUImageColorConversion.h" +#import "GPUImageColourFASTFeatureDetector.h" +#import "GPUImageColourFASTSamplingOperation.h" + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.h new file mode 100755 index 00000000..67e68def --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.h @@ -0,0 +1,18 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +/** Runs a 3x3 convolution kernel against the image + */ +@interface GPUImage3x3ConvolutionFilter : GPUImage3x3TextureSamplingFilter +{ + GLint convolutionMatrixUniform; +} + +/** Convolution kernel to run against the image + + The convolution kernel is a 3x3 matrix of values to apply to the pixel and its 8 surrounding pixels. + The matrix is specified in row-major order, with the top left pixel being one.one and the bottom right three.three + If the values in the matrix don't add up to 1.0, the image could be brightened or darkened. + */ +@property(readwrite, nonatomic) GPUMatrix3x3 convolutionKernel; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m new file mode 100755 index 00000000..c623ac67 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m @@ -0,0 +1,128 @@ +#import "GPUImage3x3ConvolutionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImage3x3ConvolutionFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + uniform mediump mat3 convolutionMatrix; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + mediump vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + mediump vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + mediump vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + mediump vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + mediump vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + mediump vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + mediump vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + mediump vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + + mediump vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; + resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; + resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; + + gl_FragColor = vec4(resultColor, centerColor.a); + } +); +#else +NSString *const kGPUImage3x3ConvolutionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + uniform mat3 convolutionMatrix; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + + vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; + resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; + resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; + + gl_FragColor = vec4(resultColor, centerColor.a); + } +); +#endif + +@implementation GPUImage3x3ConvolutionFilter + +@synthesize convolutionKernel = _convolutionKernel; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImage3x3ConvolutionFragmentShaderString])) + { + return nil; + } + + self.convolutionKernel = (GPUMatrix3x3){ + {0.f, 0.f, 0.f}, + {0.f, 1.f, 0.f}, + {0.f, 0.f, 0.f} + }; + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + convolutionMatrixUniform = [filterProgram uniformIndex:@"convolutionMatrix"]; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setConvolutionKernel:(GPUMatrix3x3)newValue; +{ + _convolutionKernel = newValue; + + [self setMatrix3f:_convolutionKernel forUniform:convolutionMatrixUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.h new file mode 100644 index 00000000..5599e156 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.h @@ -0,0 +1,18 @@ +#import "GPUImageFilter.h" + +extern NSString *const kGPUImageNearbyTexelSamplingVertexShaderString; + +@interface GPUImage3x3TextureSamplingFilter : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; + BOOL hasOverriddenImageSizeFactor; +} + +// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. +@property(readwrite, nonatomic) CGFloat texelWidth; +@property(readwrite, nonatomic) CGFloat texelHeight; + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m new file mode 100644 index 00000000..05c4d50c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m @@ -0,0 +1,121 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +// Override vertex shader to remove dependent texture reads +NSString *const kGPUImageNearbyTexelSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform float texelWidth; + uniform float texelHeight; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 widthStep = vec2(texelWidth, 0.0); + vec2 heightStep = vec2(0.0, texelHeight); + vec2 widthHeightStep = vec2(texelWidth, texelHeight); + vec2 widthNegativeHeightStep = vec2(texelWidth, -texelHeight); + + textureCoordinate = inputTextureCoordinate.xy; + leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; + rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; + + topTextureCoordinate = inputTextureCoordinate.xy - heightStep; + topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep; + topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep; + + bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; + bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep; + bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep; + } +); + + +@implementation GPUImage3x3TextureSamplingFilter + +@synthesize texelWidth = _texelWidth; +@synthesize texelHeight = _texelHeight; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [self initWithVertexShaderFromString:kGPUImageNearbyTexelSamplingVertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + if (!hasOverriddenImageSizeFactor) + { + _texelWidth = 1.0 / filterFrameSize.width; + _texelHeight = 1.0 / filterFrameSize.height; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + glUniform1f(texelWidthUniform, _texelHeight); + glUniform1f(texelHeightUniform, _texelWidth); + } + else + { + glUniform1f(texelWidthUniform, _texelWidth); + glUniform1f(texelHeightUniform, _texelHeight); + } + }); + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTexelWidth:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelWidth = newValue; + + [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelHeight = newValue; + + [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.h new file mode 100755 index 00000000..32785560 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageFilterGroup.h" + +@interface GPUImageAdaptiveThresholdFilter : GPUImageFilterGroup + +/** A multiplier for the background averaging blur radius in pixels, with a default of 4 + */ +@property(readwrite, nonatomic) CGFloat blurRadiusInPixels; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m new file mode 100755 index 00000000..71fa6abf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m @@ -0,0 +1,100 @@ +#import "GPUImageAdaptiveThresholdFilter.h" +#import "GPUImageFilter.h" +#import "GPUImageTwoInputFilter.h" +#import "GPUImageGrayscaleFilter.h" +#import "GPUImageBoxBlurFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageAdaptiveThresholdFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + highp float blurredInput = texture2D(inputImageTexture, textureCoordinate).r; + highp float localLuminance = texture2D(inputImageTexture2, textureCoordinate2).r; + highp float thresholdResult = step(blurredInput - 0.05, localLuminance); + + gl_FragColor = vec4(vec3(thresholdResult), 1.0); + } +); +#else +NSString *const kGPUImageAdaptiveThresholdFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + float blurredInput = texture2D(inputImageTexture, textureCoordinate).r; + float localLuminance = texture2D(inputImageTexture2, textureCoordinate2).r; + float thresholdResult = step(blurredInput - 0.05, localLuminance); + + gl_FragColor = vec4(vec3(thresholdResult), 1.0); + } +); +#endif + +@interface GPUImageAdaptiveThresholdFilter() +{ + GPUImageBoxBlurFilter *boxBlurFilter; +} +@end + +@implementation GPUImageAdaptiveThresholdFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: reduce to luminance + GPUImageGrayscaleFilter *luminanceFilter = [[GPUImageGrayscaleFilter alloc] init]; + [self addFilter:luminanceFilter]; + + // Second pass: perform a box blur + boxBlurFilter = [[GPUImageBoxBlurFilter alloc] init]; + [self addFilter:boxBlurFilter]; + + // Third pass: compare the blurred background luminance to the local value + GPUImageFilter *adaptiveThresholdFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageAdaptiveThresholdFragmentShaderString]; + [self addFilter:adaptiveThresholdFilter]; + + [luminanceFilter addTarget:boxBlurFilter]; + + [boxBlurFilter addTarget:adaptiveThresholdFilter]; + // To prevent double updating of this filter, disable updates from the sharp luminance image side + [luminanceFilter addTarget:adaptiveThresholdFilter]; + + self.initialFilters = [NSArray arrayWithObject:luminanceFilter]; + self.terminalFilter = adaptiveThresholdFilter; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + boxBlurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return boxBlurFilter.blurRadiusInPixels; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.h new file mode 100644 index 00000000..b14c60c6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageAddBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m new file mode 100644 index 00000000..c89054a8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m @@ -0,0 +1,100 @@ +#import "GPUImageAddBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageAddBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + mediump float r; + if (overlay.r * base.a + base.r * overlay.a >= overlay.a * base.a) { + r = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } else { + r = overlay.r + base.r; + } + + mediump float g; + if (overlay.g * base.a + base.g * overlay.a >= overlay.a * base.a) { + g = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } else { + g = overlay.g + base.g; + } + + mediump float b; + if (overlay.b * base.a + base.b * overlay.a >= overlay.a * base.a) { + b = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } else { + b = overlay.b + base.b; + } + + mediump float a = overlay.a + base.a - overlay.a * base.a; + + gl_FragColor = vec4(r, g, b, a); + } +); +#else +NSString *const kGPUImageAddBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + float r; + if (overlay.r * base.a + base.r * overlay.a >= overlay.a * base.a) { + r = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } else { + r = overlay.r + base.r; + } + + float g; + if (overlay.g * base.a + base.g * overlay.a >= overlay.a * base.a) { + g = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } else { + g = overlay.g + base.g; + } + + float b; + if (overlay.b * base.a + base.b * overlay.a >= overlay.a * base.a) { + b = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } else { + b = overlay.b + base.b; + } + + float a = overlay.a + base.a - overlay.a * base.a; + + gl_FragColor = vec4(r, g, b, a); + } +); +#endif + + + +@implementation GPUImageAddBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageAddBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.h new file mode 100755 index 00000000..c4d75759 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageAlphaBlendFilter : GPUImageTwoInputFilter +{ + GLint mixUniform; +} + +// Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 1.0 as the normal level +@property(readwrite, nonatomic) CGFloat mix; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m new file mode 100755 index 00000000..077df790 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m @@ -0,0 +1,72 @@ +#import "GPUImageAlphaBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageAlphaBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform lowp float mixturePercent; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a); + } +); +#else +NSString *const kGPUImageAlphaBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform float mixturePercent; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a); + } +); +#endif + +@implementation GPUImageAlphaBlendFilter + +@synthesize mix = _mix; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageAlphaBlendFragmentShaderString])) + { + return nil; + } + + mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; + self.mix = 0.5; + + return self; +} + + +#pragma mark - +#pragma mark Accessors + +- (void)setMix:(CGFloat)newValue; +{ + _mix = newValue; + + [self setFloat:_mix forUniform:mixUniform program:filterProgram]; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.h new file mode 100755 index 00000000..1dbe096d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImagePicture; + +/** A photo filter based on Photoshop action by Amatorka + http://amatorka.deviantart.com/art/Amatorka-Action-2-121069631 + */ + +// Note: If you want to use this effect you have to add lookup_amatorka.png +// from Resources folder to your application bundle. + +@interface GPUImageAmatorkaFilter : GPUImageFilterGroup +{ + GPUImagePicture *lookupImageSource; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m new file mode 100755 index 00000000..1ab3ec4e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m @@ -0,0 +1,38 @@ +#import "GPUImageAmatorkaFilter.h" +#import "GPUImagePicture.h" +#import "GPUImageLookupFilter.h" + +@implementation GPUImageAmatorkaFilter + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + UIImage *image = [UIImage imageNamed:@"lookup_amatorka.png"]; +#else + NSImage *image = [NSImage imageNamed:@"lookup_amatorka.png"]; +#endif + + NSAssert(image, @"To use GPUImageAmatorkaFilter you need to add lookup_amatorka.png from GPUImage/framework/Resources to your application bundle."); + + lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; + GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; + [self addFilter:lookupFilter]; + + [lookupImageSource addTarget:lookupFilter atTextureLocation:1]; + [lookupImageSource processImage]; + + self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; + self.terminalFilter = lookupFilter; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.h b/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.h new file mode 100644 index 00000000..e3d957d0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.h @@ -0,0 +1,20 @@ +#import "GPUImageFilter.h" + +extern NSString *const kGPUImageColorAveragingVertexShaderString; + +@interface GPUImageAverageColor : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + NSUInteger numberOfStages; + + GLubyte *rawImagePixels; + CGSize finalStageSize; +} + +// This block is called on the completion of color averaging for a frame +@property(nonatomic, copy) void(^colorAverageProcessingFinishedBlock)(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime); + +- (void)extractAverageColorAtFrameTime:(CMTime)frameTime; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m b/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m new file mode 100644 index 00000000..e2dd7e73 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m @@ -0,0 +1,204 @@ +#import "GPUImageAverageColor.h" + +NSString *const kGPUImageColorAveragingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform float texelWidth; + uniform float texelHeight; + + varying vec2 upperLeftInputTextureCoordinate; + varying vec2 upperRightInputTextureCoordinate; + varying vec2 lowerLeftInputTextureCoordinate; + varying vec2 lowerRightInputTextureCoordinate; + + void main() + { + gl_Position = position; + + upperLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, -texelHeight); + upperRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, -texelHeight); + lowerLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, texelHeight); + lowerRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, texelHeight); + } + ); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorAveragingFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + varying highp vec2 outputTextureCoordinate; + + varying highp vec2 upperLeftInputTextureCoordinate; + varying highp vec2 upperRightInputTextureCoordinate; + varying highp vec2 lowerLeftInputTextureCoordinate; + varying highp vec2 lowerRightInputTextureCoordinate; + + void main() + { + highp vec4 upperLeftColor = texture2D(inputImageTexture, upperLeftInputTextureCoordinate); + highp vec4 upperRightColor = texture2D(inputImageTexture, upperRightInputTextureCoordinate); + highp vec4 lowerLeftColor = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate); + highp vec4 lowerRightColor = texture2D(inputImageTexture, lowerRightInputTextureCoordinate); + + gl_FragColor = 0.25 * (upperLeftColor + upperRightColor + lowerLeftColor + lowerRightColor); + } +); +#else +NSString *const kGPUImageColorAveragingFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 outputTextureCoordinate; + + varying vec2 upperLeftInputTextureCoordinate; + varying vec2 upperRightInputTextureCoordinate; + varying vec2 lowerLeftInputTextureCoordinate; + varying vec2 lowerRightInputTextureCoordinate; + + void main() + { + vec4 upperLeftColor = texture2D(inputImageTexture, upperLeftInputTextureCoordinate); + vec4 upperRightColor = texture2D(inputImageTexture, upperRightInputTextureCoordinate); + vec4 lowerLeftColor = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate); + vec4 lowerRightColor = texture2D(inputImageTexture, lowerRightInputTextureCoordinate); + + gl_FragColor = 0.25 * (upperLeftColor + upperRightColor + lowerLeftColor + lowerRightColor); + } +); +#endif + +@implementation GPUImageAverageColor + +@synthesize colorAverageProcessingFinishedBlock = _colorAverageProcessingFinishedBlock; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageColorAveragingVertexShaderString fragmentShaderFromString:kGPUImageColorAveragingFragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + finalStageSize = CGSizeMake(1.0, 1.0); + + __unsafe_unretained GPUImageAverageColor *weakSelf = self; + [self setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { + [weakSelf extractAverageColorAtFrameTime:frameTime]; + }]; + + return self; +} + +- (void)dealloc; +{ + if (rawImagePixels != NULL) + { + free(rawImagePixels); + } +} + +#pragma mark - +#pragma mark Managing the display FBOs + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + outputFramebuffer = nil; + [GPUImageContext setActiveShaderProgram:filterProgram]; + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + GLuint currentTexture = [firstInputFramebuffer texture]; + + NSUInteger numberOfReductionsInX = floor(log(inputTextureSize.width) / log(4.0)); + NSUInteger numberOfReductionsInY = floor(log(inputTextureSize.height) / log(4.0)); + NSUInteger reductionsToHitSideLimit = MIN(numberOfReductionsInX, numberOfReductionsInY); + for (NSUInteger currentReduction = 0; currentReduction < reductionsToHitSideLimit; currentReduction++) + { + CGSize currentStageSize = CGSizeMake(floor(inputTextureSize.width / pow(4.0, currentReduction + 1.0)), floor(inputTextureSize.height / pow(4.0, currentReduction + 1.0))); + + [outputFramebuffer unlock]; + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:currentStageSize textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, currentTexture); + + glUniform1i(filterInputTextureUniform, 2); + + glUniform1f(texelWidthUniform, 0.25 / currentStageSize.width); + glUniform1f(texelHeightUniform, 0.25 / currentStageSize.height); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + currentTexture = [outputFramebuffer texture]; + finalStageSize = currentStageSize; + } + + [firstInputFramebuffer unlock]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + inputRotation = kGPUImageNoRotation; +} + +- (void)extractAverageColorAtFrameTime:(CMTime)frameTime; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + // we need a normal color texture for averaging the color values + NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture internal format for this filter must be GL_RGBA."); + NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + NSUInteger totalNumberOfPixels = round(finalStageSize.width * finalStageSize.height); + + if (rawImagePixels == NULL) + { + rawImagePixels = (GLubyte *)malloc(totalNumberOfPixels * 4); + } + + [GPUImageContext useImageProcessingContext]; + [outputFramebuffer activateFramebuffer]; + glReadPixels(0, 0, (int)finalStageSize.width, (int)finalStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); + + NSUInteger redTotal = 0, greenTotal = 0, blueTotal = 0, alphaTotal = 0; + NSUInteger byteIndex = 0; + for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) + { + redTotal += rawImagePixels[byteIndex++]; + greenTotal += rawImagePixels[byteIndex++]; + blueTotal += rawImagePixels[byteIndex++]; + alphaTotal += rawImagePixels[byteIndex++]; + } + + CGFloat normalizedRedTotal = (CGFloat)redTotal / (CGFloat)totalNumberOfPixels / 255.0; + CGFloat normalizedGreenTotal = (CGFloat)greenTotal / (CGFloat)totalNumberOfPixels / 255.0; + CGFloat normalizedBlueTotal = (CGFloat)blueTotal / (CGFloat)totalNumberOfPixels / 255.0; + CGFloat normalizedAlphaTotal = (CGFloat)alphaTotal / (CGFloat)totalNumberOfPixels / 255.0; + + if (_colorAverageProcessingFinishedBlock != NULL) + { + _colorAverageProcessingFinishedBlock(normalizedRedTotal, normalizedGreenTotal, normalizedBlueTotal, normalizedAlphaTotal, frameTime); + } + }); +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.h new file mode 100644 index 00000000..7f1ae464 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.h @@ -0,0 +1,8 @@ +#import "GPUImageFilterGroup.h" + +@interface GPUImageAverageLuminanceThresholdFilter : GPUImageFilterGroup + +// This is multiplied by the continually calculated average image luminosity to arrive at the final threshold. Default is 1.0. +@property(readwrite, nonatomic) CGFloat thresholdMultiplier; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m new file mode 100644 index 00000000..eb2796f4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m @@ -0,0 +1,47 @@ +#import "GPUImageAverageLuminanceThresholdFilter.h" +#import "GPUImageLuminosity.h" +#import "GPUImageLuminanceThresholdFilter.h" + +@interface GPUImageAverageLuminanceThresholdFilter() +{ + GPUImageLuminosity *luminosityFilter; + GPUImageLuminanceThresholdFilter *luminanceThresholdFilter; +} +@end + +@implementation GPUImageAverageLuminanceThresholdFilter + +@synthesize thresholdMultiplier = _thresholdMultiplier; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + self.thresholdMultiplier = 1.0; + + luminosityFilter = [[GPUImageLuminosity alloc] init]; + [self addFilter:luminosityFilter]; + + luminanceThresholdFilter = [[GPUImageLuminanceThresholdFilter alloc] init]; + [self addFilter:luminanceThresholdFilter]; + + __unsafe_unretained GPUImageAverageLuminanceThresholdFilter *weakSelf = self; + __unsafe_unretained GPUImageLuminanceThresholdFilter *weakThreshold = luminanceThresholdFilter; + + [luminosityFilter setLuminosityProcessingFinishedBlock:^(CGFloat luminosity, CMTime frameTime) { + weakThreshold.threshold = luminosity * weakSelf.thresholdMultiplier; + }]; + + self.initialFilters = [NSArray arrayWithObjects:luminosityFilter, luminanceThresholdFilter, nil]; + self.terminalFilter = luminanceThresholdFilter; + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.h new file mode 100644 index 00000000..6b736ccf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageGaussianBlurFilter.h" + +@interface GPUImageBilateralFilter : GPUImageGaussianBlurFilter +{ + CGFloat firstDistanceNormalizationFactorUniform; + CGFloat secondDistanceNormalizationFactorUniform; +} +// A normalization factor for the distance between central color and sample color. +@property(nonatomic, readwrite) CGFloat distanceNormalizationFactor; +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m new file mode 100644 index 00000000..c2a8c867 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m @@ -0,0 +1,231 @@ +#import "GPUImageBilateralFilter.h" + +NSString *const kGPUImageBilateralBlurVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + const int GAUSSIAN_SAMPLES = 9; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + + varying vec2 textureCoordinate; + varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; + + void main() + { + gl_Position = position; + textureCoordinate = inputTextureCoordinate.xy; + + // Calculate the positions for the blur + int multiplier = 0; + vec2 blurStep; + vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset); + + for (int i = 0; i < GAUSSIAN_SAMPLES; i++) + { + multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2)); + // Blur in x (horizontal) + blurStep = float(multiplier) * singleStepOffset; + blurCoordinates[i] = inputTextureCoordinate.xy + blurStep; + } + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageBilateralFilterFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + const lowp int GAUSSIAN_SAMPLES = 9; + + varying highp vec2 textureCoordinate; + varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES]; + + uniform mediump float distanceNormalizationFactor; + + void main() + { + lowp vec4 centralColor; + lowp float gaussianWeightTotal; + lowp vec4 sum; + lowp vec4 sampleColor; + lowp float distanceFromCentralColor; + lowp float gaussianWeight; + + centralColor = texture2D(inputImageTexture, blurCoordinates[4]); + gaussianWeightTotal = 0.18; + sum = centralColor * 0.18; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[0]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[1]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[2]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[3]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[5]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[6]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[7]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[8]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + gl_FragColor = sum / gaussianWeightTotal; + } +); +#else +NSString *const kGPUImageBilateralFilterFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + const int GAUSSIAN_SAMPLES = 9; + + varying vec2 textureCoordinate; + varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; + + uniform float distanceNormalizationFactor; + + void main() + { + vec4 centralColor; + float gaussianWeightTotal; + vec4 sum; + vec4 sampleColor; + float distanceFromCentralColor; + float gaussianWeight; + + centralColor = texture2D(inputImageTexture, blurCoordinates[4]); + gaussianWeightTotal = 0.18; + sum = centralColor * 0.18; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[0]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[1]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[2]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[3]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[5]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[6]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[7]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + sampleColor = texture2D(inputImageTexture, blurCoordinates[8]); + distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); + gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); + gaussianWeightTotal += gaussianWeight; + sum += sampleColor * gaussianWeight; + + gl_FragColor = sum / gaussianWeightTotal; + } +); +#endif + +@implementation GPUImageBilateralFilter + +@synthesize distanceNormalizationFactor = _distanceNormalizationFactor; + +- (id)init; +{ + + if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageBilateralBlurVertexShaderString + firstStageFragmentShaderFromString:kGPUImageBilateralFilterFragmentShaderString + secondStageVertexShaderFromString:kGPUImageBilateralBlurVertexShaderString + secondStageFragmentShaderFromString:kGPUImageBilateralFilterFragmentShaderString])) { + return nil; + } + + firstDistanceNormalizationFactorUniform = [filterProgram uniformIndex:@"distanceNormalizationFactor"]; + secondDistanceNormalizationFactorUniform = [filterProgram uniformIndex:@"distanceNormalizationFactor"]; + + self.texelSpacingMultiplier = 4.0; + self.distanceNormalizationFactor = 8.0; + + + return self; +} + + +#pragma mark - +#pragma mark Accessors + +- (void)setDistanceNormalizationFactor:(CGFloat)newValue +{ + _distanceNormalizationFactor = newValue; + + [self setFloat:newValue + forUniform:firstDistanceNormalizationFactorUniform + program:filterProgram]; + + [self setFloat:newValue + forUniform:secondDistanceNormalizationFactorUniform + program:secondFilterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.h new file mode 100755 index 00000000..3fd880bf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageGaussianBlurFilter.h" + +/** A hardware-accelerated box blur of an image + */ +@interface GPUImageBoxBlurFilter : GPUImageGaussianBlurFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m new file mode 100755 index 00000000..5a49385b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m @@ -0,0 +1,178 @@ +#import "GPUImageBoxBlurFilter.h" + + +@implementation GPUImageBoxBlurFilter + ++ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImageVertexShaderString; + } + + // From these weights we calculate the offsets to read interpolated values from + NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); + + NSMutableString *shaderString = [[NSMutableString alloc] init]; + // Header + [shaderString appendFormat:@"\ + attribute vec4 position;\n\ + attribute vec4 inputTextureCoordinate;\n\ + \n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + gl_Position = position;\n\ + \n\ + vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; + + // Inner offset loop + [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; + for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) + { + GLfloat optimizedOffset = (GLfloat)(currentOptimizedOffset * 2) + 1.5; + + [shaderString appendFormat:@"\ + blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ + blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedOffset, (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedOffset]; + } + + // Footer + [shaderString appendString:@"}\n"]; + + return shaderString; +} + ++ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImagePassthroughFragmentShaderString; + } + + NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); + NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); + + NSMutableString *shaderString = [[NSMutableString alloc] init]; + + // Header +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + uniform highp float texelWidthOffset;\n\ + uniform highp float texelHeightOffset;\n\ + \n\ + varying highp vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + lowp vec4 sum = vec4(0.0);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; +#else + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + vec4 sum = vec4(0.0);\n", 1 + (numberOfOptimizedOffsets * 2) ]; +#endif + + GLfloat boxWeight = 1.0 / (GLfloat)((blurRadius * 2) + 1); + + // Inner texture loop + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]) * %f;\n", boxWeight]; + + for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) + { + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), boxWeight * 2.0]; + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), boxWeight * 2.0]; + } + + // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader + if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; +#else + [shaderString appendString:@"vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; +#endif + + for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) + { + GLfloat optimizedOffset = (GLfloat)(currentOverlowTextureRead * 2) + 1.5; + + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f) * %f;\n", optimizedOffset, boxWeight * 2.0]; + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f) * %f;\n", optimizedOffset, boxWeight * 2.0]; + } + } + + // Footer + [shaderString appendString:@"\ + gl_FragColor = sum;\n\ + }\n"]; + + return shaderString; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + [super setupFilterForSize:filterFrameSize]; + + if (shouldResizeBlurRadiusWithImageSize == YES) + { + + } +} + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + // NSString *currentGaussianBlurVertexShader = [GPUImageGaussianBlurFilter vertexShaderForStandardGaussianOfRadius:4 sigma:2.0]; + // NSString *currentGaussianBlurFragmentShader = [GPUImageGaussianBlurFilter fragmentShaderForStandardGaussianOfRadius:4 sigma:2.0]; + + NSString *currentBoxBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:4 sigma:0.0]; + NSString *currentBoxBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:4 sigma:0.0]; + + if (!(self = [super initWithFirstStageVertexShaderFromString:currentBoxBlurVertexShader firstStageFragmentShaderFromString:currentBoxBlurFragmentShader secondStageVertexShaderFromString:currentBoxBlurVertexShader secondStageFragmentShaderFromString:currentBoxBlurFragmentShader])) + { + return nil; + } + + _blurRadiusInPixels = 4.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + CGFloat newBlurRadius = round(round(newValue / 2.0) * 2.0); // For now, only do even radii + + if (newBlurRadius != _blurRadiusInPixels) + { + _blurRadiusInPixels = newBlurRadius; + + NSString *newGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:_blurRadiusInPixels sigma:0.0]; + NSString *newGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:_blurRadiusInPixels sigma:0.0]; + + // NSLog(@"Optimized vertex shader: \n%@", newGaussianBlurVertexShader); + // NSLog(@"Optimized fragment shader: \n%@", newGaussianBlurFragmentShader); + // + [self switchToVertexShader:newGaussianBlurVertexShader fragmentShader:newGaussianBlurFragmentShader]; + } + shouldResizeBlurRadiusWithImageSize = NO; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.h new file mode 100755 index 00000000..046473b9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageFilter.h" + +@interface GPUImageBrightnessFilter : GPUImageFilter +{ + GLint brightnessUniform; +} + +// Brightness ranges from -1.0 to 1.0, with 0.0 as the normal level +@property(readwrite, nonatomic) CGFloat brightness; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m new file mode 100755 index 00000000..7e526d85 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m @@ -0,0 +1,66 @@ +#import "GPUImageBrightnessFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageBrightnessFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float brightness; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); + } +); +#else +NSString *const kGPUImageBrightnessFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float brightness; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); + } + ); +#endif + +@implementation GPUImageBrightnessFilter + +@synthesize brightness = _brightness; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageBrightnessFragmentShaderString])) + { + return nil; + } + + brightnessUniform = [filterProgram uniformIndex:@"brightness"]; + self.brightness = 0.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBrightness:(CGFloat)newValue; +{ + _brightness = newValue; + + [self setFloat:_brightness forUniform:brightnessUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h b/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h new file mode 100644 index 00000000..caf09c8d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageBuffer : GPUImageFilter +{ + NSMutableArray *bufferedFramebuffers; +} + +@property(readwrite, nonatomic) NSUInteger bufferSize; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m b/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m new file mode 100644 index 00000000..c90d020a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m @@ -0,0 +1,112 @@ +#import "GPUImageBuffer.h" + +@interface GPUImageBuffer() + +@end + +@implementation GPUImageBuffer + +@synthesize bufferSize = _bufferSize; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) + { + return nil; + } + + bufferedFramebuffers = [[NSMutableArray alloc] init]; +// [bufferedTextures addObject:[NSNumber numberWithInt:outputTexture]]; + _bufferSize = 1; + + return self; +} + +- (void)dealloc +{ + for (GPUImageFramebuffer *currentFramebuffer in bufferedFramebuffers) + { + [currentFramebuffer unlock]; + } +} + +#pragma mark - +#pragma mark GPUImageInput + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + if ([bufferedFramebuffers count] >= _bufferSize) + { + outputFramebuffer = [bufferedFramebuffers objectAtIndex:0]; + [bufferedFramebuffers removeObjectAtIndex:0]; + } + else + { + // Nothing yet in the buffer, so don't process further until the buffer is full + outputFramebuffer = firstInputFramebuffer; + [firstInputFramebuffer lock]; + } + + [bufferedFramebuffers addObject:firstInputFramebuffer]; + + // Need to pass along rotation information, as we're just holding on to buffered framebuffers and not rotating them ourselves + for (id currentTarget in targets) + { + if (currentTarget != self.targetToIgnoreForUpdates) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [currentTarget setInputRotation:inputRotation atIndex:textureIndex]; + } + } + + // Let the downstream video elements see the previous frame from the buffer before rendering a new one into place + [self informTargetsAboutNewFrameAtTime:frameTime]; + +// [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // No need to render to another texture anymore, since we'll be hanging on to the textures in our buffer +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBufferSize:(NSUInteger)newValue; +{ + if ( (newValue == _bufferSize) || (newValue < 1) ) + { + return; + } + + if (newValue > _bufferSize) + { + NSUInteger texturesToAdd = newValue - _bufferSize; + for (NSUInteger currentTextureIndex = 0; currentTextureIndex < texturesToAdd; currentTextureIndex++) + { + // TODO: Deal with the growth of the size of the buffer by rotating framebuffers, no textures + } + } + else + { + NSUInteger texturesToRemove = _bufferSize - newValue; + for (NSUInteger currentTextureIndex = 0; currentTextureIndex < texturesToRemove; currentTextureIndex++) + { + GPUImageFramebuffer *lastFramebuffer = [bufferedFramebuffers lastObject]; + [bufferedFramebuffers removeObjectAtIndex:([bufferedFramebuffers count] - 1)]; + + [lastFramebuffer unlock]; + lastFramebuffer = nil; + } + } + + _bufferSize = newValue; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.h new file mode 100755 index 00000000..d416e536 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.h @@ -0,0 +1,16 @@ +#import "GPUImageFilter.h" + +/// Creates a bulge distortion on the image +@interface GPUImageBulgeDistortionFilter : GPUImageFilter +{ + GLint aspectRatioUniform, radiusUniform, centerUniform, scaleUniform; +} + +/// The center about which to apply the distortion, with a default of (0.5, 0.5) +@property(readwrite, nonatomic) CGPoint center; +/// The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.25 +@property(readwrite, nonatomic) CGFloat radius; +/// The amount of distortion to apply, from -1.0 to 1.0, with a default of 0.5 +@property(readwrite, nonatomic) CGFloat scale; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m new file mode 100755 index 00000000..ad002678 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m @@ -0,0 +1,174 @@ +#import "GPUImageBulgeDistortionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float aspectRatio; + uniform highp vec2 center; + uniform highp float radius; + uniform highp float scale; + + void main() + { + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, ((textureCoordinate.y - center.y) * aspectRatio) + center.y); + highp float dist = distance(center, textureCoordinateToUse); + textureCoordinateToUse = textureCoordinate; + + if (dist < radius) + { + textureCoordinateToUse -= center; + highp float percent = 1.0 - ((radius - dist) / radius) * scale; + percent = percent * percent; + + textureCoordinateToUse = textureCoordinateToUse * percent; + textureCoordinateToUse += center; + } + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + } +); +#else +NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float aspectRatio; + uniform vec2 center; + uniform float radius; + uniform float scale; + + void main() + { + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, ((textureCoordinate.y - center.y) * aspectRatio) + center.y); + float dist = distance(center, textureCoordinateToUse); + textureCoordinateToUse = textureCoordinate; + + if (dist < radius) + { + textureCoordinateToUse -= center; + float percent = 1.0 - ((radius - dist) / radius) * scale; + percent = percent * percent; + + textureCoordinateToUse = textureCoordinateToUse * percent; + textureCoordinateToUse += center; + } + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + } +); +#endif + + +@interface GPUImageBulgeDistortionFilter () + +- (void)adjustAspectRatio; + +@property (readwrite, nonatomic) CGFloat aspectRatio; + +@end + +@implementation GPUImageBulgeDistortionFilter + +@synthesize aspectRatio = _aspectRatio; +@synthesize center = _center; +@synthesize radius = _radius; +@synthesize scale = _scale; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageBulgeDistortionFragmentShaderString])) + { + return nil; + } + + aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; + radiusUniform = [filterProgram uniformIndex:@"radius"]; + scaleUniform = [filterProgram uniformIndex:@"scale"]; + centerUniform = [filterProgram uniformIndex:@"center"]; + + self.radius = 0.25; + self.scale = 0.5; + self.center = CGPointMake(0.5, 0.5); + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)adjustAspectRatio; +{ + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; + } + else + { + [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; + } +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + [self adjustAspectRatio]; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self adjustAspectRatio]; + } +} + +- (void)setAspectRatio:(CGFloat)newValue; +{ + _aspectRatio = newValue; + + [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; + [self adjustAspectRatio]; +} + +- (void)setRadius:(CGFloat)newValue; +{ + _radius = newValue; + + [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; +} + +- (void)setScale:(CGFloat)newValue; +{ + _scale = newValue; + + [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; +} + +- (void)setCenter:(CGPoint)newValue; +{ + _center = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; + + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.h new file mode 100755 index 00000000..4f97804b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCGAColorspaceFilter : GPUImageFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m new file mode 100755 index 00000000..eee939a0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m @@ -0,0 +1,113 @@ +// +// GPUImageCGAColorspaceFilter.m +// + +#import "GPUImageCGAColorspaceFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageCGAColorspaceFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + highp vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0); + //highp vec4 colorDivisor = vec4(colorDepth); + + highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor); + highp vec4 color = texture2D(inputImageTexture, samplePos ); + + //gl_FragColor = texture2D(inputImageTexture, samplePos ); + mediump vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0); + mediump vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0); + mediump vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0); + mediump vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0); + + mediump vec4 endColor; + highp float blackDistance = distance(color, colorBlack); + highp float whiteDistance = distance(color, colorWhite); + highp float magentaDistance = distance(color, colorMagenta); + highp float cyanDistance = distance(color, colorCyan); + + mediump vec4 finalColor; + + highp float colorDistance = min(magentaDistance, cyanDistance); + colorDistance = min(colorDistance, whiteDistance); + colorDistance = min(colorDistance, blackDistance); + + if (colorDistance == blackDistance) { + finalColor = colorBlack; + } else if (colorDistance == whiteDistance) { + finalColor = colorWhite; + } else if (colorDistance == cyanDistance) { + finalColor = colorCyan; + } else { + finalColor = colorMagenta; + } + + gl_FragColor = finalColor; + } +); +#else +NSString *const kGPUImageCGAColorspaceFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0); + //highp vec4 colorDivisor = vec4(colorDepth); + + vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor); + vec4 color = texture2D(inputImageTexture, samplePos ); + + //gl_FragColor = texture2D(inputImageTexture, samplePos ); + vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0); + vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0); + vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0); + vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0); + + vec4 endColor; + float blackDistance = distance(color, colorBlack); + float whiteDistance = distance(color, colorWhite); + float magentaDistance = distance(color, colorMagenta); + float cyanDistance = distance(color, colorCyan); + + vec4 finalColor; + + float colorDistance = min(magentaDistance, cyanDistance); + colorDistance = min(colorDistance, whiteDistance); + colorDistance = min(colorDistance, blackDistance); + + if (colorDistance == blackDistance) { + finalColor = colorBlack; + } else if (colorDistance == whiteDistance) { + finalColor = colorWhite; + } else if (colorDistance == cyanDistance) { + finalColor = colorCyan; + } else { + finalColor = colorMagenta; + } + + gl_FragColor = finalColor; + } +); +#endif + +@implementation GPUImageCGAColorspaceFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageCGAColorspaceFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.h new file mode 100755 index 00000000..53c58502 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.h @@ -0,0 +1,62 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGrayscaleFilter; +@class GPUImageSingleComponentGaussianBlurFilter; +@class GPUImageDirectionalSobelEdgeDetectionFilter; +@class GPUImageDirectionalNonMaximumSuppressionFilter; +@class GPUImageWeakPixelInclusionFilter; + +/** This applies the edge detection process described by John Canny in + + Canny, J., A Computational Approach To Edge Detection, IEEE Trans. Pattern Analysis and Machine Intelligence, 8(6):679–698, 1986. + + and implemented in OpenGL ES by + + A. Ensor, S. Hall. GPU-based Image Analysis on Mobile Devices. Proceedings of Image and Vision Computing New Zealand 2011. + + It starts with a conversion to luminance, followed by an accelerated 9-hit Gaussian blur. A Sobel operator is applied to obtain the overall + gradient strength in the blurred image, as well as the direction (in texture sampling steps) of the gradient. A non-maximum suppression filter + acts along the direction of the gradient, highlighting strong edges that pass the threshold and completely removing those that fail the lower + threshold. Finally, pixels from in-between these thresholds are either included in edges or rejected based on neighboring pixels. + */ +@interface GPUImageCannyEdgeDetectionFilter : GPUImageFilterGroup +{ + GPUImageGrayscaleFilter *luminanceFilter; + GPUImageSingleComponentGaussianBlurFilter *blurFilter; + GPUImageDirectionalSobelEdgeDetectionFilter *edgeDetectionFilter; + GPUImageDirectionalNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; + GPUImageWeakPixelInclusionFilter *weakPixelInclusionFilter; +} + +/** The image width and height factors tweak the appearance of the edges. + + These parameters affect the visibility of the detected edges + + By default, they match the inverse of the filter size in pixels + */ +@property(readwrite, nonatomic) CGFloat texelWidth; +/** The image width and height factors tweak the appearance of the edges. + + These parameters affect the visibility of the detected edges + + By default, they match the inverse of the filter size in pixels + */ +@property(readwrite, nonatomic) CGFloat texelHeight; + +/** The underlying blur radius for the Gaussian blur. Default is 2.0. + */ +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +/** The underlying blur texel spacing multiplier. Default is 1.0. + */ +@property (readwrite, nonatomic) CGFloat blurTexelSpacingMultiplier; + +/** Any edge with a gradient magnitude above this threshold will pass and show up in the final result. + */ +@property(readwrite, nonatomic) CGFloat upperThreshold; + +/** Any edge with a gradient magnitude below this threshold will fail and be removed from the final result. + */ +@property(readwrite, nonatomic) CGFloat lowerThreshold; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m new file mode 100755 index 00000000..7327d532 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m @@ -0,0 +1,125 @@ +#import "GPUImageCannyEdgeDetectionFilter.h" + +#import "GPUImageGrayscaleFilter.h" +#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" +#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" +#import "GPUImageWeakPixelInclusionFilter.h" +#import "GPUImageSingleComponentGaussianBlurFilter.h" + +@implementation GPUImageCannyEdgeDetectionFilter + +@synthesize upperThreshold; +@synthesize lowerThreshold; +@synthesize blurRadiusInPixels; +@synthesize blurTexelSpacingMultiplier; +@synthesize texelWidth; +@synthesize texelHeight; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: convert image to luminance + luminanceFilter = [[GPUImageGrayscaleFilter alloc] init]; + [self addFilter:luminanceFilter]; + + // Second pass: apply a variable Gaussian blur + blurFilter = [[GPUImageSingleComponentGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Third pass: run the Sobel edge detection, with calculated gradient directions, on this blurred image + edgeDetectionFilter = [[GPUImageDirectionalSobelEdgeDetectionFilter alloc] init]; + [self addFilter:edgeDetectionFilter]; + + // Fourth pass: apply non-maximum suppression + nonMaximumSuppressionFilter = [[GPUImageDirectionalNonMaximumSuppressionFilter alloc] init]; + [self addFilter:nonMaximumSuppressionFilter]; + + // Fifth pass: include weak pixels to complete edges + weakPixelInclusionFilter = [[GPUImageWeakPixelInclusionFilter alloc] init]; + [self addFilter:weakPixelInclusionFilter]; + + [luminanceFilter addTarget:blurFilter]; + [blurFilter addTarget:edgeDetectionFilter]; + [edgeDetectionFilter addTarget:nonMaximumSuppressionFilter]; + [nonMaximumSuppressionFilter addTarget:weakPixelInclusionFilter]; + + self.initialFilters = [NSArray arrayWithObject:luminanceFilter]; +// self.terminalFilter = nonMaximumSuppressionFilter; + self.terminalFilter = weakPixelInclusionFilter; + + self.blurRadiusInPixels = 2.0; + self.blurTexelSpacingMultiplier = 1.0; + self.upperThreshold = 0.4; + self.lowerThreshold = 0.1; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setBlurTexelSpacingMultiplier:(CGFloat)newValue; +{ + blurFilter.texelSpacingMultiplier = newValue; +} + +- (CGFloat)blurTexelSpacingMultiplier; +{ + return blurFilter.texelSpacingMultiplier; +} + +- (void)setTexelWidth:(CGFloat)newValue; +{ + edgeDetectionFilter.texelWidth = newValue; +} + +- (CGFloat)texelWidth; +{ + return edgeDetectionFilter.texelWidth; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + edgeDetectionFilter.texelHeight = newValue; +} + +- (CGFloat)texelHeight; +{ + return edgeDetectionFilter.texelHeight; +} + +- (void)setUpperThreshold:(CGFloat)newValue; +{ + nonMaximumSuppressionFilter.upperThreshold = newValue; +} + +- (CGFloat)upperThreshold; +{ + return nonMaximumSuppressionFilter.upperThreshold; +} + +- (void)setLowerThreshold:(CGFloat)newValue; +{ + nonMaximumSuppressionFilter.lowerThreshold = newValue; +} + +- (CGFloat)lowerThreshold; +{ + return nonMaximumSuppressionFilter.lowerThreshold; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.h new file mode 100755 index 00000000..00a5aed7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.h @@ -0,0 +1,32 @@ +#import "GPUImageTwoInputFilter.h" + +/** Selectively replaces a color in the first image with the second image + */ +@interface GPUImageChromaKeyBlendFilter : GPUImageTwoInputFilter +{ + GLint colorToReplaceUniform, thresholdSensitivityUniform, smoothingUniform; +} + +/** The threshold sensitivity controls how similar pixels need to be colored to be replaced + + The default value is 0.3 + */ +@property(readwrite, nonatomic) CGFloat thresholdSensitivity; + +/** The degree of smoothing controls how gradually similar colors are replaced in the image + + The default value is 0.1 + */ +@property(readwrite, nonatomic) CGFloat smoothing; + +/** The color to be replaced is specified using individual red, green, and blue components (normalized to 1.0). + + The default is green: (0.0, 1.0, 0.0). + + @param redComponent Red component of color to be replaced + @param greenComponent Green component of color to be replaced + @param blueComponent Blue component of color to be replaced + */ +- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m new file mode 100755 index 00000000..4e6b4661 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m @@ -0,0 +1,117 @@ +#import "GPUImageChromaKeyBlendFilter.h" + +// Shader code based on Apple's CIChromaKeyFilter example: https://developer.apple.com/library/mac/#samplecode/CIChromaKeyFilter/Introduction/Intro.html + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageChromaKeyBlendFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform float thresholdSensitivity; + uniform float smoothing; + uniform vec3 colorToReplace; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; + float maskCr = 0.7132 * (colorToReplace.r - maskY); + float maskCb = 0.5647 * (colorToReplace.b - maskY); + + float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; + float Cr = 0.7132 * (textureColor.r - Y); + float Cb = 0.5647 * (textureColor.b - Y); + +// float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); + float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); + gl_FragColor = mix(textureColor, textureColor2, blendValue); + } +); +#else +NSString *const kGPUImageChromaKeyBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform float thresholdSensitivity; + uniform float smoothing; + uniform vec3 colorToReplace; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; + float maskCr = 0.7132 * (colorToReplace.r - maskY); + float maskCb = 0.5647 * (colorToReplace.b - maskY); + + float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; + float Cr = 0.7132 * (textureColor.r - Y); + float Cb = 0.5647 * (textureColor.b - Y); + + // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); + float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); + gl_FragColor = mix(textureColor, textureColor2, blendValue); + } +); +#endif + +@implementation GPUImageChromaKeyBlendFilter + +@synthesize thresholdSensitivity = _thresholdSensitivity; +@synthesize smoothing = _smoothing; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageChromaKeyBlendFragmentShaderString])) + { + return nil; + } + + thresholdSensitivityUniform = [filterProgram uniformIndex:@"thresholdSensitivity"]; + smoothingUniform = [filterProgram uniformIndex:@"smoothing"]; + colorToReplaceUniform = [filterProgram uniformIndex:@"colorToReplace"]; + + self.thresholdSensitivity = 0.4; + self.smoothing = 0.1; + [self setColorToReplaceRed:0.0 green:1.0 blue:0.0]; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 colorToReplace = {redComponent, greenComponent, blueComponent}; + + [self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram]; +} + +- (void)setThresholdSensitivity:(CGFloat)newValue; +{ + _thresholdSensitivity = newValue; + + [self setFloat:(GLfloat)_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram]; +} + +- (void)setSmoothing:(CGFloat)newValue; +{ + _smoothing = newValue; + + [self setFloat:(GLfloat)_smoothing forUniform:smoothingUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.h new file mode 100644 index 00000000..5ee7e498 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.h @@ -0,0 +1,30 @@ +#import "GPUImageFilter.h" + +@interface GPUImageChromaKeyFilter : GPUImageFilter +{ + GLint colorToReplaceUniform, thresholdSensitivityUniform, smoothingUniform; +} + +/** The threshold sensitivity controls how similar pixels need to be colored to be replaced + + The default value is 0.3 + */ +@property(readwrite, nonatomic) CGFloat thresholdSensitivity; + +/** The degree of smoothing controls how gradually similar colors are replaced in the image + + The default value is 0.1 + */ +@property(readwrite, nonatomic) CGFloat smoothing; + +/** The color to be replaced is specified using individual red, green, and blue components (normalized to 1.0). + + The default is green: (0.0, 1.0, 0.0). + + @param redComponent Red component of color to be replaced + @param greenComponent Green component of color to be replaced + @param blueComponent Blue component of color to be replaced + */ +- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m new file mode 100644 index 00000000..c70ef61d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m @@ -0,0 +1,113 @@ +#import "GPUImageChromaKeyFilter.h" + +// Shader code based on Apple's CIChromaKeyFilter example: https://developer.apple.com/library/mac/#samplecode/CIChromaKeyFilter/Introduction/Intro.html + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageChromaKeyFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying highp vec2 textureCoordinate; + + uniform float thresholdSensitivity; + uniform float smoothing; + uniform vec3 colorToReplace; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; + float maskCr = 0.7132 * (colorToReplace.r - maskY); + float maskCb = 0.5647 * (colorToReplace.b - maskY); + + float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; + float Cr = 0.7132 * (textureColor.r - Y); + float Cb = 0.5647 * (textureColor.b - Y); + + // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); + float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); + gl_FragColor = vec4(textureColor.rgb, textureColor.a * blendValue); + } +); +#else +NSString *const kGPUImageChromaKeyFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform float thresholdSensitivity; + uniform float smoothing; + uniform vec3 colorToReplace; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; + float maskCr = 0.7132 * (colorToReplace.r - maskY); + float maskCb = 0.5647 * (colorToReplace.b - maskY); + + float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; + float Cr = 0.7132 * (textureColor.r - Y); + float Cb = 0.5647 * (textureColor.b - Y); + + // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); + float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); + gl_FragColor = vec4(textureColor.rgb, textureColor.a * blendValue); + } + ); +#endif + +@implementation GPUImageChromaKeyFilter + +@synthesize thresholdSensitivity = _thresholdSensitivity; +@synthesize smoothing = _smoothing; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageChromaKeyFragmentShaderString])) + { + return nil; + } + + thresholdSensitivityUniform = [filterProgram uniformIndex:@"thresholdSensitivity"]; + smoothingUniform = [filterProgram uniformIndex:@"smoothing"]; + colorToReplaceUniform = [filterProgram uniformIndex:@"colorToReplace"]; + + self.thresholdSensitivity = 0.4; + self.smoothing = 0.1; + [self setColorToReplaceRed:0.0 green:1.0 blue:0.0]; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 colorToReplace = {redComponent, greenComponent, blueComponent}; + + [self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram]; +} + +- (void)setThresholdSensitivity:(CGFloat)newValue; +{ + _thresholdSensitivity = newValue; + + [self setFloat:(GLfloat)_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram]; +} + +- (void)setSmoothing:(CGFloat)newValue; +{ + _smoothing = newValue; + + [self setFloat:(GLfloat)_smoothing forUniform:smoothingUniform program:filterProgram]; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.h new file mode 100644 index 00000000..61e34c41 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageErosionFilter; +@class GPUImageDilationFilter; + +// A filter that first performs a dilation on the red channel of an image, followed by an erosion of the same radius. +// This helps to filter out smaller dark elements. + +@interface GPUImageClosingFilter : GPUImageFilterGroup +{ + GPUImageErosionFilter *erosionFilter; + GPUImageDilationFilter *dilationFilter; +} + +@property(readwrite, nonatomic) CGFloat verticalTexelSpacing, horizontalTexelSpacing; + +- (id)initWithRadius:(NSUInteger)radius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m new file mode 100644 index 00000000..01e9b29b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m @@ -0,0 +1,57 @@ +#import "GPUImageClosingFilter.h" +#import "GPUImageErosionFilter.h" +#import "GPUImageDilationFilter.h" + +@implementation GPUImageClosingFilter + +@synthesize verticalTexelSpacing = _verticalTexelSpacing; +@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +- (id)initWithRadius:(NSUInteger)radius; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: dilation + dilationFilter = [[GPUImageDilationFilter alloc] initWithRadius:radius]; + [self addFilter:dilationFilter]; + + // Second pass: erosion + erosionFilter = [[GPUImageErosionFilter alloc] initWithRadius:radius]; + [self addFilter:erosionFilter]; + + [dilationFilter addTarget:erosionFilter]; + + self.initialFilters = [NSArray arrayWithObjects:dilationFilter, nil]; + self.terminalFilter = erosionFilter; + + return self; +} + +- (void)setVerticalTexelSpacing:(CGFloat)newValue; +{ + _verticalTexelSpacing = newValue; + erosionFilter.verticalTexelSpacing = newValue; + dilationFilter.verticalTexelSpacing = newValue; +} + +- (void)setHorizontalTexelSpacing:(CGFloat)newValue; +{ + _horizontalTexelSpacing = newValue; + erosionFilter.horizontalTexelSpacing = newValue; + dilationFilter.horizontalTexelSpacing = newValue; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.h new file mode 100644 index 00000000..302a16c6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageColorBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m new file mode 100644 index 00000000..ced1cb8e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m @@ -0,0 +1,113 @@ +#import "GPUImageColorBlendFilter.h" + +/** + * Color blend mode based upon pseudo code from the PDF specification. + */ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + highp float lum(lowp vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + lowp vec3 clipcolor(lowp vec3 c) { + highp float l = lum(c); + lowp float n = min(min(c.r, c.g), c.b); + lowp float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + lowp vec3 setlum(lowp vec3 c, highp float l) { + highp float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + void main() + { + highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(overlayColor.rgb, lum(baseColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#else +NSString *const kGPUImageColorBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + float lum(vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + vec3 clipcolor(vec3 c) { + float l = lum(c); + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + vec3 setlum(vec3 c, float l) { + float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + void main() + { + vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(overlayColor.rgb, lum(baseColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#endif + + +@implementation GPUImageColorBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.h new file mode 100755 index 00000000..50ebb3f4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color burn blend of two images + */ +@interface GPUImageColorBurnBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m new file mode 100755 index 00000000..5d6ff60d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m @@ -0,0 +1,52 @@ +#import "GPUImageColorBurnBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorBurnBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + mediump vec4 whiteColor = vec4(1.0); + gl_FragColor = whiteColor - (whiteColor - textureColor) / textureColor2; + } +); +#else +NSString *const kGPUImageColorBurnBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + vec4 whiteColor = vec4(1.0); + gl_FragColor = whiteColor - (whiteColor - textureColor) / textureColor2; + } +); +#endif + +@implementation GPUImageColorBurnBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorBurnBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.h new file mode 100644 index 00000000..02f82bf8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.h @@ -0,0 +1,12 @@ +#ifndef GPUImageColorConversion_h +#define GPUImageColorConversion_h + +extern GLfloat *kColorConversion601; +extern GLfloat *kColorConversion601FullRange; +extern GLfloat *kColorConversion709; +extern NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString; +extern NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString; +extern NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString; + + +#endif /* GPUImageColorConversion_h */ diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m new file mode 100644 index 00000000..35534c20 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m @@ -0,0 +1,159 @@ +#import "GPUImageFilter.h" + +// Color Conversion Constants (YUV to RGB) including adjustment from 16-235/16-240 (video range) + +// BT.601, which is the standard for SDTV. +GLfloat kColorConversion601Default[] = { + 1.164, 1.164, 1.164, + 0.0, -0.392, 2.017, + 1.596, -0.813, 0.0, +}; + +// BT.601 full range (ref: http://www.equasys.de/colorconversion.html) +GLfloat kColorConversion601FullRangeDefault[] = { + 1.0, 1.0, 1.0, + 0.0, -0.343, 1.765, + 1.4, -0.711, 0.0, +}; + +// BT.709, which is the standard for HDTV. +GLfloat kColorConversion709Default[] = { + 1.164, 1.164, 1.164, + 0.0, -0.213, 2.112, + 1.793, -0.533, 0.0, +}; + + +GLfloat *kColorConversion601 = kColorConversion601Default; +GLfloat *kColorConversion601FullRange = kColorConversion601FullRangeDefault; +GLfloat *kColorConversion709 = kColorConversion709Default; + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D luminanceTexture; + uniform sampler2D chrominanceTexture; + uniform mediump mat3 colorConversionMatrix; + + void main() + { + mediump vec3 yuv; + lowp vec3 rgb; + + yuv.x = texture2D(luminanceTexture, textureCoordinate).r; + yuv.yz = texture2D(chrominanceTexture, textureCoordinate).rg - vec2(0.5, 0.5); + rgb = colorConversionMatrix * yuv; + + gl_FragColor = vec4(rgb, 1); + } + ); +#else +NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D luminanceTexture; + uniform sampler2D chrominanceTexture; + + void main() + { + vec3 yuv; + vec3 rgb; + + yuv.x = texture2D(luminanceTexture, textureCoordinate).r; + yuv.yz = texture2D(chrominanceTexture, textureCoordinate).rg - vec2(0.5, 0.5); + + // BT.601, which is the standard for SDTV is provided as a reference + /* + rgb = mat3( 1, 1, 1, + 0, -.39465, 2.03211, + 1.13983, -.58060, 0) * yuv; + */ + + // Using BT.709 which is the standard for HDTV + rgb = mat3( 1, 1, 1, + 0, -.21482, 2.12798, + 1.28033, -.38059, 0) * yuv; + + gl_FragColor = vec4(rgb, 1); + } + ); +#endif + +NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D luminanceTexture; + uniform sampler2D chrominanceTexture; + uniform mediump mat3 colorConversionMatrix; + + void main() + { + mediump vec3 yuv; + lowp vec3 rgb; + + yuv.x = texture2D(luminanceTexture, textureCoordinate).r; + yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); + rgb = colorConversionMatrix * yuv; + + gl_FragColor = vec4(rgb, 1); + } + ); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D luminanceTexture; + uniform sampler2D chrominanceTexture; + uniform mediump mat3 colorConversionMatrix; + + void main() + { + mediump vec3 yuv; + lowp vec3 rgb; + + yuv.x = texture2D(luminanceTexture, textureCoordinate).r - (16.0/255.0); + yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); + rgb = colorConversionMatrix * yuv; + + gl_FragColor = vec4(rgb, 1); + } + ); +#else +NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D luminanceTexture; + uniform sampler2D chrominanceTexture; + + void main() + { + vec3 yuv; + vec3 rgb; + + yuv.x = texture2D(luminanceTexture, textureCoordinate).r; + yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); + + // BT.601, which is the standard for SDTV is provided as a reference + /* + rgb = mat3( 1, 1, 1, + 0, -.39465, 2.03211, + 1.13983, -.58060, 0) * yuv; + */ + + // Using BT.709 which is the standard for HDTV + rgb = mat3( 1, 1, 1, + 0, -.21482, 2.12798, + 1.28033, -.38059, 0) * yuv; + + gl_FragColor = vec4(rgb, 1); + } + ); +#endif + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.h new file mode 100755 index 00000000..0f541c42 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageTwoInputFilter.h" + +/** Applies a color dodge blend of two images + */ +@interface GPUImageColorDodgeBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m new file mode 100755 index 00000000..6a38827c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m @@ -0,0 +1,75 @@ +#import "GPUImageColorDodgeBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING +( + + precision mediump float; + + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a); + vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); + + vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; + vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); + + vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct; + + vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct); + + gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0); + } +); +#else +NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a); + vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); + + vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; + vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); + + vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct; + + vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct); + + gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0); + } +); +#endif + +@implementation GPUImageColorDodgeBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorDodgeBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.h new file mode 100755 index 00000000..aaeec438 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorInvertFilter : GPUImageFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m new file mode 100755 index 00000000..0a8798b1 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m @@ -0,0 +1,46 @@ +#import "GPUImageColorInvertFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w); + } +); +#else +NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w); + } + ); +#endif + +@implementation GPUImageColorInvertFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageInvertFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.h new file mode 100644 index 00000000..8b57cd7c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageColorLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m new file mode 100644 index 00000000..d51aedf6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m @@ -0,0 +1,159 @@ +#import "GPUImageColorLocalBinaryPatternFilter.h" + +// This is based on "Accelerating image recognition on mobile devices using GPGPU" by Miguel Bordallo Lopez, Henri Nykanen, Jari Hannuksela, Olli Silven and Markku Vehvilainen +// http://www.ee.oulu.fi/~jhannuks/publications/SPIE2011a.pdf + +// Right pixel is the most significant bit, traveling clockwise to get to the upper right, which is the least significant +// If the external pixel is greater than or equal to the center, set to 1, otherwise 0 +// +// 2 1 0 +// 3 7 +// 4 5 6 + +// 01101101 +// 76543210 + +@implementation GPUImageColorLocalBinaryPatternFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorLocalBinaryPatternFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; + lowp vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + lowp vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + lowp vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + lowp vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + lowp vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + lowp vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + lowp vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + lowp vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + + lowp float redByteTally = 1.0 / 255.0 * step(centerColor.r, topRightColor.r); + redByteTally += 2.0 / 255.0 * step(centerColor.r, topColor.r); + redByteTally += 4.0 / 255.0 * step(centerColor.r, topLeftColor.r); + redByteTally += 8.0 / 255.0 * step(centerColor.r, leftColor.r); + redByteTally += 16.0 / 255.0 * step(centerColor.r, bottomLeftColor.r); + redByteTally += 32.0 / 255.0 * step(centerColor.r, bottomColor.r); + redByteTally += 64.0 / 255.0 * step(centerColor.r, bottomRightColor.r); + redByteTally += 128.0 / 255.0 * step(centerColor.r, rightColor.r); + + lowp float blueByteTally = 1.0 / 255.0 * step(centerColor.b, topRightColor.b); + blueByteTally += 2.0 / 255.0 * step(centerColor.b, topColor.b); + blueByteTally += 4.0 / 255.0 * step(centerColor.b, topLeftColor.b); + blueByteTally += 8.0 / 255.0 * step(centerColor.b, leftColor.b); + blueByteTally += 16.0 / 255.0 * step(centerColor.b, bottomLeftColor.b); + blueByteTally += 32.0 / 255.0 * step(centerColor.b, bottomColor.b); + blueByteTally += 64.0 / 255.0 * step(centerColor.b, bottomRightColor.b); + blueByteTally += 128.0 / 255.0 * step(centerColor.b, rightColor.b); + + lowp float greenByteTally = 1.0 / 255.0 * step(centerColor.g, topRightColor.g); + greenByteTally += 2.0 / 255.0 * step(centerColor.g, topColor.g); + greenByteTally += 4.0 / 255.0 * step(centerColor.g, topLeftColor.g); + greenByteTally += 8.0 / 255.0 * step(centerColor.g, leftColor.g); + greenByteTally += 16.0 / 255.0 * step(centerColor.g, bottomLeftColor.g); + greenByteTally += 32.0 / 255.0 * step(centerColor.g, bottomColor.g); + greenByteTally += 64.0 / 255.0 * step(centerColor.g, bottomRightColor.g); + greenByteTally += 128.0 / 255.0 * step(centerColor.g, rightColor.g); + + // TODO: Replace the above with a dot product and two vec4s + // TODO: Apply step to a matrix, rather than individually + + gl_FragColor = vec4(redByteTally, blueByteTally, greenByteTally, 1.0); + } +); +#else +NSString *const kGPUImageColorLocalBinaryPatternFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; + vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + + float redByteTally = 1.0 / 255.0 * step(centerColor.r, topRightColor.r); + redByteTally += 2.0 / 255.0 * step(centerColor.r, topColor.r); + redByteTally += 4.0 / 255.0 * step(centerColor.r, topLeftColor.r); + redByteTally += 8.0 / 255.0 * step(centerColor.r, leftColor.r); + redByteTally += 16.0 / 255.0 * step(centerColor.r, bottomLeftColor.r); + redByteTally += 32.0 / 255.0 * step(centerColor.r, bottomColor.r); + redByteTally += 64.0 / 255.0 * step(centerColor.r, bottomRightColor.r); + redByteTally += 128.0 / 255.0 * step(centerColor.r, rightColor.r); + + float blueByteTally = 1.0 / 255.0 * step(centerColor.b, topRightColor.b); + blueByteTally += 2.0 / 255.0 * step(centerColor.b, topColor.b); + blueByteTally += 4.0 / 255.0 * step(centerColor.b, topLeftColor.b); + blueByteTally += 8.0 / 255.0 * step(centerColor.b, leftColor.b); + blueByteTally += 16.0 / 255.0 * step(centerColor.b, bottomLeftColor.b); + blueByteTally += 32.0 / 255.0 * step(centerColor.b, bottomColor.b); + blueByteTally += 64.0 / 255.0 * step(centerColor.b, bottomRightColor.b); + blueByteTally += 128.0 / 255.0 * step(centerColor.b, rightColor.b); + + float greenByteTally = 1.0 / 255.0 * step(centerColor.g, topRightColor.g); + greenByteTally += 2.0 / 255.0 * step(centerColor.g, topColor.g); + greenByteTally += 4.0 / 255.0 * step(centerColor.g, topLeftColor.g); + greenByteTally += 8.0 / 255.0 * step(centerColor.g, leftColor.g); + greenByteTally += 16.0 / 255.0 * step(centerColor.g, bottomLeftColor.g); + greenByteTally += 32.0 / 255.0 * step(centerColor.g, bottomColor.g); + greenByteTally += 64.0 / 255.0 * step(centerColor.g, bottomRightColor.g); + greenByteTally += 128.0 / 255.0 * step(centerColor.g, rightColor.g); + + // TODO: Replace the above with a dot product and two vec4s + // TODO: Apply step to a matrix, rather than individually + + gl_FragColor = vec4(redByteTally, blueByteTally, greenByteTally, 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorLocalBinaryPatternFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.h new file mode 100755 index 00000000..75887276 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilter.h" + +/** Transforms the colors of an image by applying a matrix to them + */ +@interface GPUImageColorMatrixFilter : GPUImageFilter +{ + GLint colorMatrixUniform; + GLint intensityUniform; +} + +/** A 4x4 matrix used to transform each color in an image + */ +@property(readwrite, nonatomic) GPUMatrix4x4 colorMatrix; + +/** The degree to which the new transformed color replaces the original color for each pixel + */ +@property(readwrite, nonatomic) CGFloat intensity; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m new file mode 100755 index 00000000..0e21c7e8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m @@ -0,0 +1,87 @@ +#import "GPUImageColorMatrixFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorMatrixFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform lowp mat4 colorMatrix; + uniform lowp float intensity; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 outputColor = textureColor * colorMatrix; + + gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor); + } +); +#else +NSString *const kGPUImageColorMatrixFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform mat4 colorMatrix; + uniform float intensity; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 outputColor = textureColor * colorMatrix; + + gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor); + } +); +#endif + +@implementation GPUImageColorMatrixFilter + +@synthesize intensity = _intensity; +@synthesize colorMatrix = _colorMatrix; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorMatrixFragmentShaderString])) + { + return nil; + } + + colorMatrixUniform = [filterProgram uniformIndex:@"colorMatrix"]; + intensityUniform = [filterProgram uniformIndex:@"intensity"]; + + self.intensity = 1.f; + self.colorMatrix = (GPUMatrix4x4){ + {1.f, 0.f, 0.f, 0.f}, + {0.f, 1.f, 0.f, 0.f}, + {0.f, 0.f, 1.f, 0.f}, + {0.f, 0.f, 0.f, 1.f} + }; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setIntensity:(CGFloat)newIntensity; +{ + _intensity = newIntensity; + + [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; +} + +- (void)setColorMatrix:(GPUMatrix4x4)newColorMatrix; +{ + _colorMatrix = newColorMatrix; + + [self setMatrix4f:_colorMatrix forUniform:colorMatrixUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.h new file mode 100644 index 00000000..c2edca51 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageFilter.h" + +@interface GPUImageColorPackingFilter : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m new file mode 100644 index 00000000..1a087ca8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m @@ -0,0 +1,139 @@ +#import "GPUImageColorPackingFilter.h" + +NSString *const kGPUImageColorPackingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform float texelWidth; + uniform float texelHeight; + + varying vec2 upperLeftInputTextureCoordinate; + varying vec2 upperRightInputTextureCoordinate; + varying vec2 lowerLeftInputTextureCoordinate; + varying vec2 lowerRightInputTextureCoordinate; + + void main() + { + gl_Position = position; + + upperLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, -texelHeight); + upperRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, -texelHeight); + lowerLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, texelHeight); + lowerRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, texelHeight); + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColorPackingFragmentShaderString = SHADER_STRING +( + precision lowp float; + + uniform sampler2D inputImageTexture; + + uniform mediump mat3 convolutionMatrix; + + varying highp vec2 outputTextureCoordinate; + + varying highp vec2 upperLeftInputTextureCoordinate; + varying highp vec2 upperRightInputTextureCoordinate; + varying highp vec2 lowerLeftInputTextureCoordinate; + varying highp vec2 lowerRightInputTextureCoordinate; + + void main() + { + float upperLeftIntensity = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; + float upperRightIntensity = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; + float lowerLeftIntensity = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; + float lowerRightIntensity = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; + + gl_FragColor = vec4(upperLeftIntensity, upperRightIntensity, lowerLeftIntensity, lowerRightIntensity); + } +); +#else +NSString *const kGPUImageColorPackingFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + uniform mat3 convolutionMatrix; + + varying vec2 outputTextureCoordinate; + + varying vec2 upperLeftInputTextureCoordinate; + varying vec2 upperRightInputTextureCoordinate; + varying vec2 lowerLeftInputTextureCoordinate; + varying vec2 lowerRightInputTextureCoordinate; + + void main() + { + float upperLeftIntensity = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; + float upperRightIntensity = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; + float lowerLeftIntensity = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; + float lowerRightIntensity = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; + + gl_FragColor = vec4(upperLeftIntensity, upperRightIntensity, lowerLeftIntensity, lowerRightIntensity); + } +); +#endif + +@implementation GPUImageColorPackingFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageColorPackingVertexShaderString fragmentShaderFromString:kGPUImageColorPackingFragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + texelWidth = 0.5 / inputTextureSize.width; + texelHeight = 0.5 / inputTextureSize.height; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + glUniform1f(texelWidthUniform, texelWidth); + glUniform1f(texelHeightUniform, texelHeight); + }); +} + +#pragma mark - +#pragma mark Managing the display FBOs + +- (CGSize)sizeOfFBO; +{ + CGSize outputSize = [self maximumOutputSize]; + if ( (CGSizeEqualToSize(outputSize, CGSizeZero)) || (inputTextureSize.width < outputSize.width) ) + { + CGSize quarterSize; + quarterSize.width = inputTextureSize.width / 2.0; + quarterSize.height = inputTextureSize.height / 2.0; + return quarterSize; + } + else + { + return outputSize; + } +} + +#pragma mark - +#pragma mark Rendering + +- (CGSize)outputFrameSize; +{ + CGSize quarterSize; + quarterSize.width = inputTextureSize.width / 2.0; + quarterSize.height = inputTextureSize.height / 2.0; + return quarterSize; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.h b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.h new file mode 100755 index 00000000..3d51ed17 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.h @@ -0,0 +1,21 @@ +#import "GPUImageFilterGroup.h" + +// This generates image-wide feature descriptors using the ColourFAST process, as developed and described in +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@class GPUImageColourFASTSamplingOperation; +@class GPUImageBoxBlurFilter; + +@interface GPUImageColourFASTFeatureDetector : GPUImageFilterGroup +{ + GPUImageBoxBlurFilter *blurFilter; + GPUImageColourFASTSamplingOperation *colourFASTSamplingOperation; +} +// The blur radius of the underlying box blur. The default is 3.0. +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m new file mode 100755 index 00000000..f4e3684c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m @@ -0,0 +1,48 @@ +#import "GPUImageColourFASTFeatureDetector.h" +#import "GPUImageColourFASTSamplingOperation.h" +#import "GPUImageBoxBlurFilter.h" + +@implementation GPUImageColourFASTFeatureDetector + +@synthesize blurRadiusInPixels; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: apply a variable Gaussian blur + blurFilter = [[GPUImageBoxBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Second pass: combine the blurred image with the original sharp one + colourFASTSamplingOperation = [[GPUImageColourFASTSamplingOperation alloc] init]; + [self addFilter:colourFASTSamplingOperation]; + + // Texture location 0 needs to be the sharp image for both the blur and the second stage processing + [blurFilter addTarget:colourFASTSamplingOperation atTextureLocation:1]; + + self.initialFilters = [NSArray arrayWithObjects:blurFilter, colourFASTSamplingOperation, nil]; + self.terminalFilter = colourFASTSamplingOperation; + + self.blurRadiusInPixels = 3.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.h b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.h new file mode 100755 index 00000000..78e6ede9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.h @@ -0,0 +1,22 @@ +#import "GPUImageTwoInputFilter.h" + +// This is the feature extraction phase of the ColourFAST feature detector, as described in: +// +// A. Ensor and S. Hall. ColourFAST: GPU-based feature point detection and tracking on mobile devices. 28th International Conference of Image and Vision Computing, New Zealand, 2013, p. 124-129. +// +// Seth Hall, "GPU accelerated feature algorithms for mobile devices", PhD thesis, School of Computing and Mathematical Sciences, Auckland University of Technology 2014. +// http://aut.researchgateway.ac.nz/handle/10292/7991 + +@interface GPUImageColourFASTSamplingOperation : GPUImageTwoInputFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; + BOOL hasOverriddenImageSizeFactor; +} + +// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. +@property(readwrite, nonatomic) CGFloat texelWidth; +@property(readwrite, nonatomic) CGFloat texelHeight; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m new file mode 100755 index 00000000..fc67f470 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m @@ -0,0 +1,204 @@ +#import "GPUImageColourFASTSamplingOperation.h" + +NSString *const kGPUImageColourFASTSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + attribute vec4 inputTextureCoordinate2; + + uniform float texelWidth; + uniform float texelHeight; + + varying vec2 textureCoordinate; + varying vec2 pointATextureCoordinate; + varying vec2 pointBTextureCoordinate; + varying vec2 pointCTextureCoordinate; + varying vec2 pointDTextureCoordinate; + varying vec2 pointETextureCoordinate; + varying vec2 pointFTextureCoordinate; + varying vec2 pointGTextureCoordinate; + varying vec2 pointHTextureCoordinate; + + void main() + { + gl_Position = position; + + float tripleTexelWidth = 3.0 * texelWidth; + float tripleTexelHeight = 3.0 * texelHeight; + + textureCoordinate = inputTextureCoordinate.xy; + + pointATextureCoordinate = vec2(textureCoordinate.x + tripleTexelWidth, textureCoordinate.y + texelHeight); + pointBTextureCoordinate = vec2(textureCoordinate.x + texelWidth, textureCoordinate.y + tripleTexelHeight); + pointCTextureCoordinate = vec2(textureCoordinate.x - texelWidth, textureCoordinate.y + tripleTexelHeight); + pointDTextureCoordinate = vec2(textureCoordinate.x - tripleTexelWidth, textureCoordinate.y + texelHeight); + pointETextureCoordinate = vec2(textureCoordinate.x - tripleTexelWidth, textureCoordinate.y - texelHeight); + pointFTextureCoordinate = vec2(textureCoordinate.x - texelWidth, textureCoordinate.y - tripleTexelHeight); + pointGTextureCoordinate = vec2(textureCoordinate.x + texelWidth, textureCoordinate.y - tripleTexelHeight); + pointHTextureCoordinate = vec2(textureCoordinate.x + tripleTexelWidth, textureCoordinate.y - texelHeight); + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageColourFASTSamplingFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 pointATextureCoordinate; + varying vec2 pointBTextureCoordinate; + varying vec2 pointCTextureCoordinate; + varying vec2 pointDTextureCoordinate; + varying vec2 pointETextureCoordinate; + varying vec2 pointFTextureCoordinate; + varying vec2 pointGTextureCoordinate; + varying vec2 pointHTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + const float PITwo = 6.2832; + const float PI = 3.1416; + void main() + { + vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; + + vec3 pointAColor = texture2D(inputImageTexture, pointATextureCoordinate).rgb; + vec3 pointBColor = texture2D(inputImageTexture, pointBTextureCoordinate).rgb; + vec3 pointCColor = texture2D(inputImageTexture, pointCTextureCoordinate).rgb; + vec3 pointDColor = texture2D(inputImageTexture, pointDTextureCoordinate).rgb; + vec3 pointEColor = texture2D(inputImageTexture, pointETextureCoordinate).rgb; + vec3 pointFColor = texture2D(inputImageTexture, pointFTextureCoordinate).rgb; + vec3 pointGColor = texture2D(inputImageTexture, pointGTextureCoordinate).rgb; + vec3 pointHColor = texture2D(inputImageTexture, pointHTextureCoordinate).rgb; + + vec3 colorComparison = ((pointAColor + pointBColor + pointCColor + pointDColor + pointEColor + pointFColor + pointGColor + pointHColor) * 0.125) - centerColor; + + // Direction calculation drawn from Appendix B of Seth Hall's Ph.D. thesis + + vec3 dirX = (pointAColor*0.94868) + (pointBColor*0.316227) - (pointCColor*0.316227) - (pointDColor*0.94868) - (pointEColor*0.94868) - (pointFColor*0.316227) + (pointGColor*0.316227) + (pointHColor*0.94868); + vec3 dirY = (pointAColor*0.316227) + (pointBColor*0.94868) + (pointCColor*0.94868) + (pointDColor*0.316227) - (pointEColor*0.316227) - (pointFColor*0.94868) - (pointGColor*0.94868) - (pointHColor*0.316227); + vec3 absoluteDifference = abs(colorComparison); + float componentLength = length(colorComparison); + float avgX = dot(absoluteDifference, dirX) / componentLength; + float avgY = dot(absoluteDifference, dirY) / componentLength; + float angle = atan(avgY, avgX); + + vec3 normalizedColorComparison = (colorComparison + 1.0) * 0.5; + + gl_FragColor = vec4(normalizedColorComparison, (angle+PI)/PITwo); + } +); +#else +NSString *const kGPUImageColourFASTSamplingFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 pointATextureCoordinate; + varying vec2 pointBTextureCoordinate; + varying vec2 pointCTextureCoordinate; + varying vec2 pointDTextureCoordinate; + varying vec2 pointETextureCoordinate; + varying vec2 pointFTextureCoordinate; + varying vec2 pointGTextureCoordinate; + varying vec2 pointHTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + const float PITwo = 6.2832; + const float PI = 3.1416; + void main() + { + vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; + + vec3 pointAColor = texture2D(inputImageTexture, pointATextureCoordinate).rgb; + vec3 pointBColor = texture2D(inputImageTexture, pointBTextureCoordinate).rgb; + vec3 pointCColor = texture2D(inputImageTexture, pointCTextureCoordinate).rgb; + vec3 pointDColor = texture2D(inputImageTexture, pointDTextureCoordinate).rgb; + vec3 pointEColor = texture2D(inputImageTexture, pointETextureCoordinate).rgb; + vec3 pointFColor = texture2D(inputImageTexture, pointFTextureCoordinate).rgb; + vec3 pointGColor = texture2D(inputImageTexture, pointGTextureCoordinate).rgb; + vec3 pointHColor = texture2D(inputImageTexture, pointHTextureCoordinate).rgb; + + vec3 colorComparison = ((pointAColor + pointBColor + pointCColor + pointDColor + pointEColor + pointFColor + pointGColor + pointHColor) * 0.125) - centerColor; + + // Direction calculation drawn from Appendix B of Seth Hall's Ph.D. thesis + + vec3 dirX = (pointAColor*0.94868) + (pointBColor*0.316227) - (pointCColor*0.316227) - (pointDColor*0.94868) - (pointEColor*0.94868) - (pointFColor*0.316227) + (pointGColor*0.316227) + (pointHColor*0.94868); + vec3 dirY = (pointAColor*0.316227) + (pointBColor*0.94868) + (pointCColor*0.94868) + (pointDColor*0.316227) - (pointEColor*0.316227) - (pointFColor*0.94868) - (pointGColor*0.94868) - (pointHColor*0.316227); + vec3 absoluteDifference = abs(colorComparison); + float componentLength = length(colorComparison); + float avgX = dot(absoluteDifference, dirX) / componentLength; + float avgY = dot(absoluteDifference, dirY) / componentLength; + float angle = atan(avgY, avgX); + + vec3 normalizedColorComparison = (colorComparison + 1.0) * 0.5; + + gl_FragColor = vec4(normalizedColorComparison, (angle+PI)/PITwo); + } +); +#endif + + +@implementation GPUImageColourFASTSamplingOperation + +@synthesize texelWidth = _texelWidth; +@synthesize texelHeight = _texelHeight; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageColourFASTSamplingVertexShaderString fragmentShaderFromString:kGPUImageColourFASTSamplingFragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + if (!hasOverriddenImageSizeFactor) + { + _texelWidth = 1.0 / filterFrameSize.width; + _texelHeight = 1.0 / filterFrameSize.height; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + glUniform1f(texelWidthUniform, _texelHeight); + glUniform1f(texelHeightUniform, _texelWidth); + } + else + { + glUniform1f(texelWidthUniform, _texelWidth); + glUniform1f(texelHeightUniform, _texelHeight); + } + }); + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTexelWidth:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelWidth = newValue; + + [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelHeight = newValue; + + [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.h new file mode 100755 index 00000000..e09e6dc4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Adjusts the contrast of the image + */ +@interface GPUImageContrastFilter : GPUImageFilter +{ + GLint contrastUniform; +} + +/** Contrast ranges from 0.0 to 4.0 (max contrast), with 1.0 as the normal level + */ +@property(readwrite, nonatomic) CGFloat contrast; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m new file mode 100755 index 00000000..5ed1e22f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m @@ -0,0 +1,66 @@ +#import "GPUImageContrastFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageContrastFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float contrast; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); + } +); +#else +NSString *const kGPUImageContrastFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float contrast; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); + } + ); +#endif + +@implementation GPUImageContrastFilter + +@synthesize contrast = _contrast; + +#pragma mark - +#pragma mark Initialization + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageContrastFragmentShaderString])) + { + return nil; + } + + contrastUniform = [filterProgram uniformIndex:@"contrast"]; + self.contrast = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setContrast:(CGFloat)newValue; +{ + _contrast = newValue; + + [self setFloat:_contrast forUniform:contrastUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.h new file mode 100755 index 00000000..641fb7bf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCropFilter : GPUImageFilter +{ + GLfloat cropTextureCoordinates[8]; +} + +// The crop region is the rectangle within the image to crop. It is normalized to a coordinate space from 0.0 to 1.0, with 0.0, 0.0 being the upper left corner of the image +@property(readwrite, nonatomic) CGRect cropRegion; + +// Initialization and teardown +- (id)initWithCropRegion:(CGRect)newCropRegion; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m new file mode 100755 index 00000000..22e33c17 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m @@ -0,0 +1,274 @@ +#import "GPUImageCropFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageCropFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate); + } +); +#else +NSString *const kGPUImageCropFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate); + } +); +#endif + +@interface GPUImageCropFilter () + +- (void)calculateCropTextureCoordinates; + +@end + +@interface GPUImageCropFilter() +{ + CGSize originallySuppliedInputSize; +} + +@end + +@implementation GPUImageCropFilter + +@synthesize cropRegion = _cropRegion; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithCropRegion:(CGRect)newCropRegion; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageCropFragmentShaderString])) + { + return nil; + } + + self.cropRegion = newCropRegion; + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithCropRegion:CGRectMake(0.0, 0.0, 1.0, 1.0)])) + { + return nil; + } + + return self; +} + +#pragma mark - +#pragma mark Rendering + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (self.preventRendering) + { + return; + } + +// if (overrideInputSize) +// { +// if (CGSizeEqualToSize(forcedMaximumSize, CGSizeZero)) +// { +// return; +// } +// else +// { +// CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(newSize, CGRectMake(0.0, 0.0, forcedMaximumSize.width, forcedMaximumSize.height)); +// inputTextureSize = insetRect.size; +// return; +// } +// } + + CGSize rotatedSize = [self rotatedSize:newSize forIndex:textureIndex]; + originallySuppliedInputSize = rotatedSize; + + CGSize scaledSize; + scaledSize.width = rotatedSize.width * _cropRegion.size.width; + scaledSize.height = rotatedSize.height * _cropRegion.size.height; + + + if (CGSizeEqualToSize(scaledSize, CGSizeZero)) + { + inputTextureSize = scaledSize; + } + else if (!CGSizeEqualToSize(inputTextureSize, scaledSize)) + { + inputTextureSize = scaledSize; + } +} + +#pragma mark - +#pragma mark GPUImageInput + +- (void)calculateCropTextureCoordinates; +{ + CGFloat minX = _cropRegion.origin.x; + CGFloat minY = _cropRegion.origin.y; + CGFloat maxX = CGRectGetMaxX(_cropRegion); + CGFloat maxY = CGRectGetMaxY(_cropRegion); + + switch(inputRotation) + { + case kGPUImageNoRotation: // Works + { + cropTextureCoordinates[0] = minX; // 0,0 + cropTextureCoordinates[1] = minY; + + cropTextureCoordinates[2] = maxX; // 1,0 + cropTextureCoordinates[3] = minY; + + cropTextureCoordinates[4] = minX; // 0,1 + cropTextureCoordinates[5] = maxY; + + cropTextureCoordinates[6] = maxX; // 1,1 + cropTextureCoordinates[7] = maxY; + }; break; + case kGPUImageRotateLeft: // Fixed + { + cropTextureCoordinates[0] = maxY; // 1,0 + cropTextureCoordinates[1] = 1.0 - maxX; + + cropTextureCoordinates[2] = maxY; // 1,1 + cropTextureCoordinates[3] = 1.0 - minX; + + cropTextureCoordinates[4] = minY; // 0,0 + cropTextureCoordinates[5] = 1.0 - maxX; + + cropTextureCoordinates[6] = minY; // 0,1 + cropTextureCoordinates[7] = 1.0 - minX; + }; break; + case kGPUImageRotateRight: // Fixed + { + cropTextureCoordinates[0] = minY; // 0,1 + cropTextureCoordinates[1] = 1.0 - minX; + + cropTextureCoordinates[2] = minY; // 0,0 + cropTextureCoordinates[3] = 1.0 - maxX; + + cropTextureCoordinates[4] = maxY; // 1,1 + cropTextureCoordinates[5] = 1.0 - minX; + + cropTextureCoordinates[6] = maxY; // 1,0 + cropTextureCoordinates[7] = 1.0 - maxX; + }; break; + case kGPUImageFlipVertical: // Works for me + { + cropTextureCoordinates[0] = minX; // 0,1 + cropTextureCoordinates[1] = maxY; + + cropTextureCoordinates[2] = maxX; // 1,1 + cropTextureCoordinates[3] = maxY; + + cropTextureCoordinates[4] = minX; // 0,0 + cropTextureCoordinates[5] = minY; + + cropTextureCoordinates[6] = maxX; // 1,0 + cropTextureCoordinates[7] = minY; + }; break; + case kGPUImageFlipHorizonal: // Works for me + { + cropTextureCoordinates[0] = maxX; // 1,0 + cropTextureCoordinates[1] = minY; + + cropTextureCoordinates[2] = minX; // 0,0 + cropTextureCoordinates[3] = minY; + + cropTextureCoordinates[4] = maxX; // 1,1 + cropTextureCoordinates[5] = maxY; + + cropTextureCoordinates[6] = minX; // 0,1 + cropTextureCoordinates[7] = maxY; + }; break; + case kGPUImageRotate180: // Fixed + { + cropTextureCoordinates[0] = maxX; // 1,1 + cropTextureCoordinates[1] = maxY; + + cropTextureCoordinates[2] = minX; // 0,1 + cropTextureCoordinates[3] = maxY; + + cropTextureCoordinates[4] = maxX; // 1,0 + cropTextureCoordinates[5] = minY; + + cropTextureCoordinates[6] = minX; // 0,0 + cropTextureCoordinates[7] = minY; + }; break; + case kGPUImageRotateRightFlipVertical: // Fixed + { + cropTextureCoordinates[0] = minY; // 0,0 + cropTextureCoordinates[1] = 1.0 - maxX; + + cropTextureCoordinates[2] = minY; // 0,1 + cropTextureCoordinates[3] = 1.0 - minX; + + cropTextureCoordinates[4] = maxY; // 1,0 + cropTextureCoordinates[5] = 1.0 - maxX; + + cropTextureCoordinates[6] = maxY; // 1,1 + cropTextureCoordinates[7] = 1.0 - minX; + }; break; + case kGPUImageRotateRightFlipHorizontal: // Fixed + { + cropTextureCoordinates[0] = maxY; // 1,1 + cropTextureCoordinates[1] = 1.0 - minX; + + cropTextureCoordinates[2] = maxY; // 1,0 + cropTextureCoordinates[3] = 1.0 - maxX; + + cropTextureCoordinates[4] = minY; // 0,1 + cropTextureCoordinates[5] = 1.0 - minX; + + cropTextureCoordinates[6] = minY; // 0,0 + cropTextureCoordinates[7] = 1.0 - maxX; + }; break; + } +} + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + static const GLfloat cropSquareVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + [self renderToTextureWithVertices:cropSquareVertices textureCoordinates:cropTextureCoordinates]; + + [self informTargetsAboutNewFrameAtTime:frameTime]; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setCropRegion:(CGRect)newValue; +{ + NSParameterAssert(newValue.origin.x >= 0 && newValue.origin.x <= 1 && + newValue.origin.y >= 0 && newValue.origin.y <= 1 && + newValue.size.width >= 0 && newValue.size.width <= 1 && + newValue.size.height >= 0 && newValue.size.height <= 1); + + _cropRegion = newValue; + [self calculateCropTextureCoordinates]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self calculateCropTextureCoordinates]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.h b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.h new file mode 100644 index 00000000..569774f5 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.h @@ -0,0 +1,17 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCrosshairGenerator : GPUImageFilter +{ + GLint crosshairWidthUniform, crosshairColorUniform; +} + +// The width of the displayed crosshairs, in pixels. Currently this only works well for odd widths. The default is 5. +@property(readwrite, nonatomic) CGFloat crosshairWidth; + +// The color of the crosshairs is specified using individual red, green, and blue components (normalized to 1.0). The default is green: (0.0, 1.0, 0.0). +- (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; + +// Rendering +- (void)renderCrosshairsFromArray:(GLfloat *)crosshairCoordinates count:(NSUInteger)numberOfCrosshairs frameTime:(CMTime)frameTime; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m new file mode 100644 index 00000000..9e2a29a2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m @@ -0,0 +1,139 @@ +#import "GPUImageCrosshairGenerator.h" + +NSString *const kGPUImageCrosshairVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + uniform float crosshairWidth; + + varying vec2 centerLocation; + varying float pointSpacing; + + void main() + { + gl_Position = vec4(((position.xy * 2.0) - 1.0), 0.0, 1.0); + gl_PointSize = crosshairWidth + 1.0; + pointSpacing = 1.0 / crosshairWidth; + centerLocation = vec2(pointSpacing * ceil(crosshairWidth / 2.0), pointSpacing * ceil(crosshairWidth / 2.0)); + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageCrosshairFragmentShaderString = SHADER_STRING +( + uniform lowp vec3 crosshairColor; + + varying highp vec2 centerLocation; + varying highp float pointSpacing; + + void main() + { + lowp vec2 distanceFromCenter = abs(centerLocation - gl_PointCoord.xy); + lowp float axisTest = step(pointSpacing, gl_PointCoord.y) * step(distanceFromCenter.x, 0.09) + step(pointSpacing, gl_PointCoord.x) * step(distanceFromCenter.y, 0.09); + + gl_FragColor = vec4(crosshairColor * axisTest, axisTest); +// gl_FragColor = vec4(distanceFromCenterInX, distanceFromCenterInY, 0.0, 1.0); + } +); +#else +NSString *const kGPUImageCrosshairFragmentShaderString = SHADER_STRING +( + GPUImageEscapedHashIdentifier(version 120)\n + + uniform vec3 crosshairColor; + + varying vec2 centerLocation; + varying float pointSpacing; + + void main() + { + vec2 distanceFromCenter = abs(centerLocation - gl_PointCoord.xy); + float axisTest = step(pointSpacing, gl_PointCoord.y) * step(distanceFromCenter.x, 0.09) + step(pointSpacing, gl_PointCoord.x) * step(distanceFromCenter.y, 0.09); + + gl_FragColor = vec4(crosshairColor * axisTest, axisTest); + // gl_FragColor = vec4(distanceFromCenterInX, distanceFromCenterInY, 0.0, 1.0); + } +); +#endif + +@implementation GPUImageCrosshairGenerator + +@synthesize crosshairWidth = _crosshairWidth; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageCrosshairVertexShaderString fragmentShaderFromString:kGPUImageCrosshairFragmentShaderString])) + { + return nil; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + crosshairWidthUniform = [filterProgram uniformIndex:@"crosshairWidth"]; + crosshairColorUniform = [filterProgram uniformIndex:@"crosshairColor"]; + + self.crosshairWidth = 5.0; + [self setCrosshairColorRed:0.0 green:1.0 blue:0.0]; + }); + + return self; +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderCrosshairsFromArray:(GLfloat *)crosshairCoordinates count:(NSUInteger)numberOfCrosshairs frameTime:(CMTime)frameTime; +{ + if (self.preventRendering) + { + return; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#else + glEnable(GL_POINT_SPRITE); + glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); +#endif + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, crosshairCoordinates); + + glDrawArrays(GL_POINTS, 0, (GLsizei)numberOfCrosshairs); + + [self informTargetsAboutNewFrameAtTime:frameTime]; + }); +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // Prevent rendering of the frame by normal means +} + +#pragma mark - +#pragma mark Accessors + +- (void)setCrosshairWidth:(CGFloat)newValue; +{ + _crosshairWidth = newValue; + + [self setFloat:_crosshairWidth forUniform:crosshairWidthUniform program:filterProgram]; +} + +- (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 crosshairColor = {redComponent, greenComponent, blueComponent}; + + [self setVec3:crosshairColor forUniform:crosshairColorUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.h new file mode 100755 index 00000000..dab18967 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +@interface GPUImageCrosshatchFilter : GPUImageFilter +{ + GLint crossHatchSpacingUniform, lineWidthUniform; +} +// The fractional width of the image to use as the spacing for the crosshatch. The default is 0.03. +@property(readwrite, nonatomic) CGFloat crossHatchSpacing; + +// A relative width for the crosshatch lines. The default is 0.003. +@property(readwrite, nonatomic) CGFloat lineWidth; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m new file mode 100755 index 00000000..51dbd592 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m @@ -0,0 +1,163 @@ +#import "GPUImageCrosshatchFilter.h" + +// Shader code based on http://machinesdontcare.wordpress.com/ + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageCrosshatchFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float crossHatchSpacing; + uniform highp float lineWidth; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + highp float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W); + + lowp vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); + if (luminance < 1.00) + { + if (mod(textureCoordinate.x + textureCoordinate.y, crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (luminance < 0.75) + { + if (mod(textureCoordinate.x - textureCoordinate.y, crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (luminance < 0.50) + { + if (mod(textureCoordinate.x + textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (luminance < 0.3) + { + if (mod(textureCoordinate.x - textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + + gl_FragColor = colorToDisplay; + } +); +#else +NSString *const kGPUImageCrosshatchFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float crossHatchSpacing; + uniform float lineWidth; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W); + + vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); + if (luminance < 1.00) + { + if (mod(textureCoordinate.x + textureCoordinate.y, crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (luminance < 0.75) + { + if (mod(textureCoordinate.x - textureCoordinate.y, crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (luminance < 0.50) + { + if (mod(textureCoordinate.x + textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (luminance < 0.3) + { + if (mod(textureCoordinate.x - textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) + { + colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); + } + } + + gl_FragColor = colorToDisplay; + } +); +#endif + +@implementation GPUImageCrosshatchFilter + +@synthesize crossHatchSpacing = _crossHatchSpacing; +@synthesize lineWidth = _lineWidth; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageCrosshatchFragmentShaderString])) + { + return nil; + } + + crossHatchSpacingUniform = [filterProgram uniformIndex:@"crossHatchSpacing"]; + lineWidthUniform = [filterProgram uniformIndex:@"lineWidth"]; + + self.crossHatchSpacing = 0.03; + self.lineWidth = 0.003; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setCrossHatchSpacing:(CGFloat)newValue; +{ + CGFloat singlePixelSpacing; + if (inputTextureSize.width != 0.0) + { + singlePixelSpacing = 1.0 / inputTextureSize.width; + } + else + { + singlePixelSpacing = 1.0 / 2048.0; + } + + if (newValue < singlePixelSpacing) + { + _crossHatchSpacing = singlePixelSpacing; + } + else + { + _crossHatchSpacing = newValue; + } + + [self setFloat:_crossHatchSpacing forUniform:crossHatchSpacingUniform program:filterProgram]; +} + +- (void)setLineWidth:(CGFloat)newValue; +{ + _lineWidth = newValue; + + [self setFloat:_lineWidth forUniform:lineWidthUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.h new file mode 100755 index 00000000..5dfe3405 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDarkenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m new file mode 100644 index 00000000..85ec9e8a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m @@ -0,0 +1,52 @@ +#import "GPUImageDarkenBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDarkenBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0); + } +); +#else +NSString *const kGPUImageDarkenBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0); + } + ); +#endif + +@implementation GPUImageDarkenBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageDarkenBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.h new file mode 100755 index 00000000..7c7dfc23 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDifferenceBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m new file mode 100755 index 00000000..01bf09b2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m @@ -0,0 +1,50 @@ +#import "GPUImageDifferenceBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDifferenceBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + gl_FragColor = vec4(abs(textureColor2.rgb - textureColor.rgb), textureColor.a); + } +); +#else +NSString *const kGPUImageDifferenceBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + gl_FragColor = vec4(abs(textureColor2.rgb - textureColor.rgb), textureColor.a); + } +); +#endif + +@implementation GPUImageDifferenceBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageDifferenceBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.h new file mode 100644 index 00000000..59423a37 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.h @@ -0,0 +1,16 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +// For each pixel, this sets it to the maximum value of the red channel in a rectangular neighborhood extending out dilationRadius pixels from the center. +// This extends out bright features, and is most commonly used with black-and-white thresholded images. + +extern NSString *const kGPUImageDilationRadiusOneVertexShaderString; +extern NSString *const kGPUImageDilationRadiusTwoVertexShaderString; +extern NSString *const kGPUImageDilationRadiusThreeVertexShaderString; +extern NSString *const kGPUImageDilationRadiusFourVertexShaderString; + +@interface GPUImageDilationFilter : GPUImageTwoPassTextureSamplingFilter + +// Acceptable values for dilationRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. +- (id)initWithRadius:(NSUInteger)dilationRadius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m new file mode 100644 index 00000000..df065185 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m @@ -0,0 +1,431 @@ +#import "GPUImageDilationFilter.h" + +@implementation GPUImageDilationFilter + +NSString *const kGPUImageDilationRadiusOneVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec2 inputTextureCoordinate; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 offset = vec2(texelWidthOffset, texelHeightOffset); + + centerTextureCoordinate = inputTextureCoordinate; + oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; + oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; + } +); + +NSString *const kGPUImageDilationRadiusTwoVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec2 inputTextureCoordinate; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 offset = vec2(texelWidthOffset, texelHeightOffset); + + centerTextureCoordinate = inputTextureCoordinate; + oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; + oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; + twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); + twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); + } +); + +NSString *const kGPUImageDilationRadiusThreeVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec2 inputTextureCoordinate; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 offset = vec2(texelWidthOffset, texelHeightOffset); + + centerTextureCoordinate = inputTextureCoordinate; + oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; + oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; + twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); + twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); + threeStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 3.0); + threeStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 3.0); + } +); + +NSString *const kGPUImageDilationRadiusFourVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec2 inputTextureCoordinate; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 offset = vec2(texelWidthOffset, texelHeightOffset); + + centerTextureCoordinate = inputTextureCoordinate; + oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; + oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; + twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); + twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); + threeStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 3.0); + threeStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 3.0); + fourStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 4.0); + fourStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 4.0); + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDilationRadiusOneFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + + lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); + +NSString *const kGPUImageDilationRadiusTwoFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + + lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); + +NSString *const kGPUImageDilationRadiusThreeFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + + lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + maxValue = max(maxValue, threeStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); + +NSString *const kGPUImageDilationRadiusFourFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; + float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; + + lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + maxValue = max(maxValue, threeStepsNegativeIntensity); + maxValue = max(maxValue, fourStepsPositiveIntensity); + maxValue = max(maxValue, fourStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); +#else +NSString *const kGPUImageDilationRadiusOneFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + + float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); + +NSString *const kGPUImageDilationRadiusTwoFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + + float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); + +NSString *const kGPUImageDilationRadiusThreeFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + + float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + maxValue = max(maxValue, threeStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); + +NSString *const kGPUImageDilationRadiusFourFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; + float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; + + float maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + maxValue = max(maxValue, threeStepsNegativeIntensity); + maxValue = max(maxValue, fourStepsPositiveIntensity); + maxValue = max(maxValue, fourStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(maxValue), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithRadius:(NSUInteger)dilationRadius; +{ + NSString *fragmentShaderForThisRadius = nil; + NSString *vertexShaderForThisRadius = nil; + + switch (dilationRadius) + { + case 0: + case 1: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; + fragmentShaderForThisRadius = kGPUImageDilationRadiusOneFragmentShaderString; + }; break; + case 2: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; + fragmentShaderForThisRadius = kGPUImageDilationRadiusTwoFragmentShaderString; + }; break; + case 3: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; + fragmentShaderForThisRadius = kGPUImageDilationRadiusThreeFragmentShaderString; + }; break; + case 4: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageDilationRadiusFourFragmentShaderString; + }; break; + default: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageDilationRadiusFourFragmentShaderString; + }; break; + } + + if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) + { + return nil; + } + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h new file mode 100644 index 00000000..fdffb9fb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilter.h" + +@interface GPUImageDirectionalNonMaximumSuppressionFilter : GPUImageFilter +{ + GLint texelWidthUniform, texelHeightUniform; + GLint upperThresholdUniform, lowerThresholdUniform; + + BOOL hasOverriddenImageSizeFactor; +} + +// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. +@property(readwrite, nonatomic) CGFloat texelWidth; +@property(readwrite, nonatomic) CGFloat texelHeight; + +// These thresholds set cutoffs for the intensities that definitely get registered (upper threshold) and those that definitely don't (lower threshold) +@property(readwrite, nonatomic) CGFloat upperThreshold; +@property(readwrite, nonatomic) CGFloat lowerThreshold; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m new file mode 100644 index 00000000..b442f3aa --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m @@ -0,0 +1,141 @@ +#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" + +@implementation GPUImageDirectionalNonMaximumSuppressionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString = SHADER_STRING +( + precision mediump float; + + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform highp float texelWidth; + uniform highp float texelHeight; + uniform mediump float upperThreshold; + uniform mediump float lowerThreshold; + + void main() + { + vec3 currentGradientAndDirection = texture2D(inputImageTexture, textureCoordinate).rgb; + vec2 gradientDirection = ((currentGradientAndDirection.gb * 2.0) - 1.0) * vec2(texelWidth, texelHeight); + + float firstSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate + gradientDirection).r; + float secondSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate - gradientDirection).r; + + float multiplier = step(firstSampledGradientMagnitude, currentGradientAndDirection.r); + multiplier = multiplier * step(secondSampledGradientMagnitude, currentGradientAndDirection.r); + + float thresholdCompliance = smoothstep(lowerThreshold, upperThreshold, currentGradientAndDirection.r); + multiplier = multiplier * thresholdCompliance; + + gl_FragColor = vec4(multiplier, multiplier, multiplier, 1.0); + } +); +#else +NSString *const kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float texelWidth; + uniform float texelHeight; + uniform float upperThreshold; + uniform float lowerThreshold; + + void main() + { + vec3 currentGradientAndDirection = texture2D(inputImageTexture, textureCoordinate).rgb; + vec2 gradientDirection = ((currentGradientAndDirection.gb * 2.0) - 1.0) * vec2(texelWidth, texelHeight); + + float firstSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate + gradientDirection).r; + float secondSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate - gradientDirection).r; + + float multiplier = step(firstSampledGradientMagnitude, currentGradientAndDirection.r); + multiplier = multiplier * step(secondSampledGradientMagnitude, currentGradientAndDirection.r); + + float thresholdCompliance = smoothstep(lowerThreshold, upperThreshold, currentGradientAndDirection.r); + multiplier = multiplier * thresholdCompliance; + + gl_FragColor = vec4(multiplier, multiplier, multiplier, 1.0); + } +); +#endif + +@synthesize texelWidth = _texelWidth; +@synthesize texelHeight = _texelHeight; +@synthesize upperThreshold = _upperThreshold; +@synthesize lowerThreshold = _lowerThreshold; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + upperThresholdUniform = [filterProgram uniformIndex:@"upperThreshold"]; + lowerThresholdUniform = [filterProgram uniformIndex:@"lowerThreshold"]; + + self.upperThreshold = 0.5; + self.lowerThreshold = 0.1; + + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + if (!hasOverriddenImageSizeFactor) + { + _texelWidth = 1.0 / filterFrameSize.width; + _texelHeight = 1.0 / filterFrameSize.height; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + glUniform1f(texelWidthUniform, _texelWidth); + glUniform1f(texelHeightUniform, _texelHeight); + }); + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTexelWidth:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelWidth = newValue; + + [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelHeight = newValue; + + [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; +} + +- (void)setLowerThreshold:(CGFloat)newValue; +{ + _lowerThreshold = newValue; + + [self setFloat:_lowerThreshold forUniform:lowerThresholdUniform program:filterProgram]; +} + +- (void)setUpperThreshold:(CGFloat)newValue; +{ + _upperThreshold = newValue; + + [self setFloat:_upperThreshold forUniform:upperThresholdUniform program:filterProgram]; +} + + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h new file mode 100644 index 00000000..cfccc897 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageDirectionalSobelEdgeDetectionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m new file mode 100644 index 00000000..a3575e3a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m @@ -0,0 +1,103 @@ +#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" + +@implementation GPUImageDirectionalSobelEdgeDetectionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString = SHADER_STRING +( + precision mediump float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + + vec2 gradientDirection; + gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + + float gradientMagnitude = length(gradientDirection); + vec2 normalizedDirection = normalize(gradientDirection); + normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away + normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0 + + gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0); + } +); +#else +NSString *const kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + + vec2 gradientDirection; + gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + + float gradientMagnitude = length(gradientDirection); + vec2 normalizedDirection = normalize(gradientDirection); + normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away + normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0 + + gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString])) + { + return nil; + } + + return self; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.h new file mode 100755 index 00000000..b4e5720a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDissolveBlendFilter : GPUImageTwoInputFilter +{ + GLint mixUniform; +} + +// Mix ranges from 0.0 (only image 1) to 1.0 (only image 2), with 0.5 (half of either) as the normal level +@property(readwrite, nonatomic) CGFloat mix; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m new file mode 100755 index 00000000..b4a5609f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m @@ -0,0 +1,72 @@ +#import "GPUImageDissolveBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDissolveBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + uniform lowp float mixturePercent; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = mix(textureColor, textureColor2, mixturePercent); + } +); +#else +NSString *const kGPUImageDissolveBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + uniform float mixturePercent; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = mix(textureColor, textureColor2, mixturePercent); + } +); +#endif + +@implementation GPUImageDissolveBlendFilter + +@synthesize mix = _mix; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageDissolveBlendFragmentShaderString])) + { + return nil; + } + + mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; + self.mix = 0.5; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setMix:(CGFloat)newValue; +{ + _mix = newValue; + + [self setFloat:_mix forUniform:mixUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.h new file mode 100644 index 00000000..ad798e29 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageDivideBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m new file mode 100644 index 00000000..63ee071e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m @@ -0,0 +1,96 @@ +#import "GPUImageDivideBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageDivideBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + mediump float ra; + if (overlay.a == 0.0 || ((base.r / overlay.r) > (base.a / overlay.a))) + ra = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + else + ra = (base.r * overlay.a * overlay.a) / overlay.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + + + mediump float ga; + if (overlay.a == 0.0 || ((base.g / overlay.g) > (base.a / overlay.a))) + ga = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + else + ga = (base.g * overlay.a * overlay.a) / overlay.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + + + mediump float ba; + if (overlay.a == 0.0 || ((base.b / overlay.b) > (base.a / overlay.a))) + ba = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + else + ba = (base.b * overlay.a * overlay.a) / overlay.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + + mediump float a = overlay.a + base.a - overlay.a * base.a; + + gl_FragColor = vec4(ra, ga, ba, a); + } +); +#else +NSString *const kGPUImageDivideBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + float ra; + if (overlay.a == 0.0 || ((base.r / overlay.r) > (base.a / overlay.a))) + ra = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + else + ra = (base.r * overlay.a * overlay.a) / overlay.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + + + float ga; + if (overlay.a == 0.0 || ((base.g / overlay.g) > (base.a / overlay.a))) + ga = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + else + ga = (base.g * overlay.a * overlay.a) / overlay.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + + + float ba; + if (overlay.a == 0.0 || ((base.b / overlay.b) > (base.a / overlay.a))) + ba = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + else + ba = (base.b * overlay.a * overlay.a) / overlay.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + + float a = overlay.a + base.a - overlay.a * base.a; + + gl_FragColor = vec4(ra, ga, ba, a); + } + ); +#endif + +@implementation GPUImageDivideBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageDivideBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.h new file mode 100755 index 00000000..dbd21e82 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.h @@ -0,0 +1,8 @@ +#import "GPUImage3x3ConvolutionFilter.h" + +@interface GPUImageEmbossFilter : GPUImage3x3ConvolutionFilter + +// The strength of the embossing, from 0.0 to 4.0, with 1.0 as the normal level +@property(readwrite, nonatomic) CGFloat intensity; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m new file mode 100755 index 00000000..6ba48cd4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m @@ -0,0 +1,49 @@ +#import "GPUImageEmbossFilter.h" + +@implementation GPUImageEmbossFilter + +@synthesize intensity = _intensity; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + self.intensity = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setIntensity:(CGFloat)newValue; +{ +// [(GPUImage3x3ConvolutionFilter *)filter setConvolutionMatrix:(GPUMatrix3x3){ +// {-2.0f, -1.0f, 0.0f}, +// {-1.0f, 1.0f, 1.0f}, +// { 0.0f, 1.0f, 2.0f} +// }]; + + _intensity = newValue; + + GPUMatrix3x3 newConvolutionMatrix; + newConvolutionMatrix.one.one = _intensity * (-2.0); + newConvolutionMatrix.one.two = -_intensity; + newConvolutionMatrix.one.three = 0.0f; + + newConvolutionMatrix.two.one = -_intensity; + newConvolutionMatrix.two.two = 1.0; + newConvolutionMatrix.two.three = _intensity; + + newConvolutionMatrix.three.one = 0.0f; + newConvolutionMatrix.three.two = _intensity; + newConvolutionMatrix.three.three = _intensity * 2.0; + + self.convolutionKernel = newConvolutionMatrix; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.h new file mode 100644 index 00000000..b311a265 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +// For each pixel, this sets it to the minimum value of the red channel in a rectangular neighborhood extending out dilationRadius pixels from the center. +// This extends out dark features, and is most commonly used with black-and-white thresholded images. + +@interface GPUImageErosionFilter : GPUImageTwoPassTextureSamplingFilter + +// Acceptable values for erosionRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. +- (id)initWithRadius:(NSUInteger)erosionRadius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m new file mode 100644 index 00000000..05f4f28d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m @@ -0,0 +1,312 @@ +#import "GPUImageErosionFilter.h" +#import "GPUImageDilationFilter.h" + +@implementation GPUImageErosionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageErosionRadiusOneFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + + lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); + +NSString *const kGPUImageErosionRadiusTwoFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + + lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); + +NSString *const kGPUImageErosionRadiusThreeFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + + lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + minValue = min(minValue, threeStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); + +NSString *const kGPUImageErosionRadiusFourFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; + float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; + + lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + minValue = min(minValue, threeStepsNegativeIntensity); + minValue = min(minValue, fourStepsPositiveIntensity); + minValue = min(minValue, fourStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); +#else +NSString *const kGPUImageErosionRadiusOneFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + + float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); + +NSString *const kGPUImageErosionRadiusTwoFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + + float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); + +NSString *const kGPUImageErosionRadiusThreeFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + + float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + minValue = min(minValue, threeStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); + +NSString *const kGPUImageErosionRadiusFourFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; + float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; + float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; + float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; + float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; + float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; + float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; + float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; + float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; + + float minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + minValue = min(minValue, threeStepsNegativeIntensity); + minValue = min(minValue, fourStepsPositiveIntensity); + minValue = min(minValue, fourStepsNegativeIntensity); + + gl_FragColor = vec4(vec3(minValue), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithRadius:(NSUInteger)dilationRadius; +{ + NSString *fragmentShaderForThisRadius = nil; + NSString *vertexShaderForThisRadius = nil; + + switch (dilationRadius) + { + case 0: + case 1: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; + fragmentShaderForThisRadius = kGPUImageErosionRadiusOneFragmentShaderString; + }; break; + case 2: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; + fragmentShaderForThisRadius = kGPUImageErosionRadiusTwoFragmentShaderString; + }; break; + case 3: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; + fragmentShaderForThisRadius = kGPUImageErosionRadiusThreeFragmentShaderString; + }; break; + case 4: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageErosionRadiusFourFragmentShaderString; + }; break; + default: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageErosionRadiusFourFragmentShaderString; + }; break; + } + + if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) + { + return nil; + } + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.h new file mode 100755 index 00000000..f7c83f57 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageExclusionBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m new file mode 100755 index 00000000..c364159f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m @@ -0,0 +1,56 @@ +#import "GPUImageExclusionBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageExclusionBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + // Dca = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa) + + gl_FragColor = vec4((overlay.rgb * base.a + base.rgb * overlay.a - 2.0 * overlay.rgb * base.rgb) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a); + } +); +#else +NSString *const kGPUImageExclusionBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + // Dca = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa) + + gl_FragColor = vec4((overlay.rgb * base.a + base.rgb * overlay.a - 2.0 * overlay.rgb * base.rgb) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a); + } + ); +#endif + +@implementation GPUImageExclusionBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageExclusionBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.h new file mode 100755 index 00000000..886a052f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageFilter.h" + +@interface GPUImageExposureFilter : GPUImageFilter +{ + GLint exposureUniform; +} + +// Exposure ranges from -10.0 to 10.0, with 0.0 as the normal level +@property(readwrite, nonatomic) CGFloat exposure; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m new file mode 100755 index 00000000..d5ee2c9f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m @@ -0,0 +1,66 @@ +#import "GPUImageExposureFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageExposureFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform highp float exposure; + + void main() + { + highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); + } +); +#else +NSString *const kGPUImageExposureFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float exposure; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); + } +); +#endif + +@implementation GPUImageExposureFilter + +@synthesize exposure = _exposure; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageExposureFragmentShaderString])) + { + return nil; + } + + exposureUniform = [filterProgram uniformIndex:@"exposure"]; + self.exposure = 0.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setExposure:(CGFloat)newValue; +{ + _exposure = newValue; + + [self setFloat:_exposure forUniform:exposureUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.h new file mode 100644 index 00000000..86e7cf42 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.h @@ -0,0 +1,33 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGrayscaleFilter; +@class GPUImage3x3TextureSamplingFilter; +@class GPUImageNonMaximumSuppressionFilter; + +/* + An implementation of the Features from Accelerated Segment Test (FAST) feature detector as described in the following publications: + + E. Rosten and T. Drummond. Fusing points and lines for high performance tracking. IEEE International Conference on Computer Vision, 2005. + E. Rosten and T. Drummond. Machine learning for high-speed corner detection. European Conference on Computer Vision, 2006. + + For more about the FAST feature detector, see the resources here: + http://www.edwardrosten.com/work/fast.html + */ + +typedef enum { kGPUImageFAST12Contiguous, kGPUImageFAST12ContiguousNonMaximumSuppressed} GPUImageFASTDetectorType; + +@interface GPUImageFASTCornerDetectionFilter : GPUImageFilterGroup +{ + GPUImageGrayscaleFilter *luminanceReductionFilter; + GPUImage3x3TextureSamplingFilter *featureDetectionFilter; + GPUImageNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; +// Generate a lookup texture based on the bit patterns + +// Step 1: convert to monochrome if necessary +// Step 2: do a lookup at each pixel based on the Bresenham circle, encode comparison in two color components +// Step 3: do non-maximum suppression of close corner points +} + +- (id)initWithFASTDetectorVariant:(GPUImageFASTDetectorType)detectorType; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m new file mode 100644 index 00000000..b04a24aa --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m @@ -0,0 +1,89 @@ +#import "GPUImageFASTCornerDetectionFilter.h" + +#import "GPUImageGrayscaleFilter.h" +#import "GPUImage3x3TextureSamplingFilter.h" +#import "GPUImageNonMaximumSuppressionFilter.h" + +// 14 total texture coordinates from vertex shader for non-dependent reads +// 3 texture coordinates for dependent reads, then + +NSString *const kGPUImageFASTDetectorFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform sampler2D lookupTable; + + void main() + { + lowp float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; + lowp float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + lowp float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + lowp float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + lowp float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + lowp float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + lowp float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + lowp float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + lowp float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + + lowp float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); + byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); + byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); + byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); + byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); + byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); + byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); + byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); + + // TODO: Replace the above with a dot product and two vec4s + // TODO: Apply step to a matrix, rather than individually + + gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); + } + ); + + +@implementation GPUImageFASTCornerDetectionFilter + +- (id)init; +{ + if (!(self = [self initWithFASTDetectorVariant:kGPUImageFAST12ContiguousNonMaximumSuppressed])) + { + return nil; + } + + return self; +} + +- (id)initWithFASTDetectorVariant:(GPUImageFASTDetectorType)detectorType; +{ + if (!(self = [super init])) + { + return nil; + } + +// [derivativeFilter addTarget:blurFilter]; +// [blurFilter addTarget:harrisCornerDetectionFilter]; +// [harrisCornerDetectionFilter addTarget:nonMaximumSuppressionFilter]; + // [simpleThresholdFilter addTarget:colorPackingFilter]; + +// self.initialFilters = [NSArray arrayWithObjects:derivativeFilter, nil]; + // self.terminalFilter = colorPackingFilter; +// self.terminalFilter = nonMaximumSuppressionFilter; + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.h new file mode 100644 index 00000000..cb0b82f7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.h @@ -0,0 +1,15 @@ +#import "GPUImageFilter.h" + +@interface GPUImageFalseColorFilter : GPUImageFilter +{ + GLint firstColorUniform, secondColorUniform; +} + +// The first and second colors specify what colors replace the dark and light areas of the image, respectively. The defaults are (0.0, 0.0, 0.5) amd (1.0, 0.0, 0.0). +@property(readwrite, nonatomic) GPUVector4 firstColor; +@property(readwrite, nonatomic) GPUVector4 secondColor; + +- (void)setFirstColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +- (void)setSecondColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m new file mode 100644 index 00000000..f514dbab --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m @@ -0,0 +1,101 @@ +#import "GPUImageFalseColorFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUFalseColorFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float intensity; + uniform vec3 firstColor; + uniform vec3 secondColor; + + const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + + gl_FragColor = vec4( mix(firstColor.rgb, secondColor.rgb, luminance), textureColor.a); + } +); +#else +NSString *const kGPUFalseColorFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float intensity; + uniform vec3 firstColor; + uniform vec3 secondColor; + + const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + + gl_FragColor = vec4( mix(firstColor.rgb, secondColor.rgb, luminance), textureColor.a); + } +); +#endif + + +@implementation GPUImageFalseColorFilter + +@synthesize secondColor = _secondColor; +@synthesize firstColor = _firstColor; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUFalseColorFragmentShaderString])) + { + return nil; + } + + firstColorUniform = [filterProgram uniformIndex:@"firstColor"]; + secondColorUniform = [filterProgram uniformIndex:@"secondColor"]; + + self.firstColor = (GPUVector4){0.0f, 0.0f, 0.5f, 1.0f}; + self.secondColor = (GPUVector4){1.0f, 0.0f, 0.0f, 1.0f}; + + return self; +} + + +#pragma mark - +#pragma mark Accessors + +- (void)setFirstColor:(GPUVector4)newValue; +{ + _firstColor = newValue; + + [self setFirstColorRed:_firstColor.one green:_firstColor.two blue:_firstColor.three]; +} + +- (void)setSecondColor:(GPUVector4)newValue; +{ + _secondColor = newValue; + + [self setSecondColorRed:_secondColor.one green:_secondColor.two blue:_secondColor.three]; +} + +- (void)setFirstColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 firstColor = {redComponent, greenComponent, blueComponent}; + + [self setVec3:firstColor forUniform:firstColorUniform program:filterProgram]; +} + +- (void)setSecondColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 secondColor = {redComponent, greenComponent, blueComponent}; + + [self setVec3:secondColor forUniform:secondColorUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageFilter.h new file mode 100755 index 00000000..0171aa80 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFilter.h @@ -0,0 +1,134 @@ +#import "GPUImageOutput.h" + +#define STRINGIZE(x) #x +#define STRINGIZE2(x) STRINGIZE(x) +#define SHADER_STRING(text) @ STRINGIZE2(text) + +#define GPUImageHashIdentifier # +#define GPUImageWrappedLabel(x) x +#define GPUImageEscapedHashIdentifier(a) GPUImageWrappedLabel(GPUImageHashIdentifier)a + +extern NSString *const kGPUImageVertexShaderString; +extern NSString *const kGPUImagePassthroughFragmentShaderString; + +struct GPUVector4 { + GLfloat one; + GLfloat two; + GLfloat three; + GLfloat four; +}; +typedef struct GPUVector4 GPUVector4; + +struct GPUVector3 { + GLfloat one; + GLfloat two; + GLfloat three; +}; +typedef struct GPUVector3 GPUVector3; + +struct GPUMatrix4x4 { + GPUVector4 one; + GPUVector4 two; + GPUVector4 three; + GPUVector4 four; +}; +typedef struct GPUMatrix4x4 GPUMatrix4x4; + +struct GPUMatrix3x3 { + GPUVector3 one; + GPUVector3 two; + GPUVector3 three; +}; +typedef struct GPUMatrix3x3 GPUMatrix3x3; + +/** GPUImage's base filter class + + Filters and other subsequent elements in the chain conform to the GPUImageInput protocol, which lets them take in the supplied or processed texture from the previous link in the chain and do something with it. Objects one step further down the chain are considered targets, and processing can be branched by adding multiple targets to a single output or filter. + */ +@interface GPUImageFilter : GPUImageOutput +{ + GPUImageFramebuffer *firstInputFramebuffer; + + GLProgram *filterProgram; + GLint filterPositionAttribute, filterTextureCoordinateAttribute; + GLint filterInputTextureUniform; + GLfloat backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha; + + BOOL isEndProcessing; + + CGSize currentFilterSize; + GPUImageRotationMode inputRotation; + + BOOL currentlyReceivingMonochromeInput; + + NSMutableDictionary *uniformStateRestorationBlocks; + dispatch_semaphore_t imageCaptureSemaphore; +} + +@property(readonly) CVPixelBufferRef renderTarget; +@property(readwrite, nonatomic) BOOL preventRendering; +@property(readwrite, nonatomic) BOOL currentlyReceivingMonochromeInput; + +/// @name Initialization and teardown + +/** + Initialize with vertex and fragment shaders + + You make take advantage of the SHADER_STRING macro to write your shaders in-line. + @param vertexShaderString Source code of the vertex shader to use + @param fragmentShaderString Source code of the fragment shader to use + */ +- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; + +/** + Initialize with a fragment shader + + You may take advantage of the SHADER_STRING macro to write your shader in-line. + @param fragmentShaderString Source code of fragment shader to use + */ +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +/** + Initialize with a fragment shader + @param fragmentShaderFilename Filename of fragment shader to load + */ +- (id)initWithFragmentShaderFromFile:(NSString *)fragmentShaderFilename; +- (void)initializeAttributes; +- (void)setupFilterForSize:(CGSize)filterFrameSize; +- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; +- (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode)rotation; + +/// @name Managing the display FBOs +/** Size of the frame buffer object + */ +- (CGSize)sizeOfFBO; + +/// @name Rendering ++ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; +- (CGSize)outputFrameSize; + +/// @name Input parameters +- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +- (void)setInteger:(GLint)newInteger forUniformName:(NSString *)uniformName; +- (void)setFloat:(GLfloat)newFloat forUniformName:(NSString *)uniformName; +- (void)setSize:(CGSize)newSize forUniformName:(NSString *)uniformName; +- (void)setPoint:(CGPoint)newPoint forUniformName:(NSString *)uniformName; +- (void)setFloatVec3:(GPUVector3)newVec3 forUniformName:(NSString *)uniformName; +- (void)setFloatVec4:(GPUVector4)newVec4 forUniform:(NSString *)uniformName; +- (void)setFloatArray:(GLfloat *)array length:(GLsizei)count forUniform:(NSString*)uniformName; + +- (void)setMatrix3f:(GPUMatrix3x3)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setMatrix4f:(GPUMatrix4x4)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setFloat:(GLfloat)floatValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setPoint:(CGPoint)pointValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setSize:(CGSize)sizeValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setVec3:(GPUVector3)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setVec4:(GPUVector4)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setFloatArray:(GLfloat *)arrayValue length:(GLsizei)arrayLength forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +- (void)setInteger:(GLint)intValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; + +- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; +- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFilter.m new file mode 100755 index 00000000..406d707a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFilter.m @@ -0,0 +1,753 @@ +#import "GPUImageFilter.h" +#import "GPUImagePicture.h" +#import + +// Hardcode the vertex shader for standard filters, but this can be overridden +NSString *const kGPUImageVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + varying vec2 textureCoordinate; + + void main() + { + gl_Position = position; + textureCoordinate = inputTextureCoordinate.xy; + } + ); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + +NSString *const kGPUImagePassthroughFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate); + } +); + +#else + +NSString *const kGPUImagePassthroughFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate); + } +); +#endif + + +@implementation GPUImageFilter + +@synthesize preventRendering = _preventRendering; +@synthesize currentlyReceivingMonochromeInput; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super init])) + { + return nil; + } + + uniformStateRestorationBlocks = [NSMutableDictionary dictionaryWithCapacity:10]; + _preventRendering = NO; + currentlyReceivingMonochromeInput = NO; + inputRotation = kGPUImageNoRotation; + backgroundColorRed = 0.0; + backgroundColorGreen = 0.0; + backgroundColorBlue = 0.0; + backgroundColorAlpha = 0.0; + imageCaptureSemaphore = dispatch_semaphore_create(0); + dispatch_semaphore_signal(imageCaptureSemaphore); + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + filterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString]; + + if (!filterProgram.initialized) + { + [self initializeAttributes]; + + if (![filterProgram link]) + { + NSString *progLog = [filterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [filterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [filterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + filterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + filterPositionAttribute = [filterProgram attributeIndex:@"position"]; + filterTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate"]; + filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + glEnableVertexAttribArray(filterPositionAttribute); + glEnableVertexAttribArray(filterTextureCoordinateAttribute); + }); + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [self initWithVertexShaderFromString:kGPUImageVertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithFragmentShaderFromFile:(NSString *)fragmentShaderFilename; +{ + NSString *fragmentShaderPathname = [[NSBundle mainBundle] pathForResource:fragmentShaderFilename ofType:@"fsh"]; + NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragmentShaderPathname encoding:NSUTF8StringEncoding error:nil]; + + if (!(self = [self initWithFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (void)initializeAttributes; +{ + [filterProgram addAttribute:@"position"]; + [filterProgram addAttribute:@"inputTextureCoordinate"]; + + // Override this, calling back to this super method, in order to add new attributes to your vertex shader +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + // This is where you can override to provide some custom setup, if your filter has a size-dependent element +} + +- (void)dealloc +{ +#if !OS_OBJECT_USE_OBJC + if (imageCaptureSemaphore != NULL) + { + dispatch_release(imageCaptureSemaphore); + } +#endif + +} + +#pragma mark - +#pragma mark Still image processing + +- (void)useNextFrameForImageCapture; +{ + usingNextFrameForImageCapture = YES; + + // Set the semaphore high, if it isn't already + if (dispatch_semaphore_wait(imageCaptureSemaphore, DISPATCH_TIME_NOW) != 0) + { + return; + } +} + +- (CGImageRef)newCGImageFromCurrentlyProcessedOutput +{ + // Give it three seconds to process, then abort if they forgot to set up the image capture properly + double timeoutForImageCapture = 3.0; + dispatch_time_t convertedTimeout = dispatch_time(DISPATCH_TIME_NOW, timeoutForImageCapture * NSEC_PER_SEC); + + if (dispatch_semaphore_wait(imageCaptureSemaphore, convertedTimeout) != 0) + { + return NULL; + } + + GPUImageFramebuffer* framebuffer = [self framebufferForOutput]; + + usingNextFrameForImageCapture = NO; + dispatch_semaphore_signal(imageCaptureSemaphore); + + CGImageRef image = [framebuffer newCGImageFromFramebufferContents]; + return image; +} + +#pragma mark - +#pragma mark Managing the display FBOs + +- (CGSize)sizeOfFBO; +{ + CGSize outputSize = [self maximumOutputSize]; + if ( (CGSizeEqualToSize(outputSize, CGSizeZero)) || (inputTextureSize.width < outputSize.width) ) + { + return inputTextureSize; + } + else + { + return outputSize; + } +} + +#pragma mark - +#pragma mark Rendering + ++ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; +{ + static const GLfloat noRotationTextureCoordinates[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 1.0f, + }; + + static const GLfloat rotateLeftTextureCoordinates[] = { + 1.0f, 0.0f, + 1.0f, 1.0f, + 0.0f, 0.0f, + 0.0f, 1.0f, + }; + + static const GLfloat rotateRightTextureCoordinates[] = { + 0.0f, 1.0f, + 0.0f, 0.0f, + 1.0f, 1.0f, + 1.0f, 0.0f, + }; + + static const GLfloat verticalFlipTextureCoordinates[] = { + 0.0f, 1.0f, + 1.0f, 1.0f, + 0.0f, 0.0f, + 1.0f, 0.0f, + }; + + static const GLfloat horizontalFlipTextureCoordinates[] = { + 1.0f, 0.0f, + 0.0f, 0.0f, + 1.0f, 1.0f, + 0.0f, 1.0f, + }; + + static const GLfloat rotateRightVerticalFlipTextureCoordinates[] = { + 0.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 0.0f, + 1.0f, 1.0f, + }; + + static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = { + 1.0f, 1.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 0.0f, 0.0f, + }; + + static const GLfloat rotate180TextureCoordinates[] = { + 1.0f, 1.0f, + 0.0f, 1.0f, + 1.0f, 0.0f, + 0.0f, 0.0f, + }; + + switch(rotationMode) + { + case kGPUImageNoRotation: return noRotationTextureCoordinates; + case kGPUImageRotateLeft: return rotateLeftTextureCoordinates; + case kGPUImageRotateRight: return rotateRightTextureCoordinates; + case kGPUImageFlipVertical: return verticalFlipTextureCoordinates; + case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates; + case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates; + case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates; + case kGPUImageRotate180: return rotate180TextureCoordinates; + } +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + [self setUniformsForProgramAtIndex:0]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + + glUniform1i(filterInputTextureUniform, 2); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + [firstInputFramebuffer unlock]; + + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; +{ + if (self.frameProcessingCompletionBlock != NULL) + { + self.frameProcessingCompletionBlock(self, frameTime); + } + + // Get all targets the framebuffer so they can grab a lock on it + for (id currentTarget in targets) + { + if (currentTarget != self.targetToIgnoreForUpdates) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [self setInputFramebufferForTarget:currentTarget atIndex:textureIndex]; + [currentTarget setInputSize:[self outputFrameSize] atIndex:textureIndex]; + } + } + + // Release our hold so it can return to the cache immediately upon processing + [[self framebufferForOutput] unlock]; + + if (usingNextFrameForImageCapture) + { +// usingNextFrameForImageCapture = NO; + } + else + { + [self removeOutputFramebuffer]; + } + + // Trigger processing last, so that our unlock comes first in serial execution, avoiding the need for a callback + for (id currentTarget in targets) + { + if (currentTarget != self.targetToIgnoreForUpdates) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndex]; + } + } +} + +- (CGSize)outputFrameSize; +{ + return inputTextureSize; +} + +#pragma mark - +#pragma mark Input parameters + +- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +{ + backgroundColorRed = redComponent; + backgroundColorGreen = greenComponent; + backgroundColorBlue = blueComponent; + backgroundColorAlpha = alphaComponent; +} + +- (void)setInteger:(GLint)newInteger forUniformName:(NSString *)uniformName; +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + [self setInteger:newInteger forUniform:uniformIndex program:filterProgram]; +} + +- (void)setFloat:(GLfloat)newFloat forUniformName:(NSString *)uniformName; +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + [self setFloat:newFloat forUniform:uniformIndex program:filterProgram]; +} + +- (void)setSize:(CGSize)newSize forUniformName:(NSString *)uniformName; +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + [self setSize:newSize forUniform:uniformIndex program:filterProgram]; +} + +- (void)setPoint:(CGPoint)newPoint forUniformName:(NSString *)uniformName; +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + [self setPoint:newPoint forUniform:uniformIndex program:filterProgram]; +} + +- (void)setFloatVec3:(GPUVector3)newVec3 forUniformName:(NSString *)uniformName; +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + [self setVec3:newVec3 forUniform:uniformIndex program:filterProgram]; +} + +- (void)setFloatVec4:(GPUVector4)newVec4 forUniform:(NSString *)uniformName; +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + [self setVec4:newVec4 forUniform:uniformIndex program:filterProgram]; +} + +- (void)setFloatArray:(GLfloat *)array length:(GLsizei)count forUniform:(NSString*)uniformName +{ + GLint uniformIndex = [filterProgram uniformIndex:uniformName]; + + [self setFloatArray:array length:count forUniform:uniformIndex program:filterProgram]; +} + +- (void)setMatrix3f:(GPUMatrix3x3)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniformMatrix3fv(uniform, 1, GL_FALSE, (GLfloat *)&matrix); + }]; + }); +} + +- (void)setMatrix4f:(GPUMatrix4x4)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniformMatrix4fv(uniform, 1, GL_FALSE, (GLfloat *)&matrix); + }]; + }); +} + +- (void)setFloat:(GLfloat)floatValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniform1f(uniform, floatValue); + }]; + }); +} + +- (void)setPoint:(CGPoint)pointValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + GLfloat positionArray[2]; + positionArray[0] = pointValue.x; + positionArray[1] = pointValue.y; + + glUniform2fv(uniform, 1, positionArray); + }]; + }); +} + +- (void)setSize:(CGSize)sizeValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + GLfloat sizeArray[2]; + sizeArray[0] = sizeValue.width; + sizeArray[1] = sizeValue.height; + + glUniform2fv(uniform, 1, sizeArray); + }]; + }); +} + +- (void)setVec3:(GPUVector3)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniform3fv(uniform, 1, (GLfloat *)&vectorValue); + }]; + }); +} + +- (void)setVec4:(GPUVector4)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniform4fv(uniform, 1, (GLfloat *)&vectorValue); + }]; + }); +} + +- (void)setFloatArray:(GLfloat *)arrayValue length:(GLsizei)arrayLength forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + // Make a copy of the data, so it doesn't get overwritten before async call executes + NSData* arrayData = [NSData dataWithBytes:arrayValue length:arrayLength * sizeof(arrayValue[0])]; + + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniform1fv(uniform, arrayLength, [arrayData bytes]); + }]; + }); +} + +- (void)setInteger:(GLint)intValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:shaderProgram]; + + [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ + glUniform1i(uniform, intValue); + }]; + }); +} + +- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; +{ + [uniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; + uniformStateBlock(); +} + +- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; +{ + [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ + dispatch_block_t currentBlock = obj; + currentBlock(); + }]; +} + +#pragma mark - +#pragma mark GPUImageInput + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + static const GLfloat imageVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + + [self informTargetsAboutNewFrameAtTime:frameTime]; +} + +- (NSInteger)nextAvailableTextureIndex; +{ + return 0; +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + firstInputFramebuffer = newInputFramebuffer; + [firstInputFramebuffer lock]; +} + +- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; +{ + CGSize rotatedSize = sizeToRotate; + + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + rotatedSize.width = sizeToRotate.height; + rotatedSize.height = sizeToRotate.width; + } + + return rotatedSize; +} + +- (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode)rotation; +{ + CGPoint rotatedPoint; + switch(rotation) + { + case kGPUImageNoRotation: return pointToRotate; break; + case kGPUImageFlipHorizonal: + { + rotatedPoint.x = 1.0 - pointToRotate.x; + rotatedPoint.y = pointToRotate.y; + }; break; + case kGPUImageFlipVertical: + { + rotatedPoint.x = pointToRotate.x; + rotatedPoint.y = 1.0 - pointToRotate.y; + }; break; + case kGPUImageRotateLeft: + { + rotatedPoint.x = 1.0 - pointToRotate.y; + rotatedPoint.y = pointToRotate.x; + }; break; + case kGPUImageRotateRight: + { + rotatedPoint.x = pointToRotate.y; + rotatedPoint.y = 1.0 - pointToRotate.x; + }; break; + case kGPUImageRotateRightFlipVertical: + { + rotatedPoint.x = pointToRotate.y; + rotatedPoint.y = pointToRotate.x; + }; break; + case kGPUImageRotateRightFlipHorizontal: + { + rotatedPoint.x = 1.0 - pointToRotate.y; + rotatedPoint.y = 1.0 - pointToRotate.x; + }; break; + case kGPUImageRotate180: + { + rotatedPoint.x = 1.0 - pointToRotate.x; + rotatedPoint.y = 1.0 - pointToRotate.y; + }; break; + } + + return rotatedPoint; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (self.preventRendering) + { + return; + } + + if (overrideInputSize) + { + if (CGSizeEqualToSize(forcedMaximumSize, CGSizeZero)) + { + } + else + { + CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(newSize, CGRectMake(0.0, 0.0, forcedMaximumSize.width, forcedMaximumSize.height)); + inputTextureSize = insetRect.size; + } + } + else + { + CGSize rotatedSize = [self rotatedSize:newSize forIndex:textureIndex]; + + if (CGSizeEqualToSize(rotatedSize, CGSizeZero)) + { + inputTextureSize = rotatedSize; + } + else if (!CGSizeEqualToSize(inputTextureSize, rotatedSize)) + { + inputTextureSize = rotatedSize; + } + } + + [self setupFilterForSize:[self sizeOfFBO]]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + inputRotation = newInputRotation; +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + if (CGSizeEqualToSize(frameSize, CGSizeZero)) + { + overrideInputSize = NO; + } + else + { + overrideInputSize = YES; + inputTextureSize = frameSize; + forcedMaximumSize = CGSizeZero; + } +} + +- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; +{ + if (CGSizeEqualToSize(frameSize, CGSizeZero)) + { + overrideInputSize = NO; + inputTextureSize = CGSizeZero; + forcedMaximumSize = CGSizeZero; + } + else + { + overrideInputSize = YES; + forcedMaximumSize = frameSize; + } +} + +- (CGSize)maximumOutputSize; +{ + // I'm temporarily disabling adjustments for smaller output sizes until I figure out how to make this work better + return CGSizeZero; + + /* + if (CGSizeEqualToSize(cachedMaximumOutputSize, CGSizeZero)) + { + for (id currentTarget in targets) + { + if ([currentTarget maximumOutputSize].width > cachedMaximumOutputSize.width) + { + cachedMaximumOutputSize = [currentTarget maximumOutputSize]; + } + } + } + + return cachedMaximumOutputSize; + */ +} + +- (void)endProcessing +{ + if (!isEndProcessing) + { + isEndProcessing = YES; + + for (id currentTarget in targets) + { + [currentTarget endProcessing]; + } + } +} + +- (BOOL)wantsMonochromeInput; +{ + return NO; +} + +#pragma mark - +#pragma mark Accessors + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.h b/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.h new file mode 100755 index 00000000..6817cdf0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.h @@ -0,0 +1,19 @@ +#import "GPUImageOutput.h" +#import "GPUImageFilter.h" + +@interface GPUImageFilterGroup : GPUImageOutput +{ + NSMutableArray *filters; + BOOL isEndProcessing; +} + +@property(readwrite, nonatomic, strong) GPUImageOutput *terminalFilter; +@property(readwrite, nonatomic, strong) NSArray *initialFilters; +@property(readwrite, nonatomic, strong) GPUImageOutput *inputFilterToIgnoreForUpdates; + +// Filter management +- (void)addFilter:(GPUImageOutput *)newFilter; +- (GPUImageOutput *)filterAtIndex:(NSUInteger)filterIndex; +- (NSUInteger)filterCount; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m b/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m new file mode 100755 index 00000000..72cfe5e7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m @@ -0,0 +1,208 @@ +#import "GPUImageFilterGroup.h" +#import "GPUImagePicture.h" + +@implementation GPUImageFilterGroup + +@synthesize terminalFilter = _terminalFilter; +@synthesize initialFilters = _initialFilters; +@synthesize inputFilterToIgnoreForUpdates = _inputFilterToIgnoreForUpdates; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + filters = [[NSMutableArray alloc] init]; + + return self; +} + +#pragma mark - +#pragma mark Filter management + +- (void)addFilter:(GPUImageOutput *)newFilter; +{ + [filters addObject:newFilter]; +} + +- (GPUImageOutput *)filterAtIndex:(NSUInteger)filterIndex; +{ + return [filters objectAtIndex:filterIndex]; +} + +- (NSUInteger)filterCount; +{ + return [filters count]; +} + +#pragma mark - +#pragma mark Still image processing + +- (void)useNextFrameForImageCapture; +{ + [self.terminalFilter useNextFrameForImageCapture]; +} + +- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; +{ + return [self.terminalFilter newCGImageFromCurrentlyProcessedOutput]; +} + +#pragma mark - +#pragma mark GPUImageOutput overrides + +- (void)setTargetToIgnoreForUpdates:(id)targetToIgnoreForUpdates; +{ + [_terminalFilter setTargetToIgnoreForUpdates:targetToIgnoreForUpdates]; +} + +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; +{ + [_terminalFilter addTarget:newTarget atTextureLocation:textureLocation]; +} + +- (void)removeTarget:(id)targetToRemove; +{ + [_terminalFilter removeTarget:targetToRemove]; +} + +- (void)removeAllTargets; +{ + [_terminalFilter removeAllTargets]; +} + +- (NSArray *)targets; +{ + return [_terminalFilter targets]; +} + +- (void)setFrameProcessingCompletionBlock:(void (^)(GPUImageOutput *, CMTime))frameProcessingCompletionBlock; +{ + [_terminalFilter setFrameProcessingCompletionBlock:frameProcessingCompletionBlock]; +} + +- (void (^)(GPUImageOutput *, CMTime))frameProcessingCompletionBlock; +{ + return [_terminalFilter frameProcessingCompletionBlock]; +} + +#pragma mark - +#pragma mark GPUImageInput protocol + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + for (GPUImageOutput *currentFilter in _initialFilters) + { + if (currentFilter != self.inputFilterToIgnoreForUpdates) + { + [currentFilter newFrameReadyAtTime:frameTime atIndex:textureIndex]; + } + } +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + for (GPUImageOutput *currentFilter in _initialFilters) + { + [currentFilter setInputFramebuffer:newInputFramebuffer atIndex:textureIndex]; + } +} + +- (NSInteger)nextAvailableTextureIndex; +{ +// if ([_initialFilters count] > 0) +// { +// return [[_initialFilters objectAtIndex:0] nextAvailableTextureIndex]; +// } + + return 0; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + for (GPUImageOutput *currentFilter in _initialFilters) + { + [currentFilter setInputSize:newSize atIndex:textureIndex]; + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + for (GPUImageOutput *currentFilter in _initialFilters) + { + [currentFilter setInputRotation:newInputRotation atIndex:(NSInteger)textureIndex]; + } +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + for (GPUImageOutput *currentFilter in filters) + { + [currentFilter forceProcessingAtSize:frameSize]; + } +} + +- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; +{ + for (GPUImageOutput *currentFilter in filters) + { + [currentFilter forceProcessingAtSizeRespectingAspectRatio:frameSize]; + } +} + +- (CGSize)maximumOutputSize; +{ + // I'm temporarily disabling adjustments for smaller output sizes until I figure out how to make this work better + return CGSizeZero; + + /* + if (CGSizeEqualToSize(cachedMaximumOutputSize, CGSizeZero)) + { + for (id currentTarget in _initialFilters) + { + if ([currentTarget maximumOutputSize].width > cachedMaximumOutputSize.width) + { + cachedMaximumOutputSize = [currentTarget maximumOutputSize]; + } + } + } + + return cachedMaximumOutputSize; + */ +} + +- (void)endProcessing; +{ + if (!isEndProcessing) + { + isEndProcessing = YES; + + for (id currentTarget in _initialFilters) + { + [currentTarget endProcessing]; + } + } +} + +- (BOOL)wantsMonochromeInput; +{ + BOOL allInputsWantMonochromeInput = YES; + for (GPUImageOutput *currentFilter in _initialFilters) + { + allInputsWantMonochromeInput = allInputsWantMonochromeInput && [currentFilter wantsMonochromeInput]; + } + + return allInputsWantMonochromeInput; +} + +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; +{ + for (GPUImageOutput *currentFilter in _initialFilters) + { + [currentFilter setCurrentlyReceivingMonochromeInput:newValue]; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.h b/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.h new file mode 100755 index 00000000..dc2baeac --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.h @@ -0,0 +1,30 @@ +#import +#import "GPUImageOutput.h" + +@interface GPUImageFilterPipeline : NSObject +{ + NSString *stringValue; +} + +@property (strong) NSMutableArray *filters; + +@property (strong) GPUImageOutput *input; +@property (strong) id output; + +- (id) initWithOrderedFilters:(NSArray*) filters input:(GPUImageOutput*)input output:(id )output; +- (id) initWithConfiguration:(NSDictionary*) configuration input:(GPUImageOutput*)input output:(id )output; +- (id) initWithConfigurationFile:(NSURL*) configuration input:(GPUImageOutput*)input output:(id )output; + +- (void) addFilter:(GPUImageOutput *)filter; +- (void) addFilter:(GPUImageOutput *)filter atIndex:(NSUInteger)insertIndex; +- (void) replaceFilterAtIndex:(NSUInteger)index withFilter:(GPUImageOutput *)filter; +- (void) replaceAllFilters:(NSArray *) newFilters; +- (void) removeFilter:(GPUImageOutput *)filter; +- (void) removeFilterAtIndex:(NSUInteger)index; +- (void) removeAllFilters; + +- (UIImage *) currentFilteredFrame; +- (UIImage *) currentFilteredFrameWithOrientation:(UIImageOrientation)imageOrientation; +- (CGImageRef) newCGImageFromCurrentFilteredFrame; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m b/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m new file mode 100755 index 00000000..4fbe5ebb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m @@ -0,0 +1,218 @@ +#import "GPUImageFilterPipeline.h" + +@interface GPUImageFilterPipeline () + +- (BOOL)_parseConfiguration:(NSDictionary *)configuration; + +- (void)_refreshFilters; + +@end + +@implementation GPUImageFilterPipeline + +@synthesize filters = _filters, input = _input, output = _output; + +#pragma mark Config file init + +- (id)initWithConfiguration:(NSDictionary *)configuration input:(GPUImageOutput *)input output:(id )output { + self = [super init]; + if (self) { + self.input = input; + self.output = output; + if (![self _parseConfiguration:configuration]) { + NSLog(@"Sorry, a parsing error occurred."); + abort(); + } + [self _refreshFilters]; + } + return self; +} + +- (id)initWithConfigurationFile:(NSURL *)configuration input:(GPUImageOutput *)input output:(id )output { + return [self initWithConfiguration:[NSDictionary dictionaryWithContentsOfURL:configuration] input:input output:output]; +} + +- (BOOL)_parseConfiguration:(NSDictionary *)configuration { + NSArray *filters = [configuration objectForKey:@"Filters"]; + if (!filters) { + return NO; + } + + NSError *regexError = nil; + NSRegularExpression *parsingRegex = [NSRegularExpression regularExpressionWithPattern:@"(float|CGPoint|NSString)\\((.*?)(?:,\\s*(.*?))*\\)" + options:0 + error:®exError]; + + // It's faster to put them into an array and then pass it to the filters property than it is to call [self addFilter:] every time + NSMutableArray *orderedFilters = [NSMutableArray arrayWithCapacity:[filters count]]; + for (NSDictionary *filter in filters) { + NSString *filterName = [filter objectForKey:@"FilterName"]; + Class theClass = NSClassFromString(filterName); + GPUImageOutput *genericFilter = [[theClass alloc] init]; + // Set up the properties + NSDictionary *filterAttributes; + if ((filterAttributes = [filter objectForKey:@"Attributes"])) { + for (NSString *propertyKey in filterAttributes) { + // Set up the selector + SEL theSelector = NSSelectorFromString(propertyKey); + NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[theClass instanceMethodSignatureForSelector:theSelector]]; + [inv setSelector:theSelector]; + [inv setTarget:genericFilter]; + + // check selector given with parameter + if ([propertyKey hasSuffix:@":"]) { + + stringValue = nil; + + // Then parse the arguments + NSMutableArray *parsedArray; + if ([[filterAttributes objectForKey:propertyKey] isKindOfClass:[NSArray class]]) { + NSArray *array = [filterAttributes objectForKey:propertyKey]; + parsedArray = [NSMutableArray arrayWithCapacity:[array count]]; + for (NSString *string in array) { + NSTextCheckingResult *parse = [parsingRegex firstMatchInString:string + options:0 + range:NSMakeRange(0, [string length])]; + + NSString *modifier = [string substringWithRange:[parse rangeAtIndex:1]]; + if ([modifier isEqualToString:@"float"]) { + // Float modifier, one argument + CGFloat value = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; + [parsedArray addObject:[NSNumber numberWithFloat:value]]; + [inv setArgument:&value atIndex:2]; + } else if ([modifier isEqualToString:@"CGPoint"]) { + // CGPoint modifier, two float arguments + CGFloat x = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; + CGFloat y = [[string substringWithRange:[parse rangeAtIndex:3]] floatValue]; + CGPoint value = CGPointMake(x, y); + [parsedArray addObject:[NSValue valueWithCGPoint:value]]; + } else if ([modifier isEqualToString:@"NSString"]) { + // NSString modifier, one string argument + stringValue = [[string substringWithRange:[parse rangeAtIndex:2]] copy]; + [inv setArgument:&stringValue atIndex:2]; + + } else { + return NO; + } + } + [inv setArgument:&parsedArray atIndex:2]; + } else { + NSString *string = [filterAttributes objectForKey:propertyKey]; + NSTextCheckingResult *parse = [parsingRegex firstMatchInString:string + options:0 + range:NSMakeRange(0, [string length])]; + + NSString *modifier = [string substringWithRange:[parse rangeAtIndex:1]]; + if ([modifier isEqualToString:@"float"]) { + // Float modifier, one argument + CGFloat value = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; + [inv setArgument:&value atIndex:2]; + } else if ([modifier isEqualToString:@"CGPoint"]) { + // CGPoint modifier, two float arguments + CGFloat x = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; + CGFloat y = [[string substringWithRange:[parse rangeAtIndex:3]] floatValue]; + CGPoint value = CGPointMake(x, y); + [inv setArgument:&value atIndex:2]; + } else if ([modifier isEqualToString:@"NSString"]) { + // NSString modifier, one string argument + stringValue = [[string substringWithRange:[parse rangeAtIndex:2]] copy]; + [inv setArgument:&stringValue atIndex:2]; + + } else { + return NO; + } + } + } + + + [inv invoke]; + } + } + [orderedFilters addObject:genericFilter]; + } + self.filters = orderedFilters; + + return YES; +} + +#pragma mark Regular init + +- (id)initWithOrderedFilters:(NSArray *)filters input:(GPUImageOutput *)input output:(id )output { + self = [super init]; + if (self) { + self.input = input; + self.output = output; + self.filters = [NSMutableArray arrayWithArray:filters]; + [self _refreshFilters]; + } + return self; +} + +- (void)addFilter:(GPUImageOutput *)filter atIndex:(NSUInteger)insertIndex { + [self.filters insertObject:filter atIndex:insertIndex]; + [self _refreshFilters]; +} + +- (void)addFilter:(GPUImageOutput *)filter { + [self.filters addObject:filter]; + [self _refreshFilters]; +} + +- (void)replaceFilterAtIndex:(NSUInteger)index withFilter:(GPUImageOutput *)filter { + [self.filters replaceObjectAtIndex:index withObject:filter]; + [self _refreshFilters]; +} + +- (void) removeFilter:(GPUImageOutput *)filter; +{ + [self.filters removeObject:filter]; + [self _refreshFilters]; +} + +- (void)removeFilterAtIndex:(NSUInteger)index { + [self.filters removeObjectAtIndex:index]; + [self _refreshFilters]; +} + +- (void)removeAllFilters { + [self.filters removeAllObjects]; + [self _refreshFilters]; +} + +- (void)replaceAllFilters:(NSArray *)newFilters { + self.filters = [NSMutableArray arrayWithArray:newFilters]; + [self _refreshFilters]; +} + +- (void)_refreshFilters { + + id prevFilter = self.input; + GPUImageOutput *theFilter = nil; + + for (int i = 0; i < [self.filters count]; i++) { + theFilter = [self.filters objectAtIndex:i]; + [prevFilter removeAllTargets]; + [prevFilter addTarget:theFilter]; + prevFilter = theFilter; + } + + [prevFilter removeAllTargets]; + + if (self.output != nil) { + [prevFilter addTarget:self.output]; + } +} + +- (UIImage *)currentFilteredFrame { + return [(GPUImageOutput *)[_filters lastObject] imageFromCurrentFramebuffer]; +} + +- (UIImage *)currentFilteredFrameWithOrientation:(UIImageOrientation)imageOrientation { + return [(GPUImageOutput *)[_filters lastObject] imageFromCurrentFramebufferWithOrientation:imageOrientation]; +} + +- (CGImageRef)newCGImageFromCurrentFilteredFrame { + return [(GPUImageOutput *)[_filters lastObject] newCGImageFromCurrentlyProcessedOutput]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.h new file mode 100644 index 00000000..3beab2df --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.h @@ -0,0 +1,21 @@ +#import "GPUImageThreeInputFilter.h" + +extern NSString *const kGPUImageFourInputTextureVertexShaderString; + +@interface GPUImageFourInputFilter : GPUImageThreeInputFilter +{ + GPUImageFramebuffer *fourthInputFramebuffer; + + GLint filterFourthTextureCoordinateAttribute; + GLint filterInputTextureUniform4; + GPUImageRotationMode inputRotation4; + GLuint filterSourceTexture4; + CMTime fourthFrameTime; + + BOOL hasSetThirdTexture, hasReceivedFourthFrame, fourthFrameWasVideo; + BOOL fourthFrameCheckDisabled; +} + +- (void)disableFourthFrameCheck; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m new file mode 100644 index 00000000..bc660a3d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m @@ -0,0 +1,401 @@ +#import "GPUImageFourInputFilter.h" + + +NSString *const kGPUImageFourInputTextureVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + attribute vec4 inputTextureCoordinate2; + attribute vec4 inputTextureCoordinate3; + attribute vec4 inputTextureCoordinate4; + + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + varying vec2 textureCoordinate3; + varying vec2 textureCoordinate4; + + void main() + { + gl_Position = position; + textureCoordinate = inputTextureCoordinate.xy; + textureCoordinate2 = inputTextureCoordinate2.xy; + textureCoordinate3 = inputTextureCoordinate3.xy; + textureCoordinate4 = inputTextureCoordinate4.xy; + } +); + +@implementation GPUImageFourInputFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [self initWithVertexShaderFromString:kGPUImageFourInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + inputRotation4 = kGPUImageNoRotation; + + hasSetThirdTexture = NO; + + hasReceivedFourthFrame = NO; + fourthFrameWasVideo = NO; + fourthFrameCheckDisabled = NO; + + fourthFrameTime = kCMTimeInvalid; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + filterFourthTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate4"]; + + filterInputTextureUniform4 = [filterProgram uniformIndex:@"inputImageTexture4"]; // This does assume a name of "inputImageTexture3" for the third input texture in the fragment shader + glEnableVertexAttribArray(filterFourthTextureCoordinateAttribute); + }); + + return self; +} + +- (void)initializeAttributes; +{ + [super initializeAttributes]; + [filterProgram addAttribute:@"inputTextureCoordinate4"]; +} + +- (void)disableFourthFrameCheck; +{ + fourthFrameCheckDisabled = YES; +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + [secondInputFramebuffer unlock]; + [thirdInputFramebuffer unlock]; + [fourthInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + [self setUniformsForProgramAtIndex:0]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform, 2); + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform2, 3); + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, [thirdInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform3, 4); + + glActiveTexture(GL_TEXTURE5); + glBindTexture(GL_TEXTURE_2D, [fourthInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform4, 5); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); + glVertexAttribPointer(filterThirdTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation3]); + glVertexAttribPointer(filterFourthTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation4]); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + [firstInputFramebuffer unlock]; + [secondInputFramebuffer unlock]; + [thirdInputFramebuffer unlock]; + [fourthInputFramebuffer unlock]; + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +#pragma mark - +#pragma mark GPUImageInput + +- (NSInteger)nextAvailableTextureIndex; +{ + if (hasSetThirdTexture) + { + return 3; + } + else if (hasSetSecondTexture) + { + return 2; + } + else if (hasSetFirstTexture) + { + return 1; + } + else + { + return 0; + } +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + firstInputFramebuffer = newInputFramebuffer; + hasSetFirstTexture = YES; + [firstInputFramebuffer lock]; + } + else if (textureIndex == 1) + { + secondInputFramebuffer = newInputFramebuffer; + hasSetSecondTexture = YES; + [secondInputFramebuffer lock]; + } + else if (textureIndex == 2) + { + thirdInputFramebuffer = newInputFramebuffer; + hasSetThirdTexture = YES; + [thirdInputFramebuffer lock]; + } + else + { + fourthInputFramebuffer = newInputFramebuffer; + [fourthInputFramebuffer lock]; + } +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + [super setInputSize:newSize atIndex:textureIndex]; + + if (CGSizeEqualToSize(newSize, CGSizeZero)) + { + hasSetFirstTexture = NO; + } + } + else if (textureIndex == 1) + { + if (CGSizeEqualToSize(newSize, CGSizeZero)) + { + hasSetSecondTexture = NO; + } + } + else if (textureIndex == 2) + { + if (CGSizeEqualToSize(newSize, CGSizeZero)) + { + hasSetThirdTexture = NO; + } + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + inputRotation = newInputRotation; + } + else if (textureIndex == 1) + { + inputRotation2 = newInputRotation; + } + else if (textureIndex == 2) + { + inputRotation3 = newInputRotation; + } + else + { + inputRotation4 = newInputRotation; + } +} + +- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; +{ + CGSize rotatedSize = sizeToRotate; + + GPUImageRotationMode rotationToCheck; + if (textureIndex == 0) + { + rotationToCheck = inputRotation; + } + else if (textureIndex == 1) + { + rotationToCheck = inputRotation2; + } + else if (textureIndex == 2) + { + rotationToCheck = inputRotation3; + } + else + { + rotationToCheck = inputRotation4; + } + + if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) + { + rotatedSize.width = sizeToRotate.height; + rotatedSize.height = sizeToRotate.width; + } + + return rotatedSize; +} + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + // You can set up infinite update loops, so this helps to short circuit them + if (hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) + { + return; + } + + BOOL updatedMovieFrameOppositeStillImage = NO; + + if (textureIndex == 0) + { + hasReceivedFirstFrame = YES; + firstFrameTime = frameTime; + if (secondFrameCheckDisabled) + { + hasReceivedSecondFrame = YES; + } + if (thirdFrameCheckDisabled) + { + hasReceivedThirdFrame = YES; + } + if (fourthFrameCheckDisabled) + { + hasReceivedThirdFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(secondFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + else if (textureIndex == 1) + { + hasReceivedSecondFrame = YES; + secondFrameTime = frameTime; + if (firstFrameCheckDisabled) + { + hasReceivedFirstFrame = YES; + } + if (thirdFrameCheckDisabled) + { + hasReceivedThirdFrame = YES; + } + if (fourthFrameCheckDisabled) + { + hasReceivedFourthFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(firstFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + else if (textureIndex == 2) + { + hasReceivedThirdFrame = YES; + thirdFrameTime = frameTime; + if (firstFrameCheckDisabled) + { + hasReceivedFirstFrame = YES; + } + if (secondFrameCheckDisabled) + { + hasReceivedSecondFrame = YES; + } + if (fourthFrameCheckDisabled) + { + hasReceivedFourthFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(firstFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + else + { + hasReceivedFourthFrame = YES; + fourthFrameTime = frameTime; + if (firstFrameCheckDisabled) + { + hasReceivedFirstFrame = YES; + } + if (secondFrameCheckDisabled) + { + hasReceivedSecondFrame = YES; + } + if (thirdFrameCheckDisabled) + { + hasReceivedThirdFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(firstFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + + // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) + if ((hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame && hasReceivedFourthFrame) || updatedMovieFrameOppositeStillImage) + { + static const GLfloat imageVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + + [self informTargetsAboutNewFrameAtTime:frameTime]; + + hasReceivedFirstFrame = NO; + hasReceivedSecondFrame = NO; + hasReceivedThirdFrame = NO; + hasReceivedFourthFrame = NO; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.h b/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.h new file mode 100644 index 00000000..bdb6a1f1 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.h @@ -0,0 +1,59 @@ +#import + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#import +#import +#import +#else +#import +#import +#endif + +#import +#import + + +typedef struct GPUTextureOptions { + GLenum minFilter; + GLenum magFilter; + GLenum wrapS; + GLenum wrapT; + GLenum internalFormat; + GLenum format; + GLenum type; +} GPUTextureOptions; + +@interface GPUImageFramebuffer : NSObject + +@property(readonly) CGSize size; +@property(readonly) GPUTextureOptions textureOptions; +@property(readonly) GLuint texture; +@property(readonly) BOOL missingFramebuffer; + +// Initialization and teardown +- (id)initWithSize:(CGSize)framebufferSize; +- (id)initWithSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)fboTextureOptions onlyTexture:(BOOL)onlyGenerateTexture; +- (id)initWithSize:(CGSize)framebufferSize overriddenTexture:(GLuint)inputTexture; + +// Usage +- (void)activateFramebuffer; + +// Reference counting +- (void)lock; +- (void)unlock; +- (void)clearAllLocks; +- (void)disableReferenceCounting; +- (void)enableReferenceCounting; + +// Image capture +- (CGImageRef)newCGImageFromFramebufferContents; +- (void)restoreRenderTarget; + +// Raw data bytes +- (void)lockForReading; +- (void)unlockAfterReading; +- (NSUInteger)bytesPerRow; +- (GLubyte *)byteBuffer; +- (CVPixelBufferRef)pixelBuffer; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m b/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m new file mode 100644 index 00000000..ea55c266 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m @@ -0,0 +1,457 @@ +#import "GPUImageFramebuffer.h" +#import "GPUImageOutput.h" + +@interface GPUImageFramebuffer() +{ + GLuint framebuffer; +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CVPixelBufferRef renderTarget; + CVOpenGLESTextureRef renderTexture; + NSUInteger readLockCount; +#else +#endif + NSUInteger framebufferReferenceCount; + BOOL referenceCountingDisabled; +} + +- (void)generateFramebuffer; +- (void)generateTexture; +- (void)destroyFramebuffer; + +@end + +void dataProviderReleaseCallback (void *info, const void *data, size_t size); +void dataProviderUnlockCallback (void *info, const void *data, size_t size); + +@implementation GPUImageFramebuffer + +@synthesize size = _size; +@synthesize textureOptions = _textureOptions; +@synthesize texture = _texture; +@synthesize missingFramebuffer = _missingFramebuffer; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)fboTextureOptions onlyTexture:(BOOL)onlyGenerateTexture; +{ + if (!(self = [super init])) + { + return nil; + } + + _textureOptions = fboTextureOptions; + _size = framebufferSize; + framebufferReferenceCount = 0; + referenceCountingDisabled = NO; + _missingFramebuffer = onlyGenerateTexture; + + if (_missingFramebuffer) + { + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + [self generateTexture]; + framebuffer = 0; + }); + } + else + { + [self generateFramebuffer]; + } + return self; +} + +- (id)initWithSize:(CGSize)framebufferSize overriddenTexture:(GLuint)inputTexture; +{ + if (!(self = [super init])) + { + return nil; + } + + GPUTextureOptions defaultTextureOptions; + defaultTextureOptions.minFilter = GL_LINEAR; + defaultTextureOptions.magFilter = GL_LINEAR; + defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; + defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; + defaultTextureOptions.internalFormat = GL_RGBA; + defaultTextureOptions.format = GL_BGRA; + defaultTextureOptions.type = GL_UNSIGNED_BYTE; + + _textureOptions = defaultTextureOptions; + _size = framebufferSize; + framebufferReferenceCount = 0; + referenceCountingDisabled = YES; + + _texture = inputTexture; + + return self; +} + +- (id)initWithSize:(CGSize)framebufferSize; +{ + GPUTextureOptions defaultTextureOptions; + defaultTextureOptions.minFilter = GL_LINEAR; + defaultTextureOptions.magFilter = GL_LINEAR; + defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; + defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; + defaultTextureOptions.internalFormat = GL_RGBA; + defaultTextureOptions.format = GL_BGRA; + defaultTextureOptions.type = GL_UNSIGNED_BYTE; + + if (!(self = [self initWithSize:framebufferSize textureOptions:defaultTextureOptions onlyTexture:NO])) + { + return nil; + } + + return self; +} + +- (void)dealloc +{ + [self destroyFramebuffer]; +} + +#pragma mark - +#pragma mark Internal + +- (void)generateTexture; +{ + glActiveTexture(GL_TEXTURE1); + glGenTextures(1, &_texture); + glBindTexture(GL_TEXTURE_2D, _texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _textureOptions.minFilter); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _textureOptions.magFilter); + // This is necessary for non-power-of-two textures + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT); + + // TODO: Handle mipmaps +} + +- (void)generateFramebuffer; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + glGenFramebuffers(1, &framebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); + + // By default, all framebuffers on iOS 5.0+ devices are backed by texture caches, using one shared cache + if ([GPUImageContext supportsFastTextureUpload]) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CVOpenGLESTextureCacheRef coreVideoTextureCache = [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache]; + // Code originally sourced from http://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/ + + CFDictionaryRef empty; // empty value for attr value. + CFMutableDictionaryRef attrs; + empty = CFDictionaryCreate(kCFAllocatorDefault, NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); // our empty IOSurface properties dictionary + attrs = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + CFDictionarySetValue(attrs, kCVPixelBufferIOSurfacePropertiesKey, empty); + + CVReturn err = CVPixelBufferCreate(kCFAllocatorDefault, (int)_size.width, (int)_size.height, kCVPixelFormatType_32BGRA, attrs, &renderTarget); + if (err) + { + NSLog(@"FBO size: %f, %f", _size.width, _size.height); + NSAssert(NO, @"Error at CVPixelBufferCreate %d", err); + } + + err = CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault, coreVideoTextureCache, renderTarget, + NULL, // texture attributes + GL_TEXTURE_2D, + _textureOptions.internalFormat, // opengl format + (int)_size.width, + (int)_size.height, + _textureOptions.format, // native iOS format + _textureOptions.type, + 0, + &renderTexture); + if (err) + { + NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); + } + + CFRelease(attrs); + CFRelease(empty); + + glBindTexture(CVOpenGLESTextureGetTarget(renderTexture), CVOpenGLESTextureGetName(renderTexture)); + _texture = CVOpenGLESTextureGetName(renderTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT); + + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); +#endif + } + else + { + [self generateTexture]; + + glBindTexture(GL_TEXTURE_2D, _texture); + + glTexImage2D(GL_TEXTURE_2D, 0, _textureOptions.internalFormat, (int)_size.width, (int)_size.height, 0, _textureOptions.format, _textureOptions.type, 0); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _texture, 0); + } + + #ifndef NS_BLOCK_ASSERTIONS + GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + NSAssert(status == GL_FRAMEBUFFER_COMPLETE, @"Incomplete filter FBO: %d", status); + #endif + + glBindTexture(GL_TEXTURE_2D, 0); + }); +} + +- (void)destroyFramebuffer; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + if (framebuffer) + { + glDeleteFramebuffers(1, &framebuffer); + framebuffer = 0; + } + + + if ([GPUImageContext supportsFastTextureUpload] && (!_missingFramebuffer)) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + if (renderTarget) + { + CFRelease(renderTarget); + renderTarget = NULL; + } + + if (renderTexture) + { + CFRelease(renderTexture); + renderTexture = NULL; + } +#endif + } + else + { + glDeleteTextures(1, &_texture); + } + + }); +} + +#pragma mark - +#pragma mark Usage + +- (void)activateFramebuffer; +{ + glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); + glViewport(0, 0, (int)_size.width, (int)_size.height); +} + +#pragma mark - +#pragma mark Reference counting + +- (void)lock; +{ + if (referenceCountingDisabled) + { + return; + } + + framebufferReferenceCount++; +} + +- (void)unlock; +{ + if (referenceCountingDisabled) + { + return; + } + + NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?"); + framebufferReferenceCount--; + if (framebufferReferenceCount < 1) + { + [[GPUImageContext sharedFramebufferCache] returnFramebufferToCache:self]; + } +} + +- (void)clearAllLocks; +{ + framebufferReferenceCount = 0; +} + +- (void)disableReferenceCounting; +{ + referenceCountingDisabled = YES; +} + +- (void)enableReferenceCounting; +{ + referenceCountingDisabled = NO; +} + +#pragma mark - +#pragma mark Image capture + +void dataProviderReleaseCallback (void *info, const void *data, size_t size) +{ + free((void *)data); +} + +void dataProviderUnlockCallback (void *info, const void *data, size_t size) +{ + GPUImageFramebuffer *framebuffer = (__bridge_transfer GPUImageFramebuffer*)info; + + [framebuffer restoreRenderTarget]; + [framebuffer unlock]; + [[GPUImageContext sharedFramebufferCache] removeFramebufferFromActiveImageCaptureList:framebuffer]; +} + +- (CGImageRef)newCGImageFromFramebufferContents; +{ + // a CGImage can only be created from a 'normal' color texture + NSAssert(self.textureOptions.internalFormat == GL_RGBA, @"For conversion to a CGImage the output texture format for this filter must be GL_RGBA."); + NSAssert(self.textureOptions.type == GL_UNSIGNED_BYTE, @"For conversion to a CGImage the type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + __block CGImageRef cgImageFromBytes; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + NSUInteger totalBytesForImage = (int)_size.width * (int)_size.height * 4; + // It appears that the width of a texture must be padded out to be a multiple of 8 (32 bytes) if reading from it using a texture cache + + GLubyte *rawImagePixels; + + CGDataProviderRef dataProvider = NULL; + if ([GPUImageContext supportsFastTextureUpload]) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + NSUInteger paddedWidthOfImage = CVPixelBufferGetBytesPerRow(renderTarget) / 4.0; + NSUInteger paddedBytesForImage = paddedWidthOfImage * (int)_size.height * 4; + + glFinish(); + CFRetain(renderTarget); // I need to retain the pixel buffer here and release in the data source callback to prevent its bytes from being prematurely deallocated during a photo write operation + [self lockForReading]; + rawImagePixels = (GLubyte *)CVPixelBufferGetBaseAddress(renderTarget); + dataProvider = CGDataProviderCreateWithData((__bridge_retained void*)self, rawImagePixels, paddedBytesForImage, dataProviderUnlockCallback); + [[GPUImageContext sharedFramebufferCache] addFramebufferToActiveImageCaptureList:self]; // In case the framebuffer is swapped out on the filter, need to have a strong reference to it somewhere for it to hang on while the image is in existence +#else +#endif + } + else + { + [self activateFramebuffer]; + rawImagePixels = (GLubyte *)malloc(totalBytesForImage); + glReadPixels(0, 0, (int)_size.width, (int)_size.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); + dataProvider = CGDataProviderCreateWithData(NULL, rawImagePixels, totalBytesForImage, dataProviderReleaseCallback); + [self unlock]; // Don't need to keep this around anymore + } + + CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB(); + + if ([GPUImageContext supportsFastTextureUpload]) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + cgImageFromBytes = CGImageCreate((int)_size.width, (int)_size.height, 8, 32, CVPixelBufferGetBytesPerRow(renderTarget), defaultRGBColorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst, dataProvider, NULL, NO, kCGRenderingIntentDefault); +#else +#endif + } + else + { + cgImageFromBytes = CGImageCreate((int)_size.width, (int)_size.height, 8, 32, 4 * (int)_size.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider, NULL, NO, kCGRenderingIntentDefault); + } + + // Capture image with current device orientation + CGDataProviderRelease(dataProvider); + CGColorSpaceRelease(defaultRGBColorSpace); + + }); + + return cgImageFromBytes; +} + +- (void)restoreRenderTarget; +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [self unlockAfterReading]; + CFRelease(renderTarget); +#else +#endif +} + +#pragma mark - +#pragma mark Raw data bytes + +- (void)lockForReading +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + if ([GPUImageContext supportsFastTextureUpload]) + { + if (readLockCount == 0) + { + CVPixelBufferLockBaseAddress(renderTarget, 0); + } + readLockCount++; + } +#endif +} + +- (void)unlockAfterReading +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + if ([GPUImageContext supportsFastTextureUpload]) + { + NSAssert(readLockCount > 0, @"Unbalanced call to -[GPUImageFramebuffer unlockAfterReading]"); + readLockCount--; + if (readLockCount == 0) + { + CVPixelBufferUnlockBaseAddress(renderTarget, 0); + } + } +#endif +} + +- (NSUInteger)bytesPerRow; +{ + if ([GPUImageContext supportsFastTextureUpload]) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + return CVPixelBufferGetBytesPerRow(renderTarget); +#else + return _size.width * 4; // TODO: do more with this on the non-texture-cache side +#endif + } + else + { + return _size.width * 4; + } +} + +- (GLubyte *)byteBuffer; +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [self lockForReading]; + GLubyte * bufferBytes = CVPixelBufferGetBaseAddress(renderTarget); + [self unlockAfterReading]; + return bufferBytes; +#else + return NULL; // TODO: do more with this on the non-texture-cache side +#endif +} + +- (CVPixelBufferRef )pixelBuffer; +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + return renderTarget; +#else + return NULL; // TODO: do more with this on the non-texture-cache side +#endif +} + +- (GLuint)texture; +{ +// NSLog(@"Accessing texture: %d from FB: %@", _texture, self); + return _texture; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.h b/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.h new file mode 100644 index 00000000..e56a3456 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.h @@ -0,0 +1,15 @@ +#import +#import +#import "GPUImageFramebuffer.h" + +@interface GPUImageFramebufferCache : NSObject + +// Framebuffer management +- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; +- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize onlyTexture:(BOOL)onlyTexture; +- (void)returnFramebufferToCache:(GPUImageFramebuffer *)framebuffer; +- (void)purgeAllUnassignedFramebuffers; +- (void)addFramebufferToActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; +- (void)removeFramebufferFromActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m b/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m new file mode 100644 index 00000000..53faf2c3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m @@ -0,0 +1,190 @@ +#import "GPUImageFramebufferCache.h" +#import "GPUImageContext.h" +#import "GPUImageOutput.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#import +#else +#endif + +@interface GPUImageFramebufferCache() +{ +// NSCache *framebufferCache; + NSMutableDictionary *framebufferCache; + NSMutableDictionary *framebufferTypeCounts; + NSMutableArray *activeImageCaptureList; // Where framebuffers that may be lost by a filter, but which are still needed for a UIImage, etc., are stored + id memoryWarningObserver; + + dispatch_queue_t framebufferCacheQueue; +} + +- (NSString *)hashForSize:(CGSize)size textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; + +@end + + +@implementation GPUImageFramebufferCache + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + __unsafe_unretained __typeof__ (self) weakSelf = self; + memoryWarningObserver = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:nil usingBlock:^(NSNotification *note) { + __typeof__ (self) strongSelf = weakSelf; + if (strongSelf) { + [strongSelf purgeAllUnassignedFramebuffers]; + } + }]; +#else +#endif + +// framebufferCache = [[NSCache alloc] init]; + framebufferCache = [[NSMutableDictionary alloc] init]; + framebufferTypeCounts = [[NSMutableDictionary alloc] init]; + activeImageCaptureList = [[NSMutableArray alloc] init]; + framebufferCacheQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.framebufferCacheQueue", GPUImageDefaultQueueAttribute()); + + return self; +} + +- (void)dealloc; +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [[NSNotificationCenter defaultCenter] removeObserver:self]; +#else +#endif +} + +#pragma mark - +#pragma mark Framebuffer management + +- (NSString *)hashForSize:(CGSize)size textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; +{ + if (onlyTexture) + { + return [NSString stringWithFormat:@"%.1fx%.1f-%d:%d:%d:%d:%d:%d:%d-NOFB", size.width, size.height, textureOptions.minFilter, textureOptions.magFilter, textureOptions.wrapS, textureOptions.wrapT, textureOptions.internalFormat, textureOptions.format, textureOptions.type]; + } + else + { + return [NSString stringWithFormat:@"%.1fx%.1f-%d:%d:%d:%d:%d:%d:%d", size.width, size.height, textureOptions.minFilter, textureOptions.magFilter, textureOptions.wrapS, textureOptions.wrapT, textureOptions.internalFormat, textureOptions.format, textureOptions.type]; + } +} + +- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; +{ + __block GPUImageFramebuffer *framebufferFromCache = nil; +// dispatch_sync(framebufferCacheQueue, ^{ + runSynchronouslyOnVideoProcessingQueue(^{ + NSString *lookupHash = [self hashForSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; + NSNumber *numberOfMatchingTexturesInCache = [framebufferTypeCounts objectForKey:lookupHash]; + NSInteger numberOfMatchingTextures = [numberOfMatchingTexturesInCache integerValue]; + + if ([numberOfMatchingTexturesInCache integerValue] < 1) + { + // Nothing in the cache, create a new framebuffer to use + framebufferFromCache = [[GPUImageFramebuffer alloc] initWithSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; + } + else + { + // Something found, pull the old framebuffer and decrement the count + NSInteger currentTextureID = (numberOfMatchingTextures - 1); + while ((framebufferFromCache == nil) && (currentTextureID >= 0)) + { + NSString *textureHash = [NSString stringWithFormat:@"%@-%ld", lookupHash, (long)currentTextureID]; + framebufferFromCache = [framebufferCache objectForKey:textureHash]; + // Test the values in the cache first, to see if they got invalidated behind our back + if (framebufferFromCache != nil) + { + // Withdraw this from the cache while it's in use + [framebufferCache removeObjectForKey:textureHash]; + } + currentTextureID--; + } + + currentTextureID++; + + [framebufferTypeCounts setObject:[NSNumber numberWithInteger:currentTextureID] forKey:lookupHash]; + + if (framebufferFromCache == nil) + { + framebufferFromCache = [[GPUImageFramebuffer alloc] initWithSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; + } + } + }); + + [framebufferFromCache lock]; + return framebufferFromCache; +} + +- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize onlyTexture:(BOOL)onlyTexture; +{ + GPUTextureOptions defaultTextureOptions; + defaultTextureOptions.minFilter = GL_LINEAR; + defaultTextureOptions.magFilter = GL_LINEAR; + defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; + defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; + defaultTextureOptions.internalFormat = GL_RGBA; + defaultTextureOptions.format = GL_BGRA; + defaultTextureOptions.type = GL_UNSIGNED_BYTE; + + return [self fetchFramebufferForSize:framebufferSize textureOptions:defaultTextureOptions onlyTexture:onlyTexture]; +} + +- (void)returnFramebufferToCache:(GPUImageFramebuffer *)framebuffer; +{ + [framebuffer clearAllLocks]; + +// dispatch_async(framebufferCacheQueue, ^{ + runAsynchronouslyOnVideoProcessingQueue(^{ + CGSize framebufferSize = framebuffer.size; + GPUTextureOptions framebufferTextureOptions = framebuffer.textureOptions; + NSString *lookupHash = [self hashForSize:framebufferSize textureOptions:framebufferTextureOptions onlyTexture:framebuffer.missingFramebuffer]; + NSNumber *numberOfMatchingTexturesInCache = [framebufferTypeCounts objectForKey:lookupHash]; + NSInteger numberOfMatchingTextures = [numberOfMatchingTexturesInCache integerValue]; + + NSString *textureHash = [NSString stringWithFormat:@"%@-%ld", lookupHash, (long)numberOfMatchingTextures]; + +// [framebufferCache setObject:framebuffer forKey:textureHash cost:round(framebufferSize.width * framebufferSize.height * 4.0)]; + [framebufferCache setObject:framebuffer forKey:textureHash]; + [framebufferTypeCounts setObject:[NSNumber numberWithInteger:(numberOfMatchingTextures + 1)] forKey:lookupHash]; + }); +} + +- (void)purgeAllUnassignedFramebuffers; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ +// dispatch_async(framebufferCacheQueue, ^{ + [framebufferCache removeAllObjects]; + [framebufferTypeCounts removeAllObjects]; +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CVOpenGLESTextureCacheFlush([[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], 0); +#else +#endif + }); +} + +- (void)addFramebufferToActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ +// dispatch_async(framebufferCacheQueue, ^{ + [activeImageCaptureList addObject:framebuffer]; + }); +} + +- (void)removeFramebufferFromActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ +// dispatch_async(framebufferCacheQueue, ^{ + [activeImageCaptureList removeObject:framebuffer]; + }); +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.h new file mode 100755 index 00000000..0521d089 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageFilter.h" + +@interface GPUImageGammaFilter : GPUImageFilter +{ + GLint gammaUniform; +} + +// Gamma ranges from 0.0 to 3.0, with 1.0 as the normal level +@property(readwrite, nonatomic) CGFloat gamma; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m new file mode 100755 index 00000000..35adaba2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m @@ -0,0 +1,66 @@ +#import "GPUImageGammaFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageGammaFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float gamma; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); + } +); +#else +NSString *const kGPUImageGammaFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float gamma; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); + } +); +#endif + +@implementation GPUImageGammaFilter + +@synthesize gamma = _gamma; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageGammaFragmentShaderString])) + { + return nil; + } + + gammaUniform = [filterProgram uniformIndex:@"gamma"]; + self.gamma = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setGamma:(CGFloat)newValue; +{ + _gamma = newValue; + + [self setFloat:_gamma forUniform:gammaUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.h new file mode 100755 index 00000000..1fb7a137 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.h @@ -0,0 +1,36 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +/** A Gaussian blur filter + Interpolated optimization based on Daniel Rákos' work at http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/ + */ + +@interface GPUImageGaussianBlurFilter : GPUImageTwoPassTextureSamplingFilter +{ + BOOL shouldResizeBlurRadiusWithImageSize; + CGFloat _blurRadiusInPixels; +} + +/** A multiplier for the spacing between texels, ranging from 0.0 on up, with a default of 1.0. Adjusting this may slightly increase the blur strength, but will introduce artifacts in the result. + */ +@property (readwrite, nonatomic) CGFloat texelSpacingMultiplier; + +/** A radius in pixels to use for the blur, with a default of 2.0. This adjusts the sigma variable in the Gaussian distribution function. + */ +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +/** Setting these properties will allow the blur radius to scale with the size of the image. These properties are mutually exclusive; setting either will set the other to 0. + */ +@property (readwrite, nonatomic) CGFloat blurRadiusAsFractionOfImageWidth; +@property (readwrite, nonatomic) CGFloat blurRadiusAsFractionOfImageHeight; + +/// The number of times to sequentially blur the incoming image. The more passes, the slower the filter. +@property(readwrite, nonatomic) NSUInteger blurPasses; + ++ (NSString *)vertexShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; ++ (NSString *)fragmentShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; ++ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; ++ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; + +- (void)switchToVertexShader:(NSString *)newVertexShader fragmentShader:(NSString *)newFragmentShader; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m new file mode 100755 index 00000000..ec99352a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m @@ -0,0 +1,513 @@ +#import "GPUImageGaussianBlurFilter.h" + +@implementation GPUImageGaussianBlurFilter + +@synthesize texelSpacingMultiplier = _texelSpacingMultiplier; +@synthesize blurRadiusInPixels = _blurRadiusInPixels; +@synthesize blurRadiusAsFractionOfImageWidth = _blurRadiusAsFractionOfImageWidth; +@synthesize blurRadiusAsFractionOfImageHeight = _blurRadiusAsFractionOfImageHeight; +@synthesize blurPasses = _blurPasses; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString +{ + if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:secondStageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) + { + return nil; + } + + self.texelSpacingMultiplier = 1.0; + _blurRadiusInPixels = 2.0; + shouldResizeBlurRadiusWithImageSize = NO; + + return self; +} + +- (id)init; +{ + NSString *currentGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:4 sigma:2.0]; + NSString *currentGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:4 sigma:2.0]; + + return [self initWithFirstStageVertexShaderFromString:currentGaussianBlurVertexShader firstStageFragmentShaderFromString:currentGaussianBlurFragmentShader secondStageVertexShaderFromString:currentGaussianBlurVertexShader secondStageFragmentShaderFromString:currentGaussianBlurFragmentShader]; +} + +#pragma mark - +#pragma mark Auto-generation of optimized Gaussian shaders + +// "Implementation limit of 32 varying components exceeded" - Max number of varyings for these GPUs + ++ (NSString *)vertexShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImageVertexShaderString; + } + +// NSLog(@"Max varyings: %d", [GPUImageContext maximumVaryingVectorsForThisDevice]); + NSMutableString *shaderString = [[NSMutableString alloc] init]; + + // Header + [shaderString appendFormat:@"\ + attribute vec4 position;\n\ + attribute vec4 inputTextureCoordinate;\n\ + \n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + gl_Position = position;\n\ + \n\ + vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(blurRadius * 2 + 1) ]; + + // Inner offset loop + for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < (blurRadius * 2 + 1); currentBlurCoordinateIndex++) + { + NSInteger offsetFromCenter = currentBlurCoordinateIndex - blurRadius; + if (offsetFromCenter < 0) + { + [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)currentBlurCoordinateIndex, (GLfloat)(-offsetFromCenter)]; + } + else if (offsetFromCenter > 0) + { + [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy + singleStepOffset * %f;\n", (unsigned long)currentBlurCoordinateIndex, (GLfloat)(offsetFromCenter)]; + } + else + { + [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy;\n", (unsigned long)currentBlurCoordinateIndex]; + } + } + + // Footer + [shaderString appendString:@"}\n"]; + + return shaderString; +} + ++ (NSString *)fragmentShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImagePassthroughFragmentShaderString; + } + + // First, generate the normal Gaussian weights for a given sigma + GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); + GLfloat sumOfWeights = 0.0; + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); + + if (currentGaussianWeightIndex == 0) + { + sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; + } + else + { + sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; + } + } + + // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; + } + + // Finally, generate the shader from these weights + NSMutableString *shaderString = [[NSMutableString alloc] init]; + + // Header +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + \n\ + varying highp vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + lowp vec4 sum = vec4(0.0);\n", (unsigned long)(blurRadius * 2 + 1) ]; +#else + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + vec4 sum = vec4(0.0);\n", (blurRadius * 2 + 1) ]; +#endif + + // Inner texture loop + for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < (blurRadius * 2 + 1); currentBlurCoordinateIndex++) + { + NSInteger offsetFromCenter = currentBlurCoordinateIndex - blurRadius; + if (offsetFromCenter < 0) + { + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)currentBlurCoordinateIndex, standardGaussianWeights[-offsetFromCenter]]; + } + else + { + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)currentBlurCoordinateIndex, standardGaussianWeights[offsetFromCenter]]; + } + } + + // Footer + [shaderString appendString:@"\ + gl_FragColor = sum;\n\ + }\n"]; + + free(standardGaussianWeights); + return shaderString; +} + ++ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImageVertexShaderString; + } + + // First, generate the normal Gaussian weights for a given sigma + GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); + GLfloat sumOfWeights = 0.0; + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); + + if (currentGaussianWeightIndex == 0) + { + sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; + } + else + { + sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; + } + } + + // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; + } + + // From these weights we calculate the offsets to read interpolated values from + NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); + GLfloat *optimizedGaussianOffsets = calloc(numberOfOptimizedOffsets, sizeof(GLfloat)); + + for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) + { + GLfloat firstWeight = standardGaussianWeights[currentOptimizedOffset*2 + 1]; + GLfloat secondWeight = standardGaussianWeights[currentOptimizedOffset*2 + 2]; + + GLfloat optimizedWeight = firstWeight + secondWeight; + + optimizedGaussianOffsets[currentOptimizedOffset] = (firstWeight * (currentOptimizedOffset*2 + 1) + secondWeight * (currentOptimizedOffset*2 + 2)) / optimizedWeight; + } + + NSMutableString *shaderString = [[NSMutableString alloc] init]; + // Header + [shaderString appendFormat:@"\ + attribute vec4 position;\n\ + attribute vec4 inputTextureCoordinate;\n\ + \n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + gl_Position = position;\n\ + \n\ + vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; + + // Inner offset loop + [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; + for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) + { + [shaderString appendFormat:@"\ + blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ + blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedGaussianOffsets[currentOptimizedOffset], (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedGaussianOffsets[currentOptimizedOffset]]; + } + + // Footer + [shaderString appendString:@"}\n"]; + + free(optimizedGaussianOffsets); + free(standardGaussianWeights); + return shaderString; +} + ++ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImagePassthroughFragmentShaderString; + } + + // First, generate the normal Gaussian weights for a given sigma + GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); + GLfloat sumOfWeights = 0.0; + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); + + if (currentGaussianWeightIndex == 0) + { + sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; + } + else + { + sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; + } + } + + // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; + } + + // From these weights we calculate the offsets to read interpolated values from + NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); + NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); + + NSMutableString *shaderString = [[NSMutableString alloc] init]; + + // Header +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + uniform highp float texelWidthOffset;\n\ + uniform highp float texelHeightOffset;\n\ + \n\ + varying highp vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + lowp vec4 sum = vec4(0.0);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; +#else + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + vec4 sum = vec4(0.0);\n", 1 + (numberOfOptimizedOffsets * 2) ]; +#endif + + // Inner texture loop + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]) * %f;\n", standardGaussianWeights[0]]; + + for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) + { + GLfloat firstWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 1]; + GLfloat secondWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 2]; + GLfloat optimizedWeight = firstWeight + secondWeight; + + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), optimizedWeight]; + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), optimizedWeight]; + } + + // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader + if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; +#else + [shaderString appendString:@"vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; +#endif + + for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) + { + GLfloat firstWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 1]; + GLfloat secondWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 2]; + + GLfloat optimizedWeight = firstWeight + secondWeight; + GLfloat optimizedOffset = (firstWeight * (currentOverlowTextureRead * 2 + 1) + secondWeight * (currentOverlowTextureRead * 2 + 2)) / optimizedWeight; + + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f) * %f;\n", optimizedOffset, optimizedWeight]; + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f) * %f;\n", optimizedOffset, optimizedWeight]; + } + } + + // Footer + [shaderString appendString:@"\ + gl_FragColor = sum;\n\ + }\n"]; + + free(standardGaussianWeights); + return shaderString; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + [super setupFilterForSize:filterFrameSize]; + + if (shouldResizeBlurRadiusWithImageSize) + { + if (self.blurRadiusAsFractionOfImageWidth > 0) + { + self.blurRadiusInPixels = filterFrameSize.width * self.blurRadiusAsFractionOfImageWidth; + } + else + { + self.blurRadiusInPixels = filterFrameSize.height * self.blurRadiusAsFractionOfImageHeight; + } + } +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; + + for (NSUInteger currentAdditionalBlurPass = 1; currentAdditionalBlurPass < _blurPasses; currentAdditionalBlurPass++) + { + [super renderToTextureWithVertices:vertices textureCoordinates:[[self class] textureCoordinatesForRotation:kGPUImageNoRotation]]; + } +} + +- (void)switchToVertexShader:(NSString *)newVertexShader fragmentShader:(NSString *)newFragmentShader; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + filterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:newVertexShader fragmentShaderString:newFragmentShader]; + + if (!filterProgram.initialized) + { + [self initializeAttributes]; + + if (![filterProgram link]) + { + NSString *progLog = [filterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [filterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [filterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + filterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + filterPositionAttribute = [filterProgram attributeIndex:@"position"]; + filterTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate"]; + filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader + verticalPassTexelWidthOffsetUniform = [filterProgram uniformIndex:@"texelWidthOffset"]; + verticalPassTexelHeightOffsetUniform = [filterProgram uniformIndex:@"texelHeightOffset"]; + [GPUImageContext setActiveShaderProgram:filterProgram]; + + glEnableVertexAttribArray(filterPositionAttribute); + glEnableVertexAttribArray(filterTextureCoordinateAttribute); + + secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:newVertexShader fragmentShaderString:newFragmentShader]; + + if (!secondFilterProgram.initialized) + { + [self initializeSecondaryAttributes]; + + if (![secondFilterProgram link]) + { + NSString *progLog = [secondFilterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [secondFilterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [secondFilterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + secondFilterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; + secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; + secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader + secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader + horizontalPassTexelWidthOffsetUniform = [secondFilterProgram uniformIndex:@"texelWidthOffset"]; + horizontalPassTexelHeightOffsetUniform = [secondFilterProgram uniformIndex:@"texelHeightOffset"]; + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + + glEnableVertexAttribArray(secondFilterPositionAttribute); + glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); + + [self setupFilterForSize:[self sizeOfFBO]]; + glFinish(); + }); + +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTexelSpacingMultiplier:(CGFloat)newValue; +{ + _texelSpacingMultiplier = newValue; + + _verticalTexelSpacing = _texelSpacingMultiplier; + _horizontalTexelSpacing = _texelSpacingMultiplier; + + [self setupFilterForSize:[self sizeOfFBO]]; +} + +// inputRadius for Core Image's CIGaussianBlur is really sigma in the Gaussian equation, so I'm using that for my blur radius, to be consistent +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + // 7.0 is the limit for blur size for hardcoded varying offsets + + if (round(newValue) != _blurRadiusInPixels) + { + _blurRadiusInPixels = round(newValue); // For now, only do integral sigmas + + NSUInteger calculatedSampleRadius = 0; + if (_blurRadiusInPixels >= 1) // Avoid a divide-by-zero error here + { + // Calculate the number of pixels to sample from by setting a bottom limit for the contribution of the outermost pixel + CGFloat minimumWeightToFindEdgeOfSamplingArea = 1.0/256.0; + calculatedSampleRadius = floor(sqrt(-2.0 * pow(_blurRadiusInPixels, 2.0) * log(minimumWeightToFindEdgeOfSamplingArea * sqrt(2.0 * M_PI * pow(_blurRadiusInPixels, 2.0))) )); + calculatedSampleRadius += calculatedSampleRadius % 2; // There's nothing to gain from handling odd radius sizes, due to the optimizations I use + } + +// NSLog(@"Blur radius: %f, calculated sample radius: %d", _blurRadiusInPixels, calculatedSampleRadius); +// + NSString *newGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:calculatedSampleRadius sigma:_blurRadiusInPixels]; + NSString *newGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:calculatedSampleRadius sigma:_blurRadiusInPixels]; + +// NSLog(@"Optimized vertex shader: \n%@", newGaussianBlurVertexShader); +// NSLog(@"Optimized fragment shader: \n%@", newGaussianBlurFragmentShader); +// + [self switchToVertexShader:newGaussianBlurVertexShader fragmentShader:newGaussianBlurFragmentShader]; + } + shouldResizeBlurRadiusWithImageSize = NO; +} + +- (void)setBlurRadiusAsFractionOfImageWidth:(CGFloat)blurRadiusAsFractionOfImageWidth +{ + if (blurRadiusAsFractionOfImageWidth < 0) return; + + shouldResizeBlurRadiusWithImageSize = _blurRadiusAsFractionOfImageWidth != blurRadiusAsFractionOfImageWidth && blurRadiusAsFractionOfImageWidth > 0; + _blurRadiusAsFractionOfImageWidth = blurRadiusAsFractionOfImageWidth; + _blurRadiusAsFractionOfImageHeight = 0; +} + +- (void)setBlurRadiusAsFractionOfImageHeight:(CGFloat)blurRadiusAsFractionOfImageHeight +{ + if (blurRadiusAsFractionOfImageHeight < 0) return; + + shouldResizeBlurRadiusWithImageSize = _blurRadiusAsFractionOfImageHeight != blurRadiusAsFractionOfImageHeight && blurRadiusAsFractionOfImageHeight > 0; + _blurRadiusAsFractionOfImageHeight = blurRadiusAsFractionOfImageHeight; + _blurRadiusAsFractionOfImageWidth = 0; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.h new file mode 100755 index 00000000..dc88a563 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.h @@ -0,0 +1,22 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +/** A more generalized 9x9 Gaussian blur filter + */ +@interface GPUImageGaussianBlurPositionFilter : GPUImageTwoPassTextureSamplingFilter +{ + GLint blurCenterUniform, blurRadiusUniform, aspectRatioUniform; +} + +/** A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 + */ +@property (readwrite, nonatomic) CGFloat blurSize; + +/** Center for the blur, defaults to 0.5, 0.5 + */ +@property (readwrite, nonatomic) CGPoint blurCenter; + +/** Radius for the blur, defaults to 1.0 + */ +@property (readwrite, nonatomic) CGFloat blurRadius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m new file mode 100755 index 00000000..8ecd9246 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m @@ -0,0 +1,232 @@ +#import "GPUImageGaussianBlurPositionFilter.h" + +NSString *const kGPUImageGaussianBlurPositionVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + const int GAUSSIAN_SAMPLES = 9; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + varying vec2 textureCoordinate; + varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; + + void main() + { + gl_Position = position; + textureCoordinate = inputTextureCoordinate.xy; + + // Calculate the positions for the blur + int multiplier = 0; + vec2 blurStep; + vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset); + + for (int i = 0; i < GAUSSIAN_SAMPLES; i++) { + multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2)); + // Blur in x (horizontal) + blurStep = float(multiplier) * singleStepOffset; + blurCoordinates[i] = inputTextureCoordinate.xy + blurStep; + } + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageGaussianBlurPositionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + const lowp int GAUSSIAN_SAMPLES = 9; + + varying highp vec2 textureCoordinate; + varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES]; + + uniform highp float aspectRatio; + uniform lowp vec2 blurCenter; + uniform highp float blurRadius; + + void main() { + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float dist = distance(blurCenter, textureCoordinateToUse); + + if (dist < blurRadius) + { + lowp vec4 sum = vec4(0.0); + + sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.05; + sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.09; + sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.12; + sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.15; + sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.18; + sum += texture2D(inputImageTexture, blurCoordinates[5]) * 0.15; + sum += texture2D(inputImageTexture, blurCoordinates[6]) * 0.12; + sum += texture2D(inputImageTexture, blurCoordinates[7]) * 0.09; + sum += texture2D(inputImageTexture, blurCoordinates[8]) * 0.05; + + gl_FragColor = sum; + } + else + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate); + } + } +); +#else +NSString *const kGPUImageGaussianBlurPositionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + const int GAUSSIAN_SAMPLES = 9; + + varying vec2 textureCoordinate; + varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; + + uniform float aspectRatio; + uniform vec2 blurCenter; + uniform float blurRadius; + + void main() + { + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float dist = distance(blurCenter, textureCoordinateToUse); + + if (dist < blurRadius) + { + vec4 sum = vec4(0.0); + + sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.05; + sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.09; + sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.12; + sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.15; + sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.18; + sum += texture2D(inputImageTexture, blurCoordinates[5]) * 0.15; + sum += texture2D(inputImageTexture, blurCoordinates[6]) * 0.12; + sum += texture2D(inputImageTexture, blurCoordinates[7]) * 0.09; + sum += texture2D(inputImageTexture, blurCoordinates[8]) * 0.05; + + gl_FragColor = sum; + } + else + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate); + } + } +); +#endif + +@interface GPUImageGaussianBlurPositionFilter () + +- (void)adjustAspectRatio; + +@property (readwrite, nonatomic) CGFloat aspectRatio; + +@end + +@implementation GPUImageGaussianBlurPositionFilter + +@synthesize blurSize = _blurSize; +@synthesize blurCenter = _blurCenter; +@synthesize aspectRatio = _aspectRatio; + +- (id) initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString + firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString + secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString + secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString { + + if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString ? firstStageVertexShaderString : kGPUImageGaussianBlurPositionVertexShaderString + firstStageFragmentShaderFromString:firstStageFragmentShaderString ? firstStageFragmentShaderString : kGPUImageGaussianBlurPositionFragmentShaderString + secondStageVertexShaderFromString:secondStageVertexShaderString ? secondStageVertexShaderString : kGPUImageGaussianBlurPositionVertexShaderString + secondStageFragmentShaderFromString:secondStageFragmentShaderString ? secondStageFragmentShaderString : kGPUImageGaussianBlurPositionFragmentShaderString])) { + return nil; + } + + aspectRatioUniform = [secondFilterProgram uniformIndex:@"aspectRatio"]; + blurCenterUniform = [secondFilterProgram uniformIndex:@"blurCenter"]; + blurRadiusUniform = [secondFilterProgram uniformIndex:@"blurRadius"]; + + self.blurSize = 1.0; + self.blurRadius = 1.0; + self.blurCenter = CGPointMake(0.5, 0.5); + + return self; +} + +- (id)init; +{ + return [self initWithFirstStageVertexShaderFromString:nil + firstStageFragmentShaderFromString:nil + secondStageVertexShaderFromString:nil + secondStageFragmentShaderFromString:nil]; +} + +- (void)adjustAspectRatio; +{ + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; + } + else + { + [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; + } +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + [self adjustAspectRatio]; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self adjustAspectRatio]; + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setBlurCenter:self.blurCenter]; + [self adjustAspectRatio]; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurSize:(CGFloat)newValue; +{ + _blurSize = newValue; + + _verticalTexelSpacing = _blurSize; + _horizontalTexelSpacing = _blurSize; + + [self setupFilterForSize:[self sizeOfFBO]]; +} + +- (void) setBlurCenter:(CGPoint)blurCenter; +{ + _blurCenter = blurCenter; + CGPoint rotatedPoint = [self rotatedPoint:blurCenter forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:blurCenterUniform program:secondFilterProgram]; +} + +- (void) setBlurRadius:(CGFloat)blurRadius; +{ + _blurRadius = blurRadius; + + [self setFloat:_blurRadius forUniform:blurRadiusUniform program:secondFilterProgram]; +} + +- (void) setAspectRatio:(CGFloat)newValue; +{ + _aspectRatio = newValue; + + [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:secondFilterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.h new file mode 100755 index 00000000..02324566 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.h @@ -0,0 +1,30 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGaussianBlurFilter; + +/** A Gaussian blur that preserves focus within a circular region + */ +@interface GPUImageGaussianSelectiveBlurFilter : GPUImageFilterGroup +{ + GPUImageGaussianBlurFilter *blurFilter; + GPUImageFilter *selectiveFocusFilter; + BOOL hasOverriddenAspectRatio; +} + +/** The radius of the circular area being excluded from the blur + */ +@property (readwrite, nonatomic) CGFloat excludeCircleRadius; +/** The center of the circular area being excluded from the blur + */ +@property (readwrite, nonatomic) CGPoint excludeCirclePoint; +/** The size of the area between the blurred portion and the clear circle + */ +@property (readwrite, nonatomic) CGFloat excludeBlurSize; +/** A radius in pixels to use for the blur, with a default of 5.0. This adjusts the sigma variable in the Gaussian distribution function. + */ +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; +/** The aspect ratio of the image, used to adjust the circularity of the in-focus region. By default, this matches the image aspect ratio, but you can override this value. + */ +@property (readwrite, nonatomic) CGFloat aspectRatio; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m new file mode 100755 index 00000000..7ebc9e19 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m @@ -0,0 +1,147 @@ +#import "GPUImageGaussianSelectiveBlurFilter.h" +#import "GPUImageGaussianBlurFilter.h" +#import "GPUImageTwoInputFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageGaussianSelectiveBlurFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform lowp float excludeCircleRadius; + uniform lowp vec2 excludeCirclePoint; + uniform lowp float excludeBlurSize; + uniform highp float aspectRatio; + + void main() + { + lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); + + highp vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float distanceFromCenter = distance(excludeCirclePoint, textureCoordinateToUse); + + gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter)); + } +); +#else +NSString *const kGPUImageGaussianSelectiveBlurFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform float excludeCircleRadius; + uniform vec2 excludeCirclePoint; + uniform float excludeBlurSize; + uniform float aspectRatio; + + void main() + { + vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); + vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); + + vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float distanceFromCenter = distance(excludeCirclePoint, textureCoordinateToUse); + + gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter)); + } +); +#endif + +@implementation GPUImageGaussianSelectiveBlurFilter + +@synthesize excludeCirclePoint = _excludeCirclePoint, excludeCircleRadius = _excludeCircleRadius, excludeBlurSize = _excludeBlurSize; +@synthesize blurRadiusInPixels = _blurRadiusInPixels; +@synthesize aspectRatio = _aspectRatio; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + hasOverriddenAspectRatio = NO; + + // First pass: apply a variable Gaussian blur + blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Second pass: combine the blurred image with the original sharp one + selectiveFocusFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageGaussianSelectiveBlurFragmentShaderString]; + [self addFilter:selectiveFocusFilter]; + + // Texture location 0 needs to be the sharp image for both the blur and the second stage processing + [blurFilter addTarget:selectiveFocusFilter atTextureLocation:1]; + + // To prevent double updating of this filter, disable updates from the sharp image side + self.initialFilters = [NSArray arrayWithObjects:blurFilter, selectiveFocusFilter, nil]; + self.terminalFilter = selectiveFocusFilter; + + self.blurRadiusInPixels = 5.0; + + self.excludeCircleRadius = 60.0/320.0; + self.excludeCirclePoint = CGPointMake(0.5f, 0.5f); + self.excludeBlurSize = 30.0/320.0; + + return self; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + inputTextureSize = newSize; + + if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!hasOverriddenAspectRatio) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + _aspectRatio = (inputTextureSize.width / inputTextureSize.height); + [selectiveFocusFilter setFloat:_aspectRatio forUniformName:@"aspectRatio"]; + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setExcludeCirclePoint:(CGPoint)newValue; +{ + _excludeCirclePoint = newValue; + [selectiveFocusFilter setPoint:newValue forUniformName:@"excludeCirclePoint"]; +} + +- (void)setExcludeCircleRadius:(CGFloat)newValue; +{ + _excludeCircleRadius = newValue; + [selectiveFocusFilter setFloat:newValue forUniformName:@"excludeCircleRadius"]; +} + +- (void)setExcludeBlurSize:(CGFloat)newValue; +{ + _excludeBlurSize = newValue; + [selectiveFocusFilter setFloat:newValue forUniformName:@"excludeBlurSize"]; +} + +- (void)setAspectRatio:(CGFloat)newValue; +{ + hasOverriddenAspectRatio = YES; + _aspectRatio = newValue; + [selectiveFocusFilter setFloat:_aspectRatio forUniformName:@"aspectRatio"]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.h new file mode 100644 index 00000000..809a4ee8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSphereRefractionFilter.h" + +@interface GPUImageGlassSphereFilter : GPUImageSphereRefractionFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m new file mode 100644 index 00000000..18662916 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m @@ -0,0 +1,106 @@ +#import "GPUImageGlassSphereFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageGlassSphereFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 center; + uniform highp float radius; + uniform highp float aspectRatio; + uniform highp float refractiveIndex; +// uniform vec3 lightPosition; + const highp vec3 lightPosition = vec3(-0.5, 0.5, 1.0); + const highp vec3 ambientLightPosition = vec3(0.0, 0.0, 1.0); + + void main() + { + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float distanceFromCenter = distance(center, textureCoordinateToUse); + lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius); + + distanceFromCenter = distanceFromCenter / radius; + + highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); + highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); + + highp vec3 refractedVector = 2.0 * refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); + refractedVector.xy = -refractedVector.xy; + + highp vec3 finalSphereColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5).rgb; + + // Grazing angle lighting + highp float lightingIntensity = 2.5 * (1.0 - pow(clamp(dot(ambientLightPosition, sphereNormal), 0.0, 1.0), 0.25)); + finalSphereColor += lightingIntensity; + + // Specular lighting + lightingIntensity = clamp(dot(normalize(lightPosition), sphereNormal), 0.0, 1.0); + lightingIntensity = pow(lightingIntensity, 15.0); + finalSphereColor += vec3(0.8, 0.8, 0.8) * lightingIntensity; + + gl_FragColor = vec4(finalSphereColor, 1.0) * checkForPresenceWithinSphere; + } +); +#else +NSString *const kGPUImageGlassSphereFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform vec2 center; + uniform float radius; + uniform float aspectRatio; + uniform float refractiveIndex; + // uniform vec3 lightPosition; + const vec3 lightPosition = vec3(-0.5, 0.5, 1.0); + const vec3 ambientLightPosition = vec3(0.0, 0.0, 1.0); + + void main() + { + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float distanceFromCenter = distance(center, textureCoordinateToUse); + float checkForPresenceWithinSphere = step(distanceFromCenter, radius); + + distanceFromCenter = distanceFromCenter / radius; + + float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); + vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); + + vec3 refractedVector = 2.0 * refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); + refractedVector.xy = -refractedVector.xy; + + vec3 finalSphereColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5).rgb; + + // Grazing angle lighting + float lightingIntensity = 2.5 * (1.0 - pow(clamp(dot(ambientLightPosition, sphereNormal), 0.0, 1.0), 0.25)); + finalSphereColor += lightingIntensity; + + // Specular lighting + lightingIntensity = clamp(dot(normalize(lightPosition), sphereNormal), 0.0, 1.0); + lightingIntensity = pow(lightingIntensity, 15.0); + finalSphereColor += vec3(0.8, 0.8, 0.8) * lightingIntensity; + + gl_FragColor = vec4(finalSphereColor, 1.0) * checkForPresenceWithinSphere; + } +); +#endif + +@implementation GPUImageGlassSphereFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageGlassSphereFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.h new file mode 100755 index 00000000..2d97f8c3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.h @@ -0,0 +1,9 @@ +#import "GPUImageFilter.h" + +extern NSString *const kGPUImageLuminanceFragmentShaderString; + +/** Converts an image to grayscale (a slightly faster implementation of the saturation filter, without the ability to vary the color contribution) + */ +@interface GPUImageGrayscaleFilter : GPUImageFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m new file mode 100755 index 00000000..0066ca87 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m @@ -0,0 +1,141 @@ +#import "GPUImageGrayscaleFilter.h" + +@implementation GPUImageGrayscaleFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLuminanceFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, W); + + gl_FragColor = vec4(vec3(luminance), textureColor.a); + } +); +#else +NSString *const kGPUImageLuminanceFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, W); + + gl_FragColor = vec4(vec3(luminance), textureColor.a); + } +); +#endif + + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (!currentlyReceivingMonochromeInput) + { + [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; + } +} + +//- (void)setInputTexture:(GLuint)newInputTexture atIndex:(NSInteger)textureIndex; +//{ +// [super setInputTexture:newInputTexture atIndex:textureIndex]; +// if (currentlyReceivingMonochromeInput) +// { +// [self notifyTargetsAboutNewOutputTexture]; +// } +//} + +//- (GLuint)textureForOutput; +//{ +// if (currentlyReceivingMonochromeInput) +// { +// return filterSourceTexture; +// } +// else +// { +// return outputTexture; +// } +//} + +- (BOOL)wantsMonochromeInput; +{ +// return YES; + return NO; +} + +- (BOOL)providesMonochromeOutput; +{ +// return YES; + return NO; +} + +// TODO: Rewrite this based on the new GPUImageFilter implementation +//- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; +//{ +// if (self.frameProcessingCompletionBlock != NULL) +// { +// self.frameProcessingCompletionBlock(self, frameTime); +// } +// +// for (id currentTarget in targets) +// { +// if (currentTarget != self.targetToIgnoreForUpdates) +// { +// NSInteger indexOfObject = [targets indexOfObject:currentTarget]; +// NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; +// +// if ([GPUImageContext supportsFastTextureUpload] && preparedToCaptureImage) +// { +// [self setInputTextureForTarget:currentTarget atIndex:textureIndex]; +// } +// +// if (currentlyReceivingMonochromeInput) +// { +// [currentTarget setInputRotation:inputRotation atIndex:textureIndex]; +// +// CGSize sizeToRotate = [self outputFrameSize]; +// CGSize rotatedSize = sizeToRotate; +// if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) +// { +// rotatedSize.width = sizeToRotate.height; +// rotatedSize.height = sizeToRotate.width; +// } +// [currentTarget setInputSize:rotatedSize atIndex:textureIndex]; +// } +// else +// { +// [currentTarget setInputSize:[self outputFrameSize] atIndex:textureIndex]; +// } +// [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndex]; +// } +// } +//} + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceFragmentShaderString])) + { + return nil; + } + + return self; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h new file mode 100644 index 00000000..65a9e1de --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h @@ -0,0 +1,27 @@ +#import "GPUImageColorMatrixFilter.h" + +@interface GPUImageHSBFilter : GPUImageColorMatrixFilter + +/** Reset the filter to have no transformations. + */ +- (void)reset; + +/** Add a hue rotation to the filter. + The hue rotation is in the range [-360, 360] with 0 being no-change. + Note that this adjustment is additive, so use the reset method if you need to. + */ +- (void)rotateHue:(float)h; + +/** Add a saturation adjustment to the filter. + The saturation adjustment is in the range [0.0, 2.0] with 1.0 being no-change. + Note that this adjustment is additive, so use the reset method if you need to. + */ +- (void)adjustSaturation:(float)s; + +/** Add a brightness adjustment to the filter. + The brightness adjustment is in the range [0.0, 2.0] with 1.0 being no-change. + Note that this adjustment is additive, so use the reset method if you need to. + */ +- (void)adjustBrightness:(float)b; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m new file mode 100644 index 00000000..eb668f7d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m @@ -0,0 +1,414 @@ +#import "GPUImageHSBFilter.h" + +@implementation GPUImageHSBFilter { + float matrix[4][4]; +} + +- (id)init +{ + self = [super init]; + if (self) { + [self reset]; + } + return self; +} + +- (void)reset { + identmat(matrix); + [self _updateColorMatrix]; +} + +- (void)rotateHue:(float)h { + huerotatemat(matrix, h); + [self _updateColorMatrix]; +} + +- (void)adjustSaturation:(float)s { + saturatemat(matrix, s); + [self _updateColorMatrix]; +} + +- (void)adjustBrightness:(float)b { + cscalemat(matrix, b, b, b); + [self _updateColorMatrix]; +} + +- (void)_updateColorMatrix { + GPUMatrix4x4 gpuMatrix; + gpuMatrix.one.one = matrix[0][0]; + gpuMatrix.one.two = matrix[1][0]; + gpuMatrix.one.three = matrix[2][0]; + gpuMatrix.one.four = matrix[3][0]; + gpuMatrix.two.one = matrix[0][1]; + gpuMatrix.two.two = matrix[1][1]; + gpuMatrix.two.three = matrix[2][1]; + gpuMatrix.two.four = matrix[3][1]; + gpuMatrix.three.one = matrix[0][2]; + gpuMatrix.three.two = matrix[1][2]; + gpuMatrix.three.three = matrix[2][2]; + gpuMatrix.three.four = matrix[3][2]; + gpuMatrix.four.one = matrix[0][3]; + gpuMatrix.four.two = matrix[1][3]; + gpuMatrix.four.three = matrix[2][3]; + gpuMatrix.four.four = matrix[3][3]; + self.colorMatrix = gpuMatrix; +} + +#pragma mark - Matrix algorithms + +/* Matrix algorithms adapted from http://www.graficaobscura.com/matrix/index.html + + Note about luminance vector values below from that page: + Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This is the luminance vector. Notice here that we do not use the standard NTSC weights of 0.299, 0.587, and 0.114. The NTSC weights are only applicable to RGB colors in a gamma 2.2 color space. For linear RGB colors the values above are better. + */ +//#define RLUM (0.3086f) +//#define GLUM (0.6094f) +//#define BLUM (0.0820f) + +/* This is the vector value from the PDF specification, and may be closer to what Photoshop uses */ +#define RLUM (0.3f) +#define GLUM (0.59f) +#define BLUM (0.11f) + +/* + * matrixmult - + * multiply two matricies + */ +static void matrixmult(a,b,c) +float a[4][4], b[4][4], c[4][4]; +{ + int x, y; + float temp[4][4]; + + for(y=0; y<4 ; y++) + for(x=0 ; x<4 ; x++) { + temp[y][x] = b[y][0] * a[0][x] + + b[y][1] * a[1][x] + + b[y][2] * a[2][x] + + b[y][3] * a[3][x]; + } + for(y=0; y<4; y++) + for(x=0; x<4; x++) + c[y][x] = temp[y][x]; +} + +/* + * identmat - + * make an identity matrix + */ +static void identmat(matrix) +float matrix[4][4]; +{ + memset(matrix, 0, sizeof(float[4][4])); + matrix[0][0] = 1.0f; + matrix[1][1] = 1.0f; + matrix[2][2] = 1.0f; + matrix[3][3] = 1.0f; +} + +/* + * xformpnt - + * transform a 3D point using a matrix + */ +static void xformpnt(matrix,x,y,z,tx,ty,tz) +float matrix[4][4]; +float x,y,z; +float *tx,*ty,*tz; +{ + *tx = x*matrix[0][0] + y*matrix[1][0] + z*matrix[2][0] + matrix[3][0]; + *ty = x*matrix[0][1] + y*matrix[1][1] + z*matrix[2][1] + matrix[3][1]; + *tz = x*matrix[0][2] + y*matrix[1][2] + z*matrix[2][2] + matrix[3][2]; +} + +/* + * cscalemat - + * make a color scale marix + */ +static void cscalemat(mat,rscale,gscale,bscale) +float mat[4][4]; +float rscale, gscale, bscale; +{ + float mmat[4][4]; + + mmat[0][0] = rscale; + mmat[0][1] = 0.0; + mmat[0][2] = 0.0; + mmat[0][3] = 0.0; + + mmat[1][0] = 0.0; + mmat[1][1] = gscale; + mmat[1][2] = 0.0; + mmat[1][3] = 0.0; + + + mmat[2][0] = 0.0; + mmat[2][1] = 0.0; + mmat[2][2] = bscale; + mmat[2][3] = 0.0; + + mmat[3][0] = 0.0; + mmat[3][1] = 0.0; + mmat[3][2] = 0.0; + mmat[3][3] = 1.0; + matrixmult(mmat,mat,mat); +} + +/* + * saturatemat - + * make a saturation marix + */ +static void saturatemat(mat,sat) +float mat[4][4]; +float sat; +{ + float mmat[4][4]; + float a, b, c, d, e, f, g, h, i; + float rwgt, gwgt, bwgt; + + rwgt = RLUM; + gwgt = GLUM; + bwgt = BLUM; + + a = (1.0-sat)*rwgt + sat; + b = (1.0-sat)*rwgt; + c = (1.0-sat)*rwgt; + d = (1.0-sat)*gwgt; + e = (1.0-sat)*gwgt + sat; + f = (1.0-sat)*gwgt; + g = (1.0-sat)*bwgt; + h = (1.0-sat)*bwgt; + i = (1.0-sat)*bwgt + sat; + mmat[0][0] = a; + mmat[0][1] = b; + mmat[0][2] = c; + mmat[0][3] = 0.0; + + mmat[1][0] = d; + mmat[1][1] = e; + mmat[1][2] = f; + mmat[1][3] = 0.0; + + mmat[2][0] = g; + mmat[2][1] = h; + mmat[2][2] = i; + mmat[2][3] = 0.0; + + mmat[3][0] = 0.0; + mmat[3][1] = 0.0; + mmat[3][2] = 0.0; + mmat[3][3] = 1.0; + matrixmult(mmat,mat,mat); +} + +/* + * xrotate - + * rotate about the x (red) axis + */ +static void xrotatemat(mat,rs,rc) +float mat[4][4]; +float rs, rc; +{ + float mmat[4][4]; + + mmat[0][0] = 1.0; + mmat[0][1] = 0.0; + mmat[0][2] = 0.0; + mmat[0][3] = 0.0; + + mmat[1][0] = 0.0; + mmat[1][1] = rc; + mmat[1][2] = rs; + mmat[1][3] = 0.0; + + mmat[2][0] = 0.0; + mmat[2][1] = -rs; + mmat[2][2] = rc; + mmat[2][3] = 0.0; + + mmat[3][0] = 0.0; + mmat[3][1] = 0.0; + mmat[3][2] = 0.0; + mmat[3][3] = 1.0; + matrixmult(mmat,mat,mat); +} + +/* + * yrotate - + * rotate about the y (green) axis + */ +static void yrotatemat(mat,rs,rc) +float mat[4][4]; +float rs, rc; +{ + float mmat[4][4]; + + mmat[0][0] = rc; + mmat[0][1] = 0.0; + mmat[0][2] = -rs; + mmat[0][3] = 0.0; + + mmat[1][0] = 0.0; + mmat[1][1] = 1.0; + mmat[1][2] = 0.0; + mmat[1][3] = 0.0; + + mmat[2][0] = rs; + mmat[2][1] = 0.0; + mmat[2][2] = rc; + mmat[2][3] = 0.0; + + mmat[3][0] = 0.0; + mmat[3][1] = 0.0; + mmat[3][2] = 0.0; + mmat[3][3] = 1.0; + matrixmult(mmat,mat,mat); +} + +/* + * zrotate - + * rotate about the z (blue) axis + */ +static void zrotatemat(mat,rs,rc) +float mat[4][4]; +float rs, rc; +{ + float mmat[4][4]; + + mmat[0][0] = rc; + mmat[0][1] = rs; + mmat[0][2] = 0.0; + mmat[0][3] = 0.0; + + mmat[1][0] = -rs; + mmat[1][1] = rc; + mmat[1][2] = 0.0; + mmat[1][3] = 0.0; + + mmat[2][0] = 0.0; + mmat[2][1] = 0.0; + mmat[2][2] = 1.0; + mmat[2][3] = 0.0; + + mmat[3][0] = 0.0; + mmat[3][1] = 0.0; + mmat[3][2] = 0.0; + mmat[3][3] = 1.0; + matrixmult(mmat,mat,mat); +} + +/* + * zshear - + * shear z using x and y. + */ +static void zshearmat(mat,dx,dy) +float mat[4][4]; +float dx, dy; +{ + float mmat[4][4]; + + mmat[0][0] = 1.0; + mmat[0][1] = 0.0; + mmat[0][2] = dx; + mmat[0][3] = 0.0; + + mmat[1][0] = 0.0; + mmat[1][1] = 1.0; + mmat[1][2] = dy; + mmat[1][3] = 0.0; + + mmat[2][0] = 0.0; + mmat[2][1] = 0.0; + mmat[2][2] = 1.0; + mmat[2][3] = 0.0; + + mmat[3][0] = 0.0; + mmat[3][1] = 0.0; + mmat[3][2] = 0.0; + mmat[3][3] = 1.0; + matrixmult(mmat,mat,mat); +} + +/* + * simplehuerotatemat - + * simple hue rotation. This changes luminance + */ +//static void simplehuerotatemat(mat,rot) +//float mat[4][4]; +//float rot; +//{ +// float mag; +// float xrs, xrc; +// float yrs, yrc; +// float zrs, zrc; +// +// /* rotate the grey vector into positive Z */ +// mag = sqrt(2.0); +// xrs = 1.0/mag; +// xrc = 1.0/mag; +// xrotatemat(mat,xrs,xrc); +// +// mag = sqrt(3.0); +// yrs = -1.0/mag; +// yrc = sqrt(2.0)/mag; +// yrotatemat(mat,yrs,yrc); +// +// /* rotate the hue */ +// zrs = sin(rot*M_PI/180.0); +// zrc = cos(rot*M_PI/180.0); +// zrotatemat(mat,zrs,zrc); +// +// /* rotate the grey vector back into place */ +// yrotatemat(mat,-yrs,yrc); +// xrotatemat(mat,-xrs,xrc); +//} + +/* + * huerotatemat - + * rotate the hue, while maintaining luminance. + */ +static void huerotatemat(mat,rot) +float mat[4][4]; +float rot; +{ + float mmat[4][4]; + float mag; + float lx, ly, lz; + float xrs, xrc; + float yrs, yrc; + float zrs, zrc; + float zsx, zsy; + + identmat(mmat); + + /* rotate the grey vector into positive Z */ + mag = sqrt(2.0); + xrs = 1.0/mag; + xrc = 1.0/mag; + xrotatemat(mmat,xrs,xrc); + mag = sqrt(3.0); + yrs = -1.0/mag; + yrc = sqrt(2.0)/mag; + yrotatemat(mmat,yrs,yrc); + + /* shear the space to make the luminance plane horizontal */ + xformpnt(mmat,RLUM,GLUM,BLUM,&lx,&ly,&lz); + zsx = lx/lz; + zsy = ly/lz; + zshearmat(mmat,zsx,zsy); + + /* rotate the hue */ + zrs = sin(rot*M_PI/180.0); + zrc = cos(rot*M_PI/180.0); + zrotatemat(mmat,zrs,zrc); + + /* unshear the space to put the luminance plane back */ + zshearmat(mmat,-zsx,-zsy); + + /* rotate the grey vector back into place */ + yrotatemat(mmat,-yrs,yrc); + xrotatemat(mmat,-xrs,xrc); + + matrixmult(mmat,mat,mat); +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.h new file mode 100644 index 00000000..1860bc97 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.h @@ -0,0 +1,5 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImageHalftoneFilter : GPUImagePixellateFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m new file mode 100644 index 00000000..1b621c6a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m @@ -0,0 +1,79 @@ +#import "GPUImageHalftoneFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHalftoneFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float fractionalWidthOfPixel; + uniform highp float aspectRatio; + uniform highp float dotScaling; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + + highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); + + lowp vec3 sampledColor = texture2D(inputImageTexture, samplePos ).rgb; + highp float dotScaling = 1.0 - dot(sampledColor, W); + + lowp float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); + + gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); + } +); +#else +NSString *const kGPUImageHalftoneFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float fractionalWidthOfPixel; + uniform float aspectRatio; + uniform float dotScaling; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + + vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); + + vec3 sampledColor = texture2D(inputImageTexture, samplePos ).rgb; + float dotScaling = 1.0 - dot(sampledColor, W); + + float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); + + gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); + } +); +#endif + +@implementation GPUImageHalftoneFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageHalftoneFragmentShaderString])) + { + return nil; + } + + self.fractionalWidthOfAPixel = 0.01; + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.h new file mode 100755 index 00000000..47d62609 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHardLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m new file mode 100755 index 00000000..2896ce82 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m @@ -0,0 +1,99 @@ +#import "GPUImageHardLightBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHardLightBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + highp float ra; + if (2.0 * overlay.r < overlay.a) { + ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } else { + ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } + + highp float ga; + if (2.0 * overlay.g < overlay.a) { + ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } else { + ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } + + highp float ba; + if (2.0 * overlay.b < overlay.a) { + ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } else { + ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } + + gl_FragColor = vec4(ra, ga, ba, 1.0); + } +); +#else +NSString *const kGPUImageHardLightBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + float ra; + if (2.0 * overlay.r < overlay.a) { + ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } else { + ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } + + float ga; + if (2.0 * overlay.g < overlay.a) { + ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } else { + ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } + + float ba; + if (2.0 * overlay.b < overlay.a) { + ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } else { + ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } + + gl_FragColor = vec4(ra, ga, ba, 1.0); + } +); +#endif + + +@implementation GPUImageHardLightBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageHardLightBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.h new file mode 100755 index 00000000..1492b8b8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.h @@ -0,0 +1,53 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGaussianBlurFilter; +@class GPUImageXYDerivativeFilter; +@class GPUImageGrayscaleFilter; +@class GPUImageGaussianBlurFilter; +@class GPUImageThresholdedNonMaximumSuppressionFilter; +@class GPUImageColorPackingFilter; + +//#define DEBUGFEATUREDETECTION + +/** Harris corner detector + + First pass: reduce to luminance and take the derivative of the luminance texture (GPUImageXYDerivativeFilter) + + Second pass: blur the derivative (GPUImageGaussianBlurFilter) + + Third pass: apply the Harris corner detection calculation + + This is the Harris corner detector, as described in + C. Harris and M. Stephens. A Combined Corner and Edge Detector. Proc. Alvey Vision Conf., Univ. Manchester, pp. 147-151, 1988. + */ +@interface GPUImageHarrisCornerDetectionFilter : GPUImageFilterGroup +{ + GPUImageXYDerivativeFilter *derivativeFilter; + GPUImageGaussianBlurFilter *blurFilter; + GPUImageFilter *harrisCornerDetectionFilter; + GPUImageThresholdedNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; + GPUImageColorPackingFilter *colorPackingFilter; + GLfloat *cornersArray; + GLubyte *rawImagePixels; +} + +/** The radius of the underlying Gaussian blur. The default is 2.0. + */ +@property(readwrite, nonatomic) CGFloat blurRadiusInPixels; + +// This changes the dynamic range of the Harris corner detector by amplifying small cornerness values. Default is 5.0. +@property(readwrite, nonatomic) CGFloat sensitivity; + +// A threshold value at which a point is recognized as being a corner after the non-maximum suppression. Default is 0.20. +@property(readwrite, nonatomic) CGFloat threshold; + +// This block is called on the detection of new corner points, usually on every processed frame. A C array containing normalized coordinates in X, Y pairs is passed in, along with a count of the number of corners detected and the current timestamp of the video frame +@property(nonatomic, copy) void(^cornersDetectedBlock)(GLfloat* cornerArray, NSUInteger cornersDetected, CMTime frameTime); + +// These images are only enabled when built with DEBUGFEATUREDETECTION defined, and are used to examine the intermediate states of the feature detector +@property(nonatomic, readonly, strong) NSMutableArray *intermediateImages; + +// Initialization and teardown +- (id)initWithCornerDetectionFragmentShader:(NSString *)cornerDetectionFragmentShader; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m new file mode 100755 index 00000000..999748dd --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m @@ -0,0 +1,292 @@ +#import "GPUImageHarrisCornerDetectionFilter.h" +#import "GPUImageGaussianBlurFilter.h" +#import "GPUImageXYDerivativeFilter.h" +#import "GPUImageGrayscaleFilter.h" +#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" +#import "GPUImageColorPackingFilter.h" +#import "GPUImageGaussianBlurFilter.h" + +@interface GPUImageHarrisCornerDetectionFilter() + +- (void)extractCornerLocationsFromImageAtFrameTime:(CMTime)frameTime; + +@end + +// This is the Harris corner detector, as described in +// C. Harris and M. Stephens. A Combined Corner and Edge Detector. Proc. Alvey Vision Conf., Univ. Manchester, pp. 147-151, 1988. + +@implementation GPUImageHarrisCornerDetectionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHarrisCornerDetectionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float sensitivity; + + const mediump float harrisConstant = 0.04; + + void main() + { + mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; + + mediump float derivativeSum = derivativeElements.x + derivativeElements.y; + + mediump float zElement = (derivativeElements.z * 2.0) - 1.0; + + // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 + mediump float cornerness = derivativeElements.x * derivativeElements.y - (zElement * zElement) - harrisConstant * derivativeSum * derivativeSum; + + gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); + } +); +#else +NSString *const kGPUImageHarrisCornerDetectionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float sensitivity; + + const float harrisConstant = 0.04; + + void main() + { + vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; + + float derivativeSum = derivativeElements.x + derivativeElements.y; + + float zElement = (derivativeElements.z * 2.0) - 1.0; + + // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 + float cornerness = derivativeElements.x * derivativeElements.y - (zElement * zElement) - harrisConstant * derivativeSum * derivativeSum; + + gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); + } +); +#endif + +@synthesize blurRadiusInPixels; +@synthesize cornersDetectedBlock; +@synthesize sensitivity = _sensitivity; +@synthesize threshold = _threshold; +@synthesize intermediateImages = _intermediateImages; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageHarrisCornerDetectionFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithCornerDetectionFragmentShader:(NSString *)cornerDetectionFragmentShader; +{ + if (!(self = [super init])) + { + return nil; + } + +#ifdef DEBUGFEATUREDETECTION + _intermediateImages = [[NSMutableArray alloc] init]; +#endif + + // First pass: reduce to luminance and take the derivative of the luminance texture + derivativeFilter = [[GPUImageXYDerivativeFilter alloc] init]; + [self addFilter:derivativeFilter]; + +#ifdef DEBUGFEATUREDETECTION + __unsafe_unretained NSMutableArray *weakIntermediateImages = _intermediateImages; + __unsafe_unretained GPUImageFilter *weakFilter = derivativeFilter; + [derivativeFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ + UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; + [weakIntermediateImages addObject:intermediateImage]; + }]; +#endif + + // Second pass: blur the derivative + blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + +#ifdef DEBUGFEATUREDETECTION + weakFilter = blurFilter; + [blurFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ + UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; + [weakIntermediateImages addObject:intermediateImage]; + }]; +#endif + + // Third pass: apply the Harris corner detection calculation + harrisCornerDetectionFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromString:cornerDetectionFragmentShader]; + [self addFilter:harrisCornerDetectionFilter]; + +#ifdef DEBUGFEATUREDETECTION + weakFilter = harrisCornerDetectionFilter; + [harrisCornerDetectionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ + UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; + [weakIntermediateImages addObject:intermediateImage]; + }]; +#endif + + // Fourth pass: apply non-maximum suppression and thresholding to find the local maxima + nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] init]; + [self addFilter:nonMaximumSuppressionFilter]; + + __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; +#ifdef DEBUGFEATUREDETECTION + weakFilter = nonMaximumSuppressionFilter; + [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ + UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; + [weakIntermediateImages addObject:intermediateImage]; + + [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; + }]; +#else + [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { + [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; + }]; +#endif + +// Sixth pass: compress the thresholded points into the RGBA channels +// colorPackingFilter = [[GPUImageColorPackingFilter alloc] init]; +// [self addFilter:colorPackingFilter]; +// +// +//#ifdef DEBUGFEATUREDETECTION +// __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; +// weakFilter = colorPackingFilter; +// [colorPackingFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ +// NSLog(@"Triggered response from compaction filter"); +// +// UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; +// [weakIntermediateImages addObject:intermediateImage]; +// +// [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; +// }]; +//#else +// __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; +// [colorPackingFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { +// [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; +// }]; +//#endif + + [derivativeFilter addTarget:blurFilter]; + [blurFilter addTarget:harrisCornerDetectionFilter]; + [harrisCornerDetectionFilter addTarget:nonMaximumSuppressionFilter]; +// [simpleThresholdFilter addTarget:colorPackingFilter]; + + self.initialFilters = [NSArray arrayWithObjects:derivativeFilter, nil]; +// self.terminalFilter = colorPackingFilter; + self.terminalFilter = nonMaximumSuppressionFilter; + + self.blurRadiusInPixels = 2.0; + self.sensitivity = 5.0; + self.threshold = 0.20; + + return self; +} + +- (void)dealloc; +{ + free(rawImagePixels); + free(cornersArray); +} + +#pragma mark - +#pragma mark Corner extraction + +- (void)extractCornerLocationsFromImageAtFrameTime:(CMTime)frameTime; +{ + // we need a normal color texture for this filter + NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); + NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + NSUInteger numberOfCorners = 0; + CGSize imageSize = nonMaximumSuppressionFilter.outputFrameSize; + + unsigned int imageByteSize = imageSize.width * imageSize.height * 4; + + if (rawImagePixels == NULL) + { + rawImagePixels = (GLubyte *)malloc(imageByteSize); + cornersArray = calloc(512 * 2, sizeof(GLfloat)); + } + + glReadPixels(0, 0, (int)imageSize.width, (int)imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); + + CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + + unsigned int imageWidth = imageSize.width * 4; + + unsigned int currentByte = 0; + unsigned int cornerStorageIndex = 0; + while (currentByte < imageByteSize) + { + GLubyte colorByte = rawImagePixels[currentByte]; + + if (colorByte > 0) + { + unsigned int xCoordinate = currentByte % imageWidth; + unsigned int yCoordinate = currentByte / imageWidth; + + cornersArray[cornerStorageIndex++] = (CGFloat)(xCoordinate / 4) / imageSize.width; + cornersArray[cornerStorageIndex++] = (CGFloat)(yCoordinate) / imageSize.height; + numberOfCorners++; + + numberOfCorners = MIN(numberOfCorners, 511); + cornerStorageIndex = MIN(cornerStorageIndex, 1021); + } + currentByte +=4; + } + + CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); + NSLog(@"Processing time : %f ms", 1000.0 * currentFrameTime); + + if (cornersDetectedBlock != NULL) + { + cornersDetectedBlock(cornersArray, numberOfCorners, frameTime); + } +} + +- (BOOL)wantsMonochromeInput; +{ +// return YES; + return NO; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setSensitivity:(CGFloat)newValue; +{ + _sensitivity = newValue; + [harrisCornerDetectionFilter setFloat:newValue forUniformName:@"sensitivity"]; +} + +- (void)setThreshold:(CGFloat)newValue; +{ + nonMaximumSuppressionFilter.threshold = newValue; +} + +- (CGFloat)threshold; +{ + return nonMaximumSuppressionFilter.threshold; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.h new file mode 100755 index 00000000..eb3fbca6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.h @@ -0,0 +1,29 @@ +#import "GPUImageFilter.h" + +/* + * The haze filter can be used to add or remove haze (similar to a UV filter) + * + * @author Alaric Cole + * @creationDate 03/10/12 + * + */ + +/** The haze filter can be used to add or remove haze + + This is similar to a UV filter + */ +@interface GPUImageHazeFilter : GPUImageFilter +{ + GLint distanceUniform; + GLint slopeUniform; +} + +/** Strength of the color applied. Default 0. Values between -.3 and .3 are best + */ +@property(readwrite, nonatomic) CGFloat distance; + +/** Amount of color change. Default 0. Values between -.3 and .3 are best + */ +@property(readwrite, nonatomic) CGFloat slope; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m new file mode 100755 index 00000000..f90fc22f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m @@ -0,0 +1,96 @@ +#import "GPUImageHazeFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHazeFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform lowp float hazeDistance; + uniform highp float slope; + + void main() + { + //todo reconsider precision modifiers + highp vec4 color = vec4(1.0);//todo reimplement as a parameter + + highp float d = textureCoordinate.y * slope + hazeDistance; + + highp vec4 c = texture2D(inputImageTexture, textureCoordinate) ; // consider using unpremultiply + + c = (c - d * color) / (1.0 -d); + + gl_FragColor = c; //consider using premultiply(c); + } +); +#else +NSString *const kGPUImageHazeFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float hazeDistance; + uniform float slope; + + void main() + { + //todo reconsider precision modifiers + vec4 color = vec4(1.0);//todo reimplement as a parameter + + float d = textureCoordinate.y * slope + hazeDistance; + + vec4 c = texture2D(inputImageTexture, textureCoordinate) ; // consider using unpremultiply + + c = (c - d * color) / (1.0 -d); + + gl_FragColor = c; //consider using premultiply(c); + } +); +#endif + + + + +@implementation GPUImageHazeFilter + +@synthesize distance = _distance; +@synthesize slope = _slope; +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageHazeFragmentShaderString])) + { + return nil; + } + + distanceUniform = [filterProgram uniformIndex:@"hazeDistance"]; + slopeUniform = [filterProgram uniformIndex:@"slope"]; + + self.distance = 0.2; + self.slope = 0.0; + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setDistance:(CGFloat)newValue; +{ + _distance = newValue; + + [self setFloat:_distance forUniform:distanceUniform program:filterProgram]; +} + +- (void)setSlope:(CGFloat)newValue; +{ + _slope = newValue; + + [self setFloat:_slope forUniform:slopeUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.h new file mode 100644 index 00000000..263d8df1 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilterGroup.h" +#import "GPUImageLowPassFilter.h" +#import "GPUImageDifferenceBlendFilter.h" + +@interface GPUImageHighPassFilter : GPUImageFilterGroup +{ + GPUImageLowPassFilter *lowPassFilter; + GPUImageDifferenceBlendFilter *differenceBlendFilter; +} + +// This controls the degree by which the previous accumulated frames are blended and then subtracted from the current one. This ranges from 0.0 to 1.0, with a default of 0.5. +@property(readwrite, nonatomic) CGFloat filterStrength; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m new file mode 100644 index 00000000..511240d8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m @@ -0,0 +1,46 @@ +#import "GPUImageHighPassFilter.h" + +@implementation GPUImageHighPassFilter + +@synthesize filterStrength; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // Start with a low pass filter to define the component to be removed + lowPassFilter = [[GPUImageLowPassFilter alloc] init]; + [self addFilter:lowPassFilter]; + + // Take the difference of the current frame from the low pass filtered result to get the high pass + differenceBlendFilter = [[GPUImageDifferenceBlendFilter alloc] init]; + [self addFilter:differenceBlendFilter]; + + // Texture location 0 needs to be the original image for the difference blend + [lowPassFilter addTarget:differenceBlendFilter atTextureLocation:1]; + + self.initialFilters = [NSArray arrayWithObjects:lowPassFilter, differenceBlendFilter, nil]; + self.terminalFilter = differenceBlendFilter; + + self.filterStrength = 0.5; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setFilterStrength:(CGFloat)newValue; +{ + lowPassFilter.filterStrength = newValue; +} + +- (CGFloat)filterStrength; +{ + return lowPassFilter.filterStrength; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.h new file mode 100644 index 00000000..35791298 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.h @@ -0,0 +1,20 @@ +#import "GPUImageFilter.h" + +@interface GPUImageHighlightShadowFilter : GPUImageFilter +{ + GLint shadowsUniform, highlightsUniform; +} + +/** + * 0 - 1, increase to lighten shadows. + * @default 0 + */ +@property(readwrite, nonatomic) CGFloat shadows; + +/** + * 0 - 1, decrease to darken highlights. + * @default 1 + */ +@property(readwrite, nonatomic) CGFloat highlights; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m new file mode 100644 index 00000000..aa92b740 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m @@ -0,0 +1,93 @@ +#import "GPUImageHighlightShadowFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHighlightShadowFragmentShaderString = SHADER_STRING +( +uniform sampler2D inputImageTexture; +varying highp vec2 textureCoordinate; + +uniform lowp float shadows; +uniform lowp float highlights; + +const mediump vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); + +void main() +{ + lowp vec4 source = texture2D(inputImageTexture, textureCoordinate); + mediump float luminance = dot(source.rgb, luminanceWeighting); + + mediump float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); + mediump float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); + lowp vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); + + gl_FragColor = vec4(result.rgb, source.a); +} +); +#else +NSString *const kGPUImageHighlightShadowFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + varying vec2 textureCoordinate; + + uniform float shadows; + uniform float highlights; + + const vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); + + void main() + { + vec4 source = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(source.rgb, luminanceWeighting); + + float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); + float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); + vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); + + gl_FragColor = vec4(result.rgb, source.a); + } +); +#endif + +@implementation GPUImageHighlightShadowFilter + +@synthesize shadows = _shadows; +@synthesize highlights = _highlights; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageHighlightShadowFragmentShaderString])) + { + return nil; + } + + shadowsUniform = [filterProgram uniformIndex:@"shadows"]; + highlightsUniform = [filterProgram uniformIndex:@"highlights"]; + + self.shadows = 0.0; + self.highlights = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setShadows:(CGFloat)newValue; +{ + _shadows = newValue; + + [self setFloat:_shadows forUniform:shadowsUniform program:filterProgram]; +} + +- (void)setHighlights:(CGFloat)newValue; +{ + _highlights = newValue; + + [self setFloat:_highlights forUniform:highlightsUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h new file mode 100644 index 00000000..166c5c8c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h @@ -0,0 +1,25 @@ +// +// GPUImageHighlightShadowTintFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageFilter.h" + +@interface GPUImageHighlightShadowTintFilter : GPUImageFilter +{ + GLint shadowTintIntensityUniform, highlightTintIntensityUniform, shadowTintColorUniform, highlightTintColorUniform; +} + +// The shadowTint and highlightTint colors specify what colors replace the dark and light areas of the image, respectively. The defaults for shadows are black, highlighs white. +@property(readwrite, nonatomic) GLfloat shadowTintIntensity; +@property(readwrite, nonatomic) GPUVector4 shadowTintColor; +@property(readwrite, nonatomic) GLfloat highlightTintIntensity; +@property(readwrite, nonatomic) GPUVector4 highlightTintColor; + +- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m new file mode 100644 index 00000000..54bc0850 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m @@ -0,0 +1,136 @@ +// +// GPUImageHighlightShadowTintFilter.m +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageHighlightShadowTintFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUHighlightShadowTintFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float shadowTintIntensity; + uniform lowp float highlightTintIntensity; + uniform highp vec4 shadowTintColor; + uniform highp vec4 highlightTintColor; + + const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + highp float luminance = dot(textureColor.rgb, luminanceWeighting); + + highp vec4 shadowResult = mix(textureColor, max(textureColor, vec4( mix(shadowTintColor.rgb, textureColor.rgb, luminance), textureColor.a)), shadowTintIntensity); + highp vec4 highlightResult = mix(textureColor, min(shadowResult, vec4( mix(shadowResult.rgb, highlightTintColor.rgb, luminance), textureColor.a)), highlightTintIntensity); + + gl_FragColor = vec4( mix(shadowResult.rgb, highlightResult.rgb, luminance), textureColor.a); + } + ); +#else +NSString *const kGPUHighlightShadowTintFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float shadowTintIntensity; + uniform float highlightTintIntensity; + uniform vec3 shadowTintColor; + uniform vec3 highlightTintColor; + + const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + + vec4 shadowResult = mix(textureColor, max(textureColor, vec4( mix(shadowTintColor.rgb, textureColor.rgb, luminance), textureColor.a)), shadowTintIntensity); + vec4 highlightResult = mix(textureColor, min(shadowResult, vec4( mix(shadowResult.rgb, highlightTintColor.rgb, luminance), textureColor.a)), highlightTintIntensity); + + gl_FragColor = vec4( mix(shadowResult.rgb, highlightResult.rgb, luminance), textureColor.a); + } + ); +#endif + + +@implementation GPUImageHighlightShadowTintFilter + +@synthesize shadowTintIntensity = _shadowTintIntensity; +@synthesize highlightTintIntensity = _highlightTintIntensity; +@synthesize shadowTintColor = _shadowTintColor; +@synthesize highlightTintColor = _highlightTintColor; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUHighlightShadowTintFragmentShaderString])) + { + return nil; + } + + shadowTintIntensityUniform = [filterProgram uniformIndex:@"shadowTintIntensity"]; + highlightTintIntensityUniform = [filterProgram uniformIndex:@"highlightTintIntensity"]; + shadowTintColorUniform = [filterProgram uniformIndex:@"shadowTintColor"]; + highlightTintColorUniform = [filterProgram uniformIndex:@"highlightTintColor"]; + + self.shadowTintIntensity = 0.0f; + self.highlightTintIntensity = 0.0f; + self.shadowTintColor = (GPUVector4){1.0f, 0.0f, 0.0f, 1.0f}; + self.highlightTintColor = (GPUVector4){0.0f, 0.0f, 1.0f, 1.0f}; + + return self; +} + + +#pragma mark - +#pragma mark Accessors + +- (void)setShadowTintIntensity:(GLfloat)newValue +{ + _shadowTintIntensity = newValue; + + [self setFloat:_shadowTintIntensity forUniform:shadowTintIntensityUniform program:filterProgram]; +} + +- (void)setHighlightTintIntensity:(GLfloat)newValue +{ + _highlightTintIntensity = newValue; + + [self setFloat:_highlightTintIntensity forUniform:highlightTintIntensityUniform program:filterProgram]; +} + +- (void)setShadowTintColor:(GPUVector4)newValue; +{ + _shadowTintColor = newValue; + + [self setShadowTintColorRed:_shadowTintColor.one green:_shadowTintColor.two blue:_shadowTintColor.three alpha:_shadowTintColor.four]; +} + +- (void)setHighlightTintColor:(GPUVector4)newValue; +{ + _highlightTintColor = newValue; + + [self setHighlightTintColorRed:_highlightTintColor.one green:_highlightTintColor.two blue:_highlightTintColor.three alpha:_highlightTintColor.four]; +} + +- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +{ + GPUVector4 shadowTintColor = {redComponent, greenComponent, blueComponent, alphaComponent}; + + [self setVec4:shadowTintColor forUniform:shadowTintColorUniform program:filterProgram]; +} + +- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +{ + GPUVector4 highlightTintColor = {redComponent, greenComponent, blueComponent, alphaComponent}; + + [self setVec4:highlightTintColor forUniform:highlightTintColorUniform program:filterProgram]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.h new file mode 100644 index 00000000..2b71cda0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.h @@ -0,0 +1,26 @@ +// +// GPUImageHistogramEqualizationFilter.h +// FilterShowcase +// +// Created by Adam Marcus on 19/08/2014. +// Copyright (c) 2014 Sunset Lake Software LLC. All rights reserved. +// + +#import "GPUImageFilterGroup.h" +#import "GPUImageHistogramFilter.h" +#import "GPUImageRawDataOutput.h" +#import "GPUImageRawDataInput.h" +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHistogramEqualizationFilter : GPUImageFilterGroup +{ + GPUImageHistogramFilter *histogramFilter; + GPUImageRawDataOutput *rawDataOutputFilter; + GPUImageRawDataInput *rawDataInputFilter; +} + +@property(readwrite, nonatomic) NSUInteger downsamplingFactor; + +- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m new file mode 100644 index 00000000..7d6b9a2d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m @@ -0,0 +1,307 @@ +// +// GPUImageHistogramEqualizationFilter.m +// FilterShowcase +// +// Created by Adam Marcus on 19/08/2014. +// Copyright (c) 2014 Sunset Lake Software LLC. All rights reserved. +// + +#import "GPUImageHistogramEqualizationFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageRedHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; + + gl_FragColor = vec4(redCurveValue, textureColor.g, textureColor.b, textureColor.a); + } + ); +#else +NSString *const kGPUImageRedHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; + + gl_FragColor = vec4(redCurveValue, textureColor.g, textureColor.b, textureColor.a); + } + ); +#endif + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageGreenHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; + + gl_FragColor = vec4(textureColor.r, greenCurveValue, textureColor.b, textureColor.a); + } + ); +#else +NSString *const kGPUImageGreenHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; + + gl_FragColor = vec4(textureColor.r, greenCurveValue, textureColor.b, textureColor.a); + } + ); +#endif + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageBlueHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; + + gl_FragColor = vec4(textureColor.r, textureColor.g, blueCurveValue, textureColor.a); + } + ); +#else +NSString *const kGPUImageBlueHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; + + gl_FragColor = vec4(textureColor.r, textureColor.g, blueCurveValue, textureColor.a); + } + ); +#endif + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageRGBHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; + lowp float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; + lowp float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; + + gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); + } + ); +#else +NSString *const kGPUImageRGBHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; + float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; + float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; + + gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); + } + ); +#endif + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLuminanceHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + const lowp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp float luminance = dot(textureColor.rgb, W); + lowp float newLuminance = texture2D(inputImageTexture2, vec2(luminance, 0.0)).r; + lowp float deltaLuminance = newLuminance - luminance; + + lowp float red = clamp(textureColor.r + deltaLuminance, 0.0, 1.0); + lowp float green = clamp(textureColor.g + deltaLuminance, 0.0, 1.0); + lowp float blue = clamp(textureColor.b + deltaLuminance, 0.0, 1.0); + + gl_FragColor = vec4(red, green, blue, textureColor.a); + } + ); +#else +NSString *const kGPUImageLuminanceHistogramEqualizationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, W); + float newLuminance = texture2D(inputImageTexture2, vec2(luminance, 0.0)).r; + float deltaLuminance = newLuminance - luminance; + + float red = clamp(textureColor.r + deltaLuminance, 0.0, 1.0); + float green = clamp(textureColor.g + deltaLuminance, 0.0, 1.0); + float blue = clamp(textureColor.b + deltaLuminance, 0.0, 1.0); + + gl_FragColor = vec4(red, green, blue, textureColor.a); + } + ); +#endif + +@implementation GPUImageHistogramEqualizationFilter + +@synthesize downsamplingFactor = _downsamplingFactor; + +#pragma mark - +#pragma mark Initialization + +- (id)init; +{ + if (!(self = [self initWithHistogramType:kGPUImageHistogramRGB])) + { + return nil; + } + + return self; +} + +- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType +{ + if (!(self = [super init])) + { + return nil; + } + + histogramFilter = [[GPUImageHistogramFilter alloc] initWithHistogramType:newHistogramType]; + [self addFilter:histogramFilter]; + + GLubyte dummyInput[4 * 256]; // NB: No way to initialise GPUImageRawDataInput without providing bytes + rawDataInputFilter = [[GPUImageRawDataInput alloc] initWithBytes:dummyInput size:CGSizeMake(256.0, 1.0) pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte]; + rawDataOutputFilter = [[GPUImageRawDataOutput alloc] initWithImageSize:CGSizeMake(256.0, 3.0) resultsInBGRAFormat:YES]; + + __unsafe_unretained GPUImageRawDataOutput *_rawDataOutputFilter = rawDataOutputFilter; + __unsafe_unretained GPUImageRawDataInput *_rawDataInputFilter = rawDataInputFilter; + [rawDataOutputFilter setNewFrameAvailableBlock:^{ + + unsigned int histogramBins[3][256]; + + [_rawDataOutputFilter lockFramebufferForReading]; + + GLubyte *data = [_rawDataOutputFilter rawBytesForImage]; + data += [_rawDataOutputFilter bytesPerRowInOutput]; + + histogramBins[0][0] = *data++; + histogramBins[1][0] = *data++; + histogramBins[2][0] = *data++; + data++; + + for (unsigned int x = 1; x < 256; x++) { + histogramBins[0][x] = histogramBins[0][x-1] + *data++; + histogramBins[1][x] = histogramBins[1][x-1] + *data++; + histogramBins[2][x] = histogramBins[2][x-1] + *data++; + data++; + } + + [_rawDataOutputFilter unlockFramebufferAfterReading]; + + GLubyte colorMapping[4 * 256]; + GLubyte *_colorMapping = colorMapping; + + for (unsigned int x = 0; x < 256; x++) { + *_colorMapping++ = (GLubyte) (((histogramBins[0][x] - histogramBins[0][0]) * 255) / histogramBins[0][255]); + *_colorMapping++ = (GLubyte) (((histogramBins[1][x] - histogramBins[1][0]) * 255) / histogramBins[1][255]); + *_colorMapping++ = (GLubyte) (((histogramBins[2][x] - histogramBins[2][0]) * 255) / histogramBins[2][255]); + *_colorMapping++ = 255; + } + + _colorMapping = colorMapping; + [_rawDataInputFilter updateDataFromBytes:_colorMapping size:CGSizeMake(256.0, 1.0)]; + [_rawDataInputFilter processData]; + }]; + [histogramFilter addTarget:rawDataOutputFilter]; + + NSString *fragmentShader = nil; + switch (newHistogramType) { + case kGPUImageHistogramRed: + fragmentShader = kGPUImageRedHistogramEqualizationFragmentShaderString; + break; + case kGPUImageHistogramGreen: + fragmentShader = kGPUImageGreenHistogramEqualizationFragmentShaderString; + break; + case kGPUImageHistogramBlue: + fragmentShader = kGPUImageBlueHistogramEqualizationFragmentShaderString; + break; + default: + case kGPUImageHistogramRGB: + fragmentShader = kGPUImageRGBHistogramEqualizationFragmentShaderString; + break; + case kGPUImageHistogramLuminance: + fragmentShader = kGPUImageLuminanceHistogramEqualizationFragmentShaderString; + break; + } + GPUImageFilter *equalizationFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:fragmentShader]; + [rawDataInputFilter addTarget:equalizationFilter atTextureLocation:1]; + + [self addFilter:equalizationFilter]; + + self.initialFilters = [NSArray arrayWithObjects:histogramFilter, equalizationFilter, nil]; + self.terminalFilter = equalizationFilter; + + self.downsamplingFactor = 16; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setDownsamplingFactor:(NSUInteger)newValue; +{ + if (_downsamplingFactor != newValue) + { + _downsamplingFactor = newValue; + histogramFilter.downsamplingFactor = newValue; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.h new file mode 100755 index 00000000..32004bf7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.h @@ -0,0 +1,22 @@ +#import "GPUImageFilter.h" + +typedef enum { kGPUImageHistogramRed, kGPUImageHistogramGreen, kGPUImageHistogramBlue, kGPUImageHistogramRGB, kGPUImageHistogramLuminance} GPUImageHistogramType; + +@interface GPUImageHistogramFilter : GPUImageFilter +{ + GPUImageHistogramType histogramType; + + GLubyte *vertexSamplingCoordinates; + + GLProgram *secondFilterProgram, *thirdFilterProgram; + GLint secondFilterPositionAttribute, thirdFilterPositionAttribute; +} + +// Rather than sampling every pixel, this dictates what fraction of the image is sampled. By default, this is 16 with a minimum of 1. +@property(readwrite, nonatomic) NSUInteger downsamplingFactor; + +// Initialization and teardown +- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; +- (void)initializeSecondaryAttributes; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m new file mode 100755 index 00000000..bb7acce7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m @@ -0,0 +1,341 @@ +#import "GPUImageHistogramFilter.h" + +// Unlike other filters, this one uses a grid of GL_POINTs to sample the incoming image in a grid. A custom vertex shader reads the color in the texture at its position +// and outputs a bin position in the final histogram as the vertex position. That point is then written into the image of the histogram using translucent pixels. +// The degree of translucency is controlled by the scalingFactor, which lets you adjust the dynamic range of the histogram. The histogram can only be generated for one +// color channel or luminance value at a time. +// +// This is based on this implementation: http://www.shaderwrangler.com/publications/histogram/histogram_cameraready.pdf +// +// Or at least that's how it would work if iOS could read from textures in a vertex shader, which it can't. Therefore, I read the texture data down from the +// incoming frame and process the texture colors as vertices. + +NSString *const kGPUImageRedHistogramSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + varying vec3 colorFactor; + + void main() + { + colorFactor = vec3(1.0, 0.0, 0.0); + gl_Position = vec4(-1.0 + (position.x * 0.0078125), 0.0, 0.0, 1.0); + gl_PointSize = 1.0; + } +); + +NSString *const kGPUImageGreenHistogramSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + varying vec3 colorFactor; + + void main() + { + colorFactor = vec3(0.0, 1.0, 0.0); + gl_Position = vec4(-1.0 + (position.y * 0.0078125), 0.0, 0.0, 1.0); + gl_PointSize = 1.0; + } +); + +NSString *const kGPUImageBlueHistogramSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + varying vec3 colorFactor; + + void main() + { + colorFactor = vec3(0.0, 0.0, 1.0); + gl_Position = vec4(-1.0 + (position.z * 0.0078125), 0.0, 0.0, 1.0); + gl_PointSize = 1.0; + } +); + +NSString *const kGPUImageLuminanceHistogramSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + varying vec3 colorFactor; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + float luminance = dot(position.xyz, W); + + colorFactor = vec3(1.0, 1.0, 1.0); + gl_Position = vec4(-1.0 + (luminance * 0.0078125), 0.0, 0.0, 1.0); + gl_PointSize = 1.0; + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHistogramAccumulationFragmentShaderString = SHADER_STRING +( + const lowp float scalingFactor = 1.0 / 256.0; + + varying lowp vec3 colorFactor; + + void main() + { + gl_FragColor = vec4(colorFactor * scalingFactor , 1.0); + } +); +#else +NSString *const kGPUImageHistogramAccumulationFragmentShaderString = SHADER_STRING +( + const float scalingFactor = 1.0 / 256.0; + + varying vec3 colorFactor; + + void main() + { + gl_FragColor = vec4(colorFactor * scalingFactor , 1.0); + } +); +#endif + +@implementation GPUImageHistogramFilter + +@synthesize downsamplingFactor = _downsamplingFactor; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; +{ + switch (newHistogramType) + { + case kGPUImageHistogramRed: + { + if (!(self = [super initWithVertexShaderFromString:kGPUImageRedHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) + { + return nil; + } + }; break; + case kGPUImageHistogramGreen: + { + if (!(self = [super initWithVertexShaderFromString:kGPUImageGreenHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) + { + return nil; + } + }; break; + case kGPUImageHistogramBlue: + { + if (!(self = [super initWithVertexShaderFromString:kGPUImageBlueHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) + { + return nil; + } + }; break; + case kGPUImageHistogramLuminance: + { + if (!(self = [super initWithVertexShaderFromString:kGPUImageLuminanceHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) + { + return nil; + } + }; break; + case kGPUImageHistogramRGB: + { + if (!(self = [super initWithVertexShaderFromString:kGPUImageRedHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) + { + return nil; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageGreenHistogramSamplingVertexShaderString fragmentShaderString:kGPUImageHistogramAccumulationFragmentShaderString]; + thirdFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageBlueHistogramSamplingVertexShaderString fragmentShaderString:kGPUImageHistogramAccumulationFragmentShaderString]; + + if (!secondFilterProgram.initialized) + { + [self initializeSecondaryAttributes]; + + if (![secondFilterProgram link]) + { + NSString *progLog = [secondFilterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [secondFilterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [secondFilterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + filterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + + } + + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + + glEnableVertexAttribArray(secondFilterPositionAttribute); + + if (![thirdFilterProgram link]) + { + NSString *progLog = [secondFilterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [secondFilterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [secondFilterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + filterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; + + + thirdFilterPositionAttribute = [thirdFilterProgram attributeIndex:@"position"]; + [GPUImageContext setActiveShaderProgram:thirdFilterProgram]; + + glEnableVertexAttribArray(thirdFilterPositionAttribute); + }); + }; break; + } + + histogramType = newHistogramType; + + self.downsamplingFactor = 16; + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithHistogramType:kGPUImageHistogramRGB])) + { + return nil; + } + + return self; +} + +- (void)initializeSecondaryAttributes; +{ + [secondFilterProgram addAttribute:@"position"]; + [thirdFilterProgram addAttribute:@"position"]; +} + +- (void)dealloc; +{ + if (vertexSamplingCoordinates != NULL && ![GPUImageContext supportsFastTextureUpload]) + { + free(vertexSamplingCoordinates); + } +} + +#pragma mark - +#pragma mark Rendering + +- (CGSize)sizeOfFBO; +{ + return CGSizeMake(256.0, 3.0); +} + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + [self renderToTextureWithVertices:NULL textureCoordinates:NULL]; + + [self informTargetsAboutNewFrameAtTime:frameTime]; +} + +- (CGSize)outputFrameSize; +{ + return [self sizeOfFBO]; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (self.preventRendering) + { + return; + } + + inputTextureSize = newSize; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + inputRotation = kGPUImageNoRotation; +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // we need a normal color texture for this filter + NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); + NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + [GPUImageContext useImageProcessingContext]; + + if ([GPUImageContext supportsFastTextureUpload]) + { + glFinish(); + vertexSamplingCoordinates = [firstInputFramebuffer byteBuffer]; + } else { + if (vertexSamplingCoordinates == NULL) + { + vertexSamplingCoordinates = calloc(inputTextureSize.width * inputTextureSize.height * 4, sizeof(GLubyte)); + } + glReadPixels(0, 0, inputTextureSize.width, inputTextureSize.height, GL_RGBA, GL_UNSIGNED_BYTE, vertexSamplingCoordinates); + } + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + glClearColor(0.0, 0.0, 0.0, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + + glBlendEquation(GL_FUNC_ADD); + glBlendFunc(GL_ONE, GL_ONE); + glEnable(GL_BLEND); + + glVertexAttribPointer(filterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); + glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); + + if (histogramType == kGPUImageHistogramRGB) + { + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + + glVertexAttribPointer(secondFilterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); + glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); + + [GPUImageContext setActiveShaderProgram:thirdFilterProgram]; + + glVertexAttribPointer(thirdFilterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); + glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); + } + + glDisable(GL_BLEND); + [firstInputFramebuffer unlock]; + + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +#pragma mark - +#pragma mark Accessors + +//- (void)setScalingFactor:(CGFloat)newValue; +//{ +// _scalingFactor = newValue; +// +// [GPUImageContext useImageProcessingContext]; +// [filterProgram use]; +// glUniform1f(scalingFactorUniform, _scalingFactor); +//} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.h b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.h new file mode 100755 index 00000000..f80c50f3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.h @@ -0,0 +1,8 @@ +#import "GPUImageFilter.h" + +@interface GPUImageHistogramGenerator : GPUImageFilter +{ + GLint backgroundColorUniform; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m new file mode 100755 index 00000000..703795df --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m @@ -0,0 +1,87 @@ +#import "GPUImageHistogramGenerator.h" + +NSString *const kGPUImageHistogramGeneratorVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + varying vec2 textureCoordinate; + varying float height; + + void main() + { + gl_Position = position; + textureCoordinate = vec2(inputTextureCoordinate.x, 0.5); + height = 1.0 - inputTextureCoordinate.y; + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHistogramGeneratorFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp float height; + + uniform sampler2D inputImageTexture; + uniform lowp vec4 backgroundColor; + + void main() + { + lowp vec3 colorChannels = texture2D(inputImageTexture, textureCoordinate).rgb; + lowp vec4 heightTest = vec4(step(height, colorChannels), 1.0); + gl_FragColor = mix(backgroundColor, heightTest, heightTest.r + heightTest.g + heightTest.b); + } +); +#else +NSString *const kGPUImageHistogramGeneratorFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying float height; + + uniform sampler2D inputImageTexture; + uniform vec4 backgroundColor; + + void main() + { + vec3 colorChannels = texture2D(inputImageTexture, textureCoordinate).rgb; + vec4 heightTest = vec4(step(height, colorChannels), 1.0); + gl_FragColor = mix(backgroundColor, heightTest, heightTest.r + heightTest.g + heightTest.b); + } +); +#endif + +@implementation GPUImageHistogramGenerator + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageHistogramGeneratorVertexShaderString fragmentShaderFromString:kGPUImageHistogramGeneratorFragmentShaderString])) + { + return nil; + } + + backgroundColorUniform = [filterProgram uniformIndex:@"backgroundColor"]; + + [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:0.0]; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +{ +// GLfloat backgroundColor[4]; +// backgroundColor[0] = redComponent; +// backgroundColor[1] = greenComponent; +// backgroundColor[2] = blueComponent; +// backgroundColor[3] = alphaComponent; + GPUVector4 backgroundColor = {redComponent, greenComponent, blueComponent, alphaComponent}; + + [self setVec4:backgroundColor forUniform:backgroundColorUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.h b/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.h new file mode 100644 index 00000000..3ab6977f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.h @@ -0,0 +1,49 @@ +#import "GPUImageFilterGroup.h" +#import "GPUImageThresholdEdgeDetectionFilter.h" +#import "GPUImageParallelCoordinateLineTransformFilter.h" +#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" +#import "GPUImageCannyEdgeDetectionFilter.h" + +// This applies a Hough transform to detect lines in a scene. It starts with a thresholded Sobel edge detection pass, +// then takes those edge points in and applies a Hough transform to convert them to lines. The intersection of these lines +// is then determined via blending and accumulation, and a non-maximum suppression filter is applied to find local maxima. +// These local maxima are then converted back into lines in normal space and returned via a callback block. +// +// Rather than using one of the standard Hough transform types, this filter uses parallel coordinate space which is far more efficient +// to rasterize on a GPU. +// +// This approach is based entirely on the PC lines process developed by the Graph@FIT research group at the Brno University of Technology +// and described in their publications: +// +// M. Dubská, J. Havel, and A. Herout. Real-Time Detection of Lines using Parallel Coordinates and OpenGL. Proceedings of SCCG 2011, Bratislava, SK, p. 7. +// http://medusa.fit.vutbr.cz/public/data/papers/2011-SCCG-Dubska-Real-Time-Line-Detection-Using-PC-and-OpenGL.pdf +// M. Dubská, J. Havel, and A. Herout. PClines — Line detection using parallel coordinates. 2011 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), p. 1489- 1494. +// http://medusa.fit.vutbr.cz/public/data/papers/2011-CVPR-Dubska-PClines.pdf + +//#define DEBUGLINEDETECTION + +@interface GPUImageHoughTransformLineDetector : GPUImageFilterGroup +{ + GPUImageOutput *thresholdEdgeDetectionFilter; + +// GPUImageThresholdEdgeDetectionFilter *thresholdEdgeDetectionFilter; + GPUImageParallelCoordinateLineTransformFilter *parallelCoordinateLineTransformFilter; + GPUImageThresholdedNonMaximumSuppressionFilter *nonMaximumSuppressionFilter; + + GLfloat *linesArray; + GLubyte *rawImagePixels; +} + +// A threshold value for which a point is detected as belonging to an edge for determining lines. Default is 0.9. +@property(readwrite, nonatomic) CGFloat edgeThreshold; + +// A threshold value for which a local maximum is detected as belonging to a line in parallel coordinate space. Default is 0.20. +@property(readwrite, nonatomic) CGFloat lineDetectionThreshold; + +// This block is called on the detection of lines, usually on every processed frame. A C array containing normalized slopes and intercepts in m, b pairs (y=mx+b) is passed in, along with a count of the number of lines detected and the current timestamp of the video frame +@property(nonatomic, copy) void(^linesDetectedBlock)(GLfloat* lineArray, NSUInteger linesDetected, CMTime frameTime); + +// These images are only enabled when built with DEBUGLINEDETECTION defined, and are used to examine the intermediate states of the Hough transform +@property(nonatomic, readonly, strong) NSMutableArray *intermediateImages; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m b/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m new file mode 100644 index 00000000..8289eb80 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m @@ -0,0 +1,241 @@ +#import "GPUImageHoughTransformLineDetector.h" + +@interface GPUImageHoughTransformLineDetector() + +- (void)extractLineParametersFromImageAtFrameTime:(CMTime)frameTime; + +@end + +@implementation GPUImageHoughTransformLineDetector + +@synthesize linesDetectedBlock; +@synthesize edgeThreshold; +@synthesize lineDetectionThreshold; +@synthesize intermediateImages = _intermediateImages; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: do edge detection and threshold that to just have white pixels for edges +// if ([GPUImageContext deviceSupportsFramebufferReads]) +// if ([GPUImageContext deviceSupportsFramebufferReads]) +// { +// thresholdEdgeDetectionFilter = [[GPUImageThresholdEdgeDetectionFilter alloc] init]; +// thresholdEdgeDetectionFilter = [[GPUImageSobelEdgeDetectionFilter alloc] init]; +// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setThreshold:0.07]; +// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setEdgeStrength:0.25]; +// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setEdgeStrength:1.0]; +// thresholdEdgeDetectionFilter = [[GPUImageCannyEdgeDetectionFilter alloc] init]; +// } +// else +// { + thresholdEdgeDetectionFilter = [[GPUImageCannyEdgeDetectionFilter alloc] init]; +// } + [self addFilter:thresholdEdgeDetectionFilter]; + + // Second pass: extract the white points and draw representative lines in parallel coordinate space + parallelCoordinateLineTransformFilter = [[GPUImageParallelCoordinateLineTransformFilter alloc] init]; + [self addFilter:parallelCoordinateLineTransformFilter]; + + // Third pass: apply non-maximum suppression + if ([GPUImageContext deviceSupportsFramebufferReads]) + { + nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] initWithPackedColorspace:YES]; + } + else + { + nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] initWithPackedColorspace:NO]; + } + [self addFilter:nonMaximumSuppressionFilter]; + + __unsafe_unretained GPUImageHoughTransformLineDetector *weakSelf = self; +#ifdef DEBUGLINEDETECTION + _intermediateImages = [[NSMutableArray alloc] init]; + __unsafe_unretained NSMutableArray *weakIntermediateImages = _intermediateImages; + +// __unsafe_unretained GPUImageOutput *weakEdgeDetectionFilter = thresholdEdgeDetectionFilter; +// [thresholdEdgeDetectionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ +// [weakIntermediateImages removeAllObjects]; +// UIImage *intermediateImage = [weakEdgeDetectionFilter imageFromCurrentFramebuffer]; +// [weakIntermediateImages addObject:intermediateImage]; +// }]; +// +// __unsafe_unretained GPUImageOutput *weakParallelCoordinateLineTransformFilter = parallelCoordinateLineTransformFilter; +// [parallelCoordinateLineTransformFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ +// UIImage *intermediateImage = [weakParallelCoordinateLineTransformFilter imageFromCurrentFramebuffer]; +// [weakIntermediateImages addObject:intermediateImage]; +// }]; + + __unsafe_unretained GPUImageOutput *weakNonMaximumSuppressionFilter = nonMaximumSuppressionFilter; + [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ + UIImage *intermediateImage = [weakNonMaximumSuppressionFilter imageFromCurrentFramebuffer]; + [weakIntermediateImages addObject:intermediateImage]; + + [weakSelf extractLineParametersFromImageAtFrameTime:frameTime]; + }]; +#else + [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { + [weakSelf extractLineParametersFromImageAtFrameTime:frameTime]; + }]; +#endif + + [thresholdEdgeDetectionFilter addTarget:parallelCoordinateLineTransformFilter]; + [parallelCoordinateLineTransformFilter addTarget:nonMaximumSuppressionFilter]; + + self.initialFilters = [NSArray arrayWithObjects:thresholdEdgeDetectionFilter, nil]; + // self.terminalFilter = colorPackingFilter; + self.terminalFilter = nonMaximumSuppressionFilter; + +// self.edgeThreshold = 0.95; + self.lineDetectionThreshold = 0.12; + + return self; +} + +- (void)dealloc; +{ + free(rawImagePixels); + free(linesArray); +} + +#pragma mark - +#pragma mark Corner extraction + +- (void)extractLineParametersFromImageAtFrameTime:(CMTime)frameTime; +{ + // we need a normal color texture for this filter + NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); + NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + NSUInteger numberOfLines = 0; + CGSize imageSize = nonMaximumSuppressionFilter.outputFrameSize; + + unsigned int imageByteSize = imageSize.width * imageSize.height * 4; + + if (rawImagePixels == NULL) + { + rawImagePixels = (GLubyte *)malloc(imageByteSize); + linesArray = calloc(1024 * 2, sizeof(GLfloat)); + } + + glReadPixels(0, 0, (int)imageSize.width, (int)imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); + +// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + + unsigned int imageWidth = imageSize.width * 4; + + unsigned int currentByte = 0; + unsigned int cornerStorageIndex = 0; + unsigned long lineStrengthCounter = 0; + while (currentByte < imageByteSize) + { + GLubyte colorByte = rawImagePixels[currentByte]; +// NSLog(@"(%d,%d): [%d,%d,%d,%d]", xCoordinate, yCoordinate, rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); +// NSLog(@"[%d,%d,%d,%d]", rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); + + if (colorByte > 0) + { + unsigned int xCoordinate = currentByte % imageWidth; + unsigned int yCoordinate = currentByte / imageWidth; + + lineStrengthCounter += colorByte; +// NSLog(@"(%d,%d): [%d,%d,%d,%d]", xCoordinate, yCoordinate, rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); + + CGFloat normalizedXCoordinate = -1.0 + 2.0 * (CGFloat)(xCoordinate / 4) / imageSize.width; + CGFloat normalizedYCoordinate = -1.0 + 2.0 * (CGFloat)(yCoordinate) / imageSize.height; + + if (normalizedXCoordinate < 0.0) + { + // T space + // m = -1 - d/u + // b = d * v/u + if (normalizedXCoordinate > -0.05) // Test for the case right near the X axis, stamp the X intercept instead of the Y + { + linesArray[cornerStorageIndex++] = 100000.0; + linesArray[cornerStorageIndex++] = normalizedYCoordinate; + } + else + { + linesArray[cornerStorageIndex++] = -1.0 - 1.0 / normalizedXCoordinate; + linesArray[cornerStorageIndex++] = 1.0 * normalizedYCoordinate / normalizedXCoordinate; + } + } + else + { + // S space + // m = 1 - d/u + // b = d * v/u + if (normalizedXCoordinate < 0.05) // Test for the case right near the X axis, stamp the X intercept instead of the Y + { + linesArray[cornerStorageIndex++] = 100000.0; + linesArray[cornerStorageIndex++] = normalizedYCoordinate; + } + else + { + linesArray[cornerStorageIndex++] = 1.0 - 1.0 / normalizedXCoordinate; + linesArray[cornerStorageIndex++] = 1.0 * normalizedYCoordinate / normalizedXCoordinate; + } + } + + numberOfLines++; + + numberOfLines = MIN(numberOfLines, 1023); + cornerStorageIndex = MIN(cornerStorageIndex, 2040); + } + currentByte +=4; + } + +// CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); +// NSLog(@"Processing time : %f ms", 1000.0 * currentFrameTime); + + if (linesDetectedBlock != NULL) + { + linesDetectedBlock(linesArray, numberOfLines, frameTime); + } +} + +- (BOOL)wantsMonochromeInput; +{ +// return YES; + return NO; +} + +#pragma mark - +#pragma mark Accessors + +//- (void)setEdgeThreshold:(CGFloat)newValue; +//{ +// [(GPUImageCannyEdgeDetectionFilter *)thresholdEdgeDetectionFilter setThreshold:newValue]; +//} +// +//- (CGFloat)edgeThreshold; +//{ +// return [(GPUImageCannyEdgeDetectionFilter *)thresholdEdgeDetectionFilter threshold]; +//} + +- (void)setLineDetectionThreshold:(CGFloat)newValue; +{ + nonMaximumSuppressionFilter.threshold = newValue; +} + +- (CGFloat)lineDetectionThreshold; +{ + return nonMaximumSuppressionFilter.threshold; +} + +#ifdef DEBUGLINEDETECTION +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ +// [thresholdEdgeDetectionFilter useNextFrameForImageCapture]; +// [parallelCoordinateLineTransformFilter useNextFrameForImageCapture]; + [nonMaximumSuppressionFilter useNextFrameForImageCapture]; + + [super newFrameReadyAtTime:frameTime atIndex:textureIndex]; +} +#endif + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.h new file mode 100644 index 00000000..4399ffcf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageHueBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m new file mode 100644 index 00000000..f9dfbbb8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m @@ -0,0 +1,212 @@ +#import "GPUImageHueBlendFilter.h" + +/** + * Hue blend mode based upon pseudo code from the PDF specification. + */ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHueBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + highp float lum(lowp vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + lowp vec3 clipcolor(lowp vec3 c) { + highp float l = lum(c); + lowp float n = min(min(c.r, c.g), c.b); + lowp float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + lowp vec3 setlum(lowp vec3 c, highp float l) { + highp float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + highp float sat(lowp vec3 c) { + lowp float n = min(min(c.r, c.g), c.b); + lowp float x = max(max(c.r, c.g), c.b); + return x - n; + } + + lowp float mid(lowp float cmin, lowp float cmid, lowp float cmax, highp float s) { + return ((cmid - cmin) * s) / (cmax - cmin); + } + + lowp vec3 setsat(lowp vec3 c, highp float s) { + if (c.r > c.g) { + if (c.r > c.b) { + if (c.g > c.b) { + /* g is mid, b is min */ + c.g = mid(c.b, c.g, c.r, s); + c.b = 0.0; + } else { + /* b is mid, g is min */ + c.b = mid(c.g, c.b, c.r, s); + c.g = 0.0; + } + c.r = s; + } else { + /* b is max, r is mid, g is min */ + c.r = mid(c.g, c.r, c.b, s); + c.b = s; + c.r = 0.0; + } + } else if (c.r > c.b) { + /* g is max, r is mid, b is min */ + c.r = mid(c.b, c.r, c.g, s); + c.g = s; + c.b = 0.0; + } else if (c.g > c.b) { + /* g is max, b is mid, r is min */ + c.b = mid(c.r, c.b, c.g, s); + c.g = s; + c.r = 0.0; + } else if (c.b > c.g) { + /* b is max, g is mid, r is min */ + c.g = mid(c.r, c.g, c.b, s); + c.b = s; + c.r = 0.0; + } else { + c = vec3(0.0); + } + return c; + } + + void main() + { + highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(overlayColor.rgb, sat(baseColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#else +NSString *const kGPUImageHueBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + float lum(vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + vec3 clipcolor(vec3 c) { + float l = lum(c); + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + vec3 setlum(vec3 c, float l) { + float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + float sat(vec3 c) { + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + return x - n; + } + + float mid(float cmin, float cmid, float cmax, float s) { + return ((cmid - cmin) * s) / (cmax - cmin); + } + + vec3 setsat(vec3 c, float s) { + if (c.r > c.g) { + if (c.r > c.b) { + if (c.g > c.b) { + /* g is mid, b is min */ + c.g = mid(c.b, c.g, c.r, s); + c.b = 0.0; + } else { + /* b is mid, g is min */ + c.b = mid(c.g, c.b, c.r, s); + c.g = 0.0; + } + c.r = s; + } else { + /* b is max, r is mid, g is min */ + c.r = mid(c.g, c.r, c.b, s); + c.b = s; + c.r = 0.0; + } + } else if (c.r > c.b) { + /* g is max, r is mid, b is min */ + c.r = mid(c.b, c.r, c.g, s); + c.g = s; + c.b = 0.0; + } else if (c.g > c.b) { + /* g is max, b is mid, r is min */ + c.b = mid(c.r, c.b, c.g, s); + c.g = s; + c.r = 0.0; + } else if (c.b > c.g) { + /* b is max, g is mid, r is min */ + c.g = mid(c.r, c.g, c.b, s); + c.b = s; + c.r = 0.0; + } else { + c = vec3(0.0); + } + return c; + } + + void main() + { + vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(overlayColor.rgb, sat(baseColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#endif + +@implementation GPUImageHueBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageHueBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h new file mode 100644 index 00000000..eef24651 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h @@ -0,0 +1,11 @@ + +#import "GPUImageFilter.h" + +@interface GPUImageHueFilter : GPUImageFilter +{ + GLint hueAdjustUniform; + +} +@property (nonatomic, readwrite) CGFloat hue; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m new file mode 100644 index 00000000..5b42c86d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m @@ -0,0 +1,123 @@ + +#import "GPUImageHueFilter.h" + +// Adapted from http://stackoverflow.com/questions/9234724/how-to-change-hue-of-a-texture-with-glsl - see for code and discussion +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHueFragmentShaderString = SHADER_STRING +( + precision highp float; + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform mediump float hueAdjust; + const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); + const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); + const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); + + const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); + const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); + const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); + + void main () + { + // Sample the input pixel + highp vec4 color = texture2D(inputImageTexture, textureCoordinate); + + // Convert to YIQ + highp float YPrime = dot (color, kRGBToYPrime); + highp float I = dot (color, kRGBToI); + highp float Q = dot (color, kRGBToQ); + + // Calculate the hue and chroma + highp float hue = atan (Q, I); + highp float chroma = sqrt (I * I + Q * Q); + + // Make the user's adjustments + hue += (-hueAdjust); //why negative rotation? + + // Convert back to YIQ + Q = chroma * sin (hue); + I = chroma * cos (hue); + + // Convert back to RGB + highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0); + color.r = dot (yIQ, kYIQToR); + color.g = dot (yIQ, kYIQToG); + color.b = dot (yIQ, kYIQToB); + + // Save the result + gl_FragColor = color; + } +); +#else +NSString *const kGPUImageHueFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float hueAdjust; + const vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); + const vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); + const vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); + + const vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); + const vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); + const vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); + + void main () + { + // Sample the input pixel + vec4 color = texture2D(inputImageTexture, textureCoordinate); + + // Convert to YIQ + float YPrime = dot (color, kRGBToYPrime); + float I = dot (color, kRGBToI); + float Q = dot (color, kRGBToQ); + + // Calculate the hue and chroma + float hue = atan (Q, I); + float chroma = sqrt (I * I + Q * Q); + + // Make the user's adjustments + hue += (-hueAdjust); //why negative rotation? + + // Convert back to YIQ + Q = chroma * sin (hue); + I = chroma * cos (hue); + + // Convert back to RGB + vec4 yIQ = vec4 (YPrime, I, Q, 0.0); + color.r = dot (yIQ, kYIQToR); + color.g = dot (yIQ, kYIQToG); + color.b = dot (yIQ, kYIQToB); + + // Save the result + gl_FragColor = color; + } +); +#endif + +@implementation GPUImageHueFilter +@synthesize hue; + +- (id)init +{ + if(! (self = [super initWithFragmentShaderFromString:kGPUImageHueFragmentShaderString]) ) + { + return nil; + } + + hueAdjustUniform = [filterProgram uniformIndex:@"hueAdjust"]; + self.hue = 90; + + return self; +} + +- (void)setHue:(CGFloat)newHue +{ + // Convert degrees to radians for hue rotation + hue = fmodf(newHue, 360.0) * M_PI/180; + [self setFloat:hue forUniform:hueAdjustUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.h new file mode 100644 index 00000000..4c50cc37 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilter.h" + +@interface GPUImageJFAVoronoiFilter : GPUImageFilter +{ + GLuint secondFilterOutputTexture; + GLuint secondFilterFramebuffer; + + + GLint sampleStepUniform; + GLint sizeUniform; + NSUInteger numPasses; + +} + +@property (nonatomic, readwrite) CGSize sizeInPixels; + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m new file mode 100644 index 00000000..15835917 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m @@ -0,0 +1,446 @@ +// adapted from unitzeroone - http://unitzeroone.com/labs/jfavoronoi/ + +#import "GPUImageJFAVoronoiFilter.h" + +// The shaders are mostly taken from UnitZeroOne's WebGL example here: +// http://unitzeroone.com/blog/2011/03/22/jump-flood-voronoi-for-webgl/ + +NSString *const kGPUImageJFAVoronoiVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform float sampleStep; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 widthStep = vec2(sampleStep, 0.0); + vec2 heightStep = vec2(0.0, sampleStep); + vec2 widthHeightStep = vec2(sampleStep); + vec2 widthNegativeHeightStep = vec2(sampleStep, -sampleStep); + + textureCoordinate = inputTextureCoordinate.xy; + leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; + rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; + + topTextureCoordinate = inputTextureCoordinate.xy - heightStep; + topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep; + topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep; + + bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; + bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep; + bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep; + } + ); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageJFAVoronoiFragmentShaderString = SHADER_STRING +( + + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform vec2 size; + //varying vec2 textureCoordinate; + //uniform float sampleStep; + + vec2 getCoordFromColor(vec4 color) +{ + float z = color.z * 256.0; + float yoff = floor(z / 8.0); + float xoff = mod(z, 8.0); + float x = color.x*256.0 + xoff*256.0; + float y = color.y*256.0 + yoff*256.0; + return vec2(x,y) / size; +} + + void main(void) { + + vec2 sub; + vec4 dst; + vec4 local = texture2D(inputImageTexture, textureCoordinate); + vec4 sam; + float l; + float smallestDist; + if(local.a == 0.0){ + + smallestDist = dot(1.0,1.0); + }else{ + sub = getCoordFromColor(local)-textureCoordinate; + smallestDist = dot(sub,sub); + } + dst = local; + + + sam = texture2D(inputImageTexture, topRightTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, topTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, topLeftTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, bottomRightTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, bottomTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, bottomLeftTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, leftTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, rightTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + gl_FragColor = dst; + } +); +#else +NSString *const kGPUImageJFAVoronoiFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform vec2 size; + //varying vec2 textureCoordinate; + //uniform float sampleStep; + + vec2 getCoordFromColor(vec4 color) +{ + float z = color.z * 256.0; + float yoff = floor(z / 8.0); + float xoff = mod(z, 8.0); + float x = color.x*256.0 + xoff*256.0; + float y = color.y*256.0 + yoff*256.0; + return vec2(x,y) / size; +} + + void main(void) { + + vec2 sub; + vec4 dst; + vec4 local = texture2D(inputImageTexture, textureCoordinate); + vec4 sam; + float l; + float smallestDist; + if(local.a == 0.0){ + + smallestDist = dot(1.0,1.0); + }else{ + sub = getCoordFromColor(local)-textureCoordinate; + smallestDist = dot(sub,sub); + } + dst = local; + + + sam = texture2D(inputImageTexture, topRightTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, topTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, topLeftTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, bottomRightTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, bottomTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, bottomLeftTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, leftTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + + sam = texture2D(inputImageTexture, rightTextureCoordinate); + if(sam.a == 1.0){ + sub = (getCoordFromColor(sam)-textureCoordinate); + l = dot(sub,sub); + if(l < smallestDist){ + smallestDist = l; + dst = sam; + } + } + gl_FragColor = dst; + } +); +#endif + +@interface GPUImageJFAVoronoiFilter() { + int currentPass; +} + + +@end + +@implementation GPUImageJFAVoronoiFilter + +@synthesize sizeInPixels = _sizeInPixels; + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageJFAVoronoiVertexShaderString fragmentShaderFromString:kGPUImageJFAVoronoiFragmentShaderString])) + { + + NSLog(@"nil returned"); + return nil; + + } + + sampleStepUniform = [filterProgram uniformIndex:@"sampleStep"]; + sizeUniform = [filterProgram uniformIndex:@"size"]; + //[self disableSecondFrameCheck]; + + return self; +} + +-(void)setSizeInPixels:(CGSize)sizeInPixels { + _sizeInPixels = sizeInPixels; + + //validate that it's a power of 2 + + float width = log2(sizeInPixels.width); + float height = log2(sizeInPixels.height); + + if (width != height) { + NSLog(@"Voronoi point texture must be square"); + return; + } + if (width != floor(width) || height != floor(height)) { + NSLog(@"Voronoi point texture must be a power of 2. Texture size: %f, %f", sizeInPixels.width, sizeInPixels.height); + return; + } + glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); +} + +#pragma mark - +#pragma mark Managing the display FBOs + +-(NSUInteger)nextPowerOfTwo:(CGPoint)input { + NSUInteger val; + if (input.x > input.y) { + val = (NSUInteger)input.x; + } else { + val = (NSUInteger)input.y; + } + + val--; + val = (val >> 1) | val; + val = (val >> 2) | val; + val = (val >> 4) | val; + val = (val >> 8) | val; + val = (val >> 16) | val; + val++; + return val; +} + +//- (void)setOutputFBO; +//{ +// if (currentPass % 2 == 1) { +// [self setSecondFilterFBO]; +// } else { +// [self setFilterFBO]; +// } +// +//} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // Run the first stage of the two-pass filter + [GPUImageContext setActiveShaderProgram:filterProgram]; + currentPass = 0; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glActiveTexture(GL_TEXTURE2); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glUniform1f(sampleStepUniform, 0.5); + + glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); + + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + + glUniform1i(filterInputTextureUniform, 2); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + for (int pass = 1; pass <= numPasses + 1; pass++) { + currentPass = pass; +// [self setOutputFBO]; + + //glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + if (pass % 2 == 0) { + glBindTexture(GL_TEXTURE_2D, secondFilterOutputTexture); + } else { + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + } + glUniform1i(filterInputTextureUniform, 2); + + float step = pow(2.0, numPasses - pass) / pow(2.0, numPasses); + glUniform1f(sampleStepUniform, step); + glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.h new file mode 100755 index 00000000..4fb0bce8 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +/** Kuwahara image abstraction, drawn from the work of Kyprianidis, et. al. in their publication "Anisotropic Kuwahara Filtering on the GPU" within the GPU Pro collection. This produces an oil-painting-like image, but it is extremely computationally expensive, so it can take seconds to render a frame on an iPad 2. This might be best used for still images. + */ +@interface GPUImageKuwaharaFilter : GPUImageFilter +{ + GLint radiusUniform; +} + +/// The radius to sample from when creating the brush-stroke effect, with a default of 3. The larger the radius, the slower the filter. +@property(readwrite, nonatomic) NSUInteger radius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m new file mode 100755 index 00000000..9061dbf3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m @@ -0,0 +1,223 @@ +#import "GPUImageKuwaharaFilter.h" + +// Sourced from Kyprianidis, J. E., Kang, H., and Doellner, J. "Anisotropic Kuwahara Filtering on the GPU," GPU Pro p.247 (2010). +// +// Original header: +// +// Anisotropic Kuwahara Filtering on the GPU +// by Jan Eric Kyprianidis + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform int radius; + + precision highp float; + + const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); + + void main (void) + { + vec2 uv = textureCoordinate; + float n = float((radius + 1) * (radius + 1)); + int i; int j; + vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); + vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); + vec3 c; + + for (j = -radius; j <= 0; ++j) { + for (i = -radius; i <= 0; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m0 += c; + s0 += c * c; + } + } + + for (j = -radius; j <= 0; ++j) { + for (i = 0; i <= radius; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m1 += c; + s1 += c * c; + } + } + + for (j = 0; j <= radius; ++j) { + for (i = 0; i <= radius; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m2 += c; + s2 += c * c; + } + } + + for (j = 0; j <= radius; ++j) { + for (i = -radius; i <= 0; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m3 += c; + s3 += c * c; + } + } + + + float min_sigma2 = 1e+2; + m0 /= n; + s0 = abs(s0 / n - m0 * m0); + + float sigma2 = s0.r + s0.g + s0.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m0, 1.0); + } + + m1 /= n; + s1 = abs(s1 / n - m1 * m1); + + sigma2 = s1.r + s1.g + s1.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m1, 1.0); + } + + m2 /= n; + s2 = abs(s2 / n - m2 * m2); + + sigma2 = s2.r + s2.g + s2.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m2, 1.0); + } + + m3 /= n; + s3 = abs(s3 / n - m3 * m3); + + sigma2 = s3.r + s3.g + s3.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m3, 1.0); + } + } +); +#else +NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform int radius; + + const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); + + void main (void) + { + vec2 uv = textureCoordinate; + float n = float((radius + 1) * (radius + 1)); + int i; int j; + vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); + vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); + vec3 c; + + for (j = -radius; j <= 0; ++j) { + for (i = -radius; i <= 0; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m0 += c; + s0 += c * c; + } + } + + for (j = -radius; j <= 0; ++j) { + for (i = 0; i <= radius; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m1 += c; + s1 += c * c; + } + } + + for (j = 0; j <= radius; ++j) { + for (i = 0; i <= radius; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m2 += c; + s2 += c * c; + } + } + + for (j = 0; j <= radius; ++j) { + for (i = -radius; i <= 0; ++i) { + c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; + m3 += c; + s3 += c * c; + } + } + + + float min_sigma2 = 1e+2; + m0 /= n; + s0 = abs(s0 / n - m0 * m0); + + float sigma2 = s0.r + s0.g + s0.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m0, 1.0); + } + + m1 /= n; + s1 = abs(s1 / n - m1 * m1); + + sigma2 = s1.r + s1.g + s1.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m1, 1.0); + } + + m2 /= n; + s2 = abs(s2 / n - m2 * m2); + + sigma2 = s2.r + s2.g + s2.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m2, 1.0); + } + + m3 /= n; + s3 = abs(s3 / n - m3 * m3); + + sigma2 = s3.r + s3.g + s3.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m3, 1.0); + } + } +); +#endif + +@implementation GPUImageKuwaharaFilter + +@synthesize radius = _radius; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageKuwaharaFragmentShaderString])) + { + return nil; + } + + radiusUniform = [filterProgram uniformIndex:@"radius"]; + + self.radius = 3; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setRadius:(NSUInteger)newValue; +{ + _radius = newValue; + + [self setInteger:(GLint)_radius forUniform:radiusUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.h b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.h new file mode 100644 index 00000000..c4591b81 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.h @@ -0,0 +1,8 @@ +// +// GPUImageKuwaharaRadius3Filter.h + +#import "GPUImageFilter.h" + +@interface GPUImageKuwaharaRadius3Filter : GPUImageFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m new file mode 100644 index 00000000..98b092c6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m @@ -0,0 +1,547 @@ +#import "GPUImageKuwaharaRadius3Filter.h" + +// Sourced from Kyprianidis, J. E., Kang, H., and Doellner, J. "Anisotropic Kuwahara Filtering on the GPU," GPU Pro p.247 (2010). +// +// Original header: +// +// Anisotropic Kuwahara Filtering on the GPU +// by Jan Eric Kyprianidis + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageKuwaharaRadius3FragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + + precision highp float; + + const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); + + void main (void) + { + vec2 uv = textureCoordinate; + float n = float(16); // radius is assumed to be 3 + vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); + vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); + vec3 c; + vec3 cSq; + + c = texture2D(inputImageTexture, uv + vec2(-3,-3) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,-2) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,-1) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(-2,-3) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,-2) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,-1) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(-1,-3) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,-2) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,-1) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(0,-3) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m3 += c; + s3 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,-2) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m3 += c; + s3 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,-1) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m3 += c; + s3 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(-3,3) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,2) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,1) * src_size).rgb; + m1 += c; + s1 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(-2,3) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,2) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,1) * src_size).rgb; + m1 += c; + s1 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(-1,3) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,2) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,1) * src_size).rgb; + m1 += c; + s1 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(0,3) * src_size).rgb; + cSq = c * c; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,2) * src_size).rgb; + cSq = c * c; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,1) * src_size).rgb; + cSq = c * c; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(3,3) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,2) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,1) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,0) * src_size).rgb; + cSq = c * c; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(2,3) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,2) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,1) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,0) * src_size).rgb; + cSq = c * c; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(1,3) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,2) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,1) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,0) * src_size).rgb; + cSq = c * c; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(3,-3) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,-2) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,-1) * src_size).rgb; + m3 += c; + s3 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(2,-3) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,-2) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,-1) * src_size).rgb; + m3 += c; + s3 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(1,-3) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,-2) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,-1) * src_size).rgb; + m3 += c; + s3 += c * c; + + float min_sigma2 = 1e+2; + m0 /= n; + s0 = abs(s0 / n - m0 * m0); + + float sigma2 = s0.r + s0.g + s0.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m0, 1.0); + } + + m1 /= n; + s1 = abs(s1 / n - m1 * m1); + + sigma2 = s1.r + s1.g + s1.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m1, 1.0); + } + + m2 /= n; + s2 = abs(s2 / n - m2 * m2); + + sigma2 = s2.r + s2.g + s2.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m2, 1.0); + } + + m3 /= n; + s3 = abs(s3 / n - m3 * m3); + + sigma2 = s3.r + s3.g + s3.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m3, 1.0); + } + } +); +#else +NSString *const kGPUImageKuwaharaRadius3FragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + + const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); + + void main (void) + { + vec2 uv = textureCoordinate; + float n = float(16); // radius is assumed to be 3 + vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); + vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); + vec3 c; + vec3 cSq; + + c = texture2D(inputImageTexture, uv + vec2(-3,-3) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,-2) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,-1) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(-2,-3) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,-2) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,-1) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(-1,-3) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,-2) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,-1) * src_size).rgb; + m0 += c; + s0 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(0,-3) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m3 += c; + s3 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,-2) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m3 += c; + s3 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,-1) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m3 += c; + s3 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,0) * src_size).rgb; + cSq = c * c; + m0 += c; + s0 += cSq; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(-3,3) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,2) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-3,1) * src_size).rgb; + m1 += c; + s1 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(-2,3) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,2) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-2,1) * src_size).rgb; + m1 += c; + s1 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(-1,3) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,2) * src_size).rgb; + m1 += c; + s1 += c * c; + c = texture2D(inputImageTexture, uv + vec2(-1,1) * src_size).rgb; + m1 += c; + s1 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(0,3) * src_size).rgb; + cSq = c * c; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,2) * src_size).rgb; + cSq = c * c; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + c = texture2D(inputImageTexture, uv + vec2(0,1) * src_size).rgb; + cSq = c * c; + m1 += c; + s1 += cSq; + m2 += c; + s2 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(3,3) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,2) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,1) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,0) * src_size).rgb; + cSq = c * c; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(2,3) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,2) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,1) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,0) * src_size).rgb; + cSq = c * c; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(1,3) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,2) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,1) * src_size).rgb; + m2 += c; + s2 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,0) * src_size).rgb; + cSq = c * c; + m2 += c; + s2 += cSq; + m3 += c; + s3 += cSq; + + c = texture2D(inputImageTexture, uv + vec2(3,-3) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,-2) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(3,-1) * src_size).rgb; + m3 += c; + s3 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(2,-3) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,-2) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(2,-1) * src_size).rgb; + m3 += c; + s3 += c * c; + + c = texture2D(inputImageTexture, uv + vec2(1,-3) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,-2) * src_size).rgb; + m3 += c; + s3 += c * c; + c = texture2D(inputImageTexture, uv + vec2(1,-1) * src_size).rgb; + m3 += c; + s3 += c * c; + + float min_sigma2 = 1e+2; + m0 /= n; + s0 = abs(s0 / n - m0 * m0); + + float sigma2 = s0.r + s0.g + s0.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m0, 1.0); + } + + m1 /= n; + s1 = abs(s1 / n - m1 * m1); + + sigma2 = s1.r + s1.g + s1.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m1, 1.0); + } + + m2 /= n; + s2 = abs(s2 / n - m2 * m2); + + sigma2 = s2.r + s2.g + s2.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m2, 1.0); + } + + m3 /= n; + s3 = abs(s3 / n - m3 * m3); + + sigma2 = s3.r + s3.g + s3.b; + if (sigma2 < min_sigma2) { + min_sigma2 = sigma2; + gl_FragColor = vec4(m3, 1.0); + } + } +); +#endif + +@implementation GPUImageKuwaharaRadius3Filter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageKuwaharaRadius3FragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.h new file mode 100644 index 00000000..5d7409f5 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +@interface GPUImageLanczosResamplingFilter : GPUImageTwoPassTextureSamplingFilter + +@property(readwrite, nonatomic) CGSize originalImageSize; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m new file mode 100644 index 00000000..a655f486 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m @@ -0,0 +1,239 @@ +#import "GPUImageLanczosResamplingFilter.h" + +NSString *const kGPUImageLanczosVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec2 inputTextureCoordinate; + + uniform float texelWidthOffset; + uniform float texelHeightOffset; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepLeftTextureCoordinate; + varying vec2 twoStepsLeftTextureCoordinate; + varying vec2 threeStepsLeftTextureCoordinate; + varying vec2 fourStepsLeftTextureCoordinate; + varying vec2 oneStepRightTextureCoordinate; + varying vec2 twoStepsRightTextureCoordinate; + varying vec2 threeStepsRightTextureCoordinate; + varying vec2 fourStepsRightTextureCoordinate; + + void main() + { + gl_Position = position; + + vec2 firstOffset = vec2(texelWidthOffset, texelHeightOffset); + vec2 secondOffset = vec2(2.0 * texelWidthOffset, 2.0 * texelHeightOffset); + vec2 thirdOffset = vec2(3.0 * texelWidthOffset, 3.0 * texelHeightOffset); + vec2 fourthOffset = vec2(4.0 * texelWidthOffset, 4.0 * texelHeightOffset); + + centerTextureCoordinate = inputTextureCoordinate; + oneStepLeftTextureCoordinate = inputTextureCoordinate - firstOffset; + twoStepsLeftTextureCoordinate = inputTextureCoordinate - secondOffset; + threeStepsLeftTextureCoordinate = inputTextureCoordinate - thirdOffset; + fourStepsLeftTextureCoordinate = inputTextureCoordinate - fourthOffset; + oneStepRightTextureCoordinate = inputTextureCoordinate + firstOffset; + twoStepsRightTextureCoordinate = inputTextureCoordinate + secondOffset; + threeStepsRightTextureCoordinate = inputTextureCoordinate + thirdOffset; + fourStepsRightTextureCoordinate = inputTextureCoordinate + fourthOffset; + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLanczosFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepLeftTextureCoordinate; + varying vec2 twoStepsLeftTextureCoordinate; + varying vec2 threeStepsLeftTextureCoordinate; + varying vec2 fourStepsLeftTextureCoordinate; + varying vec2 oneStepRightTextureCoordinate; + varying vec2 twoStepsRightTextureCoordinate; + varying vec2 threeStepsRightTextureCoordinate; + varying vec2 fourStepsRightTextureCoordinate; + + // sinc(x) * sinc(x/a) = (a * sin(pi * x) * sin(pi * x / a)) / (pi^2 * x^2) + // Assuming a Lanczos constant of 2.0, and scaling values to max out at x = +/- 1.5 + + void main() + { + lowp vec4 fragmentColor = texture2D(inputImageTexture, centerTextureCoordinate) * 0.38026; + + fragmentColor += texture2D(inputImageTexture, oneStepLeftTextureCoordinate) * 0.27667; + fragmentColor += texture2D(inputImageTexture, oneStepRightTextureCoordinate) * 0.27667; + + fragmentColor += texture2D(inputImageTexture, twoStepsLeftTextureCoordinate) * 0.08074; + fragmentColor += texture2D(inputImageTexture, twoStepsRightTextureCoordinate) * 0.08074; + + fragmentColor += texture2D(inputImageTexture, threeStepsLeftTextureCoordinate) * -0.02612; + fragmentColor += texture2D(inputImageTexture, threeStepsRightTextureCoordinate) * -0.02612; + + fragmentColor += texture2D(inputImageTexture, fourStepsLeftTextureCoordinate) * -0.02143; + fragmentColor += texture2D(inputImageTexture, fourStepsRightTextureCoordinate) * -0.02143; + + gl_FragColor = fragmentColor; + } +); +#else +NSString *const kGPUImageLanczosFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepLeftTextureCoordinate; + varying vec2 twoStepsLeftTextureCoordinate; + varying vec2 threeStepsLeftTextureCoordinate; + varying vec2 fourStepsLeftTextureCoordinate; + varying vec2 oneStepRightTextureCoordinate; + varying vec2 twoStepsRightTextureCoordinate; + varying vec2 threeStepsRightTextureCoordinate; + varying vec2 fourStepsRightTextureCoordinate; + + // sinc(x) * sinc(x/a) = (a * sin(pi * x) * sin(pi * x / a)) / (pi^2 * x^2) + // Assuming a Lanczos constant of 2.0, and scaling values to max out at x = +/- 1.5 + + void main() + { + vec4 fragmentColor = texture2D(inputImageTexture, centerTextureCoordinate) * 0.38026; + + fragmentColor += texture2D(inputImageTexture, oneStepLeftTextureCoordinate) * 0.27667; + fragmentColor += texture2D(inputImageTexture, oneStepRightTextureCoordinate) * 0.27667; + + fragmentColor += texture2D(inputImageTexture, twoStepsLeftTextureCoordinate) * 0.08074; + fragmentColor += texture2D(inputImageTexture, twoStepsRightTextureCoordinate) * 0.08074; + + fragmentColor += texture2D(inputImageTexture, threeStepsLeftTextureCoordinate) * -0.02612; + fragmentColor += texture2D(inputImageTexture, threeStepsRightTextureCoordinate) * -0.02612; + + fragmentColor += texture2D(inputImageTexture, fourStepsLeftTextureCoordinate) * -0.02143; + fragmentColor += texture2D(inputImageTexture, fourStepsRightTextureCoordinate) * -0.02143; + + gl_FragColor = fragmentColor; + } +); +#endif + +@implementation GPUImageLanczosResamplingFilter + +@synthesize originalImageSize = _originalImageSize; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageLanczosVertexShaderString firstStageFragmentShaderFromString:kGPUImageLanczosFragmentShaderString secondStageVertexShaderFromString:kGPUImageLanczosVertexShaderString secondStageFragmentShaderFromString:kGPUImageLanczosFragmentShaderString])) + { + return nil; + } + + return self; +} + +// Base texture sampling offset on the input image, not the final size +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + self.originalImageSize = newSize; + [super setInputSize:newSize atIndex:textureIndex]; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + // The first pass through the framebuffer may rotate the inbound image, so need to account for that by changing up the kernel ordering for that pass + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + verticalPassTexelWidthOffset = 1.0 / _originalImageSize.height; + verticalPassTexelHeightOffset = 0.0; + } + else + { + verticalPassTexelWidthOffset = 0.0; + verticalPassTexelHeightOffset = 1.0 / _originalImageSize.height; + } + + horizontalPassTexelWidthOffset = 1.0 / _originalImageSize.width; + horizontalPassTexelHeightOffset = 0.0; + }); +} + + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + CGSize currentFBOSize = [self sizeOfFBO]; + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + currentFBOSize.height = self.originalImageSize.height; + } + else + { + currentFBOSize.width = self.originalImageSize.width; + } + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:currentFBOSize textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + [self setUniformsForProgramAtIndex:0]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + + glUniform1i(filterInputTextureUniform, 2); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + [firstInputFramebuffer unlock]; + + // Run the second stage of the two-pass filter + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, 0); + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, 0); + secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [secondOutputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [secondOutputFramebuffer lock]; + } + + [self setUniformsForProgramAtIndex:1]; + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); + + glUniform1i(secondFilterInputTextureUniform, 3); + + glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + [outputFramebuffer unlock]; + outputFramebuffer = nil; + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.h new file mode 100644 index 00000000..267c1bab --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3ConvolutionFilter.h" + +@interface GPUImageLaplacianFilter : GPUImage3x3ConvolutionFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m new file mode 100644 index 00000000..98b78509 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m @@ -0,0 +1,115 @@ +#import "GPUImageLaplacianFilter.h" +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLaplacianFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + uniform mediump mat3 convolutionMatrix; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + mediump vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + mediump vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + mediump vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + mediump vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + mediump vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + mediump vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + mediump vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + mediump vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + + mediump vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; + resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; + resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; + + // Normalize the results to allow for negative gradients in the 0.0-1.0 colorspace + resultColor = resultColor + 0.5; + + gl_FragColor = vec4(resultColor, centerColor.a); + } +); +#else +NSString *const kGPUImageLaplacianFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + uniform mat3 convolutionMatrix; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + + vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; + resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; + resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; + + // Normalize the results to allow for negative gradients in the 0.0-1.0 colorspace + resultColor = resultColor + 0.5; + + gl_FragColor = vec4(resultColor, centerColor.a); + } +); +#endif + +@implementation GPUImageLaplacianFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLaplacianFragmentShaderString])) + { + return nil; + } + + GPUMatrix3x3 newConvolutionMatrix; + newConvolutionMatrix.one.one = 0.5; + newConvolutionMatrix.one.two = 1.0; + newConvolutionMatrix.one.three = 0.5; + + newConvolutionMatrix.two.one = 1.0; + newConvolutionMatrix.two.two = -6.0; + newConvolutionMatrix.two.three = 1.0; + + newConvolutionMatrix.three.one = 0.5; + newConvolutionMatrix.three.two = 1.0; + newConvolutionMatrix.three.three = 0.5; + + self.convolutionKernel = newConvolutionMatrix; + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.h new file mode 100644 index 00000000..d0948fbf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.h @@ -0,0 +1,45 @@ +#import "GPUImageFilter.h" + +/** + * Levels like Photoshop. + * + * The min, max, minOut and maxOut parameters are floats in the range [0, 1]. + * If you have parameters from Photoshop in the range [0, 255] you must first + * convert them to be [0, 1]. + * The gamma/mid parameter is a float >= 0. This matches the value from Photoshop. + * + * If you want to apply levels to RGB as well as individual channels you need to use + * this filter twice - first for the individual channels and then for all channels. + */ +@interface GPUImageLevelsFilter : GPUImageFilter +{ + GLint minUniform; + GLint midUniform; + GLint maxUniform; + GLint minOutputUniform; + GLint maxOutputUniform; + + GPUVector3 minVector, midVector, maxVector, minOutputVector, maxOutputVector; +} + +/** Set levels for the red channel */ +- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; + +- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; + +/** Set levels for the green channel */ +- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; + +- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; + +/** Set levels for the blue channel */ +- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; + +- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; + +/** Set levels for all channels at once */ +- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut; +- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max; + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m new file mode 100644 index 00000000..158815fd --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m @@ -0,0 +1,152 @@ +#import "GPUImageLevelsFilter.h" + +/* + ** Gamma correction + ** Details: http://blog.mouaif.org/2009/01/22/photoshop-gamma-correction-shader/ + */ + +#define GammaCorrection(color, gamma) pow(color, 1.0 / gamma) + +/* + ** Levels control (input (+gamma), output) + ** Details: http://blog.mouaif.org/2009/01/28/levels-control-shader/ + */ + +#define LevelsControlInputRange(color, minInput, maxInput) min(max(color - minInput, vec3(0.0)) / (maxInput - minInput), vec3(1.0)) +#define LevelsControlInput(color, minInput, gamma, maxInput) GammaCorrection(LevelsControlInputRange(color, minInput, maxInput), gamma) +#define LevelsControlOutputRange(color, minOutput, maxOutput) mix(minOutput, maxOutput, color) +#define LevelsControl(color, minInput, gamma, maxInput, minOutput, maxOutput) LevelsControlOutputRange(LevelsControlInput(color, minInput, gamma, maxInput), minOutput, maxOutput) + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLevelsFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform mediump vec3 levelMinimum; + uniform mediump vec3 levelMiddle; + uniform mediump vec3 levelMaximum; + uniform mediump vec3 minOutput; + uniform mediump vec3 maxOutput; + + void main() + { + mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(LevelsControl(textureColor.rgb, levelMinimum, levelMiddle, levelMaximum, minOutput, maxOutput), textureColor.a); + } +); +#else +NSString *const kGPUImageLevelsFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform vec3 levelMinimum; + uniform vec3 levelMiddle; + uniform vec3 levelMaximum; + uniform vec3 minOutput; + uniform vec3 maxOutput; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(LevelsControl(textureColor.rgb, levelMinimum, levelMiddle, levelMaximum, minOutput, maxOutput), textureColor.a); + } +); +#endif + +@implementation GPUImageLevelsFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLevelsFragmentShaderString])) + { + return nil; + } + + minUniform = [filterProgram uniformIndex:@"levelMinimum"]; + midUniform = [filterProgram uniformIndex:@"levelMiddle"]; + maxUniform = [filterProgram uniformIndex:@"levelMaximum"]; + minOutputUniform = [filterProgram uniformIndex:@"minOutput"]; + maxOutputUniform = [filterProgram uniformIndex:@"maxOutput"]; + + [self setRedMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; + [self setGreenMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; + [self setBlueMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; + + return self; +} + +#pragma mark - +#pragma mark Helpers + +- (void)updateUniforms { + [self setVec3:minVector forUniform:minUniform program:filterProgram]; + [self setVec3:midVector forUniform:midUniform program:filterProgram]; + [self setVec3:maxVector forUniform:maxUniform program:filterProgram]; + [self setVec3:minOutputVector forUniform:minOutputUniform program:filterProgram]; + [self setVec3:maxOutputVector forUniform:maxOutputUniform program:filterProgram]; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { + [self setRedMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; + [self setGreenMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; + [self setBlueMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; +} + +- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { + [self setMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; +} + +- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { + minVector.one = min; + midVector.one = mid; + maxVector.one = max; + minOutputVector.one = minOut; + maxOutputVector.one = maxOut; + + [self updateUniforms]; +} + +- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { + [self setRedMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; +} + +- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { + minVector.two = min; + midVector.two = mid; + maxVector.two = max; + minOutputVector.two = minOut; + maxOutputVector.two = maxOut; + + [self updateUniforms]; +} + +- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { + [self setGreenMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; +} + +- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { + minVector.three = min; + midVector.three = mid; + maxVector.three = max; + minOutputVector.three = minOut; + maxOutputVector.three = maxOut; + + [self updateUniforms]; +} + +- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { + [self setBlueMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.h new file mode 100755 index 00000000..b0287c13 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.h @@ -0,0 +1,8 @@ +#import "GPUImageTwoInputFilter.h" + +/// Blends two images by taking the maximum value of each color component between the images +@interface GPUImageLightenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m new file mode 100755 index 00000000..2bbd4b20 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m @@ -0,0 +1,52 @@ +#import "GPUImageLightenBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLightenBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = max(textureColor, textureColor2); + } +); +#else +NSString *const kGPUImageLightenBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = max(textureColor, textureColor2); + } + ); +#endif + +@implementation GPUImageLightenBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLightenBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.h b/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.h new file mode 100644 index 00000000..4c467366 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.h @@ -0,0 +1,18 @@ +#import "GPUImageFilter.h" + +@interface GPUImageLineGenerator : GPUImageFilter +{ + GLint lineWidthUniform, lineColorUniform; + GLfloat *lineCoordinates; +} + +// The width of the displayed lines, in pixels. The default is 1. +@property(readwrite, nonatomic) CGFloat lineWidth; + +// The color of the lines is specified using individual red, green, and blue components (normalized to 1.0). The default is green: (0.0, 1.0, 0.0). +- (void)setLineColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; + +// Rendering +- (void)renderLinesFromArray:(GLfloat *)lineSlopeAndIntercepts count:(NSUInteger)numberOfLines frameTime:(CMTime)frameTime; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m new file mode 100644 index 00000000..85d93bee --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m @@ -0,0 +1,164 @@ +#import "GPUImageLineGenerator.h" + +NSString *const kGPUImageLineGeneratorVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + void main() + { + gl_Position = position; + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLineGeneratorFragmentShaderString = SHADER_STRING +( + uniform lowp vec3 lineColor; + + void main() + { + gl_FragColor = vec4(lineColor, 1.0); + } +); +#else +NSString *const kGPUImageLineGeneratorFragmentShaderString = SHADER_STRING +( + uniform vec3 lineColor; + + void main() + { + gl_FragColor = vec4(lineColor, 1.0); + } +); +#endif + +@interface GPUImageLineGenerator() + +- (void)generateLineCoordinates; + +@end + +@implementation GPUImageLineGenerator + +@synthesize lineWidth = _lineWidth; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageLineGeneratorVertexShaderString fragmentShaderFromString:kGPUImageLineGeneratorFragmentShaderString])) + { + return nil; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + lineWidthUniform = [filterProgram uniformIndex:@"lineWidth"]; + lineColorUniform = [filterProgram uniformIndex:@"lineColor"]; + + self.lineWidth = 1.0; + [self setLineColorRed:0.0 green:1.0 blue:0.0]; + }); + + return self; +} + +- (void)dealloc +{ + if (lineCoordinates) + { + free(lineCoordinates); + } +} + +#pragma mark - +#pragma mark Rendering + +- (void)generateLineCoordinates; +{ + lineCoordinates = calloc(1024 * 4, sizeof(GLfloat)); +} + +- (void)renderLinesFromArray:(GLfloat *)lineSlopeAndIntercepts count:(NSUInteger)numberOfLines frameTime:(CMTime)frameTime; +{ + if (self.preventRendering) + { + return; + } + + if (lineCoordinates == NULL) + { + [self generateLineCoordinates]; + } + + // Iterate through and generate vertices from the slopes and intercepts + NSUInteger currentVertexIndex = 0; + NSUInteger currentLineIndex = 0; + NSUInteger maxLineIndex = numberOfLines *2; + while(currentLineIndex < maxLineIndex) + { + GLfloat slope = lineSlopeAndIntercepts[currentLineIndex++]; + GLfloat intercept = lineSlopeAndIntercepts[currentLineIndex++]; + + if (slope > 9000.0) // Vertical line + { + lineCoordinates[currentVertexIndex++] = intercept; + lineCoordinates[currentVertexIndex++] = -1.0; + lineCoordinates[currentVertexIndex++] = intercept; + lineCoordinates[currentVertexIndex++] = 1.0; + } + else + { + lineCoordinates[currentVertexIndex++] = -1.0; + lineCoordinates[currentVertexIndex++] = slope * -1.0 + intercept; + lineCoordinates[currentVertexIndex++] = 1.0; + lineCoordinates[currentVertexIndex++] = slope * 1.0 + intercept; + } + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + + glBlendEquation(GL_FUNC_ADD); + glBlendFunc(GL_ONE, GL_ONE); + glEnable(GL_BLEND); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, lineCoordinates); + glDrawArrays(GL_LINES, 0, ((unsigned int)numberOfLines * 2)); + + glDisable(GL_BLEND); + + [self informTargetsAboutNewFrameAtTime:frameTime]; + }); +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // Prevent rendering of the frame by normal means +} + +#pragma mark - +#pragma mark Accessors + +- (void)setLineWidth:(CGFloat)newValue; +{ + _lineWidth = newValue; + [GPUImageContext setActiveShaderProgram:filterProgram]; + glLineWidth(newValue); +} + +- (void)setLineColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 lineColor = {redComponent, greenComponent, blueComponent}; + + [self setVec3:lineColor forUniform:lineColorUniform program:filterProgram]; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.h new file mode 100644 index 00000000..7e5e415c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLinearBurnBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m new file mode 100644 index 00000000..47031967 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m @@ -0,0 +1,51 @@ +#import "GPUImageLinearBurnBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLinearBurnBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(clamp(textureColor.rgb + textureColor2.rgb - vec3(1.0), vec3(0.0), vec3(1.0)), textureColor.a); + } +); +#else +NSString *const kGPUImageLinearBurnBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(clamp(textureColor.rgb + textureColor2.rgb - vec3(1.0), vec3(0.0), vec3(1.0)), textureColor.a); + } +); +#endif + +@implementation GPUImageLinearBurnBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLinearBurnBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.h new file mode 100644 index 00000000..431dbbd4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageLocalBinaryPatternFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m new file mode 100644 index 00000000..1ee1f8d9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m @@ -0,0 +1,123 @@ +#import "GPUImageLocalBinaryPatternFilter.h" + +// This is based on "Accelerating image recognition on mobile devices using GPGPU" by Miguel Bordallo Lopez, Henri Nykanen, Jari Hannuksela, Olli Silven and Markku Vehvilainen +// http://www.ee.oulu.fi/~jhannuks/publications/SPIE2011a.pdf + +// Right pixel is the most significant bit, traveling clockwise to get to the upper right, which is the least significant +// If the external pixel is greater than or equal to the center, set to 1, otherwise 0 +// +// 2 1 0 +// 3 7 +// 4 5 6 + +// 01101101 +// 76543210 + +@implementation GPUImageLocalBinaryPatternFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLocalBinaryPatternFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; + lowp float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + lowp float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + lowp float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + lowp float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + lowp float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + lowp float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + lowp float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + lowp float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + + lowp float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); + byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); + byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); + byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); + byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); + byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); + byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); + byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); + + // TODO: Replace the above with a dot product and two vec4s + // TODO: Apply step to a matrix, rather than individually + + gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); + } +); +#else +NSString *const kGPUImageLocalBinaryPatternFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + + float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); + byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); + byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); + byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); + byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); + byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); + byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); + byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); + + // TODO: Replace the above with a dot product and two vec4s + // TODO: Apply step to a matrix, rather than individually + + gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLocalBinaryPatternFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.h new file mode 100644 index 00000000..23ebde2b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.h @@ -0,0 +1,34 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLookupFilter : GPUImageTwoInputFilter +{ + GLint intensityUniform; +} + +// How To Use: +// 1) Use your favourite photo editing application to apply a filter to lookup.png from GPUImage/framework/Resources. +// For this to work properly each pixel color must not depend on other pixels (e.g. blur will not work). +// If you need more complex filter you can create as many lookup tables as required. +// E.g. color_balance_lookup_1.png -> GPUImageGaussianBlurFilter -> color_balance_lookup_2.png +// 2) Use you new lookup.png file as a second input for GPUImageLookupFilter. + +// See GPUImageAmatorkaFilter, GPUImageMissEtikateFilter, and GPUImageSoftEleganceFilter for example. + +// Additional Info: +// Lookup texture is organised as 8x8 quads of 64x64 pixels representing all possible RGB colors: +//for (int by = 0; by < 8; by++) { +// for (int bx = 0; bx < 8; bx++) { +// for (int g = 0; g < 64; g++) { +// for (int r = 0; r < 64; r++) { +// image.setPixel(r + bx * 64, g + by * 64, qRgb((int)(r * 255.0 / 63.0 + 0.5), +// (int)(g * 255.0 / 63.0 + 0.5), +// (int)((bx + by * 8.0) * 255.0 / 63.0 + 0.5))); +// } +// } +// } +//} + +// Opacity/intensity of lookup filter ranges from 0.0 to 1.0, with 1.0 as the normal setting +@property(readwrite, nonatomic) CGFloat intensity; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m new file mode 100644 index 00000000..1c3505eb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m @@ -0,0 +1,115 @@ +#import "GPUImageLookupFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; // TODO: This is not used + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; // lookup texture + + uniform lowp float intensity; + + void main() + { + highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + highp float blueColor = textureColor.b * 63.0; + + highp vec2 quad1; + quad1.y = floor(floor(blueColor) / 8.0); + quad1.x = floor(blueColor) - (quad1.y * 8.0); + + highp vec2 quad2; + quad2.y = floor(ceil(blueColor) / 8.0); + quad2.x = ceil(blueColor) - (quad2.y * 8.0); + + highp vec2 texPos1; + texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + highp vec2 texPos2; + texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1); + lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2); + + lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); + gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity); + } +); +#else +NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; // TODO: This is not used + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; // lookup texture + + uniform float intensity; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + float blueColor = textureColor.b * 63.0; + + vec2 quad1; + quad1.y = floor(floor(blueColor) / 8.0); + quad1.x = floor(blueColor) - (quad1.y * 8.0); + + vec2 quad2; + quad2.y = floor(ceil(blueColor) / 8.0); + quad2.x = ceil(blueColor) - (quad2.y * 8.0); + + vec2 texPos1; + texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + vec2 texPos2; + texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + vec4 newColor1 = texture2D(inputImageTexture2, texPos1); + vec4 newColor2 = texture2D(inputImageTexture2, texPos2); + + vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); + gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity); + } +); +#endif + +@implementation GPUImageLookupFilter + +@synthesize intensity = _intensity; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLookupFragmentShaderString])) + { + return nil; + } + + intensityUniform = [filterProgram uniformIndex:@"intensity"]; + self.intensity = 1.0f; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setIntensity:(CGFloat)intensity +{ + _intensity = intensity; + + [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.h new file mode 100644 index 00000000..be5c397e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilterGroup.h" +#import "GPUImageBuffer.h" +#import "GPUImageDissolveBlendFilter.h" + +@interface GPUImageLowPassFilter : GPUImageFilterGroup +{ + GPUImageBuffer *bufferFilter; + GPUImageDissolveBlendFilter *dissolveBlendFilter; +} + +// This controls the degree by which the previous accumulated frames are blended with the current one. This ranges from 0.0 to 1.0, with a default of 0.5. +@property(readwrite, nonatomic) CGFloat filterStrength; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m new file mode 100644 index 00000000..39ca08f6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m @@ -0,0 +1,61 @@ +#import "GPUImageLowPassFilter.h" + +@implementation GPUImageLowPassFilter + +@synthesize filterStrength; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // Take in the frame and blend it with the previous one + dissolveBlendFilter = [[GPUImageDissolveBlendFilter alloc] init]; + [self addFilter:dissolveBlendFilter]; + + // Buffer the result to be fed back into the blend + bufferFilter = [[GPUImageBuffer alloc] init]; + [self addFilter:bufferFilter]; + + // Texture location 0 needs to be the original image for the dissolve blend + [bufferFilter addTarget:dissolveBlendFilter atTextureLocation:1]; + [dissolveBlendFilter addTarget:bufferFilter]; + + [dissolveBlendFilter disableSecondFrameCheck]; + + // To prevent double updating of this filter, disable updates from the sharp image side + // self.inputFilterToIgnoreForUpdates = unsharpMaskFilter; + + self.initialFilters = [NSArray arrayWithObject:dissolveBlendFilter]; + self.terminalFilter = dissolveBlendFilter; + + self.filterStrength = 0.5; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setFilterStrength:(CGFloat)newValue; +{ + dissolveBlendFilter.mix = newValue; +} + +- (CGFloat)filterStrength; +{ + return dissolveBlendFilter.mix; +} + +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; +{ + [self.terminalFilter addTarget:newTarget atTextureLocation:textureLocation]; + //if use GPUImagePipline,will cause self.termainlFilter removeAllTargets,so need add bufferFilter back + if (self.terminalFilter == dissolveBlendFilter && ![self.terminalFilter.targets containsObject:bufferFilter]) { + [self.terminalFilter addTarget:bufferFilter atTextureLocation:1]; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.h new file mode 100644 index 00000000..5a310370 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.h @@ -0,0 +1,12 @@ +#import "GPUImageFilter.h" + +@interface GPUImageLuminanceRangeFilter : GPUImageFilter +{ + GLint rangeReductionUniform; +} + +/** The degree to reduce the luminance range, from 0.0 to 1.0. Default is 0.6. + */ +@property(readwrite, nonatomic) CGFloat rangeReductionFactor; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m new file mode 100644 index 00000000..5122c958 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m @@ -0,0 +1,76 @@ +#import "GPUImageLuminanceRangeFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLuminanceRangeFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float rangeReduction; + + // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham + const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + mediump float luminance = dot(textureColor.rgb, luminanceWeighting); + mediump float luminanceRatio = ((0.5 - luminance) * rangeReduction); + + gl_FragColor = vec4((textureColor.rgb) + (luminanceRatio), textureColor.w); + } +); +#else +NSString *const kGPUImageLuminanceRangeFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float rangeReduction; + + // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham + const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + float luminanceRatio = ((0.5 - luminance) * rangeReduction); + + gl_FragColor = vec4((textureColor.rgb) + (luminanceRatio), textureColor.w); + } +); +#endif + +@implementation GPUImageLuminanceRangeFilter + +@synthesize rangeReductionFactor = _rangeReductionFactor; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceRangeFragmentShaderString])) + { + return nil; + } + + rangeReductionUniform = [filterProgram uniformIndex:@"rangeReduction"]; + self.rangeReductionFactor = 0.6; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setRangeReductionFactor:(CGFloat)newValue; +{ + _rangeReductionFactor = newValue; + + [self setFloat:_rangeReductionFactor forUniform:rangeReductionUniform program:filterProgram]; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.h new file mode 100755 index 00000000..0abb9a1e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Pixels with a luminance above the threshold will appear white, and those below will be black + */ +@interface GPUImageLuminanceThresholdFilter : GPUImageFilter +{ + GLint thresholdUniform; +} + +/** Anything above this luminance will be white, and anything below black. Ranges from 0.0 to 1.0, with 0.5 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m new file mode 100755 index 00000000..368b8fbe --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m @@ -0,0 +1,74 @@ +#import "GPUImageLuminanceThresholdFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLuminanceThresholdFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform highp float threshold; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + highp float luminance = dot(textureColor.rgb, W); + highp float thresholdResult = step(threshold, luminance); + + gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); + } +); +#else +NSString *const kGPUImageLuminanceThresholdFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float threshold; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, W); + float thresholdResult = step(threshold, luminance); + + gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); + } +); +#endif + +@implementation GPUImageLuminanceThresholdFilter + +@synthesize threshold = _threshold; + +#pragma mark - +#pragma mark Initialization + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceThresholdFragmentShaderString])) + { + return nil; + } + + thresholdUniform = [filterProgram uniformIndex:@"threshold"]; + self.threshold = 0.5; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setThreshold:(CGFloat)newValue; +{ + _threshold = newValue; + + [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.h b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.h new file mode 100644 index 00000000..b2d2458f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.h @@ -0,0 +1,17 @@ +#import "GPUImageAverageColor.h" + +@interface GPUImageLuminosity : GPUImageAverageColor +{ + GLProgram *secondFilterProgram; + GLint secondFilterPositionAttribute, secondFilterTextureCoordinateAttribute; + GLint secondFilterInputTextureUniform, secondFilterInputTextureUniform2; + GLint secondFilterTexelWidthUniform, secondFilterTexelHeightUniform; +} + +// This block is called on the completion of color averaging for a frame +@property(nonatomic, copy) void(^luminosityProcessingFinishedBlock)(CGFloat luminosity, CMTime frameTime); + +- (void)extractLuminosityAtFrameTime:(CMTime)frameTime; +- (void)initializeSecondaryAttributes; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m new file mode 100644 index 00000000..37f374ab --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m @@ -0,0 +1,329 @@ +#import "GPUImageLuminosity.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + varying highp vec2 outputTextureCoordinate; + + varying highp vec2 upperLeftInputTextureCoordinate; + varying highp vec2 upperRightInputTextureCoordinate; + varying highp vec2 lowerLeftInputTextureCoordinate; + varying highp vec2 lowerRightInputTextureCoordinate; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + highp float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W); + highp float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W); + highp float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W); + highp float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W); + + highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); + gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); + } +); + +NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + varying highp vec2 outputTextureCoordinate; + + varying highp vec2 upperLeftInputTextureCoordinate; + varying highp vec2 upperRightInputTextureCoordinate; + varying highp vec2 lowerLeftInputTextureCoordinate; + varying highp vec2 lowerRightInputTextureCoordinate; + + void main() + { + highp float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; + highp float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; + highp float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; + highp float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; + + highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); + gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); + } +); +#else +NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 outputTextureCoordinate; + + varying vec2 upperLeftInputTextureCoordinate; + varying vec2 upperRightInputTextureCoordinate; + varying vec2 lowerLeftInputTextureCoordinate; + varying vec2 lowerRightInputTextureCoordinate; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W); + float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W); + float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W); + float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W); + + float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); + gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); + } +); + +NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 outputTextureCoordinate; + + varying vec2 upperLeftInputTextureCoordinate; + varying vec2 upperRightInputTextureCoordinate; + varying vec2 lowerLeftInputTextureCoordinate; + varying vec2 lowerRightInputTextureCoordinate; + + void main() + { + float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; + float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; + float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; + float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; + + float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); + gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); + } +); +#endif + +@implementation GPUImageLuminosity + +@synthesize luminosityProcessingFinishedBlock = _luminosityProcessingFinishedBlock; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageColorAveragingVertexShaderString fragmentShaderFromString:kGPUImageInitialLuminosityFragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + + __unsafe_unretained GPUImageLuminosity *weakSelf = self; + [self setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { + [weakSelf extractLuminosityAtFrameTime:frameTime]; + }]; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageColorAveragingVertexShaderString fragmentShaderString:kGPUImageLuminosityFragmentShaderString]; + + if (!secondFilterProgram.initialized) + { + [self initializeSecondaryAttributes]; + + if (![secondFilterProgram link]) + { + NSString *progLog = [secondFilterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [secondFilterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [secondFilterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + filterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; + secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; + secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader + secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader + + secondFilterTexelWidthUniform = [secondFilterProgram uniformIndex:@"texelWidth"]; + secondFilterTexelHeightUniform = [secondFilterProgram uniformIndex:@"texelHeight"]; + + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + + glEnableVertexAttribArray(secondFilterPositionAttribute); + glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); + }); + + return self; +} + +- (void)initializeSecondaryAttributes; +{ + [secondFilterProgram addAttribute:@"position"]; + [secondFilterProgram addAttribute:@"inputTextureCoordinate"]; +} + +/* +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + // Do an initial render pass that both convert to luminance and reduces + [GPUImageContext setActiveShaderProgram:filterProgram]; + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + GLuint currentFramebuffer = [[stageFramebuffers objectAtIndex:0] intValue]; + glBindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CGSize currentStageSize = [[stageSizes objectAtIndex:0] CGSizeValue]; +#else + NSSize currentStageSize = [[stageSizes objectAtIndex:0] sizeValue]; +#endif + glViewport(0, 0, (int)currentStageSize.width, (int)currentStageSize.height); + + GLuint currentTexture = [firstInputFramebuffer texture]; + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, currentTexture); + + glUniform1i(filterInputTextureUniform, 2); + + glUniform1f(texelWidthUniform, 0.5 / currentStageSize.width); + glUniform1f(texelHeightUniform, 0.5 / currentStageSize.height); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + currentTexture = [[stageTextures objectAtIndex:0] intValue]; + + // Just perform reductions from this point on + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + NSUInteger numberOfStageFramebuffers = [stageFramebuffers count]; + for (NSUInteger currentStage = 1; currentStage < numberOfStageFramebuffers; currentStage++) + { + currentFramebuffer = [[stageFramebuffers objectAtIndex:currentStage] intValue]; + glBindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + currentStageSize = [[stageSizes objectAtIndex:currentStage] CGSizeValue]; +#else + currentStageSize = [[stageSizes objectAtIndex:currentStage] sizeValue]; +#endif + glViewport(0, 0, (int)currentStageSize.width, (int)currentStageSize.height); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, currentTexture); + + glUniform1i(secondFilterInputTextureUniform, 2); + + glUniform1f(secondFilterTexelWidthUniform, 0.5 / currentStageSize.width); + glUniform1f(secondFilterTexelHeightUniform, 0.5 / currentStageSize.height); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + currentTexture = [[stageTextures objectAtIndex:currentStage] intValue]; + +// NSUInteger totalBytesForImage = (int)currentStageSize.width * (int)currentStageSize.height * 4; +// GLubyte *rawImagePixels2 = (GLubyte *)malloc(totalBytesForImage); +// glReadPixels(0, 0, (int)currentStageSize.width, (int)currentStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels2); +// CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, rawImagePixels2, totalBytesForImage, NULL); +// CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB(); +// +// CGFloat currentRedTotal = 0.0f, currentGreenTotal = 0.0f, currentBlueTotal = 0.0f, currentAlphaTotal = 0.0f; +// NSUInteger totalNumberOfPixels = totalBytesForImage / 4; +// +// for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) +// { +// currentRedTotal += (CGFloat)rawImagePixels2[(currentPixel * 4)] / 255.0f; +// currentGreenTotal += (CGFloat)rawImagePixels2[(currentPixel * 4) + 1] / 255.0f; +// currentBlueTotal += (CGFloat)rawImagePixels2[(currentPixel * 4 + 2)] / 255.0f; +// currentAlphaTotal += (CGFloat)rawImagePixels2[(currentPixel * 4) + 3] / 255.0f; +// } +// +// NSLog(@"Stage %d average image red: %f, green: %f, blue: %f, alpha: %f", currentStage, currentRedTotal / (CGFloat)totalNumberOfPixels, currentGreenTotal / (CGFloat)totalNumberOfPixels, currentBlueTotal / (CGFloat)totalNumberOfPixels, currentAlphaTotal / (CGFloat)totalNumberOfPixels); +// +// +// CGImageRef cgImageFromBytes = CGImageCreate((int)currentStageSize.width, (int)currentStageSize.height, 8, 32, 4 * (int)currentStageSize.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider, NULL, NO, kCGRenderingIntentDefault); +// +// UIImage *imageToSave = [UIImage imageWithCGImage:cgImageFromBytes]; +// +// NSData *dataForPNGFile = UIImagePNGRepresentation(imageToSave); +// +// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); +// NSString *documentsDirectory = [paths objectAtIndex:0]; +// +// NSString *imageName = [NSString stringWithFormat:@"AverageLevel%d.png", currentStage]; +// NSError *error = nil; +// if (![dataForPNGFile writeToFile:[documentsDirectory stringByAppendingPathComponent:imageName] options:NSAtomicWrite error:&error]) +// { +// return; +// } + } + + [firstInputFramebuffer unlock]; +} + */ + +#pragma mark - +#pragma mark Callbacks + +- (void)extractLuminosityAtFrameTime:(CMTime)frameTime; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + + // we need a normal color texture for this filter + NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); + NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + NSUInteger totalNumberOfPixels = round(finalStageSize.width * finalStageSize.height); + + if (rawImagePixels == NULL) + { + rawImagePixels = (GLubyte *)malloc(totalNumberOfPixels * 4); + } + + [GPUImageContext useImageProcessingContext]; + [outputFramebuffer activateFramebuffer]; + + glReadPixels(0, 0, (int)finalStageSize.width, (int)finalStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); + + NSUInteger luminanceTotal = 0; + NSUInteger byteIndex = 0; + for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) + { + luminanceTotal += rawImagePixels[byteIndex]; + byteIndex += 4; + } + + CGFloat normalizedLuminosityTotal = (CGFloat)luminanceTotal / (CGFloat)totalNumberOfPixels / 255.0; + + if (_luminosityProcessingFinishedBlock != NULL) + { + _luminosityProcessingFinishedBlock(normalizedLuminosityTotal, frameTime); + } + }); +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.h new file mode 100644 index 00000000..03b5e4c9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageLuminosityBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m new file mode 100644 index 00000000..7e399746 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m @@ -0,0 +1,113 @@ +#import "GPUImageLuminosityBlendFilter.h" + +/** + * Luminosity blend mode based upon pseudo code from the PDF specification. + */ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageLuminosityBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + highp float lum(lowp vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + lowp vec3 clipcolor(lowp vec3 c) { + highp float l = lum(c); + lowp float n = min(min(c.r, c.g), c.b); + lowp float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + lowp vec3 setlum(lowp vec3 c, highp float l) { + highp float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + void main() + { + highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(baseColor.rgb, lum(overlayColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#else +NSString *const kGPUImageLuminosityBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + float lum(vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + vec3 clipcolor(vec3 c) { + float l = lum(c); + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + vec3 setlum(vec3 c, float l) { + float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + void main() + { + vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(baseColor.rgb, lum(overlayColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#endif + + +@implementation GPUImageLuminosityBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminosityBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.h new file mode 100755 index 00000000..94cf0648 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMaskFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m new file mode 100755 index 00000000..24503b3b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m @@ -0,0 +1,76 @@ +#import "GPUImageMaskFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageMaskShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + //Averages mask's the RGB values, and scales that value by the mask's alpha + // + //The dot product should take fewer cycles than doing an average normally + // + //Typical/ideal case, R,G, and B will be the same, and Alpha will be 1.0 + lowp float newAlpha = dot(textureColor2.rgb, vec3(.33333334, .33333334, .33333334)) * textureColor2.a; + + gl_FragColor = vec4(textureColor.xyz, newAlpha); +// gl_FragColor = vec4(textureColor2); + } +); +#else +NSString *const kGPUImageMaskShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + //Averages mask's the RGB values, and scales that value by the mask's alpha + // + //The dot product should take fewer cycles than doing an average normally + // + //Typical/ideal case, R,G, and B will be the same, and Alpha will be 1.0 + float newAlpha = dot(textureColor2.rgb, vec3(.33333334, .33333334, .33333334)) * textureColor2.a; + + gl_FragColor = vec4(textureColor.xyz, newAlpha); + // gl_FragColor = vec4(textureColor2); + } +); +#endif + +@implementation GPUImageMaskFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageMaskShaderString])) + { + return nil; + } + + return self; +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; + glDisable(GL_BLEND); +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.h new file mode 100644 index 00000000..80225789 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageMedianFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m new file mode 100644 index 00000000..78c11805 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m @@ -0,0 +1,178 @@ +#import "GPUImageMedianFilter.h" + +/* + 3x3 median filter, adapted from "A Fast, Small-Radius GPU Median Filter" by Morgan McGuire in ShaderX6 + http://graphics.cs.williams.edu/papers/MedianShaderX6/ + + Morgan McGuire and Kyle Whitson + Williams College + + Register allocation tips by Victor Huang Xiaohuang + University of Illinois at Urbana-Champaign + + http://graphics.cs.williams.edu + + + Copyright (c) Morgan McGuire and Williams College, 2006 + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageMedianFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + +#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); +#define mn3(a, b, c) s2(a, b); s2(a, c); +#define mx3(a, b, c) s2(b, c); s2(a, c); + +#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges +#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges +#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges +#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges + + void main() + { + vec3 v[6]; + + v[0] = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + v[1] = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + v[2] = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + v[3] = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + v[4] = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + v[5] = texture2D(inputImageTexture, rightTextureCoordinate).rgb; +// v[6] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; +// v[7] = texture2D(inputImageTexture, topTextureCoordinate).rgb; + vec3 temp; + + mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]); + + v[5] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + + mnmx5(v[1], v[2], v[3], v[4], v[5]); + + v[5] = texture2D(inputImageTexture, topTextureCoordinate).rgb; + + mnmx4(v[2], v[3], v[4], v[5]); + + v[5] = texture2D(inputImageTexture, textureCoordinate).rgb; + + mnmx3(v[3], v[4], v[5]); + + gl_FragColor = vec4(v[4], 1.0); + } +); +#else +NSString *const kGPUImageMedianFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + +#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); +#define mn3(a, b, c) s2(a, b); s2(a, c); +#define mx3(a, b, c) s2(b, c); s2(a, c); + +#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges +#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges +#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges +#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges + + void main() + { + vec3 v[6]; + + v[0] = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; + v[1] = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; + v[2] = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; + v[3] = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; + v[4] = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + v[5] = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + // v[6] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + // v[7] = texture2D(inputImageTexture, topTextureCoordinate).rgb; + vec3 temp; + + mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]); + + v[5] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + + mnmx5(v[1], v[2], v[3], v[4], v[5]); + + v[5] = texture2D(inputImageTexture, topTextureCoordinate).rgb; + + mnmx4(v[2], v[3], v[4], v[5]); + + v[5] = texture2D(inputImageTexture, textureCoordinate).rgb; + + mnmx3(v[3], v[4], v[5]); + + gl_FragColor = vec4(v[4], 1.0); + } +); +#endif + +@implementation GPUImageMedianFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageMedianFragmentShaderString])) + { + return nil; + } + + hasOverriddenImageSizeFactor = NO; + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.h new file mode 100755 index 00000000..de170647 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImagePicture; + +/** A photo filter based on Photoshop action by Miss Etikate: + http://miss-etikate.deviantart.com/art/Photoshop-Action-15-120151961 + */ + +// Note: If you want to use this effect you have to add lookup_miss_etikate.png +// from Resources folder to your application bundle. + +@interface GPUImageMissEtikateFilter : GPUImageFilterGroup +{ + GPUImagePicture *lookupImageSource; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m new file mode 100755 index 00000000..1810b707 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m @@ -0,0 +1,38 @@ +#import "GPUImageMissEtikateFilter.h" +#import "GPUImagePicture.h" +#import "GPUImageLookupFilter.h" + +@implementation GPUImageMissEtikateFilter + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + UIImage *image = [UIImage imageNamed:@"lookup_miss_etikate.png"]; +#else + NSImage *image = [NSImage imageNamed:@"lookup_miss_etikate.png"]; +#endif + + NSAssert(image, @"To use GPUImageMissEtikateFilter you need to add lookup_miss_etikate.png from GPUImage/framework/Resources to your application bundle."); + + lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; + GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; + [self addFilter:lookupFilter]; + + [lookupImageSource addTarget:lookupFilter atTextureLocation:1]; + [lookupImageSource processImage]; + + self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; + self.terminalFilter = lookupFilter; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.h new file mode 100644 index 00000000..66a0e773 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +@interface GPUImageMonochromeFilter : GPUImageFilter +{ + GLint intensityUniform, filterColorUniform; +} + +@property(readwrite, nonatomic) CGFloat intensity; +@property(readwrite, nonatomic) GPUVector4 color; + +- (void)setColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m new file mode 100644 index 00000000..70cef872 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m @@ -0,0 +1,115 @@ +#import "GPUImageMonochromeFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUMonochromeFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float intensity; + uniform vec3 filterColor; + + const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + //desat, then apply overlay blend + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + + lowp vec4 desat = vec4(vec3(luminance), 1.0); + + //overlay + lowp vec4 outputColor = vec4( + (desat.r < 0.5 ? (2.0 * desat.r * filterColor.r) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - filterColor.r))), + (desat.g < 0.5 ? (2.0 * desat.g * filterColor.g) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - filterColor.g))), + (desat.b < 0.5 ? (2.0 * desat.b * filterColor.b) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - filterColor.b))), + 1.0 + ); + + //which is better, or are they equal? + gl_FragColor = vec4( mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a); + } +); +#else +NSString *const kGPUMonochromeFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float intensity; + uniform vec3 filterColor; + + const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + //desat, then apply overlay blend + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + + vec4 desat = vec4(vec3(luminance), 1.0); + + //overlay + vec4 outputColor = vec4( + (desat.r < 0.5 ? (2.0 * desat.r * filterColor.r) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - filterColor.r))), + (desat.g < 0.5 ? (2.0 * desat.g * filterColor.g) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - filterColor.g))), + (desat.b < 0.5 ? (2.0 * desat.b * filterColor.b) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - filterColor.b))), + 1.0 + ); + + //which is better, or are they equal? + gl_FragColor = vec4( mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a); + } +); +#endif + +@implementation GPUImageMonochromeFilter + +@synthesize intensity = _intensity; +@synthesize color = _color; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUMonochromeFragmentShaderString])) + { + return nil; + } + + intensityUniform = [filterProgram uniformIndex:@"intensity"]; + filterColorUniform = [filterProgram uniformIndex:@"filterColor"]; + + self.intensity = 1.0; + self.color = (GPUVector4){0.6f, 0.45f, 0.3f, 1.f}; + //self.color = [CIColor colorWithRed:0.6 green:0.45 blue:0.3 alpha:1.]; + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setColor:(GPUVector4)color; +{ + + _color = color; + + [self setColorRed:color.one green:color.two blue:color.three]; +} + +- (void)setColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; +{ + GPUVector3 filterColor = {redComponent, greenComponent, blueComponent}; + + [self setVec3:filterColor forUniform:filterColorUniform program:filterProgram]; +} + +- (void)setIntensity:(CGFloat)newValue; +{ + _intensity = newValue; + + [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.h new file mode 100644 index 00000000..5f72d3c9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.h @@ -0,0 +1,22 @@ + +// This needs a little more work, it's rotating the input tileset and there are some artifacts (I think from GL_LINEAR interpolation), but it's working + +#import "GPUImageTwoInputFilter.h" +#import "GPUImagePicture.h" + +@interface GPUImageMosaicFilter : GPUImageTwoInputFilter { + GLint inputTileSizeUniform, numTilesUniform, displayTileSizeUniform, colorOnUniform; + GPUImagePicture *pic; +} + +// This filter takes an input tileset, the tiles must ascend in luminance +// It looks at the input image and replaces each display tile with an input tile +// according to the luminance of that tile. The idea was to replicate the ASCII +// video filters seen in other apps, but the tileset can be anything. +@property(readwrite, nonatomic) CGSize inputTileSize; +@property(readwrite, nonatomic) float numTiles; +@property(readwrite, nonatomic) CGSize displayTileSize; +@property(readwrite, nonatomic) BOOL colorOn; +@property(readwrite, nonatomic, copy) NSString *tileSet; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m new file mode 100644 index 00000000..b017ca97 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m @@ -0,0 +1,188 @@ +// +// GPUImageMosaicFilter.m + + +#import "GPUImageMosaicFilter.h" +#import "GPUImagePicture.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageMosaicFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform vec2 inputTileSize; + uniform vec2 displayTileSize; + uniform float numTiles; + uniform int colorOn; + + void main() + { + vec2 xy = textureCoordinate; + xy = xy - mod(xy, displayTileSize); + + vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0); + + vec4 inputColor = texture2D(inputImageTexture2, xy); + float lum = dot(inputColor,lumcoeff); + lum = 1.0 - lum; + + float stepsize = 1.0 / numTiles; + float lumStep = (lum - mod(lum, stepsize)) / stepsize; + + float rowStep = 1.0 / inputTileSize.x; + float x = mod(lumStep, rowStep); + float y = floor(lumStep / rowStep); + + vec2 startCoord = vec2(float(x) * inputTileSize.x, float(y) * inputTileSize.y); + vec2 finalCoord = startCoord + ((textureCoordinate - xy) * (inputTileSize / displayTileSize)); + + vec4 color = texture2D(inputImageTexture, finalCoord); + if (colorOn == 1) { + color = color * inputColor; + } + gl_FragColor = color; + + } +); +#else +NSString *const kGPUImageMosaicFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform vec2 inputTileSize; + uniform vec2 displayTileSize; + uniform float numTiles; + uniform int colorOn; + + void main() + { + vec2 xy = textureCoordinate; + xy = xy - mod(xy, displayTileSize); + + vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0); + + vec4 inputColor = texture2D(inputImageTexture2, xy); + float lum = dot(inputColor,lumcoeff); + lum = 1.0 - lum; + + float stepsize = 1.0 / numTiles; + float lumStep = (lum - mod(lum, stepsize)) / stepsize; + + float rowStep = 1.0 / inputTileSize.x; + float x = mod(lumStep, rowStep); + float y = floor(lumStep / rowStep); + + vec2 startCoord = vec2(float(x) * inputTileSize.x, float(y) * inputTileSize.y); + vec2 finalCoord = startCoord + ((textureCoordinate - xy) * (inputTileSize / displayTileSize)); + + vec4 color = texture2D(inputImageTexture, finalCoord); + if (colorOn == 1) { + color = color * inputColor; + } + gl_FragColor = color; + } +); +#endif + +@implementation GPUImageMosaicFilter + +@synthesize inputTileSize = _inputTileSize, numTiles = _numTiles, displayTileSize = _displayTileSize, colorOn = _colorOn; +@synthesize tileSet = _tileSet; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageMosaicFragmentShaderString])) + { + return nil; + } + + inputTileSizeUniform = [filterProgram uniformIndex:@"inputTileSize"]; + displayTileSizeUniform = [filterProgram uniformIndex:@"displayTileSize"]; + numTilesUniform = [filterProgram uniformIndex:@"numTiles"]; + colorOnUniform = [filterProgram uniformIndex:@"colorOn"]; + + CGSize its = CGSizeMake(0.125, 0.125); + CGSize dts = CGSizeMake(0.025, 0.025); + [self setDisplayTileSize:dts]; + [self setInputTileSize:its]; + [self setNumTiles:64.0]; + [self setColorOn:YES]; + //[self setTileSet:@"squares.png"]; + return self; +} + +- (void)setColorOn:(BOOL)yes +{ + glUniform1i(colorOnUniform, yes); +} + +- (void)setNumTiles:(float)numTiles +{ + + _numTiles = numTiles; + [self setFloat:_numTiles forUniformName:@"numTiles"]; +} + +- (void)setInputTileSize:(CGSize)inputTileSize +{ + if (inputTileSize.width > 1.0) { + _inputTileSize.width = 1.0; + } + if (inputTileSize.height > 1.0) { + _inputTileSize.height = 1.0; + } + if (inputTileSize.width < 0.0) { + _inputTileSize.width = 0.0; + } + if (inputTileSize.height < 0.0) { + _inputTileSize.height = 0.0; + } + + + _inputTileSize = inputTileSize; + + [self setSize:_inputTileSize forUniform:inputTileSizeUniform program:filterProgram]; +} + +-(void)setDisplayTileSize:(CGSize)displayTileSize +{ + if (displayTileSize.width > 1.0) { + _displayTileSize.width = 1.0; + } + if (displayTileSize.height > 1.0) { + _displayTileSize.height = 1.0; + } + if (displayTileSize.width < 0.0) { + _displayTileSize.width = 0.0; + } + if (displayTileSize.height < 0.0) { + _displayTileSize.height = 0.0; + } + + + _displayTileSize = displayTileSize; + + [self setSize:_displayTileSize forUniform:displayTileSizeUniform program:filterProgram]; +} + +-(void)setTileSet:(NSString *)tileSet +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + UIImage *img = [UIImage imageNamed:tileSet]; +#else + NSImage *img = [NSImage imageNamed:tileSet]; +#endif + pic = [[GPUImagePicture alloc] initWithImage:img smoothlyScaleOutput:YES]; + [pic addTarget:self]; + [pic processImage]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.h new file mode 100644 index 00000000..dcca712f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +@interface GPUImageMotionBlurFilter : GPUImageFilter + +/** A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 + */ +@property (readwrite, nonatomic) CGFloat blurSize; + +/** The angular direction of the blur, in degrees. 0 degrees by default + */ +@property (readwrite, nonatomic) CGFloat blurAngle; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m new file mode 100644 index 00000000..5a2c20b6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m @@ -0,0 +1,209 @@ +#import "GPUImageMotionBlurFilter.h" + +// Override vertex shader to remove dependent texture reads +NSString *const kGPUImageTiltedTexelSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform vec2 directionalTexelStep; + + varying vec2 textureCoordinate; + varying vec2 oneStepBackTextureCoordinate; + varying vec2 twoStepsBackTextureCoordinate; + varying vec2 threeStepsBackTextureCoordinate; + varying vec2 fourStepsBackTextureCoordinate; + varying vec2 oneStepForwardTextureCoordinate; + varying vec2 twoStepsForwardTextureCoordinate; + varying vec2 threeStepsForwardTextureCoordinate; + varying vec2 fourStepsForwardTextureCoordinate; + + void main() + { + gl_Position = position; + + textureCoordinate = inputTextureCoordinate.xy; + oneStepBackTextureCoordinate = inputTextureCoordinate.xy - directionalTexelStep; + twoStepsBackTextureCoordinate = inputTextureCoordinate.xy - 2.0 * directionalTexelStep; + threeStepsBackTextureCoordinate = inputTextureCoordinate.xy - 3.0 * directionalTexelStep; + fourStepsBackTextureCoordinate = inputTextureCoordinate.xy - 4.0 * directionalTexelStep; + oneStepForwardTextureCoordinate = inputTextureCoordinate.xy + directionalTexelStep; + twoStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 2.0 * directionalTexelStep; + threeStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 3.0 * directionalTexelStep; + fourStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 4.0 * directionalTexelStep; + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageMotionBlurFragmentShaderString = SHADER_STRING +( + precision highp float; + + uniform sampler2D inputImageTexture; + + varying vec2 textureCoordinate; + varying vec2 oneStepBackTextureCoordinate; + varying vec2 twoStepsBackTextureCoordinate; + varying vec2 threeStepsBackTextureCoordinate; + varying vec2 fourStepsBackTextureCoordinate; + varying vec2 oneStepForwardTextureCoordinate; + varying vec2 twoStepsForwardTextureCoordinate; + varying vec2 threeStepsForwardTextureCoordinate; + varying vec2 fourStepsForwardTextureCoordinate; + + void main() + { + // Box weights +// lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.1111111; +// fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.1111111; + + lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; + fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.15; + fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.12; + fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.09; + fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.05; + fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.15; + fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.12; + fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.09; + fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.05; + + gl_FragColor = fragmentColor; + } +); +#else +NSString *const kGPUImageMotionBlurFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 textureCoordinate; + varying vec2 oneStepBackTextureCoordinate; + varying vec2 twoStepsBackTextureCoordinate; + varying vec2 threeStepsBackTextureCoordinate; + varying vec2 fourStepsBackTextureCoordinate; + varying vec2 oneStepForwardTextureCoordinate; + varying vec2 twoStepsForwardTextureCoordinate; + varying vec2 threeStepsForwardTextureCoordinate; + varying vec2 fourStepsForwardTextureCoordinate; + + void main() + { + // Box weights + // vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.1111111; + // fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.1111111; + + vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; + fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.15; + fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.12; + fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.09; + fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.05; + fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.15; + fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.12; + fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.09; + fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.05; + + gl_FragColor = fragmentColor; + } +); +#endif + +@interface GPUImageMotionBlurFilter() +{ + GLint directionalTexelStepUniform; +} + +- (void)recalculateTexelOffsets; + +@end + +@implementation GPUImageMotionBlurFilter + +@synthesize blurSize = _blurSize; +@synthesize blurAngle = _blurAngle; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageTiltedTexelSamplingVertexShaderString fragmentShaderFromString:kGPUImageMotionBlurFragmentShaderString])) + { + return nil; + } + + directionalTexelStepUniform = [filterProgram uniformIndex:@"directionalTexelStep"]; + + self.blurSize = 2.5; + self.blurAngle = 0.0; + + return self; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if (!CGSizeEqualToSize(oldInputSize, inputTextureSize) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self recalculateTexelOffsets]; + } +} + +- (void)recalculateTexelOffsets; +{ + CGFloat aspectRatio = 1.0; + CGPoint texelOffsets; + + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + aspectRatio = (inputTextureSize.width / inputTextureSize.height); + texelOffsets.x = _blurSize * sin(_blurAngle * M_PI / 180.0) * aspectRatio / inputTextureSize.height; + texelOffsets.y = _blurSize * cos(_blurAngle * M_PI / 180.0) / inputTextureSize.height; + } + else + { + aspectRatio = (inputTextureSize.height / inputTextureSize.width); + texelOffsets.x = _blurSize * cos(_blurAngle * M_PI / 180.0) * aspectRatio / inputTextureSize.width; + texelOffsets.y = _blurSize * sin(_blurAngle * M_PI / 180.0) / inputTextureSize.width; + } + + [self setPoint:texelOffsets forUniform:directionalTexelStepUniform program:filterProgram]; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self recalculateTexelOffsets]; +} + +- (void)setBlurAngle:(CGFloat)newValue; +{ + _blurAngle = newValue; + [self recalculateTexelOffsets]; +} + +- (void)setBlurSize:(CGFloat)newValue; +{ + _blurSize = newValue; + [self recalculateTexelOffsets]; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.h b/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.h new file mode 100644 index 00000000..01329145 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.h @@ -0,0 +1,18 @@ +#import "GPUImageFilterGroup.h" +#import "GPUImageLowPassFilter.h" +#import "GPUImageAverageColor.h" + +@interface GPUImageMotionDetector : GPUImageFilterGroup +{ + GPUImageLowPassFilter *lowPassFilter; + GPUImageTwoInputFilter *frameComparisonFilter; + GPUImageAverageColor *averageColor; +} + +// This controls the low pass filter strength used to compare the current frame with previous ones to detect motion. This ranges from 0.0 to 1.0, with a default of 0.5. +@property(readwrite, nonatomic) CGFloat lowPassFilterStrength; + +// For every frame, this will feed back the calculated centroid of the motion, as well as a relative intensity. +@property(nonatomic, copy) void(^motionDetectionBlock)(CGPoint motionCentroid, CGFloat motionIntensity, CMTime frameTime); + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m b/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m new file mode 100644 index 00000000..0e204ad7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m @@ -0,0 +1,112 @@ +#import "GPUImageMotionDetector.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageMotionComparisonFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform highp float intensity; + + void main() + { + lowp vec3 currentImageColor = texture2D(inputImageTexture, textureCoordinate).rgb; + lowp vec3 lowPassImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; + + mediump float colorDistance = distance(currentImageColor, lowPassImageColor); // * 0.57735 + lowp float movementThreshold = step(0.2, colorDistance); + + gl_FragColor = movementThreshold * vec4(textureCoordinate2.x, textureCoordinate2.y, 1.0, 1.0); + } +); +#else +NSString *const kGPUImageMotionComparisonFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform float intensity; + + void main() + { + vec3 currentImageColor = texture2D(inputImageTexture, textureCoordinate).rgb; + vec3 lowPassImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; + + float colorDistance = distance(currentImageColor, lowPassImageColor); // * 0.57735 + float movementThreshold = step(0.2, colorDistance); + + gl_FragColor = movementThreshold * vec4(textureCoordinate2.x, textureCoordinate2.y, 1.0, 1.0); + } +); +#endif + + +@implementation GPUImageMotionDetector + +@synthesize lowPassFilterStrength, motionDetectionBlock; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // Start with a low pass filter to define the component to be removed + lowPassFilter = [[GPUImageLowPassFilter alloc] init]; + [self addFilter:lowPassFilter]; + + // Take the difference of the current frame from the low pass filtered result to get the high pass + frameComparisonFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageMotionComparisonFragmentShaderString]; + [self addFilter:frameComparisonFilter]; + + // Texture location 0 needs to be the original image for the difference blend + [lowPassFilter addTarget:frameComparisonFilter atTextureLocation:1]; + + // End with the average color for the scene to determine the centroid + averageColor = [[GPUImageAverageColor alloc] init]; + + __unsafe_unretained GPUImageMotionDetector *weakSelf = self; + + [averageColor setColorAverageProcessingFinishedBlock:^(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime) { + if (weakSelf.motionDetectionBlock != NULL) + { + weakSelf.motionDetectionBlock(CGPointMake(redComponent / alphaComponent, greenComponent / alphaComponent), alphaComponent, frameTime); + } +// NSLog(@"Average X: %f, Y: %f total: %f", redComponent / alphaComponent, greenComponent / alphaComponent, alphaComponent); + }]; + + [frameComparisonFilter addTarget:averageColor]; + + self.initialFilters = [NSArray arrayWithObjects:lowPassFilter, frameComparisonFilter, nil]; + self.terminalFilter = frameComparisonFilter; + + self.lowPassFilterStrength = 0.5; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setLowPassFilterStrength:(CGFloat)newValue; +{ + lowPassFilter.filterStrength = newValue; +} + +- (CGFloat)lowPassFilterStrength; +{ + return lowPassFilter.filterStrength; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovie.h b/LFLiveKit/Vendor/GPUImage/GPUImageMovie.h new file mode 100755 index 00000000..f61e56ef --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMovie.h @@ -0,0 +1,61 @@ +#import +#import +#import "GPUImageContext.h" +#import "GPUImageOutput.h" + +/** Protocol for getting Movie played callback. + */ +@protocol GPUImageMovieDelegate + +- (void)didCompletePlayingMovie; +@end + +/** Source object for filtering movies + */ +@interface GPUImageMovie : GPUImageOutput + +@property (readwrite, retain) AVAsset *asset; +@property (readwrite, retain) AVPlayerItem *playerItem; +@property(readwrite, retain) NSURL *url; + +/** This enables the benchmarking mode, which logs out instantaneous and average frame times to the console + */ +@property(readwrite, nonatomic) BOOL runBenchmark; + +/** This determines whether to play back a movie as fast as the frames can be processed, or if the original speed of the movie should be respected. Defaults to NO. + */ +@property(readwrite, nonatomic) BOOL playAtActualSpeed; + +/** This determines whether the video should repeat (loop) at the end and restart from the beginning. Defaults to NO. + */ +@property(readwrite, nonatomic) BOOL shouldRepeat; + +/** This specifies the progress of the process on a scale from 0 to 1.0. A value of 0 means the process has not yet begun, A value of 1.0 means the conversaion is complete. + This property is not key-value observable. + */ +@property(readonly, nonatomic) float progress; + +/** This is used to send the delete Movie did complete playing alert + */ +@property (readwrite, nonatomic, assign) id delegate; + +@property (readonly, nonatomic) AVAssetReader *assetReader; +@property (readonly, nonatomic) BOOL audioEncodingIsFinished; +@property (readonly, nonatomic) BOOL videoEncodingIsFinished; + +/// @name Initialization and teardown +- (id)initWithAsset:(AVAsset *)asset; +- (id)initWithPlayerItem:(AVPlayerItem *)playerItem; +- (id)initWithURL:(NSURL *)url; +- (void)yuvConversionSetup; + +/// @name Movie processing +- (void)enableSynchronizedEncodingUsingMovieWriter:(GPUImageMovieWriter *)movieWriter; +- (BOOL)readNextVideoFrameFromOutput:(AVAssetReaderOutput *)readerVideoTrackOutput; +- (BOOL)readNextAudioSampleFromOutput:(AVAssetReaderOutput *)readerAudioTrackOutput; +- (void)startProcessing; +- (void)endProcessing; +- (void)cancelProcessing; +- (void)processMovieFrame:(CMSampleBufferRef)movieSampleBuffer; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovie.m b/LFLiveKit/Vendor/GPUImage/GPUImageMovie.m new file mode 100755 index 00000000..4da050f4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMovie.m @@ -0,0 +1,876 @@ +#import "GPUImageMovie.h" +#import "GPUImageMovieWriter.h" +#import "GPUImageFilter.h" +#import "GPUImageColorConversion.h" + + +@interface GPUImageMovie () +{ + BOOL audioEncodingIsFinished, videoEncodingIsFinished; + GPUImageMovieWriter *synchronizedMovieWriter; + AVAssetReader *reader; + AVPlayerItemVideoOutput *playerItemOutput; +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CADisplayLink *displayLink; +#else + CVDisplayLinkRef displayLink; +#endif + CMTime previousFrameTime, processingFrameTime; + CFAbsoluteTime previousActualFrameTime; + BOOL keepLooping; + + GLuint luminanceTexture, chrominanceTexture; + + GLProgram *yuvConversionProgram; + GLint yuvConversionPositionAttribute, yuvConversionTextureCoordinateAttribute; + GLint yuvConversionLuminanceTextureUniform, yuvConversionChrominanceTextureUniform; + GLint yuvConversionMatrixUniform; + const GLfloat *_preferredConversion; + + BOOL isFullYUVRange; + + int imageBufferWidth, imageBufferHeight; +} + +- (void)processAsset; + +@end + +@implementation GPUImageMovie + +@synthesize url = _url; +@synthesize asset = _asset; +@synthesize runBenchmark = _runBenchmark; +@synthesize playAtActualSpeed = _playAtActualSpeed; +@synthesize delegate = _delegate; +@synthesize shouldRepeat = _shouldRepeat; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithURL:(NSURL *)url; +{ + if (!(self = [super init])) + { + return nil; + } + + [self yuvConversionSetup]; + + self.url = url; + self.asset = nil; + + return self; +} + +- (id)initWithAsset:(AVAsset *)asset; +{ + if (!(self = [super init])) + { + return nil; + } + + [self yuvConversionSetup]; + + self.url = nil; + self.asset = asset; + + return self; +} + +- (id)initWithPlayerItem:(AVPlayerItem *)playerItem; +{ + if (!(self = [super init])) + { + return nil; + } + + [self yuvConversionSetup]; + + self.url = nil; + self.asset = nil; + self.playerItem = playerItem; + + return self; +} + +- (void)yuvConversionSetup; +{ + if ([GPUImageContext supportsFastTextureUpload]) + { + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + _preferredConversion = kColorConversion709; + isFullYUVRange = YES; + yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVFullRangeConversionForLAFragmentShaderString]; + + if (!yuvConversionProgram.initialized) + { + [yuvConversionProgram addAttribute:@"position"]; + [yuvConversionProgram addAttribute:@"inputTextureCoordinate"]; + + if (![yuvConversionProgram link]) + { + NSString *progLog = [yuvConversionProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [yuvConversionProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [yuvConversionProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + yuvConversionProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + yuvConversionPositionAttribute = [yuvConversionProgram attributeIndex:@"position"]; + yuvConversionTextureCoordinateAttribute = [yuvConversionProgram attributeIndex:@"inputTextureCoordinate"]; + yuvConversionLuminanceTextureUniform = [yuvConversionProgram uniformIndex:@"luminanceTexture"]; + yuvConversionChrominanceTextureUniform = [yuvConversionProgram uniformIndex:@"chrominanceTexture"]; + yuvConversionMatrixUniform = [yuvConversionProgram uniformIndex:@"colorConversionMatrix"]; + + [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; + + glEnableVertexAttribArray(yuvConversionPositionAttribute); + glEnableVertexAttribArray(yuvConversionTextureCoordinateAttribute); + }); + } +} + +- (void)dealloc +{ + [playerItemOutput setDelegate:nil queue:nil]; + + // Moved into endProcessing + //if (self.playerItem && (displayLink != nil)) + //{ + // [displayLink invalidate]; // remove from all run loops + // displayLink = nil; + //} +} + +#pragma mark - +#pragma mark Movie processing + +- (void)enableSynchronizedEncodingUsingMovieWriter:(GPUImageMovieWriter *)movieWriter; +{ + synchronizedMovieWriter = movieWriter; + movieWriter.encodingLiveVideo = NO; +} + +- (void)startProcessing +{ + if( self.playerItem ) { + [self processPlayerItem]; + return; + } + if(self.url == nil) + { + [self processAsset]; + return; + } + + if (_shouldRepeat) keepLooping = YES; + + previousFrameTime = kCMTimeZero; + previousActualFrameTime = CFAbsoluteTimeGetCurrent(); + + NSDictionary *inputOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; + AVURLAsset *inputAsset = [[AVURLAsset alloc] initWithURL:self.url options:inputOptions]; + + GPUImageMovie __block *blockSelf = self; + + [inputAsset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler: ^{ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSError *error = nil; + AVKeyValueStatus tracksStatus = [inputAsset statusOfValueForKey:@"tracks" error:&error]; + if (tracksStatus != AVKeyValueStatusLoaded) + { + return; + } + blockSelf.asset = inputAsset; + [blockSelf processAsset]; + blockSelf = nil; + }); + }]; +} + +- (AVAssetReader*)createAssetReader +{ + NSError *error = nil; + AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.asset error:&error]; + + NSMutableDictionary *outputSettings = [NSMutableDictionary dictionary]; + if ([GPUImageContext supportsFastTextureUpload]) { + [outputSettings setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; + isFullYUVRange = YES; + } + else { + [outputSettings setObject:@(kCVPixelFormatType_32BGRA) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; + isFullYUVRange = NO; + } + + // Maybe set alwaysCopiesSampleData to NO on iOS 5.0 for faster video decoding + AVAssetReaderTrackOutput *readerVideoTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:[[self.asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] outputSettings:outputSettings]; + readerVideoTrackOutput.alwaysCopiesSampleData = NO; + [assetReader addOutput:readerVideoTrackOutput]; + + NSArray *audioTracks = [self.asset tracksWithMediaType:AVMediaTypeAudio]; + BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) ); + AVAssetReaderTrackOutput *readerAudioTrackOutput = nil; + + if (shouldRecordAudioTrack) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES]; +#else +#warning Missing OSX implementation +#endif + + // This might need to be extended to handle movies with more than one audio track + AVAssetTrack* audioTrack = [audioTracks objectAtIndex:0]; + readerAudioTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:audioTrack outputSettings:nil]; + readerAudioTrackOutput.alwaysCopiesSampleData = NO; + [assetReader addOutput:readerAudioTrackOutput]; + } + + return assetReader; +} + +- (void)processAsset +{ + reader = [self createAssetReader]; + + AVAssetReaderOutput *readerVideoTrackOutput = nil; + AVAssetReaderOutput *readerAudioTrackOutput = nil; + + audioEncodingIsFinished = YES; + for( AVAssetReaderOutput *output in reader.outputs ) { + if( [output.mediaType isEqualToString:AVMediaTypeAudio] ) { + audioEncodingIsFinished = NO; + readerAudioTrackOutput = output; + } + else if( [output.mediaType isEqualToString:AVMediaTypeVideo] ) { + readerVideoTrackOutput = output; + } + } + + if ([reader startReading] == NO) + { + NSLog(@"Error reading from file at URL: %@", self.url); + return; + } + + __unsafe_unretained GPUImageMovie *weakSelf = self; + + if (synchronizedMovieWriter != nil) + { + [synchronizedMovieWriter setVideoInputReadyCallback:^{ + BOOL success = [weakSelf readNextVideoFrameFromOutput:readerVideoTrackOutput]; +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + return success; +#endif + }]; + + [synchronizedMovieWriter setAudioInputReadyCallback:^{ + BOOL success = [weakSelf readNextAudioSampleFromOutput:readerAudioTrackOutput]; +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + return success; +#endif + }]; + + [synchronizedMovieWriter enableSynchronizationCallbacks]; + + } + else + { + while (reader.status == AVAssetReaderStatusReading && (!_shouldRepeat || keepLooping)) + { + [weakSelf readNextVideoFrameFromOutput:readerVideoTrackOutput]; + + if ( (readerAudioTrackOutput) && (!audioEncodingIsFinished) ) + { + [weakSelf readNextAudioSampleFromOutput:readerAudioTrackOutput]; + } + + } + + if (reader.status == AVAssetReaderStatusCompleted) { + + [reader cancelReading]; + + if (keepLooping) { + reader = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + [self startProcessing]; + }); + } else { + [weakSelf endProcessing]; + } + + } + } +} + +- (void)processPlayerItem +{ + runSynchronouslyOnVideoProcessingQueue(^{ + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallback:)]; + [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; + [displayLink setPaused:YES]; +#else + // Suggested implementation: use CVDisplayLink http://stackoverflow.com/questions/14158743/alternative-of-cadisplaylink-for-mac-os-x + CGDirectDisplayID displayID = CGMainDisplayID(); + CVReturn error = kCVReturnSuccess; + error = CVDisplayLinkCreateWithCGDisplay(displayID, &displayLink); + if (error) + { + NSLog(@"DisplayLink created with error:%d", error); + displayLink = NULL; + } + CVDisplayLinkSetOutputCallback(displayLink, renderCallback, (__bridge void *)self); + CVDisplayLinkStop(displayLink); +#endif + + dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; + NSMutableDictionary *pixBuffAttributes = [NSMutableDictionary dictionary]; + if ([GPUImageContext supportsFastTextureUpload]) { + [pixBuffAttributes setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; + } + else { + [pixBuffAttributes setObject:@(kCVPixelFormatType_32BGRA) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; + } + playerItemOutput = [[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:pixBuffAttributes]; + [playerItemOutput setDelegate:self queue:videoProcessingQueue]; + + [_playerItem addOutput:playerItemOutput]; + [playerItemOutput requestNotificationOfMediaDataChangeWithAdvanceInterval:0.1]; + }); +} + +- (void)outputMediaDataWillChange:(AVPlayerItemOutput *)sender +{ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + // Restart display link. + [displayLink setPaused:NO]; +#else + CVDisplayLinkStart(displayLink); +#endif +} + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +- (void)displayLinkCallback:(CADisplayLink *)sender +{ + /* + The callback gets called once every Vsync. + Using the display link's timestamp and duration we can compute the next time the screen will be refreshed, and copy the pixel buffer for that time + This pixel buffer can then be processed and later rendered on screen. + */ + // Calculate the nextVsync time which is when the screen will be refreshed next. + CFTimeInterval nextVSync = ([sender timestamp] + [sender duration]); + + CMTime outputItemTime = [playerItemOutput itemTimeForHostTime:nextVSync]; + + [self processPixelBufferAtTime:outputItemTime]; + +} +#else +static CVReturn renderCallback(CVDisplayLinkRef displayLink, + const CVTimeStamp *inNow, + const CVTimeStamp *inOutputTime, + CVOptionFlags flagsIn, + CVOptionFlags *flagsOut, + void *displayLinkContext) +{ + // Sample code taken from here https://developer.apple.com/library/mac/samplecode/AVGreenScreenPlayer/Listings/AVGreenScreenPlayer_GSPlayerView_m.html + + GPUImageMovie *self = (__bridge GPUImageMovie *)displayLinkContext; + AVPlayerItemVideoOutput *playerItemOutput = self->playerItemOutput; + + + // The displayLink calls back at every vsync (screen refresh) + // Compute itemTime for the next vsync + CMTime outputItemTime = [playerItemOutput itemTimeForCVTimeStamp:*inOutputTime]; + + [self processPixelBufferAtTime:outputItemTime]; + + return kCVReturnSuccess; +} +#endif + +- (void)processPixelBufferAtTime:(CMTime)outputItemTime { + if ([playerItemOutput hasNewPixelBufferForItemTime:outputItemTime]) { + __unsafe_unretained GPUImageMovie *weakSelf = self; + CVPixelBufferRef pixelBuffer = [playerItemOutput copyPixelBufferForItemTime:outputItemTime itemTimeForDisplay:NULL]; + if( pixelBuffer ) + runSynchronouslyOnVideoProcessingQueue(^{ + [weakSelf processMovieFrame:pixelBuffer withSampleTime:outputItemTime]; + CFRelease(pixelBuffer); + }); + } +} + +- (BOOL)readNextVideoFrameFromOutput:(AVAssetReaderOutput *)readerVideoTrackOutput; +{ + if (reader.status == AVAssetReaderStatusReading && ! videoEncodingIsFinished) + { + CMSampleBufferRef sampleBufferRef = [readerVideoTrackOutput copyNextSampleBuffer]; + if (sampleBufferRef) + { + //NSLog(@"read a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, CMSampleBufferGetOutputPresentationTimeStamp(sampleBufferRef)))); + if (_playAtActualSpeed) + { + // Do this outside of the video processing queue to not slow that down while waiting + CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(sampleBufferRef); + CMTime differenceFromLastFrame = CMTimeSubtract(currentSampleTime, previousFrameTime); + CFAbsoluteTime currentActualTime = CFAbsoluteTimeGetCurrent(); + + CGFloat frameTimeDifference = CMTimeGetSeconds(differenceFromLastFrame); + CGFloat actualTimeDifference = currentActualTime - previousActualFrameTime; + + if (frameTimeDifference > actualTimeDifference) + { + usleep(1000000.0 * (frameTimeDifference - actualTimeDifference)); + } + + previousFrameTime = currentSampleTime; + previousActualFrameTime = CFAbsoluteTimeGetCurrent(); + } + + __unsafe_unretained GPUImageMovie *weakSelf = self; + runSynchronouslyOnVideoProcessingQueue(^{ + [weakSelf processMovieFrame:sampleBufferRef]; + CMSampleBufferInvalidate(sampleBufferRef); + CFRelease(sampleBufferRef); + }); + + return YES; + } + else + { + if (!keepLooping) { + videoEncodingIsFinished = YES; + if( videoEncodingIsFinished && audioEncodingIsFinished ) + [self endProcessing]; + } + } + } + else if (synchronizedMovieWriter != nil) + { + if (reader.status == AVAssetReaderStatusCompleted) + { + [self endProcessing]; + } + } + return NO; +} + +- (BOOL)readNextAudioSampleFromOutput:(AVAssetReaderOutput *)readerAudioTrackOutput; +{ + if (reader.status == AVAssetReaderStatusReading && ! audioEncodingIsFinished) + { + CMSampleBufferRef audioSampleBufferRef = [readerAudioTrackOutput copyNextSampleBuffer]; + if (audioSampleBufferRef) + { + //NSLog(@"read an audio frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, CMSampleBufferGetOutputPresentationTimeStamp(audioSampleBufferRef)))); + [self.audioEncodingTarget processAudioBuffer:audioSampleBufferRef]; + CFRelease(audioSampleBufferRef); + return YES; + } + else + { + if (!keepLooping) { + audioEncodingIsFinished = YES; + if( videoEncodingIsFinished && audioEncodingIsFinished ) + [self endProcessing]; + } + } + } + else if (synchronizedMovieWriter != nil) + { + if (reader.status == AVAssetReaderStatusCompleted || reader.status == AVAssetReaderStatusFailed || + reader.status == AVAssetReaderStatusCancelled) + { + [self endProcessing]; + } + } + return NO; +} + +- (void)processMovieFrame:(CMSampleBufferRef)movieSampleBuffer; +{ +// CMTimeGetSeconds +// CMTimeSubtract + + CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(movieSampleBuffer); + CVImageBufferRef movieFrame = CMSampleBufferGetImageBuffer(movieSampleBuffer); + + processingFrameTime = currentSampleTime; + [self processMovieFrame:movieFrame withSampleTime:currentSampleTime]; +} + +- (float)progress +{ + if ( AVAssetReaderStatusReading == reader.status ) + { + float current = processingFrameTime.value * 1.0f / processingFrameTime.timescale; + float duration = self.asset.duration.value * 1.0f / self.asset.duration.timescale; + return current / duration; + } + else if ( AVAssetReaderStatusCompleted == reader.status ) + { + return 1.f; + } + else + { + return 0.f; + } +} + +- (void)processMovieFrame:(CVPixelBufferRef)movieFrame withSampleTime:(CMTime)currentSampleTime +{ + int bufferHeight = (int) CVPixelBufferGetHeight(movieFrame); + int bufferWidth = (int) CVPixelBufferGetWidth(movieFrame); + + CFTypeRef colorAttachments = CVBufferGetAttachment(movieFrame, kCVImageBufferYCbCrMatrixKey, NULL); + if (colorAttachments != NULL) + { + if(CFStringCompare(colorAttachments, kCVImageBufferYCbCrMatrix_ITU_R_601_4, 0) == kCFCompareEqualTo) + { + if (isFullYUVRange) + { + _preferredConversion = kColorConversion601FullRange; + } + else + { + _preferredConversion = kColorConversion601; + } + } + else + { + _preferredConversion = kColorConversion709; + } + } + else + { + if (isFullYUVRange) + { + _preferredConversion = kColorConversion601FullRange; + } + else + { + _preferredConversion = kColorConversion601; + } + + } + + CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + + // Fix issue 1580 + [GPUImageContext useImageProcessingContext]; + + if ([GPUImageContext supportsFastTextureUpload]) + { + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CVOpenGLESTextureRef luminanceTextureRef = NULL; + CVOpenGLESTextureRef chrominanceTextureRef = NULL; +#else + CVOpenGLTextureRef luminanceTextureRef = NULL; + CVOpenGLTextureRef chrominanceTextureRef = NULL; +#endif + + // if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) + if (CVPixelBufferGetPlaneCount(movieFrame) > 0) // Check for YUV planar inputs to do RGB conversion + { + + // fix issue 2221 + CVPixelBufferLockBaseAddress(movieFrame,0); + + + if ( (imageBufferWidth != bufferWidth) && (imageBufferHeight != bufferHeight) ) + { + imageBufferWidth = bufferWidth; + imageBufferHeight = bufferHeight; + } + + CVReturn err; + // Y-plane + glActiveTexture(GL_TEXTURE4); + if ([GPUImageContext deviceSupportsRedTextures]) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); +#else + err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &luminanceTextureRef); +#endif + } + else + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); +#else + err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &luminanceTextureRef); +#endif + } + if (err) + { + NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); + } + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + luminanceTexture = CVOpenGLESTextureGetName(luminanceTextureRef); +#else + luminanceTexture = CVOpenGLTextureGetName(luminanceTextureRef); +#endif + glBindTexture(GL_TEXTURE_2D, luminanceTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + // UV-plane + glActiveTexture(GL_TEXTURE5); + if ([GPUImageContext deviceSupportsRedTextures]) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); +#else + err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &chrominanceTextureRef); +#endif + } + else + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); +#else + err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &chrominanceTextureRef); +#endif + } + if (err) + { + NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); + } + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + chrominanceTexture = CVOpenGLESTextureGetName(chrominanceTextureRef); +#else + chrominanceTexture = CVOpenGLTextureGetName(chrominanceTextureRef); +#endif + glBindTexture(GL_TEXTURE_2D, chrominanceTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + +// if (!allTargetsWantMonochromeData) +// { + [self convertYUVToRGBOutput]; +// } + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; + } + + [outputFramebuffer unlock]; + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; + } + + CVPixelBufferUnlockBaseAddress(movieFrame, 0); + CFRelease(luminanceTextureRef); + CFRelease(chrominanceTextureRef); + } + else + { + // TODO: Mesh this with the new framebuffer cache +// CVPixelBufferLockBaseAddress(movieFrame, 0); +// +// CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, movieFrame, NULL, GL_TEXTURE_2D, GL_RGBA, bufferWidth, bufferHeight, GL_BGRA, GL_UNSIGNED_BYTE, 0, &texture); +// +// if (!texture || err) { +// NSLog(@"Movie CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err); +// NSAssert(NO, @"Camera failure"); +// return; +// } +// +// outputTexture = CVOpenGLESTextureGetName(texture); +// // glBindTexture(CVOpenGLESTextureGetTarget(texture), outputTexture); +// glBindTexture(GL_TEXTURE_2D, outputTexture); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +// +// for (id currentTarget in targets) +// { +// NSInteger indexOfObject = [targets indexOfObject:currentTarget]; +// NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; +// +// [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; +// [currentTarget setInputTexture:outputTexture atIndex:targetTextureIndex]; +// +// [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; +// } +// +// CVPixelBufferUnlockBaseAddress(movieFrame, 0); +// CVOpenGLESTextureCacheFlush(coreVideoTextureCache, 0); +// CFRelease(texture); +// +// outputTexture = 0; + } + } + else + { + // Upload to texture + CVPixelBufferLockBaseAddress(movieFrame, 0); + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(bufferWidth, bufferHeight) textureOptions:self.outputTextureOptions onlyTexture:YES]; + + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + // Using BGRA extension to pull in video frame data directly + glTexImage2D(GL_TEXTURE_2D, + 0, + self.outputTextureOptions.internalFormat, + bufferWidth, + bufferHeight, + 0, + self.outputTextureOptions.format, + self.outputTextureOptions.type, + CVPixelBufferGetBaseAddress(movieFrame)); + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; + } + + [outputFramebuffer unlock]; + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; + } + CVPixelBufferUnlockBaseAddress(movieFrame, 0); + } + + if (_runBenchmark) + { + CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); + NSLog(@"Current frame time : %f ms", 1000.0 * currentFrameTime); + } +} + +- (void)endProcessing; +{ + keepLooping = NO; +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [displayLink setPaused:YES]; +#else + CVDisplayLinkStop(displayLink); +#endif + + for (id currentTarget in targets) + { + [currentTarget endProcessing]; + } + + if (synchronizedMovieWriter != nil) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [synchronizedMovieWriter setVideoInputReadyCallback:^{return NO;}]; + [synchronizedMovieWriter setAudioInputReadyCallback:^{return NO;}]; +#else + // I'm not sure about this, meybe setting a nil will be more appropriate then an empty block + [synchronizedMovieWriter setVideoInputReadyCallback:^{}]; + [synchronizedMovieWriter setAudioInputReadyCallback:^{}]; +#endif + } + + if (self.playerItem && (displayLink != nil)) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [displayLink invalidate]; // remove from all run loops + displayLink = nil; +#else + CVDisplayLinkStop(displayLink); + displayLink = NULL; +#endif + } + + if ([self.delegate respondsToSelector:@selector(didCompletePlayingMovie)]) { + [self.delegate didCompletePlayingMovie]; + } + self.delegate = nil; +} + +- (void)cancelProcessing +{ + if (reader) { + [reader cancelReading]; + } + [self endProcessing]; +} + +- (void)convertYUVToRGBOutput; +{ + [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(imageBufferWidth, imageBufferHeight) onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + static const GLfloat squareVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + static const GLfloat textureCoordinates[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 1.0f, + }; + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, luminanceTexture); + glUniform1i(yuvConversionLuminanceTextureUniform, 4); + + glActiveTexture(GL_TEXTURE5); + glBindTexture(GL_TEXTURE_2D, chrominanceTexture); + glUniform1i(yuvConversionChrominanceTextureUniform, 5); + + glUniformMatrix3fv(yuvConversionMatrixUniform, 1, GL_FALSE, _preferredConversion); + + glVertexAttribPointer(yuvConversionPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); + glVertexAttribPointer(yuvConversionTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); +} + +- (AVAssetReader*)assetReader { + return reader; +} + +- (BOOL)audioEncodingIsFinished { + return audioEncodingIsFinished; +} + +- (BOOL)videoEncodingIsFinished { + return videoEncodingIsFinished; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.h b/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.h new file mode 100644 index 00000000..00e43814 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.h @@ -0,0 +1,21 @@ +// +// GPUImageMovieComposition.h +// Givit +// +// Created by Sean Meiners on 2013/01/25. +// +// + +#import "GPUImageMovie.h" + +@interface GPUImageMovieComposition : GPUImageMovie + +@property (readwrite, retain) AVComposition *compositon; +@property (readwrite, retain) AVVideoComposition *videoComposition; +@property (readwrite, retain) AVAudioMix *audioMix; + +- (id)initWithComposition:(AVComposition*)compositon + andVideoComposition:(AVVideoComposition*)videoComposition + andAudioMix:(AVAudioMix*)audioMix; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m b/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m new file mode 100644 index 00000000..6138fffe --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m @@ -0,0 +1,70 @@ +// +// GPUImageMovieComposition.m +// Givit +// +// Created by Sean Meiners on 2013/01/25. +// +// + +#import "GPUImageMovieComposition.h" +#import "GPUImageMovieWriter.h" + +@implementation GPUImageMovieComposition + +@synthesize compositon = _compositon; +@synthesize videoComposition = _videoComposition; +@synthesize audioMix = _audioMix; + +- (id)initWithComposition:(AVComposition*)compositon + andVideoComposition:(AVVideoComposition*)videoComposition + andAudioMix:(AVAudioMix*)audioMix { + if (!(self = [super init])) + { + return nil; + } + + [self yuvConversionSetup]; + + self.compositon = compositon; + self.videoComposition = videoComposition; + self.audioMix = audioMix; + + return self; +} + +- (AVAssetReader*)createAssetReader + { + //NSLog(@"creating reader from composition: %@, video: %@, audio: %@ with duration: %@", _compositon, _videoComposition, _audioMix, CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, _compositon.duration))); + + NSError *error = nil; + AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.compositon error:&error]; + + NSDictionary *outputSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)}; + AVAssetReaderVideoCompositionOutput *readerVideoOutput = [AVAssetReaderVideoCompositionOutput assetReaderVideoCompositionOutputWithVideoTracks:[_compositon tracksWithMediaType:AVMediaTypeVideo] + videoSettings:outputSettings]; +#if ! TARGET_IPHONE_SIMULATOR + if( [_videoComposition isKindOfClass:[AVMutableVideoComposition class]] ) + [(AVMutableVideoComposition*)_videoComposition setRenderScale:1.0]; +#endif + readerVideoOutput.videoComposition = self.videoComposition; + readerVideoOutput.alwaysCopiesSampleData = NO; + [assetReader addOutput:readerVideoOutput]; + + NSArray *audioTracks = [_compositon tracksWithMediaType:AVMediaTypeAudio]; + BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) ); + AVAssetReaderAudioMixOutput *readerAudioOutput = nil; + + if (shouldRecordAudioTrack) + { + [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES]; + + readerAudioOutput = [AVAssetReaderAudioMixOutput assetReaderAudioMixOutputWithAudioTracks:audioTracks audioSettings:nil]; + readerAudioOutput.audioMix = self.audioMix; + readerAudioOutput.alwaysCopiesSampleData = NO; + [assetReader addOutput:readerAudioOutput]; + } + + return assetReader; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.h new file mode 100755 index 00000000..5ebc28bb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageMultiplyBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m new file mode 100755 index 00000000..ed647072 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m @@ -0,0 +1,52 @@ +#import "GPUImageMultiplyBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageMultiplyBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = overlayer * base + overlayer * (1.0 - base.a) + base * (1.0 - overlayer.a); + } +); +#else +NSString *const kGPUImageMultiplyBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = overlayer * base + overlayer * (1.0 - base.a) + base * (1.0 - overlayer.a); + } +); +#endif + +@implementation GPUImageMultiplyBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageMultiplyBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.h new file mode 100644 index 00000000..963fd66a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.h @@ -0,0 +1,12 @@ +#import "GPUImageHarrisCornerDetectionFilter.h" + +/** Noble corner detector + + This is the Noble variant on the Harris detector, from + Alison Noble, "Descriptions of Image Surfaces", PhD thesis, Department of Engineering Science, Oxford University 1989, p45. +*/ + + +@interface GPUImageNobleCornerDetectionFilter : GPUImageHarrisCornerDetectionFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m new file mode 100644 index 00000000..aa6b3041 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m @@ -0,0 +1,74 @@ +#import "GPUImageNobleCornerDetectionFilter.h" + +@implementation GPUImageNobleCornerDetectionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageNobleCornerDetectionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float sensitivity; + + void main() + { + mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; + + mediump float derivativeSum = derivativeElements.x + derivativeElements.y; + + // R = (Ix^2 * Iy^2 - Ixy * Ixy) / (Ix^2 + Iy^2) + mediump float zElement = (derivativeElements.z * 2.0) - 1.0; + // mediump float harrisIntensity = (derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z)) / (derivativeSum); + mediump float cornerness = (derivativeElements.x * derivativeElements.y - (zElement * zElement)) / (derivativeSum); + + // Original Harris detector + // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 + // highp float harrisIntensity = derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z) - harrisConstant * derivativeSum * derivativeSum; + + // gl_FragColor = vec4(vec3(harrisIntensity * 7.0), 1.0); + gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); + } +); +#else +NSString *const kGPUImageNobleCornerDetectionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float sensitivity; + + void main() + { + vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; + + float derivativeSum = derivativeElements.x + derivativeElements.y; + + // R = (Ix^2 * Iy^2 - Ixy * Ixy) / (Ix^2 + Iy^2) + float zElement = (derivativeElements.z * 2.0) - 1.0; + // mediump float harrisIntensity = (derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z)) / (derivativeSum); + float cornerness = (derivativeElements.x * derivativeElements.y - (zElement * zElement)) / (derivativeSum); + + // Original Harris detector + // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 + // highp float harrisIntensity = derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z) - harrisConstant * derivativeSum * derivativeSum; + + // gl_FragColor = vec4(vec3(harrisIntensity * 7.0), 1.0); + gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageNobleCornerDetectionFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.h new file mode 100644 index 00000000..fd8fe6d6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m new file mode 100644 index 00000000..eaf7ce56 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m @@ -0,0 +1,107 @@ +#import "GPUImageNonMaximumSuppressionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageNonMaximumSuppressionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying highp vec2 textureCoordinate; + varying highp vec2 leftTextureCoordinate; + varying highp vec2 rightTextureCoordinate; + + varying highp vec2 topTextureCoordinate; + varying highp vec2 topLeftTextureCoordinate; + varying highp vec2 topRightTextureCoordinate; + + varying highp vec2 bottomTextureCoordinate; + varying highp vec2 bottomLeftTextureCoordinate; + varying highp vec2 bottomRightTextureCoordinate; + + void main() + { + lowp float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; + lowp float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + lowp float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + lowp vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + lowp float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; + lowp float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; + lowp float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; + lowp float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; + lowp float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + + // Use a tiebreaker for pixels to the left and immediately above this one + lowp float multiplier = 1.0 - step(centerColor.r, topColor); + multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); + + lowp float maxValue = max(centerColor.r, bottomColor); + maxValue = max(maxValue, bottomRightColor); + maxValue = max(maxValue, rightColor); + maxValue = max(maxValue, topRightColor); + + gl_FragColor = vec4((centerColor.rgb * step(maxValue, centerColor.r) * multiplier), 1.0); + } +); +#else +NSString *const kGPUImageNonMaximumSuppressionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + void main() + { + float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; + float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; + float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + + // Use a tiebreaker for pixels to the left and immediately above this one + float multiplier = 1.0 - step(centerColor.r, topColor); + multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); + + float maxValue = max(centerColor.r, bottomColor); + maxValue = max(maxValue, bottomRightColor); + maxValue = max(maxValue, rightColor); + maxValue = max(maxValue, topRightColor); + + gl_FragColor = vec4((centerColor.rgb * step(maxValue, centerColor.r) * multiplier), 1.0); + } +); +#endif + +@implementation GPUImageNonMaximumSuppressionFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageNonMaximumSuppressionFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.h new file mode 100644 index 00000000..ce5e22b4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.h @@ -0,0 +1,8 @@ +// Created by Jorge Garcia on 9/5/12. +// + +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageNormalBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m new file mode 100644 index 00000000..f5b5069d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m @@ -0,0 +1,96 @@ +// Created by Jorge Garcia on 9/5/12. + +#import "GPUImageNormalBlendFilter.h" +/* + This equation is a simplification of the general blending equation. It assumes the destination color is opaque, and therefore drops the destination color's alpha term. + + D = C1 * C1a + C2 * C2a * (1 - C1a) + where D is the resultant color, C1 is the color of the first element, C1a is the alpha of the first element, C2 is the second element color, C2a is the alpha of the second element. The destination alpha is calculated with: + + Da = C1a + C2a * (1 - C1a) + The resultant color is premultiplied with the alpha. To restore the color to the unmultiplied values, just divide by Da, the resultant alpha. + + http://stackoverflow.com/questions/1724946/blend-mode-on-a-transparent-and-semi-transparent-background + + For some reason Photoshop behaves + D = C1 + C2 * C2a * (1 - C1a) + */ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 c2 = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2); + + lowp vec4 outputColor; + +// outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a); +// outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a); +// outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a); +// outputColor.a = c1.a + c2.a * (1.0 - c1.a); + + lowp float a = c1.a + c2.a * (1.0 - c1.a); + lowp float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output + + outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor; + outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor; + outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor; + outputColor.a = a; + + gl_FragColor = outputColor; + } +); +#else +NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 c2 = texture2D(inputImageTexture, textureCoordinate); + vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2); + + vec4 outputColor; + + // outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a); + // outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a); + // outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a); + // outputColor.a = c1.a + c2.a * (1.0 - c1.a); + + float a = c1.a + c2.a * (1.0 - c1.a); + float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output + + outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor; + outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor; + outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor; + outputColor.a = a; + + gl_FragColor = outputColor; + } +); +#endif + +@implementation GPUImageNormalBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageNormalBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.h new file mode 100644 index 00000000..826749fb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageFilter.h" + +@interface GPUImageOpacityFilter : GPUImageFilter +{ + GLint opacityUniform; +} + +// Opacity ranges from 0.0 to 1.0, with 1.0 as the normal setting +@property(readwrite, nonatomic) CGFloat opacity; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m new file mode 100644 index 00000000..b74acb60 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m @@ -0,0 +1,65 @@ +#import "GPUImageOpacityFilter.h" + +@implementation GPUImageOpacityFilter + +@synthesize opacity = _opacity; + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageOpacityFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float opacity; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); + } +); +#else +NSString *const kGPUImageOpacityFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float opacity; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageOpacityFragmentShaderString])) + { + return nil; + } + + opacityUniform = [filterProgram uniformIndex:@"opacity"]; + self.opacity = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setOpacity:(CGFloat)newValue; +{ + _opacity = newValue; + + [self setFloat:_opacity forUniform:opacityUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.h new file mode 100644 index 00000000..3e4f7545 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageErosionFilter; +@class GPUImageDilationFilter; + +// A filter that first performs an erosion on the red channel of an image, followed by a dilation of the same radius. +// This helps to filter out smaller bright elements. + +@interface GPUImageOpeningFilter : GPUImageFilterGroup +{ + GPUImageErosionFilter *erosionFilter; + GPUImageDilationFilter *dilationFilter; +} + +@property(readwrite, nonatomic) CGFloat verticalTexelSpacing, horizontalTexelSpacing; + +- (id)initWithRadius:(NSUInteger)radius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m new file mode 100644 index 00000000..4e7a5653 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m @@ -0,0 +1,57 @@ +#import "GPUImageOpeningFilter.h" +#import "GPUImageErosionFilter.h" +#import "GPUImageDilationFilter.h" + +@implementation GPUImageOpeningFilter + +@synthesize verticalTexelSpacing = _verticalTexelSpacing; +@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +- (id)initWithRadius:(NSUInteger)radius; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: erosion + erosionFilter = [[GPUImageErosionFilter alloc] initWithRadius:radius]; + [self addFilter:erosionFilter]; + + // Second pass: dilation + dilationFilter = [[GPUImageDilationFilter alloc] initWithRadius:radius]; + [self addFilter:dilationFilter]; + + [erosionFilter addTarget:dilationFilter]; + + self.initialFilters = [NSArray arrayWithObjects:erosionFilter, nil]; + self.terminalFilter = dilationFilter; + + return self; +} + +- (void)setVerticalTexelSpacing:(CGFloat)newValue; +{ + _verticalTexelSpacing = newValue; + erosionFilter.verticalTexelSpacing = newValue; + dilationFilter.verticalTexelSpacing = newValue; +} + +- (void)setHorizontalTexelSpacing:(CGFloat)newValue; +{ + _horizontalTexelSpacing = newValue; + erosionFilter.horizontalTexelSpacing = newValue; + dilationFilter.horizontalTexelSpacing = newValue; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOutput.h b/LFLiveKit/Vendor/GPUImage/GPUImageOutput.h new file mode 100755 index 00000000..c10121a9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOutput.h @@ -0,0 +1,128 @@ +#import "GPUImageContext.h" +#import "GPUImageFramebuffer.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#import +#else +// For now, just redefine this on the Mac +typedef NS_ENUM(NSInteger, UIImageOrientation) { + UIImageOrientationUp, // default orientation + UIImageOrientationDown, // 180 deg rotation + UIImageOrientationLeft, // 90 deg CCW + UIImageOrientationRight, // 90 deg CW + UIImageOrientationUpMirrored, // as above but image mirrored along other axis. horizontal flip + UIImageOrientationDownMirrored, // horizontal flip + UIImageOrientationLeftMirrored, // vertical flip + UIImageOrientationRightMirrored, // vertical flip +}; +#endif + +dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void); +void runOnMainQueueWithoutDeadlocking(void (^block)(void)); +void runSynchronouslyOnVideoProcessingQueue(void (^block)(void)); +void runAsynchronouslyOnVideoProcessingQueue(void (^block)(void)); +void runSynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)); +void runAsynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)); +void reportAvailableMemoryForGPUImage(NSString *tag); + +@class GPUImageMovieWriter; + +/** GPUImage's base source object + + Images or frames of video are uploaded from source objects, which are subclasses of GPUImageOutput. These include: + + - GPUImageVideoCamera (for live video from an iOS camera) + - GPUImageStillCamera (for taking photos with the camera) + - GPUImagePicture (for still images) + - GPUImageMovie (for movies) + + Source objects upload still image frames to OpenGL ES as textures, then hand those textures off to the next objects in the processing chain. + */ +@interface GPUImageOutput : NSObject +{ + GPUImageFramebuffer *outputFramebuffer; + + NSMutableArray *targets, *targetTextureIndices; + + CGSize inputTextureSize, cachedMaximumOutputSize, forcedMaximumSize; + + BOOL overrideInputSize; + + BOOL allTargetsWantMonochromeData; + BOOL usingNextFrameForImageCapture; +} + +@property(readwrite, nonatomic) BOOL shouldSmoothlyScaleOutput; +@property(readwrite, nonatomic) BOOL shouldIgnoreUpdatesToThisTarget; +@property(readwrite, nonatomic, retain) GPUImageMovieWriter *audioEncodingTarget; +@property(readwrite, nonatomic, unsafe_unretained) id targetToIgnoreForUpdates; +@property(nonatomic, copy) void(^frameProcessingCompletionBlock)(GPUImageOutput*, CMTime); +@property(nonatomic) BOOL enabled; +@property(readwrite, nonatomic) GPUTextureOptions outputTextureOptions; + +/// @name Managing targets +- (void)setInputFramebufferForTarget:(id)target atIndex:(NSInteger)inputTextureIndex; +- (GPUImageFramebuffer *)framebufferForOutput; +- (void)removeOutputFramebuffer; +- (void)notifyTargetsAboutNewOutputTexture; + +/** Returns an array of the current targets. + */ +- (NSArray*)targets; + +/** Adds a target to receive notifications when new frames are available. + + The target will be asked for its next available texture. + + See [GPUImageInput newFrameReadyAtTime:] + + @param newTarget Target to be added + */ +- (void)addTarget:(id)newTarget; + +/** Adds a target to receive notifications when new frames are available. + + See [GPUImageInput newFrameReadyAtTime:] + + @param newTarget Target to be added + */ +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; + +/** Removes a target. The target will no longer receive notifications when new frames are available. + + @param targetToRemove Target to be removed + */ +- (void)removeTarget:(id)targetToRemove; + +/** Removes all targets. + */ +- (void)removeAllTargets; + +/// @name Manage the output texture + +- (void)forceProcessingAtSize:(CGSize)frameSize; +- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; + +/// @name Still image processing + +- (void)useNextFrameForImageCapture; +- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; +- (CGImageRef)newCGImageByFilteringCGImage:(CGImageRef)imageToFilter; + +// Platform-specific image output methods +// If you're trying to use these methods, remember that you need to set -useNextFrameForImageCapture before running -processImage or running video and calling any of these methods, or you will get a nil image +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +- (UIImage *)imageFromCurrentFramebuffer; +- (UIImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; +- (UIImage *)imageByFilteringImage:(UIImage *)imageToFilter; +- (CGImageRef)newCGImageByFilteringImage:(UIImage *)imageToFilter; +#else +- (NSImage *)imageFromCurrentFramebuffer; +- (NSImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; +- (NSImage *)imageByFilteringImage:(NSImage *)imageToFilter; +- (CGImageRef)newCGImageByFilteringImage:(NSImage *)imageToFilter; +#endif + +- (BOOL)providesMonochromeOutput; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOutput.m b/LFLiveKit/Vendor/GPUImage/GPUImageOutput.m new file mode 100755 index 00000000..d9bdaefa --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOutput.m @@ -0,0 +1,439 @@ +#import "GPUImageOutput.h" +#import "GPUImageMovieWriter.h" +#import "GPUImagePicture.h" +#import + +dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void) +{ +#if TARGET_OS_IPHONE + if ([[[UIDevice currentDevice] systemVersion] compare:@"9.0" options:NSNumericSearch] != NSOrderedAscending) + { + return dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_DEFAULT, 0); + } +#endif + return nil; +} + +void runOnMainQueueWithoutDeadlocking(void (^block)(void)) +{ + if ([NSThread isMainThread]) + { + block(); + } + else + { + dispatch_sync(dispatch_get_main_queue(), block); + } +} + +void runSynchronouslyOnVideoProcessingQueue(void (^block)(void)) +{ + dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; +#if !OS_OBJECT_USE_OBJC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if (dispatch_get_current_queue() == videoProcessingQueue) +#pragma clang diagnostic pop +#else + if (dispatch_get_specific([GPUImageContext contextKey])) +#endif + { + block(); + }else + { + dispatch_sync(videoProcessingQueue, block); + } +} + +void runAsynchronouslyOnVideoProcessingQueue(void (^block)(void)) +{ + dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; + +#if !OS_OBJECT_USE_OBJC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if (dispatch_get_current_queue() == videoProcessingQueue) +#pragma clang diagnostic pop +#else + if (dispatch_get_specific([GPUImageContext contextKey])) +#endif + { + block(); + }else + { + dispatch_async(videoProcessingQueue, block); + } +} + +void runSynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)) +{ + dispatch_queue_t videoProcessingQueue = [context contextQueue]; +#if !OS_OBJECT_USE_OBJC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if (dispatch_get_current_queue() == videoProcessingQueue) +#pragma clang diagnostic pop +#else + if (dispatch_get_specific([GPUImageContext contextKey])) +#endif + { + block(); + }else + { + dispatch_sync(videoProcessingQueue, block); + } +} + +void runAsynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)) +{ + dispatch_queue_t videoProcessingQueue = [context contextQueue]; + +#if !OS_OBJECT_USE_OBJC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if (dispatch_get_current_queue() == videoProcessingQueue) +#pragma clang diagnostic pop +#else + if (dispatch_get_specific([GPUImageContext contextKey])) +#endif + { + block(); + }else + { + dispatch_async(videoProcessingQueue, block); + } +} + +void reportAvailableMemoryForGPUImage(NSString *tag) +{ + if (!tag) + tag = @"Default"; + + struct task_basic_info info; + + mach_msg_type_number_t size = sizeof(info); + + kern_return_t kerr = task_info(mach_task_self(), + + TASK_BASIC_INFO, + + (task_info_t)&info, + + &size); + if( kerr == KERN_SUCCESS ) { + NSLog(@"%@ - Memory used: %u", tag, (unsigned int)info.resident_size); //in bytes + } else { + NSLog(@"%@ - Error: %s", tag, mach_error_string(kerr)); + } +} + +@implementation GPUImageOutput + +@synthesize shouldSmoothlyScaleOutput = _shouldSmoothlyScaleOutput; +@synthesize shouldIgnoreUpdatesToThisTarget = _shouldIgnoreUpdatesToThisTarget; +@synthesize audioEncodingTarget = _audioEncodingTarget; +@synthesize targetToIgnoreForUpdates = _targetToIgnoreForUpdates; +@synthesize frameProcessingCompletionBlock = _frameProcessingCompletionBlock; +@synthesize enabled = _enabled; +@synthesize outputTextureOptions = _outputTextureOptions; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + targets = [[NSMutableArray alloc] init]; + targetTextureIndices = [[NSMutableArray alloc] init]; + _enabled = YES; + allTargetsWantMonochromeData = YES; + usingNextFrameForImageCapture = NO; + + // set default texture options + _outputTextureOptions.minFilter = GL_LINEAR; + _outputTextureOptions.magFilter = GL_LINEAR; + _outputTextureOptions.wrapS = GL_CLAMP_TO_EDGE; + _outputTextureOptions.wrapT = GL_CLAMP_TO_EDGE; + _outputTextureOptions.internalFormat = GL_RGBA; + _outputTextureOptions.format = GL_BGRA; + _outputTextureOptions.type = GL_UNSIGNED_BYTE; + + return self; +} + +- (void)dealloc +{ + [self removeAllTargets]; +} + +#pragma mark - +#pragma mark Managing targets + +- (void)setInputFramebufferForTarget:(id)target atIndex:(NSInteger)inputTextureIndex; +{ + [target setInputFramebuffer:[self framebufferForOutput] atIndex:inputTextureIndex]; +} + +- (GPUImageFramebuffer *)framebufferForOutput; +{ + return outputFramebuffer; +} + +- (void)removeOutputFramebuffer; +{ + outputFramebuffer = nil; +} + +- (void)notifyTargetsAboutNewOutputTexture; +{ + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [self setInputFramebufferForTarget:currentTarget atIndex:textureIndex]; + } +} + +- (NSArray*)targets; +{ + return [NSArray arrayWithArray:targets]; +} + +- (void)addTarget:(id)newTarget; +{ + NSInteger nextAvailableTextureIndex = [newTarget nextAvailableTextureIndex]; + [self addTarget:newTarget atTextureLocation:nextAvailableTextureIndex]; + + if ([newTarget shouldIgnoreUpdatesToThisTarget]) + { + _targetToIgnoreForUpdates = newTarget; + } +} + +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; +{ + if([targets containsObject:newTarget]) + { + return; + } + + cachedMaximumOutputSize = CGSizeZero; + runSynchronouslyOnVideoProcessingQueue(^{ + [self setInputFramebufferForTarget:newTarget atIndex:textureLocation]; + [targets addObject:newTarget]; + [targetTextureIndices addObject:[NSNumber numberWithInteger:textureLocation]]; + + allTargetsWantMonochromeData = allTargetsWantMonochromeData && [newTarget wantsMonochromeInput]; + }); +} + +- (void)removeTarget:(id)targetToRemove; +{ + if(![targets containsObject:targetToRemove]) + { + return; + } + + if (_targetToIgnoreForUpdates == targetToRemove) + { + _targetToIgnoreForUpdates = nil; + } + + cachedMaximumOutputSize = CGSizeZero; + + NSInteger indexOfObject = [targets indexOfObject:targetToRemove]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + runSynchronouslyOnVideoProcessingQueue(^{ + [targetToRemove setInputSize:CGSizeZero atIndex:textureIndexOfTarget]; + [targetToRemove setInputRotation:kGPUImageNoRotation atIndex:textureIndexOfTarget]; + + [targetTextureIndices removeObjectAtIndex:indexOfObject]; + [targets removeObject:targetToRemove]; + [targetToRemove endProcessing]; + }); +} + +- (void)removeAllTargets; +{ + cachedMaximumOutputSize = CGSizeZero; + runSynchronouslyOnVideoProcessingQueue(^{ + for (id targetToRemove in targets) + { + NSInteger indexOfObject = [targets indexOfObject:targetToRemove]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [targetToRemove setInputSize:CGSizeZero atIndex:textureIndexOfTarget]; + [targetToRemove setInputRotation:kGPUImageNoRotation atIndex:textureIndexOfTarget]; + } + [targets removeAllObjects]; + [targetTextureIndices removeAllObjects]; + + allTargetsWantMonochromeData = YES; + }); +} + +#pragma mark - +#pragma mark Manage the output texture + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + +} + +- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; +{ +} + +#pragma mark - +#pragma mark Still image processing + +- (void)useNextFrameForImageCapture; +{ + +} + +- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; +{ + return nil; +} + +- (CGImageRef)newCGImageByFilteringCGImage:(CGImageRef)imageToFilter; +{ + GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithCGImage:imageToFilter]; + + [self useNextFrameForImageCapture]; + [stillImageSource addTarget:(id)self]; + [stillImageSource processImage]; + + CGImageRef processedImage = [self newCGImageFromCurrentlyProcessedOutput]; + + [stillImageSource removeTarget:(id)self]; + return processedImage; +} + +- (BOOL)providesMonochromeOutput; +{ + return NO; +} + +#pragma mark - +#pragma mark Platform-specific image output methods + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + +- (UIImage *)imageFromCurrentFramebuffer; +{ + UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation]; + UIImageOrientation imageOrientation = UIImageOrientationLeft; + switch (deviceOrientation) + { + case UIDeviceOrientationPortrait: + imageOrientation = UIImageOrientationUp; + break; + case UIDeviceOrientationPortraitUpsideDown: + imageOrientation = UIImageOrientationDown; + break; + case UIDeviceOrientationLandscapeLeft: + imageOrientation = UIImageOrientationLeft; + break; + case UIDeviceOrientationLandscapeRight: + imageOrientation = UIImageOrientationRight; + break; + default: + imageOrientation = UIImageOrientationUp; + break; + } + + return [self imageFromCurrentFramebufferWithOrientation:imageOrientation]; +} + +- (UIImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; +{ + CGImageRef cgImageFromBytes = [self newCGImageFromCurrentlyProcessedOutput]; + UIImage *finalImage = [UIImage imageWithCGImage:cgImageFromBytes scale:1.0 orientation:imageOrientation]; + CGImageRelease(cgImageFromBytes); + + return finalImage; +} + +- (UIImage *)imageByFilteringImage:(UIImage *)imageToFilter; +{ + CGImageRef image = [self newCGImageByFilteringCGImage:[imageToFilter CGImage]]; + UIImage *processedImage = [UIImage imageWithCGImage:image scale:[imageToFilter scale] orientation:[imageToFilter imageOrientation]]; + CGImageRelease(image); + return processedImage; +} + +- (CGImageRef)newCGImageByFilteringImage:(UIImage *)imageToFilter +{ + return [self newCGImageByFilteringCGImage:[imageToFilter CGImage]]; +} + +#else + +- (NSImage *)imageFromCurrentFramebuffer; +{ + return [self imageFromCurrentFramebufferWithOrientation:UIImageOrientationLeft]; +} + +- (NSImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; +{ + CGImageRef cgImageFromBytes = [self newCGImageFromCurrentlyProcessedOutput]; + NSImage *finalImage = [[NSImage alloc] initWithCGImage:cgImageFromBytes size:NSZeroSize]; + CGImageRelease(cgImageFromBytes); + + return finalImage; +} + +- (NSImage *)imageByFilteringImage:(NSImage *)imageToFilter; +{ + CGImageRef image = [self newCGImageByFilteringCGImage:[imageToFilter CGImageForProposedRect:NULL context:[NSGraphicsContext currentContext] hints:nil]]; + NSImage *processedImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize]; + CGImageRelease(image); + return processedImage; +} + +- (CGImageRef)newCGImageByFilteringImage:(NSImage *)imageToFilter +{ + return [self newCGImageByFilteringCGImage:[imageToFilter CGImageForProposedRect:NULL context:[NSGraphicsContext currentContext] hints:nil]]; +} + +#endif + +#pragma mark - +#pragma mark Accessors + +- (void)setAudioEncodingTarget:(GPUImageMovieWriter *)newValue; +{ + _audioEncodingTarget = newValue; + if( ! _audioEncodingTarget.hasAudioTrack ) + { + _audioEncodingTarget.hasAudioTrack = YES; + } +} + +-(void)setOutputTextureOptions:(GPUTextureOptions)outputTextureOptions +{ + _outputTextureOptions = outputTextureOptions; + + if( outputFramebuffer.texture ) + { + glBindTexture(GL_TEXTURE_2D, outputFramebuffer.texture); + //_outputTextureOptions.format + //_outputTextureOptions.internalFormat + //_outputTextureOptions.magFilter + //_outputTextureOptions.minFilter + //_outputTextureOptions.type + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _outputTextureOptions.wrapS); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _outputTextureOptions.wrapT); + glBindTexture(GL_TEXTURE_2D, 0); + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.h new file mode 100755 index 00000000..57eb8402 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageOverlayBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m new file mode 100755 index 00000000..c8c5185d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m @@ -0,0 +1,94 @@ +#import "GPUImageOverlayBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageOverlayBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + mediump float ra; + if (2.0 * base.r < base.a) { + ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } else { + ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } + + mediump float ga; + if (2.0 * base.g < base.a) { + ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } else { + ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } + + mediump float ba; + if (2.0 * base.b < base.a) { + ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } else { + ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } + + gl_FragColor = vec4(ra, ga, ba, 1.0); + } +); +#else +NSString *const kGPUImageOverlayBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + float ra; + if (2.0 * base.r < base.a) { + ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } else { + ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); + } + + float ga; + if (2.0 * base.g < base.a) { + ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } else { + ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); + } + + float ba; + if (2.0 * base.b < base.a) { + ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } else { + ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); + } + + gl_FragColor = vec4(ra, ga, ba, 1.0); + } +); +#endif + +@implementation GPUImageOverlayBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageOverlayBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h new file mode 100644 index 00000000..aa8f3f47 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h @@ -0,0 +1,16 @@ +#import "GPUImageFilter.h" + +// This is an accumulator that uses a Hough transform in parallel coordinate space to identify probable lines in a scene. +// +// It is entirely based on the work of the Graph@FIT research group at the Brno University of Technology and their publications: +// M. Dubská, J. Havel, and A. Herout. Real-Time Detection of Lines using Parallel Coordinates and OpenGL. Proceedings of SCCG 2011, Bratislava, SK, p. 7. +// M. Dubská, J. Havel, and A. Herout. PClines — Line detection using parallel coordinates. 2011 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), p. 1489- 1494. + +@interface GPUImageParallelCoordinateLineTransformFilter : GPUImageFilter +{ + GLubyte *rawImagePixels; + GLfloat *lineCoordinates; + unsigned int maxLinePairsToRender, linePairsToRender; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m new file mode 100644 index 00000000..0a2f6e49 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m @@ -0,0 +1,266 @@ +#import "GPUImageParallelCoordinateLineTransformFilter.h" + +NSString *const kGPUImageHoughAccumulationVertexShaderString = SHADER_STRING +( + attribute vec4 position; + + void main() + { + gl_Position = position; + } +); + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageHoughAccumulationFragmentShaderString = SHADER_STRING +( + const lowp float scalingFactor = 1.0 / 256.0; + + void main() + { + gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); + } +); + +// highp - 16-bit, floating point range: -2^62 to 2^62, integer range: -2^16 to 2^16 +// NOTE: See below for where I'm tacking on the required extension as a prefix +NSString *const kGPUImageHoughAccumulationFBOReadFragmentShaderString = SHADER_STRING +( + const lowp float scalingFactor = 0.004; +// const lowp float scalingFactor = 0.1; + + void main() + { + mediump vec4 fragmentData = gl_LastFragData[0]; + + fragmentData.r = fragmentData.r + scalingFactor; + fragmentData.g = scalingFactor * floor(fragmentData.r) + fragmentData.g; + fragmentData.b = scalingFactor * floor(fragmentData.g) + fragmentData.b; + fragmentData.a = scalingFactor * floor(fragmentData.b) + fragmentData.a; + + fragmentData = fract(fragmentData); + + gl_FragColor = vec4(fragmentData.rgb, 1.0); + } +); + +#else +NSString *const kGPUImageHoughAccumulationFragmentShaderString = SHADER_STRING +( + const float scalingFactor = 1.0 / 256.0; + + void main() + { + gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); + } +); + +NSString *const kGPUImageHoughAccumulationFBOReadFragmentShaderString = SHADER_STRING +( + const float scalingFactor = 1.0 / 256.0; + + void main() + { + // gl_FragColor = vec4(scalingFactor, scalingFactor, scalingFactor, 1.0); + gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); + } +); +#endif + +@interface GPUImageParallelCoordinateLineTransformFilter() +// Rendering +- (void)generateLineCoordinates; + +@end + +@implementation GPUImageParallelCoordinateLineTransformFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + NSString *fragmentShaderToUse = nil; + + if ([GPUImageContext deviceSupportsFramebufferReads]) + { + fragmentShaderToUse = [NSString stringWithFormat:@"#extension GL_EXT_shader_framebuffer_fetch : require\n %@",kGPUImageHoughAccumulationFBOReadFragmentShaderString]; + } + else + { + fragmentShaderToUse = kGPUImageHoughAccumulationFragmentShaderString; + } + + if (!(self = [super initWithVertexShaderFromString:kGPUImageHoughAccumulationVertexShaderString fragmentShaderFromString:fragmentShaderToUse])) + { + return nil; + } + + + return self; +} + +// TODO: have this be regenerated on change of image size +- (void)dealloc; +{ + free(rawImagePixels); + free(lineCoordinates); +} + +- (void)initializeAttributes; +{ + [filterProgram addAttribute:@"position"]; +} + +#pragma mark - +#pragma mark Rendering + +#define MAXLINESCALINGFACTOR 4 + +- (void)generateLineCoordinates; +{ + unsigned int imageByteSize = inputTextureSize.width * inputTextureSize.height * 4; + rawImagePixels = (GLubyte *)malloc(imageByteSize); + + maxLinePairsToRender = (inputTextureSize.width * inputTextureSize.height) / MAXLINESCALINGFACTOR; + lineCoordinates = calloc(maxLinePairsToRender * 8, sizeof(GLfloat)); +} + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + if (lineCoordinates == NULL) + { + [self generateLineCoordinates]; + } + + [self renderToTextureWithVertices:NULL textureCoordinates:NULL]; + + [self informTargetsAboutNewFrameAtTime:frameTime]; +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // we need a normal color texture for this filter + NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); + NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); + + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + // Grab the edge points from the previous frame and create the parallel coordinate lines for them + // This would be a great place to have a working histogram pyramid implementation + + [GPUImageContext useImageProcessingContext]; + [firstInputFramebuffer activateFramebuffer]; + + glFinish(); + glReadPixels(0, 0, inputTextureSize.width, inputTextureSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); + + CGFloat xAspectMultiplier = 1.0, yAspectMultiplier = 1.0; + +// if (inputTextureSize.width > inputTextureSize.height) +// { +// yAspectMultiplier = inputTextureSize.height / inputTextureSize.width; +// } +// else +// { +// xAspectMultiplier = inputTextureSize.width / inputTextureSize.height; +// } + +// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + + unsigned int imageByteSize = inputTextureSize.width * inputTextureSize.height * 4; + unsigned int imageWidth = inputTextureSize.width * 4; + + linePairsToRender = 0; + unsigned int currentByte = 0; + unsigned int lineStorageIndex = 0; + unsigned int maxLineStorageIndex = maxLinePairsToRender * 8 - 8; + + GLfloat minY = 100, maxY = -100, minX = 100, maxX = -100; + while (currentByte < imageByteSize) + { + GLubyte colorByte = rawImagePixels[currentByte]; + + if (colorByte > 0) + { + unsigned int xCoordinate = currentByte % imageWidth; + unsigned int yCoordinate = currentByte / imageWidth; + + CGFloat normalizedXCoordinate = (-1.0 + 2.0 * (CGFloat)(xCoordinate / 4) / inputTextureSize.width) * xAspectMultiplier; + CGFloat normalizedYCoordinate = (-1.0 + 2.0 * (CGFloat)(yCoordinate) / inputTextureSize.height) * yAspectMultiplier; + + minY = MIN(minY, normalizedYCoordinate); + maxY = MAX(maxY, normalizedYCoordinate); + minX = MIN(minX, normalizedXCoordinate); + maxX = MAX(maxX, normalizedXCoordinate); + +// NSLog(@"Parallel line coordinates: (%f, %f) - (%f, %f) - (%f, %f)", -1.0, -normalizedYCoordinate, 0.0, normalizedXCoordinate, 1.0, normalizedYCoordinate); + // T space coordinates, (-d, -y) to (0, x) + lineCoordinates[lineStorageIndex++] = -1.0; + lineCoordinates[lineStorageIndex++] = -normalizedYCoordinate; + lineCoordinates[lineStorageIndex++] = 0.0; + lineCoordinates[lineStorageIndex++] = normalizedXCoordinate; + + // S space coordinates, (0, x) to (d, y) + lineCoordinates[lineStorageIndex++] = 0.0; + lineCoordinates[lineStorageIndex++] = normalizedXCoordinate; + lineCoordinates[lineStorageIndex++] = 1.0; + lineCoordinates[lineStorageIndex++] = normalizedYCoordinate; + + linePairsToRender++; + + linePairsToRender = MIN(linePairsToRender, maxLinePairsToRender); + lineStorageIndex = MIN(lineStorageIndex, maxLineStorageIndex); + } + currentByte +=8; + } + +// NSLog(@"Line pairs to render: %d out of max: %d", linePairsToRender, maxLinePairsToRender); + +// CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); +// NSLog(@"Line generation processing time : %f ms", 1000.0 * currentFrameTime); + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + [self setUniformsForProgramAtIndex:0]; + + glClearColor(0.0, 0.0, 0.0, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + + if (![GPUImageContext deviceSupportsFramebufferReads]) + { + glBlendEquation(GL_FUNC_ADD); + glBlendFunc(GL_ONE, GL_ONE); + glEnable(GL_BLEND); + } + else + { + } + + glLineWidth(1); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, lineCoordinates); + glDrawArrays(GL_LINES, 0, (linePairsToRender * 4)); + + if (![GPUImageContext deviceSupportsFramebufferReads]) + { + glDisable(GL_BLEND); + } + [firstInputFramebuffer unlock]; + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.h new file mode 100644 index 00000000..922f4d30 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +@interface GPUImagePerlinNoiseFilter : GPUImageFilter +{ + GLint scaleUniform, colorStartUniform, colorFinishUniform; +} + +@property (readwrite, nonatomic) GPUVector4 colorStart; +@property (readwrite, nonatomic) GPUVector4 colorFinish; + +@property (readwrite, nonatomic) float scale; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m new file mode 100644 index 00000000..9ca7cbad --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m @@ -0,0 +1,239 @@ +#import "GPUImagePerlinNoiseFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING +( + precision highp float; + varying highp vec2 textureCoordinate; + uniform float scale; + + uniform vec4 colorStart; + uniform vec4 colorFinish; + + // + // Description : Array and textureless GLSL 2D/3D/4D simplex + // noise functions. + // Author : Ian McEwan, Ashima Arts. + // Maintainer : ijm + // Lastmod : 20110822 (ijm) + // License : Copyright (C) 2011 Ashima Arts. All rights reserved. + // Distributed under the MIT License. See LICENSE file. + // https://github.com/ashima/webgl-noise + // + + vec4 mod289(vec4 x) +{ + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + + vec4 permute(vec4 x) +{ + return mod289(((x*34.0)+1.0)*x); +} + + vec4 taylorInvSqrt(vec4 r) +{ + return 1.79284291400159 - 0.85373472095314 * r; +} + + vec2 fade(vec2 t) { + return t*t*t*(t*(t*6.0-15.0)+10.0); + } + + // Classic Perlin noise + float cnoise(vec2 P) +{ + vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0); + vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + vec4 ix = Pi.xzxz; + vec4 iy = Pi.yyww; + vec4 fx = Pf.xzxz; + vec4 fy = Pf.yyww; + + vec4 i = permute(permute(ix) + iy); + + vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ; + vec4 gy = abs(gx) - 0.5 ; + vec4 tx = floor(gx + 0.5); + gx = gx - tx; + + vec2 g00 = vec2(gx.x,gy.x); + vec2 g10 = vec2(gx.y,gy.y); + vec2 g01 = vec2(gx.z,gy.z); + vec2 g11 = vec2(gx.w,gy.w); + + vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + + float n00 = dot(g00, vec2(fx.x, fy.x)); + float n10 = dot(g10, vec2(fx.y, fy.y)); + float n01 = dot(g01, vec2(fx.z, fy.z)); + float n11 = dot(g11, vec2(fx.w, fy.w)); + + vec2 fade_xy = fade(Pf.xy); + vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x); + float n_xy = mix(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + + + void main() + { + + float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0; + + vec4 colorDiff = colorFinish - colorStart; + vec4 color = colorStart + colorDiff * n1; + + gl_FragColor = color; + } +); +#else +NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform float scale; + + uniform vec4 colorStart; + uniform vec4 colorFinish; + + // + // Description : Array and textureless GLSL 2D/3D/4D simplex + // noise functions. + // Author : Ian McEwan, Ashima Arts. + // Maintainer : ijm + // Lastmod : 20110822 (ijm) + // License : Copyright (C) 2011 Ashima Arts. All rights reserved. + // Distributed under the MIT License. See LICENSE file. + // https://github.com/ashima/webgl-noise + // + + vec4 mod289(vec4 x) +{ + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + + vec4 permute(vec4 x) +{ + return mod289(((x*34.0)+1.0)*x); +} + + vec4 taylorInvSqrt(vec4 r) +{ + return 1.79284291400159 - 0.85373472095314 * r; +} + + vec2 fade(vec2 t) { + return t*t*t*(t*(t*6.0-15.0)+10.0); + } + + // Classic Perlin noise + float cnoise(vec2 P) +{ + vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0); + vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + vec4 ix = Pi.xzxz; + vec4 iy = Pi.yyww; + vec4 fx = Pf.xzxz; + vec4 fy = Pf.yyww; + + vec4 i = permute(permute(ix) + iy); + + vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ; + vec4 gy = abs(gx) - 0.5 ; + vec4 tx = floor(gx + 0.5); + gx = gx - tx; + + vec2 g00 = vec2(gx.x,gy.x); + vec2 g10 = vec2(gx.y,gy.y); + vec2 g01 = vec2(gx.z,gy.z); + vec2 g11 = vec2(gx.w,gy.w); + + vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + + float n00 = dot(g00, vec2(fx.x, fy.x)); + float n10 = dot(g10, vec2(fx.y, fy.y)); + float n01 = dot(g01, vec2(fx.z, fy.z)); + float n11 = dot(g11, vec2(fx.w, fy.w)); + + vec2 fade_xy = fade(Pf.xy); + vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x); + float n_xy = mix(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; + } + + void main() + { + + float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0; + + vec4 colorDiff = colorFinish - colorStart; + vec4 color = colorStart + colorDiff * n1; + + gl_FragColor = color; + } +); +#endif + + +@implementation GPUImagePerlinNoiseFilter + +@synthesize scale = _scale, colorStart = _colorStart, colorFinish = _colorFinish; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImagePerlinNoiseFragmentShaderString])) + { + return nil; + } + + scaleUniform = [filterProgram uniformIndex:@"scale"]; + + colorStartUniform = [filterProgram uniformIndex:@"colorStart"]; + colorFinishUniform = [filterProgram uniformIndex:@"colorFinish"]; + + [self setScale:8.0]; + + [self setColorStart:(GPUVector4){0.0, 0.0, 0.0, 1.0}]; + [self setColorFinish:(GPUVector4){1.0, 1.0, 1.0, 1.0}]; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setScale:(float)scale +{ + _scale = scale; + + [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; +} + +- (void)setColorStart:(GPUVector4)colorStart +{ + _colorStart = colorStart; + + [self setVec4:_colorStart forUniform:colorStartUniform program:filterProgram]; +} + +- (void)setColorFinish:(GPUVector4)colorFinish +{ + _colorFinish = colorFinish; + + [self setVec4:_colorFinish forUniform:colorFinishUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.h new file mode 100755 index 00000000..994774fd --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.h @@ -0,0 +1,20 @@ +#import "GPUImageFilter.h" + +/** Creates a pinch distortion of the image + */ +@interface GPUImagePinchDistortionFilter : GPUImageFilter +{ + GLint aspectRatioUniform, radiusUniform, centerUniform, scaleUniform; +} + +/** The center about which to apply the distortion, with a default of (0.5, 0.5) + */ +@property(readwrite, nonatomic) CGPoint center; +/** The radius of the distortion, ranging from 0.0 to 2.0, with a default of 1.0 + */ +@property(readwrite, nonatomic) CGFloat radius; +/** The amount of distortion to apply, from -2.0 to 2.0, with a default of 0.5 + */ +@property(readwrite, nonatomic) CGFloat scale; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m new file mode 100755 index 00000000..76d79096 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m @@ -0,0 +1,176 @@ +#import "GPUImagePinchDistortionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePinchDistortionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float aspectRatio; + uniform highp vec2 center; + uniform highp float radius; + uniform highp float scale; + + void main() + { + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float dist = distance(center, textureCoordinateToUse); + textureCoordinateToUse = textureCoordinate; + + if (dist < radius) + { + textureCoordinateToUse -= center; + highp float percent = 1.0 + ((0.5 - dist) / 0.5) * scale; + textureCoordinateToUse = textureCoordinateToUse * percent; + textureCoordinateToUse += center; + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + } + else + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); + } + } +); +#else +NSString *const kGPUImagePinchDistortionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float aspectRatio; + uniform vec2 center; + uniform float radius; + uniform float scale; + + void main() + { + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float dist = distance(center, textureCoordinateToUse); + textureCoordinateToUse = textureCoordinate; + + if (dist < radius) + { + textureCoordinateToUse -= center; + float percent = 1.0 + ((0.5 - dist) / 0.5) * scale; + textureCoordinateToUse = textureCoordinateToUse * percent; + textureCoordinateToUse += center; + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + } + else + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); + } + } +); +#endif + +@interface GPUImagePinchDistortionFilter () + +- (void)adjustAspectRatio; + +@property (readwrite, nonatomic) CGFloat aspectRatio; + +@end + +@implementation GPUImagePinchDistortionFilter + +@synthesize aspectRatio = _aspectRatio; +@synthesize center = _center; +@synthesize radius = _radius; +@synthesize scale = _scale; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImagePinchDistortionFragmentShaderString])) + { + return nil; + } + + aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; + radiusUniform = [filterProgram uniformIndex:@"radius"]; + scaleUniform = [filterProgram uniformIndex:@"scale"]; + centerUniform = [filterProgram uniformIndex:@"center"]; + + self.radius = 1.0; + self.scale = 0.5; + self.center = CGPointMake(0.5, 0.5); + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)adjustAspectRatio; +{ + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; + } + else + { + [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; + } +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + [self adjustAspectRatio]; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self adjustAspectRatio]; + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; + [self adjustAspectRatio]; +} + +- (void)setAspectRatio:(CGFloat)newValue; +{ + _aspectRatio = newValue; + + [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; +} + +- (void)setRadius:(CGFloat)newValue; +{ + _radius = newValue; + + [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; +} + +- (void)setScale:(CGFloat)newValue; +{ + _scale = newValue; + + [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; +} + +- (void)setCenter:(CGPoint)newValue; +{ + _center = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.h new file mode 100755 index 00000000..d0f6ae04 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.h @@ -0,0 +1,12 @@ +#import "GPUImageFilter.h" + +@interface GPUImagePixellateFilter : GPUImageFilter +{ + GLint fractionalWidthOfAPixelUniform, aspectRatioUniform; +} + +// The fractional width of the image to use as a size for the pixels in the resulting image. Values below one pixel width in the source image are ignored. +@property(readwrite, nonatomic) CGFloat fractionalWidthOfAPixel; + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m new file mode 100755 index 00000000..88430d09 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m @@ -0,0 +1,151 @@ +#import "GPUImagePixellateFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePixellationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float fractionalWidthOfPixel; + uniform highp float aspectRatio; + + void main() + { + highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + + highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + gl_FragColor = texture2D(inputImageTexture, samplePos ); + } +); +#else +NSString *const kGPUImagePixellationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float fractionalWidthOfPixel; + uniform float aspectRatio; + + void main() + { + vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + + vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + gl_FragColor = texture2D(inputImageTexture, samplePos ); + } +); +#endif + +@interface GPUImagePixellateFilter () + +@property (readwrite, nonatomic) CGFloat aspectRatio; + +- (void)adjustAspectRatio; + +@end + +@implementation GPUImagePixellateFilter + +@synthesize fractionalWidthOfAPixel = _fractionalWidthOfAPixel; +@synthesize aspectRatio = _aspectRatio; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImagePixellationFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + fractionalWidthOfAPixelUniform = [filterProgram uniformIndex:@"fractionalWidthOfPixel"]; + aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; + + self.fractionalWidthOfAPixel = 0.05; + + return self; +} + +- (void)adjustAspectRatio; +{ + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; + } + else + { + [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self adjustAspectRatio]; +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + [self adjustAspectRatio]; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self adjustAspectRatio]; + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setFractionalWidthOfAPixel:(CGFloat)newValue; +{ + CGFloat singlePixelSpacing; + if (inputTextureSize.width != 0.0) + { + singlePixelSpacing = 1.0 / inputTextureSize.width; + } + else + { + singlePixelSpacing = 1.0 / 2048.0; + } + + if (newValue < singlePixelSpacing) + { + _fractionalWidthOfAPixel = singlePixelSpacing; + } + else + { + _fractionalWidthOfAPixel = newValue; + } + + [self setFloat:_fractionalWidthOfAPixel forUniform:fractionalWidthOfAPixelUniform program:filterProgram]; +} + +- (void)setAspectRatio:(CGFloat)newValue; +{ + _aspectRatio = newValue; + + [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.h new file mode 100755 index 00000000..9d304c93 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilter.h" + +@interface GPUImagePixellatePositionFilter : GPUImageFilter +{ + GLint fractionalWidthOfAPixelUniform, aspectRatioUniform, centerUniform, radiusUniform; +} + +// The fractional width of the image to use as a size for the pixels in the resulting image. Values below one pixel width in the source image are ignored. +@property(readwrite, nonatomic) CGFloat fractionalWidthOfAPixel; + +// the center point to start pixelation in texture coordinates, default 0.5, 0.5 +@property(readwrite, nonatomic) CGPoint center; + +// the radius (0.0 - 1.0) in which to pixelate, default 1.0 +@property(readwrite, nonatomic) CGFloat radius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m new file mode 100755 index 00000000..f1bd09cc --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m @@ -0,0 +1,194 @@ +#import "GPUImagePixellatePositionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePixellationPositionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float fractionalWidthOfPixel; + uniform highp float aspectRatio; + uniform lowp vec2 pixelateCenter; + uniform highp float pixelateRadius; + + void main() + { + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float dist = distance(pixelateCenter, textureCoordinateToUse); + + if (dist < pixelateRadius) + { + highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + gl_FragColor = texture2D(inputImageTexture, samplePos ); + } + else + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); + } + } +); +#else +NSString *const kGPUImagePixellationPositionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float fractionalWidthOfPixel; + uniform float aspectRatio; + uniform vec2 pixelateCenter; + uniform float pixelateRadius; + + void main() + { + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float dist = distance(pixelateCenter, textureCoordinateToUse); + + if (dist < pixelateRadius) + { + vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + gl_FragColor = texture2D(inputImageTexture, samplePos ); + } + else + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); + } + } +); +#endif + +@interface GPUImagePixellatePositionFilter () + +- (void)adjustAspectRatio; + +@property (readwrite, nonatomic) CGFloat aspectRatio; + +@end + +@implementation GPUImagePixellatePositionFilter + +@synthesize fractionalWidthOfAPixel = _fractionalWidthOfAPixel; +@synthesize aspectRatio = _aspectRatio; +@synthesize center = _center; +@synthesize radius = _radius; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImagePixellationPositionFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + fractionalWidthOfAPixelUniform = [filterProgram uniformIndex:@"fractionalWidthOfPixel"]; + aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; + centerUniform = [filterProgram uniformIndex:@"pixelateCenter"]; + radiusUniform = [filterProgram uniformIndex:@"pixelateRadius"]; + + self.fractionalWidthOfAPixel = 0.05; + self.center = CGPointMake(0.5f, 0.5f); + self.radius = 0.25f; + + return self; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self adjustAspectRatio]; + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; + [self adjustAspectRatio]; +} + +- (void)adjustAspectRatio; +{ + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; + } + else + { + [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; + } +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + [self adjustAspectRatio]; +} + +- (void)setFractionalWidthOfAPixel:(CGFloat)newValue; +{ + CGFloat singlePixelSpacing; + if (inputTextureSize.width != 0.0) + { + singlePixelSpacing = 1.0 / inputTextureSize.width; + } + else + { + singlePixelSpacing = 1.0 / 2048.0; + } + + if (newValue < singlePixelSpacing) + { + _fractionalWidthOfAPixel = singlePixelSpacing; + } + else + { + _fractionalWidthOfAPixel = newValue; + } + + [self setFloat:_fractionalWidthOfAPixel forUniform:fractionalWidthOfAPixelUniform program:filterProgram]; +} + +- (void)setAspectRatio:(CGFloat)newValue; +{ + _aspectRatio = newValue; + + [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; +} + +- (void)setCenter:(CGPoint)center +{ + _center = center; + CGPoint rotatedPoint = [self rotatedPoint:center forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +- (void)setRadius:(CGFloat)radius +{ + _radius = radius; + + [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.h new file mode 100644 index 00000000..58eff225 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.h @@ -0,0 +1,18 @@ +#import "GPUImageTwoInputCrossTextureSamplingFilter.h" +#import "GPUImageFilterGroup.h" + +@interface GPUImagePoissonBlendFilter : GPUImageTwoInputCrossTextureSamplingFilter +{ + GLint mixUniform; + + GPUImageFramebuffer *secondOutputFramebuffer; +} + +// Mix ranges from 0.0 (only image 1) to 1.0 (only image 2 gradients), with 1.0 as the normal level +@property(readwrite, nonatomic) CGFloat mix; + +// The number of times to propagate the gradients. +// Crank this up to 100 or even 1000 if you want to get anywhere near convergence. Yes, this will be slow. +@property(readwrite, nonatomic) NSUInteger numIterations; + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m new file mode 100644 index 00000000..0167e024 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m @@ -0,0 +1,175 @@ +#import "GPUImagePoissonBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePoissonBlendFragmentShaderString = SHADER_STRING +( + precision mediump float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + varying vec2 topTextureCoordinate; + varying vec2 bottomTextureCoordinate; + + varying vec2 textureCoordinate2; + varying vec2 leftTextureCoordinate2; + varying vec2 rightTextureCoordinate2; + varying vec2 topTextureCoordinate2; + varying vec2 bottomTextureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform lowp float mixturePercent; + + void main() + { + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + + vec4 centerColor2 = texture2D(inputImageTexture2, textureCoordinate2); + vec3 bottomColor2 = texture2D(inputImageTexture2, bottomTextureCoordinate2).rgb; + vec3 leftColor2 = texture2D(inputImageTexture2, leftTextureCoordinate2).rgb; + vec3 rightColor2 = texture2D(inputImageTexture2, rightTextureCoordinate2).rgb; + vec3 topColor2 = texture2D(inputImageTexture2, topTextureCoordinate2).rgb; + + vec3 meanColor = (bottomColor + leftColor + rightColor + topColor) / 4.0; + vec3 diffColor = centerColor.rgb - meanColor; + + vec3 meanColor2 = (bottomColor2 + leftColor2 + rightColor2 + topColor2) / 4.0; + vec3 diffColor2 = centerColor2.rgb - meanColor2; + + vec3 gradColor = (meanColor + diffColor2); + + gl_FragColor = vec4(mix(centerColor.rgb, gradColor, centerColor2.a * mixturePercent), centerColor.a); + } +); +#else +NSString *const kGPUImagePoissonBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + varying vec2 topTextureCoordinate; + varying vec2 bottomTextureCoordinate; + + varying vec2 textureCoordinate2; + varying vec2 leftTextureCoordinate2; + varying vec2 rightTextureCoordinate2; + varying vec2 topTextureCoordinate2; + varying vec2 bottomTextureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform float mixturePercent; + + void main() + { + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + + vec4 centerColor2 = texture2D(inputImageTexture2, textureCoordinate2); + vec3 bottomColor2 = texture2D(inputImageTexture2, bottomTextureCoordinate2).rgb; + vec3 leftColor2 = texture2D(inputImageTexture2, leftTextureCoordinate2).rgb; + vec3 rightColor2 = texture2D(inputImageTexture2, rightTextureCoordinate2).rgb; + vec3 topColor2 = texture2D(inputImageTexture2, topTextureCoordinate2).rgb; + + vec3 meanColor = (bottomColor + leftColor + rightColor + topColor) / 4.0; + vec3 diffColor = centerColor.rgb - meanColor; + + vec3 meanColor2 = (bottomColor2 + leftColor2 + rightColor2 + topColor2) / 4.0; + vec3 diffColor2 = centerColor2.rgb - meanColor2; + + vec3 gradColor = (meanColor + diffColor2); + + gl_FragColor = vec4(mix(centerColor.rgb, gradColor, centerColor2.a * mixturePercent), centerColor.a); + } +); +#endif + +@implementation GPUImagePoissonBlendFilter + +@synthesize mix = _mix; +@synthesize numIterations = _numIterations; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImagePoissonBlendFragmentShaderString])) + { + return nil; + } + + mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; + self.mix = 0.5; + + self.numIterations = 10; + + return self; +} + +- (void)setMix:(CGFloat)newValue; +{ + _mix = newValue; + + [self setFloat:_mix forUniform:mixUniform program:filterProgram]; +} + +//- (void)setOutputFBO; +//{ +// if (self.numIterations % 2 == 1) { +// [self setSecondFilterFBO]; +// } else { +// [self setFilterFBO]; +// } +//} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + // Run the first stage of the two-pass filter + [GPUImageContext setActiveShaderProgram:filterProgram]; + + [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; + + for (int pass = 1; pass < self.numIterations; pass++) { + + if (pass % 2 == 0) { + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + // TODO: This will over-unlock the incoming framebuffer + [super renderToTextureWithVertices:vertices textureCoordinates:[[self class] textureCoordinatesForRotation:kGPUImageNoRotation]]; + } else { + // Run the second stage of the two-pass filter + secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [secondOutputFramebuffer activateFramebuffer]; + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + glUniform1i(filterInputTextureUniform, 2); + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform2, 3); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); + glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + } + } +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.h new file mode 100755 index 00000000..3de6a4d3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +@interface GPUImagePolarPixellateFilter : GPUImageFilter { + GLint centerUniform, pixelSizeUniform; +} + +// The center about which to apply the distortion, with a default of (0.5, 0.5) +@property(readwrite, nonatomic) CGPoint center; +// The amount of distortion to apply, from (-2.0, -2.0) to (2.0, 2.0), with a default of (0.05, 0.05) +@property(readwrite, nonatomic) CGSize pixelSize; + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m new file mode 100755 index 00000000..5677db48 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m @@ -0,0 +1,128 @@ +#import "GPUImagePolarPixellateFilter.h" + +// @fattjake based on vid by toneburst + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePolarPixellateFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 center; + uniform highp vec2 pixelSize; + + + void main() + { + highp vec2 normCoord = 2.0 * textureCoordinate - 1.0; + highp vec2 normCenter = 2.0 * center - 1.0; + + normCoord -= normCenter; + + highp float r = length(normCoord); // to polar coords + highp float phi = atan(normCoord.y, normCoord.x); // to polar coords + + r = r - mod(r, pixelSize.x) + 0.03; + phi = phi - mod(phi, pixelSize.y); + + normCoord.x = r * cos(phi); + normCoord.y = r * sin(phi); + + normCoord += normCenter; + + mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + + } +); +#else +NSString *const kGPUImagePolarPixellateFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform vec2 center; + uniform vec2 pixelSize; + + + void main() + { + vec2 normCoord = 2.0 * textureCoordinate - 1.0; + vec2 normCenter = 2.0 * center - 1.0; + + normCoord -= normCenter; + + float r = length(normCoord); // to polar coords + float phi = atan(normCoord.y, normCoord.x); // to polar coords + + r = r - mod(r, pixelSize.x) + 0.03; + phi = phi - mod(phi, pixelSize.y); + + normCoord.x = r * cos(phi); + normCoord.y = r * sin(phi); + + normCoord += normCenter; + + vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + + } +); +#endif + + +@implementation GPUImagePolarPixellateFilter + +@synthesize center = _center; + +@synthesize pixelSize = _pixelSize; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImagePolarPixellateFragmentShaderString])) + { + return nil; + } + + pixelSizeUniform = [filterProgram uniformIndex:@"pixelSize"]; + centerUniform = [filterProgram uniformIndex:@"center"]; + + + self.pixelSize = CGSizeMake(0.05, 0.05); + self.center = CGPointMake(0.5, 0.5); + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; +} + +- (void)setPixelSize:(CGSize)pixelSize +{ + _pixelSize = pixelSize; + + [self setSize:_pixelSize forUniform:pixelSizeUniform program:filterProgram]; +} + +- (void)setCenter:(CGPoint)newValue; +{ + _center = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.h new file mode 100644 index 00000000..369b7737 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.h @@ -0,0 +1,10 @@ +#import "GPUImagePixellateFilter.h" + +@interface GPUImagePolkaDotFilter : GPUImagePixellateFilter +{ + GLint dotScalingUniform; +} + +@property(readwrite, nonatomic) CGFloat dotScaling; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m new file mode 100644 index 00000000..a439a043 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m @@ -0,0 +1,85 @@ +#import "GPUImagePolkaDotFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float fractionalWidthOfPixel; + uniform highp float aspectRatio; + uniform highp float dotScaling; + + void main() + { + highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + + highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); + lowp float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); + + lowp vec4 inputColor = texture2D(inputImageTexture, samplePos); + + gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a); + } +); +#else +NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float fractionalWidthOfPixel; + uniform float aspectRatio; + uniform float dotScaling; + + void main() + { + vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); + + vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); + float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); + + vec4 inputColor = texture2D(inputImageTexture, samplePos); + + gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a); + } +); +#endif + +@implementation GPUImagePolkaDotFilter + +@synthesize dotScaling = _dotScaling; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImagePolkaDotFragmentShaderString])) + { + return nil; + } + + dotScalingUniform = [filterProgram uniformIndex:@"dotScaling"]; + + self.dotScaling = 0.90; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setDotScaling:(CGFloat)newValue; +{ + _dotScaling = newValue; + + [self setFloat:_dotScaling forUniform:dotScalingUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.h new file mode 100755 index 00000000..6f655b3e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** This reduces the color dynamic range into the number of steps specified, leading to a cartoon-like simple shading of the image. + */ +@interface GPUImagePosterizeFilter : GPUImageFilter +{ + GLint colorLevelsUniform; +} + +/** The number of color levels to reduce the image space to. This ranges from 1 to 256, with a default of 10. + */ +@property(readwrite, nonatomic) NSUInteger colorLevels; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m new file mode 100755 index 00000000..a438cea5 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m @@ -0,0 +1,66 @@ +#import "GPUImagePosterizeFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePosterizeFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform highp float colorLevels; + + void main() + { + highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; + } +); +#else +NSString *const kGPUImagePosterizeFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float colorLevels; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; + } +); +#endif + +@implementation GPUImagePosterizeFilter + +@synthesize colorLevels = _colorLevels; + +#pragma mark - +#pragma mark Initialization + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImagePosterizeFragmentShaderString])) + { + return nil; + } + + colorLevelsUniform = [filterProgram uniformIndex:@"colorLevels"]; + self.colorLevels = 10; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setColorLevels:(NSUInteger)newValue; +{ + _colorLevels = newValue; + + [self setFloat:_colorLevels forUniform:colorLevelsUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.h new file mode 100755 index 00000000..141f8c5f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImagePrewittEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m new file mode 100755 index 00000000..a9906930 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m @@ -0,0 +1,97 @@ +#import "GPUImagePrewittEdgeDetectionFilter.h" + +@implementation GPUImagePrewittEdgeDetectionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImagePrewittFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float edgeStrength; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; + + float mag = length(vec2(h, v)) * edgeStrength; + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#else +NSString *const kGPUImagePrewittFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float edgeStrength; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; + + float mag = length(vec2(h, v)) * edgeStrength; + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImagePrewittFragmentShaderString])) + { + return nil; + } + + self.edgeStrength = 1.0; + + return self; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.h new file mode 100644 index 00000000..08d13f88 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.h @@ -0,0 +1,18 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageRGBErosionFilter; +@class GPUImageRGBDilationFilter; + +// A filter that first performs a dilation on each color channel of an image, followed by an erosion of the same radius. +// This helps to filter out smaller dark elements. + +@interface GPUImageRGBClosingFilter : GPUImageFilterGroup +{ + GPUImageRGBErosionFilter *erosionFilter; + GPUImageRGBDilationFilter *dilationFilter; +} + +- (id)initWithRadius:(NSUInteger)radius; + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m new file mode 100644 index 00000000..c5bb1c8d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m @@ -0,0 +1,41 @@ +#import "GPUImageRGBClosingFilter.h" +#import "GPUImageRGBErosionFilter.h" +#import "GPUImageRGBDilationFilter.h" + +@implementation GPUImageRGBClosingFilter + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +- (id)initWithRadius:(NSUInteger)radius; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: dilation + dilationFilter = [[GPUImageRGBDilationFilter alloc] initWithRadius:radius]; + [self addFilter:dilationFilter]; + + // Second pass: erosion + erosionFilter = [[GPUImageRGBErosionFilter alloc] initWithRadius:radius]; + [self addFilter:erosionFilter]; + + [dilationFilter addTarget:erosionFilter]; + + self.initialFilters = [NSArray arrayWithObjects:dilationFilter, nil]; + self.terminalFilter = erosionFilter; + + return self; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.h new file mode 100644 index 00000000..68276f84 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +// For each pixel, this sets it to the maximum value of each color channel in a rectangular neighborhood extending out dilationRadius pixels from the center. +// This extends out brighter colors, and can be used for abstraction of color images. + +@interface GPUImageRGBDilationFilter : GPUImageTwoPassTextureSamplingFilter + +// Acceptable values for dilationRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. +- (id)initWithRadius:(NSUInteger)dilationRadius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m new file mode 100644 index 00000000..9702c783 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m @@ -0,0 +1,306 @@ +#import "GPUImageRGBDilationFilter.h" +#import "GPUImageDilationFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageRGBDilationRadiusOneFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + + lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + + gl_FragColor = max(maxValue, oneStepNegativeIntensity); + } +); + +NSString *const kGPUImageRGBDilationRadiusTwoFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + + lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + + gl_FragColor = max(maxValue, twoStepsNegativeIntensity); + } +); + +NSString *const kGPUImageRGBDilationRadiusThreeFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + + lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + + gl_FragColor = max(maxValue, threeStepsNegativeIntensity); + } +); + +NSString *const kGPUImageRGBDilationRadiusFourFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + lowp vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); + lowp vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); + + lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + maxValue = max(maxValue, threeStepsNegativeIntensity); + maxValue = max(maxValue, fourStepsPositiveIntensity); + + gl_FragColor = max(maxValue, fourStepsNegativeIntensity); + } +); +#else +NSString *const kGPUImageRGBDilationRadiusOneFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + + vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + + gl_FragColor = max(maxValue, oneStepNegativeIntensity); + } + ); + +NSString *const kGPUImageRGBDilationRadiusTwoFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + + vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + + gl_FragColor = max(maxValue, twoStepsNegativeIntensity); + } + ); + +NSString *const kGPUImageRGBDilationRadiusThreeFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + + vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + + gl_FragColor = max(maxValue, threeStepsNegativeIntensity); + } +); + +NSString *const kGPUImageRGBDilationRadiusFourFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); + vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); + + vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); + maxValue = max(maxValue, oneStepNegativeIntensity); + maxValue = max(maxValue, twoStepsPositiveIntensity); + maxValue = max(maxValue, twoStepsNegativeIntensity); + maxValue = max(maxValue, threeStepsPositiveIntensity); + maxValue = max(maxValue, threeStepsNegativeIntensity); + maxValue = max(maxValue, fourStepsPositiveIntensity); + + gl_FragColor = max(maxValue, fourStepsNegativeIntensity); + } +); +#endif + +@implementation GPUImageRGBDilationFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithRadius:(NSUInteger)dilationRadius; +{ + NSString *fragmentShaderForThisRadius = nil; + NSString *vertexShaderForThisRadius = nil; + + switch (dilationRadius) + { + case 0: + case 1: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusOneFragmentShaderString; + }; break; + case 2: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusTwoFragmentShaderString; + }; break; + case 3: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusThreeFragmentShaderString; + }; break; + case 4: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusFourFragmentShaderString; + }; break; + default: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusFourFragmentShaderString; + }; break; + } + + if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) + { + return nil; + } + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.h new file mode 100644 index 00000000..5979cb7e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +// For each pixel, this sets it to the minimum value of each color channel in a rectangular neighborhood extending out dilationRadius pixels from the center. +// This extends out dark features, and can be used for abstraction of color images. + +@interface GPUImageRGBErosionFilter : GPUImageTwoPassTextureSamplingFilter + +// Acceptable values for erosionRadius, which sets the distance in pixels to sample out from the center, are 1, 2, 3, and 4. +- (id)initWithRadius:(NSUInteger)erosionRadius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m new file mode 100644 index 00000000..91e5f33d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m @@ -0,0 +1,304 @@ +#import "GPUImageRGBErosionFilter.h" +#import "GPUImageDilationFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageRGBErosionRadiusOneFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + + lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + + gl_FragColor = min(minValue, oneStepNegativeIntensity); + } +); + +NSString *const kGPUImageRGBErosionRadiusTwoFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + + lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + + gl_FragColor = min(minValue, twoStepsNegativeIntensity); + } + ); + +NSString *const kGPUImageRGBErosionRadiusThreeFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + + lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + + gl_FragColor = min(minValue, threeStepsNegativeIntensity); + } + ); + +NSString *const kGPUImageRGBErosionRadiusFourFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + lowp vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); + lowp vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); + + lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + minValue = min(minValue, threeStepsNegativeIntensity); + minValue = min(minValue, fourStepsPositiveIntensity); + + gl_FragColor = min(minValue, fourStepsNegativeIntensity); + } +); +#else +NSString *const kGPUImageRGBErosionRadiusOneFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + + vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + + gl_FragColor = min(minValue, oneStepNegativeIntensity); + } +); + +NSString *const kGPUImageRGBErosionRadiusTwoFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + + vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + + gl_FragColor = min(minValue, twoStepsNegativeIntensity); + } +); + +NSString *const kGPUImageRGBErosionRadiusThreeFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + + vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + + gl_FragColor = min(minValue, threeStepsNegativeIntensity); + } +); + +NSString *const kGPUImageRGBErosionRadiusFourFragmentShaderString = SHADER_STRING +( + varying vec2 centerTextureCoordinate; + varying vec2 oneStepPositiveTextureCoordinate; + varying vec2 oneStepNegativeTextureCoordinate; + varying vec2 twoStepsPositiveTextureCoordinate; + varying vec2 twoStepsNegativeTextureCoordinate; + varying vec2 threeStepsPositiveTextureCoordinate; + varying vec2 threeStepsNegativeTextureCoordinate; + varying vec2 fourStepsPositiveTextureCoordinate; + varying vec2 fourStepsNegativeTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); + vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); + vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); + vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); + vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); + vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); + vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); + vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); + vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); + + vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); + minValue = min(minValue, oneStepNegativeIntensity); + minValue = min(minValue, twoStepsPositiveIntensity); + minValue = min(minValue, twoStepsNegativeIntensity); + minValue = min(minValue, threeStepsPositiveIntensity); + minValue = min(minValue, threeStepsNegativeIntensity); + minValue = min(minValue, fourStepsPositiveIntensity); + + gl_FragColor = min(minValue, fourStepsNegativeIntensity); + } +); +#endif + +@implementation GPUImageRGBErosionFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithRadius:(NSUInteger)erosionRadius; +{ + NSString *fragmentShaderForThisRadius = nil; + NSString *vertexShaderForThisRadius = nil; + + switch (erosionRadius) + { + case 0: + case 1: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusOneFragmentShaderString; + }; break; + case 2: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusTwoFragmentShaderString; + }; break; + case 3: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusThreeFragmentShaderString; + }; break; + case 4: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusFourFragmentShaderString; + }; break; + default: + { + vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; + fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusFourFragmentShaderString; + }; break; + } + + if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) + { + return nil; + } + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h new file mode 100755 index 00000000..18966b1b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h @@ -0,0 +1,15 @@ +#import "GPUImageFilter.h" + +@interface GPUImageRGBFilter : GPUImageFilter +{ + GLint redUniform; + GLint greenUniform; + GLint blueUniform; +} + +// Normalized values by which each color channel is multiplied. The range is from 0.0 up, with 1.0 as the default. +@property (readwrite, nonatomic) CGFloat red; +@property (readwrite, nonatomic) CGFloat green; +@property (readwrite, nonatomic) CGFloat blue; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m new file mode 100755 index 00000000..7a2e5681 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m @@ -0,0 +1,89 @@ +#import "GPUImageRGBFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageRGBFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform highp float redAdjustment; + uniform highp float greenAdjustment; + uniform highp float blueAdjustment; + + void main() + { + highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(textureColor.r * redAdjustment, textureColor.g * greenAdjustment, textureColor.b * blueAdjustment, textureColor.a); + } +); +#else +NSString *const kGPUImageRGBFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float redAdjustment; + uniform float greenAdjustment; + uniform float blueAdjustment; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + gl_FragColor = vec4(textureColor.r * redAdjustment, textureColor.g * greenAdjustment, textureColor.b * blueAdjustment, textureColor.a); + } + ); +#endif + +@implementation GPUImageRGBFilter + +@synthesize red = _red, blue = _blue, green = _green; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageRGBFragmentShaderString])) + { + return nil; + } + + redUniform = [filterProgram uniformIndex:@"redAdjustment"]; + self.red = 1.0; + + greenUniform = [filterProgram uniformIndex:@"greenAdjustment"]; + self.green = 1.0; + + blueUniform = [filterProgram uniformIndex:@"blueAdjustment"]; + self.blue = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setRed:(CGFloat)newValue; +{ + _red = newValue; + + [self setFloat:_red forUniform:redUniform program:filterProgram]; +} + +- (void)setGreen:(CGFloat)newValue; +{ + _green = newValue; + + [self setFloat:_green forUniform:greenUniform program:filterProgram]; +} + +- (void)setBlue:(CGFloat)newValue; +{ + _blue = newValue; + + [self setFloat:_blue forUniform:blueUniform program:filterProgram]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.h new file mode 100644 index 00000000..dbec75fb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageRGBErosionFilter; +@class GPUImageRGBDilationFilter; + +// A filter that first performs an erosion on each color channel of an image, followed by a dilation of the same radius. +// This helps to filter out smaller bright elements. + +@interface GPUImageRGBOpeningFilter : GPUImageFilterGroup +{ + GPUImageRGBErosionFilter *erosionFilter; + GPUImageRGBDilationFilter *dilationFilter; +} + +- (id)initWithRadius:(NSUInteger)radius; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m new file mode 100644 index 00000000..9d53021e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m @@ -0,0 +1,41 @@ +#import "GPUImageRGBOpeningFilter.h" +#import "GPUImageRGBErosionFilter.h" +#import "GPUImageRGBDilationFilter.h" + +@implementation GPUImageRGBOpeningFilter + +- (id)init; +{ + if (!(self = [self initWithRadius:1])) + { + return nil; + } + + return self; +} + +- (id)initWithRadius:(NSUInteger)radius; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: erosion + erosionFilter = [[GPUImageRGBErosionFilter alloc] initWithRadius:radius]; + [self addFilter:erosionFilter]; + + // Second pass: dilation + dilationFilter = [[GPUImageRGBDilationFilter alloc] initWithRadius:radius]; + [self addFilter:dilationFilter]; + + [erosionFilter addTarget:dilationFilter]; + + self.initialFilters = [NSArray arrayWithObjects:erosionFilter, nil]; + self.terminalFilter = dilationFilter; + + return self; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.h b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.h new file mode 100644 index 00000000..6ec4720f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.h @@ -0,0 +1,43 @@ +#import "GPUImageOutput.h" + +// The bytes passed into this input are not copied or retained, but you are free to deallocate them after they are used by this filter. +// The bytes are uploaded and stored within a texture, so nothing is kept locally. +// The default format for input bytes is GPUPixelFormatBGRA, unless specified with pixelFormat: +// The default type for input bytes is GPUPixelTypeUByte, unless specified with pixelType: + +typedef enum { + GPUPixelFormatBGRA = GL_BGRA, + GPUPixelFormatRGBA = GL_RGBA, + GPUPixelFormatRGB = GL_RGB, + GPUPixelFormatLuminance = GL_LUMINANCE +} GPUPixelFormat; + +typedef enum { + GPUPixelTypeUByte = GL_UNSIGNED_BYTE, + GPUPixelTypeFloat = GL_FLOAT +} GPUPixelType; + +@interface GPUImageRawDataInput : GPUImageOutput +{ + CGSize uploadedImageSize; + + dispatch_semaphore_t dataUpdateSemaphore; +} + +// Initialization and teardown +- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; +- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat; +- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat type:(GPUPixelType)pixelType; + +/** Input data pixel format + */ +@property (readwrite, nonatomic) GPUPixelFormat pixelFormat; +@property (readwrite, nonatomic) GPUPixelType pixelType; + +// Image rendering +- (void)updateDataFromBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; +- (void)processData; +- (void)processDataForTimestamp:(CMTime)frameTime; +- (CGSize)outputImageSize; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m new file mode 100644 index 00000000..cfa3b128 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m @@ -0,0 +1,139 @@ +#import "GPUImageRawDataInput.h" + +@interface GPUImageRawDataInput() +- (void)uploadBytes:(GLubyte *)bytesToUpload; +@end + +@implementation GPUImageRawDataInput + +@synthesize pixelFormat = _pixelFormat; +@synthesize pixelType = _pixelType; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; +{ + if (!(self = [self initWithBytes:bytesToUpload size:imageSize pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte])) + { + return nil; + } + + return self; +} + +- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat; +{ + if (!(self = [self initWithBytes:bytesToUpload size:imageSize pixelFormat:pixelFormat type:GPUPixelTypeUByte])) + { + return nil; + } + + return self; +} + +- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat type:(GPUPixelType)pixelType; +{ + if (!(self = [super init])) + { + return nil; + } + + dataUpdateSemaphore = dispatch_semaphore_create(1); + + uploadedImageSize = imageSize; + self.pixelFormat = pixelFormat; + self.pixelType = pixelType; + + [self uploadBytes:bytesToUpload]; + + return self; +} + +// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. +- (void)dealloc; +{ +#if !OS_OBJECT_USE_OBJC + if (dataUpdateSemaphore != NULL) + { + dispatch_release(dataUpdateSemaphore); + } +#endif +} + +#pragma mark - +#pragma mark Image rendering + +- (void)uploadBytes:(GLubyte *)bytesToUpload; +{ + [GPUImageContext useImageProcessingContext]; + + // TODO: This probably isn't right, and will need to be corrected + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:uploadedImageSize textureOptions:self.outputTextureOptions onlyTexture:YES]; + + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + glTexImage2D(GL_TEXTURE_2D, 0, _pixelFormat, (int)uploadedImageSize.width, (int)uploadedImageSize.height, 0, (GLint)_pixelFormat, (GLenum)_pixelType, bytesToUpload); +} + +- (void)updateDataFromBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; +{ + uploadedImageSize = imageSize; + + [self uploadBytes:bytesToUpload]; +} + +- (void)processData; +{ + if (dispatch_semaphore_wait(dataUpdateSemaphore, DISPATCH_TIME_NOW) != 0) + { + return; + } + + runAsynchronouslyOnVideoProcessingQueue(^{ + + CGSize pixelSizeOfImage = [self outputImageSize]; + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; + [currentTarget newFrameReadyAtTime:kCMTimeInvalid atIndex:textureIndexOfTarget]; + } + + dispatch_semaphore_signal(dataUpdateSemaphore); + }); +} + +- (void)processDataForTimestamp:(CMTime)frameTime; +{ + if (dispatch_semaphore_wait(dataUpdateSemaphore, DISPATCH_TIME_NOW) != 0) + { + return; + } + + runAsynchronouslyOnVideoProcessingQueue(^{ + + CGSize pixelSizeOfImage = [self outputImageSize]; + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; + [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; + } + + dispatch_semaphore_signal(dataUpdateSemaphore); + }); +} + +- (CGSize)outputImageSize; +{ + return uploadedImageSize; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.h b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.h new file mode 100755 index 00000000..5a4538c1 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.h @@ -0,0 +1,44 @@ +#import +#import "GPUImageContext.h" + +struct GPUByteColorVector { + GLubyte red; + GLubyte green; + GLubyte blue; + GLubyte alpha; +}; +typedef struct GPUByteColorVector GPUByteColorVector; + +@protocol GPUImageRawDataProcessor; + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +@interface GPUImageRawDataOutput : NSObject { + CGSize imageSize; + GPUImageRotationMode inputRotation; + BOOL outputBGRA; +} +#else +@interface GPUImageRawDataOutput : NSObject { + CGSize imageSize; + GPUImageRotationMode inputRotation; + BOOL outputBGRA; +} +#endif + +@property(readonly) GLubyte *rawBytesForImage; +@property(nonatomic, copy) void(^newFrameAvailableBlock)(void); +@property(nonatomic) BOOL enabled; + +// Initialization and teardown +- (id)initWithImageSize:(CGSize)newImageSize resultsInBGRAFormat:(BOOL)resultsInBGRAFormat; + +// Data access +- (GPUByteColorVector)colorAtLocation:(CGPoint)locationInImage; +- (NSUInteger)bytesPerRowInOutput; + +- (void)setImageSize:(CGSize)newImageSize; + +- (void)lockFramebufferForReading; +- (void)unlockFramebufferAfterReading; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m new file mode 100755 index 00000000..18101e2c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m @@ -0,0 +1,307 @@ +#import "GPUImageRawDataOutput.h" + +#import "GPUImageContext.h" +#import "GLProgram.h" +#import "GPUImageFilter.h" +#import "GPUImageMovieWriter.h" + +@interface GPUImageRawDataOutput () +{ + GPUImageFramebuffer *firstInputFramebuffer, *outputFramebuffer, *retainedFramebuffer; + + BOOL hasReadFromTheCurrentFrame; + + GLProgram *dataProgram; + GLint dataPositionAttribute, dataTextureCoordinateAttribute; + GLint dataInputTextureUniform; + + GLubyte *_rawBytesForImage; + + BOOL lockNextFramebuffer; +} + +// Frame rendering +- (void)renderAtInternalSize; + +@end + +@implementation GPUImageRawDataOutput + +@synthesize rawBytesForImage = _rawBytesForImage; +@synthesize newFrameAvailableBlock = _newFrameAvailableBlock; +@synthesize enabled; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithImageSize:(CGSize)newImageSize resultsInBGRAFormat:(BOOL)resultsInBGRAFormat; +{ + if (!(self = [super init])) + { + return nil; + } + + self.enabled = YES; + lockNextFramebuffer = NO; + outputBGRA = resultsInBGRAFormat; + imageSize = newImageSize; + hasReadFromTheCurrentFrame = NO; + _rawBytesForImage = NULL; + inputRotation = kGPUImageNoRotation; + + [GPUImageContext useImageProcessingContext]; + if ( (outputBGRA && ![GPUImageContext supportsFastTextureUpload]) || (!outputBGRA && [GPUImageContext supportsFastTextureUpload]) ) + { + dataProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageColorSwizzlingFragmentShaderString]; + } + else + { + dataProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; + } + + if (!dataProgram.initialized) + { + [dataProgram addAttribute:@"position"]; + [dataProgram addAttribute:@"inputTextureCoordinate"]; + + if (![dataProgram link]) + { + NSString *progLog = [dataProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [dataProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [dataProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + dataProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + dataPositionAttribute = [dataProgram attributeIndex:@"position"]; + dataTextureCoordinateAttribute = [dataProgram attributeIndex:@"inputTextureCoordinate"]; + dataInputTextureUniform = [dataProgram uniformIndex:@"inputImageTexture"]; + + return self; +} + +- (void)dealloc +{ + if (_rawBytesForImage != NULL && (![GPUImageContext supportsFastTextureUpload])) + { + free(_rawBytesForImage); + _rawBytesForImage = NULL; + } +} + +#pragma mark - +#pragma mark Data access + +- (void)renderAtInternalSize; +{ + [GPUImageContext setActiveShaderProgram:dataProgram]; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:imageSize onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + if(lockNextFramebuffer) + { + retainedFramebuffer = outputFramebuffer; + [retainedFramebuffer lock]; + [retainedFramebuffer lockForReading]; + lockNextFramebuffer = NO; + } + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + static const GLfloat squareVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + static const GLfloat textureCoordinates[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 1.0f, + }; + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + glUniform1i(dataInputTextureUniform, 4); + + glVertexAttribPointer(dataPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); + glVertexAttribPointer(dataTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glEnableVertexAttribArray(dataPositionAttribute); + glEnableVertexAttribArray(dataTextureCoordinateAttribute); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + [firstInputFramebuffer unlock]; +} + +- (GPUByteColorVector)colorAtLocation:(CGPoint)locationInImage; +{ + GPUByteColorVector *imageColorBytes = (GPUByteColorVector *)self.rawBytesForImage; +// NSLog(@"Row start"); +// for (unsigned int currentXPosition = 0; currentXPosition < (imageSize.width * 2.0); currentXPosition++) +// { +// GPUByteColorVector byteAtPosition = imageColorBytes[currentXPosition]; +// NSLog(@"%d - %d, %d, %d", currentXPosition, byteAtPosition.red, byteAtPosition.green, byteAtPosition.blue); +// } +// NSLog(@"Row end"); + +// GPUByteColorVector byteAtOne = imageColorBytes[1]; +// GPUByteColorVector byteAtWidth = imageColorBytes[(int)imageSize.width - 3]; +// GPUByteColorVector byteAtHeight = imageColorBytes[(int)(imageSize.height - 1) * (int)imageSize.width]; +// NSLog(@"Byte 1: %d, %d, %d, byte 2: %d, %d, %d, byte 3: %d, %d, %d", byteAtOne.red, byteAtOne.green, byteAtOne.blue, byteAtWidth.red, byteAtWidth.green, byteAtWidth.blue, byteAtHeight.red, byteAtHeight.green, byteAtHeight.blue); + + CGPoint locationToPickFrom = CGPointZero; + locationToPickFrom.x = MIN(MAX(locationInImage.x, 0.0), (imageSize.width - 1.0)); + locationToPickFrom.y = MIN(MAX((imageSize.height - locationInImage.y), 0.0), (imageSize.height - 1.0)); + + if (outputBGRA) + { + GPUByteColorVector flippedColor = imageColorBytes[(int)(round((locationToPickFrom.y * imageSize.width) + locationToPickFrom.x))]; + GLubyte temporaryRed = flippedColor.red; + + flippedColor.red = flippedColor.blue; + flippedColor.blue = temporaryRed; + + return flippedColor; + } + else + { + return imageColorBytes[(int)(round((locationToPickFrom.y * imageSize.width) + locationToPickFrom.x))]; + } +} + +#pragma mark - +#pragma mark GPUImageInput protocol + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + hasReadFromTheCurrentFrame = NO; + + if (_newFrameAvailableBlock != NULL) + { + _newFrameAvailableBlock(); + } +} + +- (NSInteger)nextAvailableTextureIndex; +{ + return 0; +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + firstInputFramebuffer = newInputFramebuffer; + [firstInputFramebuffer lock]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + inputRotation = newInputRotation; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ +} + +- (CGSize)maximumOutputSize; +{ + return imageSize; +} + +- (void)endProcessing; +{ +} + +- (BOOL)shouldIgnoreUpdatesToThisTarget; +{ + return NO; +} + +- (BOOL)wantsMonochromeInput; +{ + return NO; +} + +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; +{ + +} + +#pragma mark - +#pragma mark Accessors + +- (GLubyte *)rawBytesForImage; +{ + if ( (_rawBytesForImage == NULL) && (![GPUImageContext supportsFastTextureUpload]) ) + { + _rawBytesForImage = (GLubyte *) calloc(imageSize.width * imageSize.height * 4, sizeof(GLubyte)); + hasReadFromTheCurrentFrame = NO; + } + + if (hasReadFromTheCurrentFrame) + { + return _rawBytesForImage; + } + else + { + runSynchronouslyOnVideoProcessingQueue(^{ + // Note: the fast texture caches speed up 640x480 frame reads from 9.6 ms to 3.1 ms on iPhone 4S + + [GPUImageContext useImageProcessingContext]; + [self renderAtInternalSize]; + + if ([GPUImageContext supportsFastTextureUpload]) + { + glFinish(); + _rawBytesForImage = [outputFramebuffer byteBuffer]; + } + else + { + glReadPixels(0, 0, imageSize.width, imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, _rawBytesForImage); + // GL_EXT_read_format_bgra + // glReadPixels(0, 0, imageSize.width, imageSize.height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, _rawBytesForImage); + } + + hasReadFromTheCurrentFrame = YES; + + }); + + return _rawBytesForImage; + } +} + +- (NSUInteger)bytesPerRowInOutput; +{ + return [retainedFramebuffer bytesPerRow]; +} + +- (void)setImageSize:(CGSize)newImageSize { + imageSize = newImageSize; + if (_rawBytesForImage != NULL && (![GPUImageContext supportsFastTextureUpload])) + { + free(_rawBytesForImage); + _rawBytesForImage = NULL; + } +} + +- (void)lockFramebufferForReading; +{ + lockNextFramebuffer = YES; +} + +- (void)unlockFramebufferAfterReading; +{ + [retainedFramebuffer unlockAfterReading]; + [retainedFramebuffer unlock]; + retainedFramebuffer = nil; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.h new file mode 100644 index 00000000..767892a5 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSaturationBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m new file mode 100644 index 00000000..da37f6aa --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m @@ -0,0 +1,213 @@ +#import "GPUImageSaturationBlendFilter.h" + +/** + * Saturation blend mode based upon pseudo code from the PDF specification. + */ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSaturationBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + highp float lum(lowp vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + lowp vec3 clipcolor(lowp vec3 c) { + highp float l = lum(c); + lowp float n = min(min(c.r, c.g), c.b); + lowp float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + lowp vec3 setlum(lowp vec3 c, highp float l) { + highp float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + highp float sat(lowp vec3 c) { + lowp float n = min(min(c.r, c.g), c.b); + lowp float x = max(max(c.r, c.g), c.b); + return x - n; + } + + lowp float mid(lowp float cmin, lowp float cmid, lowp float cmax, highp float s) { + return ((cmid - cmin) * s) / (cmax - cmin); + } + + lowp vec3 setsat(lowp vec3 c, highp float s) { + if (c.r > c.g) { + if (c.r > c.b) { + if (c.g > c.b) { + /* g is mid, b is min */ + c.g = mid(c.b, c.g, c.r, s); + c.b = 0.0; + } else { + /* b is mid, g is min */ + c.b = mid(c.g, c.b, c.r, s); + c.g = 0.0; + } + c.r = s; + } else { + /* b is max, r is mid, g is min */ + c.r = mid(c.g, c.r, c.b, s); + c.b = s; + c.r = 0.0; + } + } else if (c.r > c.b) { + /* g is max, r is mid, b is min */ + c.r = mid(c.b, c.r, c.g, s); + c.g = s; + c.b = 0.0; + } else if (c.g > c.b) { + /* g is max, b is mid, r is min */ + c.b = mid(c.r, c.b, c.g, s); + c.g = s; + c.r = 0.0; + } else if (c.b > c.g) { + /* b is max, g is mid, r is min */ + c.g = mid(c.r, c.g, c.b, s); + c.b = s; + c.r = 0.0; + } else { + c = vec3(0.0); + } + return c; + } + + void main() + { + highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(baseColor.rgb, sat(overlayColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#else +NSString *const kGPUImageSaturationBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + float lum(vec3 c) { + return dot(c, vec3(0.3, 0.59, 0.11)); + } + + vec3 clipcolor(vec3 c) { + float l = lum(c); + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.0) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + + return c; + } + + vec3 setlum(vec3 c, float l) { + float d = l - lum(c); + c = c + vec3(d); + return clipcolor(c); + } + + float sat(vec3 c) { + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + return x - n; + } + + float mid(float cmin, float cmid, float cmax, float s) { + return ((cmid - cmin) * s) / (cmax - cmin); + } + + vec3 setsat(vec3 c, float s) { + if (c.r > c.g) { + if (c.r > c.b) { + if (c.g > c.b) { + /* g is mid, b is min */ + c.g = mid(c.b, c.g, c.r, s); + c.b = 0.0; + } else { + /* b is mid, g is min */ + c.b = mid(c.g, c.b, c.r, s); + c.g = 0.0; + } + c.r = s; + } else { + /* b is max, r is mid, g is min */ + c.r = mid(c.g, c.r, c.b, s); + c.b = s; + c.r = 0.0; + } + } else if (c.r > c.b) { + /* g is max, r is mid, b is min */ + c.r = mid(c.b, c.r, c.g, s); + c.g = s; + c.b = 0.0; + } else if (c.g > c.b) { + /* g is max, b is mid, r is min */ + c.b = mid(c.r, c.b, c.g, s); + c.g = s; + c.r = 0.0; + } else if (c.b > c.g) { + /* b is max, g is mid, r is min */ + c.g = mid(c.r, c.g, c.b, s); + c.b = s; + c.r = 0.0; + } else { + c = vec3(0.0); + } + return c; + } + + void main() + { + vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); + vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(baseColor.rgb, sat(overlayColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); + } +); +#endif + + +@implementation GPUImageSaturationBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSaturationBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.h new file mode 100755 index 00000000..1c6ff5bd --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Adjusts the saturation of an image + */ +@interface GPUImageSaturationFilter : GPUImageFilter +{ + GLint saturationUniform; +} + +/** Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 1.0 as the normal level + */ +@property(readwrite, nonatomic) CGFloat saturation; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m new file mode 100755 index 00000000..fc373d4a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m @@ -0,0 +1,78 @@ +#import "GPUImageSaturationFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSaturationFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float saturation; + + // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham + const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp float luminance = dot(textureColor.rgb, luminanceWeighting); + lowp vec3 greyScaleColor = vec3(luminance); + + gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); + + } +); +#else +NSString *const kGPUImageSaturationFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float saturation; + + // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham + const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, luminanceWeighting); + vec3 greyScaleColor = vec3(luminance); + + gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); + + } + ); +#endif + +@implementation GPUImageSaturationFilter + +@synthesize saturation = _saturation; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSaturationFragmentShaderString])) + { + return nil; + } + + saturationUniform = [filterProgram uniformIndex:@"saturation"]; + self.saturation = 1.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setSaturation:(CGFloat)newValue; +{ + _saturation = newValue; + + [self setFloat:_saturation forUniform:saturationUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.h new file mode 100755 index 00000000..2df3abf3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageScreenBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m new file mode 100755 index 00000000..d871e7db --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m @@ -0,0 +1,52 @@ +#import "GPUImageScreenBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageScreenBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + mediump vec4 whiteColor = vec4(1.0); + gl_FragColor = whiteColor - ((whiteColor - textureColor2) * (whiteColor - textureColor)); + } +); +#else +NSString *const kGPUImageScreenBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + vec4 whiteColor = vec4(1.0); + gl_FragColor = whiteColor - ((whiteColor - textureColor2) * (whiteColor - textureColor)); + } +); +#endif + +@implementation GPUImageScreenBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageScreenBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.h new file mode 100755 index 00000000..a45164fe --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.h @@ -0,0 +1,6 @@ +#import "GPUImageColorMatrixFilter.h" + +/// Simple sepia tone filter +@interface GPUImageSepiaFilter : GPUImageColorMatrixFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m new file mode 100755 index 00000000..71668d63 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m @@ -0,0 +1,24 @@ +#import "GPUImageSepiaFilter.h" + +@implementation GPUImageSepiaFilter + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + self.intensity = 1.0; + self.colorMatrix = (GPUMatrix4x4){ + {0.3588, 0.7044, 0.1368, 0.0}, + {0.2990, 0.5870, 0.1140, 0.0}, + {0.2392, 0.4696, 0.0912 ,0.0}, + {0,0,0,1.0}, + }; + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.h new file mode 100755 index 00000000..739df503 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.h @@ -0,0 +1,12 @@ +#import "GPUImageFilter.h" + +@interface GPUImageSharpenFilter : GPUImageFilter +{ + GLint sharpnessUniform; + GLint imageWidthFactorUniform, imageHeightFactorUniform; +} + +// Sharpness ranges from -4.0 to 4.0, with 0.0 as the normal level +@property(readwrite, nonatomic) CGFloat sharpness; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m new file mode 100755 index 00000000..6d7367a9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m @@ -0,0 +1,147 @@ +#import "GPUImageSharpenFilter.h" + +NSString *const kGPUImageSharpenVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform float imageWidthFactor; + uniform float imageHeightFactor; + uniform float sharpness; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + varying vec2 topTextureCoordinate; + varying vec2 bottomTextureCoordinate; + + varying float centerMultiplier; + varying float edgeMultiplier; + + void main() + { + gl_Position = position; + + vec2 widthStep = vec2(imageWidthFactor, 0.0); + vec2 heightStep = vec2(0.0, imageHeightFactor); + + textureCoordinate = inputTextureCoordinate.xy; + leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; + rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; + topTextureCoordinate = inputTextureCoordinate.xy + heightStep; + bottomTextureCoordinate = inputTextureCoordinate.xy - heightStep; + + centerMultiplier = 1.0 + 4.0 * sharpness; + edgeMultiplier = sharpness; + } +); + + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSharpenFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying highp vec2 textureCoordinate; + varying highp vec2 leftTextureCoordinate; + varying highp vec2 rightTextureCoordinate; + varying highp vec2 topTextureCoordinate; + varying highp vec2 bottomTextureCoordinate; + + varying highp float centerMultiplier; + varying highp float edgeMultiplier; + + uniform sampler2D inputImageTexture; + + void main() + { + mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb; + mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + + gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); + } +); +#else +NSString *const kGPUImageSharpenFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + varying vec2 topTextureCoordinate; + varying vec2 bottomTextureCoordinate; + + varying float centerMultiplier; + varying float edgeMultiplier; + + uniform sampler2D inputImageTexture; + + void main() + { + vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb; + vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; + vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; + vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; + vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; + + gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); + } +); +#endif + + +@implementation GPUImageSharpenFilter + +@synthesize sharpness = _sharpness; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageSharpenVertexShaderString fragmentShaderFromString:kGPUImageSharpenFragmentShaderString])) + { + return nil; + } + + sharpnessUniform = [filterProgram uniformIndex:@"sharpness"]; + self.sharpness = 0.0; + + imageWidthFactorUniform = [filterProgram uniformIndex:@"imageWidthFactor"]; + imageHeightFactorUniform = [filterProgram uniformIndex:@"imageHeightFactor"]; + + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + glUniform1f(imageWidthFactorUniform, 1.0 / filterFrameSize.height); + glUniform1f(imageHeightFactorUniform, 1.0 / filterFrameSize.width); + } + else + { + glUniform1f(imageWidthFactorUniform, 1.0 / filterFrameSize.width); + glUniform1f(imageHeightFactorUniform, 1.0 / filterFrameSize.height); + } + }); +} + +#pragma mark - +#pragma mark Accessors + +- (void)setSharpness:(CGFloat)newValue; +{ + _sharpness = newValue; + + [self setFloat:_sharpness forUniform:sharpnessUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h new file mode 100644 index 00000000..b16ebc01 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageHarrisCornerDetectionFilter.h" + +/** Shi-Tomasi feature detector + + This is the Shi-Tomasi feature detector, as described in + J. Shi and C. Tomasi. Good features to track. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 593-600, June 1994. + */ + +@interface GPUImageShiTomasiFeatureDetectionFilter : GPUImageHarrisCornerDetectionFilter + +// Compared to the Harris corner detector, the default sensitivity value for this detector is set to 1.5 + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m new file mode 100644 index 00000000..e58cbb4f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m @@ -0,0 +1,65 @@ +#import "GPUImageShiTomasiFeatureDetectionFilter.h" + +@implementation GPUImageShiTomasiFeatureDetectionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageShiTomasiCornerDetectionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float sensitivity; + + void main() + { + mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; + + mediump float derivativeDifference = derivativeElements.x - derivativeElements.y; + mediump float zElement = (derivativeElements.z * 2.0) - 1.0; + + // R = Ix^2 + Iy^2 - sqrt( (Ix^2 - Iy^2)^2 + 4 * Ixy * Ixy) + mediump float cornerness = derivativeElements.x + derivativeElements.y - sqrt(derivativeDifference * derivativeDifference + 4.0 * zElement * zElement); + + gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); + } +); +#else +NSString *const kGPUImageShiTomasiCornerDetectionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float sensitivity; + + void main() + { + vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; + + float derivativeDifference = derivativeElements.x - derivativeElements.y; + float zElement = (derivativeElements.z * 2.0) - 1.0; + + // R = Ix^2 + Iy^2 - sqrt( (Ix^2 - Iy^2)^2 + 4 * Ixy * Ixy) + float cornerness = derivativeElements.x + derivativeElements.y - sqrt(derivativeDifference * derivativeDifference + 4.0 * zElement * zElement); + + gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageShiTomasiCornerDetectionFragmentShaderString])) + { + return nil; + } + + self.sensitivity = 1.5; + + return self; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h new file mode 100644 index 00000000..934b1e3a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageGaussianBlurFilter.h" + +// This filter merely performs the standard Gaussian blur on the red color channel (assuming a luminance image) + +@interface GPUImageSingleComponentGaussianBlurFilter : GPUImageGaussianBlurFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m new file mode 100644 index 00000000..4ff0d91d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m @@ -0,0 +1,189 @@ +#import "GPUImageSingleComponentGaussianBlurFilter.h" + +@implementation GPUImageSingleComponentGaussianBlurFilter + ++ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImageVertexShaderString; + } + + // First, generate the normal Gaussian weights for a given sigma + GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); + GLfloat sumOfWeights = 0.0; + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); + + if (currentGaussianWeightIndex == 0) + { + sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; + } + else + { + sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; + } + } + + // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; + } + + // From these weights we calculate the offsets to read interpolated values from + NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); + GLfloat *optimizedGaussianOffsets = calloc(numberOfOptimizedOffsets, sizeof(GLfloat)); + + for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) + { + GLfloat firstWeight = standardGaussianWeights[currentOptimizedOffset*2 + 1]; + GLfloat secondWeight = standardGaussianWeights[currentOptimizedOffset*2 + 2]; + + GLfloat optimizedWeight = firstWeight + secondWeight; + + optimizedGaussianOffsets[currentOptimizedOffset] = (firstWeight * (currentOptimizedOffset*2 + 1) + secondWeight * (currentOptimizedOffset*2 + 2)) / optimizedWeight; + } + + NSMutableString *shaderString = [[NSMutableString alloc] init]; + // Header + [shaderString appendFormat:@"\ + attribute vec4 position;\n\ + attribute vec4 inputTextureCoordinate;\n\ + \n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + gl_Position = position;\n\ + \n\ + vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; + + // Inner offset loop + [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; + for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) + { + [shaderString appendFormat:@"\ + blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ + blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedGaussianOffsets[currentOptimizedOffset], (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedGaussianOffsets[currentOptimizedOffset]]; + } + + // Footer + [shaderString appendString:@"}\n"]; + + free(optimizedGaussianOffsets); + free(standardGaussianWeights); + return shaderString; +} + ++ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; +{ + if (blurRadius < 1) + { + return kGPUImagePassthroughFragmentShaderString; + } + + // First, generate the normal Gaussian weights for a given sigma + GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); + GLfloat sumOfWeights = 0.0; + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); + + if (currentGaussianWeightIndex == 0) + { + sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; + } + else + { + sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; + } + } + + // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance + for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) + { + standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; + } + + // From these weights we calculate the offsets to read interpolated values from + NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); + NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); + + NSMutableString *shaderString = [[NSMutableString alloc] init]; + + // Header +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + uniform highp float texelWidthOffset;\n\ + uniform highp float texelHeightOffset;\n\ + \n\ + varying highp vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + lowp float sum = 0.0;\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; +#else + [shaderString appendFormat:@"\ + uniform sampler2D inputImageTexture;\n\ + uniform float texelWidthOffset;\n\ + uniform float texelHeightOffset;\n\ + \n\ + varying vec2 blurCoordinates[%lu];\n\ + \n\ + void main()\n\ + {\n\ + float sum = 0.0;\n", 1 + (numberOfOptimizedOffsets * 2) ]; +#endif + + // Inner texture loop + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]).r * %f;\n", standardGaussianWeights[0]]; + + for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) + { + GLfloat firstWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 1]; + GLfloat secondWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 2]; + GLfloat optimizedWeight = firstWeight + secondWeight; + + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]).r * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), optimizedWeight]; + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]).r * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), optimizedWeight]; + } + + // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader + if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; +#else + [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; +#endif + + for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) + { + GLfloat firstWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 1]; + GLfloat secondWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 2]; + + GLfloat optimizedWeight = firstWeight + secondWeight; + GLfloat optimizedOffset = (firstWeight * (currentOverlowTextureRead * 2 + 1) + secondWeight * (currentOverlowTextureRead * 2 + 2)) / optimizedWeight; + + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f).r * %f;\n", optimizedOffset, optimizedWeight]; + [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f).r * %f;\n", optimizedOffset, optimizedWeight]; + } + } + + // Footer + [shaderString appendString:@"\ + gl_FragColor = vec4(sum, sum, sum, 1.0);\n\ + }\n"]; + + free(standardGaussianWeights); + return shaderString; +} + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.h new file mode 100755 index 00000000..598145ae --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.h @@ -0,0 +1,11 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +/** Converts video to look like a sketch. + + This is just the Sobel edge detection filter with the colors inverted. + */ +@interface GPUImageSketchFilter : GPUImageSobelEdgeDetectionFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m new file mode 100755 index 00000000..3cda2203 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m @@ -0,0 +1,98 @@ +#import "GPUImageSketchFilter.h" + +@implementation GPUImageSketchFilter + +// Invert the colorspace for a sketch +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING +( + precision mediump float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform float edgeStrength; + + uniform sampler2D inputImageTexture; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = 1.0 - (length(vec2(h, v)) * edgeStrength); + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#else +NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform float edgeStrength; + + uniform sampler2D inputImageTexture; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = 1.0 - (length(vec2(h, v)) * edgeStrength); + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageSketchFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h new file mode 100644 index 00000000..0dd6f866 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h @@ -0,0 +1,47 @@ +// +// GPUImageSkinToneFilter.h +// +// +// Created by github.com/r3mus on 8/14/15. +// +// + +#import "GPUImageTwoInputFilter.h" + +typedef NS_ENUM(NSUInteger, GPUImageSkinToneUpperColor) { + GPUImageSkinToneUpperColorGreen, + GPUImageSkinToneUpperColorOrange +}; + +extern NSString *const kGPUImageSkinToneFragmentShaderString; + +@interface GPUImageSkinToneFilter : GPUImageFilter +{ + GLint skinToneAdjustUniform; + GLint skinHueUniform; + GLint skinHueThresholdUniform; + GLint maxHueShiftUniform; + GLint maxSaturationShiftUniform; + GLint upperSkinToneColorUniform; +} + +// The amount of effect to apply, between -1.0 (pink) and +1.0 (orange OR green). Default is 0.0. +@property (nonatomic, readwrite) CGFloat skinToneAdjust; + +// The initial hue of skin to adjust. Default is 0.05 (a common skin red). +@property (nonatomic, readwrite) CGFloat skinHue; + +// The bell curve "breadth" of the skin hue adjustment (i.e. how different from the original skinHue will the modifications effect). +// Default is 40.0 +@property (nonatomic, readwrite) CGFloat skinHueThreshold; + +// The maximum amount of hue shift allowed in the adjustments that affect hue (pink, green). Default = 0.25. +@property (nonatomic, readwrite) CGFloat maxHueShift; + +// The maximum amount of saturation shift allowed in the adjustments that affect saturation (orange). Default = 0.4. +@property (nonatomic, readwrite) CGFloat maxSaturationShift; + +// Defines whether the upper range (> 0.0) will change the skin tone to green (hue) or orange (saturation) +@property (nonatomic, readwrite) GPUImageSkinToneUpperColor upperSkinToneColor; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m new file mode 100644 index 00000000..0db9ac7c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m @@ -0,0 +1,246 @@ +// +// GPUImageSkinToneFilter.m +// +// +// Created by github.com/r3mus on 8/13/15. +// +// + +#import "GPUImageSkinToneFilter.h" + +@implementation GPUImageSkinToneFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSkinToneFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + // [-1;1] <=> [pink;orange] + uniform highp float skinToneAdjust; // will make reds more pink + + // Other parameters + uniform mediump float skinHue; + uniform mediump float skinHueThreshold; + uniform mediump float maxHueShift; + uniform mediump float maxSaturationShift; + uniform int upperSkinToneColor; + + // RGB <-> HSV conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl + highp vec3 rgb2hsv(highp vec3 c) +{ + highp vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + highp vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + highp vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + highp float d = q.x - min(q.w, q.y); + highp float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + + // HSV <-> RGB conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl + highp vec3 hsv2rgb(highp vec3 c) +{ + highp vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + highp vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + + // Main + void main () +{ + + // Sample the input pixel + highp vec4 colorRGB = texture2D(inputImageTexture, textureCoordinate); + + // Convert color to HSV, extract hue + highp vec3 colorHSV = rgb2hsv(colorRGB.rgb); + highp float hue = colorHSV.x; + + // check how far from skin hue + highp float dist = hue - skinHue; + if (dist > 0.5) + dist -= 1.0; + if (dist < -0.5) + dist += 1.0; + dist = abs(dist)/0.5; // normalized to [0,1] + + // Apply Gaussian like filter + highp float weight = exp(-dist*dist*skinHueThreshold); + weight = clamp(weight, 0.0, 1.0); + + // Using pink/green, so only adjust hue + if (upperSkinToneColor == 0) { + colorHSV.x += skinToneAdjust * weight * maxHueShift; + // Using pink/orange, so adjust hue < 0 and saturation > 0 + } else if (upperSkinToneColor == 1) { + // We want more orange, so increase saturation + if (skinToneAdjust > 0.0) + colorHSV.y += skinToneAdjust * weight * maxSaturationShift; + // we want more pinks, so decrease hue + else + colorHSV.x += skinToneAdjust * weight * maxHueShift; + } + + // final color + highp vec3 finalColorRGB = hsv2rgb(colorHSV.rgb); + + // display + gl_FragColor = vec4(finalColorRGB, 1.0); +} +); +#else +NSString *const kGPUImageSkinToneFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + // [-1;1] <=> [pink;orange] + uniform float skinToneAdjust; // will make reds more pink + + // Other parameters + uniform float skinHue; + uniform float skinHueThreshold; + uniform float maxHueShift; + uniform float maxSaturationShift; + uniform int upperSkinToneColor; + + // RGB <-> HSV conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl + highp vec3 rgb2hsv(highp vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + + // HSV <-> RGB conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl + highp vec3 hsv2rgb(highp vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + + // Main + void main () +{ + + // Sample the input pixel + vec4 colorRGB = texture2D(inputImageTexture, textureCoordinate); + + // Convert color to HSV, extract hue + vec3 colorHSV = rgb2hsv(colorRGB.rgb); + float hue = colorHSV.x; + + // check how far from skin hue + float dist = hue - skinHue; + if (dist > 0.5) + dist -= 1.0; + if (dist < -0.5) + dist += 1.0; + dist = abs(dist)/0.5; // normalized to [0,1] + + // Apply Gaussian like filter + float weight = exp(-dist*dist*skinHueThreshold); + weight = clamp(weight, 0.0, 1.0); + + // Using pink/green, so only adjust hue + if (upperSkinToneColor == 0) { + colorHSV.x += skinToneAdjust * weight * maxHueShift; + // Using pink/orange, so adjust hue < 0 and saturation > 0 + } else if (upperSkinToneColor == 1) { + // We want more orange, so increase saturation + if (skinToneAdjust > 0.0) + colorHSV.y += skinToneAdjust * weight * maxSaturationShift; + // we want more pinks, so decrease hue + else + colorHSV.x += skinToneAdjust * weight * maxHueShift; + } + + // final color + vec3 finalColorRGB = hsv2rgb(colorHSV.rgb); + + // display + gl_FragColor = vec4(finalColorRGB, 1.0); +} + ); +#endif + +#pragma mark - +#pragma mark Initialization and teardown +@synthesize skinToneAdjust; +@synthesize skinHue; +@synthesize skinHueThreshold; +@synthesize maxHueShift; +@synthesize maxSaturationShift; +@synthesize upperSkinToneColor; + +- (id)init +{ + if(! (self = [super initWithFragmentShaderFromString:kGPUImageSkinToneFragmentShaderString]) ) + { + return nil; + } + + skinToneAdjustUniform = [filterProgram uniformIndex:@"skinToneAdjust"]; + skinHueUniform = [filterProgram uniformIndex:@"skinHue"]; + skinHueThresholdUniform = [filterProgram uniformIndex:@"skinHueThreshold"]; + maxHueShiftUniform = [filterProgram uniformIndex:@"maxHueShift"]; + maxSaturationShiftUniform = [filterProgram uniformIndex:@"maxSaturationShift"]; + upperSkinToneColorUniform = [filterProgram uniformIndex:@"upperSkinToneColor"]; + + self.skinHue = 0.05; + self.skinHueThreshold = 40.0; + self.maxHueShift = 0.25; + self.maxSaturationShift = 0.4; + self.upperSkinToneColor = GPUImageSkinToneUpperColorGreen; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setSkinToneAdjust:(CGFloat)newValue +{ + skinToneAdjust = newValue; + [self setFloat:newValue forUniform:skinToneAdjustUniform program:filterProgram]; +} + +- (void)setSkinHue:(CGFloat)newValue +{ + skinHue = newValue; + [self setFloat:newValue forUniform:skinHueUniform program:filterProgram]; +} + +- (void)setSkinHueThreshold:(CGFloat)newValue +{ + skinHueThreshold = newValue; + [self setFloat:newValue forUniform:skinHueThresholdUniform program:filterProgram]; +} + +- (void)setMaxHueShift:(CGFloat)newValue +{ + maxHueShift = newValue; + [self setFloat:newValue forUniform:maxHueShiftUniform program:filterProgram]; +} + +- (void)setMaxSaturationShift:(CGFloat)newValue +{ + maxSaturationShift = newValue; + [self setFloat:newValue forUniform:maxSaturationShiftUniform program:filterProgram]; +} + +- (void)setUpperSkinToneColor:(GPUImageSkinToneUpperColor)newValue +{ + upperSkinToneColor = newValue; + [self setInteger:newValue forUniform:upperSkinToneColorUniform program:filterProgram]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.h new file mode 100755 index 00000000..f89caac5 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.h @@ -0,0 +1,28 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGaussianBlurFilter; +@class GPUImageToonFilter; + +/** This uses a similar process as the GPUImageToonFilter, only it precedes the toon effect with a Gaussian blur to smooth out noise. + */ +@interface GPUImageSmoothToonFilter : GPUImageFilterGroup +{ + GPUImageGaussianBlurFilter *blurFilter; + GPUImageToonFilter *toonFilter; +} + +/// The image width and height factors tweak the appearance of the edges. By default, they match the filter size in pixels +@property(readwrite, nonatomic) CGFloat texelWidth; +/// The image width and height factors tweak the appearance of the edges. By default, they match the filter size in pixels +@property(readwrite, nonatomic) CGFloat texelHeight; + +/// The radius of the underlying Gaussian blur. The default is 2.0. +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +/// The threshold at which to apply the edges, default of 0.2 +@property(readwrite, nonatomic) CGFloat threshold; + +/// The levels of quantization for the posterization of colors within the scene, with a default of 10.0 +@property(readwrite, nonatomic) CGFloat quantizationLevels; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m new file mode 100755 index 00000000..03828f48 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m @@ -0,0 +1,94 @@ +#import "GPUImageSmoothToonFilter.h" +#import "GPUImageGaussianBlurFilter.h" +#import "GPUImageToonFilter.h" + +@implementation GPUImageSmoothToonFilter + +@synthesize threshold; +@synthesize blurRadiusInPixels; +@synthesize quantizationLevels; +@synthesize texelWidth; +@synthesize texelHeight; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: apply a variable Gaussian blur + blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Second pass: run the Sobel edge detection on this blurred image, along with a posterization effect + toonFilter = [[GPUImageToonFilter alloc] init]; + [self addFilter:toonFilter]; + + // Texture location 0 needs to be the sharp image for both the blur and the second stage processing + [blurFilter addTarget:toonFilter]; + + self.initialFilters = [NSArray arrayWithObject:blurFilter]; + self.terminalFilter = toonFilter; + + self.blurRadiusInPixels = 2.0; + self.threshold = 0.2; + self.quantizationLevels = 10.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setTexelWidth:(CGFloat)newValue; +{ + toonFilter.texelWidth = newValue; +} + +- (CGFloat)texelWidth; +{ + return toonFilter.texelWidth; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + toonFilter.texelHeight = newValue; +} + +- (CGFloat)texelHeight; +{ + return toonFilter.texelHeight; +} + +- (void)setThreshold:(CGFloat)newValue; +{ + toonFilter.threshold = newValue; +} + +- (CGFloat)threshold; +{ + return toonFilter.threshold; +} + +- (void)setQuantizationLevels:(CGFloat)newValue; +{ + toonFilter.quantizationLevels = newValue; +} + +- (CGFloat)quantizationLevels; +{ + return toonFilter.quantizationLevels; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.h new file mode 100755 index 00000000..d6b2c13a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.h @@ -0,0 +1,16 @@ +#import "GPUImageTwoPassFilter.h" + +@interface GPUImageSobelEdgeDetectionFilter : GPUImageTwoPassFilter +{ + GLint texelWidthUniform, texelHeightUniform, edgeStrengthUniform; + BOOL hasOverriddenImageSizeFactor; +} + +// The texel width and height factors tweak the appearance of the edges. By default, they match the inverse of the filter size in pixels +@property(readwrite, nonatomic) CGFloat texelWidth; +@property(readwrite, nonatomic) CGFloat texelHeight; + +// The filter strength property affects the dynamic range of the filter. High values can make edges more visible, but can lead to saturation. Default of 1.0. +@property(readwrite, nonatomic) CGFloat edgeStrength; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m new file mode 100755 index 00000000..e193f027 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m @@ -0,0 +1,188 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" +#import "GPUImageGrayscaleFilter.h" +#import "GPUImage3x3ConvolutionFilter.h" + +// Code from "Graphics Shaders: Theory and Practice" by M. Bailey and S. Cunningham +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSobelEdgeDetectionFragmentShaderString = SHADER_STRING +( + precision mediump float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float edgeStrength; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = length(vec2(h, v)) * edgeStrength; + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#else +NSString *const kGPUImageSobelEdgeDetectionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float edgeStrength; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = length(vec2(h, v)) * edgeStrength; + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#endif + +@implementation GPUImageSobelEdgeDetectionFilter + +@synthesize texelWidth = _texelWidth; +@synthesize texelHeight = _texelHeight; +@synthesize edgeStrength = _edgeStrength; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageSobelEdgeDetectionFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + // Do a luminance pass first to reduce the calculations performed at each fragment in the edge detection phase + + if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:kGPUImageLuminanceFragmentShaderString secondStageVertexShaderFromString:kGPUImageNearbyTexelSamplingVertexShaderString secondStageFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + hasOverriddenImageSizeFactor = NO; + + texelWidthUniform = [secondFilterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [secondFilterProgram uniformIndex:@"texelHeight"]; + edgeStrengthUniform = [secondFilterProgram uniformIndex:@"edgeStrength"]; + + self.edgeStrength = 1.0; + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + if (!hasOverriddenImageSizeFactor) + { + _texelWidth = 1.0 / filterFrameSize.width; + _texelHeight = 1.0 / filterFrameSize.height; + + runSynchronouslyOnVideoProcessingQueue(^{ + GLProgram *previousProgram = [GPUImageContext sharedImageProcessingContext].currentShaderProgram; + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + glUniform1f(texelWidthUniform, _texelWidth); + glUniform1f(texelHeightUniform, _texelHeight); + [GPUImageContext setActiveShaderProgram:previousProgram]; + }); + } +} + +- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; +{ + [super setUniformsForProgramAtIndex:programIndex]; + + if (programIndex == 1) + { + glUniform1f(texelWidthUniform, _texelWidth); + glUniform1f(texelHeightUniform, _texelHeight); + } +} + +- (BOOL)wantsMonochromeInput; +{ +// return YES; + return NO; +} + +- (BOOL)providesMonochromeOutput; +{ +// return YES; + return NO; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTexelWidth:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelWidth = newValue; + + [self setFloat:_texelWidth forUniform:texelWidthUniform program:secondFilterProgram]; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelHeight = newValue; + + [self setFloat:_texelHeight forUniform:texelHeightUniform program:secondFilterProgram]; +} + +- (void)setEdgeStrength:(CGFloat)newValue; +{ + _edgeStrength = newValue; + + [self setFloat:_edgeStrength forUniform:edgeStrengthUniform program:secondFilterProgram]; +} + + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.h new file mode 100755 index 00000000..596e1567 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImagePicture; + +/** A photo filter based on Soft Elegance Photoshop action + http://h-d-stock.deviantart.com/art/H-D-A-soft-elegance-70107603 + */ + +// Note: If you want to use this effect you have to add +// lookup_soft_elegance_1.png and lookup_soft_elegance_2.png +// from Resources folder to your application bundle. + +@interface GPUImageSoftEleganceFilter : GPUImageFilterGroup +{ + GPUImagePicture *lookupImageSource1; + GPUImagePicture *lookupImageSource2; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m new file mode 100755 index 00000000..e1d4e02d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m @@ -0,0 +1,62 @@ +#import "GPUImageSoftEleganceFilter.h" +#import "GPUImagePicture.h" +#import "GPUImageLookupFilter.h" +#import "GPUImageGaussianBlurFilter.h" +#import "GPUImageAlphaBlendFilter.h" + +@implementation GPUImageSoftEleganceFilter + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + UIImage *image1 = [UIImage imageNamed:@"lookup_soft_elegance_1.png"]; + UIImage *image2 = [UIImage imageNamed:@"lookup_soft_elegance_2.png"]; +#else + NSImage *image1 = [NSImage imageNamed:@"lookup_soft_elegance_1.png"]; + NSImage *image2 = [NSImage imageNamed:@"lookup_soft_elegance_2.png"]; +#endif + + NSAssert(image1 && image2, + @"To use GPUImageSoftEleganceFilter you need to add lookup_soft_elegance_1.png and lookup_soft_elegance_2.png from GPUImage/framework/Resources to your application bundle."); + + lookupImageSource1 = [[GPUImagePicture alloc] initWithImage:image1]; + GPUImageLookupFilter *lookupFilter1 = [[GPUImageLookupFilter alloc] init]; + [self addFilter:lookupFilter1]; + + [lookupImageSource1 addTarget:lookupFilter1 atTextureLocation:1]; + [lookupImageSource1 processImage]; + + GPUImageGaussianBlurFilter *gaussianBlur = [[GPUImageGaussianBlurFilter alloc] init]; + gaussianBlur.blurRadiusInPixels = 10.0; + [lookupFilter1 addTarget:gaussianBlur]; + [self addFilter:gaussianBlur]; + + GPUImageAlphaBlendFilter *alphaBlend = [[GPUImageAlphaBlendFilter alloc] init]; + alphaBlend.mix = 0.14; + [lookupFilter1 addTarget:alphaBlend]; + [gaussianBlur addTarget:alphaBlend]; + [self addFilter:alphaBlend]; + + lookupImageSource2 = [[GPUImagePicture alloc] initWithImage:image2]; + + GPUImageLookupFilter *lookupFilter2 = [[GPUImageLookupFilter alloc] init]; + [alphaBlend addTarget:lookupFilter2]; + [lookupImageSource2 addTarget:lookupFilter2]; + [lookupImageSource2 processImage]; + [self addFilter:lookupFilter2]; + + self.initialFilters = [NSArray arrayWithObjects:lookupFilter1, nil]; + self.terminalFilter = lookupFilter2; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.h new file mode 100755 index 00000000..13fc877c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.h @@ -0,0 +1,7 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSoftLightBlendFilter : GPUImageTwoInputFilter +{ +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m new file mode 100755 index 00000000..368bce0a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m @@ -0,0 +1,54 @@ +#import "GPUImageSoftLightBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSoftLightBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); + mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + lowp float alphaDivisor = base.a + step(base.a, 0.0); // Protect against a divide-by-zero blacking out things in the output + gl_FragColor = base * (overlay.a * (base / alphaDivisor) + (2.0 * overlay * (1.0 - (base / alphaDivisor)))) + overlay * (1.0 - base.a) + base * (1.0 - overlay.a); + } +); +#else +NSString *const kGPUImageSoftLightBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 base = texture2D(inputImageTexture, textureCoordinate); + vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); + + float alphaDivisor = base.a + step(base.a, 0.0); // Protect against a divide-by-zero blacking out things in the output + gl_FragColor = base * (overlay.a * (base / alphaDivisor) + (2.0 * overlay * (1.0 - (base / alphaDivisor)))) + overlay * (1.0 - base.a) + base * (1.0 - overlay.a); + } +); +#endif + +@implementation GPUImageSoftLightBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSoftLightBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.h new file mode 100644 index 00000000..ba01c15a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.h @@ -0,0 +1,14 @@ +#import "GPUImageFilter.h" + +/** Pixels with a luminance above the threshold will invert their color + */ +@interface GPUImageSolarizeFilter : GPUImageFilter +{ + GLint thresholdUniform; +} + +/** Anything above this luminance will be inverted, and anything below normal. Ranges from 0.0 to 1.0, with 0.5 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m new file mode 100644 index 00000000..616cb5b2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m @@ -0,0 +1,76 @@ +#import "GPUImageSolarizeFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSolarizeFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform highp float threshold; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + highp float luminance = dot(textureColor.rgb, W); + highp float thresholdResult = step(luminance, threshold); + highp vec3 finalColor = abs(thresholdResult - textureColor.rgb); + + gl_FragColor = vec4(finalColor, textureColor.w); + } +); +#else +NSString *const kGPUImageSolarizeFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float threshold; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + float luminance = dot(textureColor.rgb, W); + float thresholdResult = step(luminance, threshold); + vec3 finalColor = abs(thresholdResult - textureColor.rgb); + + gl_FragColor = vec4(vec3(finalColor), textureColor.w); + } +); +#endif + +@implementation GPUImageSolarizeFilter; + +@synthesize threshold = _threshold; + +#pragma mark - +#pragma mark Initialization + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSolarizeFragmentShaderString])) + { + return nil; + } + + thresholdUniform = [filterProgram uniformIndex:@"threshold"]; + self.threshold = 0.5; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setThreshold:(CGFloat)newValue; +{ + _threshold = newValue; + + [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; +} + + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.h b/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.h new file mode 100644 index 00000000..58b1383e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.h @@ -0,0 +1,19 @@ +#import "GPUImageFilter.h" + +// This outputs an image with a constant color. You need to use -forceProcessingAtSize: in order to set the output image +// dimensions, or this won't work correctly + + +@interface GPUImageSolidColorGenerator : GPUImageFilter +{ + GLint colorUniform; + GLint useExistingAlphaUniform; +} + +// This color dictates what the output image will be filled with +@property(readwrite, nonatomic) GPUVector4 color; +@property(readwrite, nonatomic, assign) BOOL useExistingAlpha; // whether to use the alpha of the existing image or not, default is NO + +- (void)setColorRed:(CGFloat)redComponent green:(CGFloat)greenComponent blue:(CGFloat)blueComponent alpha:(CGFloat)alphaComponent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m new file mode 100644 index 00000000..9b555ce0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m @@ -0,0 +1,123 @@ +#import "GPUImageSolidColorGenerator.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUSolidColorFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying highp vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform vec4 color; + uniform float useExistingAlpha; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + gl_FragColor = vec4(color.rgb, max(textureColor.a, 1.0 - useExistingAlpha)); + } + ); +#else +NSString *const kGPUSolidColorFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + uniform sampler2D inputImageTexture; + uniform vec4 color; + uniform float useExistingAlpha; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + gl_FragColor = vec4(color.rgb, max(textureColor.a, 1.0 - useExistingAlpha)); + } + ); +#endif + +@implementation GPUImageSolidColorGenerator + +@synthesize color = _color; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUSolidColorFragmentShaderString])) + { + return nil; + } + + colorUniform = [filterProgram uniformIndex:@"color"]; + useExistingAlphaUniform = [filterProgram uniformIndex:@"useExistingAlpha"]; + + _color = (GPUVector4){0.0f, 0.0f, 0.5f, 1.0f}; + self.useExistingAlpha = NO; + + return self; +} + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + return; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glClearColor(_color.one, _color.two, _color.three, _color.four); + glClear(GL_COLOR_BUFFER_BIT); + }); +} + + +#pragma mark - +#pragma mark Accessors + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + + if (!CGSizeEqualToSize(inputTextureSize, CGSizeZero)) + { + [self newFrameReadyAtTime:kCMTimeIndefinite atIndex:0]; + } +} + +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; +{ + [super addTarget:newTarget atTextureLocation:textureLocation]; + + if (!CGSizeEqualToSize(inputTextureSize, CGSizeZero)) + { + [newTarget setInputSize:inputTextureSize atIndex:textureLocation]; + [newTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureLocation]; + } +} + +- (void)setColor:(GPUVector4)newValue; +{ + [self setColorRed:newValue.one green:newValue.two blue:newValue.three alpha:newValue.four]; +} + +- (void)setColorRed:(CGFloat)redComponent green:(CGFloat)greenComponent blue:(CGFloat)blueComponent alpha:(CGFloat)alphaComponent; +{ + _color.one = (GLfloat)redComponent; + _color.two = (GLfloat)greenComponent; + _color.three = (GLfloat)blueComponent; + _color.four = (GLfloat)alphaComponent; + +// [self setVec4:_color forUniform:colorUniform program:filterProgram]; + runAsynchronouslyOnVideoProcessingQueue(^{ + [self newFrameReadyAtTime:kCMTimeIndefinite atIndex:0]; + }); +} + +- (void)setUseExistingAlpha:(BOOL)useExistingAlpha; +{ + _useExistingAlpha = useExistingAlpha; + + [self setInteger:(useExistingAlpha ? 1 : 0) forUniform:useExistingAlphaUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.h new file mode 100644 index 00000000..29e30635 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSourceOverBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m new file mode 100644 index 00000000..432adc4b --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m @@ -0,0 +1,51 @@ +#import "GPUImageSourceOverBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSourceOverBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate); + + gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); + } +); +#else +NSString *const kGPUImageSourceOverBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate); + + gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); + } + ); +#endif + +@implementation GPUImageSourceOverBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSourceOverBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.h new file mode 100644 index 00000000..cbbd2afa --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.h @@ -0,0 +1,15 @@ +#import "GPUImageFilter.h" + +@interface GPUImageSphereRefractionFilter : GPUImageFilter +{ + GLint radiusUniform, centerUniform, aspectRatioUniform, refractiveIndexUniform; +} + +/// The center about which to apply the distortion, with a default of (0.5, 0.5) +@property(readwrite, nonatomic) CGPoint center; +/// The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.25 +@property(readwrite, nonatomic) CGFloat radius; +/// The index of refraction for the sphere, with a default of 0.71 +@property(readwrite, nonatomic) CGFloat refractiveIndex; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m new file mode 100644 index 00000000..b0f54042 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m @@ -0,0 +1,179 @@ +#import "GPUImageSphereRefractionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSphereRefractionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 center; + uniform highp float radius; + uniform highp float aspectRatio; + uniform highp float refractiveIndex; + + void main() + { + highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + highp float distanceFromCenter = distance(center, textureCoordinateToUse); + lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius); + + distanceFromCenter = distanceFromCenter / radius; + + highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); + highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); + + highp vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); + + gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere; + } +); +#else +NSString *const kGPUImageSphereRefractionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform vec2 center; + uniform float radius; + uniform float aspectRatio; + uniform float refractiveIndex; + + void main() + { + vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); + float distanceFromCenter = distance(center, textureCoordinateToUse); + float checkForPresenceWithinSphere = step(distanceFromCenter, radius); + + distanceFromCenter = distanceFromCenter / radius; + + float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); + vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); + + vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); + + gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere; + } +); +#endif + +@interface GPUImageSphereRefractionFilter () + +- (void)adjustAspectRatio; + +@property (readwrite, nonatomic) CGFloat aspectRatio; + +@end + + +@implementation GPUImageSphereRefractionFilter + +@synthesize center = _center; +@synthesize radius = _radius; +@synthesize aspectRatio = _aspectRatio; +@synthesize refractiveIndex = _refractiveIndex; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageSphereRefractionFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + radiusUniform = [filterProgram uniformIndex:@"radius"]; + aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; + centerUniform = [filterProgram uniformIndex:@"center"]; + refractiveIndexUniform = [filterProgram uniformIndex:@"refractiveIndex"]; + + self.radius = 0.25; + self.center = CGPointMake(0.5, 0.5); + self.refractiveIndex = 0.71; + + [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:0.0]; + + return self; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + CGSize oldInputSize = inputTextureSize; + [super setInputSize:newSize atIndex:textureIndex]; + + if (!CGSizeEqualToSize(oldInputSize, inputTextureSize) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) + { + [self adjustAspectRatio]; + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)adjustAspectRatio; +{ + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; + } + else + { + [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; + [self adjustAspectRatio]; +} + +- (void)forceProcessingAtSize:(CGSize)frameSize; +{ + [super forceProcessingAtSize:frameSize]; + [self adjustAspectRatio]; +} + +- (void)setRadius:(CGFloat)newValue; +{ + _radius = newValue; + + [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; +} + +- (void)setCenter:(CGPoint)newValue; +{ + _center = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +- (void)setAspectRatio:(CGFloat)newValue; +{ + _aspectRatio = newValue; + + [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; +} + +- (void)setRefractiveIndex:(CGFloat)newValue; +{ + _refractiveIndex = newValue; + + [self setFloat:_refractiveIndex forUniform:refractiveIndexUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.h b/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.h new file mode 100755 index 00000000..e4db59b2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.h @@ -0,0 +1,24 @@ +#import "GPUImageVideoCamera.h" + +void stillImageDataReleaseCallback(void *releaseRefCon, const void *baseAddress); +void GPUImageCreateResizedSampleBuffer(CVPixelBufferRef cameraFrame, CGSize finalSize, CMSampleBufferRef *sampleBuffer); + +@interface GPUImageStillCamera : GPUImageVideoCamera + +/** The JPEG compression quality to use when capturing a photo as a JPEG. + */ +@property CGFloat jpegCompressionQuality; + +// Only reliably set inside the context of the completion handler of one of the capture methods +@property (readonly) NSDictionary *currentCaptureMetadata; + +// Photography controls +- (void)capturePhotoAsSampleBufferWithCompletionHandler:(void (^)(CMSampleBufferRef imageSampleBuffer, NSError *error))block; +- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; +- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; +- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; +- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; +- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; +- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m b/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m new file mode 100755 index 00000000..447f79f6 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m @@ -0,0 +1,338 @@ +// 2448x3264 pixel image = 31,961,088 bytes for uncompressed RGBA + +#import "GPUImageStillCamera.h" + +void stillImageDataReleaseCallback(void *releaseRefCon, const void *baseAddress) +{ + free((void *)baseAddress); +} + +void GPUImageCreateResizedSampleBuffer(CVPixelBufferRef cameraFrame, CGSize finalSize, CMSampleBufferRef *sampleBuffer) +{ + // CVPixelBufferCreateWithPlanarBytes for YUV input + + CGSize originalSize = CGSizeMake(CVPixelBufferGetWidth(cameraFrame), CVPixelBufferGetHeight(cameraFrame)); + + CVPixelBufferLockBaseAddress(cameraFrame, 0); + GLubyte *sourceImageBytes = CVPixelBufferGetBaseAddress(cameraFrame); + CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, sourceImageBytes, CVPixelBufferGetBytesPerRow(cameraFrame) * originalSize.height, NULL); + CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); + CGImageRef cgImageFromBytes = CGImageCreate((int)originalSize.width, (int)originalSize.height, 8, 32, CVPixelBufferGetBytesPerRow(cameraFrame), genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst, dataProvider, NULL, NO, kCGRenderingIntentDefault); + + GLubyte *imageData = (GLubyte *) calloc(1, (int)finalSize.width * (int)finalSize.height * 4); + + CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)finalSize.width, (int)finalSize.height, 8, (int)finalSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); + CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, finalSize.width, finalSize.height), cgImageFromBytes); + CGImageRelease(cgImageFromBytes); + CGContextRelease(imageContext); + CGColorSpaceRelease(genericRGBColorspace); + CGDataProviderRelease(dataProvider); + + CVPixelBufferRef pixel_buffer = NULL; + CVPixelBufferCreateWithBytes(kCFAllocatorDefault, finalSize.width, finalSize.height, kCVPixelFormatType_32BGRA, imageData, finalSize.width * 4, stillImageDataReleaseCallback, NULL, NULL, &pixel_buffer); + CMVideoFormatDescriptionRef videoInfo = NULL; + CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixel_buffer, &videoInfo); + + CMTime frameTime = CMTimeMake(1, 30); + CMSampleTimingInfo timing = {frameTime, frameTime, kCMTimeInvalid}; + + CMSampleBufferCreateForImageBuffer(kCFAllocatorDefault, pixel_buffer, YES, NULL, NULL, videoInfo, &timing, sampleBuffer); + CVPixelBufferUnlockBaseAddress(cameraFrame, 0); + CFRelease(videoInfo); + CVPixelBufferRelease(pixel_buffer); +} + +@interface GPUImageStillCamera () +{ + AVCaptureStillImageOutput *photoOutput; +} + +// Methods calling this are responsible for calling dispatch_semaphore_signal(frameRenderingSemaphore) somewhere inside the block +- (void)capturePhotoProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withImageOnGPUHandler:(void (^)(NSError *error))block; + +@end + +@implementation GPUImageStillCamera { + BOOL requiresFrontCameraTextureCacheCorruptionWorkaround; +} + +@synthesize currentCaptureMetadata = _currentCaptureMetadata; +@synthesize jpegCompressionQuality = _jpegCompressionQuality; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; +{ + if (!(self = [super initWithSessionPreset:sessionPreset cameraPosition:cameraPosition])) + { + return nil; + } + + /* Detect iOS version < 6 which require a texture cache corruption workaround */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + requiresFrontCameraTextureCacheCorruptionWorkaround = [[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] == NSOrderedAscending; +#pragma clang diagnostic pop + + [self.captureSession beginConfiguration]; + + photoOutput = [[AVCaptureStillImageOutput alloc] init]; + + // Having a still photo input set to BGRA and video to YUV doesn't work well, so since I don't have YUV resizing for iPhone 4 yet, kick back to BGRA for that device +// if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) + if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) + { + BOOL supportsFullYUVRange = NO; + NSArray *supportedPixelFormats = photoOutput.availableImageDataCVPixelFormatTypes; + for (NSNumber *currentPixelFormat in supportedPixelFormats) + { + if ([currentPixelFormat intValue] == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) + { + supportsFullYUVRange = YES; + } + } + + if (supportsFullYUVRange) + { + [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + } + else + { + [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + } + } + else + { + captureAsYUV = NO; + [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + } + + [self.captureSession addOutput:photoOutput]; + + [self.captureSession commitConfiguration]; + + self.jpegCompressionQuality = 0.8; + + return self; +} + +- (id)init; +{ + if (!(self = [self initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:AVCaptureDevicePositionBack])) + { + return nil; + } + return self; +} + +- (void)removeInputsAndOutputs; +{ + [self.captureSession removeOutput:photoOutput]; + [super removeInputsAndOutputs]; +} + +#pragma mark - +#pragma mark Photography controls + +- (void)capturePhotoAsSampleBufferWithCompletionHandler:(void (^)(CMSampleBufferRef imageSampleBuffer, NSError *error))block +{ + NSLog(@"If you want to use the method capturePhotoAsSampleBufferWithCompletionHandler:, you must comment out the line in GPUImageStillCamera.m in the method initWithSessionPreset:cameraPosition: which sets the CVPixelBufferPixelFormatTypeKey, as well as uncomment the rest of the method capturePhotoAsSampleBufferWithCompletionHandler:. However, if you do this you cannot use any of the photo capture methods to take a photo if you also supply a filter."); + + /*dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); + + [photoOutput captureStillImageAsynchronouslyFromConnection:[[photoOutput connections] objectAtIndex:0] completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { + block(imageSampleBuffer, error); + }]; + + dispatch_semaphore_signal(frameRenderingSemaphore); + + */ + + return; +} + +- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; +{ + [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { + UIImage *filteredPhoto = nil; + + if(!error){ + filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; + } + dispatch_semaphore_signal(frameRenderingSemaphore); + + block(filteredPhoto, error); + }]; +} + +- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block { + [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { + UIImage *filteredPhoto = nil; + + if(!error) { + filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; + } + dispatch_semaphore_signal(frameRenderingSemaphore); + + block(filteredPhoto, error); + }]; +} + +- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; +{ +// reportAvailableMemoryForGPUImage(@"Before Capture"); + + [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { + NSData *dataForJPEGFile = nil; + + if(!error){ + @autoreleasepool { + UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; + dispatch_semaphore_signal(frameRenderingSemaphore); +// reportAvailableMemoryForGPUImage(@"After UIImage generation"); + + dataForJPEGFile = UIImageJPEGRepresentation(filteredPhoto,self.jpegCompressionQuality); +// reportAvailableMemoryForGPUImage(@"After JPEG generation"); + } + +// reportAvailableMemoryForGPUImage(@"After autorelease pool"); + }else{ + dispatch_semaphore_signal(frameRenderingSemaphore); + } + + block(dataForJPEGFile, error); + }]; +} + +- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedImage, NSError *error))block { + [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { + NSData *dataForJPEGFile = nil; + + if(!error) { + @autoreleasepool { + UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; + dispatch_semaphore_signal(frameRenderingSemaphore); + + dataForJPEGFile = UIImageJPEGRepresentation(filteredPhoto, self.jpegCompressionQuality); + } + } else { + dispatch_semaphore_signal(frameRenderingSemaphore); + } + + block(dataForJPEGFile, error); + }]; +} + +- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; +{ + + [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { + NSData *dataForPNGFile = nil; + + if(!error){ + @autoreleasepool { + UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; + dispatch_semaphore_signal(frameRenderingSemaphore); + dataForPNGFile = UIImagePNGRepresentation(filteredPhoto); + } + }else{ + dispatch_semaphore_signal(frameRenderingSemaphore); + } + + block(dataForPNGFile, error); + }]; + + return; +} + +- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; +{ + + [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { + NSData *dataForPNGFile = nil; + + if(!error){ + @autoreleasepool { + UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; + dispatch_semaphore_signal(frameRenderingSemaphore); + dataForPNGFile = UIImagePNGRepresentation(filteredPhoto); + } + }else{ + dispatch_semaphore_signal(frameRenderingSemaphore); + } + + block(dataForPNGFile, error); + }]; + + return; +} + +#pragma mark - Private Methods + +- (void)capturePhotoProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withImageOnGPUHandler:(void (^)(NSError *error))block +{ + dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); + + if(photoOutput.isCapturingStillImage){ + block([NSError errorWithDomain:AVFoundationErrorDomain code:AVErrorMaximumStillImageCaptureRequestsExceeded userInfo:nil]); + return; + } + + [photoOutput captureStillImageAsynchronouslyFromConnection:[[photoOutput connections] objectAtIndex:0] completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { + if(imageSampleBuffer == NULL){ + block(error); + return; + } + + // For now, resize photos to fix within the max texture size of the GPU + CVImageBufferRef cameraFrame = CMSampleBufferGetImageBuffer(imageSampleBuffer); + + CGSize sizeOfPhoto = CGSizeMake(CVPixelBufferGetWidth(cameraFrame), CVPixelBufferGetHeight(cameraFrame)); + CGSize scaledImageSizeToFitOnGPU = [GPUImageContext sizeThatFitsWithinATextureForSize:sizeOfPhoto]; + if (!CGSizeEqualToSize(sizeOfPhoto, scaledImageSizeToFitOnGPU)) + { + CMSampleBufferRef sampleBuffer = NULL; + + if (CVPixelBufferGetPlaneCount(cameraFrame) > 0) + { + NSAssert(NO, @"Error: no downsampling for YUV input in the framework yet"); + } + else + { + GPUImageCreateResizedSampleBuffer(cameraFrame, scaledImageSizeToFitOnGPU, &sampleBuffer); + } + + dispatch_semaphore_signal(frameRenderingSemaphore); + [finalFilterInChain useNextFrameForImageCapture]; + [self captureOutput:photoOutput didOutputSampleBuffer:sampleBuffer fromConnection:[[photoOutput connections] objectAtIndex:0]]; + dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); + if (sampleBuffer != NULL) + CFRelease(sampleBuffer); + } + else + { + // This is a workaround for the corrupt images that are sometimes returned when taking a photo with the front camera and using the iOS 5.0 texture caches + AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; + if ( (currentCameraPosition != AVCaptureDevicePositionFront) || (![GPUImageContext supportsFastTextureUpload]) || !requiresFrontCameraTextureCacheCorruptionWorkaround) + { + dispatch_semaphore_signal(frameRenderingSemaphore); + [finalFilterInChain useNextFrameForImageCapture]; + [self captureOutput:photoOutput didOutputSampleBuffer:imageSampleBuffer fromConnection:[[photoOutput connections] objectAtIndex:0]]; + dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); + } + } + + CFDictionaryRef metadata = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate); + _currentCaptureMetadata = (__bridge_transfer NSDictionary *)metadata; + + block(nil); + + _currentCaptureMetadata = nil; + }]; +} + + + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.h new file mode 100755 index 00000000..07803095 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +/** Creates a stretch distortion of the image + */ +@interface GPUImageStretchDistortionFilter : GPUImageFilter { + GLint centerUniform; +} + +/** The center about which to apply the distortion, with a default of (0.5, 0.5) + */ +@property(readwrite, nonatomic) CGPoint center; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m new file mode 100755 index 00000000..d38cac34 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m @@ -0,0 +1,99 @@ +#import "GPUImageStretchDistortionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 center; + + void main() + { + highp vec2 normCoord = 2.0 * textureCoordinate - 1.0; + highp vec2 normCenter = 2.0 * center - 1.0; + + normCoord -= normCenter; + mediump vec2 s = sign(normCoord); + normCoord = abs(normCoord); + normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord; + normCoord = s * normCoord; + + normCoord += normCenter; + + mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; + + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + + } +); +#else +NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform vec2 center; + + void main() + { + vec2 normCoord = 2.0 * textureCoordinate - 1.0; + vec2 normCenter = 2.0 * center - 1.0; + + normCoord -= normCenter; + vec2 s = sign(normCoord); + normCoord = abs(normCoord); + normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord; + normCoord = s * normCoord; + + normCoord += normCenter; + + vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse); + } +); +#endif + +@implementation GPUImageStretchDistortionFilter + +@synthesize center = _center; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageStretchDistortionFragmentShaderString])) + { + return nil; + } + + centerUniform = [filterProgram uniformIndex:@"center"]; + + self.center = CGPointMake(0.5, 0.5); + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; +} + +- (void)setCenter:(CGPoint)newValue; +{ + _center = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.h new file mode 100755 index 00000000..8dee8215 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageSubtractBlendFilter : GPUImageTwoInputFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m new file mode 100755 index 00000000..8938baea --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m @@ -0,0 +1,52 @@ +#import "GPUImageSubtractBlendFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSubtractBlendFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(textureColor.rgb - textureColor2.rgb, textureColor.a); + } +); +#else +NSString *const kGPUImageSubtractBlendFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); + + gl_FragColor = vec4(textureColor.rgb - textureColor2.rgb, textureColor.a); + } +); +#endif + +@implementation GPUImageSubtractBlendFilter + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSubtractBlendFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.h new file mode 100755 index 00000000..ed7d0122 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilter.h" + +/** Creates a swirl distortion on the image + */ +@interface GPUImageSwirlFilter : GPUImageFilter +{ + GLint radiusUniform, centerUniform, angleUniform; +} + +/// The center about which to apply the distortion, with a default of (0.5, 0.5) +@property(readwrite, nonatomic) CGPoint center; +/// The radius of the distortion, ranging from 0.0 to 1.0, with a default of 0.5 +@property(readwrite, nonatomic) CGFloat radius; +/// The amount of distortion to apply, with a minimum of 0.0 and a default of 1.0 +@property(readwrite, nonatomic) CGFloat angle; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m new file mode 100755 index 00000000..5462bc65 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m @@ -0,0 +1,123 @@ +#import "GPUImageSwirlFilter.h" + +// Adapted from the shader example here: http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl/ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageSwirlFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 center; + uniform highp float radius; + uniform highp float angle; + + void main() + { + highp vec2 textureCoordinateToUse = textureCoordinate; + highp float dist = distance(center, textureCoordinate); + if (dist < radius) + { + textureCoordinateToUse -= center; + highp float percent = (radius - dist) / radius; + highp float theta = percent * percent * angle * 8.0; + highp float s = sin(theta); + highp float c = cos(theta); + textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); + textureCoordinateToUse += center; + } + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + + } +); +#else +NSString *const kGPUImageSwirlFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform vec2 center; + uniform float radius; + uniform float angle; + + void main() + { + vec2 textureCoordinateToUse = textureCoordinate; + float dist = distance(center, textureCoordinate); + if (dist < radius) + { + textureCoordinateToUse -= center; + float percent = (radius - dist) / radius; + float theta = percent * percent * angle * 8.0; + float s = sin(theta); + float c = cos(theta); + textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); + textureCoordinateToUse += center; + } + + gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); + } +); +#endif + +@implementation GPUImageSwirlFilter + +@synthesize center = _center; +@synthesize radius = _radius; +@synthesize angle = _angle; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageSwirlFragmentShaderString])) + { + return nil; + } + + radiusUniform = [filterProgram uniformIndex:@"radius"]; + angleUniform = [filterProgram uniformIndex:@"angle"]; + centerUniform = [filterProgram uniformIndex:@"center"]; + + self.radius = 0.5; + self.angle = 1.0; + self.center = CGPointMake(0.5, 0.5); + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setCenter:self.center]; +} + +- (void)setRadius:(CGFloat)newValue; +{ + _radius = newValue; + + [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; +} + +- (void)setAngle:(CGFloat)newValue; +{ + _angle = newValue; + + [self setFloat:_angle forUniform:angleUniform program:filterProgram]; +} + +- (void)setCenter:(CGPoint)newValue; +{ + _center = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.h b/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.h new file mode 100755 index 00000000..8190305d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.h @@ -0,0 +1,14 @@ +#import "GPUImageOutput.h" + +@interface GPUImageTextureInput : GPUImageOutput +{ + CGSize textureSize; +} + +// Initialization and teardown +- (id)initWithTexture:(GLuint)newInputTexture size:(CGSize)newTextureSize; + +// Image rendering +- (void)processTextureWithFrameTime:(CMTime)frameTime; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m b/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m new file mode 100755 index 00000000..ad3ca1d1 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m @@ -0,0 +1,46 @@ +#import "GPUImageTextureInput.h" + +@implementation GPUImageTextureInput + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithTexture:(GLuint)newInputTexture size:(CGSize)newTextureSize; +{ + if (!(self = [super init])) + { + return nil; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + }); + + textureSize = newTextureSize; + + runSynchronouslyOnVideoProcessingQueue(^{ + outputFramebuffer = [[GPUImageFramebuffer alloc] initWithSize:newTextureSize overriddenTexture:newInputTexture]; + }); + + return self; +} + +#pragma mark - +#pragma mark Image rendering + +- (void)processTextureWithFrameTime:(CMTime)frameTime; +{ + runAsynchronouslyOnVideoProcessingQueue(^{ + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [currentTarget setInputSize:textureSize atIndex:targetTextureIndex]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; + [currentTarget newFrameReadyAtTime:frameTime atIndex:targetTextureIndex]; + } + }); +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.h b/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.h new file mode 100755 index 00000000..05e1f36e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.h @@ -0,0 +1,21 @@ +#import +#import "GPUImageContext.h" + +@protocol GPUImageTextureOutputDelegate; + +@interface GPUImageTextureOutput : NSObject +{ + GPUImageFramebuffer *firstInputFramebuffer; +} + +@property(readwrite, unsafe_unretained, nonatomic) id delegate; +@property(readonly) GLuint texture; +@property(nonatomic) BOOL enabled; + +- (void)doneWithTexture; + +@end + +@protocol GPUImageTextureOutputDelegate +- (void)newFrameReadyFromTextureOutput:(GPUImageTextureOutput *)callbackTextureOutput; +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m b/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m new file mode 100755 index 00000000..1e1f24f2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m @@ -0,0 +1,83 @@ +#import "GPUImageTextureOutput.h" + +@implementation GPUImageTextureOutput + +@synthesize delegate = _delegate; +@synthesize texture = _texture; +@synthesize enabled; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + self.enabled = YES; + + return self; +} + +- (void)doneWithTexture; +{ + [firstInputFramebuffer unlock]; +} + +#pragma mark - +#pragma mark GPUImageInput protocol + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + [_delegate newFrameReadyFromTextureOutput:self]; +} + +- (NSInteger)nextAvailableTextureIndex; +{ + return 0; +} + +// TODO: Deal with the fact that the texture changes regularly as a result of the caching +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + firstInputFramebuffer = newInputFramebuffer; + [firstInputFramebuffer lock]; + + _texture = [firstInputFramebuffer texture]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ +} + +- (CGSize)maximumOutputSize; +{ + return CGSizeZero; +} + +- (void)endProcessing +{ +} + +- (BOOL)shouldIgnoreUpdatesToThisTarget; +{ + return NO; +} + +- (BOOL)wantsMonochromeInput; +{ + return NO; +} + +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; +{ + +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.h new file mode 100644 index 00000000..5ecd53e0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.h @@ -0,0 +1,21 @@ +#import "GPUImageTwoInputFilter.h" + +extern NSString *const kGPUImageThreeInputTextureVertexShaderString; + +@interface GPUImageThreeInputFilter : GPUImageTwoInputFilter +{ + GPUImageFramebuffer *thirdInputFramebuffer; + + GLint filterThirdTextureCoordinateAttribute; + GLint filterInputTextureUniform3; + GPUImageRotationMode inputRotation3; + GLuint filterSourceTexture3; + CMTime thirdFrameTime; + + BOOL hasSetSecondTexture, hasReceivedThirdFrame, thirdFrameWasVideo; + BOOL thirdFrameCheckDisabled; +} + +- (void)disableThirdFrameCheck; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m new file mode 100644 index 00000000..2f4f113f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m @@ -0,0 +1,328 @@ +#import "GPUImageThreeInputFilter.h" + + +NSString *const kGPUImageThreeInputTextureVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + attribute vec4 inputTextureCoordinate2; + attribute vec4 inputTextureCoordinate3; + + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + varying vec2 textureCoordinate3; + + void main() + { + gl_Position = position; + textureCoordinate = inputTextureCoordinate.xy; + textureCoordinate2 = inputTextureCoordinate2.xy; + textureCoordinate3 = inputTextureCoordinate3.xy; + } +); + +@implementation GPUImageThreeInputFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [self initWithVertexShaderFromString:kGPUImageThreeInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + inputRotation3 = kGPUImageNoRotation; + + hasSetSecondTexture = NO; + + hasReceivedThirdFrame = NO; + thirdFrameWasVideo = NO; + thirdFrameCheckDisabled = NO; + + thirdFrameTime = kCMTimeInvalid; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + filterThirdTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate3"]; + + filterInputTextureUniform3 = [filterProgram uniformIndex:@"inputImageTexture3"]; // This does assume a name of "inputImageTexture3" for the third input texture in the fragment shader + glEnableVertexAttribArray(filterThirdTextureCoordinateAttribute); + }); + + return self; +} + +- (void)initializeAttributes; +{ + [super initializeAttributes]; + [filterProgram addAttribute:@"inputTextureCoordinate3"]; +} + +- (void)disableThirdFrameCheck; +{ + thirdFrameCheckDisabled = YES; +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + [secondInputFramebuffer unlock]; + [thirdInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + [self setUniformsForProgramAtIndex:0]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform, 2); + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform2, 3); + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, [thirdInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform3, 4); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); + glVertexAttribPointer(filterThirdTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation3]); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + [firstInputFramebuffer unlock]; + [secondInputFramebuffer unlock]; + [thirdInputFramebuffer unlock]; + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +#pragma mark - +#pragma mark GPUImageInput + +- (NSInteger)nextAvailableTextureIndex; +{ + if (hasSetSecondTexture) + { + return 2; + } + else if (hasSetFirstTexture) + { + return 1; + } + else + { + return 0; + } +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + firstInputFramebuffer = newInputFramebuffer; + hasSetFirstTexture = YES; + [firstInputFramebuffer lock]; + } + else if (textureIndex == 1) + { + secondInputFramebuffer = newInputFramebuffer; + hasSetSecondTexture = YES; + [secondInputFramebuffer lock]; + } + else + { + thirdInputFramebuffer = newInputFramebuffer; + [thirdInputFramebuffer lock]; + } +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + [super setInputSize:newSize atIndex:textureIndex]; + + if (CGSizeEqualToSize(newSize, CGSizeZero)) + { + hasSetFirstTexture = NO; + } + } + else if (textureIndex == 1) + { + if (CGSizeEqualToSize(newSize, CGSizeZero)) + { + hasSetSecondTexture = NO; + } + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + inputRotation = newInputRotation; + } + else if (textureIndex == 1) + { + inputRotation2 = newInputRotation; + } + else + { + inputRotation3 = newInputRotation; + } +} + +- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; +{ + CGSize rotatedSize = sizeToRotate; + + GPUImageRotationMode rotationToCheck; + if (textureIndex == 0) + { + rotationToCheck = inputRotation; + } + else if (textureIndex == 1) + { + rotationToCheck = inputRotation2; + } + else + { + rotationToCheck = inputRotation3; + } + + if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) + { + rotatedSize.width = sizeToRotate.height; + rotatedSize.height = sizeToRotate.width; + } + + return rotatedSize; +} + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + // You can set up infinite update loops, so this helps to short circuit them + if (hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) + { + return; + } + + BOOL updatedMovieFrameOppositeStillImage = NO; + + if (textureIndex == 0) + { + hasReceivedFirstFrame = YES; + firstFrameTime = frameTime; + if (secondFrameCheckDisabled) + { + hasReceivedSecondFrame = YES; + } + if (thirdFrameCheckDisabled) + { + hasReceivedThirdFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(secondFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + else if (textureIndex == 1) + { + hasReceivedSecondFrame = YES; + secondFrameTime = frameTime; + if (firstFrameCheckDisabled) + { + hasReceivedFirstFrame = YES; + } + if (thirdFrameCheckDisabled) + { + hasReceivedThirdFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(firstFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + else + { + hasReceivedThirdFrame = YES; + thirdFrameTime = frameTime; + if (firstFrameCheckDisabled) + { + hasReceivedFirstFrame = YES; + } + if (secondFrameCheckDisabled) + { + hasReceivedSecondFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(firstFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + + // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) + if ((hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) || updatedMovieFrameOppositeStillImage) + { + static const GLfloat imageVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + + [self informTargetsAboutNewFrameAtTime:frameTime]; + + hasReceivedFirstFrame = NO; + hasReceivedSecondFrame = NO; + hasReceivedThirdFrame = NO; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.h new file mode 100755 index 00000000..2036030c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.h @@ -0,0 +1,12 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImageThresholdEdgeDetectionFilter : GPUImageSobelEdgeDetectionFilter +{ + GLint thresholdUniform; +} + +/** Any edge above this threshold will be black, and anything below white. Ranges from 0.0 to 1.0, with 0.8 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m new file mode 100755 index 00000000..553c600f --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m @@ -0,0 +1,145 @@ +#import "GPUImageThresholdEdgeDetectionFilter.h" + +@implementation GPUImageThresholdEdgeDetectionFilter + +// Invert the colorspace for a sketch +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageThresholdEdgeDetectionFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float threshold; + + uniform float edgeStrength; + + void main() + { +// float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; +// float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; +// float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; +// float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; +// float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; +// float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; +// float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + leftIntensity + 2.0 * centerIntensity + rightIntensity; +// float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomIntensity + 2.0 * centerIntensity + topIntensity; + float h = (centerIntensity - topIntensity) + (bottomIntensity - centerIntensity); + float v = (centerIntensity - leftIntensity) + (rightIntensity - centerIntensity); +// float h = (centerIntensity - topIntensity); +// float j = (topIntensity - centerIntensity); +// h = max(h,j); +// j = abs(h); +// float v = (centerIntensity - leftIntensity); + + float mag = length(vec2(h, v)) * edgeStrength; + mag = step(threshold, mag); + +// float mag = abs(h); + +// gl_FragColor = vec4(h, h, h, 1.0); +// gl_FragColor = vec4(texture2D(inputImageTexture, textureCoordinate)); +// gl_FragColor = vec4(h, centerIntensity, j, 1.0); + gl_FragColor = vec4(mag, mag, mag, 1.0); + } +); +#else +NSString *const kGPUImageThresholdEdgeDetectionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float threshold; + + uniform float edgeStrength; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + h = max(0.0, h); + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + v = max(0.0, v); + + float mag = length(vec2(h, v)) * edgeStrength; + mag = step(threshold, mag); + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +@synthesize threshold = _threshold; + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + thresholdUniform = [secondFilterProgram uniformIndex:@"threshold"]; + self.threshold = 0.25; + self.edgeStrength = 1.0; + + return self; +} + + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageThresholdEdgeDetectionFragmentShaderString])) + { + return nil; + } + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setThreshold:(CGFloat)newValue; +{ + _threshold = newValue; + + [self setFloat:_threshold forUniform:thresholdUniform program:secondFilterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.h new file mode 100644 index 00000000..fda58979 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageThresholdEdgeDetectionFilter.h" + +@interface GPUImageThresholdSketchFilter : GPUImageThresholdEdgeDetectionFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m new file mode 100644 index 00000000..d24e9dea --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m @@ -0,0 +1,103 @@ +#import "GPUImageThresholdSketchFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageThresholdSketchFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform lowp float threshold; + uniform float edgeStrength; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = (length(vec2(h, v)) * edgeStrength); + mag = step(threshold, mag); + mag = 1.0 - mag; + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#else +NSString *const kGPUImageThresholdSketchFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + uniform float threshold; + uniform float edgeStrength; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = 1.0 - length(vec2(h, v) * edgeStrength); + mag = step(threshold, mag); + + gl_FragColor = vec4(vec3(mag), 1.0); + } +); +#endif + +@implementation GPUImageThresholdSketchFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageThresholdSketchFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h new file mode 100644 index 00000000..9c6e5d72 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h @@ -0,0 +1,14 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageThresholdedNonMaximumSuppressionFilter : GPUImage3x3TextureSamplingFilter +{ + GLint thresholdUniform; +} + +/** Any local maximum above this threshold will be white, and anything below black. Ranges from 0.0 to 1.0, with 0.8 as the default + */ +@property(readwrite, nonatomic) CGFloat threshold; + +- (id)initWithPackedColorspace:(BOOL)inputUsesPackedColorspace; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m new file mode 100644 index 00000000..439d3119 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m @@ -0,0 +1,297 @@ +#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying highp vec2 textureCoordinate; + varying highp vec2 leftTextureCoordinate; + varying highp vec2 rightTextureCoordinate; + + varying highp vec2 topTextureCoordinate; + varying highp vec2 topLeftTextureCoordinate; + varying highp vec2 topRightTextureCoordinate; + + varying highp vec2 bottomTextureCoordinate; + varying highp vec2 bottomLeftTextureCoordinate; + varying highp vec2 bottomRightTextureCoordinate; + + uniform lowp float threshold; + + void main() + { + lowp float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; + lowp float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + lowp float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + lowp vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + lowp float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; + lowp float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; + lowp float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; + lowp float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; + lowp float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + + // Use a tiebreaker for pixels to the left and immediately above this one + lowp float multiplier = 1.0 - step(centerColor.r, topColor); + multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); + + lowp float maxValue = max(centerColor.r, bottomColor); + maxValue = max(maxValue, bottomRightColor); + maxValue = max(maxValue, rightColor); + maxValue = max(maxValue, topRightColor); + + lowp float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; + finalValue = step(threshold, finalValue); + + gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); +// +// gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); + } +); + +NSString *const kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying highp vec2 textureCoordinate; + varying highp vec2 leftTextureCoordinate; + varying highp vec2 rightTextureCoordinate; + + varying highp vec2 topTextureCoordinate; + varying highp vec2 topLeftTextureCoordinate; + varying highp vec2 topRightTextureCoordinate; + + varying highp vec2 bottomTextureCoordinate; + varying highp vec2 bottomLeftTextureCoordinate; + varying highp vec2 bottomRightTextureCoordinate; + + uniform lowp float threshold; + uniform highp float texelWidth; + uniform highp float texelHeight; + + highp float encodedIntensity(highp vec3 sourceColor) + { + return (sourceColor.b * 256.0 * 256.0 + sourceColor.g * 256.0 + sourceColor.r); + } + + void main() + { + highp float bottomColor = encodedIntensity(texture2D(inputImageTexture, bottomTextureCoordinate).rgb); + highp float bottomLeftColor = encodedIntensity(texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb); + highp float bottomRightColor = encodedIntensity(texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb); + highp float centerColor = encodedIntensity(texture2D(inputImageTexture, textureCoordinate).rgb); + highp float leftColor = encodedIntensity(texture2D(inputImageTexture, leftTextureCoordinate).rgb); + highp float rightColor = encodedIntensity(texture2D(inputImageTexture, rightTextureCoordinate).rgb); + highp float topColor = encodedIntensity(texture2D(inputImageTexture, topTextureCoordinate).rgb); + highp float topRightColor = encodedIntensity(texture2D(inputImageTexture, topRightTextureCoordinate).rgb); + highp float topLeftColor = encodedIntensity(texture2D(inputImageTexture, topLeftTextureCoordinate).rgb); + + highp float secondStageColor1 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, -2.0 * texelHeight)).rgb); + highp float secondStageColor2 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, -1.0 * texelHeight)).rgb); + highp float secondStageColor3 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 0.0)).rgb); + highp float secondStageColor4 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 1.0 * texelHeight)).rgb); + highp float secondStageColor5 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 2.0 * texelHeight)).rgb); + highp float secondStageColor6 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-1.0 * texelWidth, 2.0 * texelHeight)).rgb); + highp float secondStageColor7 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(0.0, 2.0 * texelHeight)).rgb); + highp float secondStageColor8 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(1.0 * texelWidth, 2.0 * texelHeight)).rgb); + + highp float thirdStageColor1 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-1.0 * texelWidth, -2.0 * texelHeight)).rgb); + highp float thirdStageColor2 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(0.0, -2.0 * texelHeight)).rgb); + highp float thirdStageColor3 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(1.0 * texelWidth, -2.0 * texelHeight)).rgb); + highp float thirdStageColor4 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, -2.0 * texelHeight)).rgb); + highp float thirdStageColor5 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, -1.0 * texelHeight)).rgb); + highp float thirdStageColor6 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 0.0)).rgb); + highp float thirdStageColor7 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 1.0 * texelHeight)).rgb); + highp float thirdStageColor8 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 2.0 * texelHeight)).rgb); + + // Use a tiebreaker for pixels to the left and immediately above this one + highp float multiplier = 1.0 - step(centerColor, topColor); + multiplier = multiplier * (1.0 - step(centerColor, topLeftColor)); + multiplier = multiplier * (1.0 - step(centerColor, leftColor)); + multiplier = multiplier * (1.0 - step(centerColor, bottomLeftColor)); + + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor1)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor2)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor3)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor4)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor5)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor6)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor7)); + multiplier = multiplier * (1.0 - step(centerColor, secondStageColor8)); + + highp float maxValue = max(centerColor, bottomColor); + maxValue = max(maxValue, bottomRightColor); + maxValue = max(maxValue, rightColor); + maxValue = max(maxValue, topRightColor); + + maxValue = max(maxValue, thirdStageColor1); + maxValue = max(maxValue, thirdStageColor2); + maxValue = max(maxValue, thirdStageColor3); + maxValue = max(maxValue, thirdStageColor4); + maxValue = max(maxValue, thirdStageColor5); + maxValue = max(maxValue, thirdStageColor6); + maxValue = max(maxValue, thirdStageColor7); + maxValue = max(maxValue, thirdStageColor8); + + highp float midValue = centerColor * step(maxValue, centerColor) * multiplier; + highp float finalValue = step(threshold, midValue); + + gl_FragColor = vec4(finalValue * centerColor, topLeftColor, topRightColor, topColor); + } +); +#else +NSString *const kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform float threshold; + + void main() + { + float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; + float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; + float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + + // Use a tiebreaker for pixels to the left and immediately above this one + float multiplier = 1.0 - step(centerColor.r, topColor); + multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); + + float maxValue = max(centerColor.r, bottomColor); + maxValue = max(maxValue, bottomRightColor); + maxValue = max(maxValue, rightColor); + maxValue = max(maxValue, topRightColor); + + float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; + finalValue = step(threshold, finalValue); + + gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); + // + // gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); + } +); + +NSString *const kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform float threshold; + + void main() + { + float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); + float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; + float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; + float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + + // Use a tiebreaker for pixels to the left and immediately above this one + float multiplier = 1.0 - step(centerColor.r, topColor); + multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); + multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); + + float maxValue = max(centerColor.r, bottomColor); + maxValue = max(maxValue, bottomRightColor); + maxValue = max(maxValue, rightColor); + maxValue = max(maxValue, topRightColor); + + float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; + finalValue = step(threshold, finalValue); + + gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); + // + // gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); + } + ); +#endif + +@implementation GPUImageThresholdedNonMaximumSuppressionFilter + +@synthesize threshold = _threshold; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithPackedColorspace:NO])) + { + return nil; + } + + return self; +} + +- (id)initWithPackedColorspace:(BOOL)inputUsesPackedColorspace; +{ + NSString *shaderString; + if (inputUsesPackedColorspace) + { + shaderString = kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString; + } + else + { + shaderString = kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString; + } + + + if (!(self = [super initWithFragmentShaderFromString:shaderString])) + { + return nil; + } + + thresholdUniform = [filterProgram uniformIndex:@"threshold"]; + self.threshold = 0.9; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setThreshold:(CGFloat)newValue; +{ + _threshold = newValue; + + [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.h new file mode 100755 index 00000000..e41adee7 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.h @@ -0,0 +1,24 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGaussianBlurFilter; + +/// A simulated tilt shift lens effect +@interface GPUImageTiltShiftFilter : GPUImageFilterGroup +{ + GPUImageGaussianBlurFilter *blurFilter; + GPUImageFilter *tiltShiftFilter; +} + +/// The radius of the underlying blur, in pixels. This is 7.0 by default. +@property(readwrite, nonatomic) CGFloat blurRadiusInPixels; + +/// The normalized location of the top of the in-focus area in the image, this value should be lower than bottomFocusLevel, default 0.4 +@property(readwrite, nonatomic) CGFloat topFocusLevel; + +/// The normalized location of the bottom of the in-focus area in the image, this value should be higher than topFocusLevel, default 0.6 +@property(readwrite, nonatomic) CGFloat bottomFocusLevel; + +/// The rate at which the image gets blurry away from the in-focus region, default 0.2 +@property(readwrite, nonatomic) CGFloat focusFallOffRate; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m new file mode 100755 index 00000000..e2f632b1 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m @@ -0,0 +1,126 @@ +#import "GPUImageTiltShiftFilter.h" +#import "GPUImageFilter.h" +#import "GPUImageTwoInputFilter.h" +#import "GPUImageGaussianBlurFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageTiltShiftFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform highp float topFocusLevel; + uniform highp float bottomFocusLevel; + uniform highp float focusFallOffRate; + + void main() + { + lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); + + lowp float blurIntensity = 1.0 - smoothstep(topFocusLevel - focusFallOffRate, topFocusLevel, textureCoordinate2.y); + blurIntensity += smoothstep(bottomFocusLevel, bottomFocusLevel + focusFallOffRate, textureCoordinate2.y); + + gl_FragColor = mix(sharpImageColor, blurredImageColor, blurIntensity); + } +); +#else +NSString *const kGPUImageTiltShiftFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform float topFocusLevel; + uniform float bottomFocusLevel; + uniform float focusFallOffRate; + + void main() + { + vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); + vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); + + float blurIntensity = 1.0 - smoothstep(topFocusLevel - focusFallOffRate, topFocusLevel, textureCoordinate2.y); + blurIntensity += smoothstep(bottomFocusLevel, bottomFocusLevel + focusFallOffRate, textureCoordinate2.y); + + gl_FragColor = mix(sharpImageColor, blurredImageColor, blurIntensity); + } +); +#endif + +@implementation GPUImageTiltShiftFilter + +@synthesize blurRadiusInPixels; +@synthesize topFocusLevel = _topFocusLevel; +@synthesize bottomFocusLevel = _bottomFocusLevel; +@synthesize focusFallOffRate = _focusFallOffRate; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: apply a variable Gaussian blur + blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Second pass: combine the blurred image with the original sharp one + tiltShiftFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageTiltShiftFragmentShaderString]; + [self addFilter:tiltShiftFilter]; + + // Texture location 0 needs to be the sharp image for both the blur and the second stage processing + [blurFilter addTarget:tiltShiftFilter atTextureLocation:1]; + + // To prevent double updating of this filter, disable updates from the sharp image side +// self.inputFilterToIgnoreForUpdates = tiltShiftFilter; + + self.initialFilters = [NSArray arrayWithObjects:blurFilter, tiltShiftFilter, nil]; + self.terminalFilter = tiltShiftFilter; + + self.topFocusLevel = 0.4; + self.bottomFocusLevel = 0.6; + self.focusFallOffRate = 0.2; + self.blurRadiusInPixels = 7.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setTopFocusLevel:(CGFloat)newValue; +{ + _topFocusLevel = newValue; + [tiltShiftFilter setFloat:newValue forUniformName:@"topFocusLevel"]; +} + +- (void)setBottomFocusLevel:(CGFloat)newValue; +{ + _bottomFocusLevel = newValue; + [tiltShiftFilter setFloat:newValue forUniformName:@"bottomFocusLevel"]; +} + +- (void)setFocusFallOffRate:(CGFloat)newValue; +{ + _focusFallOffRate = newValue; + [tiltShiftFilter setFloat:newValue forUniformName:@"focusFallOffRate"]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.h new file mode 100755 index 00000000..ff4ae92e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.h @@ -0,0 +1,30 @@ +#import "GPUImageFilter.h" + +@interface GPUImageToneCurveFilter : GPUImageFilter + +@property(readwrite, nonatomic, copy) NSArray *redControlPoints; +@property(readwrite, nonatomic, copy) NSArray *greenControlPoints; +@property(readwrite, nonatomic, copy) NSArray *blueControlPoints; +@property(readwrite, nonatomic, copy) NSArray *rgbCompositeControlPoints; + +// Initialization and teardown +- (id)initWithACVData:(NSData*)data; + +- (id)initWithACV:(NSString*)curveFilename; +- (id)initWithACVURL:(NSURL*)curveFileURL; + +// This lets you set all three red, green, and blue tone curves at once. +// NOTE: Deprecated this function because this effect can be accomplished +// using the rgbComposite channel rather then setting all 3 R, G, and B channels. +- (void)setRGBControlPoints:(NSArray *)points DEPRECATED_ATTRIBUTE; + +- (void)setPointsWithACV:(NSString*)curveFilename; +- (void)setPointsWithACVURL:(NSURL*)curveFileURL; + +// Curve calculation +- (NSMutableArray *)getPreparedSplineCurve:(NSArray *)points; +- (NSMutableArray *)splineCurve:(NSArray *)points; +- (NSMutableArray *)secondDerivative:(NSArray *)cgPoints; +- (void)updateToneCurveTexture; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m new file mode 100644 index 00000000..18a717e0 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m @@ -0,0 +1,621 @@ +#import "GPUImageToneCurveFilter.h" + +#pragma mark - +#pragma mark GPUImageACVFile Helper + +// GPUImageACVFile +// +// ACV File format Parser +// Please refer to http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577411_pgfId-1056330 +// + +@interface GPUImageACVFile : NSObject{ + short version; + short totalCurves; + + NSArray *rgbCompositeCurvePoints; + NSArray *redCurvePoints; + NSArray *greenCurvePoints; + NSArray *blueCurvePoints; +} + +@property(strong,nonatomic) NSArray *rgbCompositeCurvePoints; +@property(strong,nonatomic) NSArray *redCurvePoints; +@property(strong,nonatomic) NSArray *greenCurvePoints; +@property(strong,nonatomic) NSArray *blueCurvePoints; + +- (id) initWithACVFileData:(NSData*)data; + + +unsigned short int16WithBytes(Byte* bytes); +@end + +@implementation GPUImageACVFile + +@synthesize rgbCompositeCurvePoints, redCurvePoints, greenCurvePoints, blueCurvePoints; + +- (id) initWithACVFileData:(NSData *)data { + self = [super init]; + if (self != nil) + { + if (data.length == 0) + { + NSLog(@"failed to init ACVFile with data:%@", data); + + return self; + } + + Byte* rawBytes = (Byte*) [data bytes]; + version = int16WithBytes(rawBytes); + rawBytes+=2; + + totalCurves = int16WithBytes(rawBytes); + rawBytes+=2; + + NSMutableArray *curves = [NSMutableArray new]; + + float pointRate = (1.0 / 255); + // The following is the data for each curve specified by count above + for (NSInteger x = 0; x 0) + { + // Sort the array. + NSArray *sortedPoints = [points sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + float x1 = [(NSValue *)a CGPointValue].x; + float x2 = [(NSValue *)b CGPointValue].x; +#else + float x1 = [(NSValue *)a pointValue].x; + float x2 = [(NSValue *)b pointValue].x; +#endif + return x1 > x2; + }]; + + // Convert from (0, 1) to (0, 255). + NSMutableArray *convertedPoints = [NSMutableArray arrayWithCapacity:[sortedPoints count]]; + for (int i=0; i<[points count]; i++){ +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CGPoint point = [[sortedPoints objectAtIndex:i] CGPointValue]; +#else + NSPoint point = [[sortedPoints objectAtIndex:i] pointValue]; +#endif + point.x = point.x * 255; + point.y = point.y * 255; + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [convertedPoints addObject:[NSValue valueWithCGPoint:point]]; +#else + [convertedPoints addObject:[NSValue valueWithPoint:point]]; +#endif + } + + + NSMutableArray *splinePoints = [self splineCurve:convertedPoints]; + + // If we have a first point like (0.3, 0) we'll be missing some points at the beginning + // that should be 0. +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CGPoint firstSplinePoint = [[splinePoints objectAtIndex:0] CGPointValue]; +#else + NSPoint firstSplinePoint = [[splinePoints objectAtIndex:0] pointValue]; +#endif + + if (firstSplinePoint.x > 0) { + for (int i=firstSplinePoint.x; i >= 0; i--) { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CGPoint newCGPoint = CGPointMake(i, 0); + [splinePoints insertObject:[NSValue valueWithCGPoint:newCGPoint] atIndex:0]; +#else + NSPoint newNSPoint = NSMakePoint(i, 0); + [splinePoints insertObject:[NSValue valueWithPoint:newNSPoint] atIndex:0]; +#endif + } + } + + // Insert points similarly at the end, if necessary. +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CGPoint lastSplinePoint = [[splinePoints lastObject] CGPointValue]; + + if (lastSplinePoint.x < 255) { + for (int i = lastSplinePoint.x + 1; i <= 255; i++) { + CGPoint newCGPoint = CGPointMake(i, 255); + [splinePoints addObject:[NSValue valueWithCGPoint:newCGPoint]]; + } + } +#else + NSPoint lastSplinePoint = [[splinePoints lastObject] pointValue]; + + if (lastSplinePoint.x < 255) { + for (int i = lastSplinePoint.x + 1; i <= 255; i++) { + NSPoint newNSPoint = NSMakePoint(i, 255); + [splinePoints addObject:[NSValue valueWithPoint:newNSPoint]]; + } + } +#endif + + // Prepare the spline points. + NSMutableArray *preparedSplinePoints = [NSMutableArray arrayWithCapacity:[splinePoints count]]; + for (int i=0; i<[splinePoints count]; i++) + { +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + CGPoint newPoint = [[splinePoints objectAtIndex:i] CGPointValue]; +#else + NSPoint newPoint = [[splinePoints objectAtIndex:i] pointValue]; +#endif + CGPoint origPoint = CGPointMake(newPoint.x, newPoint.x); + + float distance = sqrt(pow((origPoint.x - newPoint.x), 2.0) + pow((origPoint.y - newPoint.y), 2.0)); + + if (origPoint.y > newPoint.y) + { + distance = -distance; + } + + [preparedSplinePoints addObject:[NSNumber numberWithFloat:distance]]; + } + + return preparedSplinePoints; + } + + return nil; +} + + +- (NSMutableArray *)splineCurve:(NSArray *)points +{ + NSMutableArray *sdA = [self secondDerivative:points]; + + // [points count] is equal to [sdA count] + NSInteger n = [sdA count]; + if (n < 1) + { + return nil; + } + double sd[n]; + + // From NSMutableArray to sd[n]; + for (int i=0; i 255.0) + { + y = 255.0; + } + else if (y < 0.0) + { + y = 0.0; + } +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE + [output addObject:[NSValue valueWithCGPoint:CGPointMake(x, y)]]; +#else + [output addObject:[NSValue valueWithPoint:NSMakePoint(x, y)]]; +#endif + } + } + + // The above always misses the last point because the last point is the last next, so we approach but don't equal it. + [output addObject:[points lastObject]]; + return output; +} + +- (NSMutableArray *)secondDerivative:(NSArray *)points +{ + const NSInteger n = [points count]; + if ((n <= 0) || (n == 1)) + { + return nil; + } + + double matrix[n][3]; + double result[n]; + matrix[0][1]=1; + // What about matrix[0][1] and matrix[0][0]? Assuming 0 for now (Brad L.) + matrix[0][0]=0; + matrix[0][2]=0; + + for(int i=1;idown) + for(int i=1;iup) + for(NSInteger i=n-2;i>=0;i--) + { + double k = matrix[i][2]/matrix[i+1][1]; + matrix[i][1] -= k*matrix[i+1][0]; + matrix[i][2] = 0; + result[i] -= k*result[i+1]; + } + + double y2[n]; + for(int i=0;i= 256) && ([_greenCurve count] >= 256) && ([_blueCurve count] >= 256) && ([_rgbCompositeCurve count] >= 256)) + { + for (unsigned int currentCurveIndex = 0; currentCurveIndex < 256; currentCurveIndex++) + { + // BGRA for upload to texture + GLubyte b = fmin(fmax(currentCurveIndex + [[_blueCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); + toneCurveByteArray[currentCurveIndex * 4] = fmin(fmax(b + [[_rgbCompositeCurve objectAtIndex:b] floatValue], 0), 255); + GLubyte g = fmin(fmax(currentCurveIndex + [[_greenCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); + toneCurveByteArray[currentCurveIndex * 4 + 1] = fmin(fmax(g + [[_rgbCompositeCurve objectAtIndex:g] floatValue], 0), 255); + GLubyte r = fmin(fmax(currentCurveIndex + [[_redCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); + toneCurveByteArray[currentCurveIndex * 4 + 2] = fmin(fmax(r + [[_rgbCompositeCurve objectAtIndex:r] floatValue], 0), 255); + toneCurveByteArray[currentCurveIndex * 4 + 3] = 255; + } + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256 /*width*/, 1 /*height*/, 0, GL_BGRA, GL_UNSIGNED_BYTE, toneCurveByteArray); + } + }); +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform, 2); + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, toneCurveTexture); + glUniform1i(toneCurveTextureUniform, 3); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + [firstInputFramebuffer unlock]; + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setRGBControlPoints:(NSArray *)points +{ + _redControlPoints = [points copy]; + _redCurve = [self getPreparedSplineCurve:_redControlPoints]; + + _greenControlPoints = [points copy]; + _greenCurve = [self getPreparedSplineCurve:_greenControlPoints]; + + _blueControlPoints = [points copy]; + _blueCurve = [self getPreparedSplineCurve:_blueControlPoints]; + + [self updateToneCurveTexture]; +} + + +- (void)setRgbCompositeControlPoints:(NSArray *)newValue +{ + _rgbCompositeControlPoints = [newValue copy]; + _rgbCompositeCurve = [self getPreparedSplineCurve:_rgbCompositeControlPoints]; + + [self updateToneCurveTexture]; +} + + +- (void)setRedControlPoints:(NSArray *)newValue; +{ + _redControlPoints = [newValue copy]; + _redCurve = [self getPreparedSplineCurve:_redControlPoints]; + + [self updateToneCurveTexture]; +} + + +- (void)setGreenControlPoints:(NSArray *)newValue +{ + _greenControlPoints = [newValue copy]; + _greenCurve = [self getPreparedSplineCurve:_greenControlPoints]; + + [self updateToneCurveTexture]; +} + + +- (void)setBlueControlPoints:(NSArray *)newValue +{ + _blueControlPoints = [newValue copy]; + _blueCurve = [self getPreparedSplineCurve:_blueControlPoints]; + + [self updateToneCurveTexture]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.h new file mode 100755 index 00000000..ef8e17c3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.h @@ -0,0 +1,19 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +/** This uses Sobel edge detection to place a black border around objects, + and then it quantizes the colors present in the image to give a cartoon-like quality to the image. + */ +@interface GPUImageToonFilter : GPUImage3x3TextureSamplingFilter +{ + GLint thresholdUniform, quantizationLevelsUniform; +} + +/** The threshold at which to apply the edges, default of 0.2 + */ +@property(readwrite, nonatomic) CGFloat threshold; + +/** The levels of quantization for the posterization of colors within the scene, with a default of 10.0 + */ +@property(readwrite, nonatomic) CGFloat quantizationLevels; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m new file mode 100755 index 00000000..e8ff104e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m @@ -0,0 +1,149 @@ +#import "GPUImageToonFilter.h" +#import "GPUImageSobelEdgeDetectionFilter.h" +#import "GPUImage3x3ConvolutionFilter.h" + +// Code from "Graphics Shaders: Theory and Practice" by M. Bailey and S. Cunningham +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp float intensity; + uniform highp float threshold; + uniform highp float quantizationLevels; + + const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = length(vec2(h, v)); + + vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels; + + float thresholdTest = 1.0 - step(threshold, mag); + + gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a); + } +); +#else +NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float intensity; + uniform float threshold; + uniform float quantizationLevels; + + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + void main() + { + vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); + + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; + float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; + + float mag = length(vec2(h, v)); + + vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels; + + float thresholdTest = 1.0 - step(threshold, mag); + + gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a); + } +); +#endif + +@implementation GPUImageToonFilter + +@synthesize threshold = _threshold; +@synthesize quantizationLevels = _quantizationLevels; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageToonFragmentShaderString])) + { + return nil; + } + + hasOverriddenImageSizeFactor = NO; + + thresholdUniform = [filterProgram uniformIndex:@"threshold"]; + quantizationLevelsUniform = [filterProgram uniformIndex:@"quantizationLevels"]; + + self.threshold = 0.2; + self.quantizationLevels = 10.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setThreshold:(CGFloat)newValue; +{ + _threshold = newValue; + + [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; +} + +- (void)setQuantizationLevels:(CGFloat)newValue; +{ + _quantizationLevels = newValue; + + [self setFloat:_quantizationLevels forUniform:quantizationLevelsUniform program:filterProgram]; +} + + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.h new file mode 100755 index 00000000..9865b853 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilter.h" + +@interface GPUImageTransformFilter : GPUImageFilter +{ + GLint transformMatrixUniform, orthographicMatrixUniform; + GPUMatrix4x4 orthographicMatrix; +} + +// You can either set the transform to apply to be a 2-D affine transform or a 3-D transform. The default is the identity transform (the output image is identical to the input). +@property(readwrite, nonatomic) CGAffineTransform affineTransform; +@property(readwrite, nonatomic) CATransform3D transform3D; + +// This applies the transform to the raw frame data if set to YES, the default of NO takes the aspect ratio of the image input into account when rotating +@property(readwrite, nonatomic) BOOL ignoreAspectRatio; + +// sets the anchor point to top left corner +@property(readwrite, nonatomic) BOOL anchorTopLeft; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m new file mode 100755 index 00000000..17933092 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m @@ -0,0 +1,260 @@ +#import "GPUImageTransformFilter.h" + +NSString *const kGPUImageTransformVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + + uniform mat4 transformMatrix; + uniform mat4 orthographicMatrix; + + varying vec2 textureCoordinate; + + void main() + { + gl_Position = transformMatrix * vec4(position.xyz, 1.0) * orthographicMatrix; + textureCoordinate = inputTextureCoordinate.xy; + } +); + +@implementation GPUImageTransformFilter + +@synthesize affineTransform; +@synthesize transform3D = _transform3D; +@synthesize ignoreAspectRatio = _ignoreAspectRatio; +@synthesize anchorTopLeft = _anchorTopLeft; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageTransformVertexShaderString fragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) + { + return nil; + } + + transformMatrixUniform = [filterProgram uniformIndex:@"transformMatrix"]; + orthographicMatrixUniform = [filterProgram uniformIndex:@"orthographicMatrix"]; + + self.transform3D = CATransform3DIdentity; + + return self; +} + +#pragma mark - +#pragma mark Conversion from matrix formats + +- (void)loadOrthoMatrix:(GLfloat *)matrix left:(GLfloat)left right:(GLfloat)right bottom:(GLfloat)bottom top:(GLfloat)top near:(GLfloat)near far:(GLfloat)far; +{ + GLfloat r_l = right - left; + GLfloat t_b = top - bottom; + GLfloat f_n = far - near; + GLfloat tx = - (right + left) / (right - left); + GLfloat ty = - (top + bottom) / (top - bottom); + GLfloat tz = - (far + near) / (far - near); + + float scale = 2.0f; + if (_anchorTopLeft) + { + scale = 4.0f; + tx=-1.0f; + ty=-1.0f; + } + + matrix[0] = scale / r_l; + matrix[1] = 0.0f; + matrix[2] = 0.0f; + matrix[3] = tx; + + matrix[4] = 0.0f; + matrix[5] = scale / t_b; + matrix[6] = 0.0f; + matrix[7] = ty; + + matrix[8] = 0.0f; + matrix[9] = 0.0f; + matrix[10] = scale / f_n; + matrix[11] = tz; + + matrix[12] = 0.0f; + matrix[13] = 0.0f; + matrix[14] = 0.0f; + matrix[15] = 1.0f; +} + +//- (void)convert3DTransform:(CATransform3D *)transform3D toMatrix:(GLfloat *)matrix; +//{ +// // struct CATransform3D +// // { +// // CGFloat m11, m12, m13, m14; +// // CGFloat m21, m22, m23, m24; +// // CGFloat m31, m32, m33, m34; +// // CGFloat m41, m42, m43, m44; +// // }; +// +// matrix[0] = (GLfloat)transform3D->m11; +// matrix[1] = (GLfloat)transform3D->m12; +// matrix[2] = (GLfloat)transform3D->m13; +// matrix[3] = (GLfloat)transform3D->m14; +// matrix[4] = (GLfloat)transform3D->m21; +// matrix[5] = (GLfloat)transform3D->m22; +// matrix[6] = (GLfloat)transform3D->m23; +// matrix[7] = (GLfloat)transform3D->m24; +// matrix[8] = (GLfloat)transform3D->m31; +// matrix[9] = (GLfloat)transform3D->m32; +// matrix[10] = (GLfloat)transform3D->m33; +// matrix[11] = (GLfloat)transform3D->m34; +// matrix[12] = (GLfloat)transform3D->m41; +// matrix[13] = (GLfloat)transform3D->m42; +// matrix[14] = (GLfloat)transform3D->m43; +// matrix[15] = (GLfloat)transform3D->m44; +//} + +- (void)convert3DTransform:(CATransform3D *)transform3D toMatrix:(GPUMatrix4x4 *)matrix; +{ + // struct CATransform3D + // { + // CGFloat m11, m12, m13, m14; + // CGFloat m21, m22, m23, m24; + // CGFloat m31, m32, m33, m34; + // CGFloat m41, m42, m43, m44; + // }; + + GLfloat *mappedMatrix = (GLfloat *)matrix; + + mappedMatrix[0] = (GLfloat)transform3D->m11; + mappedMatrix[1] = (GLfloat)transform3D->m12; + mappedMatrix[2] = (GLfloat)transform3D->m13; + mappedMatrix[3] = (GLfloat)transform3D->m14; + mappedMatrix[4] = (GLfloat)transform3D->m21; + mappedMatrix[5] = (GLfloat)transform3D->m22; + mappedMatrix[6] = (GLfloat)transform3D->m23; + mappedMatrix[7] = (GLfloat)transform3D->m24; + mappedMatrix[8] = (GLfloat)transform3D->m31; + mappedMatrix[9] = (GLfloat)transform3D->m32; + mappedMatrix[10] = (GLfloat)transform3D->m33; + mappedMatrix[11] = (GLfloat)transform3D->m34; + mappedMatrix[12] = (GLfloat)transform3D->m41; + mappedMatrix[13] = (GLfloat)transform3D->m42; + mappedMatrix[14] = (GLfloat)transform3D->m43; + mappedMatrix[15] = (GLfloat)transform3D->m44; +} + +#pragma mark - +#pragma mark GPUImageInput + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + CGSize currentFBOSize = [self sizeOfFBO]; + CGFloat normalizedHeight = currentFBOSize.height / currentFBOSize.width; + + GLfloat adjustedVertices[] = { + -1.0f, -normalizedHeight, + 1.0f, -normalizedHeight, + -1.0f, normalizedHeight, + 1.0f, normalizedHeight, + }; + static const GLfloat squareVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + GLfloat adjustedVerticesAnchorTL[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, normalizedHeight, + 1.0f, normalizedHeight, + }; + + static const GLfloat squareVerticesAnchorTL[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 1.0f, + }; + + if (_ignoreAspectRatio) + { + if (_anchorTopLeft) + { + [self renderToTextureWithVertices:squareVerticesAnchorTL textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + } + else + { + [self renderToTextureWithVertices:squareVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + } + } + else + { + if (_anchorTopLeft) + { + [self renderToTextureWithVertices:adjustedVerticesAnchorTL textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + } + else + { + [self renderToTextureWithVertices:adjustedVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; + } + } + + [self informTargetsAboutNewFrameAtTime:frameTime]; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + if (!_ignoreAspectRatio) + { + [self loadOrthoMatrix:(GLfloat *)&orthographicMatrix left:-1.0 right:1.0 bottom:(-1.0 * filterFrameSize.height / filterFrameSize.width) top:(1.0 * filterFrameSize.height / filterFrameSize.width) near:-1.0 far:1.0]; + // [self loadOrthoMatrix:orthographicMatrix left:-1.0 right:1.0 bottom:(-1.0 * (GLfloat)backingHeight / (GLfloat)backingWidth) top:(1.0 * (GLfloat)backingHeight / (GLfloat)backingWidth) near:-2.0 far:2.0]; + + [self setMatrix4f:orthographicMatrix forUniform:orthographicMatrixUniform program:filterProgram]; + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setAffineTransform:(CGAffineTransform)newValue; +{ + self.transform3D = CATransform3DMakeAffineTransform(newValue); +} + +- (CGAffineTransform)affineTransform; +{ + return CATransform3DGetAffineTransform(self.transform3D); +} + +- (void)setTransform3D:(CATransform3D)newValue; +{ + _transform3D = newValue; + + GPUMatrix4x4 temporaryMatrix; + + [self convert3DTransform:&_transform3D toMatrix:&temporaryMatrix]; + [self setMatrix4f:temporaryMatrix forUniform:transformMatrixUniform program:filterProgram]; +} + +- (void)setIgnoreAspectRatio:(BOOL)newValue; +{ + _ignoreAspectRatio = newValue; + + if (_ignoreAspectRatio) + { + [self loadOrthoMatrix:(GLfloat *)&orthographicMatrix left:-1.0 right:1.0 bottom:-1.0 top:1.0 near:-1.0 far:1.0]; + [self setMatrix4f:orthographicMatrix forUniform:orthographicMatrixUniform program:filterProgram]; + } + else + { + [self setupFilterForSize:[self sizeOfFBO]]; + } +} + +- (void)setAnchorTopLeft:(BOOL)newValue +{ + _anchorTopLeft = newValue; + [self setIgnoreAspectRatio:_ignoreAspectRatio]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h new file mode 100644 index 00000000..64eac9dc --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h @@ -0,0 +1,15 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageTwoInputCrossTextureSamplingFilter : GPUImageTwoInputFilter +{ + GLint texelWidthUniform, texelHeightUniform; + + CGFloat texelWidth, texelHeight; + BOOL hasOverriddenImageSizeFactor; +} + +// The texel width and height determines how far out to sample from this texel. By default, this is the normalized width of a pixel, but this can be overridden for different effects. +@property(readwrite, nonatomic) CGFloat texelWidth; +@property(readwrite, nonatomic) CGFloat texelHeight; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m new file mode 100644 index 00000000..aa338f81 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m @@ -0,0 +1,108 @@ +#import "GPUImageTwoInputCrossTextureSamplingFilter.h" + +NSString *const kGPUImageTwoInputNearbyTexelSamplingVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + attribute vec4 inputTextureCoordinate2; + + uniform float texelWidth; + uniform float texelHeight; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + varying vec2 topTextureCoordinate; + varying vec2 bottomTextureCoordinate; + + varying vec2 textureCoordinate2; + varying vec2 leftTextureCoordinate2; + varying vec2 rightTextureCoordinate2; + varying vec2 topTextureCoordinate2; + varying vec2 bottomTextureCoordinate2; + + void main() + { + gl_Position = position; + + vec2 widthStep = vec2(texelWidth, 0.0); + vec2 heightStep = vec2(0.0, texelHeight); + + textureCoordinate = inputTextureCoordinate.xy; + leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; + rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; + topTextureCoordinate = inputTextureCoordinate.xy - heightStep; + bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; + + textureCoordinate2 = inputTextureCoordinate2.xy; + leftTextureCoordinate2 = inputTextureCoordinate2.xy - widthStep; + rightTextureCoordinate2 = inputTextureCoordinate2.xy + widthStep; + topTextureCoordinate2 = inputTextureCoordinate2.xy - heightStep; + bottomTextureCoordinate2 = inputTextureCoordinate2.xy + heightStep; + } +); + +@implementation GPUImageTwoInputCrossTextureSamplingFilter + +@synthesize texelWidth = _texelWidth; +@synthesize texelHeight = _texelHeight; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:kGPUImageTwoInputNearbyTexelSamplingVertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; + texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; + + return self; +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + if (!hasOverriddenImageSizeFactor) + { + _texelWidth = 1.0 / filterFrameSize.width; + _texelHeight = 1.0 / filterFrameSize.height; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:filterProgram]; + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + glUniform1f(texelWidthUniform, _texelHeight); + glUniform1f(texelHeightUniform, _texelWidth); + } + else + { + glUniform1f(texelWidthUniform, _texelWidth); + glUniform1f(texelHeightUniform, _texelHeight); + } + }); + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTexelWidth:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelWidth = newValue; + + [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; +} + +- (void)setTexelHeight:(CGFloat)newValue; +{ + hasOverriddenImageSizeFactor = YES; + _texelHeight = newValue; + + [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.h new file mode 100644 index 00000000..da3a1345 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.h @@ -0,0 +1,21 @@ +#import "GPUImageFilter.h" + +extern NSString *const kGPUImageTwoInputTextureVertexShaderString; + +@interface GPUImageTwoInputFilter : GPUImageFilter +{ + GPUImageFramebuffer *secondInputFramebuffer; + + GLint filterSecondTextureCoordinateAttribute; + GLint filterInputTextureUniform2; + GPUImageRotationMode inputRotation2; + CMTime firstFrameTime, secondFrameTime; + + BOOL hasSetFirstTexture, hasReceivedFirstFrame, hasReceivedSecondFrame, firstFrameWasVideo, secondFrameWasVideo; + BOOL firstFrameCheckDisabled, secondFrameCheckDisabled; +} + +- (void)disableFirstFrameCheck; +- (void)disableSecondFrameCheck; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m new file mode 100644 index 00000000..cf318737 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m @@ -0,0 +1,264 @@ +#import "GPUImageTwoInputFilter.h" + +NSString *const kGPUImageTwoInputTextureVertexShaderString = SHADER_STRING +( + attribute vec4 position; + attribute vec4 inputTextureCoordinate; + attribute vec4 inputTextureCoordinate2; + + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + void main() + { + gl_Position = position; + textureCoordinate = inputTextureCoordinate.xy; + textureCoordinate2 = inputTextureCoordinate2.xy; + } +); + + +@implementation GPUImageTwoInputFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [self initWithVertexShaderFromString:kGPUImageTwoInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + return self; +} + +- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) + { + return nil; + } + + inputRotation2 = kGPUImageNoRotation; + + hasSetFirstTexture = NO; + + hasReceivedFirstFrame = NO; + hasReceivedSecondFrame = NO; + firstFrameWasVideo = NO; + secondFrameWasVideo = NO; + firstFrameCheckDisabled = NO; + secondFrameCheckDisabled = NO; + + firstFrameTime = kCMTimeInvalid; + secondFrameTime = kCMTimeInvalid; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + filterSecondTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate2"]; + + filterInputTextureUniform2 = [filterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader + glEnableVertexAttribArray(filterSecondTextureCoordinateAttribute); + }); + + return self; +} + +- (void)initializeAttributes; +{ + [super initializeAttributes]; + [filterProgram addAttribute:@"inputTextureCoordinate2"]; +} + +- (void)disableFirstFrameCheck; +{ + firstFrameCheckDisabled = YES; +} + +- (void)disableSecondFrameCheck; +{ + secondFrameCheckDisabled = YES; +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + [secondInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + if (usingNextFrameForImageCapture) + { + [outputFramebuffer lock]; + } + + [self setUniformsForProgramAtIndex:0]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform, 2); + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); + glUniform1i(filterInputTextureUniform2, 3); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + [firstInputFramebuffer unlock]; + [secondInputFramebuffer unlock]; + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +#pragma mark - +#pragma mark GPUImageInput + +- (NSInteger)nextAvailableTextureIndex; +{ + if (hasSetFirstTexture) + { + return 1; + } + else + { + return 0; + } +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + firstInputFramebuffer = newInputFramebuffer; + hasSetFirstTexture = YES; + [firstInputFramebuffer lock]; + } + else + { + secondInputFramebuffer = newInputFramebuffer; + [secondInputFramebuffer lock]; + } +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + [super setInputSize:newSize atIndex:textureIndex]; + + if (CGSizeEqualToSize(newSize, CGSizeZero)) + { + hasSetFirstTexture = NO; + } + } +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + if (textureIndex == 0) + { + inputRotation = newInputRotation; + } + else + { + inputRotation2 = newInputRotation; + } +} + +- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; +{ + CGSize rotatedSize = sizeToRotate; + + GPUImageRotationMode rotationToCheck; + if (textureIndex == 0) + { + rotationToCheck = inputRotation; + } + else + { + rotationToCheck = inputRotation2; + } + + if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) + { + rotatedSize.width = sizeToRotate.height; + rotatedSize.height = sizeToRotate.width; + } + + return rotatedSize; +} + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + // You can set up infinite update loops, so this helps to short circuit them + if (hasReceivedFirstFrame && hasReceivedSecondFrame) + { + return; + } + + BOOL updatedMovieFrameOppositeStillImage = NO; + + if (textureIndex == 0) + { + hasReceivedFirstFrame = YES; + firstFrameTime = frameTime; + if (secondFrameCheckDisabled) + { + hasReceivedSecondFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(secondFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + else + { + hasReceivedSecondFrame = YES; + secondFrameTime = frameTime; + if (firstFrameCheckDisabled) + { + hasReceivedFirstFrame = YES; + } + + if (!CMTIME_IS_INDEFINITE(frameTime)) + { + if CMTIME_IS_INDEFINITE(firstFrameTime) + { + updatedMovieFrameOppositeStillImage = YES; + } + } + } + + // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) + if ((hasReceivedFirstFrame && hasReceivedSecondFrame) || updatedMovieFrameOppositeStillImage) + { + CMTime passOnFrameTime = (!CMTIME_IS_INDEFINITE(firstFrameTime)) ? firstFrameTime : secondFrameTime; + [super newFrameReadyAtTime:passOnFrameTime atIndex:0]; // Bugfix when trying to record: always use time from first input (unless indefinite, in which case use the second input) + hasReceivedFirstFrame = NO; + hasReceivedSecondFrame = NO; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.h new file mode 100755 index 00000000..23087f35 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.h @@ -0,0 +1,19 @@ +#import "GPUImageFilter.h" + +@interface GPUImageTwoPassFilter : GPUImageFilter +{ + GPUImageFramebuffer *secondOutputFramebuffer; + + GLProgram *secondFilterProgram; + GLint secondFilterPositionAttribute, secondFilterTextureCoordinateAttribute; + GLint secondFilterInputTextureUniform, secondFilterInputTextureUniform2; + + NSMutableDictionary *secondProgramUniformStateRestorationBlocks; +} + +// Initialization and teardown +- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; +- (id)initWithFirstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; +- (void)initializeSecondaryAttributes; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m new file mode 100755 index 00000000..9eb292b4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m @@ -0,0 +1,201 @@ +#import "GPUImageTwoPassFilter.h" + +@implementation GPUImageTwoPassFilter + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; +{ + if (!(self = [super initWithVertexShaderFromString:firstStageVertexShaderString fragmentShaderFromString:firstStageFragmentShaderString])) + { + return nil; + } + + secondProgramUniformStateRestorationBlocks = [NSMutableDictionary dictionaryWithCapacity:10]; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:secondStageVertexShaderString fragmentShaderString:secondStageFragmentShaderString]; + + if (!secondFilterProgram.initialized) + { + [self initializeSecondaryAttributes]; + + if (![secondFilterProgram link]) + { + NSString *progLog = [secondFilterProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [secondFilterProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [secondFilterProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + secondFilterProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; + secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; + secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader + secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader + + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + + glEnableVertexAttribArray(secondFilterPositionAttribute); + glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); + }); + + return self; +} + +- (id)initWithFirstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; +{ + if (!(self = [self initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:kGPUImageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) + { + return nil; + } + + return self; +} + +- (void)initializeSecondaryAttributes; +{ + [secondFilterProgram addAttribute:@"position"]; + [secondFilterProgram addAttribute:@"inputTextureCoordinate"]; +} + +#pragma mark - +#pragma mark Managing targets + +- (GPUImageFramebuffer *)framebufferForOutput; +{ + return secondOutputFramebuffer; +} + +- (void)removeOutputFramebuffer; +{ + secondOutputFramebuffer = nil; +} + +#pragma mark - +#pragma mark Rendering + +- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; +{ + if (self.preventRendering) + { + [firstInputFramebuffer unlock]; + return; + } + + [GPUImageContext setActiveShaderProgram:filterProgram]; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + [self setUniformsForProgramAtIndex:0]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); + + glUniform1i(filterInputTextureUniform, 2); + + glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + [firstInputFramebuffer unlock]; + firstInputFramebuffer = nil; + + // This assumes that any two-pass filter that says it desires monochrome input is using the first pass for a luminance conversion, which can be dropped +// if (!currentlyReceivingMonochromeInput) +// { + // Run the first stage of the two-pass filter +// [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; +// } + + // Run the second stage of the two-pass filter + secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; + [secondOutputFramebuffer activateFramebuffer]; + [GPUImageContext setActiveShaderProgram:secondFilterProgram]; + if (usingNextFrameForImageCapture) + { + [secondOutputFramebuffer lock]; + } + + [self setUniformsForProgramAtIndex:1]; + + glActiveTexture(GL_TEXTURE3); + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); + + // TODO: Re-enable this monochrome optimization +// if (!currentlyReceivingMonochromeInput) +// { +// glActiveTexture(GL_TEXTURE3); +// glBindTexture(GL_TEXTURE_2D, outputTexture); +// glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); +// } +// else +// { +// glActiveTexture(GL_TEXTURE3); +// glBindTexture(GL_TEXTURE_2D, sourceTexture); +// glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); +// } + + glUniform1i(secondFilterInputTextureUniform, 3); + + glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + [outputFramebuffer unlock]; + outputFramebuffer = nil; + + if (usingNextFrameForImageCapture) + { + dispatch_semaphore_signal(imageCaptureSemaphore); + } +} + +- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; +{ +// TODO: Deal with the fact that two-pass filters may have the same shader program identifier + if (shaderProgram == filterProgram) + { + [uniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; + } + else + { + [secondProgramUniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; + } + uniformStateBlock(); +} + +- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; +{ + if (programIndex == 0) + { + [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ + dispatch_block_t currentBlock = obj; + currentBlock(); + }]; + } + else + { + [secondProgramUniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ + dispatch_block_t currentBlock = obj; + currentBlock(); + }]; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.h new file mode 100644 index 00000000..73ab79d3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageTwoPassFilter.h" + +@interface GPUImageTwoPassTextureSamplingFilter : GPUImageTwoPassFilter +{ + GLint verticalPassTexelWidthOffsetUniform, verticalPassTexelHeightOffsetUniform, horizontalPassTexelWidthOffsetUniform, horizontalPassTexelHeightOffsetUniform; + GLfloat verticalPassTexelWidthOffset, verticalPassTexelHeightOffset, horizontalPassTexelWidthOffset, horizontalPassTexelHeightOffset; + CGFloat _verticalTexelSpacing, _horizontalTexelSpacing; +} + +// This sets the spacing between texels (in pixels) when sampling for the first. By default, this is 1.0 +@property(readwrite, nonatomic) CGFloat verticalTexelSpacing, horizontalTexelSpacing; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m new file mode 100644 index 00000000..b6a2ec58 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m @@ -0,0 +1,85 @@ +#import "GPUImageTwoPassTextureSamplingFilter.h" + +@implementation GPUImageTwoPassTextureSamplingFilter + +@synthesize verticalTexelSpacing = _verticalTexelSpacing; +@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString +{ + if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:secondStageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) + { + return nil; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + verticalPassTexelWidthOffsetUniform = [filterProgram uniformIndex:@"texelWidthOffset"]; + verticalPassTexelHeightOffsetUniform = [filterProgram uniformIndex:@"texelHeightOffset"]; + + horizontalPassTexelWidthOffsetUniform = [secondFilterProgram uniformIndex:@"texelWidthOffset"]; + horizontalPassTexelHeightOffsetUniform = [secondFilterProgram uniformIndex:@"texelHeightOffset"]; + }); + + self.verticalTexelSpacing = 1.0; + self.horizontalTexelSpacing = 1.0; + + return self; +} + +- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; +{ + [super setUniformsForProgramAtIndex:programIndex]; + + if (programIndex == 0) + { + glUniform1f(verticalPassTexelWidthOffsetUniform, verticalPassTexelWidthOffset); + glUniform1f(verticalPassTexelHeightOffsetUniform, verticalPassTexelHeightOffset); + } + else + { + glUniform1f(horizontalPassTexelWidthOffsetUniform, horizontalPassTexelWidthOffset); + glUniform1f(horizontalPassTexelHeightOffsetUniform, horizontalPassTexelHeightOffset); + } +} + +- (void)setupFilterForSize:(CGSize)filterFrameSize; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + // The first pass through the framebuffer may rotate the inbound image, so need to account for that by changing up the kernel ordering for that pass + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + verticalPassTexelWidthOffset = _verticalTexelSpacing / filterFrameSize.height; + verticalPassTexelHeightOffset = 0.0; + } + else + { + verticalPassTexelWidthOffset = 0.0; + verticalPassTexelHeightOffset = _verticalTexelSpacing / filterFrameSize.height; + } + + horizontalPassTexelWidthOffset = _horizontalTexelSpacing / filterFrameSize.width; + horizontalPassTexelHeightOffset = 0.0; + }); +} + +#pragma mark - +#pragma mark Accessors + +- (void)setVerticalTexelSpacing:(CGFloat)newValue; +{ + _verticalTexelSpacing = newValue; + [self setupFilterForSize:[self sizeOfFBO]]; +} + +- (void)setHorizontalTexelSpacing:(CGFloat)newValue; +{ + _horizontalTexelSpacing = newValue; + [self setupFilterForSize:[self sizeOfFBO]]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h new file mode 100644 index 00000000..984ff2ad --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h @@ -0,0 +1,15 @@ +#import "GPUImageOutput.h" + +@interface GPUImageUIElement : GPUImageOutput + +// Initialization and teardown +- (id)initWithView:(UIView *)inputView; +- (id)initWithLayer:(CALayer *)inputLayer; + +// Layer management +- (CGSize)layerSizeInPixels; +- (void)update; +- (void)updateUsingCurrentTime; +- (void)updateWithTimestamp:(CMTime)frameTime; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m new file mode 100644 index 00000000..33208924 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m @@ -0,0 +1,123 @@ +#import "GPUImageUIElement.h" + +@interface GPUImageUIElement () +{ + UIView *view; + CALayer *layer; + + CGSize previousLayerSizeInPixels; + CMTime time; + NSTimeInterval actualTimeOfLastUpdate; +} + +@end + +@implementation GPUImageUIElement + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithView:(UIView *)inputView; +{ + if (!(self = [super init])) + { + return nil; + } + + view = inputView; + layer = inputView.layer; + + previousLayerSizeInPixels = CGSizeZero; + [self update]; + + return self; +} + +- (id)initWithLayer:(CALayer *)inputLayer; +{ + if (!(self = [super init])) + { + return nil; + } + + view = nil; + layer = inputLayer; + + previousLayerSizeInPixels = CGSizeZero; + [self update]; + + return self; +} + +#pragma mark - +#pragma mark Layer management + +- (CGSize)layerSizeInPixels; +{ + CGSize pointSize = layer.bounds.size; + return CGSizeMake(layer.contentsScale * pointSize.width, layer.contentsScale * pointSize.height); +} + +- (void)update; +{ + [self updateWithTimestamp:kCMTimeIndefinite]; +} + +- (void)updateUsingCurrentTime; +{ + if(CMTIME_IS_INVALID(time)) { + time = CMTimeMakeWithSeconds(0, 600); + actualTimeOfLastUpdate = [NSDate timeIntervalSinceReferenceDate]; + } else { + NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; + NSTimeInterval diff = now - actualTimeOfLastUpdate; + time = CMTimeAdd(time, CMTimeMakeWithSeconds(diff, 600)); + actualTimeOfLastUpdate = now; + } + + [self updateWithTimestamp:time]; +} + +- (void)updateWithTimestamp:(CMTime)frameTime; +{ + [GPUImageContext useImageProcessingContext]; + + CGSize layerPixelSize = [self layerSizeInPixels]; + + GLubyte *imageData = (GLubyte *) calloc(1, (int)layerPixelSize.width * (int)layerPixelSize.height * 4); + + CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); + CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)layerPixelSize.width, (int)layerPixelSize.height, 8, (int)layerPixelSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); +// CGContextRotateCTM(imageContext, M_PI_2); + CGContextTranslateCTM(imageContext, 0.0f, layerPixelSize.height); + CGContextScaleCTM(imageContext, layer.contentsScale, -layer.contentsScale); + // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html + + [layer renderInContext:imageContext]; + + CGContextRelease(imageContext); + CGColorSpaceRelease(genericRGBColorspace); + + // TODO: This may not work + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:layerPixelSize textureOptions:self.outputTextureOptions onlyTexture:YES]; + + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + // no need to use self.outputTextureOptions here, we always need these texture options + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)layerPixelSize.width, (int)layerPixelSize.height, 0, GL_BGRA, GL_UNSIGNED_BYTE, imageData); + + free(imageData); + + for (id currentTarget in targets) + { + if (currentTarget != self.targetToIgnoreForUpdates) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [currentTarget setInputSize:layerPixelSize atIndex:textureIndexOfTarget]; + [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; + } + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.h new file mode 100755 index 00000000..9d8aff01 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.h @@ -0,0 +1,16 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageGaussianBlurFilter; + +@interface GPUImageUnsharpMaskFilter : GPUImageFilterGroup +{ + GPUImageGaussianBlurFilter *blurFilter; + GPUImageFilter *unsharpMaskFilter; +} +// The blur radius of the underlying Gaussian blur. The default is 4.0. +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +// The strength of the sharpening, from 0.0 on up, with a default of 1.0 +@property(readwrite, nonatomic) CGFloat intensity; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m new file mode 100755 index 00000000..542c5ea3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m @@ -0,0 +1,101 @@ +#import "GPUImageUnsharpMaskFilter.h" +#import "GPUImageFilter.h" +#import "GPUImageTwoInputFilter.h" +#import "GPUImageGaussianBlurFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageUnsharpMaskFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + varying highp vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform highp float intensity; + + void main() + { + lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); + lowp vec3 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; + + gl_FragColor = vec4(sharpImageColor.rgb * intensity + blurredImageColor * (1.0 - intensity), sharpImageColor.a); +// gl_FragColor = mix(blurredImageColor, sharpImageColor, intensity); +// gl_FragColor = vec4(sharpImageColor.rgb - (blurredImageColor.rgb * intensity), 1.0); + } +); +#else +NSString *const kGPUImageUnsharpMaskFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 textureCoordinate2; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + + uniform float intensity; + + void main() + { + vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); + vec3 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; + + gl_FragColor = vec4(sharpImageColor.rgb * intensity + blurredImageColor * (1.0 - intensity), sharpImageColor.a); + // gl_FragColor = mix(blurredImageColor, sharpImageColor, intensity); + // gl_FragColor = vec4(sharpImageColor.rgb - (blurredImageColor.rgb * intensity), 1.0); + } +); +#endif + +@implementation GPUImageUnsharpMaskFilter + +@synthesize blurRadiusInPixels; +@synthesize intensity = _intensity; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: apply a variable Gaussian blur + blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Second pass: combine the blurred image with the original sharp one + unsharpMaskFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageUnsharpMaskFragmentShaderString]; + [self addFilter:unsharpMaskFilter]; + + // Texture location 0 needs to be the sharp image for both the blur and the second stage processing + [blurFilter addTarget:unsharpMaskFilter atTextureLocation:1]; + + self.initialFilters = [NSArray arrayWithObjects:blurFilter, unsharpMaskFilter, nil]; + self.terminalFilter = unsharpMaskFilter; + + self.intensity = 1.0; + self.blurRadiusInPixels = 4.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setIntensity:(CGFloat)newValue; +{ + _intensity = newValue; + [unsharpMaskFilter setFloat:newValue forUniformName:@"intensity"]; +} + +@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.h b/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.h new file mode 100755 index 00000000..458020cf --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.h @@ -0,0 +1,156 @@ +#import +#import +#import +#import "GPUImageContext.h" +#import "GPUImageOutput.h" +#import "GPUImageColorConversion.h" + +//Optionally override the YUV to RGB matrices +void setColorConversion601( GLfloat conversionMatrix[9] ); +void setColorConversion601FullRange( GLfloat conversionMatrix[9] ); +void setColorConversion709( GLfloat conversionMatrix[9] ); + + +//Delegate Protocal for Face Detection. +@protocol GPUImageVideoCameraDelegate + +@optional +- (void)willOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer; +@end + + +/** + A GPUImageOutput that provides frames from either camera +*/ +@interface GPUImageVideoCamera : GPUImageOutput +{ + NSUInteger numberOfFramesCaptured; + CGFloat totalFrameTimeDuringCapture; + + AVCaptureSession *_captureSession; + AVCaptureDevice *_inputCamera; + AVCaptureDevice *_microphone; + AVCaptureDeviceInput *videoInput; + AVCaptureVideoDataOutput *videoOutput; + + BOOL capturePaused; + GPUImageRotationMode outputRotation, internalRotation; + dispatch_semaphore_t frameRenderingSemaphore; + + BOOL captureAsYUV; + GLuint luminanceTexture, chrominanceTexture; + + __unsafe_unretained id _delegate; +} + +/// Whether or not the underlying AVCaptureSession is running +@property(readonly, nonatomic) BOOL isRunning; + +/// The AVCaptureSession used to capture from the camera +@property(readonly, retain, nonatomic) AVCaptureSession *captureSession; + +/// This enables the capture session preset to be changed on the fly +@property (readwrite, nonatomic, copy) NSString *captureSessionPreset; + +/// This sets the frame rate of the camera (iOS 5 and above only) +/** + Setting this to 0 or below will set the frame rate back to the default setting for a particular preset. + */ +@property (readwrite) int32_t frameRate; + +/// Easy way to tell which cameras are present on device +@property (readonly, getter = isFrontFacingCameraPresent) BOOL frontFacingCameraPresent; +@property (readonly, getter = isBackFacingCameraPresent) BOOL backFacingCameraPresent; + +/// This enables the benchmarking mode, which logs out instantaneous and average frame times to the console +@property(readwrite, nonatomic) BOOL runBenchmark; + +/// Use this property to manage camera settings. Focus point, exposure point, etc. +@property(readonly) AVCaptureDevice *inputCamera; + +/// This determines the rotation applied to the output image, based on the source material +@property(readwrite, nonatomic) UIInterfaceOrientation outputImageOrientation; + +/// These properties determine whether or not the two camera orientations should be mirrored. By default, both are NO. +@property(readwrite, nonatomic) BOOL horizontallyMirrorFrontFacingCamera, horizontallyMirrorRearFacingCamera; + +@property(nonatomic, assign) id delegate; + +/// @name Initialization and teardown + +/** Begin a capture session + + See AVCaptureSession for acceptable values + + @param sessionPreset Session preset to use + @param cameraPosition Camera to capture from + */ +- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; + +/** Add audio capture to the session. Adding inputs and outputs freezes the capture session momentarily, so you + can use this method to add the audio inputs and outputs early, if you're going to set the audioEncodingTarget + later. Returns YES is the audio inputs and outputs were added, or NO if they had already been added. + */ +- (BOOL)addAudioInputsAndOutputs; + +/** Remove the audio capture inputs and outputs from this session. Returns YES if the audio inputs and outputs + were removed, or NO is they hadn't already been added. + */ +- (BOOL)removeAudioInputsAndOutputs; + +/** Tear down the capture session + */ +- (void)removeInputsAndOutputs; + +/// @name Manage the camera video stream + +/** Start camera capturing + */ +- (void)startCameraCapture; + +/** Stop camera capturing + */ +- (void)stopCameraCapture; + +/** Pause camera capturing + */ +- (void)pauseCameraCapture; + +/** Resume camera capturing + */ +- (void)resumeCameraCapture; + +/** Process a video sample + @param sampleBuffer Buffer to process + */ +- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer; + +/** Process an audio sample + @param sampleBuffer Buffer to process + */ +- (void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer; + +/** Get the position (front, rear) of the source camera + */ +- (AVCaptureDevicePosition)cameraPosition; + +/** Get the AVCaptureConnection of the source camera + */ +- (AVCaptureConnection *)videoCaptureConnection; + +/** This flips between the front and rear cameras + */ +- (void)rotateCamera; + +/// @name Benchmarking + +/** When benchmarking is enabled, this will keep a running average of the time from uploading, processing, and final recording or display + */ +- (CGFloat)averageFrameDurationDuringCapture; + +- (void)resetBenchmarkAverage; + ++ (BOOL)isBackFacingCameraPresent; ++ (BOOL)isFrontFacingCameraPresent; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m b/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m new file mode 100644 index 00000000..18aa60c3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m @@ -0,0 +1,1062 @@ +#import "GPUImageVideoCamera.h" +#import "GPUImageMovieWriter.h" +#import "GPUImageFilter.h" + +void setColorConversion601( GLfloat conversionMatrix[9] ) +{ + kColorConversion601 = conversionMatrix; +} + +void setColorConversion601FullRange( GLfloat conversionMatrix[9] ) +{ + kColorConversion601FullRange = conversionMatrix; +} + +void setColorConversion709( GLfloat conversionMatrix[9] ) +{ + kColorConversion709 = conversionMatrix; +} + +#pragma mark - +#pragma mark Private methods and instance variables + +@interface GPUImageVideoCamera () +{ + AVCaptureDeviceInput *audioInput; + AVCaptureAudioDataOutput *audioOutput; + NSDate *startingCaptureTime; + + dispatch_queue_t cameraProcessingQueue, audioProcessingQueue; + + GLProgram *yuvConversionProgram; + GLint yuvConversionPositionAttribute, yuvConversionTextureCoordinateAttribute; + GLint yuvConversionLuminanceTextureUniform, yuvConversionChrominanceTextureUniform; + GLint yuvConversionMatrixUniform; + const GLfloat *_preferredConversion; + + BOOL isFullYUVRange; + + int imageBufferWidth, imageBufferHeight; + + BOOL addedAudioInputsDueToEncodingTarget; +} + +- (void)updateOrientationSendToTargets; +- (void)convertYUVToRGBOutput; + +@end + +@implementation GPUImageVideoCamera + +@synthesize captureSessionPreset = _captureSessionPreset; +@synthesize captureSession = _captureSession; +@synthesize inputCamera = _inputCamera; +@synthesize runBenchmark = _runBenchmark; +@synthesize outputImageOrientation = _outputImageOrientation; +@synthesize delegate = _delegate; +@synthesize horizontallyMirrorFrontFacingCamera = _horizontallyMirrorFrontFacingCamera, horizontallyMirrorRearFacingCamera = _horizontallyMirrorRearFacingCamera; +@synthesize frameRate = _frameRate; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack])) + { + return nil; + } + + return self; +} + +- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; +{ + if (!(self = [super init])) + { + return nil; + } + + cameraProcessingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0); + audioProcessingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0); + + frameRenderingSemaphore = dispatch_semaphore_create(1); + + _frameRate = 0; // This will not set frame rate unless this value gets set to 1 or above + _runBenchmark = NO; + capturePaused = NO; + outputRotation = kGPUImageNoRotation; + internalRotation = kGPUImageNoRotation; + captureAsYUV = YES; + _preferredConversion = kColorConversion709; + + // Grab the back-facing or front-facing camera + _inputCamera = nil; + NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + for (AVCaptureDevice *device in devices) + { + if ([device position] == cameraPosition) + { + _inputCamera = device; + } + } + + if (!_inputCamera) { + return nil; + } + + // Create the capture session + _captureSession = [[AVCaptureSession alloc] init]; + + [_captureSession beginConfiguration]; + + // Add the video input + NSError *error = nil; + videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:_inputCamera error:&error]; + if ([_captureSession canAddInput:videoInput]) + { + [_captureSession addInput:videoInput]; + } + + // Add the video frame output + videoOutput = [[AVCaptureVideoDataOutput alloc] init]; + [videoOutput setAlwaysDiscardsLateVideoFrames:NO]; + +// if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) + if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) + { + BOOL supportsFullYUVRange = NO; + NSArray *supportedPixelFormats = videoOutput.availableVideoCVPixelFormatTypes; + for (NSNumber *currentPixelFormat in supportedPixelFormats) + { + if ([currentPixelFormat intValue] == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) + { + supportsFullYUVRange = YES; + } + } + + if (supportsFullYUVRange) + { + [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + isFullYUVRange = YES; + } + else + { + [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + isFullYUVRange = NO; + } + } + else + { + [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; + } + + runSynchronouslyOnVideoProcessingQueue(^{ + + if (captureAsYUV) + { + [GPUImageContext useImageProcessingContext]; + // if ([GPUImageContext deviceSupportsRedTextures]) + // { + // yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVVideoRangeConversionForRGFragmentShaderString]; + // } + // else + // { + if (isFullYUVRange) + { + yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVFullRangeConversionForLAFragmentShaderString]; + } + else + { + yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVVideoRangeConversionForLAFragmentShaderString]; + } + + // } + + if (!yuvConversionProgram.initialized) + { + [yuvConversionProgram addAttribute:@"position"]; + [yuvConversionProgram addAttribute:@"inputTextureCoordinate"]; + + if (![yuvConversionProgram link]) + { + NSString *progLog = [yuvConversionProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [yuvConversionProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [yuvConversionProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + yuvConversionProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + yuvConversionPositionAttribute = [yuvConversionProgram attributeIndex:@"position"]; + yuvConversionTextureCoordinateAttribute = [yuvConversionProgram attributeIndex:@"inputTextureCoordinate"]; + yuvConversionLuminanceTextureUniform = [yuvConversionProgram uniformIndex:@"luminanceTexture"]; + yuvConversionChrominanceTextureUniform = [yuvConversionProgram uniformIndex:@"chrominanceTexture"]; + yuvConversionMatrixUniform = [yuvConversionProgram uniformIndex:@"colorConversionMatrix"]; + + [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; + + glEnableVertexAttribArray(yuvConversionPositionAttribute); + glEnableVertexAttribArray(yuvConversionTextureCoordinateAttribute); + } + }); + + [videoOutput setSampleBufferDelegate:self queue:cameraProcessingQueue]; + if ([_captureSession canAddOutput:videoOutput]) + { + [_captureSession addOutput:videoOutput]; + } + else + { + NSLog(@"Couldn't add video output"); + return nil; + } + + _captureSessionPreset = sessionPreset; + [_captureSession setSessionPreset:_captureSessionPreset]; + +// This will let you get 60 FPS video from the 720p preset on an iPhone 4S, but only that device and that preset +// AVCaptureConnection *conn = [videoOutput connectionWithMediaType:AVMediaTypeVideo]; +// +// if (conn.supportsVideoMinFrameDuration) +// conn.videoMinFrameDuration = CMTimeMake(1,60); +// if (conn.supportsVideoMaxFrameDuration) +// conn.videoMaxFrameDuration = CMTimeMake(1,60); + + [_captureSession commitConfiguration]; + + return self; +} + +- (GPUImageFramebuffer *)framebufferForOutput; +{ + return outputFramebuffer; +} + +- (void)dealloc +{ + [self stopCameraCapture]; + [videoOutput setSampleBufferDelegate:nil queue:dispatch_get_main_queue()]; + [audioOutput setSampleBufferDelegate:nil queue:dispatch_get_main_queue()]; + + [self removeInputsAndOutputs]; + +// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. +#if !OS_OBJECT_USE_OBJC + if (frameRenderingSemaphore != NULL) + { + dispatch_release(frameRenderingSemaphore); + } +#endif +} + +- (BOOL)addAudioInputsAndOutputs +{ + if (audioOutput) + return NO; + + [_captureSession beginConfiguration]; + + _microphone = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; + audioInput = [AVCaptureDeviceInput deviceInputWithDevice:_microphone error:nil]; + if ([_captureSession canAddInput:audioInput]) + { + [_captureSession addInput:audioInput]; + } + audioOutput = [[AVCaptureAudioDataOutput alloc] init]; + + if ([_captureSession canAddOutput:audioOutput]) + { + [_captureSession addOutput:audioOutput]; + } + else + { + NSLog(@"Couldn't add audio output"); + } + [audioOutput setSampleBufferDelegate:self queue:audioProcessingQueue]; + + [_captureSession commitConfiguration]; + return YES; +} + +- (BOOL)removeAudioInputsAndOutputs +{ + if (!audioOutput) + return NO; + + [_captureSession beginConfiguration]; + [_captureSession removeInput:audioInput]; + [_captureSession removeOutput:audioOutput]; + audioInput = nil; + audioOutput = nil; + _microphone = nil; + [_captureSession commitConfiguration]; + return YES; +} + +- (void)removeInputsAndOutputs; +{ + [_captureSession beginConfiguration]; + if (videoInput) { + [_captureSession removeInput:videoInput]; + [_captureSession removeOutput:videoOutput]; + videoInput = nil; + videoOutput = nil; + } + if (_microphone != nil) + { + [_captureSession removeInput:audioInput]; + [_captureSession removeOutput:audioOutput]; + audioInput = nil; + audioOutput = nil; + _microphone = nil; + } + [_captureSession commitConfiguration]; +} + +#pragma mark - +#pragma mark Managing targets + +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; +{ + [super addTarget:newTarget atTextureLocation:textureLocation]; + + [newTarget setInputRotation:outputRotation atIndex:textureLocation]; +} + +#pragma mark - +#pragma mark Manage the camera video stream + +- (BOOL)isRunning; +{ + return [_captureSession isRunning]; +} + +- (void)startCameraCapture; +{ + if (![_captureSession isRunning]) + { + startingCaptureTime = [NSDate date]; + [_captureSession startRunning]; + }; +} + +- (void)stopCameraCapture; +{ + if ([_captureSession isRunning]) + { + [_captureSession stopRunning]; + } +} + +- (void)pauseCameraCapture; +{ + capturePaused = YES; +} + +- (void)resumeCameraCapture; +{ + capturePaused = NO; +} + +- (void)rotateCamera +{ + if (self.frontFacingCameraPresent == NO) + return; + + NSError *error; + AVCaptureDeviceInput *newVideoInput; + AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; + + if (currentCameraPosition == AVCaptureDevicePositionBack) + { + currentCameraPosition = AVCaptureDevicePositionFront; + } + else + { + currentCameraPosition = AVCaptureDevicePositionBack; + } + + AVCaptureDevice *backFacingCamera = nil; + NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + for (AVCaptureDevice *device in devices) + { + if ([device position] == currentCameraPosition) + { + backFacingCamera = device; + } + } + newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error]; + + if (newVideoInput != nil) + { + [_captureSession beginConfiguration]; + + [_captureSession removeInput:videoInput]; + if ([_captureSession canAddInput:newVideoInput]) + { + [_captureSession addInput:newVideoInput]; + videoInput = newVideoInput; + } + else + { + [_captureSession addInput:videoInput]; + } + //captureSession.sessionPreset = oriPreset; + [_captureSession commitConfiguration]; + } + + _inputCamera = backFacingCamera; + [self setOutputImageOrientation:_outputImageOrientation]; +} + +- (AVCaptureDevicePosition)cameraPosition +{ + return [[videoInput device] position]; +} + ++ (BOOL)isBackFacingCameraPresent; +{ + NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + + for (AVCaptureDevice *device in devices) + { + if ([device position] == AVCaptureDevicePositionBack) + return YES; + } + + return NO; +} + +- (BOOL)isBackFacingCameraPresent +{ + return [GPUImageVideoCamera isBackFacingCameraPresent]; +} + ++ (BOOL)isFrontFacingCameraPresent; +{ + NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + + for (AVCaptureDevice *device in devices) + { + if ([device position] == AVCaptureDevicePositionFront) + return YES; + } + + return NO; +} + +- (BOOL)isFrontFacingCameraPresent +{ + return [GPUImageVideoCamera isFrontFacingCameraPresent]; +} + +- (void)setCaptureSessionPreset:(NSString *)captureSessionPreset; +{ + [_captureSession beginConfiguration]; + + _captureSessionPreset = captureSessionPreset; + [_captureSession setSessionPreset:_captureSessionPreset]; + + [_captureSession commitConfiguration]; +} + +- (void)setFrameRate:(int32_t)frameRate; +{ + _frameRate = frameRate; + + if (_frameRate > 0) + { + if ([_inputCamera respondsToSelector:@selector(setActiveVideoMinFrameDuration:)] && + [_inputCamera respondsToSelector:@selector(setActiveVideoMaxFrameDuration:)]) { + + NSError *error; + [_inputCamera lockForConfiguration:&error]; + if (error == nil) { +#if defined(__IPHONE_7_0) + [_inputCamera setActiveVideoMinFrameDuration:CMTimeMake(1, _frameRate)]; + [_inputCamera setActiveVideoMaxFrameDuration:CMTimeMake(1, _frameRate)]; +#endif + } + [_inputCamera unlockForConfiguration]; + + } else { + + for (AVCaptureConnection *connection in videoOutput.connections) + { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if ([connection respondsToSelector:@selector(setVideoMinFrameDuration:)]) + connection.videoMinFrameDuration = CMTimeMake(1, _frameRate); + + if ([connection respondsToSelector:@selector(setVideoMaxFrameDuration:)]) + connection.videoMaxFrameDuration = CMTimeMake(1, _frameRate); +#pragma clang diagnostic pop + } + } + + } + else + { + if ([_inputCamera respondsToSelector:@selector(setActiveVideoMinFrameDuration:)] && + [_inputCamera respondsToSelector:@selector(setActiveVideoMaxFrameDuration:)]) { + + NSError *error; + [_inputCamera lockForConfiguration:&error]; + if (error == nil) { +#if defined(__IPHONE_7_0) + [_inputCamera setActiveVideoMinFrameDuration:kCMTimeInvalid]; + [_inputCamera setActiveVideoMaxFrameDuration:kCMTimeInvalid]; +#endif + } + [_inputCamera unlockForConfiguration]; + + } else { + + for (AVCaptureConnection *connection in videoOutput.connections) + { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if ([connection respondsToSelector:@selector(setVideoMinFrameDuration:)]) + connection.videoMinFrameDuration = kCMTimeInvalid; // This sets videoMinFrameDuration back to default + + if ([connection respondsToSelector:@selector(setVideoMaxFrameDuration:)]) + connection.videoMaxFrameDuration = kCMTimeInvalid; // This sets videoMaxFrameDuration back to default +#pragma clang diagnostic pop + } + } + + } +} + +- (int32_t)frameRate; +{ + return _frameRate; +} + +- (AVCaptureConnection *)videoCaptureConnection { + for (AVCaptureConnection *connection in [videoOutput connections] ) { + for ( AVCaptureInputPort *port in [connection inputPorts] ) { + if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) { + return connection; + } + } + } + + return nil; +} + +#define INITIALFRAMESTOIGNOREFORBENCHMARK 5 + +- (void)updateTargetsForVideoCameraUsingCacheTextureAtWidth:(int)bufferWidth height:(int)bufferHeight time:(CMTime)currentTime; +{ + // First, update all the framebuffers in the targets + for (id currentTarget in targets) + { + if ([currentTarget enabled]) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + if (currentTarget != self.targetToIgnoreForUpdates) + { + [currentTarget setInputRotation:outputRotation atIndex:textureIndexOfTarget]; + [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:textureIndexOfTarget]; + + if ([currentTarget wantsMonochromeInput] && captureAsYUV) + { + [currentTarget setCurrentlyReceivingMonochromeInput:YES]; + // TODO: Replace optimization for monochrome output + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; + } + else + { + [currentTarget setCurrentlyReceivingMonochromeInput:NO]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; + } + } + else + { + [currentTarget setInputRotation:outputRotation atIndex:textureIndexOfTarget]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; + } + } + } + + // Then release our hold on the local framebuffer to send it back to the cache as soon as it's no longer needed + [outputFramebuffer unlock]; + outputFramebuffer = nil; + + // Finally, trigger rendering as needed + for (id currentTarget in targets) + { + if ([currentTarget enabled]) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + if (currentTarget != self.targetToIgnoreForUpdates) + { + [currentTarget newFrameReadyAtTime:currentTime atIndex:textureIndexOfTarget]; + } + } + } +} + +- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer; +{ + if (capturePaused) + { + return; + } + + CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); + CVImageBufferRef cameraFrame = CMSampleBufferGetImageBuffer(sampleBuffer); + int bufferWidth = (int) CVPixelBufferGetWidth(cameraFrame); + int bufferHeight = (int) CVPixelBufferGetHeight(cameraFrame); + CFTypeRef colorAttachments = CVBufferGetAttachment(cameraFrame, kCVImageBufferYCbCrMatrixKey, NULL); + if (colorAttachments != NULL) + { + if(CFStringCompare(colorAttachments, kCVImageBufferYCbCrMatrix_ITU_R_601_4, 0) == kCFCompareEqualTo) + { + if (isFullYUVRange) + { + _preferredConversion = kColorConversion601FullRange; + } + else + { + _preferredConversion = kColorConversion601; + } + } + else + { + _preferredConversion = kColorConversion709; + } + } + else + { + if (isFullYUVRange) + { + _preferredConversion = kColorConversion601FullRange; + } + else + { + _preferredConversion = kColorConversion601; + } + } + + CMTime currentTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); + + [GPUImageContext useImageProcessingContext]; + + if ([GPUImageContext supportsFastTextureUpload] && captureAsYUV) + { + CVOpenGLESTextureRef luminanceTextureRef = NULL; + CVOpenGLESTextureRef chrominanceTextureRef = NULL; + +// if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) + if (CVPixelBufferGetPlaneCount(cameraFrame) > 0) // Check for YUV planar inputs to do RGB conversion + { + CVPixelBufferLockBaseAddress(cameraFrame, 0); + + if ( (imageBufferWidth != bufferWidth) && (imageBufferHeight != bufferHeight) ) + { + imageBufferWidth = bufferWidth; + imageBufferHeight = bufferHeight; + } + + CVReturn err; + // Y-plane + glActiveTexture(GL_TEXTURE4); + if ([GPUImageContext deviceSupportsRedTextures]) + { +// err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, cameraFrame, NULL, GL_TEXTURE_2D, GL_RED_EXT, bufferWidth, bufferHeight, GL_RED_EXT, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); + } + else + { + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); + } + if (err) + { + NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); + } + + luminanceTexture = CVOpenGLESTextureGetName(luminanceTextureRef); + glBindTexture(GL_TEXTURE_2D, luminanceTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + // UV-plane + glActiveTexture(GL_TEXTURE5); + if ([GPUImageContext deviceSupportsRedTextures]) + { +// err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, cameraFrame, NULL, GL_TEXTURE_2D, GL_RG_EXT, bufferWidth/2, bufferHeight/2, GL_RG_EXT, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); + } + else + { + err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); + } + if (err) + { + NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); + } + + chrominanceTexture = CVOpenGLESTextureGetName(chrominanceTextureRef); + glBindTexture(GL_TEXTURE_2D, chrominanceTexture); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + +// if (!allTargetsWantMonochromeData) +// { + [self convertYUVToRGBOutput]; +// } + + int rotatedImageBufferWidth = bufferWidth, rotatedImageBufferHeight = bufferHeight; + + if (GPUImageRotationSwapsWidthAndHeight(internalRotation)) + { + rotatedImageBufferWidth = bufferHeight; + rotatedImageBufferHeight = bufferWidth; + } + + [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:rotatedImageBufferWidth height:rotatedImageBufferHeight time:currentTime]; + + CVPixelBufferUnlockBaseAddress(cameraFrame, 0); + CFRelease(luminanceTextureRef); + CFRelease(chrominanceTextureRef); + } + else + { + // TODO: Mesh this with the output framebuffer structure + +// CVPixelBufferLockBaseAddress(cameraFrame, 0); +// +// CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_RGBA, bufferWidth, bufferHeight, GL_BGRA, GL_UNSIGNED_BYTE, 0, &texture); +// +// if (!texture || err) { +// NSLog(@"Camera CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err); +// NSAssert(NO, @"Camera failure"); +// return; +// } +// +// outputTexture = CVOpenGLESTextureGetName(texture); +// // glBindTexture(CVOpenGLESTextureGetTarget(texture), outputTexture); +// glBindTexture(GL_TEXTURE_2D, outputTexture); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); +// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); +// +// [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:bufferWidth height:bufferHeight time:currentTime]; +// +// CVPixelBufferUnlockBaseAddress(cameraFrame, 0); +// CFRelease(texture); +// +// outputTexture = 0; + } + + + if (_runBenchmark) + { + numberOfFramesCaptured++; + if (numberOfFramesCaptured > INITIALFRAMESTOIGNOREFORBENCHMARK) + { + CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); + totalFrameTimeDuringCapture += currentFrameTime; + NSLog(@"Average frame time : %f ms", [self averageFrameDurationDuringCapture]); + NSLog(@"Current frame time : %f ms", 1000.0 * currentFrameTime); + } + } + } + else + { + CVPixelBufferLockBaseAddress(cameraFrame, 0); + + int bytesPerRow = (int) CVPixelBufferGetBytesPerRow(cameraFrame); + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(bytesPerRow / 4, bufferHeight) onlyTexture:YES]; + [outputFramebuffer activateFramebuffer]; + + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + + // glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bufferWidth, bufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(cameraFrame)); + + // Using BGRA extension to pull in video frame data directly + // The use of bytesPerRow / 4 accounts for a display glitch present in preview video frames when using the photo preset on the camera + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bytesPerRow / 4, bufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(cameraFrame)); + + [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:bytesPerRow / 4 height:bufferHeight time:currentTime]; + + CVPixelBufferUnlockBaseAddress(cameraFrame, 0); + + if (_runBenchmark) + { + numberOfFramesCaptured++; + if (numberOfFramesCaptured > INITIALFRAMESTOIGNOREFORBENCHMARK) + { + CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); + totalFrameTimeDuringCapture += currentFrameTime; + } + } + } +} + +- (void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer; +{ + [self.audioEncodingTarget processAudioBuffer:sampleBuffer]; +} + +- (void)convertYUVToRGBOutput; +{ + [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; + + int rotatedImageBufferWidth = imageBufferWidth, rotatedImageBufferHeight = imageBufferHeight; + + if (GPUImageRotationSwapsWidthAndHeight(internalRotation)) + { + rotatedImageBufferWidth = imageBufferHeight; + rotatedImageBufferHeight = imageBufferWidth; + } + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(rotatedImageBufferWidth, rotatedImageBufferHeight) textureOptions:self.outputTextureOptions onlyTexture:NO]; + [outputFramebuffer activateFramebuffer]; + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + static const GLfloat squareVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, luminanceTexture); + glUniform1i(yuvConversionLuminanceTextureUniform, 4); + + glActiveTexture(GL_TEXTURE5); + glBindTexture(GL_TEXTURE_2D, chrominanceTexture); + glUniform1i(yuvConversionChrominanceTextureUniform, 5); + + glUniformMatrix3fv(yuvConversionMatrixUniform, 1, GL_FALSE, _preferredConversion); + + glVertexAttribPointer(yuvConversionPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); + glVertexAttribPointer(yuvConversionTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [GPUImageFilter textureCoordinatesForRotation:internalRotation]); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); +} + +#pragma mark - +#pragma mark Benchmarking + +- (CGFloat)averageFrameDurationDuringCapture; +{ + return (totalFrameTimeDuringCapture / (CGFloat)(numberOfFramesCaptured - INITIALFRAMESTOIGNOREFORBENCHMARK)) * 1000.0; +} + +- (void)resetBenchmarkAverage; +{ + numberOfFramesCaptured = 0; + totalFrameTimeDuringCapture = 0.0; +} + +#pragma mark - +#pragma mark AVCaptureVideoDataOutputSampleBufferDelegate + +- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection +{ + if (!self.captureSession.isRunning) + { + return; + } + else if (captureOutput == audioOutput) + { + [self processAudioSampleBuffer:sampleBuffer]; + } + else + { + if (dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_NOW) != 0) + { + return; + } + + CFRetain(sampleBuffer); + runAsynchronouslyOnVideoProcessingQueue(^{ + //Feature Detection Hook. + if (self.delegate) + { + [self.delegate willOutputSampleBuffer:sampleBuffer]; + } + + [self processVideoSampleBuffer:sampleBuffer]; + + CFRelease(sampleBuffer); + dispatch_semaphore_signal(frameRenderingSemaphore); + }); + } +} + +#pragma mark - +#pragma mark Accessors + +- (void)setAudioEncodingTarget:(GPUImageMovieWriter *)newValue; +{ + if (newValue) { + /* Add audio inputs and outputs, if necessary */ + addedAudioInputsDueToEncodingTarget |= [self addAudioInputsAndOutputs]; + } else if (addedAudioInputsDueToEncodingTarget) { + /* Remove audio inputs and outputs, if they were added by previously setting the audio encoding target */ + [self removeAudioInputsAndOutputs]; + addedAudioInputsDueToEncodingTarget = NO; + } + + [super setAudioEncodingTarget:newValue]; +} + +- (void)updateOrientationSendToTargets; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + + // From the iOS 5.0 release notes: + // In previous iOS versions, the front-facing camera would always deliver buffers in AVCaptureVideoOrientationLandscapeLeft and the back-facing camera would always deliver buffers in AVCaptureVideoOrientationLandscapeRight. + + if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) + { + outputRotation = kGPUImageNoRotation; + if ([self cameraPosition] == AVCaptureDevicePositionBack) + { + if (_horizontallyMirrorRearFacingCamera) + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRightFlipVertical; break; + case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotate180; break; + case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageFlipHorizonal; break; + case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageFlipVertical; break; + default:internalRotation = kGPUImageNoRotation; + } + } + else + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRight; break; + case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateLeft; break; + case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageRotate180; break; + case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageNoRotation; break; + default:internalRotation = kGPUImageNoRotation; + } + } + } + else + { + if (_horizontallyMirrorFrontFacingCamera) + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRightFlipVertical; break; + case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateRightFlipHorizontal; break; + case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageFlipHorizonal; break; + case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageFlipVertical; break; + default:internalRotation = kGPUImageNoRotation; + } + } + else + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRight; break; + case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateLeft; break; + case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageNoRotation; break; + case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageRotate180; break; + default:internalRotation = kGPUImageNoRotation; + } + } + } + } + else + { + if ([self cameraPosition] == AVCaptureDevicePositionBack) + { + if (_horizontallyMirrorRearFacingCamera) + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break; + case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotate180; break; + case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break; + case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break; + default:outputRotation = kGPUImageNoRotation; + } + } + else + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break; + case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break; + case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageRotate180; break; + case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageNoRotation; break; + default:outputRotation = kGPUImageNoRotation; + } + } + } + else + { + if (_horizontallyMirrorFrontFacingCamera) + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break; + case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateRightFlipHorizontal; break; + case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break; + case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break; + default:outputRotation = kGPUImageNoRotation; + } + } + else + { + switch(_outputImageOrientation) + { + case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break; + case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break; + case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageNoRotation; break; + case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageRotate180; break; + default:outputRotation = kGPUImageNoRotation; + } + } + } + } + + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + [currentTarget setInputRotation:outputRotation atIndex:[[targetTextureIndices objectAtIndex:indexOfObject] integerValue]]; + } + }); +} + +- (void)setOutputImageOrientation:(UIInterfaceOrientation)newValue; +{ + _outputImageOrientation = newValue; + [self updateOrientationSendToTargets]; +} + +- (void)setHorizontallyMirrorFrontFacingCamera:(BOOL)newValue +{ + _horizontallyMirrorFrontFacingCamera = newValue; + [self updateOrientationSendToTargets]; +} + +- (void)setHorizontallyMirrorRearFacingCamera:(BOOL)newValue +{ + _horizontallyMirrorRearFacingCamera = newValue; + [self updateOrientationSendToTargets]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.h new file mode 100755 index 00000000..37be9449 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.h @@ -0,0 +1,22 @@ +#import "GPUImageFilter.h" + +/** Performs a vignetting effect, fading out the image at the edges + */ +@interface GPUImageVignetteFilter : GPUImageFilter +{ + GLint vignetteCenterUniform, vignetteColorUniform, vignetteStartUniform, vignetteEndUniform; +} + +// the center for the vignette in tex coords (defaults to 0.5, 0.5) +@property (nonatomic, readwrite) CGPoint vignetteCenter; + +// The color to use for the Vignette (defaults to black) +@property (nonatomic, readwrite) GPUVector3 vignetteColor; + +// The normalized distance from the center where the vignette effect starts. Default of 0.5. +@property (nonatomic, readwrite) CGFloat vignetteStart; + +// The normalized distance from the center where the vignette effect ends. Default of 0.75. +@property (nonatomic, readwrite) CGFloat vignetteEnd; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m new file mode 100755 index 00000000..6e1eadb2 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m @@ -0,0 +1,104 @@ +#import "GPUImageVignetteFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageVignetteFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + varying highp vec2 textureCoordinate; + + uniform lowp vec2 vignetteCenter; + uniform lowp vec3 vignetteColor; + uniform highp float vignetteStart; + uniform highp float vignetteEnd; + + void main() + { + lowp vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate); + lowp float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y)); + lowp float percent = smoothstep(vignetteStart, vignetteEnd, d); + gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a); + } +); +#else +NSString *const kGPUImageVignetteFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + varying vec2 textureCoordinate; + + uniform vec2 vignetteCenter; + uniform vec3 vignetteColor; + uniform float vignetteStart; + uniform float vignetteEnd; + + void main() + { + vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate); + float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y)); + float percent = smoothstep(vignetteStart, vignetteEnd, d); + gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a); + } +); +#endif + +@implementation GPUImageVignetteFilter + +@synthesize vignetteCenter = _vignetteCenter; +@synthesize vignetteColor = _vignetteColor; +@synthesize vignetteStart =_vignetteStart; +@synthesize vignetteEnd = _vignetteEnd; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageVignetteFragmentShaderString])) + { + return nil; + } + + vignetteCenterUniform = [filterProgram uniformIndex:@"vignetteCenter"]; + vignetteColorUniform = [filterProgram uniformIndex:@"vignetteColor"]; + vignetteStartUniform = [filterProgram uniformIndex:@"vignetteStart"]; + vignetteEndUniform = [filterProgram uniformIndex:@"vignetteEnd"]; + + self.vignetteCenter = (CGPoint){ 0.5f, 0.5f }; + self.vignetteColor = (GPUVector3){ 0.0f, 0.0f, 0.0f }; + self.vignetteStart = 0.3; + self.vignetteEnd = 0.75; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setVignetteCenter:(CGPoint)newValue +{ + _vignetteCenter = newValue; + + [self setPoint:newValue forUniform:vignetteCenterUniform program:filterProgram]; +} + +- (void)setVignetteColor:(GPUVector3)newValue +{ + _vignetteColor = newValue; + + [self setVec3:newValue forUniform:vignetteColorUniform program:filterProgram]; +} + +- (void)setVignetteStart:(CGFloat)newValue; +{ + _vignetteStart = newValue; + + [self setFloat:_vignetteStart forUniform:vignetteStartUniform program:filterProgram]; +} + +- (void)setVignetteEnd:(CGFloat)newValue; +{ + _vignetteEnd = newValue; + + [self setFloat:_vignetteEnd forUniform:vignetteEndUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.h new file mode 100644 index 00000000..659e39d5 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.h @@ -0,0 +1,10 @@ +#import "GPUImageTwoInputFilter.h" + +@interface GPUImageVoronoiConsumerFilter : GPUImageTwoInputFilter +{ + GLint sizeUniform; +} + +@property (nonatomic, readwrite) CGSize sizeInPixels; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m new file mode 100644 index 00000000..c12c34f4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m @@ -0,0 +1,94 @@ +#import "GPUImageVoronoiConsumerFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageVoronoiConsumerFragmentShaderString = SHADER_STRING +( + + precision highp float; + + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + uniform vec2 size; + varying vec2 textureCoordinate; + + vec2 getCoordFromColor(vec4 color) +{ + float z = color.z * 256.0; + float yoff = floor(z / 8.0); + float xoff = mod(z, 8.0); + float x = color.x*256.0 + xoff*256.0; + float y = color.y*256.0 + yoff*256.0; + return vec2(x,y) / size; +} + + void main(void) { + vec4 colorLoc = texture2D(inputImageTexture2, textureCoordinate); + vec4 color = texture2D(inputImageTexture, getCoordFromColor(colorLoc)); + + gl_FragColor = color; + } +); +#else +NSString *const kGPUImageVoronoiConsumerFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + uniform sampler2D inputImageTexture2; + uniform vec2 size; + varying vec2 textureCoordinate; + + vec2 getCoordFromColor(vec4 color) + { + float z = color.z * 256.0; + float yoff = floor(z / 8.0); + float xoff = mod(z, 8.0); + float x = color.x*256.0 + xoff*256.0; + float y = color.y*256.0 + yoff*256.0; + return vec2(x,y) / size; + } + + void main(void) + { + vec4 colorLoc = texture2D(inputImageTexture2, textureCoordinate); + vec4 color = texture2D(inputImageTexture, getCoordFromColor(colorLoc)); + + gl_FragColor = color; + } +); +#endif + +@implementation GPUImageVoronoiConsumerFilter + +@synthesize sizeInPixels = _sizeInPixels; + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageVoronoiConsumerFragmentShaderString])) + { + return nil; + } + + sizeUniform = [filterProgram uniformIndex:@"size"]; + + return self; +} + +-(void)setSizeInPixels:(CGSize)sizeInPixels { + _sizeInPixels = sizeInPixels; + + //validate that it's a power of 2 and square + + float width = log2(sizeInPixels.width); + float height = log2(sizeInPixels.height); + + if (width != height) { + NSLog(@"Voronoi point texture must be square"); + return; + } + if (width != floor(width) || height != floor(height)) { + NSLog(@"Voronoi point texture must be a power of 2. Texture size %f, %f", sizeInPixels.width, sizeInPixels.height); + return; + } + glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.h new file mode 100644 index 00000000..44b76c6a --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.h @@ -0,0 +1,5 @@ +#import "GPUImage3x3TextureSamplingFilter.h" + +@interface GPUImageWeakPixelInclusionFilter : GPUImage3x3TextureSamplingFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m new file mode 100644 index 00000000..4e95ad5d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m @@ -0,0 +1,94 @@ +#import "GPUImageWeakPixelInclusionFilter.h" + +@implementation GPUImageWeakPixelInclusionFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageWeakPixelInclusionFragmentShaderString = SHADER_STRING +( + precision lowp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; + + float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity; + float sumTest = step(1.5, pixelIntensitySum); + float pixelTest = step(0.01, centerIntensity); + + gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0); + } +); +#else +NSString *const kGPUImageWeakPixelInclusionFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; + + float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity; + float sumTest = step(1.5, pixelIntensitySum); + float pixelTest = step(0.01, centerIntensity); + + gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageWeakPixelInclusionFragmentShaderString])) + { + return nil; + } + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.h new file mode 100644 index 00000000..6b09c33d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.h @@ -0,0 +1,17 @@ +#import "GPUImageFilter.h" +/** + * Created by Alaric Cole + * Allows adjustment of color temperature in terms of what an image was effectively shot in. This means higher Kelvin values will warm the image, while lower values will cool it. + + */ +@interface GPUImageWhiteBalanceFilter : GPUImageFilter +{ + GLint temperatureUniform, tintUniform; +} +//choose color temperature, in degrees Kelvin +@property(readwrite, nonatomic) CGFloat temperature; + +//adjust tint to compensate +@property(readwrite, nonatomic) CGFloat tint; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m new file mode 100644 index 00000000..17c9bce9 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m @@ -0,0 +1,107 @@ +#import "GPUImageWhiteBalanceFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageWhiteBalanceFragmentShaderString = SHADER_STRING +( +uniform sampler2D inputImageTexture; +varying highp vec2 textureCoordinate; + +uniform lowp float temperature; +uniform lowp float tint; + +const lowp vec3 warmFilter = vec3(0.93, 0.54, 0.0); + +const mediump mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); +const mediump mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); + +void main() +{ + lowp vec4 source = texture2D(inputImageTexture, textureCoordinate); + + mediump vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint + yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); + lowp vec3 rgb = YIQtoRGB * yiq; + + lowp vec3 processed = vec3( + (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature + (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), + (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); + + gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); +} +); +#else +NSString *const kGPUImageWhiteBalanceFragmentShaderString = SHADER_STRING +( + uniform sampler2D inputImageTexture; + varying vec2 textureCoordinate; + + uniform float temperature; + uniform float tint; + + const vec3 warmFilter = vec3(0.93, 0.54, 0.0); + + const mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); + const mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); + + void main() +{ + vec4 source = texture2D(inputImageTexture, textureCoordinate); + + vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint + yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); + vec3 rgb = YIQtoRGB * yiq; + + vec3 processed = vec3( + (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature + (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), + (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); + + gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); +} +); +#endif + +@implementation GPUImageWhiteBalanceFilter + +@synthesize temperature = _temperature; +@synthesize tint = _tint; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageWhiteBalanceFragmentShaderString])) + { + return nil; + } + + temperatureUniform = [filterProgram uniformIndex:@"temperature"]; + tintUniform = [filterProgram uniformIndex:@"tint"]; + + self.temperature = 5000.0; + self.tint = 0.0; + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setTemperature:(CGFloat)newValue; +{ + _temperature = newValue; + + [self setFloat:_temperature < 5000 ? 0.0004 * (_temperature-5000.0) : 0.00006 * (_temperature-5000.0) forUniform:temperatureUniform program:filterProgram]; +} + +- (void)setTint:(CGFloat)newValue; +{ + _tint = newValue; + + [self setFloat:_tint / 100.0 forUniform:tintUniform program:filterProgram]; +} + +@end + diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.h new file mode 100755 index 00000000..8db57457 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.h @@ -0,0 +1,5 @@ +#import "GPUImageSobelEdgeDetectionFilter.h" + +@interface GPUImageXYDerivativeFilter : GPUImageSobelEdgeDetectionFilter + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m new file mode 100755 index 00000000..7e19e9d4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m @@ -0,0 +1,106 @@ +#import "GPUImageXYDerivativeFilter.h" + +// I'm using the Prewitt operator to obtain the derivative, then squaring the X and Y components and placing the product of the two in Z. +// In tests, Prewitt seemed to be tied with Sobel for the best, and it's just a little cheaper to compute. +// This is primarily intended to be used with corner detection filters. + +@implementation GPUImageXYDerivativeFilter + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageGradientFragmentShaderString = SHADER_STRING +( + precision highp float; + + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float edgeStrength; + + void main() + { + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + + float verticalDerivative = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; + float horizontalDerivative = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; + verticalDerivative = verticalDerivative * edgeStrength; + horizontalDerivative = horizontalDerivative * edgeStrength; + + // Scaling the X * Y operation so that negative numbers are not clipped in the 0..1 range. This will be expanded in the corner detection filter + gl_FragColor = vec4(horizontalDerivative * horizontalDerivative, verticalDerivative * verticalDerivative, ((verticalDerivative * horizontalDerivative) + 1.0) / 2.0, 1.0); + } +); +#else +NSString *const kGPUImageGradientFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + varying vec2 leftTextureCoordinate; + varying vec2 rightTextureCoordinate; + + varying vec2 topTextureCoordinate; + varying vec2 topLeftTextureCoordinate; + varying vec2 topRightTextureCoordinate; + + varying vec2 bottomTextureCoordinate; + varying vec2 bottomLeftTextureCoordinate; + varying vec2 bottomRightTextureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform float edgeStrength; + + void main() + { + float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; + float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; + float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; + float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; + float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; + float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; + float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; + float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; + + float verticalDerivative = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; + float horizontalDerivative = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; + verticalDerivative = verticalDerivative * edgeStrength; + horizontalDerivative = horizontalDerivative * edgeStrength; + + // Scaling the X * Y operation so that negative numbers are not clipped in the 0..1 range. This will be expanded in the corner detection filter + gl_FragColor = vec4(horizontalDerivative * horizontalDerivative, verticalDerivative * verticalDerivative, ((verticalDerivative * horizontalDerivative) + 1.0) / 2.0, 1.0); + } +); +#endif + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [self initWithFragmentShaderFromString:kGPUImageGradientFragmentShaderString])) + { + return nil; + } + + self.edgeStrength = 1.0; + + return self; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.h new file mode 100644 index 00000000..744a72cb --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.h @@ -0,0 +1,13 @@ +#import "GPUImageFilter.h" + +@interface GPUImageZoomBlurFilter : GPUImageFilter + +/** A multiplier for the blur size, ranging from 0.0 on up, with a default of 1.0 + */ +@property (readwrite, nonatomic) CGFloat blurSize; + +/** The normalized center of the blur. (0.5, 0.5) by default + */ +@property (readwrite, nonatomic) CGPoint blurCenter; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m new file mode 100644 index 00000000..2ae84934 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m @@ -0,0 +1,115 @@ +#import "GPUImageZoomBlurFilter.h" + +#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +NSString *const kGPUImageZoomBlurFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform highp vec2 blurCenter; + uniform highp float blurSize; + + void main() + { + // TODO: Do a more intelligent scaling based on resolution here + highp vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; + + lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) * 0.12; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) * 0.12; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; + + gl_FragColor = fragmentColor; + } +); +#else +NSString *const kGPUImageZoomBlurFragmentShaderString = SHADER_STRING +( + varying vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + uniform vec2 blurCenter; + uniform float blurSize; + + void main() + { + // TODO: Do a more intelligent scaling based on resolution here + vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; + + vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) * 0.12; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; + fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) * 0.12; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; + fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; + + gl_FragColor = fragmentColor; + } +); +#endif + +@interface GPUImageZoomBlurFilter() +{ + GLint blurSizeUniform, blurCenterUniform; +} +@end + +@implementation GPUImageZoomBlurFilter + +@synthesize blurSize = _blurSize; +@synthesize blurCenter = _blurCenter; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super initWithFragmentShaderFromString:kGPUImageZoomBlurFragmentShaderString])) + { + return nil; + } + + blurSizeUniform = [filterProgram uniformIndex:@"blurSize"]; + blurCenterUniform = [filterProgram uniformIndex:@"blurCenter"]; + + self.blurSize = 1.0; + self.blurCenter = CGPointMake(0.5, 0.5); + + return self; +} + +#pragma mark - +#pragma mark Accessors + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + [super setInputRotation:newInputRotation atIndex:textureIndex]; + [self setBlurCenter:self.blurCenter]; +} + +- (void)setBlurSize:(CGFloat)newValue; +{ + _blurSize = newValue; + + [self setFloat:_blurSize forUniform:blurSizeUniform program:filterProgram]; +} + +- (void)setBlurCenter:(CGPoint)newValue; +{ + _blurCenter = newValue; + + CGPoint rotatedPoint = [self rotatedPoint:_blurCenter forRotation:inputRotation]; + [self setPoint:rotatedPoint forUniform:blurCenterUniform program:filterProgram]; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.h new file mode 100644 index 00000000..261d0d7c --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.h @@ -0,0 +1,31 @@ +#import "GPUImageFilterGroup.h" + +@class GPUImageSaturationFilter; +@class GPUImageGaussianBlurFilter; +@class GPUImageLuminanceRangeFilter; + +@interface GPUImageiOSBlurFilter : GPUImageFilterGroup +{ + GPUImageSaturationFilter *saturationFilter; + GPUImageGaussianBlurFilter *blurFilter; + GPUImageLuminanceRangeFilter *luminanceRangeFilter; +} + +/** A radius in pixels to use for the blur, with a default of 12.0. This adjusts the sigma variable in the Gaussian distribution function. + */ +@property (readwrite, nonatomic) CGFloat blurRadiusInPixels; + +/** Saturation ranges from 0.0 (fully desaturated) to 2.0 (max saturation), with 0.8 as the normal level + */ +@property (readwrite, nonatomic) CGFloat saturation; + +/** The degree to which to downsample, then upsample the incoming image to minimize computations within the Gaussian blur, default of 4.0 + */ +@property (readwrite, nonatomic) CGFloat downsampling; + + +/** The degree to reduce the luminance range, from 0.0 to 1.0. Default is 0.6. + */ +@property (readwrite, nonatomic) CGFloat rangeReductionFactor; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m new file mode 100644 index 00000000..18533213 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m @@ -0,0 +1,114 @@ +#import "GPUImageiOSBlurFilter.h" +#import "GPUImageSaturationFilter.h" +#import "GPUImageGaussianBlurFilter.h" +#import "GPUImageLuminanceRangeFilter.h" + +@implementation GPUImageiOSBlurFilter + +@synthesize blurRadiusInPixels; +@synthesize saturation; +@synthesize downsampling = _downsampling; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + // First pass: downsample and desaturate + saturationFilter = [[GPUImageSaturationFilter alloc] init]; + [self addFilter:saturationFilter]; + + // Second pass: apply a strong Gaussian blur + blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; + [self addFilter:blurFilter]; + + // Third pass: upsample and adjust luminance range + luminanceRangeFilter = [[GPUImageLuminanceRangeFilter alloc] init]; + [self addFilter:luminanceRangeFilter]; + + [saturationFilter addTarget:blurFilter]; + [blurFilter addTarget:luminanceRangeFilter]; + + self.initialFilters = [NSArray arrayWithObject:saturationFilter]; + self.terminalFilter = luminanceRangeFilter; + + self.blurRadiusInPixels = 12.0; + self.saturation = 0.8; + self.downsampling = 4.0; + self.rangeReductionFactor = 0.6; + + return self; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + if (_downsampling > 1.0) + { + CGSize rotatedSize = [saturationFilter rotatedSize:newSize forIndex:textureIndex]; + + [saturationFilter forceProcessingAtSize:CGSizeMake(rotatedSize.width / _downsampling, rotatedSize.height / _downsampling)]; + [luminanceRangeFilter forceProcessingAtSize:rotatedSize]; + } + + [super setInputSize:newSize atIndex:textureIndex]; +} + +#pragma mark - +#pragma mark Accessors + +// From Apple's UIImage+ImageEffects category: + +// A description of how to compute the box kernel width from the Gaussian +// radius (aka standard deviation) appears in the SVG spec: +// http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement +// +// For larger values of 's' (s >= 2.0), an approximation can be used: Three +// successive box-blurs build a piece-wise quadratic convolution kernel, which +// approximates the Gaussian kernel to within roughly 3%. +// +// let d = floor(s * 3*sqrt(2*pi)/4 + 0.5) +// +// ... if d is odd, use three box-blurs of size 'd', centered on the output pixel. + + +- (void)setBlurRadiusInPixels:(CGFloat)newValue; +{ + blurFilter.blurRadiusInPixels = newValue; +} + +- (CGFloat)blurRadiusInPixels; +{ + return blurFilter.blurRadiusInPixels; +} + +- (void)setSaturation:(CGFloat)newValue; +{ + saturationFilter.saturation = newValue; +} + +- (CGFloat)saturation; +{ + return saturationFilter.saturation; +} + +- (void)setDownsampling:(CGFloat)newValue; +{ + _downsampling = newValue; +} + +- (void)setRangeReductionFactor:(CGFloat)rangeReductionFactor +{ + luminanceRangeFilter.rangeReductionFactor = rangeReductionFactor; +} + +- (CGFloat)rangeReductionFactor +{ + return luminanceRangeFilter.rangeReductionFactor; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/Framework/GPUImageFramework.h b/LFLiveKit/Vendor/GPUImage/iOS/Framework/GPUImageFramework.h new file mode 100644 index 00000000..3de78bf4 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/Framework/GPUImageFramework.h @@ -0,0 +1,177 @@ +#import + +//! Project version number for GPUImageFramework. +FOUNDATION_EXPORT double GPUImageFrameworkVersionNumber; + +//! Project version string for GPUImageFramework. +FOUNDATION_EXPORT const unsigned char GPUImageFrameworkVersionString[]; + +#import + +// Base classes +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +// Filters +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.h b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.h new file mode 100755 index 00000000..71142b88 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.h @@ -0,0 +1,64 @@ +#import "GLProgram.h" +#import "GPUImageFramebuffer.h" +#import "GPUImageFramebufferCache.h" + +#define GPUImageRotationSwapsWidthAndHeight(rotation) ((rotation) == kGPUImageRotateLeft || (rotation) == kGPUImageRotateRight || (rotation) == kGPUImageRotateRightFlipVertical || (rotation) == kGPUImageRotateRightFlipHorizontal) + +typedef NS_ENUM(NSUInteger, GPUImageRotationMode) { + kGPUImageNoRotation, + kGPUImageRotateLeft, + kGPUImageRotateRight, + kGPUImageFlipVertical, + kGPUImageFlipHorizonal, + kGPUImageRotateRightFlipVertical, + kGPUImageRotateRightFlipHorizontal, + kGPUImageRotate180 +}; + +@interface GPUImageContext : NSObject + +@property(readonly, nonatomic) dispatch_queue_t contextQueue; +@property(readwrite, retain, nonatomic) GLProgram *currentShaderProgram; +@property(readonly, retain, nonatomic) EAGLContext *context; +@property(readonly) CVOpenGLESTextureCacheRef coreVideoTextureCache; +@property(readonly) GPUImageFramebufferCache *framebufferCache; + ++ (void *)contextKey; ++ (GPUImageContext *)sharedImageProcessingContext; ++ (dispatch_queue_t)sharedContextQueue; ++ (GPUImageFramebufferCache *)sharedFramebufferCache; ++ (void)useImageProcessingContext; +- (void)useAsCurrentContext; ++ (void)setActiveShaderProgram:(GLProgram *)shaderProgram; +- (void)setContextShaderProgram:(GLProgram *)shaderProgram; ++ (GLint)maximumTextureSizeForThisDevice; ++ (GLint)maximumTextureUnitsForThisDevice; ++ (GLint)maximumVaryingVectorsForThisDevice; ++ (BOOL)deviceSupportsOpenGLESExtension:(NSString *)extension; ++ (BOOL)deviceSupportsRedTextures; ++ (BOOL)deviceSupportsFramebufferReads; ++ (CGSize)sizeThatFitsWithinATextureForSize:(CGSize)inputSize; + +- (void)presentBufferForDisplay; +- (GLProgram *)programForVertexShaderString:(NSString *)vertexShaderString fragmentShaderString:(NSString *)fragmentShaderString; + +- (void)useSharegroup:(EAGLSharegroup *)sharegroup; + +// Manage fast texture upload ++ (BOOL)supportsFastTextureUpload; + +@end + +@protocol GPUImageInput +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +- (NSInteger)nextAvailableTextureIndex; +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +- (CGSize)maximumOutputSize; +- (void)endProcessing; +- (BOOL)shouldIgnoreUpdatesToThisTarget; +- (BOOL)enabled; +- (BOOL)wantsMonochromeInput; +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m new file mode 100755 index 00000000..c167d15d --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m @@ -0,0 +1,320 @@ +#import "GPUImageContext.h" +#import +#import + +#define MAXSHADERPROGRAMSALLOWEDINCACHE 40 + +extern dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void); + +@interface GPUImageContext() +{ + NSMutableDictionary *shaderProgramCache; + NSMutableArray *shaderProgramUsageHistory; + EAGLSharegroup *_sharegroup; +} + +@end + +@implementation GPUImageContext + +@synthesize context = _context; +@synthesize currentShaderProgram = _currentShaderProgram; +@synthesize contextQueue = _contextQueue; +@synthesize coreVideoTextureCache = _coreVideoTextureCache; +@synthesize framebufferCache = _framebufferCache; + +static void *openGLESContextQueueKey; + +- (id)init; +{ + if (!(self = [super init])) + { + return nil; + } + + openGLESContextQueueKey = &openGLESContextQueueKey; + _contextQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.openGLESContextQueue", GPUImageDefaultQueueAttribute()); + +#if OS_OBJECT_USE_OBJC + dispatch_queue_set_specific(_contextQueue, openGLESContextQueueKey, (__bridge void *)self, NULL); +#endif + shaderProgramCache = [[NSMutableDictionary alloc] init]; + shaderProgramUsageHistory = [[NSMutableArray alloc] init]; + + return self; +} + ++ (void *)contextKey { + return openGLESContextQueueKey; +} + +// Based on Colin Wheeler's example here: http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html ++ (GPUImageContext *)sharedImageProcessingContext; +{ + static dispatch_once_t pred; + static GPUImageContext *sharedImageProcessingContext = nil; + + dispatch_once(&pred, ^{ + sharedImageProcessingContext = [[[self class] alloc] init]; + }); + return sharedImageProcessingContext; +} + ++ (dispatch_queue_t)sharedContextQueue; +{ + return [[self sharedImageProcessingContext] contextQueue]; +} + ++ (GPUImageFramebufferCache *)sharedFramebufferCache; +{ + return [[self sharedImageProcessingContext] framebufferCache]; +} + ++ (void)useImageProcessingContext; +{ + [[GPUImageContext sharedImageProcessingContext] useAsCurrentContext]; +} + +- (void)useAsCurrentContext; +{ + EAGLContext *imageProcessingContext = [self context]; + if ([EAGLContext currentContext] != imageProcessingContext) + { + [EAGLContext setCurrentContext:imageProcessingContext]; + } +} + ++ (void)setActiveShaderProgram:(GLProgram *)shaderProgram; +{ + GPUImageContext *sharedContext = [GPUImageContext sharedImageProcessingContext]; + [sharedContext setContextShaderProgram:shaderProgram]; +} + +- (void)setContextShaderProgram:(GLProgram *)shaderProgram; +{ + EAGLContext *imageProcessingContext = [self context]; + if ([EAGLContext currentContext] != imageProcessingContext) + { + [EAGLContext setCurrentContext:imageProcessingContext]; + } + + if (self.currentShaderProgram != shaderProgram) + { + self.currentShaderProgram = shaderProgram; + [shaderProgram use]; + } +} + ++ (GLint)maximumTextureSizeForThisDevice; +{ + static dispatch_once_t pred; + static GLint maxTextureSize = 0; + + dispatch_once(&pred, ^{ + [self useImageProcessingContext]; + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); + }); + + return maxTextureSize; +} + ++ (GLint)maximumTextureUnitsForThisDevice; +{ + static dispatch_once_t pred; + static GLint maxTextureUnits = 0; + + dispatch_once(&pred, ^{ + [self useImageProcessingContext]; + glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureUnits); + }); + + return maxTextureUnits; +} + ++ (GLint)maximumVaryingVectorsForThisDevice; +{ + static dispatch_once_t pred; + static GLint maxVaryingVectors = 0; + + dispatch_once(&pred, ^{ + [self useImageProcessingContext]; + glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryingVectors); + }); + + return maxVaryingVectors; +} + ++ (BOOL)deviceSupportsOpenGLESExtension:(NSString *)extension; +{ + static dispatch_once_t pred; + static NSArray *extensionNames = nil; + + // Cache extensions for later quick reference, since this won't change for a given device + dispatch_once(&pred, ^{ + [GPUImageContext useImageProcessingContext]; + NSString *extensionsString = [NSString stringWithCString:(const char *)glGetString(GL_EXTENSIONS) encoding:NSASCIIStringEncoding]; + extensionNames = [extensionsString componentsSeparatedByString:@" "]; + }); + + return [extensionNames containsObject:extension]; +} + + +// http://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_rg.txt + ++ (BOOL)deviceSupportsRedTextures; +{ + static dispatch_once_t pred; + static BOOL supportsRedTextures = NO; + + dispatch_once(&pred, ^{ + supportsRedTextures = [GPUImageContext deviceSupportsOpenGLESExtension:@"GL_EXT_texture_rg"]; + }); + + return supportsRedTextures; +} + ++ (BOOL)deviceSupportsFramebufferReads; +{ + static dispatch_once_t pred; + static BOOL supportsFramebufferReads = NO; + + dispatch_once(&pred, ^{ + supportsFramebufferReads = [GPUImageContext deviceSupportsOpenGLESExtension:@"GL_EXT_shader_framebuffer_fetch"]; + }); + + return supportsFramebufferReads; +} + ++ (CGSize)sizeThatFitsWithinATextureForSize:(CGSize)inputSize; +{ + GLint maxTextureSize = [self maximumTextureSizeForThisDevice]; + if ( (inputSize.width < maxTextureSize) && (inputSize.height < maxTextureSize) ) + { + return inputSize; + } + + CGSize adjustedSize; + if (inputSize.width > inputSize.height) + { + adjustedSize.width = (CGFloat)maxTextureSize; + adjustedSize.height = ((CGFloat)maxTextureSize / inputSize.width) * inputSize.height; + } + else + { + adjustedSize.height = (CGFloat)maxTextureSize; + adjustedSize.width = ((CGFloat)maxTextureSize / inputSize.height) * inputSize.width; + } + + return adjustedSize; +} + +- (void)presentBufferForDisplay; +{ + [self.context presentRenderbuffer:GL_RENDERBUFFER]; +} + +- (GLProgram *)programForVertexShaderString:(NSString *)vertexShaderString fragmentShaderString:(NSString *)fragmentShaderString; +{ + NSString *lookupKeyForShaderProgram = [NSString stringWithFormat:@"V: %@ - F: %@", vertexShaderString, fragmentShaderString]; + GLProgram *programFromCache = [shaderProgramCache objectForKey:lookupKeyForShaderProgram]; + + if (programFromCache == nil) + { + programFromCache = [[GLProgram alloc] initWithVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString]; + [shaderProgramCache setObject:programFromCache forKey:lookupKeyForShaderProgram]; +// [shaderProgramUsageHistory addObject:lookupKeyForShaderProgram]; +// if ([shaderProgramUsageHistory count] >= MAXSHADERPROGRAMSALLOWEDINCACHE) +// { +// for (NSUInteger currentShaderProgramRemovedFromCache = 0; currentShaderProgramRemovedFromCache < 10; currentShaderProgramRemovedFromCache++) +// { +// NSString *shaderProgramToRemoveFromCache = [shaderProgramUsageHistory objectAtIndex:0]; +// [shaderProgramUsageHistory removeObjectAtIndex:0]; +// [shaderProgramCache removeObjectForKey:shaderProgramToRemoveFromCache]; +// } +// } + } + + return programFromCache; +} + +- (void)useSharegroup:(EAGLSharegroup *)sharegroup; +{ + NSAssert(_context == nil, @"Unable to use a share group when the context has already been created. Call this method before you use the context for the first time."); + + _sharegroup = sharegroup; +} + +- (EAGLContext *)createContext; +{ + EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:_sharegroup]; + NSAssert(context != nil, @"Unable to create an OpenGL ES 2.0 context. The GPUImage framework requires OpenGL ES 2.0 support to work."); + return context; +} + + +#pragma mark - +#pragma mark Manage fast texture upload + ++ (BOOL)supportsFastTextureUpload; +{ +#if TARGET_IPHONE_SIMULATOR + return NO; +#else + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wtautological-pointer-compare" + return (CVOpenGLESTextureCacheCreate != NULL); +#pragma clang diagnostic pop + +#endif +} + +#pragma mark - +#pragma mark Accessors + +- (EAGLContext *)context; +{ + if (_context == nil) + { + _context = [self createContext]; + [EAGLContext setCurrentContext:_context]; + + // Set up a few global settings for the image processing pipeline + glDisable(GL_DEPTH_TEST); + } + + return _context; +} + +- (CVOpenGLESTextureCacheRef)coreVideoTextureCache; +{ + if (_coreVideoTextureCache == NULL) + { +#if defined(__IPHONE_6_0) + CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, [self context], NULL, &_coreVideoTextureCache); +#else + CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, (__bridge void *)[self context], NULL, &_coreVideoTextureCache); +#endif + + if (err) + { + NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreate %d", err); + } + + } + + return _coreVideoTextureCache; +} + +- (GPUImageFramebufferCache *)framebufferCache; +{ + if (_framebufferCache == nil) + { + _framebufferCache = [[GPUImageFramebufferCache alloc] init]; + } + + return _framebufferCache; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.h b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.h new file mode 100755 index 00000000..f0b2c6ad --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.h @@ -0,0 +1,67 @@ +#import +#import +#import "GPUImageContext.h" + +extern NSString *const kGPUImageColorSwizzlingFragmentShaderString; + +@protocol GPUImageMovieWriterDelegate + +@optional +- (void)movieRecordingCompleted; +- (void)movieRecordingFailedWithError:(NSError*)error; + +@end + +@interface GPUImageMovieWriter : NSObject +{ + BOOL alreadyFinishedRecording; + + NSURL *movieURL; + NSString *fileType; + AVAssetWriter *assetWriter; + AVAssetWriterInput *assetWriterAudioInput; + AVAssetWriterInput *assetWriterVideoInput; + AVAssetWriterInputPixelBufferAdaptor *assetWriterPixelBufferInput; + + GPUImageContext *_movieWriterContext; + CVPixelBufferRef renderTarget; + CVOpenGLESTextureRef renderTexture; + + CGSize videoSize; + GPUImageRotationMode inputRotation; +} + +@property(readwrite, nonatomic) BOOL hasAudioTrack; +@property(readwrite, nonatomic) BOOL shouldPassthroughAudio; +@property(readwrite, nonatomic) BOOL shouldInvalidateAudioSampleWhenDone; +@property(nonatomic, copy) void(^completionBlock)(void); +@property(nonatomic, copy) void(^failureBlock)(NSError*); +@property(nonatomic, assign) id delegate; +@property(readwrite, nonatomic) BOOL encodingLiveVideo; +@property(nonatomic, copy) BOOL(^videoInputReadyCallback)(void); +@property(nonatomic, copy) BOOL(^audioInputReadyCallback)(void); +@property(nonatomic, copy) void(^audioProcessingCallback)(SInt16 **samplesRef, CMItemCount numSamplesInBuffer); +@property(nonatomic) BOOL enabled; +@property(nonatomic, readonly) AVAssetWriter *assetWriter; +@property(nonatomic, readonly) CMTime duration; +@property(nonatomic, assign) CGAffineTransform transform; +@property(nonatomic, copy) NSArray *metaData; +@property(nonatomic, assign, getter = isPaused) BOOL paused; +@property(nonatomic, retain) GPUImageContext *movieWriterContext; + +// Initialization and teardown +- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize; +- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSDictionary *)outputSettings; + +- (void)setHasAudioTrack:(BOOL)hasAudioTrack audioSettings:(NSDictionary *)audioOutputSettings; + +// Movie recording +- (void)startRecording; +- (void)startRecordingInOrientation:(CGAffineTransform)orientationTransform; +- (void)finishRecording; +- (void)finishRecordingWithCompletionHandler:(void (^)(void))handler; +- (void)cancelRecording; +- (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer; +- (void)enableSynchronizationCallbacks; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m new file mode 100755 index 00000000..addc0a79 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m @@ -0,0 +1,1016 @@ +#import "GPUImageMovieWriter.h" + +#import "GPUImageContext.h" +#import "GLProgram.h" +#import "GPUImageFilter.h" + +NSString *const kGPUImageColorSwizzlingFragmentShaderString = SHADER_STRING +( + varying highp vec2 textureCoordinate; + + uniform sampler2D inputImageTexture; + + void main() + { + gl_FragColor = texture2D(inputImageTexture, textureCoordinate).bgra; + } +); + + +@interface GPUImageMovieWriter () +{ + GLuint movieFramebuffer, movieRenderbuffer; + + GLProgram *colorSwizzlingProgram; + GLint colorSwizzlingPositionAttribute, colorSwizzlingTextureCoordinateAttribute; + GLint colorSwizzlingInputTextureUniform; + + GPUImageFramebuffer *firstInputFramebuffer; + + BOOL discont; + CMTime startTime, previousFrameTime, previousAudioTime; + CMTime offsetTime; + + dispatch_queue_t audioQueue, videoQueue; + BOOL audioEncodingIsFinished, videoEncodingIsFinished; + + BOOL isRecording; +} + +// Movie recording +- (void)initializeMovieWithOutputSettings:(NSMutableDictionary *)outputSettings; + +// Frame rendering +- (void)createDataFBO; +- (void)destroyDataFBO; +- (void)setFilterFBO; + +- (void)renderAtInternalSizeUsingFramebuffer:(GPUImageFramebuffer *)inputFramebufferToUse; + +@end + +@implementation GPUImageMovieWriter + +@synthesize hasAudioTrack = _hasAudioTrack; +@synthesize encodingLiveVideo = _encodingLiveVideo; +@synthesize shouldPassthroughAudio = _shouldPassthroughAudio; +@synthesize completionBlock; +@synthesize failureBlock; +@synthesize videoInputReadyCallback; +@synthesize audioInputReadyCallback; +@synthesize enabled; +@synthesize shouldInvalidateAudioSampleWhenDone = _shouldInvalidateAudioSampleWhenDone; +@synthesize paused = _paused; +@synthesize movieWriterContext = _movieWriterContext; + +@synthesize delegate = _delegate; + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize; +{ + return [self initWithMovieURL:newMovieURL size:newSize fileType:AVFileTypeQuickTimeMovie outputSettings:nil]; +} + +- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSMutableDictionary *)outputSettings; +{ + if (!(self = [super init])) + { + return nil; + } + + _shouldInvalidateAudioSampleWhenDone = NO; + + self.enabled = YES; + alreadyFinishedRecording = NO; + videoEncodingIsFinished = NO; + audioEncodingIsFinished = NO; + + discont = NO; + videoSize = newSize; + movieURL = newMovieURL; + fileType = newFileType; + startTime = kCMTimeInvalid; + _encodingLiveVideo = [[outputSettings objectForKey:@"EncodingLiveVideo"] isKindOfClass:[NSNumber class]] ? [[outputSettings objectForKey:@"EncodingLiveVideo"] boolValue] : YES; + previousFrameTime = kCMTimeNegativeInfinity; + previousAudioTime = kCMTimeNegativeInfinity; + inputRotation = kGPUImageNoRotation; + + _movieWriterContext = [[GPUImageContext alloc] init]; + [_movieWriterContext useSharegroup:[[[GPUImageContext sharedImageProcessingContext] context] sharegroup]]; + + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + [_movieWriterContext useAsCurrentContext]; + + if ([GPUImageContext supportsFastTextureUpload]) + { + colorSwizzlingProgram = [_movieWriterContext programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; + } + else + { + colorSwizzlingProgram = [_movieWriterContext programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageColorSwizzlingFragmentShaderString]; + } + + if (!colorSwizzlingProgram.initialized) + { + [colorSwizzlingProgram addAttribute:@"position"]; + [colorSwizzlingProgram addAttribute:@"inputTextureCoordinate"]; + + if (![colorSwizzlingProgram link]) + { + NSString *progLog = [colorSwizzlingProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [colorSwizzlingProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [colorSwizzlingProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + colorSwizzlingProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + colorSwizzlingPositionAttribute = [colorSwizzlingProgram attributeIndex:@"position"]; + colorSwizzlingTextureCoordinateAttribute = [colorSwizzlingProgram attributeIndex:@"inputTextureCoordinate"]; + colorSwizzlingInputTextureUniform = [colorSwizzlingProgram uniformIndex:@"inputImageTexture"]; + + [_movieWriterContext setContextShaderProgram:colorSwizzlingProgram]; + + glEnableVertexAttribArray(colorSwizzlingPositionAttribute); + glEnableVertexAttribArray(colorSwizzlingTextureCoordinateAttribute); + }); + + [self initializeMovieWithOutputSettings:outputSettings]; + + return self; +} + +- (void)dealloc; +{ + [self destroyDataFBO]; + +#if !OS_OBJECT_USE_OBJC + if( audioQueue != NULL ) + { + dispatch_release(audioQueue); + } + if( videoQueue != NULL ) + { + dispatch_release(videoQueue); + } +#endif +} + +#pragma mark - +#pragma mark Movie recording + +- (void)initializeMovieWithOutputSettings:(NSDictionary *)outputSettings; +{ + isRecording = NO; + + self.enabled = YES; + NSError *error = nil; + assetWriter = [[AVAssetWriter alloc] initWithURL:movieURL fileType:fileType error:&error]; + if (error != nil) + { + NSLog(@"Error: %@", error); + if (failureBlock) + { + failureBlock(error); + } + else + { + if(self.delegate && [self.delegate respondsToSelector:@selector(movieRecordingFailedWithError:)]) + { + [self.delegate movieRecordingFailedWithError:error]; + } + } + } + + // Set this to make sure that a functional movie is produced, even if the recording is cut off mid-stream. Only the last second should be lost in that case. + assetWriter.movieFragmentInterval = CMTimeMakeWithSeconds(1.0, 1000); + + // use default output settings if none specified + if (outputSettings == nil) + { + NSMutableDictionary *settings = [[NSMutableDictionary alloc] init]; + [settings setObject:AVVideoCodecH264 forKey:AVVideoCodecKey]; + [settings setObject:[NSNumber numberWithInt:videoSize.width] forKey:AVVideoWidthKey]; + [settings setObject:[NSNumber numberWithInt:videoSize.height] forKey:AVVideoHeightKey]; + outputSettings = settings; + } + // custom output settings specified + else + { + __unused NSString *videoCodec = [outputSettings objectForKey:AVVideoCodecKey]; + __unused NSNumber *width = [outputSettings objectForKey:AVVideoWidthKey]; + __unused NSNumber *height = [outputSettings objectForKey:AVVideoHeightKey]; + + NSAssert(videoCodec && width && height, @"OutputSettings is missing required parameters."); + + if( [outputSettings objectForKey:@"EncodingLiveVideo"] ) { + NSMutableDictionary *tmp = [outputSettings mutableCopy]; + [tmp removeObjectForKey:@"EncodingLiveVideo"]; + outputSettings = tmp; + } + } + + /* + NSDictionary *videoCleanApertureSettings = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:videoSize.width], AVVideoCleanApertureWidthKey, + [NSNumber numberWithInt:videoSize.height], AVVideoCleanApertureHeightKey, + [NSNumber numberWithInt:0], AVVideoCleanApertureHorizontalOffsetKey, + [NSNumber numberWithInt:0], AVVideoCleanApertureVerticalOffsetKey, + nil]; + + NSDictionary *videoAspectRatioSettings = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:3], AVVideoPixelAspectRatioHorizontalSpacingKey, + [NSNumber numberWithInt:3], AVVideoPixelAspectRatioVerticalSpacingKey, + nil]; + + NSMutableDictionary * compressionProperties = [[NSMutableDictionary alloc] init]; + [compressionProperties setObject:videoCleanApertureSettings forKey:AVVideoCleanApertureKey]; + [compressionProperties setObject:videoAspectRatioSettings forKey:AVVideoPixelAspectRatioKey]; + [compressionProperties setObject:[NSNumber numberWithInt: 2000000] forKey:AVVideoAverageBitRateKey]; + [compressionProperties setObject:[NSNumber numberWithInt: 16] forKey:AVVideoMaxKeyFrameIntervalKey]; + [compressionProperties setObject:AVVideoProfileLevelH264Main31 forKey:AVVideoProfileLevelKey]; + + [outputSettings setObject:compressionProperties forKey:AVVideoCompressionPropertiesKey]; + */ + + assetWriterVideoInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:outputSettings]; + assetWriterVideoInput.expectsMediaDataInRealTime = _encodingLiveVideo; + + // You need to use BGRA for the video in order to get realtime encoding. I use a color-swizzling shader to line up glReadPixels' normal RGBA output with the movie input's BGRA. + NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32BGRA], kCVPixelBufferPixelFormatTypeKey, + [NSNumber numberWithInt:videoSize.width], kCVPixelBufferWidthKey, + [NSNumber numberWithInt:videoSize.height], kCVPixelBufferHeightKey, + nil]; +// NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], kCVPixelBufferPixelFormatTypeKey, +// nil]; + + assetWriterPixelBufferInput = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:assetWriterVideoInput sourcePixelBufferAttributes:sourcePixelBufferAttributesDictionary]; + + [assetWriter addInput:assetWriterVideoInput]; +} + +- (void)setEncodingLiveVideo:(BOOL) value +{ + _encodingLiveVideo = value; + if (isRecording) { + NSAssert(NO, @"Can not change Encoding Live Video while recording"); + } + else + { + assetWriterVideoInput.expectsMediaDataInRealTime = _encodingLiveVideo; + assetWriterAudioInput.expectsMediaDataInRealTime = _encodingLiveVideo; + } +} + +- (void)startRecording; +{ + alreadyFinishedRecording = NO; + startTime = kCMTimeInvalid; + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + if (audioInputReadyCallback == NULL) + { + [assetWriter startWriting]; + } + }); + isRecording = YES; + // [assetWriter startSessionAtSourceTime:kCMTimeZero]; +} + +- (void)startRecordingInOrientation:(CGAffineTransform)orientationTransform; +{ + assetWriterVideoInput.transform = orientationTransform; + + [self startRecording]; +} + +- (void)cancelRecording; +{ + if (assetWriter.status == AVAssetWriterStatusCompleted) + { + return; + } + + isRecording = NO; + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + alreadyFinishedRecording = YES; + + if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) + { + videoEncodingIsFinished = YES; + [assetWriterVideoInput markAsFinished]; + } + if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) + { + audioEncodingIsFinished = YES; + [assetWriterAudioInput markAsFinished]; + } + [assetWriter cancelWriting]; + }); +} + +- (void)finishRecording; +{ + [self finishRecordingWithCompletionHandler:NULL]; +} + +- (void)finishRecordingWithCompletionHandler:(void (^)(void))handler; +{ + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + isRecording = NO; + + if (assetWriter.status == AVAssetWriterStatusCompleted || assetWriter.status == AVAssetWriterStatusCancelled || assetWriter.status == AVAssetWriterStatusUnknown) + { + if (handler) + runAsynchronouslyOnContextQueue(_movieWriterContext, handler); + return; + } + if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) + { + videoEncodingIsFinished = YES; + [assetWriterVideoInput markAsFinished]; + } + if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) + { + audioEncodingIsFinished = YES; + [assetWriterAudioInput markAsFinished]; + } +#if (!defined(__IPHONE_6_0) || (__IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0)) + // Not iOS 6 SDK + [assetWriter finishWriting]; + if (handler) + runAsynchronouslyOnContextQueue(_movieWriterContext,handler); +#else + // iOS 6 SDK + if ([assetWriter respondsToSelector:@selector(finishWritingWithCompletionHandler:)]) { + // Running iOS 6 + [assetWriter finishWritingWithCompletionHandler:(handler ?: ^{ })]; + } + else { + // Not running iOS 6 +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [assetWriter finishWriting]; +#pragma clang diagnostic pop + if (handler) + runAsynchronouslyOnContextQueue(_movieWriterContext, handler); + } +#endif + }); +} + +- (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer; +{ + if (!isRecording || _paused) + { + return; + } + +// if (_hasAudioTrack && CMTIME_IS_VALID(startTime)) + if (_hasAudioTrack) + { + CFRetain(audioBuffer); + + CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(audioBuffer); + + if (CMTIME_IS_INVALID(startTime)) + { + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + if ((audioInputReadyCallback == NULL) && (assetWriter.status != AVAssetWriterStatusWriting)) + { + [assetWriter startWriting]; + } + [assetWriter startSessionAtSourceTime:currentSampleTime]; + startTime = currentSampleTime; + }); + } + + if (!assetWriterAudioInput.readyForMoreMediaData && _encodingLiveVideo) + { + NSLog(@"1: Had to drop an audio frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); + if (_shouldInvalidateAudioSampleWhenDone) + { + CMSampleBufferInvalidate(audioBuffer); + } + CFRelease(audioBuffer); + return; + } + + if (discont) { + discont = NO; + + CMTime current; + if (offsetTime.value > 0) { + current = CMTimeSubtract(currentSampleTime, offsetTime); + } else { + current = currentSampleTime; + } + + CMTime offset = CMTimeSubtract(current, previousAudioTime); + + if (offsetTime.value == 0) { + offsetTime = offset; + } else { + offsetTime = CMTimeAdd(offsetTime, offset); + } + } + + if (offsetTime.value > 0) { + CFRelease(audioBuffer); + audioBuffer = [self adjustTime:audioBuffer by:offsetTime]; + CFRetain(audioBuffer); + } + + // record most recent time so we know the length of the pause + currentSampleTime = CMSampleBufferGetPresentationTimeStamp(audioBuffer); + + previousAudioTime = currentSampleTime; + + //if the consumer wants to do something with the audio samples before writing, let him. + if (self.audioProcessingCallback) { + //need to introspect into the opaque CMBlockBuffer structure to find its raw sample buffers. + CMBlockBufferRef buffer = CMSampleBufferGetDataBuffer(audioBuffer); + CMItemCount numSamplesInBuffer = CMSampleBufferGetNumSamples(audioBuffer); + AudioBufferList audioBufferList; + + CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(audioBuffer, + NULL, + &audioBufferList, + sizeof(audioBufferList), + NULL, + NULL, + kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, + &buffer + ); + //passing a live pointer to the audio buffers, try to process them in-place or we might have syncing issues. + for (int bufferCount=0; bufferCount < audioBufferList.mNumberBuffers; bufferCount++) { + SInt16 *samples = (SInt16 *)audioBufferList.mBuffers[bufferCount].mData; + self.audioProcessingCallback(&samples, numSamplesInBuffer); + } + } + +// NSLog(@"Recorded audio sample time: %lld, %d, %lld", currentSampleTime.value, currentSampleTime.timescale, currentSampleTime.epoch); + void(^write)() = ^() { + while( ! assetWriterAudioInput.readyForMoreMediaData && ! _encodingLiveVideo && ! audioEncodingIsFinished ) { + NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.5]; + //NSLog(@"audio waiting..."); + [[NSRunLoop currentRunLoop] runUntilDate:maxDate]; + } + if (!assetWriterAudioInput.readyForMoreMediaData) + { + NSLog(@"2: Had to drop an audio frame %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); + } + else if(assetWriter.status == AVAssetWriterStatusWriting) + { + if (![assetWriterAudioInput appendSampleBuffer:audioBuffer]) + NSLog(@"Problem appending audio buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); + } + else + { + //NSLog(@"Wrote an audio frame %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); + } + + if (_shouldInvalidateAudioSampleWhenDone) + { + CMSampleBufferInvalidate(audioBuffer); + } + CFRelease(audioBuffer); + }; +// runAsynchronouslyOnContextQueue(_movieWriterContext, write); + if( _encodingLiveVideo ) + + { + runAsynchronouslyOnContextQueue(_movieWriterContext, write); + } + else + { + write(); + } + } +} + +- (void)enableSynchronizationCallbacks; +{ + if (videoInputReadyCallback != NULL) + { + if( assetWriter.status != AVAssetWriterStatusWriting ) + { + [assetWriter startWriting]; + } + videoQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.videoReadingQueue", GPUImageDefaultQueueAttribute()); + [assetWriterVideoInput requestMediaDataWhenReadyOnQueue:videoQueue usingBlock:^{ + if( _paused ) + { + //NSLog(@"video requestMediaDataWhenReadyOnQueue paused"); + // if we don't sleep, we'll get called back almost immediately, chewing up CPU + usleep(10000); + return; + } + //NSLog(@"video requestMediaDataWhenReadyOnQueue begin"); + while( assetWriterVideoInput.readyForMoreMediaData && ! _paused ) + { + if( videoInputReadyCallback && ! videoInputReadyCallback() && ! videoEncodingIsFinished ) + { + runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ + if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) + { + videoEncodingIsFinished = YES; + [assetWriterVideoInput markAsFinished]; + } + }); + } + } + //NSLog(@"video requestMediaDataWhenReadyOnQueue end"); + }]; + } + + if (audioInputReadyCallback != NULL) + { + audioQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.audioReadingQueue", GPUImageDefaultQueueAttribute()); + [assetWriterAudioInput requestMediaDataWhenReadyOnQueue:audioQueue usingBlock:^{ + if( _paused ) + { + //NSLog(@"audio requestMediaDataWhenReadyOnQueue paused"); + // if we don't sleep, we'll get called back almost immediately, chewing up CPU + usleep(10000); + return; + } + //NSLog(@"audio requestMediaDataWhenReadyOnQueue begin"); + while( assetWriterAudioInput.readyForMoreMediaData && ! _paused ) + { + if( audioInputReadyCallback && ! audioInputReadyCallback() && ! audioEncodingIsFinished ) + { + runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ + if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) + { + audioEncodingIsFinished = YES; + [assetWriterAudioInput markAsFinished]; + } + }); + } + } + //NSLog(@"audio requestMediaDataWhenReadyOnQueue end"); + }]; + } + +} + +#pragma mark - +#pragma mark Frame rendering + +- (void)createDataFBO; +{ + glActiveTexture(GL_TEXTURE1); + glGenFramebuffers(1, &movieFramebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, movieFramebuffer); + + if ([GPUImageContext supportsFastTextureUpload]) + { + // Code originally sourced from http://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/ + + + CVPixelBufferPoolCreatePixelBuffer (NULL, [assetWriterPixelBufferInput pixelBufferPool], &renderTarget); + + /* AVAssetWriter will use BT.601 conversion matrix for RGB to YCbCr conversion + * regardless of the kCVImageBufferYCbCrMatrixKey value. + * Tagging the resulting video file as BT.601, is the best option right now. + * Creating a proper BT.709 video is not possible at the moment. + */ + CVBufferSetAttachment(renderTarget, kCVImageBufferColorPrimariesKey, kCVImageBufferColorPrimaries_ITU_R_709_2, kCVAttachmentMode_ShouldPropagate); + CVBufferSetAttachment(renderTarget, kCVImageBufferYCbCrMatrixKey, kCVImageBufferYCbCrMatrix_ITU_R_601_4, kCVAttachmentMode_ShouldPropagate); + CVBufferSetAttachment(renderTarget, kCVImageBufferTransferFunctionKey, kCVImageBufferTransferFunction_ITU_R_709_2, kCVAttachmentMode_ShouldPropagate); + + CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault, [_movieWriterContext coreVideoTextureCache], renderTarget, + NULL, // texture attributes + GL_TEXTURE_2D, + GL_RGBA, // opengl format + (int)videoSize.width, + (int)videoSize.height, + GL_BGRA, // native iOS format + GL_UNSIGNED_BYTE, + 0, + &renderTexture); + + glBindTexture(CVOpenGLESTextureGetTarget(renderTexture), CVOpenGLESTextureGetName(renderTexture)); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); + } + else + { + glGenRenderbuffers(1, &movieRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, movieRenderbuffer); + glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, (int)videoSize.width, (int)videoSize.height); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, movieRenderbuffer); + } + + + __unused GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + + NSAssert(status == GL_FRAMEBUFFER_COMPLETE, @"Incomplete filter FBO: %d", status); +} + +- (void)destroyDataFBO; +{ + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + [_movieWriterContext useAsCurrentContext]; + + if (movieFramebuffer) + { + glDeleteFramebuffers(1, &movieFramebuffer); + movieFramebuffer = 0; + } + + if (movieRenderbuffer) + { + glDeleteRenderbuffers(1, &movieRenderbuffer); + movieRenderbuffer = 0; + } + + if ([GPUImageContext supportsFastTextureUpload]) + { + if (renderTexture) + { + CFRelease(renderTexture); + } + if (renderTarget) + { + CVPixelBufferRelease(renderTarget); + } + + } + }); +} + +- (void)setFilterFBO; +{ + if (!movieFramebuffer) + { + [self createDataFBO]; + } + + glBindFramebuffer(GL_FRAMEBUFFER, movieFramebuffer); + + glViewport(0, 0, (int)videoSize.width, (int)videoSize.height); +} + +- (void)renderAtInternalSizeUsingFramebuffer:(GPUImageFramebuffer *)inputFramebufferToUse; +{ + [_movieWriterContext useAsCurrentContext]; + [self setFilterFBO]; + + [_movieWriterContext setContextShaderProgram:colorSwizzlingProgram]; + + glClearColor(1.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // This needs to be flipped to write out to video correctly + static const GLfloat squareVertices[] = { + -1.0f, -1.0f, + 1.0f, -1.0f, + -1.0f, 1.0f, + 1.0f, 1.0f, + }; + + const GLfloat *textureCoordinates = [GPUImageFilter textureCoordinatesForRotation:inputRotation]; + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, [inputFramebufferToUse texture]); + glUniform1i(colorSwizzlingInputTextureUniform, 4); + +// NSLog(@"Movie writer framebuffer: %@", inputFramebufferToUse); + + glVertexAttribPointer(colorSwizzlingPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); + glVertexAttribPointer(colorSwizzlingTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glFinish(); +} + +#pragma mark - +#pragma mark GPUImageInput protocol + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + if (!isRecording || _paused) + { + [firstInputFramebuffer unlock]; + return; + } + + if (discont) { + discont = NO; + CMTime current; + + if (offsetTime.value > 0) { + current = CMTimeSubtract(frameTime, offsetTime); + } else { + current = frameTime; + } + + CMTime offset = CMTimeSubtract(current, previousFrameTime); + + if (offsetTime.value == 0) { + offsetTime = offset; + } else { + offsetTime = CMTimeAdd(offsetTime, offset); + } + } + + if (offsetTime.value > 0) { + frameTime = CMTimeSubtract(frameTime, offsetTime); + } + + // Drop frames forced by images and other things with no time constants + // Also, if two consecutive times with the same value are added to the movie, it aborts recording, so I bail on that case + if ( (CMTIME_IS_INVALID(frameTime)) || (CMTIME_COMPARE_INLINE(frameTime, ==, previousFrameTime)) || (CMTIME_IS_INDEFINITE(frameTime)) ) + { + [firstInputFramebuffer unlock]; + return; + } + + if (CMTIME_IS_INVALID(startTime)) + { + runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + if ((videoInputReadyCallback == NULL) && (assetWriter.status != AVAssetWriterStatusWriting)) + { + [assetWriter startWriting]; + } + + [assetWriter startSessionAtSourceTime:frameTime]; + startTime = frameTime; + }); + } + + GPUImageFramebuffer *inputFramebufferForBlock = firstInputFramebuffer; + glFinish(); + + runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ + if (!assetWriterVideoInput.readyForMoreMediaData && _encodingLiveVideo) + { + [inputFramebufferForBlock unlock]; + NSLog(@"1: Had to drop a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); + return; + } + + // Render the frame with swizzled colors, so that they can be uploaded quickly as BGRA frames + [_movieWriterContext useAsCurrentContext]; + [self renderAtInternalSizeUsingFramebuffer:inputFramebufferForBlock]; + + CVPixelBufferRef pixel_buffer = NULL; + + if ([GPUImageContext supportsFastTextureUpload]) + { + pixel_buffer = renderTarget; + CVPixelBufferLockBaseAddress(pixel_buffer, 0); + } + else + { + CVReturn status = CVPixelBufferPoolCreatePixelBuffer (NULL, [assetWriterPixelBufferInput pixelBufferPool], &pixel_buffer); + if ((pixel_buffer == NULL) || (status != kCVReturnSuccess)) + { + CVPixelBufferRelease(pixel_buffer); + return; + } + else + { + CVPixelBufferLockBaseAddress(pixel_buffer, 0); + + GLubyte *pixelBufferData = (GLubyte *)CVPixelBufferGetBaseAddress(pixel_buffer); + glReadPixels(0, 0, videoSize.width, videoSize.height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBufferData); + } + } + + void(^write)() = ^() { + while( ! assetWriterVideoInput.readyForMoreMediaData && ! _encodingLiveVideo && ! videoEncodingIsFinished ) { + NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.1]; + // NSLog(@"video waiting..."); + [[NSRunLoop currentRunLoop] runUntilDate:maxDate]; + } + if (!assetWriterVideoInput.readyForMoreMediaData) + { + NSLog(@"2: Had to drop a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); + } + else if(self.assetWriter.status == AVAssetWriterStatusWriting) + { + if (![assetWriterPixelBufferInput appendPixelBuffer:pixel_buffer withPresentationTime:frameTime]) + NSLog(@"Problem appending pixel buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); + } + else + { + NSLog(@"Couldn't write a frame"); + //NSLog(@"Wrote a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); + } + CVPixelBufferUnlockBaseAddress(pixel_buffer, 0); + + previousFrameTime = frameTime; + + if (![GPUImageContext supportsFastTextureUpload]) + { + CVPixelBufferRelease(pixel_buffer); + } + }; + + write(); + + [inputFramebufferForBlock unlock]; + }); +} + +- (NSInteger)nextAvailableTextureIndex; +{ + return 0; +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + [newInputFramebuffer lock]; +// runSynchronouslyOnContextQueue(_movieWriterContext, ^{ + firstInputFramebuffer = newInputFramebuffer; +// }); +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + inputRotation = newInputRotation; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ +} + +- (CGSize)maximumOutputSize; +{ + return videoSize; +} + +- (void)endProcessing +{ + if (completionBlock) + { + if (!alreadyFinishedRecording) + { + alreadyFinishedRecording = YES; + completionBlock(); + } + } + else + { + if (_delegate && [_delegate respondsToSelector:@selector(movieRecordingCompleted)]) + { + [_delegate movieRecordingCompleted]; + } + } +} + +- (BOOL)shouldIgnoreUpdatesToThisTarget; +{ + return NO; +} + +- (BOOL)wantsMonochromeInput; +{ + return NO; +} + +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; +{ + +} + +#pragma mark - +#pragma mark Accessors + +- (void)setHasAudioTrack:(BOOL)newValue +{ + [self setHasAudioTrack:newValue audioSettings:nil]; +} + +- (void)setHasAudioTrack:(BOOL)newValue audioSettings:(NSDictionary *)audioOutputSettings; +{ + _hasAudioTrack = newValue; + + if (_hasAudioTrack) + { + if (_shouldPassthroughAudio) + { + // Do not set any settings so audio will be the same as passthrough + audioOutputSettings = nil; + } + else if (audioOutputSettings == nil) + { + AVAudioSession *sharedAudioSession = [AVAudioSession sharedInstance]; + double preferredHardwareSampleRate; + + if ([sharedAudioSession respondsToSelector:@selector(sampleRate)]) + { + preferredHardwareSampleRate = [sharedAudioSession sampleRate]; + } + else + { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + preferredHardwareSampleRate = [[AVAudioSession sharedInstance] currentHardwareSampleRate]; +#pragma clang diagnostic pop + } + + AudioChannelLayout acl; + bzero( &acl, sizeof(acl)); + acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; + + audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys: + [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, + [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey, + [ NSNumber numberWithFloat: preferredHardwareSampleRate ], AVSampleRateKey, + [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey, + //[ NSNumber numberWithInt:AVAudioQualityLow], AVEncoderAudioQualityKey, + [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey, + nil]; +/* + AudioChannelLayout acl; + bzero( &acl, sizeof(acl)); + acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; + + audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys: + [ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey, + [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey, + [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey, + [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey, + [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey, + nil];*/ + } + + assetWriterAudioInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings]; + [assetWriter addInput:assetWriterAudioInput]; + assetWriterAudioInput.expectsMediaDataInRealTime = _encodingLiveVideo; + } + else + { + // Remove audio track if it exists + } +} + +- (NSArray*)metaData { + return assetWriter.metadata; +} + +- (void)setMetaData:(NSArray*)metaData { + assetWriter.metadata = metaData; +} + +- (CMTime)duration { + if( ! CMTIME_IS_VALID(startTime) ) + return kCMTimeZero; + if( ! CMTIME_IS_NEGATIVE_INFINITY(previousFrameTime) ) + return CMTimeSubtract(previousFrameTime, startTime); + if( ! CMTIME_IS_NEGATIVE_INFINITY(previousAudioTime) ) + return CMTimeSubtract(previousAudioTime, startTime); + return kCMTimeZero; +} + +- (CGAffineTransform)transform { + return assetWriterVideoInput.transform; +} + +- (void)setTransform:(CGAffineTransform)transform { + assetWriterVideoInput.transform = transform; +} + +- (AVAssetWriter*)assetWriter { + return assetWriter; +} + +- (void)setPaused:(BOOL)newValue { + if (_paused != newValue) { + _paused = newValue; + + if (_paused) { + discont = YES; + } + } +} + +- (CMSampleBufferRef)adjustTime:(CMSampleBufferRef) sample by:(CMTime) offset { + CMItemCount count; + CMSampleBufferGetSampleTimingInfoArray(sample, 0, nil, &count); + CMSampleTimingInfo* pInfo = malloc(sizeof(CMSampleTimingInfo) * count); + CMSampleBufferGetSampleTimingInfoArray(sample, count, pInfo, &count); + + for (CMItemCount i = 0; i < count; i++) { + pInfo[i].decodeTimeStamp = CMTimeSubtract(pInfo[i].decodeTimeStamp, offset); + pInfo[i].presentationTimeStamp = CMTimeSubtract(pInfo[i].presentationTimeStamp, offset); + } + + CMSampleBufferRef sout; + CMSampleBufferCreateCopyWithNewTiming(nil, sample, count, pInfo, &sout); + free(pInfo); + + return sout; +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.h b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.h new file mode 100644 index 00000000..03c631bc --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.h @@ -0,0 +1,19 @@ +// +// GPUImagePicture+TextureSubimage.h +// GPUImage +// +// Created by Jack Wu on 2014-05-28. +// Copyright (c) 2014 Brad Larson. All rights reserved. +// + +#import "GPUImagePicture.h" + +@interface GPUImagePicture (TextureSubimage) + +- (void)replaceTextureWithSubimage:(UIImage*)subimage; +- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource; + +- (void)replaceTextureWithSubimage:(UIImage*)subimage inRect:(CGRect)subRect; +- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource inRect:(CGRect)subRect; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m new file mode 100644 index 00000000..71ef8f97 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m @@ -0,0 +1,103 @@ +// +// GPUImagePicture+TextureSubimage.m +// GPUImage +// +// Created by Jack Wu on 2014-05-28. +// Copyright (c) 2014 Brad Larson. All rights reserved. +// + +#import "GPUImagePicture+TextureSubimage.h" + +@implementation GPUImagePicture (TextureSubimage) + +- (void)replaceTextureWithSubimage:(UIImage*)subimage { + return [self replaceTextureWithSubCGImage:[subimage CGImage]]; +} + +- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource { + CGRect rect = (CGRect) {.origin = CGPointZero, .size = (CGSize){.width = CGImageGetWidth(subimageSource), .height = CGImageGetHeight(subimageSource)}}; + return [self replaceTextureWithSubCGImage:subimageSource inRect:rect]; +} + +- (void)replaceTextureWithSubimage:(UIImage*)subimage inRect:(CGRect)subRect { + return [self replaceTextureWithSubCGImage:[subimage CGImage] inRect:subRect]; +} + +- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource inRect:(CGRect)subRect { + NSAssert(outputFramebuffer, @"Picture must be initialized first before replacing subtexture"); + NSAssert(self.framebufferForOutput.textureOptions.internalFormat == GL_RGBA, @"For replacing subtexture the internal texture format must be GL_RGBA."); + + CGRect subimageRect = (CGRect){.origin = CGPointZero, .size = (CGSize){.width = CGImageGetWidth(subimageSource), .height = CGImageGetHeight(subimageSource)}}; + NSAssert(!CGRectIsEmpty(subimageRect), @"Passed sub image must not be empty - it should be at least 1px tall and wide"); + NSAssert(!CGRectIsEmpty(subRect), @"Passed sub rect must not be empty"); + + NSAssert(CGSizeEqualToSize(subimageRect.size, subRect.size), @"Subimage size must match the size of sub rect"); + + // We don't have to worry about scaling the subimage or finding a power of two size. + // The initialization has taken care of that for us. + + dispatch_semaphore_signal(imageUpdateSemaphore); + + BOOL shouldRedrawUsingCoreGraphics = NO; + + // Since internal format is always RGBA, we need the input data in RGBA as well. + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(subimageSource); + CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; + if (byteOrderInfo != kCGBitmapByteOrderDefault && byteOrderInfo != kCGBitmapByteOrder32Big) { + shouldRedrawUsingCoreGraphics = YES; + } + else { + CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; + if (alphaInfo != kCGImageAlphaPremultipliedLast && alphaInfo != kCGImageAlphaLast && alphaInfo != kCGImageAlphaNoneSkipLast) { + shouldRedrawUsingCoreGraphics = YES; + } + } + + GLubyte *imageData = NULL; + CFDataRef dataFromImageDataProvider; + if (shouldRedrawUsingCoreGraphics) + { + // For resized or incompatible image: redraw + imageData = (GLubyte *) calloc(1, (int)subimageRect.size.width * (int)subimageRect.size.height * 4); + + CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); + + CGContextRef imageContext = CGBitmapContextCreate(imageData, (size_t)subimageRect.size.width, (size_t)subimageRect.size.height, 8, (size_t)subimageRect.size.width * 4, genericRGBColorspace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast); + + CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, subimageRect.size.width, subimageRect.size.height), subimageSource); + CGContextRelease(imageContext); + CGColorSpaceRelease(genericRGBColorspace); + } + else + { + // Access the raw image bytes directly + dataFromImageDataProvider = CGDataProviderCopyData(CGImageGetDataProvider(subimageSource)); + imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider); + } + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + [outputFramebuffer disableReferenceCounting]; + + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + + // no need to use self.outputTextureOptions here since pictures need this texture formats and type + glTexSubImage2D(GL_TEXTURE_2D, 0, subRect.origin.x, subRect.origin.y, (GLint)subRect.size.width, subRect.size.height, GL_RGBA, GL_UNSIGNED_BYTE, imageData); + + if (self.shouldSmoothlyScaleOutput) + { + glGenerateMipmap(GL_TEXTURE_2D); + } + glBindTexture(GL_TEXTURE_2D, 0); + }); + + if (shouldRedrawUsingCoreGraphics) + { + free(imageData); + } + else + { + CFRelease(dataFromImageDataProvider); + } +} +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.h b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.h new file mode 100755 index 00000000..4c4b9942 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.h @@ -0,0 +1,38 @@ +#import +#import "GPUImageOutput.h" + + +@interface GPUImagePicture : GPUImageOutput +{ + CGSize pixelSizeOfImage; + BOOL hasProcessedImage; + + dispatch_semaphore_t imageUpdateSemaphore; +} + +// Initialization and teardown +- (id)initWithURL:(NSURL *)url; +- (id)initWithImage:(UIImage *)newImageSource; +- (id)initWithCGImage:(CGImageRef)newImageSource; +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; +- (id)initWithImage:(UIImage *)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; + +// Image rendering +- (void)processImage; +- (CGSize)outputImageSize; + +/** + * Process image with all targets and filters asynchronously + * The completion handler is called after processing finished in the + * GPU's dispatch queue - and only if this method did not return NO. + * + * @returns NO if resource is blocked and processing is discarded, YES otherwise + */ +- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion; +- (void)processImageUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage))block; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m new file mode 100755 index 00000000..c525f4dc --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m @@ -0,0 +1,371 @@ +#import "GPUImagePicture.h" + +@implementation GPUImagePicture + +#pragma mark - +#pragma mark Initialization and teardown + +- (id)initWithURL:(NSURL *)url; +{ + NSData *imageData = [[NSData alloc] initWithContentsOfURL:url]; + + if (!(self = [self initWithData:imageData])) + { + return nil; + } + + return self; +} + +- (id)initWithData:(NSData *)imageData; +{ + UIImage *inputImage = [[UIImage alloc] initWithData:imageData]; + + if (!(self = [self initWithImage:inputImage])) + { + return nil; + } + + return self; +} + +- (id)initWithImage:(UIImage *)newImageSource; +{ + if (!(self = [self initWithImage:newImageSource smoothlyScaleOutput:NO])) + { + return nil; + } + + return self; +} + +- (id)initWithCGImage:(CGImageRef)newImageSource; +{ + if (!(self = [self initWithCGImage:newImageSource smoothlyScaleOutput:NO])) + { + return nil; + } + return self; +} + +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; +{ + return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:smoothlyScaleOutput]; +} + +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; +{ + return [self initWithCGImage:newImageSource smoothlyScaleOutput:smoothlyScaleOutput removePremultiplication:NO]; +} + +- (id)initWithImage:(UIImage *)newImageSource removePremultiplication:(BOOL)removePremultiplication; +{ + return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:NO removePremultiplication:removePremultiplication]; +} + +- (id)initWithCGImage:(CGImageRef)newImageSource removePremultiplication:(BOOL)removePremultiplication; +{ + return [self initWithCGImage:newImageSource smoothlyScaleOutput:NO removePremultiplication:removePremultiplication]; +} + +- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; +{ + return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:smoothlyScaleOutput removePremultiplication:removePremultiplication]; +} + +- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; +{ + if (!(self = [super init])) + { + return nil; + } + + hasProcessedImage = NO; + self.shouldSmoothlyScaleOutput = smoothlyScaleOutput; + imageUpdateSemaphore = dispatch_semaphore_create(0); + dispatch_semaphore_signal(imageUpdateSemaphore); + + + // TODO: Dispatch this whole thing asynchronously to move image loading off main thread + CGFloat widthOfImage = CGImageGetWidth(newImageSource); + CGFloat heightOfImage = CGImageGetHeight(newImageSource); + + // If passed an empty image reference, CGContextDrawImage will fail in future versions of the SDK. + NSAssert( widthOfImage > 0 && heightOfImage > 0, @"Passed image must not be empty - it should be at least 1px tall and wide"); + + pixelSizeOfImage = CGSizeMake(widthOfImage, heightOfImage); + CGSize pixelSizeToUseForTexture = pixelSizeOfImage; + + BOOL shouldRedrawUsingCoreGraphics = NO; + + // For now, deal with images larger than the maximum texture size by resizing to be within that limit + CGSize scaledImageSizeToFitOnGPU = [GPUImageContext sizeThatFitsWithinATextureForSize:pixelSizeOfImage]; + if (!CGSizeEqualToSize(scaledImageSizeToFitOnGPU, pixelSizeOfImage)) + { + pixelSizeOfImage = scaledImageSizeToFitOnGPU; + pixelSizeToUseForTexture = pixelSizeOfImage; + shouldRedrawUsingCoreGraphics = YES; + } + + if (self.shouldSmoothlyScaleOutput) + { + // In order to use mipmaps, you need to provide power-of-two textures, so convert to the next largest power of two and stretch to fill + CGFloat powerClosestToWidth = ceil(log2(pixelSizeOfImage.width)); + CGFloat powerClosestToHeight = ceil(log2(pixelSizeOfImage.height)); + + pixelSizeToUseForTexture = CGSizeMake(pow(2.0, powerClosestToWidth), pow(2.0, powerClosestToHeight)); + + shouldRedrawUsingCoreGraphics = YES; + } + + GLubyte *imageData = NULL; + CFDataRef dataFromImageDataProvider = NULL; + GLenum format = GL_BGRA; + BOOL isLitteEndian = YES; + BOOL alphaFirst = NO; + BOOL premultiplied = NO; + + if (!shouldRedrawUsingCoreGraphics) { + /* Check that the memory layout is compatible with GL, as we cannot use glPixelStore to + * tell GL about the memory layout with GLES. + */ + if (CGImageGetBytesPerRow(newImageSource) != CGImageGetWidth(newImageSource) * 4 || + CGImageGetBitsPerPixel(newImageSource) != 32 || + CGImageGetBitsPerComponent(newImageSource) != 8) + { + shouldRedrawUsingCoreGraphics = YES; + } else { + /* Check that the bitmap pixel format is compatible with GL */ + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(newImageSource); + if ((bitmapInfo & kCGBitmapFloatComponents) != 0) { + /* We don't support float components for use directly in GL */ + shouldRedrawUsingCoreGraphics = YES; + } else { + CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; + if (byteOrderInfo == kCGBitmapByteOrder32Little) { + /* Little endian, for alpha-first we can use this bitmap directly in GL */ + CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; + if (alphaInfo != kCGImageAlphaPremultipliedFirst && alphaInfo != kCGImageAlphaFirst && + alphaInfo != kCGImageAlphaNoneSkipFirst) { + shouldRedrawUsingCoreGraphics = YES; + } + } else if (byteOrderInfo == kCGBitmapByteOrderDefault || byteOrderInfo == kCGBitmapByteOrder32Big) { + isLitteEndian = NO; + /* Big endian, for alpha-last we can use this bitmap directly in GL */ + CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; + if (alphaInfo != kCGImageAlphaPremultipliedLast && alphaInfo != kCGImageAlphaLast && + alphaInfo != kCGImageAlphaNoneSkipLast) { + shouldRedrawUsingCoreGraphics = YES; + } else { + /* Can access directly using GL_RGBA pixel format */ + premultiplied = alphaInfo == kCGImageAlphaPremultipliedLast || alphaInfo == kCGImageAlphaPremultipliedLast; + alphaFirst = alphaInfo == kCGImageAlphaFirst || alphaInfo == kCGImageAlphaPremultipliedFirst; + format = GL_RGBA; + } + } + } + } + } + + // CFAbsoluteTime elapsedTime, startTime = CFAbsoluteTimeGetCurrent(); + + if (shouldRedrawUsingCoreGraphics) + { + // For resized or incompatible image: redraw + imageData = (GLubyte *) calloc(1, (int)pixelSizeToUseForTexture.width * (int)pixelSizeToUseForTexture.height * 4); + + CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); + + CGContextRef imageContext = CGBitmapContextCreate(imageData, (size_t)pixelSizeToUseForTexture.width, (size_t)pixelSizeToUseForTexture.height, 8, (size_t)pixelSizeToUseForTexture.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); + // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html + CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, pixelSizeToUseForTexture.width, pixelSizeToUseForTexture.height), newImageSource); + CGContextRelease(imageContext); + CGColorSpaceRelease(genericRGBColorspace); + isLitteEndian = YES; + alphaFirst = YES; + premultiplied = YES; + } + else + { + // Access the raw image bytes directly + dataFromImageDataProvider = CGDataProviderCopyData(CGImageGetDataProvider(newImageSource)); + imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider); + } + + if (removePremultiplication && premultiplied) { + NSUInteger totalNumberOfPixels = round(pixelSizeToUseForTexture.width * pixelSizeToUseForTexture.height); + uint32_t *pixelP = (uint32_t *)imageData; + uint32_t pixel; + CGFloat srcR, srcG, srcB, srcA; + + for (NSUInteger idx=0; idx> 24) / 255.0f; + } + else { + srcA = (CGFloat)(pixel & 0x000000ff) / 255.0f; + pixel >>= 8; + } + + srcR = (CGFloat)((pixel & 0x00ff0000) >> 16) / 255.0f; + srcG = (CGFloat)((pixel & 0x0000ff00) >> 8) / 255.0f; + srcB = (CGFloat)(pixel & 0x000000ff) / 255.0f; + + srcR /= srcA; srcG /= srcA; srcB /= srcA; + + pixel = (uint32_t)(srcR * 255.0) << 16; + pixel |= (uint32_t)(srcG * 255.0) << 8; + pixel |= (uint32_t)(srcB * 255.0); + + if (alphaFirst) { + pixel |= (uint32_t)(srcA * 255.0) << 24; + } + else { + pixel <<= 8; + pixel |= (uint32_t)(srcA * 255.0); + } + *pixelP = isLitteEndian ? CFSwapInt32HostToLittle(pixel) : CFSwapInt32HostToBig(pixel); + } + } + + // elapsedTime = (CFAbsoluteTimeGetCurrent() - startTime) * 1000.0; + // NSLog(@"Core Graphics drawing time: %f", elapsedTime); + + // CGFloat currentRedTotal = 0.0f, currentGreenTotal = 0.0f, currentBlueTotal = 0.0f, currentAlphaTotal = 0.0f; + // NSUInteger totalNumberOfPixels = round(pixelSizeToUseForTexture.width * pixelSizeToUseForTexture.height); + // + // for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) + // { + // currentBlueTotal += (CGFloat)imageData[(currentPixel * 4)] / 255.0f; + // currentGreenTotal += (CGFloat)imageData[(currentPixel * 4) + 1] / 255.0f; + // currentRedTotal += (CGFloat)imageData[(currentPixel * 4 + 2)] / 255.0f; + // currentAlphaTotal += (CGFloat)imageData[(currentPixel * 4) + 3] / 255.0f; + // } + // + // NSLog(@"Debug, average input image red: %f, green: %f, blue: %f, alpha: %f", currentRedTotal / (CGFloat)totalNumberOfPixels, currentGreenTotal / (CGFloat)totalNumberOfPixels, currentBlueTotal / (CGFloat)totalNumberOfPixels, currentAlphaTotal / (CGFloat)totalNumberOfPixels); + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:pixelSizeToUseForTexture onlyTexture:YES]; + [outputFramebuffer disableReferenceCounting]; + + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); + if (self.shouldSmoothlyScaleOutput) + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + } + // no need to use self.outputTextureOptions here since pictures need this texture formats and type + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)pixelSizeToUseForTexture.width, (int)pixelSizeToUseForTexture.height, 0, format, GL_UNSIGNED_BYTE, imageData); + + if (self.shouldSmoothlyScaleOutput) + { + glGenerateMipmap(GL_TEXTURE_2D); + } + glBindTexture(GL_TEXTURE_2D, 0); + }); + + if (shouldRedrawUsingCoreGraphics) + { + free(imageData); + } + else + { + if (dataFromImageDataProvider) + { + CFRelease(dataFromImageDataProvider); + } + } + + return self; +} + +// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. +- (void)dealloc; +{ + [outputFramebuffer enableReferenceCounting]; + [outputFramebuffer unlock]; + +#if !OS_OBJECT_USE_OBJC + if (imageUpdateSemaphore != NULL) + { + dispatch_release(imageUpdateSemaphore); + } +#endif +} + +#pragma mark - +#pragma mark Image rendering + +- (void)removeAllTargets; +{ + [super removeAllTargets]; + hasProcessedImage = NO; +} + +- (void)processImage; +{ + [self processImageWithCompletionHandler:nil]; +} + +- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion; +{ + hasProcessedImage = YES; + + // dispatch_semaphore_wait(imageUpdateSemaphore, DISPATCH_TIME_FOREVER); + + if (dispatch_semaphore_wait(imageUpdateSemaphore, DISPATCH_TIME_NOW) != 0) + { + return NO; + } + + runAsynchronouslyOnVideoProcessingQueue(^{ + for (id currentTarget in targets) + { + NSInteger indexOfObject = [targets indexOfObject:currentTarget]; + NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; + + [currentTarget setCurrentlyReceivingMonochromeInput:NO]; + [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; + [currentTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureIndexOfTarget]; + } + + dispatch_semaphore_signal(imageUpdateSemaphore); + + if (completion != nil) { + completion(); + } + }); + + return YES; +} + +- (void)processImageUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage))block; +{ + [finalFilterInChain useNextFrameForImageCapture]; + [self processImageWithCompletionHandler:^{ + UIImage *imageFromFilter = [finalFilterInChain imageFromCurrentFramebuffer]; + block(imageFromFilter); + }]; +} + +- (CGSize)outputImageSize; +{ + return pixelSizeOfImage; +} + +- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; +{ + [super addTarget:newTarget atTextureLocation:textureLocation]; + + if (hasProcessedImage) + { + [newTarget setInputSize:pixelSizeOfImage atIndex:textureLocation]; + [newTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureLocation]; + } +} + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h new file mode 100755 index 00000000..b42651d3 --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h @@ -0,0 +1,41 @@ +#import +#import "GPUImageContext.h" + +typedef NS_ENUM(NSUInteger, GPUImageFillModeType) { + kGPUImageFillModeStretch, // Stretch to fill the full view, which may distort the image outside of its normal aspect ratio + kGPUImageFillModePreserveAspectRatio, // Maintains the aspect ratio of the source image, adding bars of the specified background color + kGPUImageFillModePreserveAspectRatioAndFill // Maintains the aspect ratio of the source image, zooming in on its center to fill the view +}; + + + +/** + UIView subclass to use as an endpoint for displaying GPUImage outputs + */ +@interface GPUImageView : UIView +{ + GPUImageRotationMode inputRotation; +} + +/** The fill mode dictates how images are fit in the view, with the default being kGPUImageFillModePreserveAspectRatio + */ +@property(readwrite, nonatomic) GPUImageFillModeType fillMode; + +/** This calculates the current display size, in pixels, taking into account Retina scaling factors + */ +@property(readonly, nonatomic) CGSize sizeInPixels; + +@property(nonatomic) BOOL enabled; + +/** Handling fill mode + + @param redComponent Red component for background color + @param greenComponent Green component for background color + @param blueComponent Blue component for background color + @param alphaComponent Alpha component for background color + */ +- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; + +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; + +@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m new file mode 100755 index 00000000..e092b80e --- /dev/null +++ b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m @@ -0,0 +1,484 @@ +#import "GPUImageView.h" +#import +#import +#import "GPUImageContext.h" +#import "GPUImageFilter.h" +#import + +#pragma mark - +#pragma mark Private methods and instance variables + +@interface GPUImageView () +{ + GPUImageFramebuffer *inputFramebufferForDisplay; + GLuint displayRenderbuffer, displayFramebuffer; + + GLProgram *displayProgram; + GLint displayPositionAttribute, displayTextureCoordinateAttribute; + GLint displayInputTextureUniform; + + CGSize inputImageSize; + GLfloat imageVertices[8]; + GLfloat backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha; + + CGSize boundsSizeAtFrameBufferEpoch; +} + +@property (assign, nonatomic) NSUInteger aspectRatio; + +// Initialization and teardown +- (void)commonInit; + +// Managing the display FBOs +- (void)createDisplayFramebuffer; +- (void)destroyDisplayFramebuffer; + +// Handling fill mode +- (void)recalculateViewGeometry; + +@end + +@implementation GPUImageView + +@synthesize aspectRatio; +@synthesize sizeInPixels = _sizeInPixels; +@synthesize fillMode = _fillMode; +@synthesize enabled; + +#pragma mark - +#pragma mark Initialization and teardown + ++ (Class)layerClass +{ + return [CAEAGLLayer class]; +} + +- (id)initWithFrame:(CGRect)frame +{ + if (!(self = [super initWithFrame:frame])) + { + return nil; + } + + [self commonInit]; + + return self; +} + +-(id)initWithCoder:(NSCoder *)coder +{ + if (!(self = [super initWithCoder:coder])) + { + return nil; + } + + [self commonInit]; + + return self; +} + +- (void)commonInit; +{ + // Set scaling to account for Retina display + if ([self respondsToSelector:@selector(setContentScaleFactor:)]) + { + self.contentScaleFactor = [[UIScreen mainScreen] scale]; + } + + inputRotation = kGPUImageNoRotation; + self.opaque = YES; + self.hidden = NO; + CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; + eaglLayer.opaque = YES; + eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; + + self.enabled = YES; + + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext useImageProcessingContext]; + + displayProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; + if (!displayProgram.initialized) + { + [displayProgram addAttribute:@"position"]; + [displayProgram addAttribute:@"inputTextureCoordinate"]; + + if (![displayProgram link]) + { + NSString *progLog = [displayProgram programLog]; + NSLog(@"Program link log: %@", progLog); + NSString *fragLog = [displayProgram fragmentShaderLog]; + NSLog(@"Fragment shader compile log: %@", fragLog); + NSString *vertLog = [displayProgram vertexShaderLog]; + NSLog(@"Vertex shader compile log: %@", vertLog); + displayProgram = nil; + NSAssert(NO, @"Filter shader link failed"); + } + } + + displayPositionAttribute = [displayProgram attributeIndex:@"position"]; + displayTextureCoordinateAttribute = [displayProgram attributeIndex:@"inputTextureCoordinate"]; + displayInputTextureUniform = [displayProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputTexture" for the fragment shader + + [GPUImageContext setActiveShaderProgram:displayProgram]; + glEnableVertexAttribArray(displayPositionAttribute); + glEnableVertexAttribArray(displayTextureCoordinateAttribute); + + [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:1.0]; + _fillMode = kGPUImageFillModePreserveAspectRatio; + [self createDisplayFramebuffer]; + }); +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + // The frame buffer needs to be trashed and re-created when the view size changes. + if (!CGSizeEqualToSize(self.bounds.size, boundsSizeAtFrameBufferEpoch) && + !CGSizeEqualToSize(self.bounds.size, CGSizeZero)) { + runSynchronouslyOnVideoProcessingQueue(^{ + [self destroyDisplayFramebuffer]; + [self createDisplayFramebuffer]; + }); + } else if (!CGSizeEqualToSize(self.bounds.size, CGSizeZero)) { + [self recalculateViewGeometry]; + } +} + +- (void)dealloc +{ + runSynchronouslyOnVideoProcessingQueue(^{ + [self destroyDisplayFramebuffer]; + }); +} + +#pragma mark - +#pragma mark Managing the display FBOs + +- (void)createDisplayFramebuffer; +{ + [GPUImageContext useImageProcessingContext]; + + glGenFramebuffers(1, &displayFramebuffer); + glBindFramebuffer(GL_FRAMEBUFFER, displayFramebuffer); + + glGenRenderbuffers(1, &displayRenderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, displayRenderbuffer); + + [[[GPUImageContext sharedImageProcessingContext] context] renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer]; + + GLint backingWidth, backingHeight; + + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight); + + if ( (backingWidth == 0) || (backingHeight == 0) ) + { + [self destroyDisplayFramebuffer]; + return; + } + + _sizeInPixels.width = (CGFloat)backingWidth; + _sizeInPixels.height = (CGFloat)backingHeight; + +// NSLog(@"Backing width: %d, height: %d", backingWidth, backingHeight); + + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, displayRenderbuffer); + + __unused GLuint framebufferCreationStatus = glCheckFramebufferStatus(GL_FRAMEBUFFER); + NSAssert(framebufferCreationStatus == GL_FRAMEBUFFER_COMPLETE, @"Failure with display framebuffer generation for display of size: %f, %f", self.bounds.size.width, self.bounds.size.height); + boundsSizeAtFrameBufferEpoch = self.bounds.size; + + [self recalculateViewGeometry]; +} + +- (void)destroyDisplayFramebuffer; +{ + [GPUImageContext useImageProcessingContext]; + + if (displayFramebuffer) + { + glDeleteFramebuffers(1, &displayFramebuffer); + displayFramebuffer = 0; + } + + if (displayRenderbuffer) + { + glDeleteRenderbuffers(1, &displayRenderbuffer); + displayRenderbuffer = 0; + } +} + +- (void)setDisplayFramebuffer; +{ + if (!displayFramebuffer) + { + [self createDisplayFramebuffer]; + } + + glBindFramebuffer(GL_FRAMEBUFFER, displayFramebuffer); + + glViewport(0, 0, (GLint)_sizeInPixels.width, (GLint)_sizeInPixels.height); +} + +- (void)presentFramebuffer; +{ + glBindRenderbuffer(GL_RENDERBUFFER, displayRenderbuffer); + [[GPUImageContext sharedImageProcessingContext] presentBufferForDisplay]; +} + +#pragma mark - +#pragma mark Handling fill mode + +- (void)recalculateViewGeometry; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + CGFloat heightScaling, widthScaling; + + CGSize currentViewSize = self.bounds.size; + + // CGFloat imageAspectRatio = inputImageSize.width / inputImageSize.height; + // CGFloat viewAspectRatio = currentViewSize.width / currentViewSize.height; + + CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(inputImageSize, self.bounds); + + switch(_fillMode) + { + case kGPUImageFillModeStretch: + { + widthScaling = 1.0; + heightScaling = 1.0; + }; break; + case kGPUImageFillModePreserveAspectRatio: + { + widthScaling = insetRect.size.width / currentViewSize.width; + heightScaling = insetRect.size.height / currentViewSize.height; + }; break; + case kGPUImageFillModePreserveAspectRatioAndFill: + { + // CGFloat widthHolder = insetRect.size.width / currentViewSize.width; + widthScaling = currentViewSize.height / insetRect.size.height; + heightScaling = currentViewSize.width / insetRect.size.width; + }; break; + } + + imageVertices[0] = -widthScaling; + imageVertices[1] = -heightScaling; + imageVertices[2] = widthScaling; + imageVertices[3] = -heightScaling; + imageVertices[4] = -widthScaling; + imageVertices[5] = heightScaling; + imageVertices[6] = widthScaling; + imageVertices[7] = heightScaling; + }); + +// static const GLfloat imageVertices[] = { +// -1.0f, -1.0f, +// 1.0f, -1.0f, +// -1.0f, 1.0f, +// 1.0f, 1.0f, +// }; +} + +- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; +{ + backgroundColorRed = redComponent; + backgroundColorGreen = greenComponent; + backgroundColorBlue = blueComponent; + backgroundColorAlpha = alphaComponent; +} + ++ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; +{ +// static const GLfloat noRotationTextureCoordinates[] = { +// 0.0f, 0.0f, +// 1.0f, 0.0f, +// 0.0f, 1.0f, +// 1.0f, 1.0f, +// }; + + static const GLfloat noRotationTextureCoordinates[] = { + 0.0f, 1.0f, + 1.0f, 1.0f, + 0.0f, 0.0f, + 1.0f, 0.0f, + }; + + static const GLfloat rotateRightTextureCoordinates[] = { + 1.0f, 1.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 0.0f, 0.0f, + }; + + static const GLfloat rotateLeftTextureCoordinates[] = { + 0.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 0.0f, + 1.0f, 1.0f, + }; + + static const GLfloat verticalFlipTextureCoordinates[] = { + 0.0f, 0.0f, + 1.0f, 0.0f, + 0.0f, 1.0f, + 1.0f, 1.0f, + }; + + static const GLfloat horizontalFlipTextureCoordinates[] = { + 1.0f, 1.0f, + 0.0f, 1.0f, + 1.0f, 0.0f, + 0.0f, 0.0f, + }; + + static const GLfloat rotateRightVerticalFlipTextureCoordinates[] = { + 1.0f, 0.0f, + 1.0f, 1.0f, + 0.0f, 0.0f, + 0.0f, 1.0f, + }; + + static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = { + 0.0f, 1.0f, + 0.0f, 0.0f, + 1.0f, 1.0f, + 1.0f, 0.0f, + }; + + static const GLfloat rotate180TextureCoordinates[] = { + 1.0f, 0.0f, + 0.0f, 0.0f, + 1.0f, 1.0f, + 0.0f, 1.0f, + }; + + switch(rotationMode) + { + case kGPUImageNoRotation: return noRotationTextureCoordinates; + case kGPUImageRotateLeft: return rotateLeftTextureCoordinates; + case kGPUImageRotateRight: return rotateRightTextureCoordinates; + case kGPUImageFlipVertical: return verticalFlipTextureCoordinates; + case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates; + case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates; + case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates; + case kGPUImageRotate180: return rotate180TextureCoordinates; + } +} + +#pragma mark - +#pragma mark GPUInput protocol + +- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + [GPUImageContext setActiveShaderProgram:displayProgram]; + [self setDisplayFramebuffer]; + + glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glActiveTexture(GL_TEXTURE4); + glBindTexture(GL_TEXTURE_2D, [inputFramebufferForDisplay texture]); + glUniform1i(displayInputTextureUniform, 4); + + glVertexAttribPointer(displayPositionAttribute, 2, GL_FLOAT, 0, 0, imageVertices); + glVertexAttribPointer(displayTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [GPUImageView textureCoordinatesForRotation:inputRotation]); + + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + + [self presentFramebuffer]; + [inputFramebufferForDisplay unlock]; + inputFramebufferForDisplay = nil; + }); +} + +- (NSInteger)nextAvailableTextureIndex; +{ + return 0; +} + +- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; +{ + inputFramebufferForDisplay = newInputFramebuffer; + [inputFramebufferForDisplay lock]; +} + +- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; +{ + inputRotation = newInputRotation; +} + +- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; +{ + runSynchronouslyOnVideoProcessingQueue(^{ + CGSize rotatedSize = newSize; + + if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) + { + rotatedSize.width = newSize.height; + rotatedSize.height = newSize.width; + } + + if (!CGSizeEqualToSize(inputImageSize, rotatedSize)) + { + inputImageSize = rotatedSize; + [self recalculateViewGeometry]; + } + }); +} + +- (CGSize)maximumOutputSize; +{ + if ([self respondsToSelector:@selector(setContentScaleFactor:)]) + { + CGSize pointSize = self.bounds.size; + return CGSizeMake(self.contentScaleFactor * pointSize.width, self.contentScaleFactor * pointSize.height); + } + else + { + return self.bounds.size; + } +} + +- (void)endProcessing +{ +} + +- (BOOL)shouldIgnoreUpdatesToThisTarget; +{ + return NO; +} + +- (BOOL)wantsMonochromeInput; +{ + return NO; +} + +- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; +{ + +} + +#pragma mark - +#pragma mark Accessors + +- (CGSize)sizeInPixels; +{ + if (CGSizeEqualToSize(_sizeInPixels, CGSizeZero)) + { + return [self maximumOutputSize]; + } + else + { + return _sizeInPixels; + } +} + +- (void)setFillMode:(GPUImageFillModeType)newValue; +{ + _fillMode = newValue; + [self recalculateViewGeometry]; +} + +@end diff --git a/LFLiveKit/Vendor/pili-librtmp/amf.c b/LFLiveKit/Vendor/pili-librtmp/amf.c new file mode 100644 index 00000000..18630ce2 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/amf.c @@ -0,0 +1,1037 @@ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include + +#include "amf.h" +#include "bytes.h" +#include "log.h" +#include "rtmp_sys.h" + +static const AMFObjectProperty AMFProp_Invalid = {{0, 0}, AMF_INVALID}; +static const AVal AV_empty = {0, 0}; + +/* Data is Big-Endian */ +unsigned short + AMF_DecodeInt16(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned short val; + val = (c[0] << 8) | c[1]; + return val; +} + +unsigned int + AMF_DecodeInt24(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned int val; + val = (c[0] << 16) | (c[1] << 8) | c[2]; + return val; +} + +unsigned int + AMF_DecodeInt32(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned int val; + val = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3]; + return val; +} + +void AMF_DecodeString(const char *data, AVal *bv) { + bv->av_len = AMF_DecodeInt16(data); + bv->av_val = (bv->av_len > 0) ? (char *)data + 2 : NULL; +} + +void AMF_DecodeLongString(const char *data, AVal *bv) { + bv->av_len = AMF_DecodeInt32(data); + bv->av_val = (bv->av_len > 0) ? (char *)data + 4 : NULL; +} + +double + AMF_DecodeNumber(const char *data) { + double dVal; +#if __FLOAT_WORD_ORDER == __BYTE_ORDER +#if __BYTE_ORDER == __BIG_ENDIAN + memcpy(&dVal, data, 8); +#elif __BYTE_ORDER == __LITTLE_ENDIAN + unsigned char *ci, *co; + ci = (unsigned char *)data; + co = (unsigned char *)&dVal; + co[0] = ci[7]; + co[1] = ci[6]; + co[2] = ci[5]; + co[3] = ci[4]; + co[4] = ci[3]; + co[5] = ci[2]; + co[6] = ci[1]; + co[7] = ci[0]; +#endif +#else +#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ + unsigned char *ci, *co; + ci = (unsigned char *)data; + co = (unsigned char *)&dVal; + co[0] = ci[3]; + co[1] = ci[2]; + co[2] = ci[1]; + co[3] = ci[0]; + co[4] = ci[7]; + co[5] = ci[6]; + co[6] = ci[5]; + co[7] = ci[4]; +#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ + unsigned char *ci, *co; + ci = (unsigned char *)data; + co = (unsigned char *)&dVal; + co[0] = ci[4]; + co[1] = ci[5]; + co[2] = ci[6]; + co[3] = ci[7]; + co[4] = ci[0]; + co[5] = ci[1]; + co[6] = ci[2]; + co[7] = ci[3]; +#endif +#endif + return dVal; +} + +int AMF_DecodeBoolean(const char *data) { + return *data != 0; +} + +char * + AMF_EncodeInt16(char *output, char *outend, short nVal) { + if (output + 2 > outend) + return NULL; + + output[1] = nVal & 0xff; + output[0] = nVal >> 8; + return output + 2; +} + +char * + AMF_EncodeInt24(char *output, char *outend, int nVal) { + if (output + 3 > outend) + return NULL; + + output[2] = nVal & 0xff; + output[1] = nVal >> 8; + output[0] = nVal >> 16; + return output + 3; +} + +char * + AMF_EncodeInt32(char *output, char *outend, int nVal) { + if (output + 4 > outend) + return NULL; + + output[3] = nVal & 0xff; + output[2] = nVal >> 8; + output[1] = nVal >> 16; + output[0] = nVal >> 24; + return output + 4; +} + +char * + AMF_EncodeString(char *output, char *outend, const AVal *bv) { + if ((bv->av_len < 65536 && output + 1 + 2 + bv->av_len > outend) || + output + 1 + 4 + bv->av_len > outend) + return NULL; + + if (bv->av_len < 65536) { + *output++ = AMF_STRING; + + output = AMF_EncodeInt16(output, outend, bv->av_len); + } else { + *output++ = AMF_LONG_STRING; + + output = AMF_EncodeInt32(output, outend, bv->av_len); + } + memcpy(output, bv->av_val, bv->av_len); + output += bv->av_len; + + return output; +} + +char * + AMF_EncodeNumber(char *output, char *outend, double dVal) { + if (output + 1 + 8 > outend) + return NULL; + + *output++ = AMF_NUMBER; /* type: Number */ + +#if __FLOAT_WORD_ORDER == __BYTE_ORDER +#if __BYTE_ORDER == __BIG_ENDIAN + memcpy(output, &dVal, 8); +#elif __BYTE_ORDER == __LITTLE_ENDIAN + { + unsigned char *ci, *co; + ci = (unsigned char *)&dVal; + co = (unsigned char *)output; + co[0] = ci[7]; + co[1] = ci[6]; + co[2] = ci[5]; + co[3] = ci[4]; + co[4] = ci[3]; + co[5] = ci[2]; + co[6] = ci[1]; + co[7] = ci[0]; + } +#endif +#else +#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ + { + unsigned char *ci, *co; + ci = (unsigned char *)&dVal; + co = (unsigned char *)output; + co[0] = ci[3]; + co[1] = ci[2]; + co[2] = ci[1]; + co[3] = ci[0]; + co[4] = ci[7]; + co[5] = ci[6]; + co[6] = ci[5]; + co[7] = ci[4]; + } +#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ + { + unsigned char *ci, *co; + ci = (unsigned char *)&dVal; + co = (unsigned char *)output; + co[0] = ci[4]; + co[1] = ci[5]; + co[2] = ci[6]; + co[3] = ci[7]; + co[4] = ci[0]; + co[5] = ci[1]; + co[6] = ci[2]; + co[7] = ci[3]; + } +#endif +#endif + + return output + 8; +} + +char * + AMF_EncodeBoolean(char *output, char *outend, int bVal) { + if (output + 2 > outend) + return NULL; + + *output++ = AMF_BOOLEAN; + + *output++ = bVal ? 0x01 : 0x00; + + return output; +} + +char * + AMF_EncodeNamedString(char *output, char *outend, const AVal *strName, const AVal *strValue) { + if (output + 2 + strName->av_len > outend) + return NULL; + output = AMF_EncodeInt16(output, outend, strName->av_len); + + memcpy(output, strName->av_val, strName->av_len); + output += strName->av_len; + + return AMF_EncodeString(output, outend, strValue); +} + +char * + AMF_EncodeNamedNumber(char *output, char *outend, const AVal *strName, double dVal) { + if (output + 2 + strName->av_len > outend) + return NULL; + output = AMF_EncodeInt16(output, outend, strName->av_len); + + memcpy(output, strName->av_val, strName->av_len); + output += strName->av_len; + + return AMF_EncodeNumber(output, outend, dVal); +} + +char * + AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *strName, int bVal) { + if (output + 2 + strName->av_len > outend) + return NULL; + output = AMF_EncodeInt16(output, outend, strName->av_len); + + memcpy(output, strName->av_val, strName->av_len); + output += strName->av_len; + + return AMF_EncodeBoolean(output, outend, bVal); +} + +void AMFProp_GetName(AMFObjectProperty *prop, AVal *name) { + *name = prop->p_name; +} + +void AMFProp_SetName(AMFObjectProperty *prop, AVal *name) { + prop->p_name = *name; +} + +AMFDataType + AMFProp_GetType(AMFObjectProperty *prop) { + return prop->p_type; +} + +double + AMFProp_GetNumber(AMFObjectProperty *prop) { + return prop->p_vu.p_number; +} + +int AMFProp_GetBoolean(AMFObjectProperty *prop) { + return prop->p_vu.p_number != 0; +} + +void AMFProp_GetString(AMFObjectProperty *prop, AVal *str) { + *str = prop->p_vu.p_aval; +} + +void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj) { + *obj = prop->p_vu.p_object; +} + +int AMFProp_IsValid(AMFObjectProperty *prop) { + return prop->p_type != AMF_INVALID; +} + +char * + AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd) { + if (prop->p_type == AMF_INVALID) + return NULL; + + if (prop->p_type != AMF_NULL && pBuffer + prop->p_name.av_len + 2 + 1 >= pBufEnd) + return NULL; + + if (prop->p_type != AMF_NULL && prop->p_name.av_len) { + *pBuffer++ = prop->p_name.av_len >> 8; + *pBuffer++ = prop->p_name.av_len & 0xff; + memcpy(pBuffer, prop->p_name.av_val, prop->p_name.av_len); + pBuffer += prop->p_name.av_len; + } + + switch (prop->p_type) { + case AMF_NUMBER: + pBuffer = AMF_EncodeNumber(pBuffer, pBufEnd, prop->p_vu.p_number); + break; + + case AMF_BOOLEAN: + pBuffer = AMF_EncodeBoolean(pBuffer, pBufEnd, prop->p_vu.p_number != 0); + break; + + case AMF_STRING: + pBuffer = AMF_EncodeString(pBuffer, pBufEnd, &prop->p_vu.p_aval); + break; + + case AMF_NULL: + if (pBuffer + 1 >= pBufEnd) + return NULL; + *pBuffer++ = AMF_NULL; + break; + + case AMF_OBJECT: + pBuffer = AMF_Encode(&prop->p_vu.p_object, pBuffer, pBufEnd); + break; + + default: + RTMP_Log(RTMP_LOGERROR, "%s, invalid type. %d", __FUNCTION__, prop->p_type); + pBuffer = NULL; + }; + + return pBuffer; +} + +#define AMF3_INTEGER_MAX 268435455 +#define AMF3_INTEGER_MIN -268435456 + +int AMF3ReadInteger(const char *data, int32_t *valp) { + int i = 0; + int32_t val = 0; + + while (i <= 2) { /* handle first 3 bytes */ + if (data[i] & 0x80) { /* byte used */ + val <<= 7; /* shift up */ + val |= (data[i] & 0x7f); /* add bits */ + i++; + } else { + break; + } + } + + if (i > 2) { /* use 4th byte, all 8bits */ + val <<= 8; + val |= data[3]; + + /* range check */ + if (val > AMF3_INTEGER_MAX) + val -= (1 << 29); + } else { /* use 7bits of last unparsed byte (0xxxxxxx) */ + val <<= 7; + val |= data[i]; + } + + *valp = val; + + return i > 2 ? 4 : i + 1; +} + +int AMF3ReadString(const char *data, AVal *str) { + int32_t ref = 0; + int len; + assert(str != 0); + + len = AMF3ReadInteger(data, &ref); + data += len; + + if ((ref & 0x1) == 0) { /* reference: 0xxx */ + uint32_t refIndex = (ref >> 1); + RTMP_Log(RTMP_LOGDEBUG, + "%s, string reference, index: %d, not supported, ignoring!", + __FUNCTION__, refIndex); + return len; + } else { + uint32_t nSize = (ref >> 1); + + str->av_val = (char *)data; + str->av_len = nSize; + + return len + nSize; + } + return len; +} + +int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName) { + int nOriginalSize = nSize; + AMF3DataType type; + + prop->p_name.av_len = 0; + prop->p_name.av_val = NULL; + + if (nSize == 0 || !pBuffer) { + RTMP_Log(RTMP_LOGDEBUG, "empty buffer/no buffer pointer!"); + return -1; + } + + /* decode name */ + if (bDecodeName) { + AVal name; + int nRes = AMF3ReadString(pBuffer, &name); + + if (name.av_len <= 0) + return nRes; + + prop->p_name = name; + pBuffer += nRes; + nSize -= nRes; + } + + /* decode */ + type = *pBuffer++; + nSize--; + + switch (type) { + case AMF3_UNDEFINED: + case AMF3_NULL: + prop->p_type = AMF_NULL; + break; + case AMF3_FALSE: + prop->p_type = AMF_BOOLEAN; + prop->p_vu.p_number = 0.0; + break; + case AMF3_TRUE: + prop->p_type = AMF_BOOLEAN; + prop->p_vu.p_number = 1.0; + break; + case AMF3_INTEGER: { + int32_t res = 0; + int len = AMF3ReadInteger(pBuffer, &res); + prop->p_vu.p_number = (double)res; + prop->p_type = AMF_NUMBER; + nSize -= len; + break; + } + case AMF3_DOUBLE: + if (nSize < 8) + return -1; + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + prop->p_type = AMF_NUMBER; + nSize -= 8; + break; + case AMF3_STRING: + case AMF3_XML_DOC: + case AMF3_XML: { + int len = AMF3ReadString(pBuffer, &prop->p_vu.p_aval); + prop->p_type = AMF_STRING; + nSize -= len; + break; + } + case AMF3_DATE: { + int32_t res = 0; + int len = AMF3ReadInteger(pBuffer, &res); + + nSize -= len; + pBuffer += len; + + if ((res & 0x1) == 0) { /* reference */ + uint32_t nIndex = (res >> 1); + RTMP_Log(RTMP_LOGDEBUG, "AMF3_DATE reference: %d, not supported!", nIndex); + } else { + if (nSize < 8) + return -1; + + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + nSize -= 8; + prop->p_type = AMF_NUMBER; + } + break; + } + case AMF3_OBJECT: { + int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + case AMF3_ARRAY: + case AMF3_BYTE_ARRAY: + default: + RTMP_Log(RTMP_LOGDEBUG, "%s - AMF3 unknown/unsupported datatype 0x%02x, @0x%08X", + __FUNCTION__, (unsigned char)(*pBuffer), pBuffer); + return -1; + } + + return nOriginalSize - nSize; +} + +int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName) { + int nOriginalSize = nSize; + int nRes; + + prop->p_name.av_len = 0; + prop->p_name.av_val = NULL; + + if (nSize == 0 || !pBuffer) { + RTMP_Log(RTMP_LOGDEBUG, "%s: Empty buffer/no buffer pointer!", __FUNCTION__); + return -1; + } + + if (bDecodeName && nSize < 4) { /* at least name (length + at least 1 byte) and 1 byte of data */ + RTMP_Log(RTMP_LOGDEBUG, + "%s: Not enough data for decoding with name, less than 4 bytes!", + __FUNCTION__); + return -1; + } + + if (bDecodeName) { + unsigned short nNameSize = AMF_DecodeInt16(pBuffer); + if (nNameSize > nSize - 2) { + RTMP_Log(RTMP_LOGDEBUG, + "%s: Name size out of range: namesize (%d) > len (%d) - 2", + __FUNCTION__, nNameSize, nSize); + return -1; + } + + AMF_DecodeString(pBuffer, &prop->p_name); + nSize -= 2 + nNameSize; + pBuffer += 2 + nNameSize; + } + + if (nSize == 0) { + return -1; + } + + nSize--; + + prop->p_type = *pBuffer++; + switch (prop->p_type) { + case AMF_NUMBER: + if (nSize < 8) + return -1; + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + nSize -= 8; + break; + case AMF_BOOLEAN: + if (nSize < 1) + return -1; + prop->p_vu.p_number = (double)AMF_DecodeBoolean(pBuffer); + nSize--; + break; + case AMF_STRING: { + unsigned short nStringSize = AMF_DecodeInt16(pBuffer); + + if (nSize < (long)nStringSize + 2) + return -1; + AMF_DecodeString(pBuffer, &prop->p_vu.p_aval); + nSize -= (2 + nStringSize); + break; + } + case AMF_OBJECT: { + int nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + break; + } + case AMF_MOVIECLIP: { + RTMP_Log(RTMP_LOGERROR, "AMF_MOVIECLIP reserved!"); + return -1; + break; + } + case AMF_NULL: + case AMF_UNDEFINED: + case AMF_UNSUPPORTED: + prop->p_type = AMF_NULL; + break; + case AMF_REFERENCE: { + RTMP_Log(RTMP_LOGERROR, "AMF_REFERENCE not supported!"); + return -1; + break; + } + case AMF_ECMA_ARRAY: { + nSize -= 4; + + /* next comes the rest, mixed array has a final 0x000009 mark and names, so its an object */ + nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer + 4, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + case AMF_OBJECT_END: { + return -1; + break; + } + case AMF_STRICT_ARRAY: { + unsigned int nArrayLen = AMF_DecodeInt32(pBuffer); + nSize -= 4; + + nRes = AMF_DecodeArray(&prop->p_vu.p_object, pBuffer + 4, nSize, + nArrayLen, FALSE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + case AMF_DATE: { + RTMP_Log(RTMP_LOGDEBUG, "AMF_DATE"); + + if (nSize < 10) + return -1; + + prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); + prop->p_UTCoffset = AMF_DecodeInt16(pBuffer + 8); + + nSize -= 10; + break; + } + case AMF_LONG_STRING: { + unsigned int nStringSize = AMF_DecodeInt32(pBuffer); + if (nSize < (long)nStringSize + 4) + return -1; + AMF_DecodeLongString(pBuffer, &prop->p_vu.p_aval); + nSize -= (4 + nStringSize); + prop->p_type = AMF_STRING; + break; + } + case AMF_RECORDSET: { + RTMP_Log(RTMP_LOGERROR, "AMF_RECORDSET reserved!"); + return -1; + break; + } + case AMF_XML_DOC: { + RTMP_Log(RTMP_LOGERROR, "AMF_XML_DOC not supported!"); + return -1; + break; + } + case AMF_TYPED_OBJECT: { + RTMP_Log(RTMP_LOGERROR, "AMF_TYPED_OBJECT not supported!"); + return -1; + break; + } + case AMF_AVMPLUS: { + int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); + if (nRes == -1) + return -1; + nSize -= nRes; + prop->p_type = AMF_OBJECT; + break; + } + default: + RTMP_Log(RTMP_LOGDEBUG, "%s - unknown datatype 0x%02x, @0x%08X", __FUNCTION__, + prop->p_type, pBuffer - 1); + return -1; + } + + return nOriginalSize - nSize; +} + +void AMFProp_Dump(AMFObjectProperty *prop) { + char strRes[256]; + char str[256]; + AVal name; + + if (prop->p_type == AMF_INVALID) { + RTMP_Log(RTMP_LOGDEBUG, "Property: INVALID"); + return; + } + + if (prop->p_type == AMF_NULL) { + RTMP_Log(RTMP_LOGDEBUG, "Property: NULL"); + return; + } + + if (prop->p_name.av_len) { + name = prop->p_name; + } else { + name.av_val = "no-name."; + name.av_len = sizeof("no-name.") - 1; + } + if (name.av_len > 18) + name.av_len = 18; + + snprintf(strRes, 255, "Name: %18.*s, ", name.av_len, name.av_val); + + if (prop->p_type == AMF_OBJECT) { + RTMP_Log(RTMP_LOGDEBUG, "Property: <%sOBJECT>", strRes); + AMF_Dump(&prop->p_vu.p_object); + return; + } + + switch (prop->p_type) { + case AMF_NUMBER: + snprintf(str, 255, "NUMBER:\t%.2f", prop->p_vu.p_number); + break; + case AMF_BOOLEAN: + snprintf(str, 255, "BOOLEAN:\t%s", + prop->p_vu.p_number != 0.0 ? "TRUE" : "FALSE"); + break; + case AMF_STRING: + snprintf(str, 255, "STRING:\t%.*s", prop->p_vu.p_aval.av_len, + prop->p_vu.p_aval.av_val); + break; + case AMF_DATE: + snprintf(str, 255, "DATE:\ttimestamp: %.2f, UTC offset: %d", + prop->p_vu.p_number, prop->p_UTCoffset); + break; + default: + snprintf(str, 255, "INVALID TYPE 0x%02x", (unsigned char)prop->p_type); + } + + RTMP_Log(RTMP_LOGDEBUG, "Property: <%s%s>", strRes, str); +} + +void AMFProp_Reset(AMFObjectProperty *prop) { + if (prop->p_type == AMF_OBJECT) + AMF_Reset(&prop->p_vu.p_object); + else { + prop->p_vu.p_aval.av_len = 0; + prop->p_vu.p_aval.av_val = NULL; + } + prop->p_type = AMF_INVALID; +} + +/* AMFObject */ + +char * + AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd) { + int i; + + if (pBuffer + 4 >= pBufEnd) + return NULL; + + *pBuffer++ = AMF_OBJECT; + + for (i = 0; i < obj->o_num; i++) { + char *res = AMFProp_Encode(&obj->o_props[i], pBuffer, pBufEnd); + if (res == NULL) { + RTMP_Log(RTMP_LOGERROR, "AMF_Encode - failed to encode property in index %d", + i); + break; + } else { + pBuffer = res; + } + } + + if (pBuffer + 3 >= pBufEnd) + return NULL; /* no room for the end marker */ + + pBuffer = AMF_EncodeInt24(pBuffer, pBufEnd, AMF_OBJECT_END); + + return pBuffer; +} + +int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, + int nArrayLen, int bDecodeName) { + int nOriginalSize = nSize; + int bError = FALSE; + + obj->o_num = 0; + obj->o_props = NULL; + while (nArrayLen > 0) { + AMFObjectProperty prop; + int nRes; + nArrayLen--; + + nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); + if (nRes == -1) + bError = TRUE; + else { + nSize -= nRes; + pBuffer += nRes; + AMF_AddProp(obj, &prop); + } + } + if (bError) + return -1; + + return nOriginalSize - nSize; +} + +int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bAMFData) { + int nOriginalSize = nSize; + int32_t ref; + int len; + + obj->o_num = 0; + obj->o_props = NULL; + if (bAMFData) { + if (*pBuffer != AMF3_OBJECT) + RTMP_Log(RTMP_LOGERROR, + "AMF3 Object encapsulated in AMF stream does not start with AMF3_OBJECT!"); + pBuffer++; + nSize--; + } + + ref = 0; + len = AMF3ReadInteger(pBuffer, &ref); + pBuffer += len; + nSize -= len; + + if ((ref & 1) == 0) { /* object reference, 0xxx */ + uint32_t objectIndex = (ref >> 1); + + RTMP_Log(RTMP_LOGDEBUG, "Object reference, index: %d", objectIndex); + } else /* object instance */ + { + int32_t classRef = (ref >> 1); + + AMF3ClassDef cd = {{0, 0}}; + AMFObjectProperty prop; + + if ((classRef & 0x1) == 0) { /* class reference */ + uint32_t classIndex = (classRef >> 1); + RTMP_Log(RTMP_LOGDEBUG, "Class reference: %d", classIndex); + } else { + int32_t classExtRef = (classRef >> 1); + int i; + + cd.cd_externalizable = (classExtRef & 0x1) == 1; + cd.cd_dynamic = ((classExtRef >> 1) & 0x1) == 1; + + cd.cd_num = classExtRef >> 2; + + /* class name */ + + len = AMF3ReadString(pBuffer, &cd.cd_name); + nSize -= len; + pBuffer += len; + + /*std::string str = className; */ + + RTMP_Log(RTMP_LOGDEBUG, + "Class name: %s, externalizable: %d, dynamic: %d, classMembers: %d", + cd.cd_name.av_val, cd.cd_externalizable, cd.cd_dynamic, + cd.cd_num); + + for (i = 0; i < cd.cd_num; i++) { + AVal memberName; + len = AMF3ReadString(pBuffer, &memberName); + RTMP_Log(RTMP_LOGDEBUG, "Member: %s", memberName.av_val); + AMF3CD_AddProp(&cd, &memberName); + nSize -= len; + pBuffer += len; + } + } + + /* add as referencable object */ + + if (cd.cd_externalizable) { + int nRes; + AVal name = AVC("DEFAULT_ATTRIBUTE"); + + RTMP_Log(RTMP_LOGDEBUG, "Externalizable, TODO check"); + + nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); + if (nRes == -1) + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", + __FUNCTION__); + else { + nSize -= nRes; + pBuffer += nRes; + } + + AMFProp_SetName(&prop, &name); + AMF_AddProp(obj, &prop); + } else { + int nRes, i; + for (i = 0; i < cd.cd_num; i++) /* non-dynamic */ + { + nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); + if (nRes == -1) + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", + __FUNCTION__); + + AMFProp_SetName(&prop, AMF3CD_GetProp(&cd, i)); + AMF_AddProp(obj, &prop); + + pBuffer += nRes; + nSize -= nRes; + } + if (cd.cd_dynamic) { + int len = 0; + + do { + nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, TRUE); + AMF_AddProp(obj, &prop); + + pBuffer += nRes; + nSize -= nRes; + + len = prop.p_name.av_len; + } while (len > 0); + } + } + RTMP_Log(RTMP_LOGDEBUG, "class object!"); + } + return nOriginalSize - nSize; +} + +int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName) { + int nOriginalSize = nSize; + int bError = FALSE; /* if there is an error while decoding - try to at least find the end mark AMF_OBJECT_END */ + + obj->o_num = 0; + obj->o_props = NULL; + while (nSize > 0) { + AMFObjectProperty prop; + int nRes; + + if (nSize >= 3 && AMF_DecodeInt24(pBuffer) == AMF_OBJECT_END) { + nSize -= 3; + bError = FALSE; + break; + } + + if (bError) { + RTMP_Log(RTMP_LOGERROR, + "DECODING ERROR, IGNORING BYTES UNTIL NEXT KNOWN PATTERN!"); + nSize--; + pBuffer++; + continue; + } + + nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); + if (nRes == -1) + bError = TRUE; + else { + nSize -= nRes; + pBuffer += nRes; + AMF_AddProp(obj, &prop); + } + } + + if (bError) + return -1; + + return nOriginalSize - nSize; +} + +void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop) { + if (!(obj->o_num & 0x0f)) + obj->o_props = + realloc(obj->o_props, (obj->o_num + 16) * sizeof(AMFObjectProperty)); + obj->o_props[obj->o_num++] = *prop; +} + +int AMF_CountProp(AMFObject *obj) { + return obj->o_num; +} + +AMFObjectProperty * + AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex) { + if (nIndex >= 0) { + if (nIndex <= obj->o_num) + return &obj->o_props[nIndex]; + } else { + int n; + for (n = 0; n < obj->o_num; n++) { + if (AVMATCH(&obj->o_props[n].p_name, name)) + return &obj->o_props[n]; + } + } + + return (AMFObjectProperty *)&AMFProp_Invalid; +} + +void AMF_Dump(AMFObject *obj) { + int n; + RTMP_Log(RTMP_LOGDEBUG, "(object begin)"); + for (n = 0; n < obj->o_num; n++) { + AMFProp_Dump(&obj->o_props[n]); + } + RTMP_Log(RTMP_LOGDEBUG, "(object end)"); +} + +void AMF_Reset(AMFObject *obj) { + int n; + for (n = 0; n < obj->o_num; n++) { + AMFProp_Reset(&obj->o_props[n]); + } + free(obj->o_props); + obj->o_props = NULL; + obj->o_num = 0; +} + +/* AMF3ClassDefinition */ + +void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop) { + if (!(cd->cd_num & 0x0f)) + cd->cd_props = realloc(cd->cd_props, (cd->cd_num + 16) * sizeof(AVal)); + cd->cd_props[cd->cd_num++] = *prop; +} + +AVal * + AMF3CD_GetProp(AMF3ClassDef *cd, int nIndex) { + if (nIndex >= cd->cd_num) + return (AVal *)&AV_empty; + return &cd->cd_props[nIndex]; +} diff --git a/LFLiveKit/Vendor/pili-librtmp/amf.h b/LFLiveKit/Vendor/pili-librtmp/amf.h new file mode 100644 index 00000000..77f93e84 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/amf.h @@ -0,0 +1,180 @@ +#ifndef __AMF_H__ +#define __AMF_H__ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include + +#ifndef TRUE +#define TRUE 1 +#define FALSE 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + AMF_NUMBER = 0, + AMF_BOOLEAN, + AMF_STRING, + AMF_OBJECT, + AMF_MOVIECLIP, /* reserved, not used */ + AMF_NULL, + AMF_UNDEFINED, + AMF_REFERENCE, + AMF_ECMA_ARRAY, + AMF_OBJECT_END, + AMF_STRICT_ARRAY, + AMF_DATE, + AMF_LONG_STRING, + AMF_UNSUPPORTED, + AMF_RECORDSET, /* reserved, not used */ + AMF_XML_DOC, + AMF_TYPED_OBJECT, + AMF_AVMPLUS, /* switch to AMF3 */ + AMF_INVALID = 0xff +} AMFDataType; + +typedef enum { + AMF3_UNDEFINED = 0, + AMF3_NULL, + AMF3_FALSE, + AMF3_TRUE, + AMF3_INTEGER, + AMF3_DOUBLE, + AMF3_STRING, + AMF3_XML_DOC, + AMF3_DATE, + AMF3_ARRAY, + AMF3_OBJECT, + AMF3_XML, + AMF3_BYTE_ARRAY +} AMF3DataType; + +typedef struct AVal { + char *av_val; + int av_len; +} AVal; +#define AVC(str) \ + { str, sizeof(str) - 1 } +#define AVMATCH(a1, a2) \ + ((a1)->av_len == (a2)->av_len && \ + !memcmp((a1)->av_val, (a2)->av_val, (a1)->av_len)) + +struct AMFObjectProperty; + +typedef struct AMFObject { + int o_num; + struct AMFObjectProperty *o_props; +} AMFObject; + +typedef struct AMFObjectProperty { + AVal p_name; + AMFDataType p_type; + union { + double p_number; + AVal p_aval; + AMFObject p_object; + } p_vu; + int16_t p_UTCoffset; +} AMFObjectProperty; + +char *AMF_EncodeString(char *output, char *outend, const AVal *str); +char *AMF_EncodeNumber(char *output, char *outend, double dVal); +char *AMF_EncodeInt16(char *output, char *outend, short nVal); +char *AMF_EncodeInt24(char *output, char *outend, int nVal); +char *AMF_EncodeInt32(char *output, char *outend, int nVal); +char *AMF_EncodeBoolean(char *output, char *outend, int bVal); + +/* Shortcuts for AMFProp_Encode */ +char *AMF_EncodeNamedString(char *output, char *outend, const AVal *name, + const AVal *value); +char *AMF_EncodeNamedNumber(char *output, char *outend, const AVal *name, + double dVal); +char *AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *name, + int bVal); + +unsigned short AMF_DecodeInt16(const char *data); +unsigned int AMF_DecodeInt24(const char *data); +unsigned int AMF_DecodeInt32(const char *data); +void AMF_DecodeString(const char *data, AVal *str); +void AMF_DecodeLongString(const char *data, AVal *str); +int AMF_DecodeBoolean(const char *data); +double AMF_DecodeNumber(const char *data); + +char *AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd); +int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName); +int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, + int nArrayLen, int bDecodeName); +int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, + int bDecodeName); +void AMF_Dump(AMFObject *obj); +void AMF_Reset(AMFObject *obj); + +void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop); +int AMF_CountProp(AMFObject *obj); +AMFObjectProperty *AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex); + +AMFDataType AMFProp_GetType(AMFObjectProperty *prop); +void AMFProp_SetNumber(AMFObjectProperty *prop, double dval); +void AMFProp_SetBoolean(AMFObjectProperty *prop, int bflag); +void AMFProp_SetString(AMFObjectProperty *prop, AVal *str); +void AMFProp_SetObject(AMFObjectProperty *prop, AMFObject *obj); + +void AMFProp_GetName(AMFObjectProperty *prop, AVal *name); +void AMFProp_SetName(AMFObjectProperty *prop, AVal *name); +double AMFProp_GetNumber(AMFObjectProperty *prop); +int AMFProp_GetBoolean(AMFObjectProperty *prop); +void AMFProp_GetString(AMFObjectProperty *prop, AVal *str); +void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj); + +int AMFProp_IsValid(AMFObjectProperty *prop); + +char *AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd); +int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName); +int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, + int bDecodeName); + +void AMFProp_Dump(AMFObjectProperty *prop); +void AMFProp_Reset(AMFObjectProperty *prop); + +typedef struct AMF3ClassDef { + AVal cd_name; + char cd_externalizable; + char cd_dynamic; + int cd_num; + AVal *cd_props; +} AMF3ClassDef; + +void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop); +AVal *AMF3CD_GetProp(AMF3ClassDef *cd, int idx); + +#ifdef __cplusplus +} +#endif + +#endif /* __AMF_H__ */ diff --git a/LFLiveKit/Vendor/pili-librtmp/bytes.h b/LFLiveKit/Vendor/pili-librtmp/bytes.h new file mode 100644 index 00000000..87221cf1 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/bytes.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#ifndef __BYTES_H__ +#define __BYTES_H__ + +#include + +#ifdef _WIN32 +/* Windows is little endian only */ +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN +#define __FLOAT_WORD_ORDER __BYTE_ORDER + +typedef unsigned char uint8_t; + +#else /* !_WIN32 */ + +#include + +#if defined(BYTE_ORDER) && !defined(__BYTE_ORDER) +#define __BYTE_ORDER BYTE_ORDER +#endif + +#if defined(BIG_ENDIAN) && !defined(__BIG_ENDIAN) +#define __BIG_ENDIAN BIG_ENDIAN +#endif + +#if defined(LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#endif + +#endif /* !_WIN32 */ + +/* define default endianness */ +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN 1234 +#endif + +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN 4321 +#endif + +#ifndef __BYTE_ORDER +#warning "Byte order not defined on your system, assuming little endian!" +#define __BYTE_ORDER __LITTLE_ENDIAN +#endif + +/* ok, we assume to have the same float word order and byte order if float word + * order is not defined */ +#ifndef __FLOAT_WORD_ORDER +#warning "Float word order not defined, assuming the same as byte order!" +#define __FLOAT_WORD_ORDER __BYTE_ORDER +#endif + +#if !defined(__BYTE_ORDER) || !defined(__FLOAT_WORD_ORDER) +#error "Undefined byte or float word order!" +#endif + +#if __FLOAT_WORD_ORDER != __BIG_ENDIAN && __FLOAT_WORD_ORDER != __LITTLE_ENDIAN +#error "Unknown/unsupported float word order!" +#endif + +#if __BYTE_ORDER != __BIG_ENDIAN && __BYTE_ORDER != __LITTLE_ENDIAN +#error "Unknown/unsupported byte order!" +#endif + +#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/dh.h b/LFLiveKit/Vendor/pili-librtmp/dh.h new file mode 100644 index 00000000..d7aeb5a5 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/dh.h @@ -0,0 +1,345 @@ +/* RTMPDump - Diffie-Hellmann Key Exchange + * Copyright (C) 2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include + +#ifdef USE_POLARSSL +#include +typedef mpi *MP_t; +#define MP_new(m) \ + m = malloc(sizeof(mpi)); \ + mpi_init(m, NULL) +#define MP_set_w(mpi, w) mpi_lset(mpi, w) +#define MP_cmp(u, v) mpi_cmp_mpi(u, v) +#define MP_set(u, v) mpi_copy(u, v) +#define MP_sub_w(mpi, w) mpi_sub_int(mpi, mpi, w) +#define MP_cmp_1(mpi) mpi_cmp_int(mpi, 1) +#define MP_modexp(r, y, q, p) mpi_exp_mod(r, y, q, p, NULL) +#define MP_free(mpi) \ + mpi_free(mpi, NULL); \ + free(mpi) +#define MP_gethex(u, hex, res) \ + MP_new(u); \ + res = mpi_read_string(u, 16, hex) == 0 +#define MP_bytes(u) mpi_size(u) +#define MP_setbin(u, buf, len) mpi_write_binary(u, buf, len) +#define MP_getbin(u, buf, len) \ + MP_new(u); \ + mpi_read_binary(u, buf, len) + +typedef struct MDH { + MP_t p; + MP_t g; + MP_t pub_key; + MP_t priv_key; + long length; + dhm_context ctx; +} MDH; + +#define MDH_new() calloc(1, sizeof(MDH)) +#define MDH_free(vp) \ + { \ + MDH *dh = vp; \ + dhm_free(&dh->ctx); \ + MP_free(dh->p); \ + MP_free(dh->g); \ + MP_free(dh->pub_key); \ + MP_free(dh->priv_key); \ + free(dh); \ + } + +static int MDH_generate_key(MDH *dh) { + unsigned char out[2]; + MP_set(&dh->ctx.P, dh->p); + MP_set(&dh->ctx.G, dh->g); + dh->ctx.len = 128; + dhm_make_public(&dh->ctx, 1024, out, 1, havege_rand, &RTMP_TLS_ctx->hs); + MP_new(dh->pub_key); + MP_new(dh->priv_key); + MP_set(dh->pub_key, &dh->ctx.GX); + MP_set(dh->priv_key, &dh->ctx.X); + return 1; +} + +static int MDH_compute_key(uint8_t *secret, size_t len, MP_t pub, MDH *dh) { + int n = len; + MP_set(&dh->ctx.GY, pub); + dhm_calc_secret(&dh->ctx, secret, &n); + return 0; +} + +#elif defined(USE_GNUTLS) +#include +typedef gcry_mpi_t MP_t; +#define MP_new(m) m = gcry_mpi_new(1) +#define MP_set_w(mpi, w) gcry_mpi_set_ui(mpi, w) +#define MP_cmp(u, v) gcry_mpi_cmp(u, v) +#define MP_set(u, v) gcry_mpi_set(u, v) +#define MP_sub_w(mpi, w) gcry_mpi_sub_ui(mpi, mpi, w) +#define MP_cmp_1(mpi) gcry_mpi_cmp_ui(mpi, 1) +#define MP_modexp(r, y, q, p) gcry_mpi_powm(r, y, q, p) +#define MP_free(mpi) gcry_mpi_release(mpi) +#define MP_gethex(u, hex, res) \ + res = (gcry_mpi_scan(&u, GCRYMPI_FMT_HEX, hex, 0, 0) == 0) +#define MP_bytes(u) (gcry_mpi_get_nbits(u) + 7) / 8 +#define MP_setbin(u, buf, len) \ + gcry_mpi_print(GCRYMPI_FMT_USG, buf, len, NULL, u) +#define MP_getbin(u, buf, len) \ + gcry_mpi_scan(&u, GCRYMPI_FMT_USG, buf, len, NULL) + +typedef struct MDH { + MP_t p; + MP_t g; + MP_t pub_key; + MP_t priv_key; + long length; +} MDH; + +#define MDH_new() calloc(1, sizeof(MDH)) +#define MDH_free(dh) \ + do { \ + MP_free(((MDH *)(dh))->p); \ + MP_free(((MDH *)(dh))->g); \ + MP_free(((MDH *)(dh))->pub_key); \ + MP_free(((MDH *)(dh))->priv_key); \ + free(dh); \ + } while (0) + +extern MP_t gnutls_calc_dh_secret(MP_t *priv, MP_t g, MP_t p); +extern MP_t gnutls_calc_dh_key(MP_t y, MP_t x, MP_t p); + +#define MDH_generate_key(dh) \ + (dh->pub_key = gnutls_calc_dh_secret(&dh->priv_key, dh->g, dh->p)) +static int MDH_compute_key(uint8_t *secret, size_t len, MP_t pub, MDH *dh) { + MP_t sec = gnutls_calc_dh_key(pub, dh->priv_key, dh->p); + if (sec) { + MP_setbin(sec, secret, len); + MP_free(sec); + return 0; + } else + return -1; +} + +#else /* USE_OPENSSL */ +#include +#include + +typedef BIGNUM *MP_t; +#define MP_new(m) m = BN_new() +#define MP_set_w(mpi, w) BN_set_word(mpi, w) +#define MP_cmp(u, v) BN_cmp(u, v) +#define MP_set(u, v) BN_copy(u, v) +#define MP_sub_w(mpi, w) BN_sub_word(mpi, w) +#define MP_cmp_1(mpi) BN_cmp(mpi, BN_value_one()) +#define MP_modexp(r, y, q, p) \ + do { \ + BN_CTX *ctx = BN_CTX_new(); \ + BN_mod_exp(r, y, q, p, ctx); \ + BN_CTX_free(ctx); \ + } while (0) +#define MP_free(mpi) BN_free(mpi) +#define MP_gethex(u, hex, res) res = BN_hex2bn(&u, hex) +#define MP_bytes(u) BN_num_bytes(u) +#define MP_setbin(u, buf, len) BN_bn2bin(u, buf) +#define MP_getbin(u, buf, len) u = BN_bin2bn(buf, len, 0) + +#define MDH DH +#define MDH_new() DH_new() +#define MDH_free(dh) DH_free(dh) +#define MDH_generate_key(dh) DH_generate_key(dh) +#define MDH_compute_key(secret, seclen, pub, dh) DH_compute_key(secret, pub, dh) + +#endif + +#include "dhgroups.h" +#include "log.h" + +/* RFC 2631, Section 2.1.5, http://www.ietf.org/rfc/rfc2631.txt */ +static int isValidPublicKey(MP_t y, MP_t p, MP_t q) { + int ret = TRUE; + MP_t bn; + assert(y); + + MP_new(bn); + assert(bn); + + /* y must lie in [2,p-1] */ + MP_set_w(bn, 1); + if (MP_cmp(y, bn) < 0) { + RTMP_Log(RTMP_LOGERROR, "DH public key must be at least 2"); + ret = FALSE; + goto failed; + } + + /* bn = p-2 */ + MP_set(bn, p); + MP_sub_w(bn, 1); + if (MP_cmp(y, bn) > 0) { + RTMP_Log(RTMP_LOGERROR, "DH public key must be at most p-2"); + ret = FALSE; + goto failed; + } + + /* Verify with Sophie-Germain prime + * + * This is a nice test to make sure the public key position is calculated + * correctly. This test will fail in about 50% of the cases if applied to + * random data. + */ + if (q) { + /* y must fulfill y^q mod p = 1 */ + MP_modexp(bn, y, q, p); + + if (MP_cmp_1(bn) != 0) { + RTMP_Log(RTMP_LOGWARNING, "DH public key does not fulfill y^q mod p = 1"); + } + } + +failed: + MP_free(bn); + return ret; +} + +static MDH *DHInit(int nKeyBits) { + size_t res; + MDH *dh = MDH_new(); + + if (!dh) + goto failed; + + MP_new(dh->g); + + if (!dh->g) + goto failed; + + MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */ + if (!res) { + goto failed; + } + + MP_set_w(dh->g, 2); /* base 2 */ + + dh->length = nKeyBits; + return dh; + +failed: + if (dh) + MDH_free(dh); + + return 0; +} + +static int DHGenerateKey(MDH *dh) { + size_t res = 0; + if (!dh) + return 0; + + while (!res) { + MP_t q1 = NULL; + + if (!MDH_generate_key(dh)) + return 0; + + MP_gethex(q1, Q1024, res); + assert(res); + + res = isValidPublicKey(dh->pub_key, dh->p, q1); + if (!res) { + MP_free(dh->pub_key); + MP_free(dh->priv_key); + dh->pub_key = dh->priv_key = 0; + } + + MP_free(q1); + } + return 1; +} + +/* fill pubkey with the public key in BIG ENDIAN order + * 00 00 00 00 00 x1 x2 x3 ..... + */ + +static int DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen) { + int len; + if (!dh || !dh->pub_key) + return 0; + + len = MP_bytes(dh->pub_key); + if (len <= 0 || len > (int)nPubkeyLen) + return 0; + + memset(pubkey, 0, nPubkeyLen); + MP_setbin(dh->pub_key, pubkey + (nPubkeyLen - len), len); + return 1; +} + +#if 0 /* unused */ +static int +DHGetPrivateKey(MDH *dh, uint8_t *privkey, size_t nPrivkeyLen) +{ + if (!dh || !dh->priv_key) + return 0; + + int len = MP_bytes(dh->priv_key); + if (len <= 0 || len > (int) nPrivkeyLen) + return 0; + + memset(privkey, 0, nPrivkeyLen); + MP_setbin(dh->priv_key, privkey + (nPrivkeyLen - len), len); + return 1; +} +#endif + +/* computes the shared secret key from the private MDH value and the + * other party's public key (pubkey) + */ +static int DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen, + uint8_t *secret) { + MP_t q1 = NULL, pubkeyBn = NULL; + size_t len; + int res; + + if (!dh || !secret || nPubkeyLen >= INT_MAX) + return -1; + + MP_getbin(pubkeyBn, pubkey, nPubkeyLen); + if (!pubkeyBn) + return -1; + + MP_gethex(q1, Q1024, len); + assert(len); + + if (isValidPublicKey(pubkeyBn, dh->p, q1)) + res = MDH_compute_key(secret, nPubkeyLen, pubkeyBn, dh); + else + res = -1; + + MP_free(q1); + MP_free(pubkeyBn); + + return res; +} diff --git a/LFLiveKit/Vendor/pili-librtmp/dhgroups.h b/LFLiveKit/Vendor/pili-librtmp/dhgroups.h new file mode 100644 index 00000000..f3d0293f --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/dhgroups.h @@ -0,0 +1,198 @@ +/* librtmp - Diffie-Hellmann Key Exchange + * Copyright (C) 2009 Andrej Stepanchuk + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +/* from RFC 3526, see http://www.ietf.org/rfc/rfc3526.txt */ + +/* 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 } */ +#define P768 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF" + +/* 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 } */ +#define P1024 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" \ + "FFFFFFFFFFFFFFFF" + +/* Group morder largest prime factor: */ +#define Q1024 \ + "7FFFFFFFFFFFFFFFE487ED5110B4611A62633145C06E0E68" \ + "948127044533E63A0105DF531D89CD9128A5043CC71A026E" \ + "F7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E122" \ + "F242DABB312F3F637A262174D31BF6B585FFAE5B7A035BF6" \ + "F71C35FDAD44CFD2D74F9208BE258FF324943328F67329C0" \ + "FFFFFFFFFFFFFFFF" + +/* 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 } */ +#define P1536 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF" + +/* 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 } */ +#define P2048 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AACAA68FFFFFFFFFFFFFFFF" + +/* 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 } */ +#define P3072 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" + +/* 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 } */ +#define P4096 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" \ + "FFFFFFFFFFFFFFFF" + +/* 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 } */ +#define P6144 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" \ + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" \ + "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" \ + "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" \ + "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" \ + "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" \ + "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" \ + "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" \ + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" \ + "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" \ + "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" \ + "12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF" + +/* 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 } */ +#define P8192 \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" \ + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" \ + "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" \ + "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" \ + "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" \ + "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" \ + "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" \ + "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" \ + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" \ + "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" \ + "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" \ + "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4" \ + "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300" \ + "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568" \ + "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" \ + "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B" \ + "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A" \ + "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36" \ + "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1" \ + "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92" \ + "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47" \ + "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" \ + "60C980DD98EDD3DFFFFFFFFFFFFFFFFF" diff --git a/LFLiveKit/Vendor/pili-librtmp/error.c b/LFLiveKit/Vendor/pili-librtmp/error.c new file mode 100644 index 00000000..0b4cafdf --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/error.c @@ -0,0 +1,20 @@ +#include "error.h" +#include +#include + +void RTMPError_Alloc(RTMPError *error, size_t msg_size) { + RTMPError_Free(error); + + error->code = 0; + error->message = (char *)malloc(msg_size + 1); + memset(error->message, 0, msg_size); +} + +void RTMPError_Free(RTMPError *error) { + if (error) { + if (error->message) { + free(error->message); + error->message = NULL; + } + } +} diff --git a/LFLiveKit/Vendor/pili-librtmp/error.h b/LFLiveKit/Vendor/pili-librtmp/error.h new file mode 100644 index 00000000..4ec31fda --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/error.h @@ -0,0 +1,45 @@ +#ifndef __ERROR_H__ +#define __ERROR_H__ + +#include + +typedef struct RTMPError { + int code; + char *message; +} RTMPError; + +void RTMPError_Alloc(RTMPError *error, size_t msg_size); +void RTMPError_Free(RTMPError *error); + +// error defines +enum { + RTMPErrorUnknow = -1, // "Unknow error" + RTMPErrorUnknowOption = -999, // "Unknown option %s" + RTMPErrorAccessDNSFailed = -1000, // "Failed to access the DNS. (addr: %s)" + RTMPErrorFailedToConnectSocket = + -1001, // "Failed to connect socket. %d (%s)" + RTMPErrorSocksNegotiationFailed = -1002, // "Socks negotiation failed" + RTMPErrorFailedToCreateSocket = + -1003, // "Failed to create socket. %d (%s)" + RTMPErrorHandshakeFailed = -1004, // "Handshake failed" + RTMPErrorRTMPConnectFailed = -1005, // "RTMP connect failed" + RTMPErrorSendFailed = -1006, // "Send error %d (%s), (%d bytes)" + RTMPErrorServerRequestedClose = -1007, // "RTMP server requested close" + RTMPErrorNetStreamFailed = -1008, // "NetStream failed" + RTMPErrorNetStreamPlayFailed = -1009, // "NetStream play failed" + RTMPErrorNetStreamPlayStreamNotFound = + -1010, // "NetStream play stream not found" + RTMPErrorNetConnectionConnectInvalidApp = + -1011, // "NetConnection connect invalip app" + RTMPErrorSanityFailed = + -1012, // "Sanity failed. Trying to send header of type: 0x%02X" + RTMPErrorSocketClosedByPeer = -1013, // "RTMP socket closed by peer" + RTMPErrorRTMPConnectStreamFailed = -1014, // "RTMP connect stream failed" + RTMPErrorSocketTimeout = -1015, // "RTMP socket timeout" + + // SSL errors + RTMPErrorTLSConnectFailed = -1200, // "TLS_Connect failed" + RTMPErrorNoSSLOrTLSSupport = -1201, // "No SSL/TLS support" +}; + +#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/handshake.h b/LFLiveKit/Vendor/pili-librtmp/handshake.h new file mode 100644 index 00000000..f791cf74 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/handshake.h @@ -0,0 +1,1034 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * Copyright (C) 2010 + * 2a665470ced7adb7156fcef47f8199a6371c117b8a79e399a2771e0b36384090 + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +/* This file is #included in rtmp.c, it is not meant to be compiled alone */ + +#ifdef USE_POLARSSL +#include +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX sha2_context +#define HMAC_setup(ctx, key, len) \ + sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) +#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + sha2_hmac_finish(&ctx, dig) + +typedef arc4_context *RC4_handle; +#define RC4_alloc(h) *h = malloc(sizeof(arc4_context)) +#define RC4_setkey(h, l, k) arc4_setup(h, k, l) +#define RC4_encrypt(h, l, d) \ + arc4_crypt(h, l, (unsigned char *)d, (unsigned char *)d) +#define RC4_encrypt2(h, l, s, d) \ + arc4_crypt(h, l, (unsigned char *)s, (unsigned char *)d) +#define RC4_free(h) free(h) + +#elif defined(USE_GNUTLS) +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX gcry_md_hd_t +#define HMAC_setup(ctx, key, len) \ + gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ + gcry_md_setkey(ctx, key, len) +#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + memcpy(dig, gcry_md_read(ctx, 0), dlen); \ + gcry_md_close(ctx) + +typedef gcry_cipher_hd_t RC4_handle; +#define RC4_alloc(h) \ + gcry_cipher_open(h, GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM, 0) +#define RC4_setkey(h, l, k) gcry_cipher_setkey(h, k, l) +#define RC4_encrypt(h, l, d) gcry_cipher_encrypt(h, (void *)d, l, NULL, 0) +#define RC4_encrypt2(h, l, s, d) \ + gcry_cipher_encrypt(h, (void *)d, l, (void *)s, l) +#define RC4_free(h) gcry_cipher_close(h) + +#else /* USE_OPENSSL */ +#include +#include +#include +#if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH) +#error Your OpenSSL is too old, need 0.9.8 or newer with SHA256 +#endif +#define HMAC_setup(ctx, key, len) \ + HMAC_CTX_init(&ctx); \ + HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0) +#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + HMAC_Final(&ctx, dig, &dlen); \ + HMAC_CTX_cleanup(&ctx) + +typedef RC4_KEY *RC4_handle; +#define RC4_alloc(h) *h = malloc(sizeof(RC4_KEY)) +#define RC4_setkey(h, l, k) RC4_set_key(h, l, k) +#define RC4_encrypt(h, l, d) RC4(h, l, (uint8_t *)d, (uint8_t *)d) +#define RC4_encrypt2(h, l, s, d) RC4(h, l, (uint8_t *)s, (uint8_t *)d) +#define RC4_free(h) free(h) +#endif + +#define FP10 + +#include "dh.h" + +static const uint8_t GenuineFMSKey[] = { + 0x47, 0x65, 0x6e, 0x75, 0x69, 0x6e, 0x65, 0x20, 0x41, 0x64, 0x6f, + 0x62, 0x65, 0x20, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x30, 0x30, 0x31, /* Genuine Adobe Flash Media Server 001 */ + + 0xf0, 0xee, 0xc2, 0x4a, 0x80, 0x68, 0xbe, 0xe8, 0x2e, 0x00, 0xd0, + 0xd1, 0x02, 0x9e, 0x7e, 0x57, 0x6e, 0xec, 0x5d, 0x2d, 0x29, 0x80, + 0x6f, 0xab, 0x93, 0xb8, 0xe6, 0x36, 0xcf, 0xeb, 0x31, 0xae}; /* 68 */ + +static const uint8_t GenuineFPKey[] = { + 0x47, 0x65, 0x6E, 0x75, 0x69, 0x6E, 0x65, 0x20, 0x41, 0x64, 0x6F, + 0x62, 0x65, 0x20, 0x46, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x50, 0x6C, + 0x61, 0x79, 0x65, 0x72, 0x20, 0x30, 0x30, 0x31, /* Genuine Adobe Flash + Player 001 */ + 0xF0, 0xEE, 0xC2, 0x4A, 0x80, 0x68, 0xBE, 0xE8, 0x2E, 0x00, 0xD0, + 0xD1, 0x02, 0x9E, 0x7E, 0x57, 0x6E, 0xEC, 0x5D, 0x2D, 0x29, 0x80, + 0x6F, 0xAB, 0x93, 0xB8, 0xE6, 0x36, 0xCF, 0xEB, 0x31, 0xAE}; /* 62 */ + +static void InitRC4Encryption(uint8_t *secretKey, uint8_t *pubKeyIn, + uint8_t *pubKeyOut, RC4_handle *rc4keyIn, + RC4_handle *rc4keyOut) { + uint8_t digest[SHA256_DIGEST_LENGTH]; + unsigned int digestLen = 0; + HMAC_CTX ctx; + + RC4_alloc(rc4keyIn); + RC4_alloc(rc4keyOut); + + HMAC_setup(ctx, secretKey, 128); + HMAC_crunch(ctx, pubKeyIn, 128); + HMAC_finish(ctx, digest, digestLen); + + RTMP_Log(RTMP_LOGDEBUG, "RC4 Out Key: "); + RTMP_LogHex(RTMP_LOGDEBUG, digest, 16); + + RC4_setkey(*rc4keyOut, 16, digest); + + HMAC_setup(ctx, secretKey, 128); + HMAC_crunch(ctx, pubKeyOut, 128); + HMAC_finish(ctx, digest, digestLen); + + RTMP_Log(RTMP_LOGDEBUG, "RC4 In Key: "); + RTMP_LogHex(RTMP_LOGDEBUG, digest, 16); + + RC4_setkey(*rc4keyIn, 16, digest); +} + +typedef unsigned int(getoff)(uint8_t *buf, unsigned int len); + +static unsigned int GetDHOffset2(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 768; + unsigned int res; + + assert(RTMP_SIG_SIZE <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 632) + 8; + + if (res + 128 > 767) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate correct DH offset (got %d), exiting!", + __FUNCTION__, res); + exit(1); + } + return res; +} + +static unsigned int GetDigestOffset2(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 772; + unsigned int res; + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 776; + + if (res + 32 > 1535) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate correct digest offset (got %d), exiting", + __FUNCTION__, res); + exit(1); + } + return res; +} + +static unsigned int GetDHOffset1(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 1532; + unsigned int res; + + assert(RTMP_SIG_SIZE <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 632) + 772; + + if (res + 128 > 1531) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate DH offset (got %d), exiting!", + __FUNCTION__, res); + exit(1); + } + + return res; +} + +static unsigned int GetDigestOffset1(uint8_t *handshake, unsigned int len) { + unsigned int offset = 0; + uint8_t *ptr = handshake + 8; + unsigned int res; + + assert(12 <= len); + + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + ptr++; + offset += (*ptr); + + res = (offset % 728) + 12; + + if (res + 32 > 771) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't calculate digest offset (got %d), exiting!", + __FUNCTION__, res); + exit(1); + } + + return res; +} + +static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2}; +static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2}; + +static void HMACsha256(const uint8_t *message, size_t messageLen, + const uint8_t *key, size_t keylen, uint8_t *digest) { + unsigned int digestLen; + HMAC_CTX ctx; + + HMAC_setup(ctx, key, keylen); + HMAC_crunch(ctx, message, messageLen); + HMAC_finish(ctx, digest, digestLen); + + assert(digestLen == 32); +} + +static void CalculateDigest(unsigned int digestPos, uint8_t *handshakeMessage, + const uint8_t *key, size_t keyLen, + uint8_t *digest) { + const int messageLen = RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + uint8_t message[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH]; + + memcpy(message, handshakeMessage, digestPos); + memcpy(message + digestPos, + &handshakeMessage[digestPos + SHA256_DIGEST_LENGTH], + messageLen - digestPos); + + HMACsha256(message, messageLen, key, keyLen, digest); +} + +static int VerifyDigest(unsigned int digestPos, uint8_t *handshakeMessage, + const uint8_t *key, size_t keyLen) { + uint8_t calcDigest[SHA256_DIGEST_LENGTH]; + + CalculateDigest(digestPos, handshakeMessage, key, keyLen, calcDigest); + + return memcmp(&handshakeMessage[digestPos], calcDigest, + SHA256_DIGEST_LENGTH) == 0; +} + +/* handshake + * + * Type = [1 bytes] plain: 0x03, encrypted: 0x06, 0x08, 0x09 + * -------------------------------------------------------------------- [1536 + * bytes] + * Uptime = [4 bytes] big endian unsigned number, uptime + * Version = [4 bytes] each byte represents a version number, e.g. + * 9.0.124.0 + * ... + * + */ + +static const uint32_t rtmpe8_keys[16][4] = { + {0xbff034b2, 0x11d9081f, 0xccdfb795, 0x748de732}, + {0x086a5eb6, 0x1743090e, 0x6ef05ab8, 0xfe5a39e2}, + {0x7b10956f, 0x76ce0521, 0x2388a73a, 0x440149a1}, + {0xa943f317, 0xebf11bb2, 0xa691a5ee, 0x17f36339}, + {0x7a30e00a, 0xb529e22c, 0xa087aea5, 0xc0cb79ac}, + {0xbdce0c23, 0x2febdeff, 0x1cfaae16, 0x1123239d}, + {0x55dd3f7b, 0x77e7e62e, 0x9bb8c499, 0xc9481ee4}, + {0x407bb6b4, 0x71e89136, 0xa7aebf55, 0xca33b839}, + {0xfcf6bdc3, 0xb63c3697, 0x7ce4f825, 0x04d959b2}, + {0x28e091fd, 0x41954c4c, 0x7fb7db00, 0xe3a066f8}, + {0x57845b76, 0x4f251b03, 0x46d45bcd, 0xa2c30d29}, + {0x0acceef8, 0xda55b546, 0x03473452, 0x5863713b}, + {0xb82075dc, 0xa75f1fee, 0xd84268e8, 0xa72a44cc}, + {0x07cf6e9e, 0xa16d7b25, 0x9fa7ae6c, 0xd92f5629}, + {0xfeb1eae4, 0x8c8c3ce1, 0x4e0064a7, 0x6a387c2a}, + {0x893a9427, 0xcc3013a2, 0xf106385b, 0xa829f927}}; + +/* RTMPE type 8 uses XTEA on the regular signature + * http://en.wikipedia.org/wiki/XTEA + */ +static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid) { + unsigned int i, num_rounds = 32; + uint32_t v0, v1, sum = 0, delta = 0x9E3779B9; + uint32_t const *k; + + v0 = in[0] | (in[1] << 8) | (in[2] << 16) | (in[3] << 24); + v1 = in[4] | (in[5] << 8) | (in[6] << 16) | (in[7] << 24); + k = rtmpe8_keys[keyid]; + + for (i = 0; i < num_rounds; i++) { + v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); + sum += delta; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]); + } + + out[0] = v0; + v0 >>= 8; + out[1] = v0; + v0 >>= 8; + out[2] = v0; + v0 >>= 8; + out[3] = v0; + + out[4] = v1; + v1 >>= 8; + out[5] = v1; + v1 >>= 8; + out[6] = v1; + v1 >>= 8; + out[7] = v1; +} + +static int HandShake(RTMP *r, int FP9HandShake) { + int i, offalg = 0; + int dhposClient = 0; + int digestPosClient = 0; + int encrypted = r->Link.protocol & RTMP_FEATURE_ENC; + + RC4_handle keyIn = 0; + RC4_handle keyOut = 0; + + int32_t *ip; + uint32_t uptime; + + uint8_t clientbuf[RTMP_SIG_SIZE + 4], *clientsig = clientbuf + 4; + uint8_t serversig[RTMP_SIG_SIZE], client2[RTMP_SIG_SIZE], *reply; + uint8_t type; + getoff *getdh = NULL, *getdig = NULL; + + if (encrypted || r->Link.SWFSize) + FP9HandShake = TRUE; + else + FP9HandShake = FALSE; + + r->Link.rc4keyIn = r->Link.rc4keyOut = 0; + + if (encrypted) { + clientsig[-1] = 0x06; /* 0x08 is RTMPE as well */ + offalg = 1; + } else + clientsig[-1] = 0x03; + + uptime = htonl(RTMP_GetTime()); + memcpy(clientsig, &uptime, 4); + + if (FP9HandShake) { + /* set version to at least 9.0.115.0 */ + if (encrypted) { + clientsig[4] = 128; + clientsig[6] = 3; + } else { + clientsig[4] = 10; + clientsig[6] = 45; + } + clientsig[5] = 0; + clientsig[7] = 2; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client type: %02X", __FUNCTION__, + clientsig[-1]); + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + } else { + memset(&clientsig[4], 0, 4); + } + +/* generate random data */ +#ifdef _DEBUG + memset(clientsig + 8, 0, RTMP_SIG_SIZE - 8); +#else + ip = (int32_t *)(clientsig + 8); + for (i = 2; i < RTMP_SIG_SIZE / 4; i++) + *ip++ = rand(); +#endif + + /* set handshake digest */ + if (FP9HandShake) { + if (encrypted) { + /* generate Diffie-Hellmann parameters */ + r->Link.dh = DHInit(1024); + if (!r->Link.dh) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!", + __FUNCTION__); + return FALSE; + } + + dhposClient = getdh(clientsig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, + dhposClient); + + if (!DHGenerateKey(r->Link.dh)) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't generate Diffie-Hellmann public key!", + __FUNCTION__); + return FALSE; + } + + if (!DHGetPublicKey(r->Link.dh, &clientsig[dhposClient], 128)) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__); + return FALSE; + } + } + + digestPosClient = + getdig(clientsig, RTMP_SIG_SIZE); /* reuse this value in verification */ + RTMP_Log(RTMP_LOGDEBUG, "%s: Client digest offset: %d", __FUNCTION__, + digestPosClient); + + CalculateDigest(digestPosClient, clientsig, GenuineFPKey, 30, + &clientsig[digestPosClient]); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Initial client digest: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, clientsig + digestPosClient, + SHA256_DIGEST_LENGTH); + } + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, "Clientsig: "); + RTMP_LogHex(RTMP_LOGDEBUG, clientsig, RTMP_SIG_SIZE); +#endif + + if (!WriteN(r, (char *)clientsig - 1, RTMP_SIG_SIZE + 1)) + return FALSE; + + if (ReadN(r, (char *)&type, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); + + if (type != clientsig[-1]) + RTMP_Log(RTMP_LOGWARNING, + "%s: Type mismatch: client sent %d, server answered %d", + __FUNCTION__, clientsig[-1], type); + + if (ReadN(r, (char *)serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + /* decode server response */ + memcpy(&uptime, serversig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, + serversig[4], serversig[5], serversig[6], serversig[7]); + + if (FP9HandShake && type == 3 && !serversig[4]) + FP9HandShake = FALSE; + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, "Server signature:"); + RTMP_LogHex(RTMP_LOGDEBUG, serversig, RTMP_SIG_SIZE); +#endif + + if (FP9HandShake) { + uint8_t digestResp[SHA256_DIGEST_LENGTH]; + uint8_t *signatureResp = NULL; + + /* we have to use this signature now to find the correct algorithms for + * getting the digest and DH positions */ + int digestPosServer = getdig(serversig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36)) { + RTMP_Log(RTMP_LOGWARNING, "Trying different position for server digest!"); + offalg ^= 1; + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + digestPosServer = getdig(serversig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36)) { + RTMP_Log( + RTMP_LOGERROR, + "Couldn't verify the server digest"); /* continuing anyway will + probably fail */ + return FALSE; + } + } + + /* generate SWFVerification token (SHA256 HMAC hash of decompressed SWF, key + * are the last 32 bytes of the server handshake) */ + if (r->Link.SWFSize) { + const char swfVerify[] = {0x01, 0x01}; + char *vend = r->Link.SWFVerificationResponse + + sizeof(r->Link.SWFVerificationResponse); + + memcpy(r->Link.SWFVerificationResponse, swfVerify, 2); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[2], vend, + r->Link.SWFSize); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[6], vend, + r->Link.SWFSize); + HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH, + &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH], + SHA256_DIGEST_LENGTH, + (uint8_t *)&r->Link.SWFVerificationResponse[10]); + } + + /* do Diffie-Hellmann Key exchange for encrypted RTMP */ + if (encrypted) { + /* compute secret key */ + uint8_t secretKey[128] = {0}; + int len, dhposServer; + + dhposServer = getdh(serversig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: Server DH public key offset: %d", + __FUNCTION__, dhposServer); + len = DHComputeSharedSecretKey(r->Link.dh, &serversig[dhposServer], 128, + secretKey); + if (len < 0) { + RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__); + return FALSE; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Secret key: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128); + + InitRC4Encryption(secretKey, (uint8_t *)&serversig[dhposServer], + (uint8_t *)&clientsig[dhposClient], &keyIn, &keyOut); + } + + reply = client2; +#ifdef _DEBUG + memset(reply, 0xff, RTMP_SIG_SIZE); +#else + ip = (int32_t *)reply; + for (i = 0; i < RTMP_SIG_SIZE / 4; i++) + *ip++ = rand(); +#endif + /* calculate response now */ + signatureResp = reply + RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + + HMACsha256(&serversig[digestPosServer], SHA256_DIGEST_LENGTH, GenuineFPKey, + sizeof(GenuineFPKey), digestResp); + HMACsha256(reply, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, + SHA256_DIGEST_LENGTH, signatureResp); + + /* some info output */ + RTMP_Log(RTMP_LOGDEBUG, + "%s: Calculated digest key from secure key and server digest: ", + __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH); + +#ifdef FP10 + if (type == 8) { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i = 0; i < SHA256_DIGEST_LENGTH; i += 8) + rtmpe8_sig(sig + i, sig + i, dptr[i] % 15); + } +#if 0 + else if (type == 9)) + { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i=0; iLink.rc4keyIn = keyIn; + r->Link.rc4keyOut = keyOut; + + /* update the keystreams */ + if (r->Link.rc4keyIn) { + RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *)buff); + } + + if (r->Link.rc4keyOut) { + RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *)buff); + } + } + } else { + if (memcmp(serversig, clientsig, RTMP_SIG_SIZE) != 0) { + RTMP_Log(RTMP_LOGWARNING, "%s: client signature does not match!", + __FUNCTION__); + } + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Handshaking finished....", __FUNCTION__); + return TRUE; +} + +static int SHandShake(RTMP *r) { + int i, offalg = 0; + int dhposServer = 0; + int digestPosServer = 0; + RC4_handle keyIn = 0; + RC4_handle keyOut = 0; + int FP9HandShake = FALSE; + int encrypted; + int32_t *ip; + + uint8_t clientsig[RTMP_SIG_SIZE]; + uint8_t serverbuf[RTMP_SIG_SIZE + 4], *serversig = serverbuf + 4; + uint8_t type; + uint32_t uptime; + getoff *getdh = NULL, *getdig = NULL; + + if (ReadN(r, (char *)&type, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + if (ReadN(r, (char *)clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Requested : %02X", __FUNCTION__, type); + RTMP_LogHex(RTMP_LOGDEBUG2, clientsig, RTMP_SIG_SIZE); + + if (type == 3) { + encrypted = FALSE; + } else if (type == 6 || type == 8) { + offalg = 1; + encrypted = TRUE; + FP9HandShake = TRUE; + r->Link.protocol |= RTMP_FEATURE_ENC; + /* use FP10 if client is capable */ + if (clientsig[4] == 128) + type = 8; + } else { + RTMP_Log(RTMP_LOGERROR, "%s: Unknown version %02x", __FUNCTION__, type); + return FALSE; + } + + if (!FP9HandShake && clientsig[4]) + FP9HandShake = TRUE; + + serversig[-1] = type; + + r->Link.rc4keyIn = r->Link.rc4keyOut = 0; + + uptime = htonl(RTMP_GetTime()); + memcpy(serversig, &uptime, 4); + + if (FP9HandShake) { + /* Server version */ + serversig[4] = 3; + serversig[5] = 5; + serversig[6] = 1; + serversig[7] = 1; + + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + } else { + memset(&serversig[4], 0, 4); + } + +/* generate random data */ +#ifdef _DEBUG + memset(serversig + 8, 0, RTMP_SIG_SIZE - 8); +#else + ip = (int32_t *)(serversig + 8); + for (i = 2; i < RTMP_SIG_SIZE / 4; i++) + *ip++ = rand(); +#endif + + /* set handshake digest */ + if (FP9HandShake) { + if (encrypted) { + /* generate Diffie-Hellmann parameters */ + r->Link.dh = DHInit(1024); + if (!r->Link.dh) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't initialize Diffie-Hellmann!", + __FUNCTION__); + return FALSE; + } + + dhposServer = getdh(serversig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: DH pubkey position: %d", __FUNCTION__, + dhposServer); + + if (!DHGenerateKey(r->Link.dh)) { + RTMP_Log(RTMP_LOGERROR, + "%s: Couldn't generate Diffie-Hellmann public key!", + __FUNCTION__); + return FALSE; + } + + if (!DHGetPublicKey(r->Link.dh, (uint8_t *)&serversig[dhposServer], + 128)) { + RTMP_Log(RTMP_LOGERROR, "%s: Couldn't write public key!", __FUNCTION__); + return FALSE; + } + } + + digestPosServer = + getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */ + RTMP_Log(RTMP_LOGDEBUG, "%s: Server digest offset: %d", __FUNCTION__, + digestPosServer); + + CalculateDigest(digestPosServer, serversig, GenuineFMSKey, 36, + &serversig[digestPosServer]); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Initial server digest: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, serversig + digestPosServer, + SHA256_DIGEST_LENGTH); + } + + RTMP_Log(RTMP_LOGDEBUG2, "Serversig: "); + RTMP_LogHex(RTMP_LOGDEBUG2, serversig, RTMP_SIG_SIZE); + + if (!WriteN(r, (char *)serversig - 1, RTMP_SIG_SIZE + 1)) + return FALSE; + + /* decode client response */ + memcpy(&uptime, clientsig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, + clientsig[4], clientsig[5], clientsig[6], clientsig[7]); + + if (FP9HandShake) { + uint8_t digestResp[SHA256_DIGEST_LENGTH]; + uint8_t *signatureResp = NULL; + + /* we have to use this signature now to find the correct algorithms for + * getting the digest and DH positions */ + int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log(RTMP_LOGWARNING, "Trying different position for client digest!"); + offalg ^= 1; + getdig = digoff[offalg]; + getdh = dhoff[offalg]; + + digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); + + if (!VerifyDigest(digestPosClient, clientsig, GenuineFPKey, 30)) { + RTMP_Log( + RTMP_LOGERROR, + "Couldn't verify the client digest"); /* continuing anyway will + probably fail */ + return FALSE; + } + } + + /* generate SWFVerification token (SHA256 HMAC hash of decompressed SWF, key + * are the last 32 bytes of the server handshake) */ + if (r->Link.SWFSize) { + const char swfVerify[] = {0x01, 0x01}; + char *vend = r->Link.SWFVerificationResponse + + sizeof(r->Link.SWFVerificationResponse); + + memcpy(r->Link.SWFVerificationResponse, swfVerify, 2); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[2], vend, + r->Link.SWFSize); + AMF_EncodeInt32(&r->Link.SWFVerificationResponse[6], vend, + r->Link.SWFSize); + HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH, + &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH], + SHA256_DIGEST_LENGTH, + (uint8_t *)&r->Link.SWFVerificationResponse[10]); + } + + /* do Diffie-Hellmann Key exchange for encrypted RTMP */ + if (encrypted) { + int dhposClient, len; + /* compute secret key */ + uint8_t secretKey[128] = {0}; + + dhposClient = getdh(clientsig, RTMP_SIG_SIZE); + RTMP_Log(RTMP_LOGDEBUG, "%s: Client DH public key offset: %d", + __FUNCTION__, dhposClient); + len = DHComputeSharedSecretKey( + r->Link.dh, (uint8_t *)&clientsig[dhposClient], 128, secretKey); + if (len < 0) { + RTMP_Log(RTMP_LOGDEBUG, "%s: Wrong secret key position!", __FUNCTION__); + return FALSE; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Secret key: ", __FUNCTION__); + RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128); + + InitRC4Encryption(secretKey, (uint8_t *)&clientsig[dhposClient], + (uint8_t *)&serversig[dhposServer], &keyIn, &keyOut); + } + + /* calculate response now */ + signatureResp = clientsig + RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH; + + HMACsha256(&clientsig[digestPosClient], SHA256_DIGEST_LENGTH, GenuineFMSKey, + sizeof(GenuineFMSKey), digestResp); + HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp, + SHA256_DIGEST_LENGTH, signatureResp); +#ifdef FP10 + if (type == 8) { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i = 0; i < SHA256_DIGEST_LENGTH; i += 8) + rtmpe8_sig(sig + i, sig + i, dptr[i] % 15); + } +#if 0 + else if (type == 9)) + { + uint8_t *dptr = digestResp; + uint8_t *sig = signatureResp; + /* encrypt signatureResp */ + for (i=0; iLink.rc4keyIn = keyIn; + r->Link.rc4keyOut = keyOut; + + /* update the keystreams */ + if (r->Link.rc4keyIn) { + RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *)buff); + } + + if (r->Link.rc4keyOut) { + RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *)buff); + } + } + } else { + if (memcmp(serversig, clientsig, RTMP_SIG_SIZE) != 0) { + RTMP_Log(RTMP_LOGWARNING, "%s: client signature does not match!", + __FUNCTION__); + } + } + + RTMP_Log(RTMP_LOGDEBUG, "%s: Handshaking finished....", __FUNCTION__); + return TRUE; +} diff --git a/LFLiveKit/Vendor/pili-librtmp/hashswf.c b/LFLiveKit/Vendor/pili-librtmp/hashswf.c new file mode 100644 index 00000000..88d20c7f --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/hashswf.c @@ -0,0 +1,626 @@ +/* + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include + +#include "http.h" +#include "log.h" +#include "rtmp_sys.h" + +#ifdef CRYPTO +#ifdef USE_POLARSSL +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX sha2_context +#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) +#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + sha2_hmac_finish(&ctx, dig) +#define HMAC_close(ctx) +#elif defined(USE_GNUTLS) +#include +#include +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH 32 +#endif +#define HMAC_CTX gcry_md_hd_t +#define HMAC_setup(ctx, key, len) \ + gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ + gcry_md_setkey(ctx, key, len) +#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) +#define HMAC_finish(ctx, dig, dlen) \ + dlen = SHA256_DIGEST_LENGTH; \ + memcpy(dig, gcry_md_read(ctx, 0), dlen) +#define HMAC_close(ctx) gcry_md_close(ctx) +#else /* USE_OPENSSL */ +#include +#include +#include +#include +#define HMAC_setup(ctx, key, len) \ + HMAC_CTX_init(&ctx); \ + HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0) +#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len) +#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen); +#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx) +#endif + +extern void RTMP_TLS_Init(); +extern TLS_CTX RTMP_TLS_ctx; + +#endif /* CRYPTO */ + +#include + +#define AGENT "Mozilla/5.0" + +HTTPResult + HTTP_get(struct HTTP_ctx *http, const char *url, HTTP_read_callback *cb) { + char *host, *path; + char *p1, *p2; + char hbuf[256]; + int port = 80; +#ifdef CRYPTO + int ssl = 0; +#endif + int hlen, flen = 0; + int rc, i; + int len_known; + HTTPResult ret = HTTPRES_OK; + // struct sockaddr_in sa; + PILI_RTMPSockBuf sb = {0}; + + http->status = -1; + + // memset(&sa, 0, sizeof(struct sockaddr_in)); + // sa.sin_family = AF_INET; + + /* we only handle http here */ + if (strncasecmp(url, "http", 4)) + return HTTPRES_BAD_REQUEST; + + if (url[4] == 's') { +#ifdef CRYPTO + ssl = 1; + port = 443; + if (!RTMP_TLS_ctx) + RTMP_TLS_Init(); +#else + return HTTPRES_BAD_REQUEST; +#endif + } + + p1 = strchr(url + 4, ':'); + if (!p1 || strncmp(p1, "://", 3)) + return HTTPRES_BAD_REQUEST; + + host = p1 + 3; + path = strchr(host, '/'); + hlen = path - host; + strncpy(hbuf, host, hlen); + hbuf[hlen] = '\0'; + host = hbuf; + p1 = strrchr(host, ':'); + if (p1) { + *p1++ = '\0'; + port = atoi(p1); + } + + // sa.sin_addr.s_addr = inet_addr(host); + // if (sa.sin_addr.s_addr == INADDR_NONE) + // { + // struct hostent *hp = gethostbyname(host); + // if (!hp || !hp->h_addr) + // return HTTPRES_LOST_CONNECTION; + // sa.sin_addr = *(struct in_addr *)hp->h_addr; + // } + // sa.sin_port = htons(port); + struct addrinfo hints = {0}, *ai, *cur_ai; + char portstr[10]; + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + snprintf(portstr, sizeof(portstr), "%d", port); + ret = getaddrinfo(host, portstr, &hints, &ai); + if (ret != 0) { + return HTTPRES_LOST_CONNECTION; + } + + cur_ai = ai; + + sb.sb_socket = socket(cur_ai->ai_family, + cur_ai->ai_socktype, + cur_ai->ai_protocol); + // sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (sb.sb_socket == -1) { + freeaddrinfo(ai); + return HTTPRES_LOST_CONNECTION; + } + i = sprintf(sb.sb_buf, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s\r\nReferrer: %.*s\r\n", + path, AGENT, host, (int)(path - url + 1), url); + if (http->date[0]) + i += sprintf(sb.sb_buf + i, "If-Modified-Since: %s\r\n", http->date); + i += sprintf(sb.sb_buf + i, "\r\n"); + + if (cur_ai->ai_family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)cur_ai->ai_addr; + in6->sin6_port = htons(port); + } + + if (connect(sb.sb_socket, cur_ai->ai_addr, cur_ai->ai_addrlen) < 0) { + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } +#ifdef CRYPTO + if (ssl) { +#ifdef NO_SSL + RTMP_Log(RTMP_LOGERROR, "%s, No SSL/TLS support", __FUNCTION__); + ret = HTTPRES_BAD_REQUEST; + goto leave; +#else + TLS_client(RTMP_TLS_ctx, sb.sb_ssl); + TLS_setfd(sb.sb_ssl, sb.sb_socket); + if ((i = TLS_connect(sb.sb_ssl)) < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } +#endif + } +#endif + PILI_RTMPSockBuf_Send(&sb, sb.sb_buf, i); + +/* set timeout */ +#define HTTP_TIMEOUT 5 + { + SET_RCVTIMEO(tv, HTTP_TIMEOUT); + if (setsockopt(sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { + RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %ds failed!", + __FUNCTION__, HTTP_TIMEOUT); + } + } + + sb.sb_size = 0; + sb.sb_timedout = FALSE; + if (PILI_RTMPSockBuf_Fill(&sb) < 1) { + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } + if (strncmp(sb.sb_buf, "HTTP/1", 6)) { + ret = HTTPRES_BAD_REQUEST; + goto leave; + } + + p1 = strchr(sb.sb_buf, ' '); + rc = atoi(p1 + 1); + http->status = rc; + + if (rc >= 300) { + if (rc == 304) { + ret = HTTPRES_OK_NOT_MODIFIED; + goto leave; + } else if (rc == 404) + ret = HTTPRES_NOT_FOUND; + else if (rc >= 500) + ret = HTTPRES_SERVER_ERROR; + else if (rc >= 400) + ret = HTTPRES_BAD_REQUEST; + else + ret = HTTPRES_REDIRECTED; + } + + p1 = memchr(sb.sb_buf, '\n', sb.sb_size); + if (!p1) { + ret = HTTPRES_BAD_REQUEST; + goto leave; + } + sb.sb_start = p1 + 1; + sb.sb_size -= sb.sb_start - sb.sb_buf; + + while ((p2 = memchr(sb.sb_start, '\r', sb.sb_size))) { + if (*sb.sb_start == '\r') { + sb.sb_start += 2; + sb.sb_size -= 2; + break; + } else if (!strncasecmp(sb.sb_start, "Content-Length: ", sizeof("Content-Length: ") - 1)) { + flen = atoi(sb.sb_start + sizeof("Content-Length: ") - 1); + } else if (!strncasecmp(sb.sb_start, "Last-Modified: ", sizeof("Last-Modified: ") - 1)) { + *p2 = '\0'; + strcpy(http->date, sb.sb_start + sizeof("Last-Modified: ") - 1); + } + p2 += 2; + sb.sb_size -= p2 - sb.sb_start; + sb.sb_start = p2; + if (sb.sb_size < 1) { + if (PILI_RTMPSockBuf_Fill(&sb) < 1) { + ret = HTTPRES_LOST_CONNECTION; + goto leave; + } + } + } + + len_known = flen > 0; + while ((!len_known || flen > 0) && + (sb.sb_size > 0 || PILI_RTMPSockBuf_Fill(&sb) > 0)) { + cb(sb.sb_start, 1, sb.sb_size, http->data); + if (len_known) + flen -= sb.sb_size; + http->size += sb.sb_size; + sb.sb_size = 0; + } + + if (flen > 0) + ret = HTTPRES_LOST_CONNECTION; + +leave: + PILI_RTMPSockBuf_Close(&sb); + freeaddrinfo(ai); + return ret; +} + +#ifdef CRYPTO + +#define CHUNK 16384 + +struct info { + z_stream *zs; + HMAC_CTX ctx; + int first; + int zlib; + int size; +}; + +static size_t + swfcrunch(void *ptr, size_t size, size_t nmemb, void *stream) { + struct info *i = stream; + char *p = ptr; + size_t len = size * nmemb; + + if (i->first) { + i->first = 0; + /* compressed? */ + if (!strncmp(p, "CWS", 3)) { + *p = 'F'; + i->zlib = 1; + } + HMAC_crunch(i->ctx, (unsigned char *)p, 8); + p += 8; + len -= 8; + i->size = 8; + } + + if (i->zlib) { + unsigned char out[CHUNK]; + i->zs->next_in = (unsigned char *)p; + i->zs->avail_in = len; + do { + i->zs->avail_out = CHUNK; + i->zs->next_out = out; + inflate(i->zs, Z_NO_FLUSH); + len = CHUNK - i->zs->avail_out; + i->size += len; + HMAC_crunch(i->ctx, out, len); + } while (i->zs->avail_out == 0); + } else { + i->size += len; + HMAC_crunch(i->ctx, (unsigned char *)p, len); + } + return size * nmemb; +} + +static int tzoff; +static int tzchecked; + +#define JAN02_1980 318340800 + +static const char *monthtab[12] = {"Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec"}; +static const char *days[] = + {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; + +/* Parse an HTTP datestamp into Unix time */ +static time_t + make_unix_time(char *s) { + struct tm time; + int i, ysub = 1900, fmt = 0; + char *month; + char *n; + time_t res; + + if (s[3] != ' ') { + fmt = 1; + if (s[3] != ',') + ysub = 0; + } + for (n = s; *n; ++n) + if (*n == '-' || *n == ':') + *n = ' '; + + time.tm_mon = 0; + n = strchr(s, ' '); + if (fmt) { + /* Day, DD-MMM-YYYY HH:MM:SS GMT */ + time.tm_mday = strtol(n + 1, &n, 0); + month = n + 1; + n = strchr(month, ' '); + time.tm_year = strtol(n + 1, &n, 0); + time.tm_hour = strtol(n + 1, &n, 0); + time.tm_min = strtol(n + 1, &n, 0); + time.tm_sec = strtol(n + 1, NULL, 0); + } else { + /* Unix ctime() format. Does not conform to HTTP spec. */ + /* Day MMM DD HH:MM:SS YYYY */ + month = n + 1; + n = strchr(month, ' '); + while (isspace(*n)) + n++; + time.tm_mday = strtol(n, &n, 0); + time.tm_hour = strtol(n + 1, &n, 0); + time.tm_min = strtol(n + 1, &n, 0); + time.tm_sec = strtol(n + 1, &n, 0); + time.tm_year = strtol(n + 1, NULL, 0); + } + if (time.tm_year > 100) + time.tm_year -= ysub; + + for (i = 0; i < 12; i++) + if (!strncasecmp(month, monthtab[i], 3)) { + time.tm_mon = i; + break; + } + time.tm_isdst = 0; /* daylight saving is never in effect in GMT */ + + /* this is normally the value of extern int timezone, but some + * braindead C libraries don't provide it. + */ + if (!tzchecked) { + struct tm *tc; + time_t then = JAN02_1980; + tc = localtime(&then); + tzoff = (12 - tc->tm_hour) * 3600 + tc->tm_min * 60 + tc->tm_sec; + tzchecked = 1; + } + res = mktime(&time); + /* Unfortunately, mktime() assumes the input is in local time, + * not GMT, so we have to correct it here. + */ + if (res != -1) + res += tzoff; + return res; +} + +/* Convert a Unix time to a network time string + * Weekday, DD-MMM-YYYY HH:MM:SS GMT + */ +void strtime(time_t *t, char *s) { + struct tm *tm; + + tm = gmtime((time_t *)t); + sprintf(s, "%s, %02d %s %d %02d:%02d:%02d GMT", + days[tm->tm_wday], tm->tm_mday, monthtab[tm->tm_mon], + tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec); +} + +#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) + +int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, + int age) { + FILE *f = NULL; + char *path, date[64], cctim[64]; + long pos = 0; + time_t ctim = -1, cnow; + int i, got = 0, ret = 0; + unsigned int hlen; + struct info in = {0}; + struct HTTP_ctx http = {0}; + HTTPResult httpres; + z_stream zs = {0}; + AVal home, hpre; + + date[0] = '\0'; +#ifdef _WIN32 +#ifdef _XBOX + hpre.av_val = "Q:"; + hpre.av_len = 2; + home.av_val = "\\UserData"; +#else + hpre.av_val = getenv("HOMEDRIVE"); + hpre.av_len = strlen(hpre.av_val); + home.av_val = getenv("HOMEPATH"); +#endif +#define DIRSEP "\\" + +#else /* !_WIN32 */ + hpre.av_val = ""; + hpre.av_len = 0; + home.av_val = getenv("HOME"); +#define DIRSEP "/" +#endif + if (!home.av_val) + home.av_val = "."; + home.av_len = strlen(home.av_val); + + /* SWF hash info is cached in a fixed-format file. + * url: + * ctim: HTTP datestamp of when we last checked it. + * date: HTTP datestamp of the SWF's last modification. + * size: SWF size in hex + * hash: SWF hash in hex + * + * These fields must be present in this order. All fields + * besides URL are fixed size. + */ + path = malloc(hpre.av_len + home.av_len + sizeof(DIRSEP ".swfinfo")); + sprintf(path, "%s%s" DIRSEP ".swfinfo", hpre.av_val, home.av_val); + + f = fopen(path, "r+"); + while (f) { + char buf[4096], *file, *p; + + file = strchr(url, '/'); + if (!file) + break; + file += 2; + file = strchr(file, '/'); + if (!file) + break; + file++; + hlen = file - url; + p = strrchr(file, '/'); + if (p) + file = p; + else + file--; + + while (fgets(buf, sizeof(buf), f)) { + char *r1; + + got = 0; + + if (strncmp(buf, "url: ", 5)) + continue; + if (strncmp(buf + 5, url, hlen)) + continue; + r1 = strrchr(buf, '/'); + i = strlen(r1); + r1[--i] = '\0'; + if (strncmp(r1, file, i)) + continue; + pos = ftell(f); + while (got < 4 && fgets(buf, sizeof(buf), f)) { + if (!strncmp(buf, "size: ", 6)) { + *size = strtol(buf + 6, NULL, 16); + got++; + } else if (!strncmp(buf, "hash: ", 6)) { + unsigned char *ptr = hash, *in = (unsigned char *)buf + 6; + int l = strlen((char *)in) - 1; + for (i = 0; i < l; i += 2) + *ptr++ = (HEX2BIN(in[i]) << 4) | HEX2BIN(in[i + 1]); + got++; + } else if (!strncmp(buf, "date: ", 6)) { + buf[strlen(buf) - 1] = '\0'; + strncpy(date, buf + 6, sizeof(date)); + got++; + } else if (!strncmp(buf, "ctim: ", 6)) { + buf[strlen(buf) - 1] = '\0'; + ctim = make_unix_time(buf + 6); + got++; + } else if (!strncmp(buf, "url: ", 5)) + break; + } + break; + } + break; + } + + cnow = time(NULL); + /* If we got a cache time, see if it's young enough to use directly */ + if (age && ctim > 0) { + ctim = cnow - ctim; + ctim /= 3600 * 24; /* seconds to days */ + if (ctim < age) /* ok, it's new enough */ + goto out; + } + + in.first = 1; + HMAC_setup(in.ctx, "Genuine Adobe Flash Player 001", 30); + inflateInit(&zs); + in.zs = &zs; + + http.date = date; + http.data = ∈ + + httpres = HTTP_get(&http, url, swfcrunch); + + inflateEnd(&zs); + + if (httpres != HTTPRES_OK && httpres != HTTPRES_OK_NOT_MODIFIED) { + ret = -1; + if (httpres == HTTPRES_LOST_CONNECTION) + RTMP_Log(RTMP_LOGERROR, "%s: connection lost while downloading swfurl %s", + __FUNCTION__, url); + else if (httpres == HTTPRES_NOT_FOUND) + RTMP_Log(RTMP_LOGERROR, "%s: swfurl %s not found", __FUNCTION__, url); + else + RTMP_Log(RTMP_LOGERROR, "%s: couldn't contact swfurl %s (HTTP error %d)", + __FUNCTION__, url, http.status); + } else { + if (got && pos) + fseek(f, pos, SEEK_SET); + else { + char *q; + if (!f) + f = fopen(path, "w"); + if (!f) { + int err = errno; + RTMP_Log(RTMP_LOGERROR, + "%s: couldn't open %s for writing, errno %d (%s)", + __FUNCTION__, path, err, strerror(err)); + ret = -1; + goto out; + } + fseek(f, 0, SEEK_END); + q = strchr(url, '?'); + if (q) + i = q - url; + else + i = strlen(url); + + fprintf(f, "url: %.*s\n", i, url); + } + strtime(&cnow, cctim); + fprintf(f, "ctim: %s\n", cctim); + + if (!in.first) { + HMAC_finish(in.ctx, hash, hlen); + *size = in.size; + + fprintf(f, "date: %s\n", date); + fprintf(f, "size: %08x\n", in.size); + fprintf(f, "hash: "); + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) + fprintf(f, "%02x", hash[i]); + fprintf(f, "\n"); + } + } + HMAC_close(in.ctx); +out: + free(path); + if (f) + fclose(f); + return ret; +} +#else +int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, + int age) { + return -1; +} +#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/http.h b/LFLiveKit/Vendor/pili-librtmp/http.h new file mode 100644 index 00000000..1eb7a462 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/http.h @@ -0,0 +1,49 @@ +#ifndef __RTMP_HTTP_H__ +#define __RTMP_HTTP_H__ +/* + * Copyright (C) 2010 Howard Chu + * Copyright (C) 2010 Antti Ajanki + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +typedef enum { + HTTPRES_OK, /* result OK */ + HTTPRES_OK_NOT_MODIFIED, /* not modified since last request */ + HTTPRES_NOT_FOUND, /* not found */ + HTTPRES_BAD_REQUEST, /* client error */ + HTTPRES_SERVER_ERROR, /* server reported an error */ + HTTPRES_REDIRECTED, /* resource has been moved */ + HTTPRES_LOST_CONNECTION /* connection lost while waiting for data */ +} HTTPResult; + +struct HTTP_ctx { + char *date; + int size; + int status; + void *data; +}; + +typedef size_t(HTTP_read_callback)(void *ptr, size_t size, size_t nmemb, + void *stream); + +HTTPResult HTTP_get(struct HTTP_ctx *http, const char *url, + HTTP_read_callback *cb); + +#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/log.c b/LFLiveKit/Vendor/pili-librtmp/log.c new file mode 100644 index 00000000..d3934366 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/log.c @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include +#include + +#include "log.h" +#include "rtmp_sys.h" + +#define MAX_PRINT_LEN 2048 + +RTMP_LogLevel RTMP_debuglevel = RTMP_LOGERROR; + +static int neednl; + +static FILE *fmsg; + +static RTMP_LogCallback rtmp_log_default, *cb = rtmp_log_default; + +static const char *levels[] = { + "CRIT", "ERROR", "WARNING", "INFO", + "DEBUG", "DEBUG2"}; + +static void rtmp_log_default(int level, const char *format, va_list vl) { + char str[MAX_PRINT_LEN] = ""; + + vsnprintf(str, MAX_PRINT_LEN - 1, format, vl); + + /* Filter out 'no-name' */ + if (RTMP_debuglevel < RTMP_LOGALL && strstr(str, "no-name") != NULL) + return; + + if (!fmsg) fmsg = stderr; + + if (level <= RTMP_debuglevel) { + if (neednl) { + putc('\n', fmsg); + neednl = 0; + } + fprintf(fmsg, "%s: %s\n", levels[level], str); +#ifdef _DEBUG + fflush(fmsg); +#endif + } +} + +void RTMP_LogSetOutput(FILE *file) { + fmsg = file; +} + +void RTMP_LogSetLevel(RTMP_LogLevel level) { + RTMP_debuglevel = level; +} + +void RTMP_LogSetCallback(RTMP_LogCallback *cbp) { + cb = cbp; +} + +RTMP_LogLevel RTMP_LogGetLevel() { + return RTMP_debuglevel; +} + +void RTMP_Log(int level, const char *format, ...) { + va_list args; + va_start(args, format); + cb(level, format, args); + va_end(args); +} + +static const char hexdig[] = "0123456789abcdef"; + +void RTMP_LogHex(int level, const uint8_t *data, unsigned long len) { + unsigned long i; + char line[50], *ptr; + + if (level > RTMP_debuglevel) + return; + + ptr = line; + + for (i = 0; i < len; i++) { + *ptr++ = hexdig[0x0f & (data[i] >> 4)]; + *ptr++ = hexdig[0x0f & data[i]]; + if ((i & 0x0f) == 0x0f) { + *ptr = '\0'; + ptr = line; + RTMP_Log(level, "%s", line); + } else { + *ptr++ = ' '; + } + } + if (i & 0x0f) { + *ptr = '\0'; + RTMP_Log(level, "%s", line); + } +} + +void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len) { +#define BP_OFFSET 9 +#define BP_GRAPH 60 +#define BP_LEN 80 + char line[BP_LEN]; + unsigned long i; + + if (!data || level > RTMP_debuglevel) + return; + + /* in case len is zero */ + line[0] = '\0'; + + for (i = 0; i < len; i++) { + int n = i % 16; + unsigned off; + + if (!n) { + if (i) RTMP_Log(level, "%s", line); + memset(line, ' ', sizeof(line) - 2); + line[sizeof(line) - 2] = '\0'; + + off = i % 0x0ffffU; + + line[2] = hexdig[0x0f & (off >> 12)]; + line[3] = hexdig[0x0f & (off >> 8)]; + line[4] = hexdig[0x0f & (off >> 4)]; + line[5] = hexdig[0x0f & off]; + line[6] = ':'; + } + + off = BP_OFFSET + n * 3 + ((n >= 8) ? 1 : 0); + line[off] = hexdig[0x0f & (data[i] >> 4)]; + line[off + 1] = hexdig[0x0f & data[i]]; + + off = BP_GRAPH + n + ((n >= 8) ? 1 : 0); + + if (isprint(data[i])) { + line[BP_GRAPH + n] = data[i]; + } else { + line[BP_GRAPH + n] = '.'; + } + } + + RTMP_Log(level, "%s", line); +} + +/* These should only be used by apps, never by the library itself */ +void RTMP_LogPrintf(const char *format, ...) { + char str[MAX_PRINT_LEN] = ""; + int len; + va_list args; + va_start(args, format); + len = vsnprintf(str, MAX_PRINT_LEN - 1, format, args); + va_end(args); + + if (RTMP_debuglevel == RTMP_LOGCRIT) + return; + + if (!fmsg) fmsg = stderr; + + if (neednl) { + putc('\n', fmsg); + neednl = 0; + } + + if (len > MAX_PRINT_LEN - 1) + len = MAX_PRINT_LEN - 1; + fprintf(fmsg, "%s", str); + if (str[len - 1] == '\n') + fflush(fmsg); +} + +void RTMP_LogStatus(const char *format, ...) { + char str[MAX_PRINT_LEN] = ""; + va_list args; + va_start(args, format); + vsnprintf(str, MAX_PRINT_LEN - 1, format, args); + va_end(args); + + if (RTMP_debuglevel == RTMP_LOGCRIT) + return; + + if (!fmsg) fmsg = stderr; + + fprintf(fmsg, "%s", str); + fflush(fmsg); + neednl = 1; +} diff --git a/LFLiveKit/Vendor/pili-librtmp/log.h b/LFLiveKit/Vendor/pili-librtmp/log.h new file mode 100644 index 00000000..f7daf375 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/log.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#ifndef __RTMP_LOG_H__ +#define __RTMP_LOG_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +/* Enable this to get full debugging output */ +/* #define _DEBUG */ + +#ifdef _DEBUG +#undef NODEBUG +#endif + +typedef enum { + RTMP_LOGCRIT = 0, + RTMP_LOGERROR, + RTMP_LOGWARNING, + RTMP_LOGINFO, + RTMP_LOGDEBUG, + RTMP_LOGDEBUG2, + RTMP_LOGALL +} RTMP_LogLevel; + +extern RTMP_LogLevel RTMP_debuglevel; + +typedef void(RTMP_LogCallback)(int level, const char *fmt, va_list); +void RTMP_LogSetCallback(RTMP_LogCallback *cb); +void RTMP_LogSetOutput(FILE *file); +void RTMP_LogPrintf(const char *format, ...); +void RTMP_LogStatus(const char *format, ...); +void RTMP_Log(int level, const char *format, ...); +void RTMP_LogHex(int level, const uint8_t *data, unsigned long len); +void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len); +void RTMP_LogSetLevel(RTMP_LogLevel lvl); +RTMP_LogLevel RTMP_LogGetLevel(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/parseurl.c b/LFLiveKit/Vendor/pili-librtmp/parseurl.c new file mode 100644 index 00000000..0e50352b --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/parseurl.c @@ -0,0 +1,312 @@ +/* + * Copyright (C) 2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include + +#include +#include + +#include "log.h" +#include "rtmp_sys.h" + +int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, unsigned int *port, + AVal *playpath, AVal *app, AVal *domainName) { + char *p, *end, *col, *ques, *slash; + + RTMP_Log(RTMP_LOGDEBUG, "Parsing..."); + + *protocol = RTMP_PROTOCOL_RTMP; + *port = 0; + playpath->av_len = 0; + playpath->av_val = NULL; + app->av_len = 0; + app->av_val = NULL; + + /* Old School Parsing */ + + /* look for usual :// pattern */ + p = strstr(url, "://"); + if (!p) { + RTMP_Log(RTMP_LOGERROR, "RTMP URL: No :// in url!"); + return FALSE; + } + { + int len = (int)(p - url); + + if (len == 4 && strncasecmp(url, "rtmp", 4) == 0) + *protocol = RTMP_PROTOCOL_RTMP; + else if (len == 5 && strncasecmp(url, "rtmpt", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMPT; + else if (len == 5 && strncasecmp(url, "rtmps", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMPS; + else if (len == 5 && strncasecmp(url, "rtmpe", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMPE; + else if (len == 5 && strncasecmp(url, "rtmfp", 5) == 0) + *protocol = RTMP_PROTOCOL_RTMFP; + else if (len == 6 && strncasecmp(url, "rtmpte", 6) == 0) + *protocol = RTMP_PROTOCOL_RTMPTE; + else if (len == 6 && strncasecmp(url, "rtmpts", 6) == 0) + *protocol = RTMP_PROTOCOL_RTMPTS; + else { + RTMP_Log(RTMP_LOGWARNING, "Unknown protocol!\n"); + goto parsehost; + } + } + + RTMP_Log(RTMP_LOGDEBUG, "Parsed protocol: %d", *protocol); + +parsehost: + /* let's get the hostname */ + p += 3; + + /* check for sudden death */ + if (*p == 0) { + RTMP_Log(RTMP_LOGWARNING, "No hostname in URL!"); + return FALSE; + } + + end = p + strlen(p); + col = strchr(p, ':'); + ques = strchr(p, '?'); + slash = strchr(p, '/'); + + { + int hostlen; + if (slash) + hostlen = slash - p; + else + hostlen = end - p; + if (col && col - p < hostlen) + hostlen = col - p; + + if (hostlen < 256) { + host->av_val = p; + host->av_len = hostlen; + RTMP_Log(RTMP_LOGDEBUG, "Parsed host : %.*s", hostlen, host->av_val); + } else { + RTMP_Log(RTMP_LOGWARNING, "Hostname exceeds 255 characters!"); + } + + p += hostlen; + } + + /* get the port number if available */ + if (*p == ':') { + unsigned int p2; + p++; + p2 = atoi(p); + if (p2 > 65535) { + RTMP_Log(RTMP_LOGWARNING, "Invalid port number!"); + } else { + *port = p2; + } + } + + if (!slash) { + RTMP_Log(RTMP_LOGWARNING, "No application or playpath in URL!"); + return TRUE; + } + p = slash + 1; + + /** parse domain + + * rtmp://host:[port]/app/...?domain=a.com + + * use domain to replace host + + */ + + if (domainName != NULL && ques != NULL) { + char *domain = strstr(ques, "domain="); + if (domain) { + end = domain - 1; + domain += 7; //skip "domain=" + char *domain_end = strchr(domain, '&'); + int host_len = 0; + if (domain_end) { + host_len = domain_end - domain; + } else { + host_len = strlen(domain); + } + if (host_len < 256) { + domainName->av_val = domain; + domainName->av_len = host_len; + RTMP_Log(RTMP_LOGDEBUG, "Parsed host and domain : %.*s", host_len, host->av_val); + } + } + } + + { + /* parse application + * + * rtmp://host[:port]/app[/appinstance][/...] + * application = app[/appinstance] + */ + + char *slash2, *slash3 = NULL; + int applen, appnamelen; + + slash2 = strchr(p, '/'); + if (slash2) + slash3 = strchr(slash2 + 1, '/'); + + applen = end - p; /* ondemand, pass all parameters as app */ + appnamelen = applen; /* ondemand length */ + + if (ques && strstr(p, "slist=")) { /* whatever it is, the '?' and slist= means we need to use everything as app and parse plapath from slist= */ + appnamelen = ques - p; + } else if (strncmp(p, "ondemand/", 9) == 0) { + /* app = ondemand/foobar, only pass app=ondemand */ + applen = 8; + appnamelen = 8; + } else { /* app!=ondemand, so app is app[/appinstance] */ + if (slash3) + appnamelen = slash3 - p; + else if (slash2) + appnamelen = slash2 - p; + + applen = appnamelen; + } + + app->av_val = p; + app->av_len = applen; + RTMP_Log(RTMP_LOGDEBUG, "Parsed app : %.*s", applen, p); + + p += appnamelen; + } + + if (*p == '/') + p++; + + if (end - p) { + AVal av = {p, end - p}; + PILI_RTMP_ParsePlaypath(&av, playpath); + } + + return TRUE; +} + +/* + * Extracts playpath from RTMP URL. playpath is the file part of the + * URL, i.e. the part that comes after rtmp://host:port/app/ + * + * Returns the stream name in a format understood by FMS. The name is + * the playpath part of the URL with formatting depending on the stream + * type: + * + * mp4 streams: prepend "mp4:", remove extension + * mp3 streams: prepend "mp3:", remove extension + * flv streams: remove extension + */ +void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out) { + int addMP4 = 0; + int addMP3 = 0; + int subExt = 0; + const char *playpath = in->av_val; + const char *temp, *q, *ext = NULL; + const char *ppstart = playpath; + char *streamname, *destptr, *p; + + int pplen = in->av_len; + + out->av_val = NULL; + out->av_len = 0; + + if ((*ppstart == '?') && + (temp = strstr(ppstart, "slist=")) != 0) { + ppstart = temp + 6; + pplen = strlen(ppstart); + + temp = strchr(ppstart, '&'); + if (temp) { + pplen = temp - ppstart; + } + } + + q = strchr(ppstart, '?'); + if (pplen >= 4) { + if (q) + ext = q - 4; + else + ext = &ppstart[pplen - 4]; + if ((strncmp(ext, ".f4v", 4) == 0) || + (strncmp(ext, ".mp4", 4) == 0)) { + addMP4 = 1; + subExt = 1; + /* Only remove .flv from rtmp URL, not slist params */ + } else if ((ppstart == playpath) && + (strncmp(ext, ".flv", 4) == 0)) { + subExt = 1; + } else if (strncmp(ext, ".mp3", 4) == 0) { + addMP3 = 1; + subExt = 1; + } + } + + streamname = (char *)malloc((pplen + 4 + 1) * sizeof(char)); + if (!streamname) + return; + + destptr = streamname; + if (addMP4) { + if (strncmp(ppstart, "mp4:", 4)) { + strcpy(destptr, "mp4:"); + destptr += 4; + } else { + subExt = 0; + } + } else if (addMP3) { + if (strncmp(ppstart, "mp3:", 4)) { + strcpy(destptr, "mp3:"); + destptr += 4; + } else { + subExt = 0; + } + } + + for (p = (char *)ppstart; pplen > 0;) { + /* skip extension */ + if (subExt && p == ext) { + p += 4; + pplen -= 4; + continue; + } + if (*p == '%') { + unsigned int c; + sscanf(p + 1, "%02x", &c); + *destptr++ = c; + pplen -= 3; + p += 3; + } else { + *destptr++ = *p++; + pplen--; + } + } + *destptr = '\0'; + + out->av_val = streamname; + out->av_len = destptr - streamname; +} + +int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, + unsigned int *port, AVal *playpath, AVal *app) { + return PILI_RTMP_ParseURL2(url, protocol, host, port, playpath, app, NULL); +} diff --git a/LFLiveKit/Vendor/pili-librtmp/rtmp.c b/LFLiveKit/Vendor/pili-librtmp/rtmp.c new file mode 100644 index 00000000..5043885b --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/rtmp.c @@ -0,0 +1,4136 @@ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * libPILI_RTMP is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * libPILI_RTMP is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with libPILI_RTMP see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#include +#include +#include +#include + +#include "log.h" +#include "rtmp_sys.h" + +#ifdef CRYPTO +#ifdef USE_POLARSSL +#include +#elif defined(USE_GNUTLS) +#include +#else /* USE_OPENSSL */ +#include +#include +#endif +TLS_CTX RTMP_TLS_ctx; +#endif + +#define RTMP_SIG_SIZE 1536 +#define RTMP_LARGE_HEADER_SIZE 12 + +static const int packetSize[] = {12, 8, 4, 1}; + +int PILI_RTMP_ctrlC; + +const char PILI_RTMPProtocolStrings[][7] = { + "RTMP", + "RTMPT", + "RTMPE", + "RTMPTE", + "RTMPS", + "RTMPTS", + "", + "", + "RTMFP"}; + +const char PILI_RTMPProtocolStringsLower[][7] = { + "rtmp", + "rtmpt", + "rtmpe", + "rtmpte", + "rtmps", + "rtmpts", + "", + "", + "rtmfp"}; + +static const char *RTMPT_cmds[] = { + "open", + "send", + "idle", + "close"}; + +typedef enum { + RTMPT_OPEN = 0, + RTMPT_SEND, + RTMPT_IDLE, + RTMPT_CLOSE +} RTMPTCmd; + +static int DumpMetaData(AMFObject *obj); +static int HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error); +static int SocksNegotiate(PILI_RTMP *r, RTMPError *error); + +static int SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); +static int SendCheckBW(PILI_RTMP *r, RTMPError *error); +static int SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error); +static int SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error); +static int SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error); +static int SendPlay(PILI_RTMP *r, RTMPError *error); +static int SendBytesReceived(PILI_RTMP *r, RTMPError *error); + +#if 0 /* unused */ +static int SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath); +#endif + +static int HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize); +static int HandleMetadata(PILI_RTMP *r, char *body, unsigned int len); +static void HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); +static void HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); + +static int ReadN(PILI_RTMP *r, char *buffer, int n); +static int WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error); + +static void DecodeTEA(AVal *key, AVal *text); + +static int HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len); +static int HTTP_read(PILI_RTMP *r, int fill); + +#ifndef _WIN32 +static int clk_tck; +#endif + +#ifdef CRYPTO +#include "handshake.h" +#endif + +uint32_t + PILI_RTMP_GetTime() { +#ifdef _DEBUG + return 0; +#elif defined(_WIN32) + return timeGetTime(); +#else + struct tms t; + if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK); + return times(&t) * 1000 / clk_tck; +#endif +} + +void PILI_RTMP_UserInterrupt() { + PILI_RTMP_ctrlC = TRUE; +} + +void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p) { + p->m_headerType = 0; + p->m_packetType = 0; + p->m_nChannel = 0; + p->m_nTimeStamp = 0; + p->m_nInfoField2 = 0; + p->m_hasAbsTimestamp = FALSE; + p->m_nBodySize = 0; + p->m_nBytesRead = 0; +} + +int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize) { + char *ptr = calloc(1, nSize + RTMP_MAX_HEADER_SIZE); + if (!ptr) + return FALSE; + p->m_body = ptr + RTMP_MAX_HEADER_SIZE; + p->m_nBytesRead = 0; + return TRUE; +} + +void PILI_RTMPPacket_Free(PILI_RTMPPacket *p) { + if (p->m_body) { + free(p->m_body - RTMP_MAX_HEADER_SIZE); + p->m_body = NULL; + } +} + +void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p) { + RTMP_Log(RTMP_LOGDEBUG, + "PILI_RTMP PACKET: packet type: 0x%02x. channel: 0x%02x. info 1: %d info 2: %d. Body size: %lu. body: 0x%02x", + p->m_packetType, p->m_nChannel, p->m_nTimeStamp, p->m_nInfoField2, + p->m_nBodySize, p->m_body ? (unsigned char)p->m_body[0] : 0); +} + +int PILI_RTMP_LibVersion() { + return RTMP_LIB_VERSION; +} + +void PILI_RTMP_TLS_Init() { +#ifdef CRYPTO +#ifdef USE_POLARSSL + /* Do this regardless of NO_SSL, we use havege for rtmpe too */ + RTMP_TLS_ctx = calloc(1, sizeof(struct tls_ctx)); + havege_init(&RTMP_TLS_ctx->hs); +#elif defined(USE_GNUTLS) && !defined(NO_SSL) + /* Technically we need to initialize libgcrypt ourselves if + * we're not going to call gnutls_global_init(). Ignoring this + * for now. + */ + gnutls_global_init(); + RTMP_TLS_ctx = malloc(sizeof(struct tls_ctx)); + gnutls_certificate_allocate_credentials(&RTMP_TLS_ctx->cred); + gnutls_priority_init(&RTMP_TLS_ctx->prios, "NORMAL", NULL); + gnutls_certificate_set_x509_trust_file(RTMP_TLS_ctx->cred, + "ca.pem", GNUTLS_X509_FMT_PEM); +#elif !defined(NO_SSL) /* USE_OPENSSL */ + /* libcrypto doesn't need anything special */ + SSL_load_error_strings(); + SSL_library_init(); + OpenSSL_add_all_digests(); + RTMP_TLS_ctx = SSL_CTX_new(SSLv23_method()); + SSL_CTX_set_options(RTMP_TLS_ctx, SSL_OP_ALL); + SSL_CTX_set_default_verify_paths(RTMP_TLS_ctx); +#endif +#endif +} + +PILI_RTMP * + PILI_RTMP_Alloc() { + return calloc(1, sizeof(PILI_RTMP)); +} + +void PILI_RTMP_Free(PILI_RTMP *r) { + r->m_errorCallback = NULL; + r->m_userData = NULL; + RTMPError_Free(r->m_error); + r->m_error = NULL; + + free(r); +} + +void PILI_RTMP_Init(PILI_RTMP *r) { +#ifdef CRYPTO + if (!RTMP_TLS_ctx) + RTMP_TLS_Init(); +#endif + + memset(r, 0, sizeof(PILI_RTMP)); + r->m_sb.sb_socket = -1; + r->m_inChunkSize = RTMP_DEFAULT_CHUNKSIZE; + r->m_outChunkSize = RTMP_DEFAULT_CHUNKSIZE; + r->m_nBufferMS = 30000; + r->m_nClientBW = 2500000; + r->m_nClientBW2 = 2; + r->m_nServerBW = 2500000; + r->m_fAudioCodecs = 3191.0; + r->m_fVideoCodecs = 252.0; + r->Link.timeout = 10; + r->Link.send_timeout = 10; + r->Link.swfAge = 30; + + r->m_errorCallback = NULL; + r->m_error = NULL; + r->m_userData = NULL; + r->m_is_closing = 0; + r->m_tcp_nodelay = 1; + + r->m_connCallback = NULL; + r->ip = 0; +} + +void PILI_RTMP_EnableWrite(PILI_RTMP *r) { + r->Link.protocol |= RTMP_FEATURE_WRITE; +} + +double + PILI_RTMP_GetDuration(PILI_RTMP *r) { + return r->m_fDuration; +} + +int PILI_RTMP_IsConnected(PILI_RTMP *r) { + return r->m_sb.sb_socket != -1; +} + +int PILI_RTMP_Socket(PILI_RTMP *r) { + return r->m_sb.sb_socket; +} + +int PILI_RTMP_IsTimedout(PILI_RTMP *r) { + return r->m_sb.sb_timedout; +} + +void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size) { + r->m_nBufferMS = size; +} + +void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error) { + PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, error); +} + +#undef OSS +#ifdef _WIN32 +#define OSS "WIN" +#elif defined(__sun__) +#define OSS "SOL" +#elif defined(__APPLE__) +#define OSS "MAC" +#elif defined(__linux__) +#define OSS "LNX" +#else +#define OSS "GNU" +#endif +#define DEF_VERSTR OSS " 10,0,32,18" +static const char DEFAULT_FLASH_VER[] = DEF_VERSTR; +const AVal RTMP_DefaultFlashVer = + {(char *)DEFAULT_FLASH_VER, sizeof(DEFAULT_FLASH_VER) - 1}; + +void PILI_RTMP_SetupStream(PILI_RTMP *r, + int protocol, + AVal *host, + unsigned int port, + AVal *sockshost, + AVal *playpath, + AVal *tcUrl, + AVal *swfUrl, + AVal *pageUrl, + AVal *app, + AVal *auth, + AVal *swfSHA256Hash, + uint32_t swfSize, + AVal *flashVer, + AVal *subscribepath, + int dStart, + int dStop, int bLiveStream, long int timeout) { + RTMP_Log(RTMP_LOGDEBUG, "Protocol : %s", PILI_RTMPProtocolStrings[protocol & 7]); + RTMP_Log(RTMP_LOGDEBUG, "Hostname : %.*s", host->av_len, host->av_val); + RTMP_Log(RTMP_LOGDEBUG, "Port : %d", port); + RTMP_Log(RTMP_LOGDEBUG, "Playpath : %s", playpath->av_val); + + if (tcUrl && tcUrl->av_val) + RTMP_Log(RTMP_LOGDEBUG, "tcUrl : %s", tcUrl->av_val); + if (swfUrl && swfUrl->av_val) + RTMP_Log(RTMP_LOGDEBUG, "swfUrl : %s", swfUrl->av_val); + if (pageUrl && pageUrl->av_val) + RTMP_Log(RTMP_LOGDEBUG, "pageUrl : %s", pageUrl->av_val); + if (app && app->av_val) + RTMP_Log(RTMP_LOGDEBUG, "app : %.*s", app->av_len, app->av_val); + if (auth && auth->av_val) + RTMP_Log(RTMP_LOGDEBUG, "auth : %s", auth->av_val); + if (subscribepath && subscribepath->av_val) + RTMP_Log(RTMP_LOGDEBUG, "subscribepath : %s", subscribepath->av_val); + if (flashVer && flashVer->av_val) + RTMP_Log(RTMP_LOGDEBUG, "flashVer : %s", flashVer->av_val); + if (dStart > 0) + RTMP_Log(RTMP_LOGDEBUG, "StartTime : %d msec", dStart); + if (dStop > 0) + RTMP_Log(RTMP_LOGDEBUG, "StopTime : %d msec", dStop); + + RTMP_Log(RTMP_LOGDEBUG, "live : %s", bLiveStream ? "yes" : "no"); + RTMP_Log(RTMP_LOGDEBUG, "timeout : %d sec", timeout); + +#ifdef CRYPTO + if (swfSHA256Hash != NULL && swfSize > 0) { + memcpy(r->Link.SWFHash, swfSHA256Hash->av_val, sizeof(r->Link.SWFHash)); + r->Link.SWFSize = swfSize; + RTMP_Log(RTMP_LOGDEBUG, "SWFSHA256:"); + RTMP_LogHex(RTMP_LOGDEBUG, r->Link.SWFHash, sizeof(r->Link.SWFHash)); + RTMP_Log(RTMP_LOGDEBUG, "SWFSize : %lu", r->Link.SWFSize); + } else { + r->Link.SWFSize = 0; + } +#endif + + if (sockshost->av_len) { + const char *socksport = strchr(sockshost->av_val, ':'); + char *hostname = strdup(sockshost->av_val); + + if (socksport) + hostname[socksport - sockshost->av_val] = '\0'; + r->Link.sockshost.av_val = hostname; + r->Link.sockshost.av_len = strlen(hostname); + + r->Link.socksport = socksport ? atoi(socksport + 1) : 1080; + RTMP_Log(RTMP_LOGDEBUG, "Connecting via SOCKS proxy: %s:%d", r->Link.sockshost.av_val, + r->Link.socksport); + } else { + r->Link.sockshost.av_val = NULL; + r->Link.sockshost.av_len = 0; + r->Link.socksport = 0; + } + + if (tcUrl && tcUrl->av_len) + r->Link.tcUrl = *tcUrl; + if (swfUrl && swfUrl->av_len) + r->Link.swfUrl = *swfUrl; + if (pageUrl && pageUrl->av_len) + r->Link.pageUrl = *pageUrl; + if (app && app->av_len) + r->Link.app = *app; + if (auth && auth->av_len) { + r->Link.auth = *auth; + r->Link.lFlags |= RTMP_LF_AUTH; + } + if (flashVer && flashVer->av_len) + r->Link.flashVer = *flashVer; + else + r->Link.flashVer = RTMP_DefaultFlashVer; + if (subscribepath && subscribepath->av_len) + r->Link.subscribepath = *subscribepath; + r->Link.seekTime = dStart; + r->Link.stopTime = dStop; + if (bLiveStream) + r->Link.lFlags |= RTMP_LF_LIVE; + r->Link.timeout = timeout; + + r->Link.protocol = protocol; + r->Link.hostname = *host; + r->Link.port = port; + r->Link.playpath = *playpath; + + if (r->Link.port == 0) { + if (protocol & RTMP_FEATURE_SSL) + r->Link.port = 443; + else if (protocol & RTMP_FEATURE_HTTP) + r->Link.port = 80; + else + r->Link.port = 1935; + } +} + +enum { OPT_STR = 0, + OPT_INT, + OPT_BOOL, + OPT_CONN }; +static const char *optinfo[] = { + "string", "integer", "boolean", "AMF"}; + +#define OFF(x) offsetof(struct PILI_RTMP, x) + +static struct urlopt { + AVal name; + off_t off; + int otype; + int omisc; + char *use; +} options[] = { + {AVC("socks"), OFF(Link.sockshost), OPT_STR, 0, + "Use the specified SOCKS proxy"}, + {AVC("app"), OFF(Link.app), OPT_STR, 0, + "Name of target app on server"}, + {AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0, + "URL to played stream"}, + {AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0, + "URL of played media's web page"}, + {AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0, + "URL to player SWF file"}, + {AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0, + "Flash version string (default " DEF_VERSTR ")"}, + {AVC("conn"), OFF(Link.extras), OPT_CONN, 0, + "Append arbitrary AMF data to Connect message"}, + {AVC("playpath"), OFF(Link.playpath), OPT_STR, 0, + "Path to target media on server"}, + {AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST, + "Set playlist before play command"}, + {AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE, + "Stream is live, no seeking possible"}, + {AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0, + "Stream to subscribe to"}, + {AVC("token"), OFF(Link.token), OPT_STR, 0, + "Key for SecureToken response"}, + {AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV, + "Perform SWF Verification"}, + {AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0, + "Number of days to use cached SWF hash"}, + {AVC("start"), OFF(Link.seekTime), OPT_INT, 0, + "Stream start position in milliseconds"}, + {AVC("stop"), OFF(Link.stopTime), OPT_INT, 0, + "Stream stop position in milliseconds"}, + {AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0, + "Buffer time in milliseconds"}, + {AVC("timeout"), OFF(Link.timeout), OPT_INT, 0, + "Session timeout in seconds"}, + {{NULL, 0}, 0, 0}}; + +static const AVal truth[] = { + AVC("1"), + AVC("on"), + AVC("yes"), + AVC("true"), + {0, 0}}; + +static void RTMP_OptUsage() { + int i; + + RTMP_Log(RTMP_LOGERROR, "Valid PILI_RTMP options are:\n"); + for (i = 0; options[i].name.av_len; i++) { + RTMP_Log(RTMP_LOGERROR, "%10s %-7s %s\n", options[i].name.av_val, + optinfo[options[i].otype], options[i].use); + } +} + +static int + parseAMF(AMFObject *obj, AVal *av, int *depth) { + AMFObjectProperty prop = {{0, 0}}; + int i; + char *p, *arg = av->av_val; + + if (arg[1] == ':') { + p = (char *)arg + 2; + switch (arg[0]) { + case 'B': + prop.p_type = AMF_BOOLEAN; + prop.p_vu.p_number = atoi(p); + break; + case 'S': + prop.p_type = AMF_STRING; + prop.p_vu.p_aval.av_val = p; + prop.p_vu.p_aval.av_len = av->av_len - (p - arg); + break; + case 'N': + prop.p_type = AMF_NUMBER; + prop.p_vu.p_number = strtod(p, NULL); + break; + case 'Z': + prop.p_type = AMF_NULL; + break; + case 'O': + i = atoi(p); + if (i) { + prop.p_type = AMF_OBJECT; + } else { + (*depth)--; + return 0; + } + break; + default: + return -1; + } + } else if (arg[2] == ':' && arg[0] == 'N') { + p = strchr(arg + 3, ':'); + if (!p || !*depth) + return -1; + prop.p_name.av_val = (char *)arg + 3; + prop.p_name.av_len = p - (arg + 3); + + p++; + switch (arg[1]) { + case 'B': + prop.p_type = AMF_BOOLEAN; + prop.p_vu.p_number = atoi(p); + break; + case 'S': + prop.p_type = AMF_STRING; + prop.p_vu.p_aval.av_val = p; + prop.p_vu.p_aval.av_len = av->av_len - (p - arg); + break; + case 'N': + prop.p_type = AMF_NUMBER; + prop.p_vu.p_number = strtod(p, NULL); + break; + case 'O': + prop.p_type = AMF_OBJECT; + break; + default: + return -1; + } + } else + return -1; + + if (*depth) { + AMFObject *o2; + for (i = 0; i < *depth; i++) { + o2 = &obj->o_props[obj->o_num - 1].p_vu.p_object; + obj = o2; + } + } + AMF_AddProp(obj, &prop); + if (prop.p_type == AMF_OBJECT) + (*depth)++; + return 0; +} + +int RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, RTMPError *error) { + int i; + void *v; + + for (i = 0; options[i].name.av_len; i++) { + if (opt->av_len != options[i].name.av_len) continue; + if (strcasecmp(opt->av_val, options[i].name.av_val)) continue; + v = (char *)r + options[i].off; + switch (options[i].otype) { + case OPT_STR: { + AVal *aptr = v; + *aptr = *arg; + } break; + case OPT_INT: { + long l = strtol(arg->av_val, NULL, 0); + *(int *)v = l; + } break; + case OPT_BOOL: { + int j, fl; + fl = *(int *)v; + for (j = 0; truth[j].av_len; j++) { + if (arg->av_len != truth[j].av_len) continue; + if (strcasecmp(arg->av_val, truth[j].av_val)) continue; + fl |= options[i].omisc; + break; + } + *(int *)v = fl; + } break; + case OPT_CONN: + if (parseAMF(&r->Link.extras, arg, &r->Link.edepth)) + return FALSE; + break; + } + break; + } + if (!options[i].name.av_len) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Unknown option "); + strcat(msg, opt->av_val); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorUnknowOption; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "Unknown option %s", opt->av_val); + RTMP_OptUsage(); + return FALSE; + } + + return TRUE; +} + +int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error) { + AVal opt, arg; + char *p1, *p2, *ptr = strchr(url, ' '); + int ret, len; + unsigned int port = 0; + + if (ptr) + *ptr = '\0'; + + len = (int)strlen(url); + ret = PILI_RTMP_ParseURL2(url, &r->Link.protocol, &r->Link.hostname, + &port, &r->Link.playpath0, &r->Link.app, &r->Link.domain); + if (!ret) + return ret; + r->Link.port = port; + r->Link.playpath = r->Link.playpath0; + + while (ptr) { + *ptr++ = '\0'; + p1 = ptr; + p2 = strchr(p1, '='); + if (!p2) + break; + opt.av_val = p1; + opt.av_len = p2 - p1; + *p2++ = '\0'; + arg.av_val = p2; + ptr = strchr(p2, ' '); + if (ptr) { + *ptr = '\0'; + arg.av_len = ptr - p2; + /* skip repeated spaces */ + while (ptr[1] == ' ') + *ptr++ = '\0'; + } else { + arg.av_len = strlen(p2); + } + + /* unescape */ + port = arg.av_len; + for (p1 = p2; port > 0;) { + if (*p1 == '\\') { + unsigned int c; + if (port < 3) + return FALSE; + sscanf(p1 + 1, "%02x", &c); + *p2++ = c; + port -= 3; + p1 += 3; + } else { + *p2++ = *p1++; + port--; + } + } + arg.av_len = p2 - arg.av_val; + + ret = RTMP_SetOpt(r, &opt, &arg, error); + if (!ret) + return ret; + } + + if (!r->Link.tcUrl.av_len) { + r->Link.tcUrl.av_val = url; + if (r->Link.app.av_len) { + AVal *domain = &r->Link.domain; + if (domain->av_len == 0 && r->Link.app.av_val < url + len) { + /* if app is part of original url, just use it */ + r->Link.tcUrl.av_len = r->Link.app.av_len + (r->Link.app.av_val - url); + } else { + if (domain->av_len == 0) { + domain = &r->Link.hostname; + } + if (r->Link.port = 0) { + r->Link.port = 1935; + } + len = domain->av_len + r->Link.app.av_len + sizeof("rtmpte://:65535/"); + r->Link.tcUrl.av_val = malloc(len); + r->Link.tcUrl.av_len = snprintf(r->Link.tcUrl.av_val, len, + "%s://%.*s:%d/%.*s", + PILI_RTMPProtocolStringsLower[r->Link.protocol], + domain->av_len, domain->av_val, + r->Link.port, + r->Link.app.av_len, r->Link.app.av_val); + r->Link.lFlags |= RTMP_LF_FTCU; + } + } else { + r->Link.tcUrl.av_len = strlen(url); + } + } + +#ifdef CRYPTO + if ((r->Link.lFlags & RTMP_LF_SWFV) && r->Link.swfUrl.av_len) + RTMP_HashSWF(r->Link.swfUrl.av_val, &r->Link.SWFSize, + (unsigned char *)r->Link.SWFHash, r->Link.swfAge); +#endif + + if (r->Link.port == 0) { + if (r->Link.protocol & RTMP_FEATURE_SSL) + r->Link.port = 443; + else if (r->Link.protocol & RTMP_FEATURE_HTTP) + r->Link.port = 80; + else + r->Link.port = 1935; + } + return TRUE; +} + +static int add_addr_info(PILI_RTMP *r, struct addrinfo *hints, struct addrinfo **ai, AVal *host, int port, RTMPError *error) { + char *hostname; + int ret = TRUE; + if (host->av_val[host->av_len]) { + hostname = malloc(host->av_len + 1); + memcpy(hostname, host->av_val, host->av_len); + hostname[host->av_len] = '\0'; + } else { + hostname = host->av_val; + } + + struct addrinfo *cur_ai; + char portstr[10]; + snprintf(portstr, sizeof(portstr), "%d", port); + int addrret = getaddrinfo(hostname, portstr, hints, ai); + if (addrret != 0) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Problem accessing the DNS. addr: "); + strcat(msg, hostname); + + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorAccessDNSFailed; + strcpy(error->message, msg); + RTMP_Log(RTMP_LOGERROR, "Problem accessing the DNS. (addr: %s)", hostname); + ret = FALSE; + } + + if (hostname != host->av_val) { + free(hostname); + } + return ret; +} + +int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, RTMPError *error) { + r->m_sb.sb_timedout = FALSE; + r->m_pausing = 0; + r->m_fDuration = 0.0; + + r->m_sb.sb_socket = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (ai->ai_family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)ai->ai_addr; + in6->sin6_port = htons(port); + } + if (r->m_sb.sb_socket != -1) { + if (connect(r->m_sb.sb_socket, ai->ai_addr, ai->ai_addrlen) < 0) { + int err = GetSockError(); + + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Failed to connect socket. "); + strcat(msg, strerror(err)); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorFailedToConnectSocket; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, failed to connect socket. %d (%s)", + __FUNCTION__, err, strerror(err)); + + PILI_RTMP_Close(r, NULL); + return FALSE; + } + + if (r->Link.socksport) { + RTMP_Log(RTMP_LOGDEBUG, "%s ... SOCKS negotiation", __FUNCTION__); + if (!SocksNegotiate(r, error)) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Socks negotiation failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorSocksNegotiationFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, SOCKS negotiation failed.", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + } + } else { + int err = GetSockError(); + + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Failed to create socket. "); + strcat(msg, strerror(err)); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorFailedToCreateSocket; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, failed to create socket. Error: %d (%s)", __FUNCTION__, err, strerror(err)); + + return FALSE; + } + + /* set receive timeout */ + { + SET_RCVTIMEO(tv, r->Link.timeout); + if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { + RTMP_Log(RTMP_LOGERROR, "%s, Setting socket recieve timeout to %ds failed!", + __FUNCTION__, r->Link.timeout); + } + } + + /* set send timeout*/ + { + struct timeval timeout; + timeout.tv_sec = r->Link.send_timeout; + timeout.tv_usec = 0; + + if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout))) { + RTMP_Log(RTMP_LOGERROR, "%s, Setting socket send timeout to %ds failed!", + __FUNCTION__, r->Link.timeout); + } + } + + /* ignore sigpipe */ + int kOne = 1; +#ifdef __linux + setsockopt(r->m_sb.sb_socket, SOL_SOCKET, MSG_NOSIGNAL, &kOne, sizeof(kOne)); +#else + setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_NOSIGPIPE, &kOne, sizeof(kOne)); +#endif + if (r->m_tcp_nodelay) { + int on = 1; + setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *)&on, sizeof(on)); + } + + return TRUE; +} + +int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { + if (r->Link.protocol & RTMP_FEATURE_SSL) { +#if defined(CRYPTO) && !defined(NO_SSL) + TLS_client(RTMP_TLS_ctx, r->m_sb.sb_ssl); + TLS_setfd(r->m_sb.sb_ssl, r->m_sb.sb_socket); + if (TLS_connect(r->m_sb.sb_ssl) < 0) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "TLS_Connect failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorTLSConnectFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); + RTMP_Close(r, NULL); + return FALSE; + } +#else + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "No SSL/TLS support."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorNoSSLOrTLSSupport; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, no SSL/TLS support", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + +#endif + } + if (r->Link.protocol & RTMP_FEATURE_HTTP) { + r->m_msgCounter = 1; + r->m_clientID.av_val = NULL; + r->m_clientID.av_len = 0; + HTTP_Post(r, RTMPT_OPEN, "", 1); + HTTP_read(r, 1); + r->m_msgCounter = 0; + } + RTMP_Log(RTMP_LOGDEBUG, "%s, ... connected, handshaking", __FUNCTION__); + if (!HandShake(r, TRUE, error)) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "Handshake failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorHandshakeFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "%s, handshake failed.", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + RTMP_Log(RTMP_LOGDEBUG, "%s, handshaked", __FUNCTION__); + + if (!SendConnectPacket(r, cp, error)) { + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP connect failed."); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorRTMPConnectFailed; + strcpy(error->message, msg); + } + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect failed.", __FUNCTION__); + PILI_RTMP_Close(r, NULL); + return FALSE; + } + return TRUE; +} + +int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { + struct PILI_CONNECTION_TIME conn_time; + if (!r->Link.hostname.av_len) + return FALSE; + + struct addrinfo hints = {0}, *ai, *cur_ai; + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_DEFAULT; + unsigned short port; + if (r->Link.socksport) { + port = r->Link.socksport; + /* Connect via SOCKS */ + if (!add_addr_info(r, &hints, &ai, &r->Link.sockshost, r->Link.socksport, error)) { + return FALSE; + } + } else { + port = r->Link.port; + /* Connect directly */ + if (!add_addr_info(r, &hints, &ai, &r->Link.hostname, r->Link.port, error)) { + return FALSE; + } + } + r->ip = 0; //useless for ipv6 + cur_ai = ai; + + int t1 = PILI_RTMP_GetTime(); + if (!PILI_RTMP_Connect0(r, cur_ai, port, error)) { + freeaddrinfo(ai); + return FALSE; + } + conn_time.connect_time = PILI_RTMP_GetTime() - t1; + r->m_bSendCounter = TRUE; + + int t2 = PILI_RTMP_GetTime(); + int ret = PILI_RTMP_Connect1(r, cp, error); + conn_time.handshake_time = PILI_RTMP_GetTime() - t2; + + if (r->m_connCallback != NULL) { + r->m_connCallback(&conn_time, r->m_userData); + } + freeaddrinfo(ai); + return ret; +} + +//useless +static int + SocksNegotiate(PILI_RTMP *r, RTMPError *error) { + // unsigned long addr; + // struct sockaddr_in service; + // memset(&service, 0, sizeof(struct sockaddr_in)); + // + // add_addr_info(r, &service, &r->Link.hostname, r->Link.port, error); + // addr = htonl(service.sin_addr.s_addr); + // + // { + // char packet[] = { + // 4, 1, /* SOCKS 4, connect */ + // (r->Link.port >> 8) & 0xFF, + // (r->Link.port) & 0xFF, + // (char)(addr >> 24) & 0xFF, (char)(addr >> 16) & 0xFF, + // (char)(addr >> 8) & 0xFF, (char)addr & 0xFF, + // 0 + // }; /* NULL terminate */ + // + // WriteN(r, packet, sizeof packet, error); + // + // if (ReadN(r, packet, 8) != 8) + // return FALSE; + // + // if (packet[0] == 0 && packet[1] == 90) + // { + // return TRUE; + // } + // else + // { + // RTMP_Log(RTMP_LOGERROR, "%s, SOCKS returned error code %d", packet[1]); + // return FALSE; + // } + // } + return 0; +} + +int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { + PILI_RTMPPacket packet = {0}; + + /* seekTime was already set by SetupStream / SetupURL. + * This is only needed by ReconnectStream. + */ + if (seekTime > 0) + r->Link.seekTime = seekTime; + + r->m_mediaChannel = 0; + + while (!r->m_bPlaying && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, &packet)) { + if (RTMPPacket_IsReady(&packet)) { + if (!packet.m_nBodySize) + continue; + if ((packet.m_packetType == RTMP_PACKET_TYPE_AUDIO) || + (packet.m_packetType == RTMP_PACKET_TYPE_VIDEO) || + (packet.m_packetType == RTMP_PACKET_TYPE_INFO)) { + RTMP_Log(RTMP_LOGWARNING, "Received FLV packet before play()! Ignoring."); + PILI_RTMPPacket_Free(&packet); + continue; + } + + PILI_RTMP_ClientPacket(r, &packet); + PILI_RTMPPacket_Free(&packet); + } + } + + if (!r->m_bPlaying && error) { + char *msg = "PILI_RTMP connect stream failed."; + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorRTMPConnectStreamFailed; + strcpy(error->message, msg); + } + + return r->m_bPlaying; +} + +int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { + PILI_RTMP_DeleteStream(r, error); + + PILI_RTMP_SendCreateStream(r, error); + + return PILI_RTMP_ConnectStream(r, seekTime, error); +} + +int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error) { + int res; + + if (!r->m_pausing) { + res = PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, error); + if (!res) + return res; + + r->m_pausing = 1; + sleep(1); + } + res = PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, error); + r->m_pausing = 3; + return res; +} + +void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error) { + if (r->m_stream_id < 0) + return; + + r->m_bPlaying = FALSE; + + SendDeleteStream(r, r->m_stream_id, error); + r->m_stream_id = -1; +} + +int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { + int bHasMediaPacket = 0; + + while (!bHasMediaPacket && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, packet)) { + if (!RTMPPacket_IsReady(packet)) { + continue; + } + + bHasMediaPacket = PILI_RTMP_ClientPacket(r, packet); + + if (!bHasMediaPacket) { + PILI_RTMPPacket_Free(packet); + } else if (r->m_pausing == 3) { + if (packet->m_nTimeStamp <= r->m_mediaStamp) { + bHasMediaPacket = 0; +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, + "Skipped type: %02X, size: %d, TS: %d ms, abs TS: %d, pause: %d ms", + packet->m_packetType, packet->m_nBodySize, + packet->m_nTimeStamp, packet->m_hasAbsTimestamp, + r->m_mediaStamp); +#endif + continue; + } + r->m_pausing = 0; + } + } + + if (bHasMediaPacket) + r->m_bPlaying = TRUE; + else if (r->m_sb.sb_timedout && !r->m_pausing) + r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; + + return bHasMediaPacket; +} + +int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { + int bHasMediaPacket = 0; + switch (packet->m_packetType) { + case 0x01: + /* chunk size */ + HandleChangeChunkSize(r, packet); + break; + + case 0x03: + /* bytes read report */ + RTMP_Log(RTMP_LOGDEBUG, "%s, received: bytes read report", __FUNCTION__); + break; + + case 0x04: + /* ctrl */ + HandleCtrl(r, packet); + break; + + case 0x05: + /* server bw */ + HandleServerBW(r, packet); + break; + + case 0x06: + /* client bw */ + HandleClientBW(r, packet); + break; + + case 0x08: + /* audio data */ + /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: audio %lu bytes", __FUNCTION__, packet.m_nBodySize); */ + HandleAudio(r, packet); + bHasMediaPacket = 1; + if (!r->m_mediaChannel) + r->m_mediaChannel = packet->m_nChannel; + if (!r->m_pausing) + r->m_mediaStamp = packet->m_nTimeStamp; + break; + + case 0x09: + /* video data */ + /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: video %lu bytes", __FUNCTION__, packet.m_nBodySize); */ + HandleVideo(r, packet); + bHasMediaPacket = 1; + if (!r->m_mediaChannel) + r->m_mediaChannel = packet->m_nChannel; + if (!r->m_pausing) + r->m_mediaStamp = packet->m_nTimeStamp; + break; + + case 0x0F: /* flex stream send */ + RTMP_Log(RTMP_LOGDEBUG, + "%s, flex stream send, size %lu bytes, not supported, ignoring", + __FUNCTION__, packet->m_nBodySize); + break; + + case 0x10: /* flex shared object */ + RTMP_Log(RTMP_LOGDEBUG, + "%s, flex shared object, size %lu bytes, not supported, ignoring", + __FUNCTION__, packet->m_nBodySize); + break; + + case 0x11: /* flex message */ + { + RTMP_Log(RTMP_LOGDEBUG, + "%s, flex message, size %lu bytes, not fully supported", + __FUNCTION__, packet->m_nBodySize); +/*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + +/* some DEBUG code */ +#if 0 + RTMP_LIB_AMFObject obj; + int nRes = obj.Decode(packet.m_body+1, packet.m_nBodySize-1); + if(nRes < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, error decoding AMF3 packet", __FUNCTION__); + /*return; */ + } + + obj.Dump(); +#endif + + if (HandleInvoke(r, packet->m_body + 1, packet->m_nBodySize - 1) == 1) + bHasMediaPacket = 2; + break; + } + case 0x12: + /* metadata (notify) */ + RTMP_Log(RTMP_LOGDEBUG, "%s, received: notify %lu bytes", __FUNCTION__, + packet->m_nBodySize); + if (HandleMetadata(r, packet->m_body, packet->m_nBodySize)) + bHasMediaPacket = 1; + break; + + case 0x13: + RTMP_Log(RTMP_LOGDEBUG, "%s, shared object, not supported, ignoring", + __FUNCTION__); + break; + + case 0x14: + /* invoke */ + RTMP_Log(RTMP_LOGDEBUG, "%s, received: invoke %lu bytes", __FUNCTION__, + packet->m_nBodySize); + /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + + if (HandleInvoke(r, packet->m_body, packet->m_nBodySize) == 1) + bHasMediaPacket = 2; + break; + + case 0x16: { + /* go through FLV packets and handle metadata packets */ + unsigned int pos = 0; + uint32_t nTimeStamp = packet->m_nTimeStamp; + + while (pos + 11 < packet->m_nBodySize) { + uint32_t dataSize = AMF_DecodeInt24(packet->m_body + pos + 1); /* size without header (11) and prevTagSize (4) */ + + if (pos + 11 + dataSize + 4 > packet->m_nBodySize) { + RTMP_Log(RTMP_LOGWARNING, "Stream corrupt?!"); + break; + } + if (packet->m_body[pos] == 0x12) { + HandleMetadata(r, packet->m_body + pos + 11, dataSize); + } else if (packet->m_body[pos] == 8 || packet->m_body[pos] == 9) { + nTimeStamp = AMF_DecodeInt24(packet->m_body + pos + 4); + nTimeStamp |= (packet->m_body[pos + 7] << 24); + } + pos += (11 + dataSize + 4); + } + if (!r->m_pausing) + r->m_mediaStamp = nTimeStamp; + + /* FLV tag(s) */ + /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: FLV tag(s) %lu bytes", __FUNCTION__, packet.m_nBodySize); */ + bHasMediaPacket = 1; + break; + } + default: + RTMP_Log(RTMP_LOGDEBUG, "%s, unknown packet type received: 0x%02x", __FUNCTION__, + packet->m_packetType); +#ifdef _DEBUG + RTMP_LogHex(RTMP_LOGDEBUG, packet->m_body, packet->m_nBodySize); +#endif + } + + return bHasMediaPacket; +} + +#ifdef _DEBUG +extern FILE *netstackdump; +extern FILE *netstackdump_read; +#endif + +static int + ReadN(PILI_RTMP *r, char *buffer, int n) { + int nOriginalSize = n; + int avail; + char *ptr; + + r->m_sb.sb_timedout = FALSE; + +#ifdef _DEBUG + memset(buffer, 0, n); +#endif + + ptr = buffer; + while (n > 0) { + int nBytes = 0, nRead; + if (r->Link.protocol & RTMP_FEATURE_HTTP) { + while (!r->m_resplen) { + if (r->m_sb.sb_size < 144) { + if (!r->m_unackd) + HTTP_Post(r, RTMPT_IDLE, "", 1); + if (PILI_RTMPSockBuf_Fill(&r->m_sb) < 1) { + if (!r->m_sb.sb_timedout) { + PILI_RTMP_Close(r, NULL); + } else { + RTMPError error = {0}; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP socket timeout"); + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorSocketTimeout; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + } + + return 0; + } + } + HTTP_read(r, 0); + } + if (r->m_resplen && !r->m_sb.sb_size) + PILI_RTMPSockBuf_Fill(&r->m_sb); + avail = r->m_sb.sb_size; + if (avail > r->m_resplen) + avail = r->m_resplen; + } else { + avail = r->m_sb.sb_size; + if (avail == 0) { + if (PILI_RTMPSockBuf_Fill(&r->m_sb) < 1) { + if (!r->m_sb.sb_timedout) { + PILI_RTMP_Close(r, NULL); + } else { + RTMPError error = {0}; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP socket timeout"); + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorSocketTimeout; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + } + + return 0; + } + avail = r->m_sb.sb_size; + } + } + nRead = ((n < avail) ? n : avail); + if (nRead > 0) { + memcpy(ptr, r->m_sb.sb_start, nRead); + r->m_sb.sb_start += nRead; + r->m_sb.sb_size -= nRead; + nBytes = nRead; + r->m_nBytesIn += nRead; + if (r->m_bSendCounter && r->m_nBytesIn > r->m_nBytesInSent + r->m_nClientBW / 2) + SendBytesReceived(r, NULL); + } +/*RTMP_Log(RTMP_LOGDEBUG, "%s: %d bytes\n", __FUNCTION__, nBytes); */ +#ifdef _DEBUG + fwrite(ptr, 1, nBytes, netstackdump_read); +#endif + + if (nBytes == 0) { + RTMP_Log(RTMP_LOGDEBUG, "%s, PILI_RTMP socket closed by peer", __FUNCTION__); + /*goto again; */ + RTMPError error = {0}; + + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP socket closed by peer. "); + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorSocketClosedByPeer; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + break; + } + + if (r->Link.protocol & RTMP_FEATURE_HTTP) + r->m_resplen -= nBytes; + +#ifdef CRYPTO + if (r->Link.rc4keyIn) { + RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr); + } +#endif + + n -= nBytes; + ptr += nBytes; + } + + return nOriginalSize - n; +} + +static int + WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error) { + const char *ptr = buffer; +#ifdef CRYPTO + char *encrypted = 0; + char buf[RTMP_BUFFER_CACHE_SIZE]; + + if (r->Link.rc4keyOut) { + if (n > sizeof(buf)) + encrypted = (char *)malloc(n); + else + encrypted = (char *)buf; + ptr = encrypted; + RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr); + } +#endif + + while (n > 0) { + int nBytes; + + if (r->Link.protocol & RTMP_FEATURE_HTTP) + nBytes = HTTP_Post(r, RTMPT_SEND, ptr, n); + else + nBytes = PILI_RTMPSockBuf_Send(&r->m_sb, ptr, n); + /*RTMP_Log(RTMP_LOGDEBUG, "%s: %d\n", __FUNCTION__, nBytes); */ + + if (nBytes < 0) { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send error %d, %s, (%d bytes)", __FUNCTION__, + sockerr, strerror(sockerr), n); + + if (sockerr == EINTR && !PILI_RTMP_ctrlC) + continue; + + if (error) { + char msg[100]; + memset(msg, 0, 100); + strcat(msg, "PILI_RTMP send error. socket error: "); + strcat(msg, strerror(sockerr)); + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorSendFailed; + strcpy(error->message, msg); + } + + PILI_RTMP_Close(r, error); + + RTMPError_Free(error); + + n = 1; + break; + } + + if (nBytes == 0) + break; + + n -= nBytes; + ptr += nBytes; + } + +#ifdef CRYPTO + if (encrypted && encrypted != buf) + free(encrypted); +#endif + + return n == 0; +} + +#define SAVC(x) static const AVal av_##x = AVC(#x) + +SAVC(app); +SAVC(connect); +SAVC(flashVer); +SAVC(swfUrl); +SAVC(pageUrl); +SAVC(tcUrl); +SAVC(fpad); +SAVC(capabilities); +SAVC(audioCodecs); +SAVC(videoCodecs); +SAVC(videoFunction); +SAVC(objectEncoding); +SAVC(secureToken); +SAVC(secureTokenResponse); +SAVC(type); +SAVC(nonprivate); + +static int + SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[4096], *pend = pbuf + sizeof(pbuf); + char *enc; + + if (cp) + return PILI_RTMP_SendPacket(r, cp, TRUE, error); + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_connect); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_OBJECT; + + enc = AMF_EncodeNamedString(enc, pend, &av_app, &r->Link.app); + if (!enc) + return FALSE; + if (r->Link.protocol & RTMP_FEATURE_WRITE) { + enc = AMF_EncodeNamedString(enc, pend, &av_type, &av_nonprivate); + if (!enc) + return FALSE; + } + if (r->Link.flashVer.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_flashVer, &r->Link.flashVer); + if (!enc) + return FALSE; + } + if (r->Link.swfUrl.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_swfUrl, &r->Link.swfUrl); + if (!enc) + return FALSE; + } + if (r->Link.tcUrl.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_tcUrl, &r->Link.tcUrl); + if (!enc) + return FALSE; + } + if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { + enc = AMF_EncodeNamedBoolean(enc, pend, &av_fpad, FALSE); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_capabilities, 15.0); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_audioCodecs, r->m_fAudioCodecs); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_videoCodecs, r->m_fVideoCodecs); + if (!enc) + return FALSE; + enc = AMF_EncodeNamedNumber(enc, pend, &av_videoFunction, 1.0); + if (!enc) + return FALSE; + if (r->Link.pageUrl.av_len) { + enc = AMF_EncodeNamedString(enc, pend, &av_pageUrl, &r->Link.pageUrl); + if (!enc) + return FALSE; + } + } + if (r->m_fEncoding != 0.0 || r->m_bSendEncoding) { /* AMF0, AMF3 not fully supported yet */ + enc = AMF_EncodeNamedNumber(enc, pend, &av_objectEncoding, r->m_fEncoding); + if (!enc) + return FALSE; + } + if (enc + 3 >= pend) + return FALSE; + *enc++ = 0; + *enc++ = 0; /* end of object - 0x00 0x00 0x09 */ + *enc++ = AMF_OBJECT_END; + + /* add auth string */ + if (r->Link.auth.av_len) { + enc = AMF_EncodeBoolean(enc, pend, r->Link.lFlags & RTMP_LF_AUTH); + if (!enc) + return FALSE; + enc = AMF_EncodeString(enc, pend, &r->Link.auth); + if (!enc) + return FALSE; + } + if (r->Link.extras.o_num) { + int i; + for (i = 0; i < r->Link.extras.o_num; i++) { + enc = AMFProp_Encode(&r->Link.extras.o_props[i], enc, pend); + if (!enc) + return FALSE; + } + } + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +#if 0 /* unused */ +SAVC(bgHasStream); + +static int +SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath) +{ + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_bgHasStream); + enc = AMF_EncodeNumber(enc, pend, dId); + *enc++ = AMF_NULL; + + enc = AMF_EncodeString(enc, pend, playpath); + if (enc == NULL) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE); +} +#endif + +SAVC(createStream); + +int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_createStream); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; /* NULL */ + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(FCSubscribe); + +static int + SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[512], *pend = pbuf + sizeof(pbuf); + char *enc; + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + RTMP_Log(RTMP_LOGDEBUG, "FCSubscribe: %s", subscribepath->av_val); + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_FCSubscribe); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, subscribepath); + + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(releaseStream); + +static int + SendReleaseStream(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_releaseStream); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(FCPublish); + +static int + SendFCPublish(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_FCPublish); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(FCUnpublish); + +static int + SendFCUnpublish(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_FCUnpublish); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(publish); +SAVC(live); +SAVC(record); + +static int + SendPublish(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x04; /* source channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = r->m_stream_id; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_publish); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + /* FIXME: should we choose live based on Link.lFlags & RTMP_LF_LIVE? */ + enc = AMF_EncodeString(enc, pend, &av_live); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(deleteStream); + +static int + SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_deleteStream); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeNumber(enc, pend, dStreamId); + + packet.m_nBodySize = enc - packet.m_body; + + /* no response expected */ + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(pause); + +int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int iTime, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* video channel */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* invoke */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_pause); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeBoolean(enc, pend, DoPause); + enc = AMF_EncodeNumber(enc, pend, (double)iTime); + + packet.m_nBodySize = enc - packet.m_body; + + RTMP_Log(RTMP_LOGDEBUG, "%s, %d, pauseTime=%d", __FUNCTION__, DoPause, iTime); + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error) { + if (DoPause) + r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; + return PILI_RTMP_SendPause(r, DoPause, r->m_pauseStamp, error); +} + +SAVC(seek); + +int PILI_RTMP_SendSeek(PILI_RTMP *r, int iTime, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* video channel */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* invoke */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_seek); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + enc = AMF_EncodeNumber(enc, pend, (double)iTime); + + packet.m_nBodySize = enc - packet.m_body; + + r->m_read.flags |= RTMP_READ_SEEKING; + r->m_read.nResumeTS = 0; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x02; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x05; /* Server BW */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + packet.m_nBodySize = 4; + + AMF_EncodeInt32(packet.m_body, pend, r->m_nServerBW); + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x02; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x06; /* Client BW */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + packet.m_nBodySize = 5; + + AMF_EncodeInt32(packet.m_body, pend, r->m_nClientBW); + packet.m_body[4] = r->m_nClientBW2; + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +static int + SendBytesReceived(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + + packet.m_nChannel = 0x02; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x03; /* bytes in */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + packet.m_nBodySize = 4; + + AMF_EncodeInt32(packet.m_body, pend, r->m_nBytesIn); /* hard coded for now */ + r->m_nBytesInSent = r->m_nBytesIn; + + /*RTMP_Log(RTMP_LOGDEBUG, "Send bytes report. 0x%x (%d bytes)", (unsigned int)m_nBytesIn, m_nBytesIn); */ + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(_checkbw); + +static int + SendCheckBW(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av__checkbw); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + + packet.m_nBodySize = enc - packet.m_body; + + /* triggers _onbwcheck and eventually results in _onbwdone */ + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(_result); + +static int + SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av__result); + enc = AMF_EncodeNumber(enc, pend, txn); + *enc++ = AMF_NULL; + enc = AMF_EncodeNumber(enc, pend, (double)r->m_nBWCheckCounter++); + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(ping); +SAVC(pong); + +static int + SendPong(PILI_RTMP *r, double txn, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_pong); + enc = AMF_EncodeNumber(enc, pend, txn); + *enc++ = AMF_NULL; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +SAVC(play); + +static int + SendPlay(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* we make 8 our stream channel */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_play); + enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); + *enc++ = AMF_NULL; + + RTMP_Log(RTMP_LOGDEBUG, "%s, seekTime=%d, stopTime=%d, sending play: %s", + __FUNCTION__, r->Link.seekTime, r->Link.stopTime, + r->Link.playpath.av_val); + enc = AMF_EncodeString(enc, pend, &r->Link.playpath); + if (!enc) + return FALSE; + + /* Optional parameters start and len. + * + * start: -2, -1, 0, positive number + * -2: looks for a live stream, then a recorded stream, + * if not found any open a live stream + * -1: plays a live stream + * >=0: plays a recorded streams from 'start' milliseconds + */ + if (r->Link.lFlags & RTMP_LF_LIVE) + enc = AMF_EncodeNumber(enc, pend, -1000.0); + else { + if (r->Link.seekTime > 0.0) + enc = AMF_EncodeNumber(enc, pend, r->Link.seekTime); /* resume from here */ + else + enc = AMF_EncodeNumber(enc, pend, 0.0); /*-2000.0);*/ /* recorded as default, -2000.0 is not reliable since that freezes the player if the stream is not found */ + } + if (!enc) + return FALSE; + + /* len: -1, 0, positive number + * -1: plays live or recorded stream to the end (default) + * 0: plays a frame 'start' ms away from the beginning + * >0: plays a live or recoded stream for 'len' milliseconds + */ + /*enc += EncodeNumber(enc, -1.0); */ /* len */ + if (r->Link.stopTime) { + enc = AMF_EncodeNumber(enc, pend, r->Link.stopTime - r->Link.seekTime); + if (!enc) + return FALSE; + } + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +SAVC(set_playlist); +SAVC(0); + +static int + SendPlaylist(PILI_RTMP *r, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x08; /* we make 8 our stream channel */ + packet.m_headerType = RTMP_PACKET_SIZE_LARGE; + packet.m_packetType = 0x14; /* INVOKE */ + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_set_playlist); + enc = AMF_EncodeNumber(enc, pend, 0); + *enc++ = AMF_NULL; + *enc++ = AMF_ECMA_ARRAY; + *enc++ = 0; + *enc++ = 0; + *enc++ = 0; + *enc++ = AMF_OBJECT; + enc = AMF_EncodeNamedString(enc, pend, &av_0, &r->Link.playpath); + if (!enc) + return FALSE; + if (enc + 3 >= pend) + return FALSE; + *enc++ = 0; + *enc++ = 0; + *enc++ = AMF_OBJECT_END; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, TRUE, error); +} + +static int + SendSecureTokenResponse(PILI_RTMP *r, AVal *resp, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[1024], *pend = pbuf + sizeof(pbuf); + char *enc; + + packet.m_nChannel = 0x03; /* control channel (invoke) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x14; + packet.m_nTimeStamp = 0; + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + enc = packet.m_body; + enc = AMF_EncodeString(enc, pend, &av_secureTokenResponse); + enc = AMF_EncodeNumber(enc, pend, 0.0); + *enc++ = AMF_NULL; + enc = AMF_EncodeString(enc, pend, resp); + if (!enc) + return FALSE; + + packet.m_nBodySize = enc - packet.m_body; + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +/* +from http://jira.red5.org/confluence/display/docs/Ping: + +Ping is the most mysterious message in PILI_RTMP and till now we haven't fully interpreted it yet. In summary, Ping message is used as a special command that are exchanged between client and server. This page aims to document all known Ping messages. Expect the list to grow. + +The type of Ping packet is 0x4 and contains two mandatory parameters and two optional parameters. The first parameter is the type of Ping and in short integer. The second parameter is the target of the ping. As Ping is always sent in Channel 2 (control channel) and the target object in PILI_RTMP header is always 0 which means the Connection object, it's necessary to put an extra parameter to indicate the exact target object the Ping is sent to. The second parameter takes this responsibility. The value has the same meaning as the target object field in PILI_RTMP header. (The second value could also be used as other purposes, like RTT Ping/Pong. It is used as the timestamp.) The third and fourth parameters are optional and could be looked upon as the parameter of the Ping packet. Below is an unexhausted list of Ping messages. + + * type 0: Clear the stream. No third and fourth parameters. The second parameter could be 0. After the connection is established, a Ping 0,0 will be sent from server to client. The message will also be sent to client on the start of Play and in response of a Seek or Pause/Resume request. This Ping tells client to re-calibrate the clock with the timestamp of the next packet server sends. + * type 1: Tell the stream to clear the playing buffer. + * type 3: Buffer time of the client. The third parameter is the buffer time in millisecond. + * type 4: Reset a stream. Used together with type 0 in the case of VOD. Often sent before type 0. + * type 6: Ping the client from server. The second parameter is the current time. + * type 7: Pong reply from client. The second parameter is the time the server sent with his ping request. + * type 26: SWFVerification request + * type 27: SWFVerification response +*/ +int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, unsigned int nTime, RTMPError *error) { + PILI_RTMPPacket packet; + char pbuf[256], *pend = pbuf + sizeof(pbuf); + int nSize; + char *buf; + + RTMP_Log(RTMP_LOGDEBUG, "sending ctrl. type: 0x%04x", (unsigned short)nType); + + packet.m_nChannel = 0x02; /* control channel (ping) */ + packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; + packet.m_packetType = 0x04; /* ctrl */ + packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ + packet.m_nInfoField2 = 0; + packet.m_hasAbsTimestamp = 0; + packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; + + switch (nType) { + case 0x03: + nSize = 10; + break; /* buffer time */ + case 0x1A: + nSize = 3; + break; /* SWF verify request */ + case 0x1B: + nSize = 44; + break; /* SWF verify response */ + default: + nSize = 6; + break; + } + + packet.m_nBodySize = nSize; + + buf = packet.m_body; + buf = AMF_EncodeInt16(buf, pend, nType); + + if (nType == 0x1B) { +#ifdef CRYPTO + memcpy(buf, r->Link.SWFVerificationResponse, 42); + RTMP_Log(RTMP_LOGDEBUG, "Sending SWFVerification response: "); + RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize); +#endif + } else if (nType == 0x1A) { + *buf = nObject & 0xff; + } else { + if (nSize > 2) + buf = AMF_EncodeInt32(buf, pend, nObject); + + if (nSize > 6) + buf = AMF_EncodeInt32(buf, pend, nTime); + } + + return PILI_RTMP_SendPacket(r, &packet, FALSE, error); +} + +static void + AV_erase(PILI_RTMP_METHOD *vals, int *num, int i, int freeit) { + if (freeit) + free(vals[i].name.av_val); + (*num)--; + for (; i < *num; i++) { + vals[i] = vals[i + 1]; + } + vals[i].name.av_val = NULL; + vals[i].name.av_len = 0; + vals[i].num = 0; +} + +void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, freeit); +} + +static void + AV_queue(PILI_RTMP_METHOD **vals, int *num, AVal *av, int txn) { + char *tmp; + if (!(*num & 0x0f)) + *vals = realloc(*vals, (*num + 16) * sizeof(PILI_RTMP_METHOD)); + tmp = malloc(av->av_len + 1); + memcpy(tmp, av->av_val, av->av_len); + tmp[av->av_len] = '\0'; + (*vals)[*num].num = txn; + (*vals)[*num].name.av_len = av->av_len; + (*vals)[(*num)++].name.av_val = tmp; +} + +static void + AV_clear(PILI_RTMP_METHOD *vals, int num) { + int i; + for (i = 0; i < num; i++) + free(vals[i].name.av_val); + free(vals); +} + +SAVC(onBWDone); +SAVC(onFCSubscribe); +SAVC(onFCUnsubscribe); +SAVC(_onbwcheck); +SAVC(_onbwdone); +SAVC(_error); +SAVC(close); +SAVC(code); +SAVC(level); +SAVC(onStatus); +SAVC(playlist_ready); +static const AVal av_NetStream_Failed = AVC("NetStream.Failed"); +static const AVal av_NetStream_Play_Failed = AVC("NetStream.Play.Failed"); +static const AVal av_NetStream_Play_StreamNotFound = + AVC("NetStream.Play.StreamNotFound"); +static const AVal av_NetConnection_Connect_InvalidApp = + AVC("NetConnection.Connect.InvalidApp"); +static const AVal av_NetStream_Play_Start = AVC("NetStream.Play.Start"); +static const AVal av_NetStream_Play_Complete = AVC("NetStream.Play.Complete"); +static const AVal av_NetStream_Play_Stop = AVC("NetStream.Play.Stop"); +static const AVal av_NetStream_Seek_Notify = AVC("NetStream.Seek.Notify"); +static const AVal av_NetStream_Pause_Notify = AVC("NetStream.Pause.Notify"); +static const AVal av_NetStream_Play_UnpublishNotify = + AVC("NetStream.Play.UnpublishNotify"); +static const AVal av_NetStream_Publish_Start = AVC("NetStream.Publish.Start"); + +/* Returns 0 for OK/Failed/error, 1 for 'Stop or Complete' */ +static int + HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize) { + AMFObject obj; + AVal method; + int txn; + int ret = 0, nRes; + if (body[0] != 0x02) /* make sure it is a string method name we start with */ + { + RTMP_Log(RTMP_LOGWARNING, "%s, Sanity failed. no string method in invoke packet", + __FUNCTION__); + return 0; + } + + nRes = AMF_Decode(&obj, body, nBodySize, FALSE); + if (nRes < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, error decoding invoke packet", __FUNCTION__); + return 0; + } + + AMF_Dump(&obj); + AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &method); + txn = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 1)); + RTMP_Log(RTMP_LOGDEBUG, "%s, server invoking <%s>", __FUNCTION__, method.av_val); + + RTMPError error = {0}; + + if (AVMATCH(&method, &av__result)) { + AVal methodInvoked = {0}; + int i; + + for (i = 0; i < r->m_numCalls; i++) { + if (r->m_methodCalls[i].num == txn) { + methodInvoked = r->m_methodCalls[i].name; + AV_erase(r->m_methodCalls, &r->m_numCalls, i, FALSE); + break; + } + } + if (!methodInvoked.av_val) { + RTMP_Log(RTMP_LOGDEBUG, "%s, received result id %d without matching request", + __FUNCTION__, txn); + goto leave; + } + + RTMP_Log(RTMP_LOGDEBUG, "%s, received result for method call <%s>", __FUNCTION__, + methodInvoked.av_val); + + if (AVMATCH(&methodInvoked, &av_connect)) { + if (r->Link.token.av_len) { + AMFObjectProperty p; + if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_secureToken, &p)) { + DecodeTEA(&r->Link.token, &p.p_vu.p_aval); + SendSecureTokenResponse(r, &p.p_vu.p_aval, &error); + } + } + if (r->Link.protocol & RTMP_FEATURE_WRITE) { + SendReleaseStream(r, &error); + SendFCPublish(r, &error); + } else { + PILI_RTMP_SendServerBW(r, &error); + PILI_RTMP_SendCtrl(r, 3, 0, 300, &error); + } + PILI_RTMP_SendCreateStream(r, &error); + + if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { + /* Send the FCSubscribe if live stream or if subscribepath is set */ + if (r->Link.subscribepath.av_len) + SendFCSubscribe(r, &r->Link.subscribepath, &error); + else if (r->Link.lFlags & RTMP_LF_LIVE) + SendFCSubscribe(r, &r->Link.playpath, &error); + } + } else if (AVMATCH(&methodInvoked, &av_createStream)) { + r->m_stream_id = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 3)); + + if (r->Link.protocol & RTMP_FEATURE_WRITE) { + SendPublish(r, &error); + } else { + if (r->Link.lFlags & RTMP_LF_PLST) + SendPlaylist(r, &error); + SendPlay(r, &error); + PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, &error); + } + } else if (AVMATCH(&methodInvoked, &av_play) || + AVMATCH(&methodInvoked, &av_publish)) { + r->m_bPlaying = TRUE; + } + free(methodInvoked.av_val); + } else if (AVMATCH(&method, &av_onBWDone)) { + if (!r->m_nBWCheckCounter) + SendCheckBW(r, &error); + } else if (AVMATCH(&method, &av_onFCSubscribe)) { + /* SendOnFCSubscribe(); */ + } else if (AVMATCH(&method, &av_onFCUnsubscribe)) { + PILI_RTMP_Close(r, NULL); + ret = 1; + } else if (AVMATCH(&method, &av_ping)) { + SendPong(r, txn, &error); + } else if (AVMATCH(&method, &av__onbwcheck)) { + SendCheckBWResult(r, txn, &error); + } else if (AVMATCH(&method, &av__onbwdone)) { + int i; + for (i = 0; i < r->m_numCalls; i++) + if (AVMATCH(&r->m_methodCalls[i].name, &av__checkbw)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } else if (AVMATCH(&method, &av__error)) { + RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server sent error"); + } else if (AVMATCH(&method, &av_close)) { + RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server requested close"); + RTMPError error = {0}; + char *msg = "PILI_RTMP server requested close."; + RTMPError_Alloc(&error, strlen(msg)); + error.code = RTMPErrorServerRequestedClose; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + } else if (AVMATCH(&method, &av_onStatus)) { + AMFObject obj2; + AVal code, level; + AMFProp_GetObject(AMF_GetProp(&obj, NULL, 3), &obj2); + AMFProp_GetString(AMF_GetProp(&obj2, &av_code, -1), &code); + AMFProp_GetString(AMF_GetProp(&obj2, &av_level, -1), &level); + + RTMP_Log(RTMP_LOGDEBUG, "%s, onStatus: %s", __FUNCTION__, code.av_val); + if (AVMATCH(&code, &av_NetStream_Failed) || AVMATCH(&code, &av_NetStream_Play_Failed) || AVMATCH(&code, &av_NetStream_Play_StreamNotFound) || AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { + r->m_stream_id = -1; + + int err_code; + char msg[100]; + memset(msg, 0, 100); + + if (AVMATCH(&code, &av_NetStream_Failed)) { + err_code = RTMPErrorNetStreamFailed; + strcpy(msg, "NetStream failed."); + } else if (AVMATCH(&code, &av_NetStream_Play_Failed)) { + err_code = RTMPErrorNetStreamPlayFailed; + strcpy(msg, "NetStream play failed."); + } else if (AVMATCH(&code, &av_NetStream_Play_StreamNotFound)) { + err_code = RTMPErrorNetStreamPlayStreamNotFound; + strcpy(msg, "NetStream play stream not found."); + } else if (AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { + err_code = RTMPErrorNetConnectionConnectInvalidApp; + strcpy(msg, "NetConnection connect invalip app."); + } else { + err_code = RTMPErrorUnknow; + strcpy(msg, "Unknow error."); + } + + RTMPError_Alloc(&error, strlen(msg)); + error.code = err_code; + strcpy(error.message, msg); + + PILI_RTMP_Close(r, &error); + + RTMPError_Free(&error); + + RTMP_Log(RTMP_LOGERROR, "Closing connection: %s", code.av_val); + } + + else if (AVMATCH(&code, &av_NetStream_Play_Start)) { + int i; + r->m_bPlaying = TRUE; + for (i = 0; i < r->m_numCalls; i++) { + if (AVMATCH(&r->m_methodCalls[i].name, &av_play)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } + } + + else if (AVMATCH(&code, &av_NetStream_Publish_Start)) { + int i; + r->m_bPlaying = TRUE; + for (i = 0; i < r->m_numCalls; i++) { + if (AVMATCH(&r->m_methodCalls[i].name, &av_publish)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } + } + + /* Return 1 if this is a Play.Complete or Play.Stop */ + else if (AVMATCH(&code, &av_NetStream_Play_Complete) || AVMATCH(&code, &av_NetStream_Play_Stop) || AVMATCH(&code, &av_NetStream_Play_UnpublishNotify)) { + PILI_RTMP_Close(r, NULL); + ret = 1; + } + + else if (AVMATCH(&code, &av_NetStream_Seek_Notify)) { + r->m_read.flags &= ~RTMP_READ_SEEKING; + } + + else if (AVMATCH(&code, &av_NetStream_Pause_Notify)) { + if (r->m_pausing == 1 || r->m_pausing == 2) { + PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, &error); + r->m_pausing = 3; + } + } + } else if (AVMATCH(&method, &av_playlist_ready)) { + int i; + for (i = 0; i < r->m_numCalls; i++) { + if (AVMATCH(&r->m_methodCalls[i].name, &av_set_playlist)) { + AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); + break; + } + } + } else { + } +leave: + AMF_Reset(&obj); + return ret; +} + +int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, + AMFObjectProperty *p) { + int n; + /* this is a small object search to locate the "duration" property */ + for (n = 0; n < obj->o_num; n++) { + AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); + + if (AVMATCH(&prop->p_name, name)) { + *p = *prop; + return TRUE; + } + + if (prop->p_type == AMF_OBJECT) { + if (PILI_RTMP_FindFirstMatchingProperty(&prop->p_vu.p_object, name, p)) + return TRUE; + } + } + return FALSE; +} + +/* Like above, but only check if name is a prefix of property */ +int PILI_RTMP_FindPrefixProperty(AMFObject *obj, const AVal *name, + AMFObjectProperty *p) { + int n; + for (n = 0; n < obj->o_num; n++) { + AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); + + if (prop->p_name.av_len > name->av_len && + !memcmp(prop->p_name.av_val, name->av_val, name->av_len)) { + *p = *prop; + return TRUE; + } + + if (prop->p_type == AMF_OBJECT) { + if (PILI_RTMP_FindPrefixProperty(&prop->p_vu.p_object, name, p)) + return TRUE; + } + } + return FALSE; +} + +static int + DumpMetaData(AMFObject *obj) { + AMFObjectProperty *prop; + int n; + for (n = 0; n < obj->o_num; n++) { + prop = AMF_GetProp(obj, NULL, n); + if (prop->p_type != AMF_OBJECT) { + char str[256] = ""; + switch (prop->p_type) { + case AMF_NUMBER: + snprintf(str, 255, "%.2f", prop->p_vu.p_number); + break; + case AMF_BOOLEAN: + snprintf(str, 255, "%s", + prop->p_vu.p_number != 0. ? "TRUE" : "FALSE"); + break; + case AMF_STRING: + snprintf(str, 255, "%.*s", prop->p_vu.p_aval.av_len, + prop->p_vu.p_aval.av_val); + break; + case AMF_DATE: + snprintf(str, 255, "timestamp:%.2f", prop->p_vu.p_number); + break; + default: + snprintf(str, 255, "INVALID TYPE 0x%02x", + (unsigned char)prop->p_type); + } + if (prop->p_name.av_len) { + /* chomp */ + if (strlen(str) >= 1 && str[strlen(str) - 1] == '\n') + str[strlen(str) - 1] = '\0'; + RTMP_Log(RTMP_LOGINFO, " %-22.*s%s", prop->p_name.av_len, + prop->p_name.av_val, str); + } + } else { + if (prop->p_name.av_len) + RTMP_Log(RTMP_LOGINFO, "%.*s:", prop->p_name.av_len, prop->p_name.av_val); + DumpMetaData(&prop->p_vu.p_object); + } + } + return FALSE; +} + +SAVC(onMetaData); +SAVC(duration); +SAVC(video); +SAVC(audio); + +static int + HandleMetadata(PILI_RTMP *r, char *body, unsigned int len) { + /* allright we get some info here, so parse it and print it */ + /* also keep duration or filesize to make a nice progress bar */ + + AMFObject obj; + AVal metastring; + int ret = FALSE; + + int nRes = AMF_Decode(&obj, body, len, FALSE); + if (nRes < 0) { + RTMP_Log(RTMP_LOGERROR, "%s, error decoding meta data packet", __FUNCTION__); + return FALSE; + } + + AMF_Dump(&obj); + AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &metastring); + + if (AVMATCH(&metastring, &av_onMetaData)) { + AMFObjectProperty prop; + /* Show metadata */ + RTMP_Log(RTMP_LOGINFO, "Metadata:"); + DumpMetaData(&obj); + if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_duration, &prop)) { + r->m_fDuration = prop.p_vu.p_number; + /*RTMP_Log(RTMP_LOGDEBUG, "Set duration: %.2f", m_fDuration); */ + } + /* Search for audio or video tags */ + if (PILI_RTMP_FindPrefixProperty(&obj, &av_video, &prop)) + r->m_read.dataType |= 1; + if (PILI_RTMP_FindPrefixProperty(&obj, &av_audio, &prop)) + r->m_read.dataType |= 4; + ret = TRUE; + } + AMF_Reset(&obj); + return ret; +} + +static void + HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + if (packet->m_nBodySize >= 4) { + r->m_inChunkSize = AMF_DecodeInt32(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s, received: chunk size change to %d", __FUNCTION__, + r->m_inChunkSize); + } +} + +static void + HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet) { +} + +static void + HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet) { +} + +static void + HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + short nType = -1; + unsigned int tmp; + if (packet->m_body && packet->m_nBodySize >= 2) + nType = AMF_DecodeInt16(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s, received ctrl. type: %d, len: %d", __FUNCTION__, nType, + packet->m_nBodySize); + /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + + if (packet->m_nBodySize >= 6) { + switch (nType) { + case 0: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Begin %d", __FUNCTION__, tmp); + break; + + case 1: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream EOF %d", __FUNCTION__, tmp); + if (r->m_pausing == 1) + r->m_pausing = 2; + break; + + case 2: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Dry %d", __FUNCTION__, tmp); + break; + + case 4: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream IsRecorded %d", __FUNCTION__, tmp); + break; + + case 6: /* server ping. reply with pong. */ + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Ping %d", __FUNCTION__, tmp); + PILI_RTMP_SendCtrl(r, 0x07, tmp, 0, NULL); + break; + + /* FMS 3.5 servers send the following two controls to let the client + * know when the server has sent a complete buffer. I.e., when the + * server has sent an amount of data equal to m_nBufferMS in duration. + * The server meters its output so that data arrives at the client + * in realtime and no faster. + * + * The rtmpdump program tries to set m_nBufferMS as large as + * possible, to force the server to send data as fast as possible. + * In practice, the server appears to cap this at about 1 hour's + * worth of data. After the server has sent a complete buffer, and + * sends this BufferEmpty message, it will wait until the play + * duration of that buffer has passed before sending a new buffer. + * The BufferReady message will be sent when the new buffer starts. + * (There is no BufferReady message for the very first buffer; + * presumably the Stream Begin message is sufficient for that + * purpose.) + * + * If the network speed is much faster than the data bitrate, then + * there may be long delays between the end of one buffer and the + * start of the next. + * + * Since usually the network allows data to be sent at + * faster than realtime, and rtmpdump wants to download the data + * as fast as possible, we use this RTMP_LF_BUFX hack: when we + * get the BufferEmpty message, we send a Pause followed by an + * Unpause. This causes the server to send the next buffer immediately + * instead of waiting for the full duration to elapse. (That's + * also the purpose of the ToggleStream function, which rtmpdump + * calls if we get a read timeout.) + * + * Media player apps don't need this hack since they are just + * going to play the data in realtime anyway. It also doesn't work + * for live streams since they obviously can only be sent in + * realtime. And it's all moot if the network speed is actually + * slower than the media bitrate. + */ + case 31: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferEmpty %d", __FUNCTION__, tmp); + if (!(r->Link.lFlags & RTMP_LF_BUFX)) + break; + if (!r->m_pausing) { + r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; + PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, NULL); + r->m_pausing = 1; + } else if (r->m_pausing == 2) { + PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, NULL); + r->m_pausing = 3; + } + break; + + case 32: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferReady %d", __FUNCTION__, tmp); + break; + + default: + tmp = AMF_DecodeInt32(packet->m_body + 2); + RTMP_Log(RTMP_LOGDEBUG, "%s, Stream xx %d", __FUNCTION__, tmp); + break; + } + } + + if (nType == 0x1A) { + RTMP_Log(RTMP_LOGDEBUG, "%s, SWFVerification ping received: ", __FUNCTION__); +#ifdef CRYPTO + /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ + + /* respond with HMAC SHA256 of decompressed SWF, key is the 30byte player key, also the last 30 bytes of the server handshake are applied */ + if (r->Link.SWFSize) { + PILI_RTMP_SendCtrl(r, 0x1B, 0, 0); + } else { + RTMP_Log(RTMP_LOGERROR, + "%s: Ignoring SWFVerification request, use --swfVfy!", + __FUNCTION__); + } +#else + RTMP_Log(RTMP_LOGERROR, + "%s: Ignoring SWFVerification request, no CRYPTO support!", + __FUNCTION__); +#endif + } +} + +static void + HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + r->m_nServerBW = AMF_DecodeInt32(packet->m_body); + RTMP_Log(RTMP_LOGDEBUG, "%s: server BW = %d", __FUNCTION__, r->m_nServerBW); +} + +static void + HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { + r->m_nClientBW = AMF_DecodeInt32(packet->m_body); + if (packet->m_nBodySize > 4) + r->m_nClientBW2 = packet->m_body[4]; + else + r->m_nClientBW2 = -1; + RTMP_Log(RTMP_LOGDEBUG, "%s: client BW = %d %d", __FUNCTION__, r->m_nClientBW, + r->m_nClientBW2); +} + +static int + DecodeInt32LE(const char *data) { + unsigned char *c = (unsigned char *)data; + unsigned int val; + + val = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0]; + return val; +} + +static int + EncodeInt32LE(char *output, int nVal) { + output[0] = nVal; + nVal >>= 8; + output[1] = nVal; + nVal >>= 8; + output[2] = nVal; + nVal >>= 8; + output[3] = nVal; + return 4; +} + +int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { + uint8_t hbuf[RTMP_MAX_HEADER_SIZE] = {0}; + char *header = (char *)hbuf; + int nSize, hSize, nToRead, nChunk; + int didAlloc = FALSE; + + RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d", __FUNCTION__, r->m_sb.sb_socket); + + if (ReadN(r, (char *)hbuf, 1) == 0) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header", __FUNCTION__); + return FALSE; + } + + packet->m_headerType = (hbuf[0] & 0xc0) >> 6; + packet->m_nChannel = (hbuf[0] & 0x3f); + header++; + if (packet->m_nChannel == 0) { + if (ReadN(r, (char *)&hbuf[1], 1) != 1) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 2nd byte", + __FUNCTION__); + return FALSE; + } + packet->m_nChannel = hbuf[1]; + packet->m_nChannel += 64; + header++; + } else if (packet->m_nChannel == 1) { + int tmp; + if (ReadN(r, (char *)&hbuf[1], 2) != 2) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 3nd byte", + __FUNCTION__); + return FALSE; + } + tmp = (hbuf[2] << 8) + hbuf[1]; + packet->m_nChannel = tmp + 64; + RTMP_Log(RTMP_LOGDEBUG, "%s, m_nChannel: %0x", __FUNCTION__, packet->m_nChannel); + header += 2; + } + + nSize = packetSize[packet->m_headerType]; + + if (nSize == RTMP_LARGE_HEADER_SIZE) /* if we get a full header the timestamp is absolute */ + packet->m_hasAbsTimestamp = TRUE; + + else if (nSize < RTMP_LARGE_HEADER_SIZE) { /* using values from the last message of this channel */ + if (r->m_vecChannelsIn[packet->m_nChannel]) + memcpy(packet, r->m_vecChannelsIn[packet->m_nChannel], + sizeof(PILI_RTMPPacket)); + } + + nSize--; + + if (nSize > 0 && ReadN(r, header, nSize) != nSize) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header. type: %x", + __FUNCTION__, (unsigned int)hbuf[0]); + return FALSE; + } + + hSize = nSize + (header - (char *)hbuf); + + if (nSize >= 3) { + packet->m_nTimeStamp = AMF_DecodeInt24(header); + + /*RTMP_Log(RTMP_LOGDEBUG, "%s, reading PILI_RTMP packet chunk on channel %x, headersz %i, timestamp %i, abs timestamp %i", __FUNCTION__, packet.m_nChannel, nSize, packet.m_nTimeStamp, packet.m_hasAbsTimestamp); */ + + if (nSize >= 6) { + packet->m_nBodySize = AMF_DecodeInt24(header + 3); + packet->m_nBytesRead = 0; + PILI_RTMPPacket_Free(packet); + + if (nSize > 6) { + packet->m_packetType = header[6]; + + if (nSize == 11) + packet->m_nInfoField2 = DecodeInt32LE(header + 7); + } + } + if (packet->m_nTimeStamp == 0xffffff) { + if (ReadN(r, header + nSize, 4) != 4) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read extended timestamp", + __FUNCTION__); + return FALSE; + } + packet->m_nTimeStamp = AMF_DecodeInt32(header + nSize); + hSize += 4; + } + } + + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize); + + if (packet->m_nBodySize > 0 && packet->m_body == NULL) { + if (!PILI_RTMPPacket_Alloc(packet, packet->m_nBodySize)) { + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); + return FALSE; + } + didAlloc = TRUE; + packet->m_headerType = (hbuf[0] & 0xc0) >> 6; + } + + nToRead = packet->m_nBodySize - packet->m_nBytesRead; + nChunk = r->m_inChunkSize; + if (nToRead < nChunk) + nChunk = nToRead; + + /* Does the caller want the raw chunk? */ + if (packet->m_chunk) { + packet->m_chunk->c_headerSize = hSize; + memcpy(packet->m_chunk->c_header, hbuf, hSize); + packet->m_chunk->c_chunk = packet->m_body + packet->m_nBytesRead; + packet->m_chunk->c_chunkSize = nChunk; + } + + if (ReadN(r, packet->m_body + packet->m_nBytesRead, nChunk) != nChunk) { + RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet body. len: %lu", + __FUNCTION__, packet->m_nBodySize); + return FALSE; + } + + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk); + + packet->m_nBytesRead += nChunk; + + /* keep the packet as ref for other packets on this channel */ + if (!r->m_vecChannelsIn[packet->m_nChannel]) + r->m_vecChannelsIn[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); + memcpy(r->m_vecChannelsIn[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); + + if (RTMPPacket_IsReady(packet)) { + /* make packet's timestamp absolute */ + if (!packet->m_hasAbsTimestamp) + packet->m_nTimeStamp += r->m_channelTimestamp[packet->m_nChannel]; /* timestamps seem to be always relative!! */ + + r->m_channelTimestamp[packet->m_nChannel] = packet->m_nTimeStamp; + + /* reset the data from the stored packet. we keep the header since we may use it later if a new packet for this channel */ + /* arrives and requests to re-use some info (small packet header) */ + r->m_vecChannelsIn[packet->m_nChannel]->m_body = NULL; + r->m_vecChannelsIn[packet->m_nChannel]->m_nBytesRead = 0; + r->m_vecChannelsIn[packet->m_nChannel]->m_hasAbsTimestamp = FALSE; /* can only be false if we reuse header */ + } else { + packet->m_body = NULL; /* so it won't be erased on free */ + } + + return TRUE; +} + +#ifndef CRYPTO +static int + HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error) { + int i; + uint32_t uptime, suptime; + int bMatch; + char type; + char clientbuf[RTMP_SIG_SIZE + 1], *clientsig = clientbuf + 1; + char serversig[RTMP_SIG_SIZE]; + + clientbuf[0] = 0x03; /* not encrypted */ + + uptime = htonl(PILI_RTMP_GetTime()); + memcpy(clientsig, &uptime, 4); + + memset(&clientsig[4], 0, 4); + +#ifdef _DEBUG + for (i = 8; i < RTMP_SIG_SIZE; i++) + clientsig[i] = 0xff; +#else + for (i = 8; i < RTMP_SIG_SIZE; i++) + clientsig[i] = (char)(rand() % 256); +#endif + + if (!WriteN(r, clientbuf, RTMP_SIG_SIZE + 1, error)) + return FALSE; + + if (ReadN(r, &type, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); + + if (type != clientbuf[0]) + RTMP_Log(RTMP_LOGWARNING, "%s: Type mismatch: client sent %d, server answered %d", + __FUNCTION__, clientbuf[0], type); + + if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + /* decode server response */ + + memcpy(&suptime, serversig, 4); + suptime = ntohl(suptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, suptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, + serversig[4], serversig[5], serversig[6], serversig[7]); + + /* 2nd part of handshake */ + if (!WriteN(r, serversig, RTMP_SIG_SIZE, error)) + return FALSE; + + if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); + if (!bMatch) { + RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); + } + return TRUE; +} + +static int + SHandShake(PILI_RTMP *r, RTMPError *error) { + int i; + char serverbuf[RTMP_SIG_SIZE + 1], *serversig = serverbuf + 1; + char clientsig[RTMP_SIG_SIZE]; + uint32_t uptime; + int bMatch; + + if (ReadN(r, serverbuf, 1) != 1) /* 0x03 or 0x06 */ + return FALSE; + + RTMP_Log(RTMP_LOGDEBUG, "%s: Type Request : %02X", __FUNCTION__, serverbuf[0]); + + if (serverbuf[0] != 3) { + RTMP_Log(RTMP_LOGERROR, "%s: Type unknown: client sent %02X", + __FUNCTION__, serverbuf[0]); + return FALSE; + } + + uptime = htonl(PILI_RTMP_GetTime()); + memcpy(serversig, &uptime, 4); + + memset(&serversig[4], 0, 4); +#ifdef _DEBUG + for (i = 8; i < RTMP_SIG_SIZE; i++) + serversig[i] = 0xff; +#else + for (i = 8; i < RTMP_SIG_SIZE; i++) + serversig[i] = (char)(rand() % 256); +#endif + + if (!WriteN(r, serverbuf, RTMP_SIG_SIZE + 1, error)) + return FALSE; + + if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + /* decode client response */ + + memcpy(&uptime, clientsig, 4); + uptime = ntohl(uptime); + + RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); + RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, + clientsig[4], clientsig[5], clientsig[6], clientsig[7]); + + /* 2nd part of handshake */ + if (!WriteN(r, clientsig, RTMP_SIG_SIZE, error)) + return FALSE; + + if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) + return FALSE; + + bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); + if (!bMatch) { + RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); + } + return TRUE; +} +#endif + +int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error) { + int wrote; + char hbuf[RTMP_MAX_HEADER_SIZE]; + + RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, + chunk->c_chunkSize); + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize); + if (chunk->c_chunkSize) { + char *ptr = chunk->c_chunk - chunk->c_headerSize; + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize); + /* save header bytes we're about to overwrite */ + memcpy(hbuf, ptr, chunk->c_headerSize); + memcpy(ptr, chunk->c_header, chunk->c_headerSize); + wrote = WriteN(r, ptr, chunk->c_headerSize + chunk->c_chunkSize, error); + memcpy(ptr, hbuf, chunk->c_headerSize); + } else + wrote = WriteN(r, chunk->c_header, chunk->c_headerSize, error); + return wrote; +} + +int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, RTMPError *error) { + const PILI_RTMPPacket *prevPacket = r->m_vecChannelsOut[packet->m_nChannel]; + uint32_t last = 0; + int nSize; + int hSize, cSize; + char *header, *hptr, *hend, hbuf[RTMP_MAX_HEADER_SIZE], c; + uint32_t t; + char *buffer, *tbuf = NULL, *toff = NULL; + int nChunkSize; + int tlen; + + if (prevPacket && packet->m_headerType != RTMP_PACKET_SIZE_LARGE) { + /* compress a bit by using the prev packet's attributes */ + if (prevPacket->m_nBodySize == packet->m_nBodySize && prevPacket->m_packetType == packet->m_packetType && packet->m_headerType == RTMP_PACKET_SIZE_MEDIUM) + packet->m_headerType = RTMP_PACKET_SIZE_SMALL; + + if (prevPacket->m_nTimeStamp == packet->m_nTimeStamp && packet->m_headerType == RTMP_PACKET_SIZE_SMALL) + packet->m_headerType = RTMP_PACKET_SIZE_MINIMUM; + last = prevPacket->m_nTimeStamp; + } + + if (packet->m_headerType > 3) /* sanity */ + { + if (error) { + char *msg = "Sanity failed."; + RTMPError_Alloc(error, strlen(msg)); + error->code = RTMPErrorSanityFailed; + strcpy(error->message, msg); + } + + RTMP_Log(RTMP_LOGERROR, "sanity failed!! trying to send header of type: 0x%02x.", + (unsigned char)packet->m_headerType); + + return FALSE; + } + + nSize = packetSize[packet->m_headerType]; + hSize = nSize; + cSize = 0; + t = packet->m_nTimeStamp - last; + + if (packet->m_body) { + header = packet->m_body - nSize; + hend = packet->m_body; + } else { + header = hbuf + 6; + hend = hbuf + sizeof(hbuf); + } + + if (packet->m_nChannel > 319) + cSize = 2; + else if (packet->m_nChannel > 63) + cSize = 1; + if (cSize) { + header -= cSize; + hSize += cSize; + } + + if (nSize > 1 && t >= 0xffffff) { + header -= 4; + hSize += 4; + } + + hptr = header; + c = packet->m_headerType << 6; + switch (cSize) { + case 0: + c |= packet->m_nChannel; + break; + case 1: + break; + case 2: + c |= 1; + break; + } + *hptr++ = c; + if (cSize) { + int tmp = packet->m_nChannel - 64; + *hptr++ = tmp & 0xff; + if (cSize == 2) + *hptr++ = tmp >> 8; + } + + if (nSize > 1) { + hptr = AMF_EncodeInt24(hptr, hend, t > 0xffffff ? 0xffffff : t); + } + + if (nSize > 4) { + hptr = AMF_EncodeInt24(hptr, hend, packet->m_nBodySize); + *hptr++ = packet->m_packetType; + } + + if (nSize > 8) + hptr += EncodeInt32LE(hptr, packet->m_nInfoField2); + + if (nSize > 1 && t >= 0xffffff) + hptr = AMF_EncodeInt32(hptr, hend, t); + + nSize = packet->m_nBodySize; + buffer = packet->m_body; + nChunkSize = r->m_outChunkSize; + + RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, + nSize); + /* send all chunks in one HTTP request */ + if (r->Link.protocol & RTMP_FEATURE_HTTP) { + int chunks = (nSize + nChunkSize - 1) / nChunkSize; + if (chunks > 1) { + tlen = chunks * (cSize + 1) + nSize + hSize; + tbuf = malloc(tlen); + if (!tbuf) + return FALSE; + toff = tbuf; + } + } + while (nSize + hSize) { + int wrote; + + if (nSize < nChunkSize) + nChunkSize = nSize; + + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize); + RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize); + if (tbuf) { + memcpy(toff, header, nChunkSize + hSize); + toff += nChunkSize + hSize; + } else { + wrote = WriteN(r, header, nChunkSize + hSize, error); + if (!wrote) + return FALSE; + } + nSize -= nChunkSize; + buffer += nChunkSize; + hSize = 0; + + if (nSize > 0) { + header = buffer - 1; + hSize = 1; + if (cSize) { + header -= cSize; + hSize += cSize; + } + *header = (0xc0 | c); + if (cSize) { + int tmp = packet->m_nChannel - 64; + header[1] = tmp & 0xff; + if (cSize == 2) + header[2] = tmp >> 8; + } + } + } + if (tbuf) { + int wrote = WriteN(r, tbuf, toff - tbuf, error); + free(tbuf); + tbuf = NULL; + if (!wrote) + return FALSE; + } + + /* we invoked a remote method */ + if (packet->m_packetType == 0x14) { + AVal method; + char *ptr; + ptr = packet->m_body + 1; + AMF_DecodeString(ptr, &method); + RTMP_Log(RTMP_LOGDEBUG, "Invoking %s", method.av_val); + /* keep it in call queue till result arrives */ + if (queue) { + int txn; + ptr += 3 + method.av_len; + txn = (int)AMF_DecodeNumber(ptr); + AV_queue(&r->m_methodCalls, &r->m_numCalls, &method, txn); + } + } + + if (!r->m_vecChannelsOut[packet->m_nChannel]) + r->m_vecChannelsOut[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); + memcpy(r->m_vecChannelsOut[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); + return TRUE; +} + +int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error) { + return SHandShake(r, error); +} + +void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error) { + if (r->m_is_closing) { + return; + } + r->m_is_closing = 1; + int i; + if (PILI_RTMP_IsConnected(r)) { + if (r->m_stream_id > 0) { + if ((r->Link.protocol & RTMP_FEATURE_WRITE)) + SendFCUnpublish(r, NULL); + i = r->m_stream_id; + r->m_stream_id = 0; + SendDeleteStream(r, i, NULL); + } + if (r->m_clientID.av_val) { + HTTP_Post(r, RTMPT_CLOSE, "", 1); + free(r->m_clientID.av_val); + r->m_clientID.av_val = NULL; + r->m_clientID.av_len = 0; + } + PILI_RTMPSockBuf_Close(&r->m_sb); + + if (error && r->m_errorCallback) { + r->m_errorCallback(error, r->m_userData); + } + } + + r->m_stream_id = -1; + r->m_sb.sb_socket = -1; + r->m_nBWCheckCounter = 0; + r->m_nBytesIn = 0; + r->m_nBytesInSent = 0; + + if (r->m_read.flags & RTMP_READ_HEADER) { + free(r->m_read.buf); + r->m_read.buf = NULL; + } + r->m_read.dataType = 0; + r->m_read.flags = 0; + r->m_read.status = 0; + r->m_read.nResumeTS = 0; + r->m_read.nIgnoredFrameCounter = 0; + r->m_read.nIgnoredFlvFrameCounter = 0; + + r->m_write.m_nBytesRead = 0; + PILI_RTMPPacket_Free(&r->m_write); + + for (i = 0; i < RTMP_CHANNELS; i++) { + if (r->m_vecChannelsIn[i]) { + PILI_RTMPPacket_Free(r->m_vecChannelsIn[i]); + free(r->m_vecChannelsIn[i]); + r->m_vecChannelsIn[i] = NULL; + } + if (r->m_vecChannelsOut[i]) { + free(r->m_vecChannelsOut[i]); + r->m_vecChannelsOut[i] = NULL; + } + } + AV_clear(r->m_methodCalls, r->m_numCalls); + r->m_methodCalls = NULL; + r->m_numCalls = 0; + r->m_numInvokes = 0; + + r->m_bPlaying = FALSE; + r->m_sb.sb_size = 0; + + r->m_msgCounter = 0; + r->m_resplen = 0; + r->m_unackd = 0; + + free(r->Link.playpath0.av_val); + r->Link.playpath0.av_val = NULL; + + if (r->Link.lFlags & RTMP_LF_FTCU) { + free(r->Link.tcUrl.av_val); + r->Link.tcUrl.av_val = NULL; + r->Link.lFlags ^= RTMP_LF_FTCU; + } + +#ifdef CRYPTO + if (r->Link.dh) { + MDH_free(r->Link.dh); + r->Link.dh = NULL; + } + if (r->Link.rc4keyIn) { + RC4_free(r->Link.rc4keyIn); + r->Link.rc4keyIn = NULL; + } + if (r->Link.rc4keyOut) { + RC4_free(r->Link.rc4keyOut); + r->Link.rc4keyOut = NULL; + } +#endif +} + +int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb) { + int nBytes; + + if (!sb->sb_size) + sb->sb_start = sb->sb_buf; + + while (1) { + nBytes = sizeof(sb->sb_buf) - sb->sb_size - (sb->sb_start - sb->sb_buf); +#if defined(CRYPTO) && !defined(NO_SSL) + if (sb->sb_ssl) { + nBytes = TLS_read(sb->sb_ssl, sb->sb_start + sb->sb_size, nBytes); + } else +#endif + { + nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, 0); + } + if (nBytes != -1) { + sb->sb_size += nBytes; + } else { + int sockerr = GetSockError(); + RTMP_Log(RTMP_LOGDEBUG, "%s, recv returned %d. GetSockError(): %d (%s)", + __FUNCTION__, nBytes, sockerr, strerror(sockerr)); + if (sockerr == EINTR && !PILI_RTMP_ctrlC) + continue; + + if (sockerr == EWOULDBLOCK || sockerr == EAGAIN) { + sb->sb_timedout = TRUE; + nBytes = 0; + } + } + break; + } + + return nBytes; +} + +int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len) { + int rc; + +#ifdef _DEBUG + fwrite(buf, 1, len, netstackdump); +#endif + +#if defined(CRYPTO) && !defined(NO_SSL) + if (sb->sb_ssl) { + rc = TLS_write(sb->sb_ssl, buf, len); + } else +#endif + { + rc = send(sb->sb_socket, buf, len, 0); + } + return rc; +} + +int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb) { +#if defined(CRYPTO) && !defined(NO_SSL) + if (sb->sb_ssl) { + TLS_shutdown(sb->sb_ssl); + TLS_close(sb->sb_ssl); + sb->sb_ssl = NULL; + } +#endif + return closesocket(sb->sb_socket); +} + +#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) + +static void + DecodeTEA(AVal *key, AVal *text) { + uint32_t *v, k[4] = {0}, u; + uint32_t z, y, sum = 0, e, DELTA = 0x9e3779b9; + int32_t p, q; + int i, n; + unsigned char *ptr, *out; + + /* prep key: pack 1st 16 chars into 4 LittleEndian ints */ + ptr = (unsigned char *)key->av_val; + u = 0; + n = 0; + v = k; + p = key->av_len > 16 ? 16 : key->av_len; + for (i = 0; i < p; i++) { + u |= ptr[i] << (n * 8); + if (n == 3) { + *v++ = u; + u = 0; + n = 0; + } else { + n++; + } + } + /* any trailing chars */ + if (u) + *v = u; + + /* prep text: hex2bin, multiples of 4 */ + n = (text->av_len + 7) / 8; + out = malloc(n * 8); + ptr = (unsigned char *)text->av_val; + v = (uint32_t *)out; + for (i = 0; i < n; i++) { + u = (HEX2BIN(ptr[0]) << 4) + HEX2BIN(ptr[1]); + u |= ((HEX2BIN(ptr[2]) << 4) + HEX2BIN(ptr[3])) << 8; + u |= ((HEX2BIN(ptr[4]) << 4) + HEX2BIN(ptr[5])) << 16; + u |= ((HEX2BIN(ptr[6]) << 4) + HEX2BIN(ptr[7])) << 24; + *v++ = u; + ptr += 8; + } + v = (uint32_t *)out; + +/* http://www.movable-type.co.uk/scripts/tea-block.html */ +#define MX (((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (k[(p & 3) ^ e] ^ z)); + z = v[n - 1]; + y = v[0]; + q = 6 + 52 / n; + sum = q * DELTA; + while (sum != 0) { + e = sum >> 2 & 3; + for (p = n - 1; p > 0; p--) + z = v[p - 1], y = v[p] -= MX; + z = v[n - 1]; + y = v[0] -= MX; + sum -= DELTA; + } + + text->av_len /= 2; + memcpy(text->av_val, out, text->av_len); + free(out); +} + +static int + HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len) { + char hbuf[512]; + int hlen = snprintf(hbuf, sizeof(hbuf), "POST /%s%s/%d HTTP/1.1\r\n" + "Host: %.*s:%d\r\n" + "Accept: */*\r\n" + "User-Agent: Shockwave Flash\n" + "Connection: Keep-Alive\n" + "Cache-Control: no-cache\r\n" + "Content-type: application/x-fcs\r\n" + "Content-length: %d\r\n\r\n", + RTMPT_cmds[cmd], + r->m_clientID.av_val ? r->m_clientID.av_val : "", + r->m_msgCounter, r->Link.hostname.av_len, r->Link.hostname.av_val, + r->Link.port, len); + PILI_RTMPSockBuf_Send(&r->m_sb, hbuf, hlen); + hlen = PILI_RTMPSockBuf_Send(&r->m_sb, buf, len); + r->m_msgCounter++; + r->m_unackd++; + return hlen; +} + +static int + HTTP_read(PILI_RTMP *r, int fill) { + char *ptr; + int hlen; + + if (fill) + PILI_RTMPSockBuf_Fill(&r->m_sb); + if (r->m_sb.sb_size < 144) + return -1; + if (strncmp(r->m_sb.sb_start, "HTTP/1.1 200 ", 13)) + return -1; + ptr = strstr(r->m_sb.sb_start, "Content-Length:"); + if (!ptr) + return -1; + hlen = atoi(ptr + 16); + ptr = strstr(ptr, "\r\n\r\n"); + if (!ptr) + return -1; + ptr += 4; + r->m_sb.sb_size -= ptr - r->m_sb.sb_start; + r->m_sb.sb_start = ptr; + r->m_unackd--; + + if (!r->m_clientID.av_val) { + r->m_clientID.av_len = hlen; + r->m_clientID.av_val = malloc(hlen + 1); + if (!r->m_clientID.av_val) + return -1; + r->m_clientID.av_val[0] = '/'; + memcpy(r->m_clientID.av_val + 1, ptr, hlen - 1); + r->m_clientID.av_val[hlen] = 0; + r->m_sb.sb_size = 0; + } else { + r->m_polling = *ptr++; + r->m_resplen = hlen - 1; + r->m_sb.sb_start++; + r->m_sb.sb_size--; + } + return 0; +} + +#define MAX_IGNORED_FRAMES 50 + +/* Read from the stream until we get a media packet. + * Returns -3 if Play.Close/Stop, -2 if fatal error, -1 if no more media + * packets, 0 if ignorable error, >0 if there is a media packet + */ +static int + Read_1_Packet(PILI_RTMP *r, char *buf, unsigned int buflen) { + uint32_t prevTagSize = 0; + int rtnGetNextMediaPacket = 0, ret = RTMP_READ_EOF; + PILI_RTMPPacket packet = {0}; + int recopy = FALSE; + unsigned int size; + char *ptr, *pend; + uint32_t nTimeStamp = 0; + unsigned int len; + + rtnGetNextMediaPacket = PILI_RTMP_GetNextMediaPacket(r, &packet); + while (rtnGetNextMediaPacket) { + char *packetBody = packet.m_body; + unsigned int nPacketLen = packet.m_nBodySize; + + /* Return -3 if this was completed nicely with invoke message + * Play.Stop or Play.Complete + */ + if (rtnGetNextMediaPacket == 2) { + RTMP_Log(RTMP_LOGDEBUG, + "Got Play.Complete or Play.Stop from server. " + "Assuming stream is complete"); + ret = RTMP_READ_COMPLETE; + break; + } + + r->m_read.dataType |= (((packet.m_packetType == 0x08) << 2) | + (packet.m_packetType == 0x09)); + + if (packet.m_packetType == 0x09 && nPacketLen <= 5) { + RTMP_Log(RTMP_LOGDEBUG, "ignoring too small video packet: size: %d", + nPacketLen); + ret = RTMP_READ_IGNORE; + break; + } + if (packet.m_packetType == 0x08 && nPacketLen <= 1) { + RTMP_Log(RTMP_LOGDEBUG, "ignoring too small audio packet: size: %d", + nPacketLen); + ret = RTMP_READ_IGNORE; + break; + } + + if (r->m_read.flags & RTMP_READ_SEEKING) { + ret = RTMP_READ_IGNORE; + break; + } +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, TS: %d ms, abs TS: %d", + packet.m_packetType, nPacketLen, packet.m_nTimeStamp, + packet.m_hasAbsTimestamp); + if (packet.m_packetType == 0x09) + RTMP_Log(RTMP_LOGDEBUG, "frametype: %02X", (*packetBody & 0xf0)); +#endif + + if (r->m_read.flags & RTMP_READ_RESUME) { + /* check the header if we get one */ + if (packet.m_nTimeStamp == 0) { + if (r->m_read.nMetaHeaderSize > 0 && packet.m_packetType == 0x12) { + AMFObject metaObj; + int nRes = + AMF_Decode(&metaObj, packetBody, nPacketLen, FALSE); + if (nRes >= 0) { + AVal metastring; + AMFProp_GetString(AMF_GetProp(&metaObj, NULL, 0), + &metastring); + + if (AVMATCH(&metastring, &av_onMetaData)) { + /* compare */ + if ((r->m_read.nMetaHeaderSize != nPacketLen) || + (memcmp(r->m_read.metaHeader, packetBody, + r->m_read.nMetaHeaderSize) != 0)) { + ret = RTMP_READ_ERROR; + } + } + AMF_Reset(&metaObj); + if (ret == RTMP_READ_ERROR) + break; + } + } + + /* check first keyframe to make sure we got the right position + * in the stream! (the first non ignored frame) + */ + if (r->m_read.nInitialFrameSize > 0) { + /* video or audio data */ + if (packet.m_packetType == r->m_read.initialFrameType && r->m_read.nInitialFrameSize == nPacketLen) { + /* we don't compare the sizes since the packet can + * contain several FLV packets, just make sure the + * first frame is our keyframe (which we are going + * to rewrite) + */ + if (memcmp(r->m_read.initialFrame, packetBody, + r->m_read.nInitialFrameSize) == 0) { + RTMP_Log(RTMP_LOGDEBUG, "Checked keyframe successfully!"); + r->m_read.flags |= RTMP_READ_GOTKF; + /* ignore it! (what about audio data after it? it is + * handled by ignoring all 0ms frames, see below) + */ + ret = RTMP_READ_IGNORE; + break; + } + } + + /* hande FLV streams, even though the server resends the + * keyframe as an extra video packet it is also included + * in the first FLV stream chunk and we have to compare + * it and filter it out !! + */ + if (packet.m_packetType == 0x16) { + /* basically we have to find the keyframe with the + * correct TS being nResumeTS + */ + unsigned int pos = 0; + uint32_t ts = 0; + + while (pos + 11 < nPacketLen) { + /* size without header (11) and prevTagSize (4) */ + uint32_t dataSize = + AMF_DecodeInt24(packetBody + pos + 1); + ts = AMF_DecodeInt24(packetBody + pos + 4); + ts |= (packetBody[pos + 7] << 24); + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, + "keyframe search: FLV Packet: type %02X, dataSize: %d, timeStamp: %d ms", + packetBody[pos], dataSize, ts); +#endif + /* ok, is it a keyframe?: + * well doesn't work for audio! + */ + if (packetBody[pos /*6928, test 0 */] == + r->m_read.initialFrameType + /* && (packetBody[11]&0xf0) == 0x10 */) { + if (ts == r->m_read.nResumeTS) { + RTMP_Log(RTMP_LOGDEBUG, + "Found keyframe with resume-keyframe timestamp!"); + if (r->m_read.nInitialFrameSize != dataSize || memcmp(r->m_read.initialFrame, packetBody + pos + 11, r->m_read.nInitialFrameSize) != 0) { + RTMP_Log(RTMP_LOGERROR, + "FLV Stream: Keyframe doesn't match!"); + ret = RTMP_READ_ERROR; + break; + } + r->m_read.flags |= RTMP_READ_GOTFLVK; + + /* skip this packet? + * check whether skippable: + */ + if (pos + 11 + dataSize + 4 > nPacketLen) { + RTMP_Log(RTMP_LOGWARNING, + "Non skipable packet since it doesn't end with chunk, stream corrupt!"); + ret = RTMP_READ_ERROR; + break; + } + packetBody += (pos + 11 + dataSize + 4); + nPacketLen -= (pos + 11 + dataSize + 4); + + goto stopKeyframeSearch; + + } else if (r->m_read.nResumeTS < ts) { + /* the timestamp ts will only increase with + * further packets, wait for seek + */ + goto stopKeyframeSearch; + } + } + pos += (11 + dataSize + 4); + } + if (ts < r->m_read.nResumeTS) { + RTMP_Log(RTMP_LOGERROR, + "First packet does not contain keyframe, all " + "timestamps are smaller than the keyframe " + "timestamp; probably the resume seek failed?"); + } + stopKeyframeSearch:; + if (!(r->m_read.flags & RTMP_READ_GOTFLVK)) { + RTMP_Log(RTMP_LOGERROR, + "Couldn't find the seeked keyframe in this chunk!"); + ret = RTMP_READ_IGNORE; + break; + } + } + } + } + + if (packet.m_nTimeStamp > 0 && (r->m_read.flags & (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK))) { + /* another problem is that the server can actually change from + * 09/08 video/audio packets to an FLV stream or vice versa and + * our keyframe check will prevent us from going along with the + * new stream if we resumed. + * + * in this case set the 'found keyframe' variables to true. + * We assume that if we found one keyframe somewhere and were + * already beyond TS > 0 we have written data to the output + * which means we can accept all forthcoming data including the + * change between 08/09 <-> FLV packets + */ + r->m_read.flags |= (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK); + } + + /* skip till we find our keyframe + * (seeking might put us somewhere before it) + */ + if (!(r->m_read.flags & RTMP_READ_GOTKF) && + packet.m_packetType != 0x16) { + RTMP_Log(RTMP_LOGWARNING, + "Stream does not start with requested frame, ignoring data... "); + r->m_read.nIgnoredFrameCounter++; + if (r->m_read.nIgnoredFrameCounter > MAX_IGNORED_FRAMES) + ret = RTMP_READ_ERROR; /* fatal error, couldn't continue stream */ + else + ret = RTMP_READ_IGNORE; + break; + } + /* ok, do the same for FLV streams */ + if (!(r->m_read.flags & RTMP_READ_GOTFLVK) && + packet.m_packetType == 0x16) { + RTMP_Log(RTMP_LOGWARNING, + "Stream does not start with requested FLV frame, ignoring data... "); + r->m_read.nIgnoredFlvFrameCounter++; + if (r->m_read.nIgnoredFlvFrameCounter > MAX_IGNORED_FRAMES) + ret = RTMP_READ_ERROR; + else + ret = RTMP_READ_IGNORE; + break; + } + + /* we have to ignore the 0ms frames since these are the first + * keyframes; we've got these so don't mess around with multiple + * copies sent by the server to us! (if the keyframe is found at a + * later position there is only one copy and it will be ignored by + * the preceding if clause) + */ + if (!(r->m_read.flags & RTMP_READ_NO_IGNORE) && + packet.m_packetType != 0x16) { /* exclude type 0x16 (FLV) since it can + * contain several FLV packets */ + if (packet.m_nTimeStamp == 0) { + ret = RTMP_READ_IGNORE; + break; + } else { + /* stop ignoring packets */ + r->m_read.flags |= RTMP_READ_NO_IGNORE; + } + } + } + + /* calculate packet size and allocate slop buffer if necessary */ + size = nPacketLen + + ((packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) ? 11 : 0) + + (packet.m_packetType != 0x16 ? 4 : 0); + + if (size + 4 > buflen) { + /* the extra 4 is for the case of an FLV stream without a last + * prevTagSize (we need extra 4 bytes to append it) */ + r->m_read.buf = malloc(size + 4); + if (r->m_read.buf == 0) { + RTMP_Log(RTMP_LOGERROR, "Couldn't allocate memory!"); + ret = RTMP_READ_ERROR; /* fatal error */ + break; + } + recopy = TRUE; + ptr = r->m_read.buf; + } else { + ptr = buf; + } + pend = ptr + size + 4; + + /* use to return timestamp of last processed packet */ + + /* audio (0x08), video (0x09) or metadata (0x12) packets : + * construct 11 byte header then add PILI_RTMP packet's data */ + if (packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) { + nTimeStamp = r->m_read.nResumeTS + packet.m_nTimeStamp; + prevTagSize = 11 + nPacketLen; + + *ptr = packet.m_packetType; + ptr++; + ptr = AMF_EncodeInt24(ptr, pend, nPacketLen); + +#if 0 + if(packet.m_packetType == 0x09) { /* video */ + + /* H264 fix: */ + if((packetBody[0] & 0x0f) == 7) { /* CodecId = H264 */ + uint8_t packetType = *(packetBody+1); + + uint32_t ts = AMF_DecodeInt24(packetBody+2); /* composition time */ + int32_t cts = (ts+0xff800000)^0xff800000; + RTMP_Log(RTMP_LOGDEBUG, "cts : %d\n", cts); + + nTimeStamp -= cts; + /* get rid of the composition time */ + CRTMP::EncodeInt24(packetBody+2, 0); + } + RTMP_Log(RTMP_LOGDEBUG, "VIDEO: nTimeStamp: 0x%08X (%d)\n", nTimeStamp, nTimeStamp); + } +#endif + + ptr = AMF_EncodeInt24(ptr, pend, nTimeStamp); + *ptr = (char)((nTimeStamp & 0xFF000000) >> 24); + ptr++; + + /* stream id */ + ptr = AMF_EncodeInt24(ptr, pend, 0); + } + + memcpy(ptr, packetBody, nPacketLen); + len = nPacketLen; + + /* correct tagSize and obtain timestamp if we have an FLV stream */ + if (packet.m_packetType == 0x16) { + unsigned int pos = 0; + int delta; + + /* grab first timestamp and see if it needs fixing */ + nTimeStamp = AMF_DecodeInt24(packetBody + 4); + nTimeStamp |= (packetBody[7] << 24); + delta = packet.m_nTimeStamp - nTimeStamp; + + while (pos + 11 < nPacketLen) { + /* size without header (11) and without prevTagSize (4) */ + uint32_t dataSize = AMF_DecodeInt24(packetBody + pos + 1); + nTimeStamp = AMF_DecodeInt24(packetBody + pos + 4); + nTimeStamp |= (packetBody[pos + 7] << 24); + + if (delta) { + nTimeStamp += delta; + AMF_EncodeInt24(ptr + pos + 4, pend, nTimeStamp); + ptr[pos + 7] = nTimeStamp >> 24; + } + + /* set data type */ + r->m_read.dataType |= (((*(packetBody + pos) == 0x08) << 2) | + (*(packetBody + pos) == 0x09)); + + if (pos + 11 + dataSize + 4 > nPacketLen) { + if (pos + 11 + dataSize > nPacketLen) { + RTMP_Log(RTMP_LOGERROR, + "Wrong data size (%lu), stream corrupted, aborting!", + dataSize); + ret = RTMP_READ_ERROR; + break; + } + RTMP_Log(RTMP_LOGWARNING, "No tagSize found, appending!"); + + /* we have to append a last tagSize! */ + prevTagSize = dataSize + 11; + AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, + prevTagSize); + size += 4; + len += 4; + } else { + prevTagSize = + AMF_DecodeInt32(packetBody + pos + 11 + dataSize); + +#ifdef _DEBUG + RTMP_Log(RTMP_LOGDEBUG, + "FLV Packet: type %02X, dataSize: %lu, tagSize: %lu, timeStamp: %lu ms", + (unsigned char)packetBody[pos], dataSize, prevTagSize, + nTimeStamp); +#endif + + if (prevTagSize != (dataSize + 11)) { +#ifdef _DEBUG + RTMP_Log(RTMP_LOGWARNING, + "Tag and data size are not consitent, writing tag size according to dataSize+11: %d", + dataSize + 11); +#endif + + prevTagSize = dataSize + 11; + AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, + prevTagSize); + } + } + + pos += prevTagSize + 4; /*(11+dataSize+4); */ + } + } + ptr += len; + + if (packet.m_packetType != 0x16) { + /* FLV tag packets contain their own prevTagSize */ + AMF_EncodeInt32(ptr, pend, prevTagSize); + } + + /* In non-live this nTimeStamp can contain an absolute TS. + * Update ext timestamp with this absolute offset in non-live mode + * otherwise report the relative one + */ + /* RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, pktTS: %dms, TS: %dms, bLiveStream: %d", packet.m_packetType, nPacketLen, packet.m_nTimeStamp, nTimeStamp, r->Link.lFlags & RTMP_LF_LIVE); */ + r->m_read.timestamp = (r->Link.lFlags & RTMP_LF_LIVE) ? packet.m_nTimeStamp : nTimeStamp; + + ret = size; + break; + } + + if (rtnGetNextMediaPacket) + PILI_RTMPPacket_Free(&packet); + + if (recopy) { + len = ret > buflen ? buflen : ret; + memcpy(buf, r->m_read.buf, len); + r->m_read.bufpos = r->m_read.buf + len; + r->m_read.buflen = ret - len; + } + return ret; +} + +static const char flvHeader[] = {'F', 'L', 'V', 0x01, + 0x00, /* 0x04 == audio, 0x01 == video */ + 0x00, 0x00, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x00}; + +#define HEADERBUF (128 * 1024) +int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size) { + int nRead = 0, total = 0; + +/* can't continue */ +fail: + switch (r->m_read.status) { + case RTMP_READ_EOF: + case RTMP_READ_COMPLETE: + return 0; + case RTMP_READ_ERROR: /* corrupted stream, resume failed */ + SetSockError(EINVAL); + return -1; + default: + break; + } + + if ((r->m_read.flags & RTMP_READ_SEEKING) && r->m_read.buf) { + /* drop whatever's here */ + free(r->m_read.buf); + r->m_read.buf = NULL; + r->m_read.bufpos = NULL; + r->m_read.buflen = 0; + } + + /* If there's leftover data buffered, use it up */ + if (r->m_read.buf) { + nRead = r->m_read.buflen; + if (nRead > size) + nRead = size; + memcpy(buf, r->m_read.bufpos, nRead); + r->m_read.buflen -= nRead; + if (!r->m_read.buflen) { + free(r->m_read.buf); + r->m_read.buf = NULL; + r->m_read.bufpos = NULL; + } else { + r->m_read.bufpos += nRead; + } + buf += nRead; + total += nRead; + size -= nRead; + } + + while (size > 0 && (nRead = Read_1_Packet(r, buf, size)) >= 0) { + if (!nRead) continue; + buf += nRead; + total += nRead; + size -= nRead; + break; + } + if (nRead < 0) + r->m_read.status = nRead; + + if (size < 0) + total += size; + return total; +} + +static const AVal av_setDataFrame = AVC("@setDataFrame"); + +int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error) { + PILI_RTMPPacket *pkt = &r->m_write; + char *pend, *enc; + int s2 = size, ret, num; + + pkt->m_nChannel = 0x04; /* source channel */ + pkt->m_nInfoField2 = r->m_stream_id; + + while (s2) { + if (!pkt->m_nBytesRead) { + if (size < 11) { + /* FLV pkt too small */ + return 0; + } + + if (buf[0] == 'F' && buf[1] == 'L' && buf[2] == 'V') { + buf += 13; + s2 -= 13; + } + + pkt->m_packetType = *buf++; + pkt->m_nBodySize = AMF_DecodeInt24(buf); + buf += 3; + pkt->m_nTimeStamp = AMF_DecodeInt24(buf); + buf += 3; + pkt->m_nTimeStamp |= *buf++ << 24; + buf += 3; + s2 -= 11; + + if (((pkt->m_packetType == 0x08 || pkt->m_packetType == 0x09) && + !pkt->m_nTimeStamp) || + pkt->m_packetType == 0x12) { + pkt->m_headerType = RTMP_PACKET_SIZE_LARGE; + if (pkt->m_packetType == 0x12) + pkt->m_nBodySize += 16; + } else { + pkt->m_headerType = RTMP_PACKET_SIZE_MEDIUM; + } + + if (!PILI_RTMPPacket_Alloc(pkt, pkt->m_nBodySize)) { + RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); + return FALSE; + } + enc = pkt->m_body; + pend = enc + pkt->m_nBodySize; + if (pkt->m_packetType == 0x12) { + enc = AMF_EncodeString(enc, pend, &av_setDataFrame); + pkt->m_nBytesRead = enc - pkt->m_body; + } + } else { + enc = pkt->m_body + pkt->m_nBytesRead; + } + num = pkt->m_nBodySize - pkt->m_nBytesRead; + if (num > s2) + num = s2; + memcpy(enc, buf, num); + pkt->m_nBytesRead += num; + s2 -= num; + buf += num; + if (pkt->m_nBytesRead == pkt->m_nBodySize) { + ret = PILI_RTMP_SendPacket(r, pkt, FALSE, error); + PILI_RTMPPacket_Free(pkt); + pkt->m_nBytesRead = 0; + if (!ret) + return -1; + buf += 4; + s2 -= 4; + if (s2 < 0) + break; + } + } + return size + s2; +} diff --git a/LFLiveKit/Vendor/pili-librtmp/rtmp.h b/LFLiveKit/Vendor/pili-librtmp/rtmp.h new file mode 100644 index 00000000..d415e16c --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/rtmp.h @@ -0,0 +1,356 @@ +#ifndef __RTMP_H__ +#define __RTMP_H__ +/* + * Copyright (C) 2005-2008 Team XBMC + * http://www.xbmc.org + * Copyright (C) 2008-2009 Andrej Stepanchuk + * Copyright (C) 2009-2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#define NO_CRYPTO + +#if !defined(NO_CRYPTO) && !defined(CRYPTO) +#define CRYPTO +#endif + +#include +#include +#include + +#include "amf.h" +#include "error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define RTMP_LIB_VERSION 0x020300 /* 2.3 */ + +#define RTMP_FEATURE_HTTP 0x01 +#define RTMP_FEATURE_ENC 0x02 +#define RTMP_FEATURE_SSL 0x04 +#define RTMP_FEATURE_MFP 0x08 /* not yet supported */ +#define RTMP_FEATURE_WRITE 0x10 /* publish, not play */ +#define RTMP_FEATURE_HTTP2 0x20 /* server-side rtmpt */ + +#define RTMP_PROTOCOL_UNDEFINED -1 +#define RTMP_PROTOCOL_RTMP 0 +#define RTMP_PROTOCOL_RTMPE RTMP_FEATURE_ENC +#define RTMP_PROTOCOL_RTMPT RTMP_FEATURE_HTTP +#define RTMP_PROTOCOL_RTMPS RTMP_FEATURE_SSL +#define RTMP_PROTOCOL_RTMPTE (RTMP_FEATURE_HTTP | RTMP_FEATURE_ENC) +#define RTMP_PROTOCOL_RTMPTS (RTMP_FEATURE_HTTP | RTMP_FEATURE_SSL) +#define RTMP_PROTOCOL_RTMFP RTMP_FEATURE_MFP + +#define RTMP_DEFAULT_CHUNKSIZE 128 + +/* needs to fit largest number of bytes recv() may return */ +#define RTMP_BUFFER_CACHE_SIZE (16 * 1024) + +#define RTMP_CHANNELS 65600 + +extern const char PILI_RTMPProtocolStringsLower[][7]; +extern const AVal PILI_RTMP_DefaultFlashVer; +extern int PILI_RTMP_ctrlC; + +uint32_t PILI_RTMP_GetTime(void); + +#define RTMP_PACKET_TYPE_AUDIO 0x08 +#define RTMP_PACKET_TYPE_VIDEO 0x09 +#define RTMP_PACKET_TYPE_INFO 0x12 + +#define RTMP_MAX_HEADER_SIZE 18 + +#define RTMP_PACKET_SIZE_LARGE 0 +#define RTMP_PACKET_SIZE_MEDIUM 1 +#define RTMP_PACKET_SIZE_SMALL 2 +#define RTMP_PACKET_SIZE_MINIMUM 3 + +typedef struct PILI_RTMPChunk { + int c_headerSize; + int c_chunkSize; + char *c_chunk; + char c_header[RTMP_MAX_HEADER_SIZE]; +} PILI_RTMPChunk; + +typedef struct PILI_RTMPPacket { + uint8_t m_headerType; + uint8_t m_packetType; + uint8_t m_hasAbsTimestamp; /* timestamp absolute or relative? */ + int m_nChannel; + uint32_t m_nTimeStamp; /* timestamp */ + int32_t m_nInfoField2; /* last 4 bytes in a long header */ + uint32_t m_nBodySize; + uint32_t m_nBytesRead; + PILI_RTMPChunk *m_chunk; + char *m_body; +} PILI_RTMPPacket; + +typedef struct PILI_RTMPSockBuf { + int sb_socket; + int sb_size; /* number of unprocessed bytes in buffer */ + char *sb_start; /* pointer into sb_pBuffer of next byte to process */ + char sb_buf[RTMP_BUFFER_CACHE_SIZE]; /* data read from socket */ + int sb_timedout; + void *sb_ssl; +} PILI_RTMPSockBuf; + +void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p); +void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p); +int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize); +void PILI_RTMPPacket_Free(PILI_RTMPPacket *p); + +#define RTMPPacket_IsReady(a) ((a)->m_nBytesRead == (a)->m_nBodySize) + +typedef struct PILI_RTMP_LNK { + AVal hostname; + AVal domain; + AVal sockshost; + + AVal playpath0; /* parsed from URL */ + AVal playpath; /* passed in explicitly */ + AVal tcUrl; + AVal swfUrl; + AVal pageUrl; + AVal app; + AVal auth; + AVal flashVer; + AVal subscribepath; + AVal token; + AMFObject extras; + int edepth; + + int seekTime; + int stopTime; + +#define RTMP_LF_AUTH 0x0001 /* using auth param */ +#define RTMP_LF_LIVE 0x0002 /* stream is live */ +#define RTMP_LF_SWFV 0x0004 /* do SWF verification */ +#define RTMP_LF_PLST 0x0008 /* send playlist before play */ +#define RTMP_LF_BUFX 0x0010 /* toggle stream on BufferEmpty msg */ +#define RTMP_LF_FTCU 0x0020 /* free tcUrl on close */ + int lFlags; + + int swfAge; + + int protocol; + int timeout; /* connection timeout in seconds */ + int send_timeout; /* send data timeout */ + + unsigned short socksport; + unsigned short port; + +#ifdef CRYPTO +#define RTMP_SWF_HASHLEN 32 + void *dh; /* for encryption */ + void *rc4keyIn; + void *rc4keyOut; + + uint32_t SWFSize; + uint8_t SWFHash[RTMP_SWF_HASHLEN]; + char SWFVerificationResponse[RTMP_SWF_HASHLEN + 10]; +#endif +} PILI_RTMP_LNK; + +/* state for read() wrapper */ +typedef struct PILI_RTMP_READ { + char *buf; + char *bufpos; + unsigned int buflen; + uint32_t timestamp; + uint8_t dataType; + uint8_t flags; +#define RTMP_READ_HEADER 0x01 +#define RTMP_READ_RESUME 0x02 +#define RTMP_READ_NO_IGNORE 0x04 +#define RTMP_READ_GOTKF 0x08 +#define RTMP_READ_GOTFLVK 0x10 +#define RTMP_READ_SEEKING 0x20 + int8_t status; +#define RTMP_READ_COMPLETE -3 +#define RTMP_READ_ERROR -2 +#define RTMP_READ_EOF -1 +#define RTMP_READ_IGNORE 0 + + /* if bResume == TRUE */ + uint8_t initialFrameType; + uint32_t nResumeTS; + char *metaHeader; + char *initialFrame; + uint32_t nMetaHeaderSize; + uint32_t nInitialFrameSize; + uint32_t nIgnoredFrameCounter; + uint32_t nIgnoredFlvFrameCounter; +} PILI_RTMP_READ; + +typedef struct PILI_RTMP_METHOD { + AVal name; + int num; +} PILI_RTMP_METHOD; + +typedef void (*PILI_RTMPErrorCallback)(RTMPError *error, void *userData); + +typedef struct PILI_CONNECTION_TIME { + uint32_t connect_time; + uint32_t handshake_time; +} PILI_CONNECTION_TIME; + +typedef void (*PILI_RTMP_ConnectionTimeCallback)( + PILI_CONNECTION_TIME *conn_time, void *userData); + +typedef struct PILI_RTMP { + int m_inChunkSize; + int m_outChunkSize; + int m_nBWCheckCounter; + int m_nBytesIn; + int m_nBytesInSent; + int m_nBufferMS; + int m_stream_id; /* returned in _result from createStream */ + int m_mediaChannel; + uint32_t m_mediaStamp; + uint32_t m_pauseStamp; + int m_pausing; + int m_nServerBW; + int m_nClientBW; + uint8_t m_nClientBW2; + uint8_t m_bPlaying; + uint8_t m_bSendEncoding; + uint8_t m_bSendCounter; + + int m_numInvokes; + int m_numCalls; + PILI_RTMP_METHOD *m_methodCalls; /* remote method calls queue */ + + PILI_RTMPPacket *m_vecChannelsIn[RTMP_CHANNELS]; + PILI_RTMPPacket *m_vecChannelsOut[RTMP_CHANNELS]; + int m_channelTimestamp[RTMP_CHANNELS]; /* abs timestamp of last packet */ + + double m_fAudioCodecs; /* audioCodecs for the connect packet */ + double m_fVideoCodecs; /* videoCodecs for the connect packet */ + double m_fEncoding; /* AMF0 or AMF3 */ + + double m_fDuration; /* duration of stream in seconds */ + + int m_msgCounter; /* RTMPT stuff */ + int m_polling; + int m_resplen; + int m_unackd; + AVal m_clientID; + + PILI_RTMP_READ m_read; + PILI_RTMPPacket m_write; + PILI_RTMPSockBuf m_sb; + PILI_RTMP_LNK Link; + + PILI_RTMPErrorCallback m_errorCallback; + PILI_RTMP_ConnectionTimeCallback m_connCallback; + RTMPError *m_error; + void *m_userData; + int m_is_closing; + int m_tcp_nodelay; + uint32_t ip; +} PILI_RTMP; + +int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, + unsigned int *port, AVal *playpath, AVal *app); + +int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, + unsigned int *port, AVal *playpath, AVal *app, AVal *domain); + +void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out); +void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size); +void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error); + +int PILI_RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, + RTMPError *error); +int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error); +void PILI_RTMP_SetupStream(PILI_RTMP *r, int protocol, AVal *hostname, + unsigned int port, AVal *sockshost, AVal *playpath, + AVal *tcUrl, AVal *swfUrl, AVal *pageUrl, AVal *app, + AVal *auth, AVal *swfSHA256Hash, uint32_t swfSize, + AVal *flashVer, AVal *subscribepath, int dStart, + int dStop, int bLiveStream, long int timeout); + +int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); +struct sockaddr; +int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, + RTMPError *error); +int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); +int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error); + +int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); +int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, + RTMPError *error); +int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error); +int PILI_RTMP_IsConnected(PILI_RTMP *r); +int PILI_RTMP_Socket(PILI_RTMP *r); +int PILI_RTMP_IsTimedout(PILI_RTMP *r); +double PILI_RTMP_GetDuration(PILI_RTMP *r); +int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error); + +int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error); +int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error); +void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error); +int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); +int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet); + +void PILI_RTMP_Init(PILI_RTMP *r); +void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error); +PILI_RTMP *PILI_RTMP_Alloc(void); +void PILI_RTMP_Free(PILI_RTMP *r); +void PILI_RTMP_EnableWrite(PILI_RTMP *r); + +int PILI_RTMP_LibVersion(void); +void PILI_RTMP_UserInterrupt(void); /* user typed Ctrl-C */ + +int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, + unsigned int nTime, RTMPError *error); + +/* caller probably doesn't know current timestamp, should + * just use RTMP_Pause instead + */ +int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int dTime, RTMPError *error); +int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error); + +int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, + AMFObjectProperty *p); + +int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb); +int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len); +int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb); + +int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error); +int PILI_RTMP_SendSeek(PILI_RTMP *r, int dTime, RTMPError *error); +int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error); +int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error); +void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit); +int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size); +int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error); + +/* hashswf.c */ +int PILI_RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, + int age); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h b/LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h new file mode 100644 index 00000000..880457c3 --- /dev/null +++ b/LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h @@ -0,0 +1,123 @@ +#ifndef __RTMP_SYS_H__ +#define __RTMP_SYS_H__ +/* + * Copyright (C) 2010 Howard Chu + * + * This file is part of librtmp. + * + * librtmp is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1, + * or (at your option) any later version. + * + * librtmp is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with librtmp see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/lgpl.html + */ + +#ifdef _WIN32 + +#ifdef _XBOX +#include +#include +#define snprintf _snprintf +#define strcasecmp stricmp +#define strncasecmp strnicmp +#define vsnprintf _vsnprintf + +#else /* !_XBOX */ +#include +#include +#endif + +#define GetSockError() WSAGetLastError() +#define SetSockError(e) WSASetLastError(e) +#define setsockopt(a, b, c, d, e) (setsockopt)(a, b, c, (const char *)d, (int)e) +#define EWOULDBLOCK \ + WSAETIMEDOUT /* we don't use nonblocking, but we do use timeouts */ +#define sleep(n) Sleep(n * 1000) +#define msleep(n) Sleep(n) +#define SET_RCVTIMEO(tv, s) int tv = s * 1000 +#else /* !_WIN32 */ +#include +#include +#include +#include +#include +#include +#include +#include +#define GetSockError() errno +#define SetSockError(e) errno = e +#undef closesocket +#define closesocket(s) close(s) +#define msleep(n) usleep(n * 1000) +#define SET_RCVTIMEO(tv, s) struct timeval tv = {s, 0} +#endif + +#include "rtmp.h" + +#ifdef USE_POLARSSL +#include +#include +#include +typedef struct tls_ctx { + havege_state hs; + ssl_session ssn; +} tls_ctx; +#define TLS_CTX tls_ctx * +#define TLS_client(ctx, s) \ + s = malloc(sizeof(ssl_context)); \ + ssl_init(s); \ + ssl_set_endpoint(s, SSL_IS_CLIENT); \ + ssl_set_authmode(s, SSL_VERIFY_NONE); \ + ssl_set_rng(s, havege_rand, &ctx->hs); \ + ssl_set_ciphers(s, ssl_default_ciphers); \ + ssl_set_session(s, 1, 600, &ctx->ssn) +#define TLS_setfd(s, fd) ssl_set_bio(s, net_recv, &fd, net_send, &fd) +#define TLS_connect(s) ssl_handshake(s) +#define TLS_read(s, b, l) ssl_read(s, (unsigned char *)b, l) +#define TLS_write(s, b, l) ssl_write(s, (unsigned char *)b, l) +#define TLS_shutdown(s) ssl_close_notify(s) +#define TLS_close(s) \ + ssl_free(s); \ + free(s) + +#elif defined(USE_GNUTLS) +#include +typedef struct tls_ctx { + gnutls_certificate_credentials_t cred; + gnutls_priority_t prios; +} tls_ctx; +#define TLS_CTX tls_ctx * +#define TLS_client(ctx, s) \ + gnutls_init((gnutls_session_t *)(&s), GNUTLS_CLIENT); \ + gnutls_priority_set(s, ctx->prios); \ + gnutls_credentials_set(s, GNUTLS_CRD_CERTIFICATE, ctx->cred) +#define TLS_setfd(s, fd) \ + gnutls_transport_set_ptr(s, (gnutls_transport_ptr_t)(long)fd) +#define TLS_connect(s) gnutls_handshake(s) +#define TLS_read(s, b, l) gnutls_record_recv(s, b, l) +#define TLS_write(s, b, l) gnutls_record_send(s, b, l) +#define TLS_shutdown(s) gnutls_bye(s, GNUTLS_SHUT_RDWR) +#define TLS_close(s) gnutls_deinit(s) + +#else /* USE_OPENSSL */ +#define TLS_CTX SSL_CTX * +#define TLS_client(ctx, s) s = SSL_new(ctx) +#define TLS_setfd(s, fd) SSL_set_fd(s, fd) +#define TLS_connect(s) SSL_connect(s) +#define TLS_read(s, b, l) SSL_read(s, b, l) +#define TLS_write(s, b, l) SSL_write(s, b, l) +#define TLS_shutdown(s) SSL_shutdown(s) +#define TLS_close(s) SSL_free(s) + +#endif +#endif diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 575000bb1915dc25f45c97cfc55023f7a6cf1fe5..924f4daa027ebdaf67a54fbc984be95dc91d9c00 100644 GIT binary patch literal 123847 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 U+5i1xM2r9X$N&HLVbcx&4~8WQRsaA1 literal 118716 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%0D*Hs_@nZ-R*_Z_Plr>nwbSD7ocR;NhwLv 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 diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj index 3ec30eb6..627df507 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 768D63AD7BD5B7D2959CC88D /* libPods-LFLiveKitSwiftDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 051291DCF26E653942D6929D /* libPods-LFLiveKitSwiftDemo.a */; }; B289F1BE1D3DCD3000D9C7A5 /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B61D3DCD3000D9C7A5 /* camra_beauty@2x.png */; }; B289F1BF1D3DCD3000D9C7A5 /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B71D3DCD3000D9C7A5 /* camra_beauty@3x.png */; }; B289F1C01D3DCD3000D9C7A5 /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B81D3DCD3000D9C7A5 /* camra_beauty_close@2x.png */; }; @@ -20,10 +21,12 @@ B2C8FACA1D3DB8B3008D44B5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2C8FAC81D3DB8B3008D44B5 /* Main.storyboard */; }; B2C8FACC1D3DB8B3008D44B5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2C8FACB1D3DB8B3008D44B5 /* Assets.xcassets */; }; B2C8FACF1D3DB8B4008D44B5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2C8FACD1D3DB8B4008D44B5 /* LaunchScreen.storyboard */; }; - D76381970CDF6883DA800952 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C703895C713844AE5F37BC53 /* libPods.a */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 051291DCF26E653942D6929D /* libPods-LFLiveKitSwiftDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitSwiftDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 19A8327F404723C1C4B67B2C /* Pods-LFLiveKitSwiftDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitSwiftDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo.release.xcconfig"; sourceTree = ""; }; + B16B5A0921F8F93D139F7961 /* Pods-LFLiveKitSwiftDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitSwiftDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo.debug.xcconfig"; sourceTree = ""; }; B289F1B61D3DCD3000D9C7A5 /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; B289F1B71D3DCD3000D9C7A5 /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; B289F1B81D3DCD3000D9C7A5 /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; @@ -40,9 +43,6 @@ B2C8FACE1D3DB8B4008D44B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; B2C8FAD01D3DB8B4008D44B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B2C8FAD61D3DB9D6008D44B5 /* LFLiveKitSwiftDemo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LFLiveKitSwiftDemo-Bridging-Header.h"; sourceTree = ""; }; - C5E86117C8AB61338C12909E /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; - C703895C713844AE5F37BC53 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FD5AE5787FDCE4BA8C28E2EE /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -50,7 +50,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D76381970CDF6883DA800952 /* libPods.a in Frameworks */, + 768D63AD7BD5B7D2959CC88D /* libPods-LFLiveKitSwiftDemo.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -60,8 +60,8 @@ 0044BAB3BCE83EE63FB6F37C /* Pods */ = { isa = PBXGroup; children = ( - FD5AE5787FDCE4BA8C28E2EE /* Pods.debug.xcconfig */, - C5E86117C8AB61338C12909E /* Pods.release.xcconfig */, + B16B5A0921F8F93D139F7961 /* Pods-LFLiveKitSwiftDemo.debug.xcconfig */, + 19A8327F404723C1C4B67B2C /* Pods-LFLiveKitSwiftDemo.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -69,7 +69,7 @@ 656DB83DA3620FA72C6B7CF7 /* Frameworks */ = { isa = PBXGroup; children = ( - C703895C713844AE5F37BC53 /* libPods.a */, + 051291DCF26E653942D6929D /* libPods-LFLiveKitSwiftDemo.a */, ); name = Frameworks; sourceTree = ""; @@ -129,11 +129,12 @@ isa = PBXNativeTarget; buildConfigurationList = B2C8FAD31D3DB8B4008D44B5 /* Build configuration list for PBXNativeTarget "LFLiveKitSwiftDemo" */; buildPhases = ( - BAC96C6840291F2B616FE902 /* Check Pods Manifest.lock */, + BAC96C6840291F2B616FE902 /* 📦 Check Pods Manifest.lock */, B2C8FABD1D3DB8B3008D44B5 /* Sources */, B2C8FABE1D3DB8B3008D44B5 /* Frameworks */, B2C8FABF1D3DB8B3008D44B5 /* Resources */, - 7490D167BE18C3C7DC2FE381 /* Copy Pods Resources */, + 7490D167BE18C3C7DC2FE381 /* 📦 Copy Pods Resources */, + 5683F74F0FF045A7193DAAD0 /* 📦 Embed Pods Frameworks */, ); buildRules = ( ); @@ -199,29 +200,44 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 7490D167BE18C3C7DC2FE381 /* Copy Pods Resources */ = { + 5683F74F0FF045A7193DAAD0 /* 📦 Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Copy Pods Resources"; + name = "📦 Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - BAC96C6840291F2B616FE902 /* Check Pods Manifest.lock */ = { + 7490D167BE18C3C7DC2FE381 /* 📦 Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "Check Pods Manifest.lock"; + name = "📦 Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + BAC96C6840291F2B616FE902 /* 📦 Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "📦 Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -348,7 +364,7 @@ }; B2C8FAD41D3DB8B4008D44B5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FD5AE5787FDCE4BA8C28E2EE /* Pods.debug.xcconfig */; + baseConfigurationReference = B16B5A0921F8F93D139F7961 /* Pods-LFLiveKitSwiftDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -364,7 +380,7 @@ }; B2C8FAD51D3DB8B4008D44B5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5E86117C8AB61338C12909E /* Pods.release.xcconfig */; + baseConfigurationReference = 19A8327F404723C1C4B67B2C /* Pods-LFLiveKitSwiftDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/LFLiveKitSwiftDemo/Podfile b/LFLiveKitSwiftDemo/Podfile index cf2bcce5..0602d100 100755 --- a/LFLiveKitSwiftDemo/Podfile +++ b/LFLiveKitSwiftDemo/Podfile @@ -1,4 +1,6 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios,'7.0' -pod 'LFLiveKit', path: '../' \ No newline at end of file +target 'LFLiveKitSwiftDemo' do +pod 'LFLiveKit', path: '../' +end diff --git a/Podfile b/Podfile deleted file mode 100755 index 3d1f0976..00000000 --- a/Podfile +++ /dev/null @@ -1,10 +0,0 @@ -source 'https://github.com/CocoaPods/Specs.git' -platform :ios,'7.0' - -target 'LFLiveKit' do - pod 'LMGPUImage', '~> 0.1.9' - pod 'pili-librtmp', '~> 1.0.3.1' -end - - - From f69b586d701cc5ea0a74b4bbf7947e8b63c9fd06 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 16:19:36 +0800 Subject: [PATCH 071/178] add carthage --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c1a34844..a4aaedab 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,13 @@ LFLiveKit $ pod install -### Manually +#### Carthage(1.9.7version after) +1. Add `github "LaiFengiOS/LFLiveKit"` to your Cartfile. +2. Run `carthage update --platform ios` and add the framework to your project. +3. Import \. + + +#### Manually 1. Download all the files in the `LFLiveKit` subdirectory. 2. Add the source files to your Xcode project. @@ -54,6 +60,8 @@ LFLiveKit * libz 5. Add `LMGPUImage and pili-librtmp`(static library) to your Xcode project. + + ## Architecture: capture: LFAudioCapture and LFVideoCapture From 09398d0cb36ccaece69221e21326804c9cf9bfef Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 16:42:02 +0800 Subject: [PATCH 072/178] add iOS encoder --- .../UserInterfaceState.xcuserstate | Bin 17738 -> 18429 bytes LFLiveKit/LFLiveSession.m | 8 ++++- .../UserInterfaceState.xcuserstate | Bin 123847 -> 124674 bytes README.md | 28 +++++++++--------- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 1eeb98fc49a942faecdcd4eda90ccebd4d20389a..1db0ebd35c5b5cb79d95a62828c4d5a404f9edcf 100644 GIT binary patch delta 10465 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 V+AM#SfPt{-Nxo=$Hvgv0`F{s#Ue5pk diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 048e52d8..3ab1c8fe 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -14,6 +14,7 @@ #import "LFStreamRTMPSocket.h" #import "LFLiveStreamInfo.h" #import "LFGPUImageBeautyFilter.h" +#import "LFH264VideoEncoder.h" #define LFLiveReportKey @"com.youku.liveSessionReport" @@ -290,7 +291,12 @@ - (LFVideoCapture *)videoCaptureSource { - (id)videoEncoder { if (!_videoEncoder) { - _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + if([[UIDevice currentDevice].systemVersion floatValue] < 8.0){ + _videoEncoder = [[LFH264VideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + }else{ + _videoEncoder = [[LFHardwareVideoEncoder alloc] initWithVideoStreamConfiguration:_videoConfiguration]; + } + [_videoEncoder setDelegate:self]; } return _videoEncoder; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 924f4daa027ebdaf67a54fbc984be95dc91d9c00..7ec83d5e8ae47edbb676358dd6c3599d1f291975 100644 GIT binary patch literal 124674 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 a2mkwjXV&_^|7@4@fB*Ua|36&x{{H|R#IfH1 literal 123847 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 U+5i1xM2r9X$N&HLVbcx&4~8WQRsaA1 diff --git a/README.md b/README.md index a4aaedab..0b2ea2b1 100644 --- a/README.md +++ b/README.md @@ -41,24 +41,24 @@ LFLiveKit $ pod install -#### Carthage(1.9.7version after) -1. Add `github "LaiFengiOS/LFLiveKit"` to your Cartfile. -2. Run `carthage update --platform ios` and add the framework to your project. -3. Import \. +#### Carthage + 1. Add `github "LaiFengiOS/LFLiveKit"` to your Cartfile. + 2. Run `carthage update --platform ios` and add the framework to your project. + 3. Import \. #### Manually -1. Download all the files in the `LFLiveKit` subdirectory. -2. Add the source files to your Xcode project. -3. Link with required frameworks: - * UIKit - * Foundation - * AVFoundation - * VideoToolbox - * AudioToolbox - * libz -5. Add `LMGPUImage and pili-librtmp`(static library) to your Xcode project. + 1. Download all the files in the `LFLiveKit` subdirectory. + 2. Add the source files to your Xcode project. + 3. Link with required frameworks: + * UIKit + * Foundation + * AVFoundation + * VideoToolbox + * AudioToolbox + * libz + 5. Add `LMGPUImage and pili-librtmp`(static library) to your Xcode project. From b73bfee6ace345613e026c216c2de81a6e9a3e53 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 16:45:50 +0800 Subject: [PATCH 073/178] update version2.0 --- LFLiveKit.podspec | 2 +- .../UserInterfaceState.xcuserstate | Bin 18429 -> 18714 bytes LFLiveKit/Info.plist | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index e17a0a04..49a0e5c2 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "1.9.6" + s.version = "2.0" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 1db0ebd35c5b5cb79d95a62828c4d5a404f9edcf..bd82a2d20592bff84cdd0b3c48894e56ff60749e 100644 GIT binary patch delta 8988 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 delta 9160 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 FMWK CFBundleShortVersionString - 1.9.6 + 2.0 CFBundleSignature ???? CFBundleVersion From e57d3e38065295212a136da0d9a82a42d40b6999 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 17:08:52 +0800 Subject: [PATCH 074/178] update read --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0b2ea2b1..f99281ff 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,6 @@ LFLiveKit * VideoToolbox * AudioToolbox * libz - 5. Add `LMGPUImage and pili-librtmp`(static library) to your Xcode project. From 26a47ffccc4f9a1c9173d6093800a77149465a2a Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 17:12:42 +0800 Subject: [PATCH 075/178] =?UTF-8?q?update=20travis=C2=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 18714 -> 18823 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1dd25288..fdd2dc20 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: objective-c osx_image: xcode7 -xcode_workspace: LFLiveKit.xcworkspace +xcode_project: LFLiveKit.xcodeproj xcode_scheme: LFLiveKit script: -- xctool -workspace LFLiveKit.xcworkspace -scheme 'LFLiveKit' -configuration Release -sdk iphonesimulator -arch i386 build \ No newline at end of file +- xctool -project LFLiveKit.xcodeproj -scheme 'LFLiveKit' -configuration Release -sdk iphonesimulator -arch i386 build \ No newline at end of file diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index bd82a2d20592bff84cdd0b3c48894e56ff60749e..14912fab873395a763b0c7f6e7aee26106f8732b 100644 GIT binary patch delta 7081 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 delta 7115 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 From 6e3e92a6b9ba6137220269b397f32f5572e5f456 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 17:23:14 +0800 Subject: [PATCH 076/178] modify read --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f99281ff..ae01a65f 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,9 @@ LFLiveKit - [x] Swift Support - [ ] ~~FLV package and send~~ +## Requirements + - iOS 7.0+ + - Xcode 7.3 ## Installation @@ -58,16 +61,9 @@ LFLiveKit * VideoToolbox * AudioToolbox * libz - - - -## Architecture: - - capture: LFAudioCapture and LFVideoCapture - encode: LFHardwareAudioEncoder and LFHardwareVideoEncoder - publish: LFStreamRtmpSocket -## Usage: +## Usage example +``` #### Objective-C ``` - (LFLiveSession*)session { @@ -127,7 +123,12 @@ func stopLive() -> Void { func liveSession(session: LFLiveSession?, debugInfo: LFLiveDebug?) func liveSession(session: LFLiveSession?, errorCode: LFLiveSocketErrorCode) func liveSession(session: LFLiveSession?, liveStateDidChange state: LFLiveState) -``` + + +## Release History + * 2.0.0 + * CHANGE: modify bugs,support ios7 live. + ## License **LFLiveKit is released under the MIT license. See LICENSE for details.** From ebafc22ecae139ab4e43c4c06af657f2ca76a6cd Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 17:25:09 +0800 Subject: [PATCH 077/178] modify read --- README.md | 102 +++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index ae01a65f..c6ed52ab 100644 --- a/README.md +++ b/README.md @@ -66,63 +66,63 @@ LFLiveKit ``` #### Objective-C ``` -- (LFLiveSession*)session { - if (!_session) { - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; - _session.preView = self; - _session.delegate = self; + - (LFLiveSession*)session { + if (!_session) { + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; + _session.preView = self; + _session.delegate = self; + } + return _session; } - return _session; -} - -- (void)startLive { - LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new]; - streamInfo.url = @"your server rtmp url"; - [self.session startLive:streamInfo]; -} - -- (void)stopLive { - [self.session stopLive]; -} - -//MARK: - CallBack: -- (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state; -- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; -- (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode; + + - (void)startLive { + LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new]; + streamInfo.url = @"your server rtmp url"; + [self.session startLive:streamInfo]; + } + + - (void)stopLive { + [self.session stopLive]; + } + + //MARK: - CallBack: + - (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state; + - (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; + - (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode; ``` #### Swift ``` -// import LFLiveKit in [ProjectName]-Bridging-Header.h -import - -//MARK: - Getters and Setters -lazy var session: LFLiveSession = { - let audioConfiguration = LFLiveAudioConfiguration.defaultConfiguration() - let videoConfiguration = LFLiveVideoConfiguration.defaultConfigurationForQuality(LFLiveVideoQuality.Low3, landscape: false) - let session = LFLiveSession(audioConfiguration: audioConfiguration, videoConfiguration: videoConfiguration) - - session?.delegate = self - session?.preView = self.view - return session! -}() - -//MARK: - Event -func startLive() -> Void { - let stream = LFLiveStreamInfo() - stream.url = "your server rtmp url"; - session.startLive(stream) -} - -func stopLive() -> Void { - session.stopLive() -} - -//MARK: - Callback -func liveSession(session: LFLiveSession?, debugInfo: LFLiveDebug?) -func liveSession(session: LFLiveSession?, errorCode: LFLiveSocketErrorCode) -func liveSession(session: LFLiveSession?, liveStateDidChange state: LFLiveState) + // import LFLiveKit in [ProjectName]-Bridging-Header.h + import + + //MARK: - Getters and Setters + lazy var session: LFLiveSession = { + let audioConfiguration = LFLiveAudioConfiguration.defaultConfiguration() + let videoConfiguration = LFLiveVideoConfiguration.defaultConfigurationForQuality(LFLiveVideoQuality.Low3, landscape: false) + let session = LFLiveSession(audioConfiguration: audioConfiguration, videoConfiguration: videoConfiguration) + + session?.delegate = self + session?.preView = self.view + return session! + }() + + //MARK: - Event + func startLive() -> Void { + let stream = LFLiveStreamInfo() + stream.url = "your server rtmp url"; + session.startLive(stream) + } + + func stopLive() -> Void { + session.stopLive() + } + + //MARK: - Callback + func liveSession(session: LFLiveSession?, debugInfo: LFLiveDebug?) + func liveSession(session: LFLiveSession?, errorCode: LFLiveSocketErrorCode) + func liveSession(session: LFLiveSession?, liveStateDidChange state: LFLiveState) ## Release History From f045bb14e4164b33490875c443a7edab9a848cde Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 17:26:00 +0800 Subject: [PATCH 078/178] update --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c6ed52ab..7caa2b44 100644 --- a/README.md +++ b/README.md @@ -63,9 +63,9 @@ LFLiveKit * libz ## Usage example -``` + #### Objective-C -``` + - (LFLiveSession*)session { if (!_session) { _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; @@ -89,11 +89,9 @@ LFLiveKit - (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state; - (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; - (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode; - -``` + #### Swift -``` // import LFLiveKit in [ProjectName]-Bridging-Header.h import From dfbc4a51ff4590e62d3a2c9aa3939591df2872bb Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 1 Aug 2016 19:46:18 +0800 Subject: [PATCH 079/178] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7caa2b44..75a9f330 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ LFLiveKit [![Build Status](https://travis-ci.org/LaiFengiOS/LFLiveKit.svg)](https://travis-ci.org/LaiFengiOS/LFLiveKit)  [![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/chenliming777/LFLiveKit/master/LICENSE)  [![CocoaPods](http://img.shields.io/cocoapods/v/LFLiveKit.svg?style=flat)](http://cocoapods.org/?q=LFLiveKit)  -[![Support](https://img.shields.io/badge/support-ios8%2B-orange.svg)](https://www.apple.com/nl/ios/)  +[![Support](https://img.shields.io/badge/ios-7-orange.svg)](https://www.apple.com/nl/ios/)  ![platform](https://img.shields.io/badge/platform-ios-ff69b4.svg)  From 06f1e40fba3e54181ca93c709297306a15594abf Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 2 Aug 2016 10:17:39 +0800 Subject: [PATCH 080/178] update read --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75a9f330..5f0421cc 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ LFLiveKit # To integrate LFLiveKit into your Xcode project using CocoaPods, specify it in your Podfile: source 'https://github.com/CocoaPods/Specs.git' - platform :ios, '8.0' + platform :ios, '7.0' pod 'LFLiveKit' # Then, run the following command: From cb98f0e70d52cd6066b80171a429bf734c3b4888 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 2 Aug 2016 15:55:45 +0800 Subject: [PATCH 081/178] add a icon --- LFLiveKitDemo/icon.PNG | Bin 0 -> 15453 bytes README.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 LFLiveKitDemo/icon.PNG diff --git a/LFLiveKitDemo/icon.PNG b/LFLiveKitDemo/icon.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2fe52d759419a6e413ea3c81190a7a3a104f6961 GIT binary patch literal 15453 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 A Date: Tue, 2 Aug 2016 16:01:12 +0800 Subject: [PATCH 082/178] update .. --- LFLiveKitDemo/{icon.PNG => LFLiveKitDemo/Icon.png} | Bin README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename LFLiveKitDemo/{icon.PNG => LFLiveKitDemo/Icon.png} (100%) diff --git a/LFLiveKitDemo/icon.PNG b/LFLiveKitDemo/LFLiveKitDemo/Icon.png similarity index 100% rename from LFLiveKitDemo/icon.PNG rename to LFLiveKitDemo/LFLiveKitDemo/Icon.png diff --git a/README.md b/README.md index 9b15f290..5bde5cce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ LFLiveKit ============== -![icon~](https://github.com/LaiFengiOS/LFLiveKit/tree/master/LFLiveKitDemo/icon.png) +![icon~](https://github.com/LaiFengiOS/LFLiveKit/tree/master/LFLiveKitDemo/LFLiveKitDemo/icon.png) [![Build Status](https://travis-ci.org/LaiFengiOS/LFLiveKit.svg)](https://travis-ci.org/LaiFengiOS/LFLiveKit)  From e6c0d148ab86c8581027c45141b4140ac4bc73bd Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 2 Aug 2016 16:02:30 +0800 Subject: [PATCH 083/178] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5bde5cce..ae273d03 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ LFLiveKit ============== -![icon~](https://github.com/LaiFengiOS/LFLiveKit/tree/master/LFLiveKitDemo/LFLiveKitDemo/icon.png) +![icon~](https://github.com/LaiFengiOS/LFLiveKit/tree/master/LFLiveKitDemo/LFLiveKitDemo/Icon.png) [![Build Status](https://travis-ci.org/LaiFengiOS/LFLiveKit.svg)](https://travis-ci.org/LaiFengiOS/LFLiveKit)  From 9428dc2c7f6d737fa94a34c26f6d6b4d376ff723 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 2 Aug 2016 16:06:07 +0800 Subject: [PATCH 084/178] update.. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae273d03..eb44d8ce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ LFLiveKit ============== -![icon~](https://github.com/LaiFengiOS/LFLiveKit/tree/master/LFLiveKitDemo/LFLiveKitDemo/Icon.png) +![icon~](https://raw.github.com/LaiFengiOS/LFLiveKit/master/LFLiveKitDemo/LFLiveKitDemo/Icon.png) [![Build Status](https://travis-ci.org/LaiFengiOS/LFLiveKit.svg)](https://travis-ci.org/LaiFengiOS/LFLiveKit)  From 8f8bedb93d32393d5fe46f4fa295189017aa61e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=90=A8=E5=90=9B?= Date: Wed, 3 Aug 2016 10:41:55 +0800 Subject: [PATCH 085/178] change the AVAudioSession Category before start, or it will fail --- LFLiveKit/capture/LFAudioCapture.m | 1 + 1 file changed, 1 insertion(+) diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index e8485329..df32b488 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -124,6 +124,7 @@ - (void)setRunning:(BOOL)running { dispatch_async(self.taskQueue, ^{ self.isRunning = YES; NSLog(@"MicrophoneSource: startRunning"); + [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; AudioOutputUnitStart(self.componetInstance); }); } else { From 9760129763b3880c0d403153c5bd57095af40c8d Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 3 Aug 2016 13:23:46 +0800 Subject: [PATCH 086/178] Update LFLiveKit.podspec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix issue #36 关于use_frameworks!的问题 --- LFLiveKit.podspec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 49a0e5c2..553b6a30 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -11,7 +11,8 @@ Pod::Spec.new do |s| s.ios.deployment_target = "7.0" s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" } s.source_files = "LFLiveKit/**/*.{h,m,mm,cpp,c}" - s.public_header_files = "LFLiveKit/**/*.h" + #s.public_header_files = "LFLiveKit/**/*.h" + s.public_header_files = ['LFLiveKit/*.h', 'LFLiveKit/objects/*.h', 'LFLiveKit/configuration/*.h'] s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" s.libraries = "c++", "z" From af09e79e74bdff116cfe4ccd8fb929b46c671705 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 4 Aug 2016 13:59:43 +0800 Subject: [PATCH 087/178] add watermark .. --- LFLiveKit/LFLiveSession.h | 3 + LFLiveKit/LFLiveSession.m | 8 + LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m | 13 +- LFLiveKit/capture/LFVideoCapture.h | 3 + LFLiveKit/capture/LFVideoCapture.m | 276 +++++++++++------- .../LFLiveKitDemo.xcodeproj/project.pbxproj | 4 + LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 10 +- .../LFLiveKitDemo/images/ios-29x29.png | Bin 0 -> 2183 bytes 8 files changed, 199 insertions(+), 118 deletions(-) create mode 100644 LFLiveKitDemo/LFLiveKitDemo/images/ios-29x29.png diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 37cfbdfa..2a757fc5 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -84,6 +84,9 @@ /** The reconnectCount control reconnect count (重连次数) *.*/ @property (nonatomic, assign) NSUInteger reconnectCount; +/*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add. set alpha represent mix *.*/ +@property (nonatomic, strong) UIView *warterMarkView; + #pragma mark - Initializer ///============================================================================= /// @name Initializer diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 3ab1c8fe..71b77d71 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -265,6 +265,14 @@ - (BOOL)muted { return self.audioCaptureSource.muted; } +- (void)setWarterMarkView:(UIView *)warterMarkView{ + [self.videoCaptureSource setWarterMarkView:warterMarkView]; +} + +- (UIView*)warterMarkView{ + return self.videoCaptureSource.warterMarkView; +} + - (LFAudioCapture *)audioCaptureSource { if (!_audioCaptureSource) { _audioCaptureSource = [[LFAudioCapture alloc] initWithAudioConfiguration:_audioConfiguration]; diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m index 33208924..22c653b1 100644 --- a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m +++ b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m @@ -86,10 +86,10 @@ - (void)updateWithTimestamp:(CMTime)frameTime; GLubyte *imageData = (GLubyte *) calloc(1, (int)layerPixelSize.width * (int)layerPixelSize.height * 4); - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); + CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)layerPixelSize.width, (int)layerPixelSize.height, 8, (int)layerPixelSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); -// CGContextRotateCTM(imageContext, M_PI_2); - CGContextTranslateCTM(imageContext, 0.0f, layerPixelSize.height); + // CGContextRotateCTM(imageContext, M_PI_2); + CGContextTranslateCTM(imageContext, 0.0f, layerPixelSize.height); CGContextScaleCTM(imageContext, layer.contentsScale, -layer.contentsScale); // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html @@ -100,13 +100,13 @@ - (void)updateWithTimestamp:(CMTime)frameTime; // TODO: This may not work outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:layerPixelSize textureOptions:self.outputTextureOptions onlyTexture:YES]; - + [outputFramebuffer disableReferenceCounting]; // Add this line, because GPUImageTwoInputFilter.m frametime updatedMovieFrameOppositeStillImage is YES, but the secondbuffer not lock + glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); // no need to use self.outputTextureOptions here, we always need these texture options glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)layerPixelSize.width, (int)layerPixelSize.height, 0, GL_BGRA, GL_UNSIGNED_BYTE, imageData); free(imageData); - for (id currentTarget in targets) { if (currentTarget != self.targetToIgnoreForUpdates) @@ -115,9 +115,10 @@ - (void)updateWithTimestamp:(CMTime)frameTime; NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; [currentTarget setInputSize:layerPixelSize atIndex:textureIndexOfTarget]; + [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; // add this line, because the outputFramebuffer is update above [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; } - } + } } @end diff --git a/LFLiveKit/capture/LFVideoCapture.h b/LFLiveKit/capture/LFVideoCapture.h index eaa056bd..2e605732 100755 --- a/LFLiveKit/capture/LFVideoCapture.h +++ b/LFLiveKit/capture/LFVideoCapture.h @@ -56,6 +56,9 @@ /** The videoFrameRate control videoCapture output data count */ @property (nonatomic, assign) NSInteger videoFrameRate; +/*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add *.*/ +@property (nonatomic, strong) UIView *warterMarkView; + #pragma mark - Initializer ///============================================================================= /// @name Initializer diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 95ca4e52..bb9ce6e5 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -13,13 +13,17 @@ @interface LFVideoCapture () -@property(nonatomic, strong) GPUImageVideoCamera *videoCamera; -@property(nonatomic, weak) LFGPUImageBeautyFilter *beautyFilter; -@property(nonatomic, strong) GPUImageOutput *filter; -@property(nonatomic, strong) GPUImageOutput *output; -@property(nonatomic, strong) GPUImageCropFilter *cropfilter; -@property(nonatomic, strong) GPUImageView *gpuImageView; -@property(nonatomic, strong) LFLiveVideoConfiguration *configuration; +@property (nonatomic, strong) GPUImageVideoCamera *videoCamera; +@property (nonatomic, weak) LFGPUImageBeautyFilter *beautyFilter; +@property (nonatomic, strong) GPUImageOutput *filter; +@property (nonatomic, strong) GPUImageOutput *output; +@property (nonatomic, strong) GPUImageCropFilter *cropfilter; +@property (nonatomic, strong) GPUImageView *gpuImageView; +@property (nonatomic, strong) LFLiveVideoConfiguration *configuration; + +@property (nonatomic, strong) GPUImageAlphaBlendFilter *blendFilter; +@property (nonatomic, strong) GPUImageUIElement *uiElementInput; +@property (nonatomic, strong) UIView *waterMarkContentView; @end @@ -37,10 +41,32 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura @throw [NSException exceptionWithName:@"当前videoSize大小出错" reason:@"LFLiveVideoConfiguration videoSize error" userInfo:nil]; return nil; } - + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarChanged:) name:UIApplicationWillChangeStatusBarOrientationNotification object:nil]; + self.beautyFace = YES; + self.beautyLevel = 0.5; + self.brightLevel = 0.5; + self.zoomScale = 1.0; + self.mirror = YES; + } + return self; +} + +- (void)dealloc { + [UIApplication sharedApplication].idleTimerDisabled = NO; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [self.videoCamera stopCameraCapture]; +} + +#pragma mark -- Setter Getter + +- (GPUImageVideoCamera *)videoCamera{ + if(!_videoCamera){ _videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:_configuration.avSessionPreset cameraPosition:AVCaptureDevicePositionFront]; UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; - if (configuration.landscape) { + if (self.configuration.landscape) { if (statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight) { @throw [NSException exceptionWithName:@"当前设置方向出错" reason:@"LFLiveVideoConfiguration landscape error" userInfo:nil]; _videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; @@ -55,92 +81,70 @@ - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configura _videoCamera.outputImageOrientation = statusBar; } } - - _videoCamera.horizontallyMirrorFrontFacingCamera = NO; + + _videoCamera.horizontallyMirrorFrontFacingCamera = YES; _videoCamera.horizontallyMirrorRearFacingCamera = NO; _videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; - - _gpuImageView = [[GPUImageView alloc] initWithFrame:[UIScreen mainScreen].bounds]; - [_gpuImageView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill]; - [_gpuImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; - [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarChanged:) name:UIApplicationWillChangeStatusBarOrientationNotification object:nil]; - self.beautyFace = YES; - self.beautyLevel = 0.5; - self.brightLevel = 0.5; - self.zoomScale = 1.0; } - return self; -} - -- (void)dealloc { - [UIApplication sharedApplication].idleTimerDisabled = NO; - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [_videoCamera stopCameraCapture]; + return _videoCamera; } -#pragma mark -- Setter Getter - (void)setRunning:(BOOL)running { if (_running == running) return; _running = running; - + if (!_running) { [UIApplication sharedApplication].idleTimerDisabled = NO; - [_videoCamera stopCameraCapture]; + [self.videoCamera stopCameraCapture]; } else { [UIApplication sharedApplication].idleTimerDisabled = YES; - [_videoCamera startCameraCapture]; + [self reloadFilter]; + [self.videoCamera startCameraCapture]; } } - (void)setPreView:(UIView *)preView { - if (_gpuImageView.superview) [_gpuImageView removeFromSuperview]; - [preView insertSubview:_gpuImageView atIndex:0]; + if (self.gpuImageView.superview) [self.gpuImageView removeFromSuperview]; + [preView insertSubview:self.gpuImageView atIndex:0]; + self.gpuImageView.bounds = preView.bounds; + self.waterMarkContentView.bounds = preView.bounds; } - (UIView *)preView { - return _gpuImageView.superview; + return self.gpuImageView.superview; } - (void)setCaptureDevicePosition:(AVCaptureDevicePosition)captureDevicePosition { - [_videoCamera rotateCamera]; - _videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; - if (captureDevicePosition == AVCaptureDevicePositionFront) { - [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; - } else { - [_gpuImageView setInputRotation:kGPUImageNoRotation atIndex:0]; - } + [self.videoCamera rotateCamera]; + self.videoCamera.frameRate = (int32_t)_configuration.videoFrameRate; } - (AVCaptureDevicePosition)captureDevicePosition { - return [_videoCamera cameraPosition]; + return [self.videoCamera cameraPosition]; } - (void)setVideoFrameRate:(NSInteger)videoFrameRate { if (videoFrameRate <= 0) return; - if (videoFrameRate == _videoCamera.frameRate) return; - _videoCamera.frameRate = (uint32_t)videoFrameRate; + if (videoFrameRate == self.videoCamera.frameRate) return; + self.videoCamera.frameRate = (uint32_t)videoFrameRate; } - (NSInteger)videoFrameRate { - return _videoCamera.frameRate; + return self.videoCamera.frameRate; } - (void)setTorch:(BOOL)torch { BOOL ret; - if (!_videoCamera.captureSession) return; - AVCaptureSession *session = (AVCaptureSession *)_videoCamera.captureSession; + if (!self.videoCamera.captureSession) return; + AVCaptureSession *session = (AVCaptureSession *)self.videoCamera.captureSession; [session beginConfiguration]; - if (_videoCamera.inputCamera) { - if (_videoCamera.inputCamera.torchAvailable) { + if (self.videoCamera.inputCamera) { + if (self.videoCamera.inputCamera.torchAvailable) { NSError *err = nil; - if ([_videoCamera.inputCamera lockForConfiguration:&err]) { - [_videoCamera.inputCamera setTorchMode:(torch ? AVCaptureTorchModeOn : AVCaptureTorchModeOff) ]; - [_videoCamera.inputCamera unlockForConfiguration]; - ret = (_videoCamera.inputCamera.torchMode == AVCaptureTorchModeOn); + if ([self.videoCamera.inputCamera lockForConfiguration:&err]) { + [self.videoCamera.inputCamera setTorchMode:(torch ? AVCaptureTorchModeOn : AVCaptureTorchModeOff) ]; + [self.videoCamera.inputCamera unlockForConfiguration]; + ret = (self.videoCamera.inputCamera.torchMode == AVCaptureTorchModeOn); } else { NSLog(@"Error while locking device for torch: %@", err); ret = false; @@ -154,22 +158,24 @@ - (void)setTorch:(BOOL)torch { } - (BOOL)torch { - return _videoCamera.inputCamera.torchMode; + return self.videoCamera.inputCamera.torchMode; } - (void)setMirror:(BOOL)mirror { - _videoCamera.horizontallyMirrorFrontFacingCamera = mirror; - _videoCamera.horizontallyMirrorRearFacingCamera = mirror; + _mirror = mirror; + self.videoCamera.horizontallyMirrorRearFacingCamera = mirror; + self.videoCamera.horizontallyMirrorFrontFacingCamera = mirror; } -- (BOOL)mirror { - return _videoCamera.horizontallyMirrorFrontFacingCamera; +- (void)setBeautyFace:(BOOL)beautyFace{ + _beautyFace = beautyFace; + [self reloadFilter]; } - (void)setBeautyLevel:(CGFloat)beautyLevel { _beautyLevel = beautyLevel; - if (_beautyFilter) { - [_beautyFilter setBeautyLevel:_beautyLevel]; + if (self.beautyFilter) { + [self.beautyFilter setBeautyLevel:_beautyLevel]; } } @@ -179,8 +185,8 @@ - (CGFloat)beautyLevel { - (void)setBrightLevel:(CGFloat)brightLevel { _brightLevel = brightLevel; - if (_beautyFilter) { - [_beautyFilter setBrightLevel:brightLevel]; + if (self.beautyFilter) { + [self.beautyFilter setBrightLevel:brightLevel]; } } @@ -203,54 +209,49 @@ - (CGFloat)zoomScale { return _zoomScale; } -- (void)setBeautyFace:(BOOL)beautyFace { +- (void)setWarterMarkView:(UIView *)warterMarkView{ + if(_warterMarkView && _warterMarkView.superview){ + [_warterMarkView removeFromSuperview]; + _warterMarkView = nil; + } + _warterMarkView = warterMarkView; + self.blendFilter.mix = warterMarkView.alpha; + [self.waterMarkContentView addSubview:_warterMarkView]; + [self reloadFilter]; +} - _beautyFace = beautyFace; - [_filter removeAllTargets]; - [_cropfilter removeAllTargets]; - [_videoCamera removeAllTargets]; - - if (_beautyFace) { - _output = [[LFGPUImageEmptyFilter alloc] init]; - _filter = [[LFGPUImageBeautyFilter alloc] init]; - _beautyFilter = _filter; - __weak typeof(self) _self = self; - [_output setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { - [_self processVideo:output]; - }]; - } else { - _filter = [[LFGPUImageEmptyFilter alloc] init]; - _beautyFilter = nil; - __weak typeof(self) _self = self; - [_filter setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { - [_self processVideo:output]; - }]; +- (GPUImageUIElement *)uiElementInput{ + if(!_uiElementInput){ + _uiElementInput = [[GPUImageUIElement alloc] initWithView:self.waterMarkContentView]; } + return _uiElementInput; +} - CGSize imageSize = [self pixelBufferImageSize]; - CGFloat cropLeft = (imageSize.width - self.configuration.videoSize.width)/2.0/imageSize.width; - CGFloat cropTop = (imageSize.height - self.configuration.videoSize.height)/2.0/imageSize.height; - - if(cropLeft == 0 && cropTop == 0){ - [_videoCamera addTarget:_filter]; - }else{ - _cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(cropLeft, cropTop, 1 - cropLeft*2, 1 - cropTop*2)]; - [_videoCamera addTarget:_cropfilter]; - [_cropfilter addTarget:_filter]; +- (GPUImageAlphaBlendFilter *)blendFilter{ + if(!_blendFilter){ + _blendFilter = [[GPUImageAlphaBlendFilter alloc] init]; + _blendFilter.mix = 1.0; + [_blendFilter disableSecondFrameCheck]; } - - if (_beautyFace) { - [_filter addTarget:_output]; - [_output addTarget:_gpuImageView]; - } else { - [_filter addTarget:_gpuImageView]; + return _blendFilter; +} + +- (UIView *)waterMarkContentView{ + if(!_waterMarkContentView){ + _waterMarkContentView = [UIView new]; + _waterMarkContentView.frame = CGRectMake(0, 0, self.gpuImageView.frame.size.width, self.gpuImageView.frame.size.height); + _waterMarkContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; } + return _waterMarkContentView; +} - if (_videoCamera.cameraPosition == AVCaptureDevicePositionFront) { - [_gpuImageView setInputRotation:kGPUImageFlipHorizonal atIndex:0]; - } else { - [_gpuImageView setInputRotation:kGPUImageNoRotation atIndex:0]; +- (GPUImageView *)gpuImageView{ + if(!_gpuImageView){ + _gpuImageView = [[GPUImageView alloc] initWithFrame:[UIScreen mainScreen].bounds]; + [_gpuImageView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill]; + [_gpuImageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; } + return _gpuImageView; } #pragma mark -- Custom Method @@ -263,29 +264,84 @@ - (void)processVideo:(GPUImageOutput *)output { if (pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]) { [_self.delegate captureOutput:_self pixelBuffer:pixelBuffer]; } + } +} +- (void)reloadFilter{ + [self.filter removeAllTargets]; + [self.cropfilter removeAllTargets]; + [self.blendFilter removeAllTargets]; + [self.uiElementInput removeAllTargets]; + [self.videoCamera removeAllTargets]; + + + if (self.beautyFace) { + self.output = [[LFGPUImageEmptyFilter alloc] init]; + self.filter = [[LFGPUImageBeautyFilter alloc] init]; + self.beautyFilter = self.filter; + __weak typeof(self) _self = self; + [self.output setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { + [_self processVideo:output]; + }]; + } else { + self.filter = [[LFGPUImageEmptyFilter alloc] init]; + self.beautyFilter = nil; + __weak typeof(self) _self = self; + [self.filter setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { + [_self processVideo:output]; + }]; + } + + CGSize imageSize = [self pixelBufferImageSize]; + CGFloat cropLeft = (imageSize.width - self.configuration.videoSize.width)/2.0/imageSize.width; + CGFloat cropTop = (imageSize.height - self.configuration.videoSize.height)/2.0/imageSize.height; + + if(cropLeft == 0 && cropTop == 0){ + [self.videoCamera addTarget:_filter]; + }else{ + self.cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(cropLeft, cropTop, 1 - cropLeft*2, 1 - cropTop*2)]; + [self.videoCamera addTarget:self.cropfilter]; + [self.cropfilter addTarget:self.filter]; + } + + if(self.warterMarkView){ + [self.filter addTarget:self.blendFilter]; + [self.uiElementInput addTarget:self.blendFilter]; + [self.blendFilter addTarget:self.gpuImageView]; + if(self.beautyFace){ + [self.filter addTarget:self.output]; + } + [self.uiElementInput update]; + }else{ + if (self.beautyFace) { + [self.filter addTarget:self.output]; + [self.output addTarget:self.gpuImageView]; + } else { + [self.filter addTarget:self.gpuImageView]; + } } + } #pragma mark Notification - (void)willEnterBackground:(NSNotification *)notification { [UIApplication sharedApplication].idleTimerDisabled = NO; - [_videoCamera pauseCameraCapture]; + [self.videoCamera pauseCameraCapture]; runSynchronouslyOnVideoProcessingQueue(^{ glFinish(); }); } - (void)willEnterForeground:(NSNotification *)notification { - [_videoCamera resumeCameraCapture]; + [self.videoCamera resumeCameraCapture]; [UIApplication sharedApplication].idleTimerDisabled = YES; } - (void)statusBarChanged:(NSNotification *)notification { NSLog(@"UIApplicationWillChangeStatusBarOrientationNotification. UserInfo: %@", notification.userInfo); UIInterfaceOrientation statusBar = [[UIApplication sharedApplication] statusBarOrientation]; - if (_configuration.landscape) { + if (self.configuration.landscape) { if (statusBar == UIInterfaceOrientationLandscapeLeft) { self.videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight; } else if (statusBar == UIInterfaceOrientationLandscapeRight) { diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index f89b37ec..9e975f9f 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */; }; + 84C7AFA71D52F75C00614703 /* ios-29x29.png in Resources */ = {isa = PBXBuildFile; fileRef = 84C7AFA61D52F75C00614703 /* ios-29x29.png */; }; B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E7E1D348F3D00B34CA8 /* main.m */; }; B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E811D348F3D00B34CA8 /* AppDelegate.m */; }; B2D23E851D348F3D00B34CA8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E841D348F3D00B34CA8 /* ViewController.m */; }; @@ -31,6 +32,7 @@ /* Begin PBXFileReference section */ 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 84C7AFA61D52F75C00614703 /* ios-29x29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ios-29x29.png"; sourceTree = ""; }; 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.release.xcconfig"; sourceTree = ""; }; AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.debug.xcconfig"; sourceTree = ""; }; B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -160,6 +162,7 @@ B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */, B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */, B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */, + 84C7AFA61D52F75C00614703 /* ios-29x29.png */, ); path = images; sourceTree = ""; @@ -234,6 +237,7 @@ files = ( B2D23E8D1D348F3D00B34CA8 /* LaunchScreen.storyboard in Resources */, B2D23EAA1D348F7100B34CA8 /* Assets.xcassets in Resources */, + 84C7AFA71D52F75C00614703 /* ios-29x29.png in Resources */, B2D23EAC1D348F7100B34CA8 /* Main.storyboard in Resources */, B2D23EAB1D348F7100B34CA8 /* LaunchScreen.storyboard in Resources */, B2D23EB21D348F7100B34CA8 /* camra_beauty_close@3x.png in Resources */, diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 23cb4e02..b9a9f756 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -244,6 +244,12 @@ - (LFLiveSession *)session { _session.delegate = self; _session.showDebugInfo = NO; _session.preView = self; + + UIImageView *imageView = [[UIImageView alloc] init]; + imageView.alpha = 0.8; + imageView.frame = CGRectMake(100, 100, 29, 29); + imageView.image = [UIImage imageNamed:@"ios-29x29"]; + _session.warterMarkView = imageView; } return _session; } @@ -304,8 +310,8 @@ - (UIButton *)beautyButton { _beautyButton = [UIButton new]; _beautyButton.size = CGSizeMake(44, 44); _beautyButton.origin = CGPointMake(_cameraButton.left - 10 - _beautyButton.width, 20); - [_beautyButton setImage:[UIImage imageNamed:@"camra_beauty"] forState:UIControlStateSelected]; - [_beautyButton setImage:[UIImage imageNamed:@"camra_beauty_close"] forState:UIControlStateNormal]; + [_beautyButton setImage:[UIImage imageNamed:@"camra_beauty"] forState:UIControlStateNormal]; + [_beautyButton setImage:[UIImage imageNamed:@"camra_beauty_close"] forState:UIControlStateSelected]; _beautyButton.exclusiveTouch = YES; __weak typeof(self) _self = self; [_beautyButton addBlockForControlEvents:UIControlEventTouchUpInside block:^(id sender) { diff --git a/LFLiveKitDemo/LFLiveKitDemo/images/ios-29x29.png b/LFLiveKitDemo/LFLiveKitDemo/images/ios-29x29.png new file mode 100644 index 0000000000000000000000000000000000000000..039970005cea1d9b2d08ed285e93ec0425fadcb2 GIT binary patch literal 2183 zcmbVOdpwl+8Xs~iYgZzdRPT<(y3N%L^Jdaq4CB&{Ym$R8UQFg@=5^fmL})_WDce$K zr4Cu7+O@*j&1D#3t%QUW5!sKmB1bM|%f3_ToIg7I$9X^R`@1~9=lgvwzvuaU-W<+; zcfBoUTTm#J9@~TIhs--wpN={*4lg_nMkZ6(Eg1F}N5hF+DTJa$i6bF^E#$^Peh@b* zIldEeL7_Iq@&kh5U>|RgCl+G3DjiIcP=cUQC>Pfx36~cK!9XMw!xvG}^Yscez>lJ$ z50HFtJ`x5L%lAl;LjEcH19&NMJW3SWbuZwO1R?}N2<8GwLV-vICQ;F^c|l~Y5@XT8 zYZW+-ihko%unz}dh@}uf!Vn#JI6NL8lQDQl5}Ay*2M9Pk0gFRkvIE``B#}Xa6Y%yy zBi5u*(V!ob_0|@$qoQMBSOQ|PiHV7rL?T8kjltq66pD(2KyW}b9AwENn49Dvl38pp zFd-RF%9p@=u?SExawEkFFcpn>`X&US#K-3yu}JndQAo zCW;>gGKfqkqMI9qMj|+po$+{QoHLQeq?1S#8gk@J*x+~{mWanuNNyw=3r`{7@oppv zkx8RC(ij9Xi9m27P&Tk^kqqXFc+iGjK4SMRmhz`qkRgS*uvi)(77I2ifDb*KiX{~bf!7%Z`S0-n$8aRm@N^oD`M)B6gN^!s zvW7*R!K%vRzshApgw&vF`L6hp&Aax2L`cs_k>-$3YaB+QG-}yQT0qkM*`U99?|@7c z^>ssGsV_^1jC8-Ex2~S!nH?O_A5~6o-#$V&@BhKg+mUuM&0D)Lr;}C3EIH9xmeX%a z$`v?A6S(@9(oIT!>d3-%thnzv{J`jbm?AZ?agoXi_T{$Eeza}OQGB6cUZz-Cahab_ zeyALoR-4}SfyND|Nrl|5VMjSdJ8t~O z=az5CS+RMY%WPV&A&zTud|m?oB(M4VmhaJMQ+pFd>O`OQk# z*}5C;bnM`RB8)BDDpUvG{iG>wcZ}(?lBM`U#nM0n-o1b1-#=&BX}vtUc8_)N!B+p= zkgVq3nnK$>PHO{B4~;+kZBVHvzc=@)dEv&7p^d9Xx_Mc;61@5mldmPM{IAD`A^lJ9 zC3F+xrdqrRYZoup?BPeur|x^s0qf@SQ|Jp3Uj*7|#yzU5IfJUX8gdGdbPOHM)b!lj z*OJtAdhC~Cn(e{u20&G4hJd4^cX(?=$oeH?dGQ4OX2=f}I$AP6+e#;|tF|rU-mq6? zX;VjPp10SL88$y!%l`38asRW5Q_o=7853rpGj8oU@T<*4?Mz9jhg!g}w7oM%a=oU< zOiPYcLgwG)32%j{Pu1EO6lVpcRjK!Mo#^Hp*ryV-&xwb#AlnxN@aaerlpvKUnSfWnJCwT5GD|a%i``Y4&&RQ_dBMxVwXF za_ADO?CC_cNthwQTJw6^_>1L#^i&sLt}H4pu(j(;`TM$w8{gHYXG{PFO-hL3aLKjX zSpC6#GWL`uV_8vft97)bI{rwaTHsMHw#D(da1!nVcj9>ujToEHsrqg06}?!eVGoU- zu7TN+zPm3*y?Ul$w$iBSTG1yu4b`0PK2C2d>V<3gvY_WHLOcc-KppS=XXT={f}_JT zXp1jw0*jRHoxSE=^769u#^MGS7UN|1g)EnJIod66hT3*EkT1wgo6TB`E%Q9Od3J9I zQ~z^wP#wTfwwZBfGNU81YeHi4NarkVwCt%n&ljE69-mpp6`RDNdoR`J?D_euQtI7| zGyVR!)1!TgZt!80|P2(sQA48|Xr!Cd}0MX*nczWvxu~+v%2%J Date: Thu, 4 Aug 2016 14:05:52 +0800 Subject: [PATCH 088/178] =?UTF-8?q?=E6=B0=B4=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eb44d8ce..7343b0db 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ LFLiveKit - [x] Switch camera position - [x] Audio Mute - [x] Support Send Buffer +- [x] Support WaterMark - [x] Swift Support - [ ] ~~FLV package and send~~ From 91c689a41fef822239ca7c213e610c05a6186bdc Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 11:18:46 +0800 Subject: [PATCH 089/178] add currentImageView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取当前视频截图 --- LFLiveKit/capture/LFVideoCapture.h | 1 + 1 file changed, 1 insertion(+) diff --git a/LFLiveKit/capture/LFVideoCapture.h b/LFLiveKit/capture/LFVideoCapture.h index 2e605732..b2ccb81e 100755 --- a/LFLiveKit/capture/LFVideoCapture.h +++ b/LFLiveKit/capture/LFVideoCapture.h @@ -59,6 +59,7 @@ /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add *.*/ @property (nonatomic, strong) UIView *warterMarkView; +@property (nonatomic, strong) UIImageView *currentImageView; #pragma mark - Initializer ///============================================================================= /// @name Initializer From c5edbfba8e07051499ff3d08fbd8278ab7650276 Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 11:32:47 +0800 Subject: [PATCH 090/178] add currentImageView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取当前视频截图 --- LFLiveKit/capture/LFVideoCapture.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index bb9ce6e5..287f725d 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -253,7 +253,14 @@ - (GPUImageView *)gpuImageView{ } return _gpuImageView; } - +-(UIImageView *)currentImageView{ + if(!_currentImageView){ + _currentImageView = [UIImageView new]; + } + [_filter useNextFrameForImageCapture]; + _currentImageView.image=_filter.imageFromCurrentFramebuffer; + return _currentImageView; +} #pragma mark -- Custom Method - (void)processVideo:(GPUImageOutput *)output { __weak typeof(self) _self = self; From 79f0ba930ba58ba220ffc4f33c7b5b3a1219a878 Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 11:34:37 +0800 Subject: [PATCH 091/178] add currentImageView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取当前视频截图 --- LFLiveKit/LFLiveSession.h | 1 + 1 file changed, 1 insertion(+) diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 2a757fc5..f40a63ba 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -87,6 +87,7 @@ /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add. set alpha represent mix *.*/ @property (nonatomic, strong) UIView *warterMarkView; +@property (nonatomic, strong) UIImageView *currentImageView; #pragma mark - Initializer ///============================================================================= /// @name Initializer From ee7c25727b6bfd2b5074281791437b4d2d2628ef Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 11:36:45 +0800 Subject: [PATCH 092/178] add currentImageView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取当前视频截图 --- LFLiveKit/LFLiveSession.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 71b77d71..23e1265c 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -272,7 +272,9 @@ - (void)setWarterMarkView:(UIView *)warterMarkView{ - (UIView*)warterMarkView{ return self.videoCaptureSource.warterMarkView; } - +-(UIImageView *)currentImageView{ +return self.videoCaptureSource.currentImageView; +} - (LFAudioCapture *)audioCaptureSource { if (!_audioCaptureSource) { _audioCaptureSource = [[LFAudioCapture alloc] initWithAudioConfiguration:_audioConfiguration]; From 014e73f44c2b83c2a403acb3620f8fe68da876f4 Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 12:01:48 +0800 Subject: [PATCH 093/178] add currentImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改currentImageView为currentImage --- LFLiveKit/capture/LFVideoCapture.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/capture/LFVideoCapture.h b/LFLiveKit/capture/LFVideoCapture.h index b2ccb81e..fec28235 100755 --- a/LFLiveKit/capture/LFVideoCapture.h +++ b/LFLiveKit/capture/LFVideoCapture.h @@ -59,7 +59,7 @@ /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add *.*/ @property (nonatomic, strong) UIView *warterMarkView; -@property (nonatomic, strong) UIImageView *currentImageView; +@property (nonatomic, strong) UIImage *currentImage; #pragma mark - Initializer ///============================================================================= /// @name Initializer From dc1dc188248a2ae6099bd8f88bff53f79ce80130 Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 12:03:15 +0800 Subject: [PATCH 094/178] add currentImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改currentImageView为currentImage --- LFLiveKit/capture/LFVideoCapture.m | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 287f725d..3cb8fa26 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -253,13 +253,9 @@ - (GPUImageView *)gpuImageView{ } return _gpuImageView; } --(UIImageView *)currentImageView{ - if(!_currentImageView){ - _currentImageView = [UIImageView new]; - } +-(UIImage *)currentImage{ [_filter useNextFrameForImageCapture]; - _currentImageView.image=_filter.imageFromCurrentFramebuffer; - return _currentImageView; + return _filter.imageFromCurrentFramebuffer; } #pragma mark -- Custom Method - (void)processVideo:(GPUImageOutput *)output { From e9f3c66a3b1a809e838c30b5db04205932815043 Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 12:04:14 +0800 Subject: [PATCH 095/178] add currentImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改currentImageView为currentImage --- LFLiveKit/LFLiveSession.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index f40a63ba..bb2a9241 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -87,7 +87,7 @@ /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add. set alpha represent mix *.*/ @property (nonatomic, strong) UIView *warterMarkView; -@property (nonatomic, strong) UIImageView *currentImageView; +@property (nonatomic, strong) UIImageView *currentImage; #pragma mark - Initializer ///============================================================================= /// @name Initializer From e59699b7fd41593a21b5b3c0e93fb5283d32fcde Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 12:05:07 +0800 Subject: [PATCH 096/178] add currentImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改currentImageView 为currentImage --- LFLiveKit/LFLiveSession.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index bb2a9241..740bd53d 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -87,7 +87,7 @@ /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add. set alpha represent mix *.*/ @property (nonatomic, strong) UIView *warterMarkView; -@property (nonatomic, strong) UIImageView *currentImage; +@property (nonatomic, strong) UIImage *currentImage; #pragma mark - Initializer ///============================================================================= /// @name Initializer From 2b236b2a35b3d48d44543e9235c10d055607a629 Mon Sep 17 00:00:00 2001 From: zz <531818100@qq.com> Date: Fri, 5 Aug 2016 12:05:39 +0800 Subject: [PATCH 097/178] add currentImage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改currentImageView 为currentImage --- LFLiveKit/LFLiveSession.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 23e1265c..9f6f3eae 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -272,8 +272,8 @@ - (void)setWarterMarkView:(UIView *)warterMarkView{ - (UIView*)warterMarkView{ return self.videoCaptureSource.warterMarkView; } --(UIImageView *)currentImageView{ -return self.videoCaptureSource.currentImageView; +-(UIImage *)currentImage{ +return self.videoCaptureSource.currentImage; } - (LFAudioCapture *)audioCaptureSource { if (!_audioCaptureSource) { From 41393ffed870718b2ea450d5aa2dd49bb8e29da0 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 5 Aug 2016 12:20:17 +0800 Subject: [PATCH 098/178] Support output arbitrary size and fix iphone4 1920*720 crash --- .../UserInterfaceState.xcuserstate | Bin 18823 -> 19750 bytes LFLiveKit/LFLiveSession.h | 4 +- LFLiveKit/capture/LFVideoCapture.m | 100 +++++++----------- .../configuration/LFLiveVideoConfiguration.h | 3 + .../configuration/LFLiveVideoConfiguration.m | 29 ++++- .../UserInterfaceState.xcuserstate | Bin 124674 -> 143584 bytes LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 19 ++-- 7 files changed, 81 insertions(+), 74 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 14912fab873395a763b0c7f6e7aee26106f8732b..21685d679788169edda837d1d442dd555b71fe51 100644 GIT binary patch delta 10628 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 z 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 delta 9579 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 *filter; -@property (nonatomic, strong) GPUImageOutput *output; @property (nonatomic, strong) GPUImageCropFilter *cropfilter; +@property (nonatomic, strong) GPUImageOutput *output; @property (nonatomic, strong) GPUImageView *gpuImageView; @property (nonatomic, strong) LFLiveVideoConfiguration *configuration; @@ -37,10 +37,6 @@ @implementation LFVideoCapture - (instancetype)initWithVideoConfiguration:(LFLiveVideoConfiguration *)configuration { if (self = [super init]) { _configuration = configuration; - if([self pixelBufferImageSize].width < configuration.videoSize.width || [self pixelBufferImageSize].height < configuration.videoSize.height){ - @throw [NSException exceptionWithName:@"当前videoSize大小出错" reason:@"LFLiveVideoConfiguration videoSize error" userInfo:nil]; - return nil; - } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground:) name:UIApplicationDidBecomeActiveNotification object:nil]; @@ -260,67 +256,75 @@ - (void)processVideo:(GPUImageOutput *)output { @autoreleasepool { GPUImageFramebuffer *imageFramebuffer = output.framebufferForOutput; CVPixelBufferRef pixelBuffer = [imageFramebuffer pixelBuffer]; - + if(!CGSizeEqualToSize(_self.configuration.videoSize, imageFramebuffer.size)){ + _self.configuration.videoSize = imageFramebuffer.size; + } if (pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]) { [_self.delegate captureOutput:_self pixelBuffer:pixelBuffer]; } } } + - (void)reloadFilter{ [self.filter removeAllTargets]; - [self.cropfilter removeAllTargets]; [self.blendFilter removeAllTargets]; [self.uiElementInput removeAllTargets]; [self.videoCamera removeAllTargets]; - + [self.output removeAllTargets]; + [self.cropfilter removeAllTargets]; if (self.beautyFace) { self.output = [[LFGPUImageEmptyFilter alloc] init]; self.filter = [[LFGPUImageBeautyFilter alloc] init]; self.beautyFilter = self.filter; - __weak typeof(self) _self = self; - [self.output setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { - [_self processVideo:output]; - }]; } else { + self.output = [[LFGPUImageEmptyFilter alloc] init]; self.filter = [[LFGPUImageEmptyFilter alloc] init]; self.beautyFilter = nil; - __weak typeof(self) _self = self; - [self.filter setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { - [_self processVideo:output]; - }]; } - CGSize imageSize = [self pixelBufferImageSize]; - CGFloat cropLeft = (imageSize.width - self.configuration.videoSize.width)/2.0/imageSize.width; - CGFloat cropTop = (imageSize.height - self.configuration.videoSize.height)/2.0/imageSize.height; - - if(cropLeft == 0 && cropTop == 0){ - [self.videoCamera addTarget:_filter]; - }else{ - self.cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(cropLeft, cropTop, 1 - cropLeft*2, 1 - cropTop*2)]; + //< 480*640 比例为4:3 强制转换为16:9 + if([self.configuration.avSessionPreset isEqualToString:AVCaptureSessionPreset640x480]){ + CGRect cropRect = self.configuration.landscape ? CGRectMake(0, 0.125, 1, 0.75) : CGRectMake(0.125, 0, 0.75, 1); + self.cropfilter = [[GPUImageCropFilter alloc] initWithCropRegion:cropRect]; [self.videoCamera addTarget:self.cropfilter]; [self.cropfilter addTarget:self.filter]; + }else{ + [self.videoCamera addTarget:self.filter]; } + //< 添加水印 if(self.warterMarkView){ [self.filter addTarget:self.blendFilter]; [self.uiElementInput addTarget:self.blendFilter]; [self.blendFilter addTarget:self.gpuImageView]; - if(self.beautyFace){ - [self.filter addTarget:self.output]; - } + [self.filter addTarget:self.output]; [self.uiElementInput update]; }else{ - if (self.beautyFace) { - [self.filter addTarget:self.output]; - [self.output addTarget:self.gpuImageView]; - } else { - [self.filter addTarget:self.gpuImageView]; - } + [self.filter addTarget:self.output]; + [self.output addTarget:self.gpuImageView]; + } + + //< 输出大小自适应 + if(self.configuration.videoSizeRespectingAspectRatio){ + [self.filter forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; + [self.output forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; + [self.blendFilter forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; + [self.uiElementInput forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; + }else{ + [self.filter forceProcessingAtSize:self.configuration.videoSize]; + [self.output forceProcessingAtSize:self.configuration.videoSize]; + [self.blendFilter forceProcessingAtSize:self.configuration.videoSize]; + [self.uiElementInput forceProcessingAtSize:self.configuration.videoSize]; } + //< 输出数据 + __weak typeof(self) _self = self; + [self.output setFrameProcessingCompletionBlock:^(GPUImageOutput *output, CMTime time) { + [_self processVideo:output]; + }]; + } #pragma mark Notification @@ -356,34 +360,4 @@ - (void)statusBarChanged:(NSNotification *)notification { } } -#pragma mark -- -- (CGSize)pixelBufferImageSize{ - CGSize videoSize = CGSizeZero; - switch (self.configuration.sessionPreset) { - case LFCaptureSessionPreset360x640: - { - videoSize = CGSizeMake(480, 640); - } - break; - case LFCaptureSessionPreset540x960: - { - videoSize = CGSizeMake(540, 960); - } - break; - case LFCaptureSessionPreset720x1280: - { - videoSize = CGSizeMake(720, 1280); - } - break; - - default: - break; - } - - if(self.configuration.landscape){ - return CGSizeMake(videoSize.height, videoSize.width); - } - return videoSize; -} - @end diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/configuration/LFLiveVideoConfiguration.h index 991e4ac6..56bd3ac7 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.h +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.h @@ -60,6 +60,9 @@ typedef NS_ENUM (NSUInteger, LFLiveVideoQuality){ /// 视频的分辨率,宽高务必设定为 2 的倍数,否则解码播放时可能出现绿边 @property (nonatomic, assign) CGSize videoSize; +/// 输出图像是否等比例,默认为YES +@property (nonatomic, assign) BOOL videoSizeRespectingAspectRatio; + /// 视频输出方向 @property (nonatomic, assign) BOOL landscape; diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index 8e1db306..2f57a14f 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -9,9 +9,11 @@ #import "LFLiveVideoConfiguration.h" #import + @implementation LFLiveVideoConfiguration #pragma mark -- LifeCycle + + (instancetype)defaultConfiguration { LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Default]; return configuration; @@ -148,6 +150,13 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality return configuration; } +- (instancetype)init{ + if(self = [super init]){ + _videoSizeRespectingAspectRatio = YES; + } + return self; +} + #pragma mark -- Setter Getter - (NSString *)avSessionPreset { NSString *avSessionPreset = nil; @@ -175,6 +184,7 @@ - (NSString *)avSessionPreset { return avSessionPreset; } + - (void)setVideoMaxBitRate:(NSUInteger)videoMaxBitRate { if (videoMaxBitRate <= _videoBitRate) return; _videoMaxBitRate = videoMaxBitRate; @@ -195,11 +205,28 @@ - (void)setVideoMinFrameRate:(NSUInteger)videoMinFrameRate { _videoMinFrameRate = videoMinFrameRate; } +- (void)setSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{ + _sessionPreset = sessionPreset; + _sessionPreset = [self supportSessionPreset:sessionPreset]; +} + #pragma mark -- Custom Method - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset { NSString *avSessionPreset = [self avSessionPreset]; AVCaptureSession *session = [[AVCaptureSession alloc] init]; - + AVCaptureDevice *inputCamera; + NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; + for (AVCaptureDevice *device in devices){ + if ([device position] == AVCaptureDevicePositionFront){ + inputCamera = device; + } + } + AVCaptureDeviceInput *videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:inputCamera error:nil]; + + if ([session canAddInput:videoInput]){ + [session addInput:videoInput]; + } + if (![session canSetSessionPreset:avSessionPreset]) { if (sessionPreset == LFCaptureSessionPreset720x1280) { sessionPreset = LFCaptureSessionPreset540x960; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 7ec83d5e8ae47edbb676358dd6c3599d1f291975..b6474eba578e95fd7292d5780f729f2f5d2120b9 100644 GIT binary patch literal 143584 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 literal 124674 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 a2mkwjXV&_^|7@4@fB*Ua|36&x{{H|R#IfH1 diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index b9a9f756..09ad4b2f 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -156,7 +156,7 @@ - (LFLiveSession *)session { /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Medium3 landscape:NO]]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Low2 landscape:NO]]; /**   自己定制单声道 */ /* @@ -207,17 +207,17 @@ - (LFLiveSession *)session { audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(720, 1280); + videoConfiguration.videoSize = CGSizeMake(500, 700); videoConfiguration.videoBitRate = 800*1024; videoConfiguration.videoMaxBitRate = 1000*1024; videoConfiguration.videoMinBitRate = 500*1024; videoConfiguration.videoFrameRate = 15; videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.orientation = UIInterfaceOrientationPortrait; + videoConfiguration.landscape = NO; videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ + */ /**   自己定制高质量音频128K 分辨率设置为720*1280 方向横屏 */ @@ -229,17 +229,17 @@ - (LFLiveSession *)session { audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(1280, 720); + videoConfiguration.videoSize = CGSizeMake(720, 1280); videoConfiguration.videoBitRate = 800*1024; videoConfiguration.videoMaxBitRate = 1000*1024; videoConfiguration.videoMinBitRate = 500*1024; videoConfiguration.videoFrameRate = 15; videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.landscape = YES; - videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; + videoConfiguration.landscape = NO; + videoConfiguration.sessionPreset = LFCaptureSessionPreset360x640; _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ + */ _session.delegate = self; _session.showDebugInfo = NO; @@ -247,9 +247,10 @@ - (LFLiveSession *)session { UIImageView *imageView = [[UIImageView alloc] init]; imageView.alpha = 0.8; - imageView.frame = CGRectMake(100, 100, 29, 29); + imageView.frame = CGRectMake(320-29, 100, 29, 29); imageView.image = [UIImage imageNamed:@"ios-29x29"]; _session.warterMarkView = imageView; + } return _session; } From 42bd5c1f6ba206bf9a2fcd8d17f7f31759897a2b Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 5 Aug 2016 14:06:11 +0800 Subject: [PATCH 099/178] update waterMark postion and set outVideoSize --- LFLiveKit/LFLiveSession.h | 2 +- LFLiveKit/capture/LFVideoCapture.m | 10 +++++++--- LFLiveKit/configuration/LFLiveVideoConfiguration.h | 2 +- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 14 +++++++------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 7e357d47..95e42208 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -85,7 +85,7 @@ @property (nonatomic, assign) NSUInteger reconnectCount; /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add. - set alpha represent mix.Position relative to preview. + set alpha represent mix.Position relative to outVideoSize. *.*/ @property (nonatomic, strong) UIView *warterMarkView; diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index e96ec453..5963ad15 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -102,8 +102,7 @@ - (void)setRunning:(BOOL)running { - (void)setPreView:(UIView *)preView { if (self.gpuImageView.superview) [self.gpuImageView removeFromSuperview]; [preView insertSubview:self.gpuImageView atIndex:0]; - self.gpuImageView.bounds = preView.bounds; - self.waterMarkContentView.bounds = preView.bounds; + self.gpuImageView.frame = CGRectMake(0, 0, preView.frame.size.width, preView.frame.size.height); } - (UIView *)preView { @@ -257,7 +256,12 @@ - (void)processVideo:(GPUImageOutput *)output { GPUImageFramebuffer *imageFramebuffer = output.framebufferForOutput; CVPixelBufferRef pixelBuffer = [imageFramebuffer pixelBuffer]; if(!CGSizeEqualToSize(_self.configuration.videoSize, imageFramebuffer.size)){ - _self.configuration.videoSize = imageFramebuffer.size; + NSInteger width = ceil(imageFramebuffer.size.width); + NSInteger height = ceil(imageFramebuffer.size.height); + if(width %2 != 0) width = width + 1; + if(height %2 != 0) height = height + 1; + _self.configuration.videoSize = CGSizeMake(width, height); + _self.waterMarkContentView.frame = CGRectMake(0, 0,_self.configuration.videoSize.width, _self.configuration.videoSize.height); } if (pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]) { [_self.delegate captureOutput:_self pixelBuffer:pixelBuffer]; diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/configuration/LFLiveVideoConfiguration.h index 56bd3ac7..6eb124b7 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.h +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.h @@ -57,7 +57,7 @@ typedef NS_ENUM (NSUInteger, LFLiveVideoQuality){ ///============================================================================= /// @name Attribute ///============================================================================= -/// 视频的分辨率,宽高务必设定为 2 的倍数,否则解码播放时可能出现绿边 +/// 视频的分辨率,宽高务必设定为 2 的倍数,否则解码播放时可能出现绿边(这个videoSizeRespectingAspectRatio设置为YES则可能会改变) @property (nonatomic, assign) CGSize videoSize; /// 输出图像是否等比例,默认为YES diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 09ad4b2f..8240fc04 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -207,17 +207,17 @@ - (LFLiveSession *)session { audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(500, 700); + videoConfiguration.videoSize = CGSizeMake(720, 1280); videoConfiguration.videoBitRate = 800*1024; videoConfiguration.videoMaxBitRate = 1000*1024; videoConfiguration.videoMinBitRate = 500*1024; videoConfiguration.videoFrameRate = 15; videoConfiguration.videoMaxKeyframeInterval = 30; videoConfiguration.landscape = NO; - videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; + videoConfiguration.sessionPreset = LFCaptureSessionPreset360x640; _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; - */ + */ /**   自己定制高质量音频128K 分辨率设置为720*1280 方向横屏 */ @@ -229,14 +229,14 @@ - (LFLiveSession *)session { audioConfiguration.audioSampleRate = LFLiveAudioSampleRate_44100Hz; LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; - videoConfiguration.videoSize = CGSizeMake(720, 1280); + videoConfiguration.videoSize = CGSizeMake(1280, 720); videoConfiguration.videoBitRate = 800*1024; videoConfiguration.videoMaxBitRate = 1000*1024; videoConfiguration.videoMinBitRate = 500*1024; videoConfiguration.videoFrameRate = 15; videoConfiguration.videoMaxKeyframeInterval = 30; - videoConfiguration.landscape = NO; - videoConfiguration.sessionPreset = LFCaptureSessionPreset360x640; + videoConfiguration.landscape = YES; + videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; _session = [[LFLiveSession alloc] initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration]; */ @@ -247,7 +247,7 @@ - (LFLiveSession *)session { UIImageView *imageView = [[UIImageView alloc] init]; imageView.alpha = 0.8; - imageView.frame = CGRectMake(320-29, 100, 29, 29); + imageView.frame = CGRectMake(100, 100, 29, 29); imageView.image = [UIImage imageNamed:@"ios-29x29"]; _session.warterMarkView = imageView; From e93549619e9ae7dbf96b538935315001139ce214 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 9 Aug 2016 16:51:49 +0800 Subject: [PATCH 100/178] never mirror the rear facing camera --- LFLiveKit/capture/LFVideoCapture.m | 1 - 1 file changed, 1 deletion(-) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 5963ad15..0c1049ee 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -158,7 +158,6 @@ - (BOOL)torch { - (void)setMirror:(BOOL)mirror { _mirror = mirror; - self.videoCamera.horizontallyMirrorRearFacingCamera = mirror; self.videoCamera.horizontallyMirrorFrontFacingCamera = mirror; } From d2d7140312c63cb4e1938ab094f330597f69e3c0 Mon Sep 17 00:00:00 2001 From: toss156 <308276366@qq.com> Date: Tue, 9 Aug 2016 17:12:09 +0800 Subject: [PATCH 101/178] update project file --- LFLiveKit.xcodeproj/project.pbxproj | 104 ++++++++++-------- .../UserInterfaceState.xcuserstate | Bin 13250 -> 14655 bytes .../UserInterfaceState.xcuserstate | Bin 18569 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 23445 -> 24941 bytes .../UserInterfaceState.xcuserstate | Bin 26659 -> 27053 bytes 5 files changed, 60 insertions(+), 44 deletions(-) delete mode 100644 LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index 96009537..cdbe0daa 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -408,6 +408,14 @@ 843725011D4F260A002B398B /* rtmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723971D4F260A002B398B /* rtmp.c */; }; 843725021D4F260A002B398B /* rtmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723981D4F260A002B398B /* rtmp.h */; }; 843725031D4F260A002B398B /* rtmp_sys.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723991D4F260A002B398B /* rtmp_sys.h */; }; + B221C24F1D59D41A009615C3 /* LFAVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C2471D59D41A009615C3 /* LFAVEncoder.h */; }; + B221C2501D59D41A009615C3 /* LFAVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B221C2481D59D41A009615C3 /* LFAVEncoder.mm */; }; + B221C2511D59D41A009615C3 /* LFMP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C2491D59D41A009615C3 /* LFMP4Atom.h */; }; + B221C2521D59D41A009615C3 /* LFMP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = B221C24A1D59D41A009615C3 /* LFMP4Atom.m */; }; + B221C2531D59D41A009615C3 /* LFNALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B221C24B1D59D41A009615C3 /* LFNALUnit.cpp */; }; + B221C2541D59D41A009615C3 /* LFNALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C24C1D59D41A009615C3 /* LFNALUnit.h */; }; + B221C2551D59D41A009615C3 /* LFVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C24D1D59D41A009615C3 /* LFVideoEncoder.h */; }; + B221C2561D59D41A009615C3 /* LFVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B221C24E1D59D41A009615C3 /* LFVideoEncoder.m */; }; B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; @@ -415,15 +423,7 @@ B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; - B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14621D45F18B008082E8 /* AVEncoder.h */; }; - B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14631D45F18B008082E8 /* AVEncoder.mm */; }; B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14641D45F18B008082E8 /* LICENSE.markdown */; }; - B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14651D45F18B008082E8 /* MP4Atom.h */; }; - B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14661D45F18B008082E8 /* MP4Atom.m */; }; - B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14671D45F18B008082E8 /* NALUnit.cpp */; }; - B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14681D45F18B008082E8 /* NALUnit.h */; }; - B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD14691D45F18B008082E8 /* VideoEncoder.h */; }; - B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146A1D45F18B008082E8 /* VideoEncoder.m */; }; B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */; }; B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */; }; /* End PBXBuildFile section */ @@ -844,6 +844,14 @@ 843723971D4F260A002B398B /* rtmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtmp.c; sourceTree = ""; }; 843723981D4F260A002B398B /* rtmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp.h; sourceTree = ""; }; 843723991D4F260A002B398B /* rtmp_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp_sys.h; sourceTree = ""; }; + B221C2471D59D41A009615C3 /* LFAVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAVEncoder.h; sourceTree = ""; }; + B221C2481D59D41A009615C3 /* LFAVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFAVEncoder.mm; sourceTree = ""; }; + B221C2491D59D41A009615C3 /* LFMP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFMP4Atom.h; sourceTree = ""; }; + B221C24A1D59D41A009615C3 /* LFMP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFMP4Atom.m; sourceTree = ""; }; + B221C24B1D59D41A009615C3 /* LFNALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LFNALUnit.cpp; sourceTree = ""; }; + B221C24C1D59D41A009615C3 /* LFNALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFNALUnit.h; sourceTree = ""; }; + B221C24D1D59D41A009615C3 /* LFVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoder.h; sourceTree = ""; }; + B221C24E1D59D41A009615C3 /* LFVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoEncoder.m; sourceTree = ""; }; B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; @@ -851,15 +859,7 @@ B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; - B2CD14621D45F18B008082E8 /* AVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVEncoder.h; sourceTree = ""; }; - B2CD14631D45F18B008082E8 /* AVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVEncoder.mm; sourceTree = ""; }; B2CD14641D45F18B008082E8 /* LICENSE.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.markdown; sourceTree = ""; }; - B2CD14651D45F18B008082E8 /* MP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MP4Atom.h; sourceTree = ""; }; - B2CD14661D45F18B008082E8 /* MP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MP4Atom.m; sourceTree = ""; }; - B2CD14671D45F18B008082E8 /* NALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NALUnit.cpp; sourceTree = ""; }; - B2CD14681D45F18B008082E8 /* NALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NALUnit.h; sourceTree = ""; }; - B2CD14691D45F18B008082E8 /* VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoEncoder.h; sourceTree = ""; }; - B2CD146A1D45F18B008082E8 /* VideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VideoEncoder.m; sourceTree = ""; }; B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; @@ -1444,15 +1444,15 @@ B2CD14611D45F18B008082E8 /* H264 */ = { isa = PBXGroup; children = ( - B2CD14621D45F18B008082E8 /* AVEncoder.h */, - B2CD14631D45F18B008082E8 /* AVEncoder.mm */, + B221C2471D59D41A009615C3 /* LFAVEncoder.h */, + B221C2481D59D41A009615C3 /* LFAVEncoder.mm */, + B221C2491D59D41A009615C3 /* LFMP4Atom.h */, + B221C24A1D59D41A009615C3 /* LFMP4Atom.m */, + B221C24B1D59D41A009615C3 /* LFNALUnit.cpp */, + B221C24C1D59D41A009615C3 /* LFNALUnit.h */, + B221C24D1D59D41A009615C3 /* LFVideoEncoder.h */, + B221C24E1D59D41A009615C3 /* LFVideoEncoder.m */, B2CD14641D45F18B008082E8 /* LICENSE.markdown */, - B2CD14651D45F18B008082E8 /* MP4Atom.h */, - B2CD14661D45F18B008082E8 /* MP4Atom.m */, - B2CD14671D45F18B008082E8 /* NALUnit.cpp */, - B2CD14681D45F18B008082E8 /* NALUnit.h */, - B2CD14691D45F18B008082E8 /* VideoEncoder.h */, - B2CD146A1D45F18B008082E8 /* VideoEncoder.m */, ); path = H264; sourceTree = ""; @@ -1465,6 +1465,7 @@ buildActionMask = 2147483647; files = ( 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, + B221C24F1D59D41A009615C3 /* LFAVEncoder.h in Headers */, 843724711D4F260A002B398B /* GPUImagePerlinNoiseFilter.h in Headers */, 843724F61D4F260A002B398B /* bytes.h in Headers */, 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, @@ -1500,7 +1501,6 @@ 843724991D4F260A002B398B /* GPUImageSharpenFilter.h in Headers */, 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, 843724FB1D4F260A002B398B /* handshake.h in Headers */, - B2CD14701D45F18B008082E8 /* MP4Atom.h in Headers */, 843723F31D4F260A002B398B /* GPUImageFalseColorFilter.h in Headers */, 843723B71D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h in Headers */, 843724151D4F260A002B398B /* GPUImageHazeFilter.h in Headers */, @@ -1549,6 +1549,7 @@ 843724251D4F260A002B398B /* GPUImageHSBFilter.h in Headers */, 843724891D4F260A002B398B /* GPUImageRGBDilationFilter.h in Headers */, 843724C31D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h in Headers */, + B221C2511D59D41A009615C3 /* LFMP4Atom.h in Headers */, 843723A71D4F260A002B398B /* GPUImageAmatorkaFilter.h in Headers */, 8437245F1D4F260A002B398B /* GPUImageMultiplyBlendFilter.h in Headers */, 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, @@ -1562,6 +1563,7 @@ 843723F91D4F260A002B398B /* GPUImageFilterGroup.h in Headers */, 843723C31D4F260A002B398B /* GPUImageColorBurnBlendFilter.h in Headers */, 8437243B1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h in Headers */, + B221C2551D59D41A009615C3 /* LFVideoEncoder.h in Headers */, 843724011D4F260A002B398B /* GPUImageFramebufferCache.h in Headers */, 8437247B1D4F260A002B398B /* GPUImagePolarPixellateFilter.h in Headers */, 843724AB1D4F260A002B398B /* GPUImageSolarizeFilter.h in Headers */, @@ -1577,6 +1579,7 @@ 843723EB1D4F260A002B398B /* GPUImageEmbossFilter.h in Headers */, 843724EC1D4F260A002B398B /* GPUImageMovieWriter.h in Headers */, 843724451D4F260A002B398B /* GPUImageLuminanceRangeFilter.h in Headers */, + B221C2541D59D41A009615C3 /* LFNALUnit.h in Headers */, 843723D31D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h in Headers */, 8437243F1D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h in Headers */, 843725021D4F260A002B398B /* rtmp.h in Headers */, @@ -1632,12 +1635,10 @@ 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, 843724BF1D4F260A002B398B /* GPUImageThreeInputFilter.h in Headers */, 843724F71D4F260A002B398B /* dh.h in Headers */, - B2CD14741D45F18B008082E8 /* VideoEncoder.h in Headers */, 843725031D4F260A002B398B /* rtmp_sys.h in Headers */, 843724691D4F260A002B398B /* GPUImageOpeningFilter.h in Headers */, 843723C11D4F260A002B398B /* GPUImageColorBlendFilter.h in Headers */, 8437249F1D4F260A002B398B /* GPUImageSketchFilter.h in Headers */, - B2CD14731D45F18B008082E8 /* NALUnit.h in Headers */, 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, 843724A91D4F260A002B398B /* GPUImageSoftLightBlendFilter.h in Headers */, 843723A91D4F260A002B398B /* GPUImageAverageColor.h in Headers */, @@ -1657,7 +1658,6 @@ 843723A11D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h in Headers */, 843723CF1D4F260A002B398B /* GPUImageColorPackingFilter.h in Headers */, 843723B91D4F260A002B398B /* GPUImageCGAColorspaceFilter.h in Headers */, - B2CD146D1D45F18B008082E8 /* AVEncoder.h in Headers */, 843724051D4F260A002B398B /* GPUImageGaussianBlurFilter.h in Headers */, 843724B31D4F260A002B398B /* GPUImageStillCamera.h in Headers */, 843724D51D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h in Headers */, @@ -1783,8 +1783,8 @@ 843724E41D4F260A002B398B /* GPUImageWhiteBalanceFilter.m in Sources */, 843724101D4F260A002B398B /* GPUImageHalftoneFilter.m in Sources */, 843724301D4F260A002B398B /* GPUImageKuwaharaFilter.m in Sources */, - B2CD14711D45F18B008082E8 /* MP4Atom.m in Sources */, 843724201D4F260A002B398B /* GPUImageHistogramFilter.m in Sources */, + B221C2531D59D41A009615C3 /* LFNALUnit.cpp in Sources */, 8437246E1D4F260A002B398B /* GPUImageOverlayBlendFilter.m in Sources */, 843723A81D4F260A002B398B /* GPUImageAmatorkaFilter.m in Sources */, 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, @@ -1798,7 +1798,6 @@ 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, 843723B81D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m in Sources */, 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - B2CD14721D45F18B008082E8 /* NALUnit.cpp in Sources */, 843724CE1D4F260A002B398B /* GPUImageTransformFilter.m in Sources */, 843723E81D4F260A002B398B /* GPUImageDissolveBlendFilter.m in Sources */, 843723D81D4F260A002B398B /* GPUImageCropFilter.m in Sources */, @@ -1850,10 +1849,10 @@ 843724B81D4F260A002B398B /* GPUImageSubtractBlendFilter.m in Sources */, 843724741D4F260A002B398B /* GPUImagePinchDistortionFilter.m in Sources */, 843724D61D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m in Sources */, - B2CD14751D45F18B008082E8 /* VideoEncoder.m in Sources */, 843723DA1D4F260A002B398B /* GPUImageCrosshairGenerator.m in Sources */, 843724A01D4F260A002B398B /* GPUImageSketchFilter.m in Sources */, 843723A01D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m in Sources */, + B221C2561D59D41A009615C3 /* LFVideoEncoder.m in Sources */, 8437249A1D4F260A002B398B /* GPUImageSharpenFilter.m in Sources */, 843723C41D4F260A002B398B /* GPUImageColorBurnBlendFilter.m in Sources */, 843724121D4F260A002B398B /* GPUImageHardLightBlendFilter.m in Sources */, @@ -1873,6 +1872,7 @@ 8437245C1D4F260A002B398B /* GPUImageMovie.m in Sources */, 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, 843724A61D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m in Sources */, + B221C2501D59D41A009615C3 /* LFAVEncoder.mm in Sources */, 843724281D4F260A002B398B /* GPUImageHueBlendFilter.m in Sources */, 843723B61D4F260A002B398B /* GPUImageBulgeDistortionFilter.m in Sources */, 8437243A1D4F260A002B398B /* GPUImageLightenBlendFilter.m in Sources */, @@ -1885,6 +1885,7 @@ 843724961D4F260A002B398B /* GPUImageScreenBlendFilter.m in Sources */, 843724541D4F260A002B398B /* GPUImageMonochromeFilter.m in Sources */, 843723B41D4F260A002B398B /* GPUImageBuffer.m in Sources */, + B221C2521D59D41A009615C3 /* LFMP4Atom.m in Sources */, 8437239B1D4F260A002B398B /* GLProgram.m in Sources */, 843724E81D4F260A002B398B /* GPUImageZoomBlurFilter.m in Sources */, 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, @@ -1969,7 +1970,6 @@ 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, 843723FC1D4F260A002B398B /* GPUImageFilterPipeline.m in Sources */, 843724441D4F260A002B398B /* GPUImageLowPassFilter.m in Sources */, - B2CD146E1D45F18B008082E8 /* AVEncoder.mm in Sources */, 843725011D4F260A002B398B /* rtmp.c in Sources */, 843724221D4F260A002B398B /* GPUImageHistogramGenerator.m in Sources */, 843724621D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m in Sources */, @@ -2095,6 +2095,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_BITCODE = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LFLiveKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; @@ -2105,14 +2106,21 @@ ); OTHER_CFLAGS = ( "$(inherited)", - "-isystem", - "\"${PODS_ROOT}/Headers/Public\"", - "-isystem", - "\"${PODS_ROOT}/Headers/Public/LMGPUImage\"", - "-isystem", - "\"${PODS_ROOT}/Headers/Public/pili-librtmp\"", "-fembed-bitcode", ); + OTHER_LDFLAGS = ( + "-ObjC", + "-framework", + "\"AVFoundation\"", + "-framework", + "\"CoreMedia\"", + "-framework", + "\"OpenGLES\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"UIKit\"", + ); PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -2129,6 +2137,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_BITCODE = YES; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = LFLiveKit/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; @@ -2139,14 +2148,21 @@ ); OTHER_CFLAGS = ( "$(inherited)", - "-isystem", - "\"${PODS_ROOT}/Headers/Public\"", - "-isystem", - "\"${PODS_ROOT}/Headers/Public/LMGPUImage\"", - "-isystem", - "\"${PODS_ROOT}/Headers/Public/pili-librtmp\"", "-fembed-bitcode", ); + OTHER_LDFLAGS = ( + "-ObjC", + "-framework", + "\"AVFoundation\"", + "-framework", + "\"CoreMedia\"", + "-framework", + "\"OpenGLES\"", + "-framework", + "\"QuartzCore\"", + "-framework", + "\"UIKit\"", + ); PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index d1ebb72a2763b6a2b40dca3dcaa0c832edbe30e2..fe786a03732de386976dcdf9912a25f857153211 100644 GIT binary patch literal 14655 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 diff --git a/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 66b0a55481333756a9d44bd67023b8c26e52b6f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18569 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

    f5`1CiLD;sKYPHx`bSyHKh4E6zkAS6{ar!q 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 BP0|1W diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index 657fa039cb3cb6e0f0cf79e5cc9b95d07359fd65..0274dfce8aa522ef4401ada98f8daae4145467e1 100644 GIT binary patch delta 13233 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 ZwI0)YLX@X31)=Acz3lmY@!fjT{{#5}F^d2I delta 12791 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 Bm5~4d diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate index 8733bd40795bd4c5dddccea9074ce544d9b0b0b2..5335de2daf05f8f70f90dc324f2d610bcb5f889f 100644 GIT binary patch delta 11009 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 Date: Wed, 10 Aug 2016 14:21:04 +0800 Subject: [PATCH 102/178] support External input video or audio ,set LFLiveCaptureTypeMask --- .../UserInterfaceState.xcuserstate | Bin 19750 -> 20476 bytes LFLiveKit/LFLiveSession.h | 34 +++++ LFLiveKit/LFLiveSession.m | 86 +++++++---- LFLiveKit/capture/LFVideoCapture.h | 2 +- LFLiveKit/capture/LFVideoCapture.m | 26 +--- LFLiveKit/coder/LFHardwareVideoEncoder.m | 2 +- LFLiveKit/coder/LFVideoEncoding.h | 2 +- .../configuration/LFLiveVideoConfiguration.m | 137 ++++++++++++------ LFLiveKit/objects/LFLiveStreamInfo.h | 3 +- LFLiveKit/publish/LFStreamRTMPSocket.m | 9 +- LFLiveKit/publish/LFStreamSocket.h | 3 +- LFLiveKit/publish/LFStreamingBuffer.h | 3 + LFLiveKit/publish/LFStreamingBuffer.m | 34 +++-- .../UserInterfaceState.xcuserstate | Bin 143584 -> 147711 bytes LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 4 +- README.md | 2 + 16 files changed, 232 insertions(+), 115 deletions(-) diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 21685d679788169edda837d1d442dd555b71fe51..ac7366d342ec1644382ba271b700d39bad639118 100644 GIT binary patch delta 10421 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 aipCaADk7m1rHJF2zxhqg-w!{Fru`p4WpvvB delta 10052 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 O?Jqm2_P6fofBJuC72qxa diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index 65721030..840e6700 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -15,6 +15,26 @@ #import "LFLiveVideoConfiguration.h" #import "LFLiveDebug.h" +typedef NS_ENUM(NSInteger,LFLiveCaptureType) { + LFLiveCaptureAudio, //< capture only audio + LFLiveCaptureVideo, //< capture onlt video + LFLiveInputAudio, //< only audio (External input audio) + LFLiveInputVideo, //< only video (External input video) +}; + + +///< 用来控制采集类型(可以内部采集也可以外部传入等各种组合,支持单音频与单视频,外部输入适用于录屏,无人机等外设介入) +typedef NS_ENUM(NSInteger,LFLiveCaptureTypeMask) { + LFLiveCaptureMaskAudio = (1 << LFLiveCaptureAudio), ///< only inner capture audio (no video) + LFLiveCaptureMaskVideo = (1 << LFLiveCaptureVideo), ///< only inner capture video (no audio) + LFLiveInputMaskAudio = (1 << LFLiveInputAudio), ///< only outer input audio (no video) + LFLiveInputMaskVideo = (1 << LFLiveInputVideo), ///< only outer input video (no audio) + LFLiveCaptureMaskAll = (LFLiveCaptureMaskAudio | LFLiveCaptureMaskVideo), ///< inner capture audio and video + LFLiveInputMaskAll = (LFLiveInputMaskAudio | LFLiveInputMaskVideo), ///< outer input audio and video(method see pushVideo and pushAudio) + LFLiveCaptureMaskAudioInputVideo = (LFLiveCaptureMaskAudio | LFLiveInputMaskVideo), ///< inner capture audio and outer input video(method pushVideo and setRunning) + LFLiveCaptureMaskVideoInputAudio = (LFLiveCaptureMaskVideo | LFLiveInputMaskAudio), ///< inner capture video and outer input audio(method pushAudio and setRunning) + LFLiveCaptureDefaultMask = LFLiveCaptureMaskAll ///< default is inner capture audio and video +}; @class LFLiveSession; @protocol LFLiveSessionDelegate @@ -78,6 +98,9 @@ /** The status of the stream .*/ @property (nonatomic, assign, readonly) LFLiveState state; +/** The captureType control inner or outer audio and video .*/ +@property (nonatomic, assign, readonly) LFLiveCaptureTypeMask captureType; + /** The showDebugInfo control streamInfo and uploadInfo(1s) *.*/ @property (nonatomic, assign) BOOL showDebugInfo; @@ -105,12 +128,23 @@ */ - (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration NS_DESIGNATED_INITIALIZER; +/** + The designated initializer. Multiple instances with the same configuration will make the + capture unstable. + */ +- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration captureType:(LFLiveCaptureTypeMask)captureType NS_DESIGNATED_INITIALIZER; + /** The start stream .*/ - (void)startLive:(nonnull LFLiveStreamInfo *)streamInfo; /** The stop stream .*/ - (void)stopLive; +/** support outer input yuv or rgb video(set LFLiveCaptureTypeMask) .*/ +- (void)pushVideo:(CVPixelBufferRef)pixelBuffer; + +/** support outer input pcm audio(set LFLiveCaptureTypeMask) .*/ +- (void)pushAudio:(AudioBufferList)audioBufferList; @end diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index fcfceaca..672ab352 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -17,15 +17,12 @@ #import "LFGPUImageBeautyFilter.h" #import "LFH264VideoEncoder.h" -#define LFLiveReportKey @"com.youku.liveSessionReport" @interface LFLiveSession () -{ - dispatch_semaphore_t _lock; -} -///音频配置 + +/// 音频配置 @property (nonatomic, strong) LFLiveAudioConfiguration *audioConfiguration; -///视频配置 +/// 视频配置 @property (nonatomic, strong) LFLiveVideoConfiguration *videoConfiguration; /// 声音采集 @property (nonatomic, strong) LFAudioCapture *audioCaptureSource; @@ -38,17 +35,21 @@ @interface LFLiveSession () socket; + #pragma mark -- 内部标识 -/// 上报 -@property (nonatomic, copy) dispatch_block_t reportBlock; -/// debugInfo +/// 调试信息 @property (nonatomic, strong) LFLiveDebug *debugInfo; -/// streamInfo +/// 流信息 @property (nonatomic, strong) LFLiveStreamInfo *streamInfo; -/// uploading +/// 是否开始上传 @property (nonatomic, assign) BOOL uploading; -/// state +/// 当前状态 @property (nonatomic, assign, readwrite) LFLiveState state; +/// 当前直播type +@property (nonatomic, assign, readwrite) LFLiveCaptureTypeMask captureType; + +/// 时间戳锁 +@property (nonatomic, strong) dispatch_semaphore_t lock; @end @@ -68,20 +69,25 @@ @implementation LFLiveSession #pragma mark -- LifeCycle - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(LFLiveVideoConfiguration *)videoConfiguration { - if (!audioConfiguration || !videoConfiguration) @throw [NSException exceptionWithName:@"LFLiveSession init error" reason:@"audioConfiguration or videoConfiguration is nil " userInfo:nil]; + return [self initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration captureType:LFLiveCaptureDefaultMask]; +} + +- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration captureType:(LFLiveCaptureTypeMask)captureType{ + if((captureType & LFLiveCaptureMaskAudio || captureType & LFLiveInputMaskAudio) && !audioConfiguration) @throw [NSException exceptionWithName:@"LFLiveSession init error" reason:@"audioConfiguration is nil " userInfo:nil]; + if((captureType & LFLiveCaptureMaskVideo || captureType & LFLiveInputMaskVideo) && !videoConfiguration) @throw [NSException exceptionWithName:@"LFLiveSession init error" reason:@"videoConfiguration is nil " userInfo:nil]; if (self = [super init]) { _audioConfiguration = audioConfiguration; _videoConfiguration = videoConfiguration; - _lock = dispatch_semaphore_create(1); _adaptiveBitrate = NO; _isFirstFrame = YES; + _captureType = captureType; } return self; } - (void)dealloc { - self.audioCaptureSource.running = NO; self.videoCaptureSource.running = NO; + self.audioCaptureSource.running = NO; } #pragma mark -- CustomMethod @@ -90,6 +96,7 @@ - (void)startLive:(LFLiveStreamInfo *)streamInfo { _streamInfo = streamInfo; _streamInfo.videoConfiguration = _videoConfiguration; _streamInfo.audioConfiguration = _audioConfiguration; + _streamInfo.needDropFrame = (self.captureType & LFLiveCaptureMaskVideo || self.captureType & LFLiveInputMaskVideo) ? YES : NO;//< 有视频执行丢帧算法 [self.socket start]; } @@ -99,12 +106,24 @@ - (void)stopLive { self.socket = nil; } +- (void)pushVideo:(CVPixelBufferRef)pixelBuffer{ + if(self.captureType & LFLiveInputMaskVideo){ + if (self.uploading) [self.videoEncoder encodeVideoData:pixelBuffer timeStamp:self.currentTimestamp]; + } +} + +- (void)pushAudio:(AudioBufferList)audioBufferList{ + if(self.captureType & LFLiveInputMaskAudio){ + if (self.uploading) [self.audioEncoder encodeAudioData:audioBufferList timeStamp:self.currentTimestamp]; + } +} + #pragma mark -- CaptureDelegate - (void)captureOutput:(nullable LFAudioCapture *)capture audioBuffer:(AudioBufferList)inBufferList { if (self.uploading) [self.audioEncoder encodeAudioData:inBufferList timeStamp:self.currentTimestamp]; } -- (void)captureOutput:(nullable LFVideoCapture *)capture pixelBuffer:(nullable CVImageBufferRef)pixelBuffer { +- (void)captureOutput:(nullable LFVideoCapture *)capture pixelBuffer:(nullable CVPixelBufferRef)pixelBuffer { if (self.uploading) [self.videoEncoder encodeVideoData:pixelBuffer timeStamp:self.currentTimestamp]; } @@ -156,18 +175,18 @@ - (void)socketDebug:(nullable id)socket debugInfo:(nullable LFLi } - (void)socketBufferStatus:(nullable id)socket status:(LFLiveBuffferState)status { - if (self.adaptiveBitrate) { - NSUInteger videoBitRate = [_videoEncoder videoBitRate]; + if((self.captureType & LFLiveCaptureMaskVideo || self.captureType & LFLiveInputMaskVideo) && self.adaptiveBitrate){ + NSUInteger videoBitRate = [self.videoEncoder videoBitRate]; if (status == LFLiveBuffferDecline) { if (videoBitRate < _videoConfiguration.videoMaxBitRate) { videoBitRate = videoBitRate + 50 * 1000; - [_videoEncoder setVideoBitRate:videoBitRate]; + [self.videoEncoder setVideoBitRate:videoBitRate]; NSLog(@"Increase bitrate %@", @(videoBitRate)); } } else { - if (videoBitRate > _videoConfiguration.videoMinBitRate) { + if (videoBitRate > self.videoConfiguration.videoMinBitRate) { videoBitRate = videoBitRate - 100 * 1000; - [_videoEncoder setVideoBitRate:videoBitRate]; + [self.videoEncoder setVideoBitRate:videoBitRate]; NSLog(@"Decline bitrate %@", @(videoBitRate)); } } @@ -284,16 +303,20 @@ - (UIView*)warterMarkView{ - (LFAudioCapture *)audioCaptureSource { if (!_audioCaptureSource) { - _audioCaptureSource = [[LFAudioCapture alloc] initWithAudioConfiguration:_audioConfiguration]; - _audioCaptureSource.delegate = self; + if(self.captureType & LFLiveCaptureMaskAudio){ + _audioCaptureSource = [[LFAudioCapture alloc] initWithAudioConfiguration:_audioConfiguration]; + _audioCaptureSource.delegate = self; + } } return _audioCaptureSource; } - (LFVideoCapture *)videoCaptureSource { if (!_videoCaptureSource) { - _videoCaptureSource = [[LFVideoCapture alloc] initWithVideoConfiguration:_videoConfiguration]; - _videoCaptureSource.delegate = self; + if(self.captureType & LFLiveCaptureMaskVideo){ + _videoCaptureSource = [[LFVideoCapture alloc] initWithVideoConfiguration:_videoConfiguration]; + _videoCaptureSource.delegate = self; + } } return _videoCaptureSource; } @@ -320,7 +343,7 @@ - (LFVideoCapture *)videoCaptureSource { - (id)socket { if (!_socket) { - _socket = [[LFStreamRTMPSocket alloc] initWithStream:self.streamInfo videoSize:self.videoConfiguration.videoSize reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; + _socket = [[LFStreamRTMPSocket alloc] initWithStream:self.streamInfo reconnectInterval:self.reconnectInterval reconnectCount:self.reconnectCount]; [_socket setDelegate:self]; } return _socket; @@ -333,8 +356,15 @@ - (LFLiveStreamInfo *)streamInfo { return _streamInfo; } +- (dispatch_semaphore_t)lock{ + if(!_lock){ + _lock = dispatch_semaphore_create(1); + } + return _lock; +} + - (uint64_t)currentTimestamp { - dispatch_semaphore_wait(_lock, DISPATCH_TIME_FOREVER); + dispatch_semaphore_wait(self.lock, DISPATCH_TIME_FOREVER); uint64_t currentts = 0; if (_isFirstFrame) { _timestamp = NOW; @@ -343,7 +373,7 @@ - (uint64_t)currentTimestamp { } else { currentts = NOW - _timestamp; } - dispatch_semaphore_signal(_lock); + dispatch_semaphore_signal(self.lock); return currentts; } diff --git a/LFLiveKit/capture/LFVideoCapture.h b/LFLiveKit/capture/LFVideoCapture.h index 2e605732..681064ab 100755 --- a/LFLiveKit/capture/LFVideoCapture.h +++ b/LFLiveKit/capture/LFVideoCapture.h @@ -13,7 +13,7 @@ @class LFVideoCapture; /** LFVideoCapture callback videoData */ @protocol LFVideoCaptureDelegate -- (void)captureOutput:(nullable LFVideoCapture *)capture pixelBuffer:(nullable CVImageBufferRef)pixelBuffer; +- (void)captureOutput:(nullable LFVideoCapture *)capture pixelBuffer:(nullable CVPixelBufferRef)pixelBuffer; @end @interface LFVideoCapture : NSObject diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 0c1049ee..f979e4c7 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -233,7 +233,7 @@ - (GPUImageAlphaBlendFilter *)blendFilter{ - (UIView *)waterMarkContentView{ if(!_waterMarkContentView){ _waterMarkContentView = [UIView new]; - _waterMarkContentView.frame = CGRectMake(0, 0, self.gpuImageView.frame.size.width, self.gpuImageView.frame.size.height); + _waterMarkContentView.frame = CGRectMake(0, 0, self.configuration.videoSize.width, self.configuration.videoSize.height); _waterMarkContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; } return _waterMarkContentView; @@ -254,14 +254,6 @@ - (void)processVideo:(GPUImageOutput *)output { @autoreleasepool { GPUImageFramebuffer *imageFramebuffer = output.framebufferForOutput; CVPixelBufferRef pixelBuffer = [imageFramebuffer pixelBuffer]; - if(!CGSizeEqualToSize(_self.configuration.videoSize, imageFramebuffer.size)){ - NSInteger width = ceil(imageFramebuffer.size.width); - NSInteger height = ceil(imageFramebuffer.size.height); - if(width %2 != 0) width = width + 1; - if(height %2 != 0) height = height + 1; - _self.configuration.videoSize = CGSizeMake(width, height); - _self.waterMarkContentView.frame = CGRectMake(0, 0,_self.configuration.videoSize.width, _self.configuration.videoSize.height); - } if (pixelBuffer && _self.delegate && [_self.delegate respondsToSelector:@selector(captureOutput:pixelBuffer:)]) { [_self.delegate captureOutput:_self pixelBuffer:pixelBuffer]; } @@ -309,18 +301,10 @@ - (void)reloadFilter{ [self.output addTarget:self.gpuImageView]; } - //< 输出大小自适应 - if(self.configuration.videoSizeRespectingAspectRatio){ - [self.filter forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; - [self.output forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; - [self.blendFilter forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; - [self.uiElementInput forceProcessingAtSizeRespectingAspectRatio:self.configuration.videoSize]; - }else{ - [self.filter forceProcessingAtSize:self.configuration.videoSize]; - [self.output forceProcessingAtSize:self.configuration.videoSize]; - [self.blendFilter forceProcessingAtSize:self.configuration.videoSize]; - [self.uiElementInput forceProcessingAtSize:self.configuration.videoSize]; - } + [self.filter forceProcessingAtSize:self.configuration.videoSize]; + [self.output forceProcessingAtSize:self.configuration.videoSize]; + [self.blendFilter forceProcessingAtSize:self.configuration.videoSize]; + [self.uiElementInput forceProcessingAtSize:self.configuration.videoSize]; //< 输出数据 __weak typeof(self) _self = self; diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/coder/LFHardwareVideoEncoder.m index 195222ca..e44d4e19 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -98,7 +98,7 @@ - (void)dealloc { } #pragma mark -- LFVideoEncoder -- (void)encodeVideoData:(CVImageBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp { +- (void)encodeVideoData:(CVPixelBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp { if (_isBackGround) return; frameCount++; diff --git a/LFLiveKit/coder/LFVideoEncoding.h b/LFLiveKit/coder/LFVideoEncoding.h index dea1174a..2f090fb3 100755 --- a/LFLiveKit/coder/LFVideoEncoding.h +++ b/LFLiveKit/coder/LFVideoEncoding.h @@ -20,7 +20,7 @@ /// 编码器抽象的接口 @protocol LFVideoEncoding @required -- (void)encodeVideoData:(nullable CVImageBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp; +- (void)encodeVideoData:(nullable CVPixelBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp; - (void)stopEncoder; @optional @property (nonatomic, assign) NSInteger videoBitRate; diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index 2f57a14f..d8f52318 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -27,8 +27,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality landscape:(BOOL)landscape { LFLiveVideoConfiguration *configuration = [LFLiveVideoConfiguration new]; switch (videoQuality) { - case LFLiveVideoQuality_Low1: - { + case LFLiveVideoQuality_Low1:{ configuration.sessionPreset = LFCaptureSessionPreset360x640; configuration.videoFrameRate = 15; configuration.videoMaxFrameRate = 15; @@ -38,9 +37,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 400 * 1000; configuration.videoSize = CGSizeMake(360, 640); } - break; - case LFLiveVideoQuality_Low2: - { + break; + case LFLiveVideoQuality_Low2:{ configuration.sessionPreset = LFCaptureSessionPreset360x640; configuration.videoFrameRate = 24; configuration.videoMaxFrameRate = 24; @@ -50,9 +48,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 500 * 1000; configuration.videoSize = CGSizeMake(360, 640); } - break; - case LFLiveVideoQuality_Low3: - { + break; + case LFLiveVideoQuality_Low3: { configuration.sessionPreset = LFCaptureSessionPreset360x640; configuration.videoFrameRate = 30; configuration.videoMaxFrameRate = 30; @@ -62,9 +59,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 600 * 1000; configuration.videoSize = CGSizeMake(360, 640); } - break; - case LFLiveVideoQuality_Medium1: - { + break; + case LFLiveVideoQuality_Medium1:{ configuration.sessionPreset = LFCaptureSessionPreset540x960; configuration.videoFrameRate = 15; configuration.videoMaxFrameRate = 15; @@ -74,9 +70,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 500 * 1000; configuration.videoSize = CGSizeMake(540, 960); } - break; - case LFLiveVideoQuality_Medium2: - { + break; + case LFLiveVideoQuality_Medium2:{ configuration.sessionPreset = LFCaptureSessionPreset540x960; configuration.videoFrameRate = 24; configuration.videoMaxFrameRate = 24; @@ -86,9 +81,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 500 * 1000; configuration.videoSize = CGSizeMake(540, 960); } - break; - case LFLiveVideoQuality_Medium3: - { + break; + case LFLiveVideoQuality_Medium3:{ configuration.sessionPreset = LFCaptureSessionPreset540x960; configuration.videoFrameRate = 30; configuration.videoMaxFrameRate = 30; @@ -98,9 +92,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 500 * 1000; configuration.videoSize = CGSizeMake(540, 960); } - break; - case LFLiveVideoQuality_High1: - { + break; + case LFLiveVideoQuality_High1:{ configuration.sessionPreset = LFCaptureSessionPreset720x1280; configuration.videoFrameRate = 15; configuration.videoMaxFrameRate = 15; @@ -110,9 +103,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 500 * 1000; configuration.videoSize = CGSizeMake(720, 1280); } - break; - case LFLiveVideoQuality_High2: - { + break; + case LFLiveVideoQuality_High2:{ configuration.sessionPreset = LFCaptureSessionPreset720x1280; configuration.videoFrameRate = 24; configuration.videoMaxFrameRate = 24; @@ -122,9 +114,8 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 800 * 1000; configuration.videoSize = CGSizeMake(720, 1280); } - break; - case LFLiveVideoQuality_High3: - { + break; + case LFLiveVideoQuality_High3:{ configuration.sessionPreset = LFCaptureSessionPreset720x1280; configuration.videoFrameRate = 30; configuration.videoMaxFrameRate = 30; @@ -134,7 +125,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoMinBitRate = 500 * 1000; configuration.videoSize = CGSizeMake(720, 1280); } - break; + break; default: break; } @@ -148,6 +139,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality configuration.videoSize = CGSizeMake(size.width, size.height); } return configuration; + } - (instancetype)init{ @@ -161,25 +153,22 @@ - (instancetype)init{ - (NSString *)avSessionPreset { NSString *avSessionPreset = nil; switch (self.sessionPreset) { - case LFCaptureSessionPreset360x640: - { + case LFCaptureSessionPreset360x640:{ avSessionPreset = AVCaptureSessionPreset640x480; } - break; - case LFCaptureSessionPreset540x960: - { + break; + case LFCaptureSessionPreset540x960:{ avSessionPreset = AVCaptureSessionPresetiFrame960x540; } - break; - case LFCaptureSessionPreset720x1280: - { + break; + case LFCaptureSessionPreset720x1280:{ avSessionPreset = AVCaptureSessionPreset1280x720; } - break; + break; default: { avSessionPreset = AVCaptureSessionPreset640x480; } - break; + break; } return avSessionPreset; } @@ -210,9 +199,23 @@ - (void)setSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{ _sessionPreset = [self supportSessionPreset:sessionPreset]; } +- (void)setVideoSize:(CGSize)videoSize{ + _videoSize = videoSize; + if(_videoSizeRespectingAspectRatio) _videoSize = self.aspectRatioVideoSize; +} + +- (void)setVideoSizeRespectingAspectRatio:(BOOL)videoSizeRespectingAspectRatio{ + _videoSizeRespectingAspectRatio = videoSizeRespectingAspectRatio; + if(_videoSizeRespectingAspectRatio) _videoSize = self.aspectRatioVideoSize; +} + +- (void)setLandscape:(BOOL)landscape{ + _landscape = landscape; + if(_videoSizeRespectingAspectRatio) _videoSize = self.aspectRatioVideoSize; +} + #pragma mark -- Custom Method - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset { - NSString *avSessionPreset = [self avSessionPreset]; AVCaptureSession *session = [[AVCaptureSession alloc] init]; AVCaptureDevice *inputCamera; NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; @@ -227,10 +230,10 @@ - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessi [session addInput:videoInput]; } - if (![session canSetSessionPreset:avSessionPreset]) { + if (![session canSetSessionPreset:self.avSessionPreset]) { if (sessionPreset == LFCaptureSessionPreset720x1280) { sessionPreset = LFCaptureSessionPreset540x960; - if (![session canSetSessionPreset:avSessionPreset]) { + if (![session canSetSessionPreset:self.avSessionPreset]) { sessionPreset = LFCaptureSessionPreset360x640; } } else if (sessionPreset == LFCaptureSessionPreset540x960) { @@ -240,24 +243,71 @@ - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessi return sessionPreset; } +- (CGSize)captureOutVideoSize{ + CGSize videoSize = CGSizeZero; + switch (self.sessionPreset) { + case LFCaptureSessionPreset360x640:{ + videoSize = CGSizeMake(360, 640); + } + break; + case LFCaptureSessionPreset540x960:{ + videoSize = CGSizeMake(540, 960); + } + break; + case LFCaptureSessionPreset720x1280:{ + videoSize = CGSizeMake(720, 1280); + } + break; + + default:{ + videoSize = CGSizeMake(360, 640); + } + break; + } + + if(self.landscape){ + return CGSizeMake(videoSize.height, videoSize.width); + } + return videoSize; +} + +- (CGSize)aspectRatioVideoSize{ + CGSize size = AVMakeRectWithAspectRatioInsideRect(self.captureOutVideoSize, CGRectMake(0, 0, self.videoSize.width, self.videoSize.height)).size; + NSInteger width = ceil(size.width); + NSInteger height = ceil(size.height); + if(width %2 != 0) width = width - 1; + if(height %2 != 0) height = height - 1; + return CGSizeMake(width, height); +} + #pragma mark -- encoder - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:[NSValue valueWithCGSize:self.videoSize] forKey:@"videoSize"]; [aCoder encodeObject:@(self.videoFrameRate) forKey:@"videoFrameRate"]; + [aCoder encodeObject:@(self.videoMaxFrameRate) forKey:@"videoMaxFrameRate"]; + [aCoder encodeObject:@(self.videoMinFrameRate) forKey:@"videoMinFrameRate"]; [aCoder encodeObject:@(self.videoMaxKeyframeInterval) forKey:@"videoMaxKeyframeInterval"]; [aCoder encodeObject:@(self.videoBitRate) forKey:@"videoBitRate"]; + [aCoder encodeObject:@(self.videoMaxBitRate) forKey:@"videoMaxBitRate"]; + [aCoder encodeObject:@(self.videoMinBitRate) forKey:@"videoMinBitRate"]; [aCoder encodeObject:@(self.sessionPreset) forKey:@"sessionPreset"]; [aCoder encodeObject:@(self.landscape) forKey:@"landscape"]; + [aCoder encodeObject:@(self.videoSizeRespectingAspectRatio) forKey:@"videoSizeRespectingAspectRatio"]; } - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; _videoSize = [[aDecoder decodeObjectForKey:@"videoSize"] CGSizeValue]; _videoFrameRate = [[aDecoder decodeObjectForKey:@"videoFrameRate"] unsignedIntegerValue]; + _videoMaxFrameRate = [[aDecoder decodeObjectForKey:@"videoMaxFrameRate"] unsignedIntegerValue]; + _videoMinFrameRate = [[aDecoder decodeObjectForKey:@"videoMinFrameRate"] unsignedIntegerValue]; _videoMaxKeyframeInterval = [[aDecoder decodeObjectForKey:@"videoMaxKeyframeInterval"] unsignedIntegerValue]; _videoBitRate = [[aDecoder decodeObjectForKey:@"videoBitRate"] unsignedIntegerValue]; + _videoMaxBitRate = [[aDecoder decodeObjectForKey:@"videoMaxBitRate"] unsignedIntegerValue]; + _videoMinBitRate = [[aDecoder decodeObjectForKey:@"videoMinBitRate"] unsignedIntegerValue]; _sessionPreset = [[aDecoder decodeObjectForKey:@"sessionPreset"] unsignedIntegerValue]; _landscape = [[aDecoder decodeObjectForKey:@"landscape"] unsignedIntegerValue]; + _videoSizeRespectingAspectRatio = [[aDecoder decodeObjectForKey:@"videoSizeRespectingAspectRatio"] unsignedIntegerValue]; return self; } @@ -273,7 +323,8 @@ - (NSUInteger)hash { @(self.videoMinBitRate), self.avSessionPreset, @(self.sessionPreset), - @(self.landscape), ]; + @(self.landscape), + @(self.videoSizeRespectingAspectRatio)]; for (NSObject *value in values) { hash ^= value.hash; @@ -298,7 +349,8 @@ - (BOOL)isEqual:(id)other { object.videoMinBitRate == self.videoMinBitRate && [object.avSessionPreset isEqualToString:self.avSessionPreset] && object.sessionPreset == self.sessionPreset && - object.landscape == self.landscape; + object.landscape == self.landscape && + object.videoSizeRespectingAspectRatio == self.videoSizeRespectingAspectRatio; } } @@ -311,6 +363,7 @@ - (NSString *)description { NSMutableString *desc = @"".mutableCopy; [desc appendFormat:@"", self]; [desc appendFormat:@" videoSize:%@", NSStringFromCGSize(self.videoSize)]; + [desc appendFormat:@" videoSizeRespectingAspectRatio:%zi",self.videoSizeRespectingAspectRatio]; [desc appendFormat:@" videoFrameRate:%zi", self.videoFrameRate]; [desc appendFormat:@" videoMaxFrameRate:%zi", self.videoMaxFrameRate]; [desc appendFormat:@" videoMinFrameRate:%zi", self.videoMinFrameRate]; diff --git a/LFLiveKit/objects/LFLiveStreamInfo.h b/LFLiveKit/objects/LFLiveStreamInfo.h index 3d917df1..bd6eb873 100755 --- a/LFLiveKit/objects/LFLiveStreamInfo.h +++ b/LFLiveKit/objects/LFLiveStreamInfo.h @@ -45,6 +45,7 @@ typedef NS_ENUM (NSUInteger, LFLiveSocketErrorCode) { @property (nonatomic, strong) LFLiveAudioConfiguration *audioConfiguration; ///视频配置 @property (nonatomic, strong) LFLiveVideoConfiguration *videoConfiguration; - +///是否丢帧 +@property (nonatomic, assign) BOOL needDropFrame; @end diff --git a/LFLiveKit/publish/LFStreamRTMPSocket.m b/LFLiveKit/publish/LFStreamRTMPSocket.m index 46e0f035..a406e074 100644 --- a/LFLiveKit/publish/LFStreamRTMPSocket.m +++ b/LFLiveKit/publish/LFStreamRTMPSocket.m @@ -69,13 +69,17 @@ @interface LFStreamRTMPSocket () @implementation LFStreamRTMPSocket #pragma mark -- LFStreamSocket -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount { +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream{ + return [self initWithStream:stream reconnectInterval:0 reconnectCount:0]; +} + +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount{ if (!stream) @throw [NSException exceptionWithName:@"LFStreamRtmpSocket init error" reason:@"stream is nil" userInfo:nil]; if (self = [super init]) { _stream = stream; if (reconnectInterval > 0) _reconnectInterval = reconnectInterval; else _reconnectInterval = RetryTimesMargin; - + if (reconnectCount > 0) _reconnectCount = reconnectCount; else _reconnectCount = RetryTimesBreaken; @@ -534,6 +538,7 @@ - (LFStreamingBuffer *)buffer { if (!_buffer) { _buffer = [[LFStreamingBuffer alloc] init]; _buffer.delegate = self; + _buffer.needDropFrame = self.stream.needDropFrame; } return _buffer; } diff --git a/LFLiveKit/publish/LFStreamSocket.h b/LFLiveKit/publish/LFStreamSocket.h index d25a0e59..dd7ae3c8 100644 --- a/LFLiveKit/publish/LFStreamSocket.h +++ b/LFLiveKit/publish/LFStreamSocket.h @@ -32,6 +32,5 @@ - (void)setDelegate:(nullable id )delegate; @optional - (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream; -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize; -- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream videoSize:(CGSize)videoSize reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount; +- (nullable instancetype)initWithStream:(nullable LFLiveStreamInfo *)stream reconnectInterval:(NSInteger)reconnectInterval reconnectCount:(NSInteger)reconnectCount; @end diff --git a/LFLiveKit/publish/LFStreamingBuffer.h b/LFLiveKit/publish/LFStreamingBuffer.h index 585a269b..0af34cb4 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.h +++ b/LFLiveKit/publish/LFStreamingBuffer.h @@ -27,6 +27,9 @@ typedef NS_ENUM (NSUInteger, LFLiveBuffferState) { @interface LFStreamingBuffer : NSObject +/** The needDropFrame control Dynamic frame loss ,default is YES */ +@property (nonatomic, assign) BOOL needDropFrame; + /** The delegate of the buffer. buffer callback */ @property (nullable, nonatomic, weak) id delegate; diff --git a/LFLiveKit/publish/LFStreamingBuffer.m b/LFLiveKit/publish/LFStreamingBuffer.m index 3c11264e..9af426e0 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.m +++ b/LFLiveKit/publish/LFStreamingBuffer.m @@ -41,6 +41,7 @@ - (instancetype)init { self.maxCount = defaultSendBufferMaxCount; self.lastDropFrames = 0; self.startTimer = NO; + self.needDropFrame = YES; } return self; } @@ -91,21 +92,26 @@ - (void)removeAllObject { - (void)removeExpireFrame { if (self.list.count < self.maxCount) return; - NSArray *pFrames = [self expirePFrames];///< 第一个P到第一个I之间的p帧 - self.lastDropFrames += [pFrames count]; - if (pFrames && pFrames.count > 0) { - [self.list removeObjectsInArray:pFrames]; - return; - } - - NSArray *iFrames = [self expireIFrames];///<  删除一个I帧(但一个I帧可能对应多个nal) - self.lastDropFrames += [iFrames count]; - if (iFrames) { - [self.list removeObjectsInArray:iFrames]; - return; + if(self.needDropFrame){ + NSArray *pFrames = [self expirePFrames];///< 第一个P到第一个I之间的p帧 + self.lastDropFrames += [pFrames count]; + if (pFrames && pFrames.count > 0) { + [self.list removeObjectsInArray:pFrames]; + return; + } + + NSArray *iFrames = [self expireIFrames];///<  删除一个I帧(但一个I帧可能对应多个nal) + self.lastDropFrames += [iFrames count]; + if (iFrames) { + [self.list removeObjectsInArray:iFrames]; + return; + } + + [self.list removeAllObjects]; + }else{ + [self.list lfPopFirstObject]; } - - [self.list removeAllObjects]; + } - (NSArray *)expirePFrames { diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index b6474eba578e95fd7292d5780f729f2f5d2120b9..5e623d04633b0903c846b162d158152d3ff3e3fa 100644 GIT binary patch literal 147711 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 z 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%0A?6|yMR<@x*n%_4&{!NuZUym%DV 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 diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index d2b29c58..0cb31a43 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -156,7 +156,7 @@ - (LFLiveSession *)session { /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Low2 landscape:NO]]; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Low2 landscape:NO] captureType:LFLiveCaptureDefaultMask]; /**   自己定制单声道 */ /* @@ -341,7 +341,7 @@ - (UIButton *)startLiveButton { if (_self.startLiveButton.selected) { [_self.startLiveButton setTitle:@"结束直播" forState:UIControlStateNormal]; LFLiveStreamInfo *stream = [LFLiveStreamInfo new]; - stream.url = @"rtmp://192.168.163.76:1935/test"; + stream.url = @"rtmp://live.hkstv.hk.lxdns.com:1935/live/stream153"; [_self.session startLive:stream]; } else { [_self.startLiveButton setTitle:@"开始直播" forState:UIControlStateNormal]; diff --git a/README.md b/README.md index 7343b0db..2b84dc70 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ LFLiveKit - [x] Support Send Buffer - [x] Support WaterMark - [x] Swift Support +- [x] Support Single Video or Audio +- [x] Support External input video or audio(Screen recording or Peripheral) - [ ] ~~FLV package and send~~ ## Requirements From e30467dc13a947570bcec1ca471960756ca1b3b6 Mon Sep 17 00:00:00 2001 From: chenliming Date: Thu, 11 Aug 2016 14:18:15 +0800 Subject: [PATCH 103/178] fix videoSizeRespectingAspectRatio show error --- .../configuration/LFLiveVideoConfiguration.h | 2 +- .../configuration/LFLiveVideoConfiguration.m | 32 +++++-------------- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/configuration/LFLiveVideoConfiguration.h index 6eb124b7..ef019b39 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.h +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.h @@ -60,7 +60,7 @@ typedef NS_ENUM (NSUInteger, LFLiveVideoQuality){ /// 视频的分辨率,宽高务必设定为 2 的倍数,否则解码播放时可能出现绿边(这个videoSizeRespectingAspectRatio设置为YES则可能会改变) @property (nonatomic, assign) CGSize videoSize; -/// 输出图像是否等比例,默认为YES +/// 输出图像是否等比例,默认为NO @property (nonatomic, assign) BOOL videoSizeRespectingAspectRatio; /// 视频输出方向 diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/configuration/LFLiveVideoConfiguration.m index d8f52318..2f441342 100755 --- a/LFLiveKit/configuration/LFLiveVideoConfiguration.m +++ b/LFLiveKit/configuration/LFLiveVideoConfiguration.m @@ -142,13 +142,6 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveVideoQuality)videoQuality } -- (instancetype)init{ - if(self = [super init]){ - _videoSizeRespectingAspectRatio = YES; - } - return self; -} - #pragma mark -- Setter Getter - (NSString *)avSessionPreset { NSString *avSessionPreset = nil; @@ -173,6 +166,12 @@ - (NSString *)avSessionPreset { return avSessionPreset; } +- (CGSize)videoSize{ + if(_videoSizeRespectingAspectRatio){ + return self.aspectRatioVideoSize; + } + return _videoSize; +} - (void)setVideoMaxBitRate:(NSUInteger)videoMaxBitRate { if (videoMaxBitRate <= _videoBitRate) return; @@ -199,21 +198,6 @@ - (void)setSessionPreset:(LFLiveVideoSessionPreset)sessionPreset{ _sessionPreset = [self supportSessionPreset:sessionPreset]; } -- (void)setVideoSize:(CGSize)videoSize{ - _videoSize = videoSize; - if(_videoSizeRespectingAspectRatio) _videoSize = self.aspectRatioVideoSize; -} - -- (void)setVideoSizeRespectingAspectRatio:(BOOL)videoSizeRespectingAspectRatio{ - _videoSizeRespectingAspectRatio = videoSizeRespectingAspectRatio; - if(_videoSizeRespectingAspectRatio) _videoSize = self.aspectRatioVideoSize; -} - -- (void)setLandscape:(BOOL)landscape{ - _landscape = landscape; - if(_videoSizeRespectingAspectRatio) _videoSize = self.aspectRatioVideoSize; -} - #pragma mark -- Custom Method - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessionPreset { AVCaptureSession *session = [[AVCaptureSession alloc] init]; @@ -245,7 +229,7 @@ - (LFLiveVideoSessionPreset)supportSessionPreset:(LFLiveVideoSessionPreset)sessi - (CGSize)captureOutVideoSize{ CGSize videoSize = CGSizeZero; - switch (self.sessionPreset) { + switch (_sessionPreset) { case LFCaptureSessionPreset360x640:{ videoSize = CGSizeMake(360, 640); } @@ -272,7 +256,7 @@ - (CGSize)captureOutVideoSize{ } - (CGSize)aspectRatioVideoSize{ - CGSize size = AVMakeRectWithAspectRatioInsideRect(self.captureOutVideoSize, CGRectMake(0, 0, self.videoSize.width, self.videoSize.height)).size; + CGSize size = AVMakeRectWithAspectRatioInsideRect(self.captureOutVideoSize, CGRectMake(0, 0, _videoSize.width, _videoSize.height)).size; NSInteger width = ceil(size.width); NSInteger height = ceil(size.height); if(width %2 != 0) width = width - 1; From ae5f68661e512efb9e72aabbad197b6aa42e3a94 Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 12 Aug 2016 21:06:42 +0800 Subject: [PATCH 104/178] update version --- LFLiveKit.podspec | 2 +- LFLiveKit/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 553b6a30..9e379473 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "2.0" + s.version = "2.1" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index dfb64922..dd01cf0f 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.0 + 2.1 CFBundleSignature ???? CFBundleVersion From cf2fc51fea642be708775820d8e77429abd4c2d9 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 15 Aug 2016 20:25:41 +0800 Subject: [PATCH 105/178] add build sh --- LFLiveKit.xcodeproj/project.pbxproj | 69 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 20476 -> 21260 bytes .../xcschemes/xcschememanagement.plist | 10 +++ scripts/build-universal-framework.sh | 31 ++++++++ 4 files changed, 110 insertions(+) create mode 100755 scripts/build-universal-framework.sh diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj index cdbe0daa..e9d8ebea 100644 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit.xcodeproj/project.pbxproj @@ -6,6 +6,21 @@ objectVersion = 46; objects = { +/* Begin PBXAggregateTarget section */ + 84C329DE1D61EB0C00984B01 /* LFLiveKit-universal */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 84C329E11D61EB0C00984B01 /* Build configuration list for PBXAggregateTarget "LFLiveKit-universal" */; + buildPhases = ( + 84C329E41D61EB1B00984B01 /* ShellScript */, + ); + dependencies = ( + 84C329E31D61EB1600984B01 /* PBXTargetDependency */, + ); + name = "LFLiveKit-universal"; + productName = "LFLiveKit-universal"; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; @@ -436,6 +451,13 @@ remoteGlobalIDString = 84001F891D0015D10026C63F; remoteInfo = LFLiveKit; }; + 84C329E21D61EB1600984B01 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84001F811D0015D10026C63F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 84001F891D0015D10026C63F; + remoteInfo = LFLiveKit; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -1731,6 +1753,9 @@ 84001F931D0015D10026C63F = { CreatedOnToolsVersion = 7.3; }; + 84C329DE1D61EB0C00984B01 = { + CreatedOnToolsVersion = 7.3; + }; }; }; buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; @@ -1747,6 +1772,7 @@ targets = ( 84001F891D0015D10026C63F /* LFLiveKit */, 84001F931D0015D10026C63F /* LFLiveKitTests */, + 84C329DE1D61EB0C00984B01 /* LFLiveKit-universal */, ); }; /* End PBXProject section */ @@ -1768,6 +1794,22 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 84C329E41D61EB1B00984B01 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "./scripts/build-universal-framework.sh"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 84001F851D0015D10026C63F /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -1993,6 +2035,11 @@ target = 84001F891D0015D10026C63F /* LFLiveKit */; targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; }; + 84C329E31D61EB1600984B01 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 84001F891D0015D10026C63F /* LFLiveKit */; + targetProxy = 84C329E21D61EB1600984B01 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -2190,6 +2237,20 @@ }; name = Release; }; + 84C329DF1D61EB0C00984B01 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 84C329E01D61EB0C00984B01 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -2220,6 +2281,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 84C329E11D61EB0C00984B01 /* Build configuration list for PBXAggregateTarget "LFLiveKit-universal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84C329DF1D61EB0C00984B01 /* Debug */, + 84C329E01D61EB0C00984B01 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; /* End XCConfigurationList section */ }; rootObject = 84001F811D0015D10026C63F /* Project object */; diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index ac7366d342ec1644382ba271b700d39bad639118..bc218d8af68eec92a6fea16bde192b17a962da2b 100644 GIT binary patch delta 12156 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 i3(gD8i_7blSCTh0ugZICb$tl7^ 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 Xe?A`v&U6$_xBRl3T7KKU^QZkEB*vW# diff --git a/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist index 28561724..32d181b6 100644 --- a/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,6 +4,11 @@ SchemeUserState + LFLiveKit-universal.xcscheme + + orderHint + 1 + LFLiveKit.xcscheme_^#shared#^_ orderHint @@ -22,6 +27,11 @@ primary + 84C329DE1D61EB0C00984B01 + + primary + + diff --git a/scripts/build-universal-framework.sh b/scripts/build-universal-framework.sh new file mode 100755 index 00000000..01b94432 --- /dev/null +++ b/scripts/build-universal-framework.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +UNIVERSAL_OUTPUT_FOLDER="${PROJECT_DIR}/build/" + +# make the output directory and delete the framework directory +mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}" +rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}.framework" + +# Step 1. Build Device and Simulator versions +xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build +xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build + +# Step 2. Copy the framework structure to the universal folder +echo "==============Step 2==============" +echo "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" + +cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}/" + +# Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory +lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}" + +echo "==============Completion==============" +echo "${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" + +# Step 4. Copy strings bundle if exists +STRINGS_INPUT_FOLDER="${PROJECT_NAME}Strings.bundle" +if [ -d "${STRINGS_INPUT_FOLDER}" ]; then + STRINGS_OUTPUT_FOLDER="${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}Strings.bundle" + rm -rf "${STRINGS_OUTPUT_FOLDER}" + cp -R "${STRINGS_INPUT_FOLDER}" "${STRINGS_OUTPUT_FOLDER}" +fi From 8acddcda905f7caf448a871493a64627cf7147a9 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 16 Aug 2016 13:51:04 +0800 Subject: [PATCH 106/178] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E6=8A=96=E5=8A=A8=E6=A8=A1=E7=B3=8A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/coder/LFHardwareVideoEncoder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/coder/LFHardwareVideoEncoder.m index e44d4e19..4f581a9b 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -102,7 +102,7 @@ - (void)encodeVideoData:(CVPixelBufferRef)pixelBuffer timeStamp:(uint64_t)timeSt if (_isBackGround) return; frameCount++; - CMTime presentationTimeStamp = CMTimeMake(frameCount, 1000); + CMTime presentationTimeStamp = CMTimeMake(frameCount, 1); VTEncodeInfoFlags flags; CMTime duration = CMTimeMake(1, (int32_t)_configuration.videoFrameRate); From 336a6e24325feefae9fbfa02d107d4ceb170b896 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 16 Aug 2016 17:18:29 +0800 Subject: [PATCH 107/178] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E6=8A=96=E5=8A=A8=E6=A8=A1=E7=B3=8A=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?,presentationTimeStamp=E6=A0=B9=E6=8D=AE=E5=B8=A7=E7=8E=87?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/coder/LFHardwareVideoEncoder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/coder/LFHardwareVideoEncoder.m index 4f581a9b..454cc071 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -102,7 +102,7 @@ - (void)encodeVideoData:(CVPixelBufferRef)pixelBuffer timeStamp:(uint64_t)timeSt if (_isBackGround) return; frameCount++; - CMTime presentationTimeStamp = CMTimeMake(frameCount, 1); + CMTime presentationTimeStamp = CMTimeMake(frameCount, (int32_t)_configuration.videoFrameRate); VTEncodeInfoFlags flags; CMTime duration = CMTimeMake(1, (int32_t)_configuration.videoFrameRate); From 58d83ed0dc44f0b2e1783cc2c545e6e9b0efa4de Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 16 Aug 2016 18:09:42 +0800 Subject: [PATCH 108/178] modify capture sessionPreset(1280X720) bug set videoSize 360 640 --- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 0cb31a43..3ce22628 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -156,7 +156,16 @@ - (LFLiveSession *)session { /***  默认分辨率368 * 640 音频:44.1 iphone6以上48 双声道 方向竖屏 ***/ - _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfigurationForQuality:LFLiveVideoQuality_Low2 landscape:NO] captureType:LFLiveCaptureDefaultMask]; + LFLiveVideoConfiguration *videoConfiguration = [LFLiveVideoConfiguration new]; + videoConfiguration.videoSize = CGSizeMake(360, 640); + videoConfiguration.videoBitRate = 800*1024; + videoConfiguration.videoMaxBitRate = 1000*1024; + videoConfiguration.videoMinBitRate = 500*1024; + videoConfiguration.videoFrameRate = 24; + videoConfiguration.videoMaxKeyframeInterval = 48; + videoConfiguration.landscape = NO; + videoConfiguration.sessionPreset = LFCaptureSessionPreset720x1280; + _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:videoConfiguration captureType:LFLiveCaptureDefaultMask]; /**   自己定制单声道 */ /* From ecf3b557cf58e18ac26b74b0ae4cadb45d584d1b Mon Sep 17 00:00:00 2001 From: chenliming Date: Fri, 19 Aug 2016 16:01:17 +0800 Subject: [PATCH 109/178] fix memory leak --- LFLiveKit/capture/LFVideoCapture.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index f979e4c7..9e316c46 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -54,6 +54,10 @@ - (void)dealloc { [UIApplication sharedApplication].idleTimerDisabled = NO; [[NSNotificationCenter defaultCenter] removeObserver:self]; [self.videoCamera stopCameraCapture]; + if(self.gpuImageView){ + [self.gpuImageView removeFromSuperview]; + self.gpuImageView = nil; + } } #pragma mark -- Setter Getter From 7799f0f613a62e8bfbd8e5d41a2d1c6a93c9995a Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 22 Aug 2016 21:10:23 +0800 Subject: [PATCH 110/178] fix bug https://github.com/LaiFengiOS/LFLiveKit/issues/60 --- LFLiveKit/capture/LFAudioCapture.m | 62 ++++++++---------- LFLiveKit/coder/LFHardwareAudioEncoder.m | 57 ++++++++++++++--- .../configuration/LFLiveAudioConfiguration.h | 14 +++-- .../configuration/LFLiveAudioConfiguration.m | 63 +++---------------- 4 files changed, 94 insertions(+), 102 deletions(-) diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index df32b488..3238f2e2 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -25,54 +25,45 @@ @interface LFAudioCapture () @implementation LFAudioCapture #pragma mark -- LiftCycle -- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configuration { - if (self = [super init]) { +- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configuration{ + if(self = [super init]){ _configuration = configuration; self.isRunning = NO; self.taskQueue = dispatch_queue_create("com.youku.Laifeng.audioCapture.Queue", NULL); - + AVAudioSession *session = [AVAudioSession sharedInstance]; - [session setActive:YES error:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(handleRouteChange:) - name:AVAudioSessionRouteChangeNotification - object:session]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(handleInterruption:) - name:AVAudioSessionInterruptionNotification - object:session]; - - NSError *error = nil; - - [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; - [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; - - if (![session setActive:YES error:&error]) { - [self handleAudioComponentCreationFailure]; - } - + + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(handleRouteChange:) + name: AVAudioSessionRouteChangeNotification + object: session]; + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(handleInterruption:) + name: AVAudioSessionInterruptionNotification + object: session]; + AudioComponentDescription acd; acd.componentType = kAudioUnitType_Output; acd.componentSubType = kAudioUnitSubType_VoiceProcessingIO; + //acd.componentSubType = kAudioUnitSubType_RemoteIO; acd.componentManufacturer = kAudioUnitManufacturer_Apple; acd.componentFlags = 0; acd.componentFlagsMask = 0; - + self.component = AudioComponentFindNext(NULL, &acd); - + OSStatus status = noErr; status = AudioComponentInstanceNew(self.component, &_componetInstance); - + if (noErr != status) { [self handleAudioComponentCreationFailure]; } - + UInt32 flagOne = 1; - + AudioUnitSetProperty(self.componetInstance, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &flagOne, sizeof(flagOne)); - + AudioStreamBasicDescription desc = {0}; desc.mSampleRate = _configuration.audioSampleRate; desc.mFormatID = kAudioFormatLinearPCM; @@ -82,22 +73,23 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura desc.mBitsPerChannel = 16; desc.mBytesPerFrame = desc.mBitsPerChannel / 8 * desc.mChannelsPerFrame; desc.mBytesPerPacket = desc.mBytesPerFrame * desc.mFramesPerPacket; - + AURenderCallbackStruct cb; cb.inputProcRefCon = (__bridge void *)(self); cb.inputProc = handleInputBuffer; AudioUnitSetProperty(self.componetInstance, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &desc, sizeof(desc)); AudioUnitSetProperty(self.componetInstance, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, 1, &cb, sizeof(cb)); - + status = AudioUnitInitialize(self.componetInstance); - + if (noErr != status) { [self handleAudioComponentCreationFailure]; } - + [session setPreferredSampleRate:_configuration.audioSampleRate error:nil]; - - + [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:nil]; + [session setActive:YES withOptions:kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation error:nil]; + [session setActive:YES error:nil]; } return self; diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.m b/LFLiveKit/coder/LFHardwareAudioEncoder.m index 5511d030..78e21784 100755 --- a/LFLiveKit/coder/LFHardwareAudioEncoder.m +++ b/LFLiveKit/coder/LFHardwareAudioEncoder.m @@ -11,6 +11,8 @@ @interface LFHardwareAudioEncoder (){ AudioConverterRef m_converter; char *aacBuf; + char *leftBuf; + NSInteger leftLength; } @property (nonatomic, strong) LFLiveAudioConfiguration *configuration; @property (nonatomic, weak) id aacDeleage; @@ -23,12 +25,20 @@ - (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)con if (self = [super init]) { NSLog(@"USE LFHardwareAudioEncoder"); _configuration = configuration; + if (!leftBuf) { + leftBuf = malloc(_configuration.bufferLength); + } + + if (!aacBuf) { + aacBuf = malloc(_configuration.bufferLength); + } } return self; } - (void)dealloc { if (aacBuf) free(aacBuf); + if (leftBuf) free(leftBuf); } #pragma mark -- LFAudioEncoder @@ -40,25 +50,58 @@ - (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeSt if (![self createAudioConvert]) { return; } - - if (!aacBuf) { - aacBuf = malloc(inBufferList.mBuffers[0].mDataByteSize); + + AudioBuffer inBuffer = inBufferList.mBuffers[0]; + + if(leftLength + inBuffer.mDataByteSize >= _configuration.bufferLength){ + ///<  发送 + char *sendBuf = malloc(_configuration.bufferLength); + memset(sendBuf, 0, _configuration.bufferLength); + memcpy(sendBuf, leftBuf, leftLength); + memcpy(sendBuf + leftLength, inBuffer.mData, _configuration.bufferLength - leftLength); + inBuffer.mDataByteSize = (UInt32)_configuration.bufferLength; + + + [self encodeBuffer:sendBuf timeStamp:timeStamp]; + free(sendBuf); + + memset(leftBuf, 0, _configuration.bufferLength); + memcpy(leftBuf, inBuffer.mData + (_configuration.bufferLength - leftLength), inBuffer.mDataByteSize - (_configuration.bufferLength - leftLength)); + leftLength = inBuffer.mDataByteSize - (_configuration.bufferLength - leftLength); + + }else{ + ///< 积累 + memcpy(leftBuf+leftLength, inBuffer.mData, inBuffer.mDataByteSize); + leftLength = leftLength + inBuffer.mDataByteSize; } +} +- (void)encodeBuffer:(char*)buf timeStamp:(uint64_t)timeStamp{ + + AudioBuffer inBuffer; + inBuffer.mNumberChannels = 1; + inBuffer.mData = buf; + inBuffer.mDataByteSize = (UInt32)_configuration.bufferLength; + + AudioBufferList buffers; + buffers.mNumberBuffers = 1; + buffers.mBuffers[0] = inBuffer; + // 初始化一个输出缓冲列表 AudioBufferList outBufferList; outBufferList.mNumberBuffers = 1; - outBufferList.mBuffers[0].mNumberChannels = inBufferList.mBuffers[0].mNumberChannels; - outBufferList.mBuffers[0].mDataByteSize = inBufferList.mBuffers[0].mDataByteSize; // 设置缓冲区大小 + outBufferList.mBuffers[0].mNumberChannels = inBuffer.mNumberChannels; + outBufferList.mBuffers[0].mDataByteSize = inBuffer.mDataByteSize; // 设置缓冲区大小 outBufferList.mBuffers[0].mData = aacBuf; // 设置AAC缓冲区 UInt32 outputDataPacketSize = 1; - if (AudioConverterFillComplexBuffer(m_converter, inputDataProc, &inBufferList, &outputDataPacketSize, &outBufferList, NULL) != noErr) { + if (AudioConverterFillComplexBuffer(m_converter, inputDataProc, &buffers, &outputDataPacketSize, &outBufferList, NULL) != noErr) { return; } + LFAudioFrame *audioFrame = [LFAudioFrame new]; audioFrame.timestamp = timeStamp; audioFrame.data = [NSData dataWithBytes:aacBuf length:outBufferList.mBuffers[0].mDataByteSize]; - + char exeData[2]; exeData[0] = _configuration.asc[0]; exeData[1] = _configuration.asc[1]; diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.h b/LFLiveKit/configuration/LFLiveAudioConfiguration.h index d232bbe1..e7fbe7f3 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.h +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.h @@ -22,7 +22,7 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioBitRate) { LFLiveAudioBitRate_Default = LFLiveAudioBitRate_64Kbps }; -/// 采样率 (默认44.1Hz iphoneg6以上48Hz) +/// 采样率 (默认44.1Hz) typedef NS_ENUM (NSUInteger, LFLiveAudioSampleRate){ /// 44.1Hz 采样率 LFLiveAudioSampleRate_44100Hz = 44100, @@ -34,15 +34,15 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioSampleRate){ /// Audio Live quality(音频质量) typedef NS_ENUM (NSUInteger, LFLiveAudioQuality){ - /// 高音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 32Kbps + /// 高音频质量 audio sample rate: 44MHz audio bitrate: 32Kbps LFLiveAudioQuality_Low = 0, - /// 高音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 64Kbps + /// 高音频质量 audio sample rate: 44MHz audio bitrate: 64Kbps LFLiveAudioQuality_Medium = 1, - /// 高音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 96Kbps + /// 高音频质量 audio sample rate: 44MHz audio bitrate: 96Kbps LFLiveAudioQuality_High = 2, - /// 高音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 128Kbps + /// 高音频质量 audio sample rate: 44MHz, audio bitrate: 128Kbps LFLiveAudioQuality_VeryHigh = 3, - /// 默认音频质量 audio sample rate: 44MHz(默认44.1Hz iphoneg6以上48Hz), audio bitrate: 64Kbps + /// 默认音频质量 audio sample rate: 44MHz, audio bitrate: 64Kbps LFLiveAudioQuality_Default = LFLiveAudioQuality_Medium }; @@ -59,6 +59,8 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioQuality){ ///============================================================================= /// 声道数目(default 2) @property (nonatomic, assign) NSUInteger numberOfChannels; +/// 缓存区长度 +@property (nonatomic, assign) NSUInteger bufferLength; /// 采样率 @property (nonatomic, assign) LFLiveAudioSampleRate audioSampleRate; // 码率 diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.m b/LFLiveKit/configuration/LFLiveAudioConfiguration.m index 817fdd7a..7f5066f1 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.m +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.m @@ -24,21 +24,23 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveAudioQuality)audioQuality case LFLiveAudioQuality_Default: { audioConfig.audioBitrate = LFLiveAudioBitRate_64Kbps; } - break; + break; case LFLiveAudioQuality_Low: { audioConfig.audioBitrate = LFLiveAudioBitRate_32Kbps; } + break; case LFLiveAudioQuality_High: { audioConfig.audioBitrate = LFLiveAudioBitRate_96Kbps; } + break; case LFLiveAudioQuality_VeryHigh: { audioConfig.audioBitrate = LFLiveAudioBitRate_128Kbps; } - break; + break; default: break; } - audioConfig.audioSampleRate = [self.class isNewThaniPhone6] ? LFLiveAudioSampleRate_48000Hz : LFLiveAudioSampleRate_44100Hz; + audioConfig.audioSampleRate = LFLiveAudioSampleRate_44100Hz; return audioConfig; } @@ -69,6 +71,10 @@ - (void)setNumberOfChannels:(NSUInteger)numberOfChannels { self.asc[1] = ((sampleRateIndex & 0x1)<<7) | ((numberOfChannels & 0xF) << 3); } +- (NSUInteger)bufferLength{ + return 1024*2*self.numberOfChannels; +} + #pragma mark -- CustomMethod - (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { NSInteger sampleRateIndex = 0; @@ -118,57 +124,6 @@ - (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { return sampleRateIndex; } -#pragma mark -- DeviceCategory -+ (NSString *)deviceName { - struct utsname systemInfo; - uname(&systemInfo); - - return [NSString stringWithCString:systemInfo.machine - encoding:NSUTF8StringEncoding]; -} - -//@"iPad4,1" on 5th Generation iPad (iPad Air) - Wifi -//@"iPad4,2" on 5th Generation iPad (iPad Air) - Cellular -//@"iPad4,4" on 2nd Generation iPad Mini - Wifi -//@"iPad4,5" on 2nd Generation iPad Mini - Cellular -//@"iPad4,7" on 3rd Generation iPad Mini - Wifi (model A1599) -//@"iPhone7,1" on iPhone 6 Plus -//@"iPhone7,2" on iPhone 6 -//@"iPhone8,1" on iPhone 6S -//@"iPhone8,2" on iPhone 6S Plus - -+ (BOOL)isNewThaniPhone6 { - NSString *device = [self deviceName]; - NSLog(@"device %@", device); - if (device == nil) { - return NO; - } - NSArray *array = [device componentsSeparatedByString:@","]; - if (array.count < 2) { - return NO; - } - NSString *model = [array objectAtIndex:0]; - NSLog(@"model %@", model); - if ([model hasPrefix:@"iPhone"]) { - NSString *str1 = [model substringFromIndex:[@"iPhone" length]]; - NSUInteger num = [str1 integerValue]; - NSLog(@"num %lu", (unsigned long)num); - if (num > 7) { - return YES; - } - } - - if ([model hasPrefix:@"iPad"]) { - NSString *str1 = [model substringFromIndex:[@"iPad" length]]; - NSUInteger num = [str1 integerValue]; - if (num > 4) { - return YES; - } - } - - return NO; -} - #pragma mark -- Encoder - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:@(self.numberOfChannels) forKey:@"numberOfChannels"]; From c624fbe78cfce35d892e43566625268cc8d27d77 Mon Sep 17 00:00:00 2001 From: chenliming Date: Wed, 24 Aug 2016 14:25:27 +0800 Subject: [PATCH 111/178] iphone6 after audio 48000 --- .../configuration/LFLiveAudioConfiguration.m | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.m b/LFLiveKit/configuration/LFLiveAudioConfiguration.m index 7f5066f1..ece2e7ee 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.m +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.m @@ -40,7 +40,7 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveAudioQuality)audioQuality default: break; } - audioConfig.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + audioConfig.audioSampleRate = [self.class isNewThaniPhone6] ? LFLiveAudioSampleRate_48000Hz : LFLiveAudioSampleRate_44100Hz; return audioConfig; } @@ -124,6 +124,57 @@ - (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { return sampleRateIndex; } +#pragma mark -- DeviceCategory ++ (NSString *)deviceName { + struct utsname systemInfo; + uname(&systemInfo); + + return [NSString stringWithCString:systemInfo.machine + encoding:NSUTF8StringEncoding]; +} + +//@"iPad4,1" on 5th Generation iPad (iPad Air) - Wifi +//@"iPad4,2" on 5th Generation iPad (iPad Air) - Cellular +//@"iPad4,4" on 2nd Generation iPad Mini - Wifi +//@"iPad4,5" on 2nd Generation iPad Mini - Cellular +//@"iPad4,7" on 3rd Generation iPad Mini - Wifi (model A1599) +//@"iPhone7,1" on iPhone 6 Plus +//@"iPhone7,2" on iPhone 6 +//@"iPhone8,1" on iPhone 6S +//@"iPhone8,2" on iPhone 6S Plus + ++ (BOOL)isNewThaniPhone6 { + NSString *device = [self deviceName]; + NSLog(@"device %@", device); + if (device == nil) { + return NO; + } + NSArray *array = [device componentsSeparatedByString:@","]; + if (array.count < 2) { + return NO; + } + NSString *model = [array objectAtIndex:0]; + NSLog(@"model %@", model); + if ([model hasPrefix:@"iPhone"]) { + NSString *str1 = [model substringFromIndex:[@"iPhone" length]]; + NSUInteger num = [str1 integerValue]; + NSLog(@"num %lu", (unsigned long)num); + if (num > 7) { + return YES; + } + } + + if ([model hasPrefix:@"iPad"]) { + NSString *str1 = [model substringFromIndex:[@"iPad" length]]; + NSUInteger num = [str1 integerValue]; + if (num > 4) { + return YES; + } + } + + return NO; +} + #pragma mark -- Encoder - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:@(self.numberOfChannels) forKey:@"numberOfChannels"]; From fa10e2828110afd90e00135896e253bfa5fc7cd1 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 29 Aug 2016 17:58:58 +0800 Subject: [PATCH 112/178] =?UTF-8?q?Support=20sampling=20rate=2016K=20Modif?= =?UTF-8?q?y=2044.1K=20iphone6s=20sound=20problem=20Add=20a=20local=20reco?= =?UTF-8?q?rd=20sound=EF=BC=88aac=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LFLiveKit/capture/LFAudioCapture.m | 8 +- LFLiveKit/coder/LFHardwareAudioEncoder.m | 164 +++++++++++++----- .../configuration/LFLiveAudioConfiguration.h | 24 +-- .../configuration/LFLiveAudioConfiguration.m | 75 ++------ 4 files changed, 156 insertions(+), 115 deletions(-) diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index 3238f2e2..681a9c44 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -45,8 +45,8 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura AudioComponentDescription acd; acd.componentType = kAudioUnitType_Output; - acd.componentSubType = kAudioUnitSubType_VoiceProcessingIO; - //acd.componentSubType = kAudioUnitSubType_RemoteIO; + //acd.componentSubType = kAudioUnitSubType_VoiceProcessingIO; + acd.componentSubType = kAudioUnitSubType_RemoteIO; acd.componentManufacturer = kAudioUnitManufacturer_Apple; acd.componentFlags = 0; acd.componentFlagsMask = 0; @@ -87,7 +87,7 @@ - (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)configura } [session setPreferredSampleRate:_configuration.audioSampleRate error:nil]; - [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:nil]; + [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers error:nil]; [session setActive:YES withOptions:kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation error:nil]; [session setActive:YES error:nil]; @@ -116,7 +116,7 @@ - (void)setRunning:(BOOL)running { dispatch_async(self.taskQueue, ^{ self.isRunning = YES; NSLog(@"MicrophoneSource: startRunning"); - [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; + [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers error:nil]; AudioOutputUnitStart(self.componetInstance); }); } else { diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.m b/LFLiveKit/coder/LFHardwareAudioEncoder.m index 78e21784..1f6cc694 100755 --- a/LFLiveKit/coder/LFHardwareAudioEncoder.m +++ b/LFLiveKit/coder/LFHardwareAudioEncoder.m @@ -10,9 +10,11 @@ @interface LFHardwareAudioEncoder (){ AudioConverterRef m_converter; - char *aacBuf; char *leftBuf; + char *aacBuf; NSInteger leftLength; + FILE *fp; + BOOL enabledWriteVideoFile; } @property (nonatomic, strong) LFLiveAudioConfiguration *configuration; @property (nonatomic, weak) id aacDeleage; @@ -25,6 +27,7 @@ - (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)con if (self = [super init]) { NSLog(@"USE LFHardwareAudioEncoder"); _configuration = configuration; + if (!leftBuf) { leftBuf = malloc(_configuration.bufferLength); } @@ -32,6 +35,12 @@ - (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)con if (!aacBuf) { aacBuf = malloc(_configuration.bufferLength); } + + +#ifdef DEBUG + enabledWriteVideoFile = NO; + [self initForFilePath]; +#endif } return self; } @@ -50,24 +59,30 @@ - (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeSt if (![self createAudioConvert]) { return; } - + AudioBuffer inBuffer = inBufferList.mBuffers[0]; - if(leftLength + inBuffer.mDataByteSize >= _configuration.bufferLength){ + + if(leftLength + inBuffer.mDataByteSize >= self.configuration.bufferLength){ ///<  发送 - char *sendBuf = malloc(_configuration.bufferLength); - memset(sendBuf, 0, _configuration.bufferLength); - memcpy(sendBuf, leftBuf, leftLength); - memcpy(sendBuf + leftLength, inBuffer.mData, _configuration.bufferLength - leftLength); - inBuffer.mDataByteSize = (UInt32)_configuration.bufferLength; + NSInteger totalSize = leftLength + inBuffer.mDataByteSize; + NSInteger encodeCount = totalSize/self.configuration.bufferLength; + char *totalBuf = malloc(totalSize); + char *p = totalBuf; + memset(totalBuf, totalSize, 0); + memcpy(totalBuf, leftBuf, leftLength); + memcpy(totalBuf + leftLength, inBuffer.mData, inBuffer.mDataByteSize); - [self encodeBuffer:sendBuf timeStamp:timeStamp]; - free(sendBuf); + for(NSInteger index = 0;index < encodeCount;index++){ + [self encodeBuffer:p timeStamp:timeStamp]; + p += self.configuration.bufferLength; + } + free(totalBuf); - memset(leftBuf, 0, _configuration.bufferLength); - memcpy(leftBuf, inBuffer.mData + (_configuration.bufferLength - leftLength), inBuffer.mDataByteSize - (_configuration.bufferLength - leftLength)); - leftLength = inBuffer.mDataByteSize - (_configuration.bufferLength - leftLength); + leftLength = totalSize%self.configuration.bufferLength; + memset(leftBuf, 0, self.configuration.bufferLength); + memcpy(leftBuf, totalBuf + (totalSize -leftLength), leftLength); }else{ ///< 积累 @@ -81,11 +96,12 @@ - (void)encodeBuffer:(char*)buf timeStamp:(uint64_t)timeStamp{ AudioBuffer inBuffer; inBuffer.mNumberChannels = 1; inBuffer.mData = buf; - inBuffer.mDataByteSize = (UInt32)_configuration.bufferLength; + inBuffer.mDataByteSize = (UInt32)self.configuration.bufferLength; AudioBufferList buffers; buffers.mNumberBuffers = 1; buffers.mBuffers[0] = inBuffer; + // 初始化一个输出缓冲列表 AudioBufferList outBufferList; @@ -109,6 +125,13 @@ - (void)encodeBuffer:(char*)buf timeStamp:(uint64_t)timeStamp{ if (self.aacDeleage && [self.aacDeleage respondsToSelector:@selector(audioEncoder:audioFrame:)]) { [self.aacDeleage audioEncoder:self audioFrame:audioFrame]; } + + if (self->enabledWriteVideoFile) { + NSData *adts = [self adtsData:_configuration.numberOfChannels rawDataLength:audioFrame.data.length]; + fwrite(adts.bytes, 1, adts.length, self->fp); + fwrite(audioFrame.data.bytes, 1, audioFrame.data.length, self->fp); + } + } - (void)stopEncoder { @@ -151,36 +174,25 @@ - (BOOL)createAudioConvert { //根据输入样本初始化一个编码转换器 kAppleHardwareAudioCodecManufacturer } }; - OSStatus result = AudioConverterNewSpecific(&inputFormat, &outputFormat, 2, requestedCodecs, &m_converter); - if (result != noErr) return NO; - - return YES; -} - -- (AudioClassDescription *)getAudioClassDescriptionWithType:(UInt32)type fromManufacturer:(UInt32)manufacturer { // 获得相应的编码器 - static AudioClassDescription audioDesc; - - UInt32 encoderSpecifier = type, size = 0; - OSStatus status; + + OSStatus result = AudioConverterNewSpecific(&inputFormat, &outputFormat, 2, requestedCodecs, &m_converter);; + UInt32 outputBitrate = _configuration.audioBitrate; + UInt32 propSize = sizeof(outputBitrate); + UInt32 outputPacketSize = 0; - memset(&audioDesc, 0, sizeof(audioDesc)); - status = AudioFormatGetPropertyInfo(kAudioFormatProperty_Encoders, sizeof(encoderSpecifier), &encoderSpecifier, &size); - if (status) { - return nil; + + if(result == noErr) { + result = AudioConverterSetProperty(m_converter, kAudioConverterEncodeBitRate, propSize, &outputBitrate); } - - uint32_t count = size / sizeof(AudioClassDescription); - AudioClassDescription descs[count]; - AudioFormatGetProperty(kAudioFormatProperty_Encoders, sizeof(encoderSpecifier), &encoderSpecifier, &size, descs); - for (uint32_t i = 0; i < count; i++) { - if ((type == descs[i].mSubType) && (manufacturer == descs[i].mManufacturer)) { - memcpy(&audioDesc, &descs[i], sizeof(audioDesc)); - break; - } + + if(result == noErr) { + result = AudioConverterGetProperty(m_converter, kAudioConverterPropertyMaximumOutputPacketSize, &propSize, &outputPacketSize); } - return &audioDesc; + + return YES; } + #pragma mark -- AudioCallBack OSStatus inputDataProc(AudioConverterRef inConverter, UInt32 *ioNumberDataPackets, AudioBufferList *ioData, AudioStreamPacketDescription * *outDataPacketDescription, void *inUserData) { //AudioConverterFillComplexBuffer 编码过程中,会要求这个函数来填充输入数据,也就是原始PCM数据 AudioBufferList bufferList = *(AudioBufferList *)inUserData; @@ -190,6 +202,8 @@ - (AudioClassDescription *)getAudioClassDescriptionWithType:(UInt32)type fromMan return noErr; } + +#pragma mark -- Custom Method /** * Add ADTS header at the beginning of each and every AAC packet. * This is needed as MediaCodec encoder generates a packet of raw @@ -205,7 +219,7 @@ - (NSData *)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength { // Variables Recycled by addADTStoPacket int profile = 2; //AAC LC //39=MediaCodecInfo.CodecProfileLevel.AACObjectELD; - int freqIdx = 4; //44.1KHz + int freqIdx = [self sampleRateIndex:self.configuration.audioSampleRate]; //44.1KHz int chanCfg = (int)channel; //MPEG-4 Audio Channel Configuration. 1 Channel front-center NSUInteger fullLength = adtsLength + rawDataLength; // fill in ADTS data @@ -220,4 +234,74 @@ - (NSData *)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength { return data; } +- (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { + NSInteger sampleRateIndex = 0; + switch (frequencyInHz) { + case 96000: + sampleRateIndex = 0; + break; + case 88200: + sampleRateIndex = 1; + break; + case 64000: + sampleRateIndex = 2; + break; + case 48000: + sampleRateIndex = 3; + break; + case 44100: + sampleRateIndex = 4; + break; + case 32000: + sampleRateIndex = 5; + break; + case 24000: + sampleRateIndex = 6; + break; + case 22050: + sampleRateIndex = 7; + break; + case 16000: + sampleRateIndex = 8; + break; + case 12000: + sampleRateIndex = 9; + break; + case 11025: + sampleRateIndex = 10; + break; + case 8000: + sampleRateIndex = 11; + break; + case 7350: + sampleRateIndex = 12; + break; + default: + sampleRateIndex = 15; + } + return sampleRateIndex; +} + +- (void)initForFilePath { + char *path = [self GetFilePathByfileName:"IOSCamDemo_HW.aac"]; + NSLog(@"%s", path); + self->fp = fopen(path, "wb"); +} + +- (char *)GetFilePathByfileName:(char *)filename { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + NSString *strName = [NSString stringWithFormat:@"%s", filename]; + + NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; + + NSUInteger len = [writablePath length]; + + char *filepath = (char *)malloc(sizeof(char) * (len + 1)); + + [writablePath getCString:filepath maxLength:len + 1 encoding:[NSString defaultCStringEncoding]]; + + return filepath; +} + @end diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.h b/LFLiveKit/configuration/LFLiveAudioConfiguration.h index e7fbe7f3..79474e7d 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.h +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.h @@ -19,14 +19,16 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioBitRate) { /// 128Kbps 音频码率 LFLiveAudioBitRate_128Kbps = 128000, /// 默认音频码率,默认为 64Kbps - LFLiveAudioBitRate_Default = LFLiveAudioBitRate_64Kbps + LFLiveAudioBitRate_Default = LFLiveAudioBitRate_96Kbps }; /// 采样率 (默认44.1Hz) typedef NS_ENUM (NSUInteger, LFLiveAudioSampleRate){ - /// 44.1Hz 采样率 + /// 16KHz 采样率 + LFLiveAudioSampleRate_16000Hz = 16000, + /// 44.1KHz 采样率 LFLiveAudioSampleRate_44100Hz = 44100, - /// 48Hz 采样率 + /// 48KHz 采样率 LFLiveAudioSampleRate_48000Hz = 48000, /// 默认音频码率,默认为 64Kbps LFLiveAudioSampleRate_Default = LFLiveAudioSampleRate_44100Hz @@ -34,16 +36,16 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioSampleRate){ /// Audio Live quality(音频质量) typedef NS_ENUM (NSUInteger, LFLiveAudioQuality){ - /// 高音频质量 audio sample rate: 44MHz audio bitrate: 32Kbps + /// 高音频质量 audio sample rate: 16KHz audio bitrate: numberOfChannels 1 : 32Kbps 2 : 64Kbps LFLiveAudioQuality_Low = 0, - /// 高音频质量 audio sample rate: 44MHz audio bitrate: 64Kbps + /// 高音频质量 audio sample rate: 44KHz audio bitrate: 96Kbps LFLiveAudioQuality_Medium = 1, - /// 高音频质量 audio sample rate: 44MHz audio bitrate: 96Kbps + /// 高音频质量 audio sample rate: 44MHz audio bitrate: 128Kbps LFLiveAudioQuality_High = 2, - /// 高音频质量 audio sample rate: 44MHz, audio bitrate: 128Kbps + /// 高音频质量 audio sample rate: 48MHz, audio bitrate: 128Kbps LFLiveAudioQuality_VeryHigh = 3, - /// 默认音频质量 audio sample rate: 44MHz, audio bitrate: 64Kbps - LFLiveAudioQuality_Default = LFLiveAudioQuality_Medium + /// 默认音频质量 audio sample rate: 44MHz, audio bitrate: 96Kbps + LFLiveAudioQuality_Default = LFLiveAudioQuality_High }; @interface LFLiveAudioConfiguration : NSObject @@ -59,13 +61,13 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioQuality){ ///============================================================================= /// 声道数目(default 2) @property (nonatomic, assign) NSUInteger numberOfChannels; -/// 缓存区长度 -@property (nonatomic, assign) NSUInteger bufferLength; /// 采样率 @property (nonatomic, assign) LFLiveAudioSampleRate audioSampleRate; // 码率 @property (nonatomic, assign) LFLiveAudioBitRate audioBitrate; /// flv编码音频头 44100 为0x12 0x10 @property (nonatomic, assign, readonly) char *asc; +/// 缓存区长度 +@property (nonatomic, assign) NSUInteger bufferLength; @end diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.m b/LFLiveKit/configuration/LFLiveAudioConfiguration.m index ece2e7ee..f489c5d4 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.m +++ b/LFLiveKit/configuration/LFLiveAudioConfiguration.m @@ -21,26 +21,32 @@ + (instancetype)defaultConfigurationForQuality:(LFLiveAudioQuality)audioQuality LFLiveAudioConfiguration *audioConfig = [LFLiveAudioConfiguration new]; audioConfig.numberOfChannels = 2; switch (audioQuality) { - case LFLiveAudioQuality_Default: { - audioConfig.audioBitrate = LFLiveAudioBitRate_64Kbps; + case LFLiveAudioQuality_Low: { + audioConfig.audioBitrate = audioConfig.numberOfChannels == 1 ? LFLiveAudioBitRate_32Kbps : LFLiveAudioBitRate_64Kbps; + audioConfig.audioSampleRate = LFLiveAudioSampleRate_16000Hz; } break; - case LFLiveAudioQuality_Low: { - audioConfig.audioBitrate = LFLiveAudioBitRate_32Kbps; + case LFLiveAudioQuality_Medium: { + audioConfig.audioBitrate = LFLiveAudioBitRate_96Kbps; + audioConfig.audioSampleRate = LFLiveAudioSampleRate_44100Hz; } break; case LFLiveAudioQuality_High: { - audioConfig.audioBitrate = LFLiveAudioBitRate_96Kbps; + audioConfig.audioBitrate = LFLiveAudioBitRate_128Kbps; + audioConfig.audioSampleRate = LFLiveAudioSampleRate_44100Hz; } break; case LFLiveAudioQuality_VeryHigh: { audioConfig.audioBitrate = LFLiveAudioBitRate_128Kbps; + audioConfig.audioSampleRate = LFLiveAudioSampleRate_48000Hz; } break; - default: + default:{ + audioConfig.audioBitrate = LFLiveAudioBitRate_96Kbps; + audioConfig.audioSampleRate = LFLiveAudioSampleRate_44100Hz; + } break; } - audioConfig.audioSampleRate = [self.class isNewThaniPhone6] ? LFLiveAudioSampleRate_48000Hz : LFLiveAudioSampleRate_44100Hz; return audioConfig; } @@ -60,14 +66,14 @@ - (void)dealloc { - (void)setAudioSampleRate:(LFLiveAudioSampleRate)audioSampleRate { _audioSampleRate = audioSampleRate; NSInteger sampleRateIndex = [self sampleRateIndex:audioSampleRate]; - self.asc[0] = 0x10 | ((sampleRateIndex>>1) & 0x3); + self.asc[0] = 0x10 | ((sampleRateIndex>>1) & 0x7); self.asc[1] = ((sampleRateIndex & 0x1)<<7) | ((self.numberOfChannels & 0xF) << 3); } - (void)setNumberOfChannels:(NSUInteger)numberOfChannels { _numberOfChannels = numberOfChannels; NSInteger sampleRateIndex = [self sampleRateIndex:self.audioSampleRate]; - self.asc[0] = 0x10 | ((sampleRateIndex>>1) & 0x3); + self.asc[0] = 0x10 | ((sampleRateIndex>>1) & 0x7); self.asc[1] = ((sampleRateIndex & 0x1)<<7) | ((numberOfChannels & 0xF) << 3); } @@ -124,57 +130,6 @@ - (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { return sampleRateIndex; } -#pragma mark -- DeviceCategory -+ (NSString *)deviceName { - struct utsname systemInfo; - uname(&systemInfo); - - return [NSString stringWithCString:systemInfo.machine - encoding:NSUTF8StringEncoding]; -} - -//@"iPad4,1" on 5th Generation iPad (iPad Air) - Wifi -//@"iPad4,2" on 5th Generation iPad (iPad Air) - Cellular -//@"iPad4,4" on 2nd Generation iPad Mini - Wifi -//@"iPad4,5" on 2nd Generation iPad Mini - Cellular -//@"iPad4,7" on 3rd Generation iPad Mini - Wifi (model A1599) -//@"iPhone7,1" on iPhone 6 Plus -//@"iPhone7,2" on iPhone 6 -//@"iPhone8,1" on iPhone 6S -//@"iPhone8,2" on iPhone 6S Plus - -+ (BOOL)isNewThaniPhone6 { - NSString *device = [self deviceName]; - NSLog(@"device %@", device); - if (device == nil) { - return NO; - } - NSArray *array = [device componentsSeparatedByString:@","]; - if (array.count < 2) { - return NO; - } - NSString *model = [array objectAtIndex:0]; - NSLog(@"model %@", model); - if ([model hasPrefix:@"iPhone"]) { - NSString *str1 = [model substringFromIndex:[@"iPhone" length]]; - NSUInteger num = [str1 integerValue]; - NSLog(@"num %lu", (unsigned long)num); - if (num > 7) { - return YES; - } - } - - if ([model hasPrefix:@"iPad"]) { - NSString *str1 = [model substringFromIndex:[@"iPad" length]]; - NSUInteger num = [str1 integerValue]; - if (num > 4) { - return YES; - } - } - - return NO; -} - #pragma mark -- Encoder - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:@(self.numberOfChannels) forKey:@"numberOfChannels"]; From fc52abe7bdd1b35aa59a0f0702d41b63cfc06d43 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 29 Aug 2016 18:05:37 +0800 Subject: [PATCH 113/178] fix code format --- LFLiveKit/LFLiveSession.m | 6 ++++-- LFLiveKit/capture/LFVideoCapture.m | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index 07f026a5..f91f3fbb 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -300,9 +300,11 @@ - (void)setWarterMarkView:(UIView *)warterMarkView{ - (UIView*)warterMarkView{ return self.videoCaptureSource.warterMarkView; } --(UIImage *)currentImage{ -return self.videoCaptureSource.currentImage; + +- (UIImage *)currentImage{ + return self.videoCaptureSource.currentImage; } + - (LFAudioCapture *)audioCaptureSource { if (!_audioCaptureSource) { if(self.captureType & LFLiveCaptureMaskAudio){ diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/capture/LFVideoCapture.m index 2ef45ebf..cb1b489d 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/capture/LFVideoCapture.m @@ -251,10 +251,15 @@ - (GPUImageView *)gpuImageView{ } return _gpuImageView; } + -(UIImage *)currentImage{ - [_filter useNextFrameForImageCapture]; - return _filter.imageFromCurrentFramebuffer; + if(_filter){ + [_filter useNextFrameForImageCapture]; + return _filter.imageFromCurrentFramebuffer; + } + return nil; } + #pragma mark -- Custom Method - (void)processVideo:(GPUImageOutput *)output { __weak typeof(self) _self = self; From abd55c5511a82b4e404827323f420a24047f7303 Mon Sep 17 00:00:00 2001 From: chenliming Date: Mon, 29 Aug 2016 20:57:53 +0800 Subject: [PATCH 114/178] fix bug https://github.com/LaiFengiOS/LFLiveKit/issues/67 --- LFLiveKit/publish/LFStreamingBuffer.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LFLiveKit/publish/LFStreamingBuffer.m b/LFLiveKit/publish/LFStreamingBuffer.m index 9af426e0..e17ebe8d 100755 --- a/LFLiveKit/publish/LFStreamingBuffer.m +++ b/LFLiveKit/publish/LFStreamingBuffer.m @@ -228,7 +228,7 @@ - (void)tick { } __weak typeof(self) _self = self; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.updateInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - __weak typeof(_self) self = _self; + __strong typeof(_self) self = _self; [self tick]; }); } From 13094108e3f1704ef96c66228e515bdacdef0dce Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 30 Aug 2016 11:01:11 +0800 Subject: [PATCH 115/178] fix bug https://github.com/LaiFengiOS/LFLiveKit/issues/61 --- LFLiveKit/LFLiveSession.h | 2 +- LFLiveKit/LFLiveSession.m | 41 ++++++++++++++++++++---- LFLiveKit/capture/LFAudioCapture.h | 2 +- LFLiveKit/capture/LFAudioCapture.m | 4 +-- LFLiveKit/coder/LFAudioEncoding.h | 2 +- LFLiveKit/coder/LFHardwareAudioEncoder.m | 15 ++++----- 6 files changed, 45 insertions(+), 21 deletions(-) diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveSession.h index eaf99a66..c4e094f5 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveSession.h @@ -145,7 +145,7 @@ typedef NS_ENUM(NSInteger,LFLiveCaptureTypeMask) { - (void)pushVideo:(CVPixelBufferRef)pixelBuffer; /** support outer input pcm audio(set LFLiveCaptureTypeMask) .*/ -- (void)pushAudio:(AudioBufferList)audioBufferList; +- (void)pushAudio:(NSData*)audioData; @end diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index f91f3fbb..f0f0d2ed 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -47,9 +47,14 @@ @interface LFLiveSession ())encoder audioFrame:(nullable LFAudioFrame *)frame { - if (self.uploading) [self.socket sendFrame:frame]; //<上传 + //<上传 + if (self.uploading){ + self.hasCaptureAudio = YES; + if(self.AVAlignment) [self.socket sendFrame:frame]; + } } - (void)videoEncoder:(nullable id)encoder videoFrame:(nullable LFVideoFrame *)frame { - if (self.uploading) [self.socket sendFrame:frame]; //<上传 + //<上传 + if (self.uploading){ + if(frame.isKeyFrame && self.hasCaptureAudio) self.hasKeyFrameVideo = YES; + if(self.AVAlignment) [self.socket sendFrame:frame]; + } } #pragma mark -- LFStreamTcpSocketDelegate @@ -142,6 +155,9 @@ - (void)socketStatus:(nullable id)socket status:(LFLiveState)sta if (!self.uploading) { self.timestamp = 0; self.isFirstFrame = YES; + self.AVAlignment = NO; + self.hasCaptureAudio = NO; + self.hasKeyFrameVideo = NO; self.uploading = YES; } } else if(status == LFLiveStop || status == LFLiveError){ @@ -381,4 +397,15 @@ - (uint64_t)currentTimestamp { return currentts; } +- (BOOL)AVAlignment{ + if((self.captureType & LFLiveCaptureMaskAudio || self.captureType & LFLiveInputMaskAudio) && + (self.captureType & LFLiveCaptureMaskVideo || self.captureType & LFLiveInputMaskVideo) + ){ + if(self.hasCaptureAudio && self.hasKeyFrameVideo) return YES; + else return NO; + }else{ + return YES; + } +} + @end diff --git a/LFLiveKit/capture/LFAudioCapture.h b/LFLiveKit/capture/LFAudioCapture.h index 00227f0e..7efb83c4 100755 --- a/LFLiveKit/capture/LFAudioCapture.h +++ b/LFLiveKit/capture/LFAudioCapture.h @@ -17,7 +17,7 @@ extern NSString *_Nullable const LFAudioComponentFailedToCreateNotification; @class LFAudioCapture; /** LFAudioCapture callback audioData */ @protocol LFAudioCaptureDelegate -- (void)captureOutput:(nullable LFAudioCapture *)capture audioBuffer:(AudioBufferList)inBufferList; +- (void)captureOutput:(nullable LFAudioCapture *)capture audioData:(NSData*)audioData; @end diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/capture/LFAudioCapture.m index 681a9c44..5c75f861 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/capture/LFAudioCapture.m @@ -251,8 +251,8 @@ static OSStatus handleInputBuffer(void *inRefCon, } if (!status) { - if (source.delegate && [source.delegate respondsToSelector:@selector(captureOutput:audioBuffer:)]) { - [source.delegate captureOutput:source audioBuffer:buffers]; + if (source.delegate && [source.delegate respondsToSelector:@selector(captureOutput:audioData:)]) { + [source.delegate captureOutput:source audioData:[NSData dataWithBytes:buffers.mBuffers[0].mData length:buffers.mBuffers[0].mDataByteSize]]; } } return status; diff --git a/LFLiveKit/coder/LFAudioEncoding.h b/LFLiveKit/coder/LFAudioEncoding.h index 91be9ffa..cb61d7ea 100755 --- a/LFLiveKit/coder/LFAudioEncoding.h +++ b/LFLiveKit/coder/LFAudioEncoding.h @@ -21,7 +21,7 @@ /// 编码器抽象的接口 @protocol LFAudioEncoding @required -- (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeStamp; +- (void)encodeAudioData:(NSData*)audioData timeStamp:(uint64_t)timeStamp; - (void)stopEncoder; @optional - (nullable instancetype)initWithAudioStreamConfiguration:(nullable LFLiveAudioConfiguration *)configuration; diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.m b/LFLiveKit/coder/LFHardwareAudioEncoder.m index 1f6cc694..ff646274 100755 --- a/LFLiveKit/coder/LFHardwareAudioEncoder.m +++ b/LFLiveKit/coder/LFHardwareAudioEncoder.m @@ -55,24 +55,21 @@ - (void)setDelegate:(id)delegate { _aacDeleage = delegate; } -- (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeStamp { +- (void)encodeAudioData:(NSData*)audioData timeStamp:(uint64_t)timeStamp { if (![self createAudioConvert]) { return; } - AudioBuffer inBuffer = inBufferList.mBuffers[0]; - - - if(leftLength + inBuffer.mDataByteSize >= self.configuration.bufferLength){ + if(leftLength + audioData.length >= self.configuration.bufferLength){ ///<  发送 - NSInteger totalSize = leftLength + inBuffer.mDataByteSize; + NSInteger totalSize = leftLength + audioData.length; NSInteger encodeCount = totalSize/self.configuration.bufferLength; char *totalBuf = malloc(totalSize); char *p = totalBuf; memset(totalBuf, totalSize, 0); memcpy(totalBuf, leftBuf, leftLength); - memcpy(totalBuf + leftLength, inBuffer.mData, inBuffer.mDataByteSize); + memcpy(totalBuf + leftLength, audioData.bytes, audioData.length); for(NSInteger index = 0;index < encodeCount;index++){ [self encodeBuffer:p timeStamp:timeStamp]; @@ -86,8 +83,8 @@ - (void)encodeAudioData:(AudioBufferList)inBufferList timeStamp:(uint64_t)timeSt }else{ ///< 积累 - memcpy(leftBuf+leftLength, inBuffer.mData, inBuffer.mDataByteSize); - leftLength = leftLength + inBuffer.mDataByteSize; + memcpy(leftBuf+leftLength, audioData.bytes, audioData.length); + leftLength = leftLength + audioData.length; } } From 681b1cd107ec623cb8f06caaa0141865d0fc9e9a Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 30 Aug 2016 12:17:45 +0800 Subject: [PATCH 116/178] Modified time stamp logic --- LFLiveKit/LFLiveSession.m | 57 ++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveSession.m index f0f0d2ed..7735e0ab 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveSession.m @@ -49,12 +49,7 @@ @interface LFLiveSession ())encoder audioFrame:(nullable LFAudioFrame *)frame { - //<上传 + //<上传 时间戳对齐 if (self.uploading){ self.hasCaptureAudio = YES; - if(self.AVAlignment) [self.socket sendFrame:frame]; + if(self.AVAlignment) [self pushSendBuffer:frame]; } } - (void)videoEncoder:(nullable id)encoder videoFrame:(nullable LFVideoFrame *)frame { - //<上传 + //<上传 时间戳对齐 if (self.uploading){ if(frame.isKeyFrame && self.hasCaptureAudio) self.hasKeyFrameVideo = YES; - if(self.AVAlignment) [self.socket sendFrame:frame]; + if(self.AVAlignment) [self pushSendBuffer:frame]; } } @@ -153,11 +161,10 @@ - (void)videoEncoder:(nullable id)encoder videoFrame:(nullable - (void)socketStatus:(nullable id)socket status:(LFLiveState)status { if (status == LFLiveStart) { if (!self.uploading) { - self.timestamp = 0; - self.isFirstFrame = YES; self.AVAlignment = NO; self.hasCaptureAudio = NO; self.hasKeyFrameVideo = NO; + self.relativeTimestamps = 0; self.uploading = YES; } } else if(status == LFLiveStop || status == LFLiveError){ @@ -383,16 +390,10 @@ - (dispatch_semaphore_t)lock{ return _lock; } -- (uint64_t)currentTimestamp { +- (uint64_t)uploadTimestamp:(uint64_t)captureTimestamp{ dispatch_semaphore_wait(self.lock, DISPATCH_TIME_FOREVER); uint64_t currentts = 0; - if (_isFirstFrame) { - _timestamp = NOW; - _isFirstFrame = NO; - currentts = 0; - } else { - currentts = NOW - _timestamp; - } + currentts = captureTimestamp - self.relativeTimestamps; dispatch_semaphore_signal(self.lock); return currentts; } From 8c2596c23e92848598011ba80ac7189a128c9166 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 30 Aug 2016 16:46:25 +0800 Subject: [PATCH 117/178] fix Third party library external introduction --- LFLiveKit.podspec | 6 +- LFLiveKit.xcodeproj/project.pbxproj | 2295 --------- .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 21260 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 14655 -> 0 bytes .../xcshareddata/xcschemes/LFLiveKit.xcscheme | 155 - .../xcschemes/xcschememanagement.plist | 37 - .../xcschemes/xcschememanagement.plist | 19 - LFLiveKit/Info.plist | 2 +- LFLiveKit/LFLiveKit.h | 15 - LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj | 565 +++ LFLiveKit/LFLiveKit/LFLiveKit.h | 25 + LFLiveKit/{ => LFLiveKit}/LFLiveSession.h | 10 +- LFLiveKit/{ => LFLiveKit}/LFLiveSession.m | 12 +- .../{ => LFLiveKit}/capture/LFAudioCapture.h | 2 +- .../{ => LFLiveKit}/capture/LFAudioCapture.m | 2 +- .../{ => LFLiveKit}/capture/LFVideoCapture.h | 4 +- .../{ => LFLiveKit}/capture/LFVideoCapture.m | 6 +- .../{ => LFLiveKit}/coder/H264/LFAVEncoder.h | 1 - .../{ => LFLiveKit}/coder/H264/LFAVEncoder.mm | 16 +- .../{ => LFLiveKit}/coder/H264/LFMP4Atom.h | 0 .../{ => LFLiveKit}/coder/H264/LFMP4Atom.m | 2 +- .../{ => LFLiveKit}/coder/H264/LFNALUnit.cpp | 22 +- .../{ => LFLiveKit}/coder/H264/LFNALUnit.h | 0 .../coder/H264/LFVideoEncoder.h | 0 .../coder/H264/LFVideoEncoder.m | 0 .../{ => LFLiveKit}/coder/LFAudioEncoding.h | 2 +- .../coder/LFH264VideoEncoder.h | 0 .../coder/LFH264VideoEncoder.mm | 31 +- .../coder/LFHardwareAudioEncoder.h | 0 .../coder/LFHardwareAudioEncoder.m | 37 +- .../coder/LFHardwareVideoEncoder.h | 0 .../coder/LFHardwareVideoEncoder.m | 21 +- .../{ => LFLiveKit}/coder/LFVideoEncoding.h | 3 +- .../configuration/LFLiveAudioConfiguration.h | 2 +- .../configuration/LFLiveAudioConfiguration.m | 0 .../configuration/LFLiveVideoConfiguration.h | 0 .../configuration/LFLiveVideoConfiguration.m | 0 .../filter/LFGPUImageBeautyFilter.h | 0 .../filter/LFGPUImageBeautyFilter.m | 1 - .../filter/LFGPUImageEmptyFilter.h | 0 .../filter/LFGPUImageEmptyFilter.m | 0 .../{ => LFLiveKit}/objects/LFAudioFrame.h | 0 .../{ => LFLiveKit}/objects/LFAudioFrame.m | 0 LFLiveKit/{ => LFLiveKit}/objects/LFFrame.h | 2 +- LFLiveKit/{ => LFLiveKit}/objects/LFFrame.m | 0 .../{ => LFLiveKit}/objects/LFLiveDebug.h | 0 .../{ => LFLiveKit}/objects/LFLiveDebug.m | 0 .../objects/LFLiveStreamInfo.h | 0 .../objects/LFLiveStreamInfo.m | 0 .../{ => LFLiveKit}/objects/LFVideoFrame.h | 0 .../{ => LFLiveKit}/objects/LFVideoFrame.m | 0 .../publish/LFStreamRTMPSocket.h | 0 .../publish/LFStreamRtmpSocket.m} | 6 +- .../{ => LFLiveKit}/publish/LFStreamSocket.h | 0 .../publish/LFStreamingBuffer.h | 0 .../publish/LFStreamingBuffer.m | 0 .../publish/NSMutableArray+LFAdd.h | 0 .../publish/NSMutableArray+LFAdd.m | 0 LFLiveKit/Vendor/GPUImage/GLProgram.m | 236 - .../GPUImage/GPUImage3x3ConvolutionFilter.m | 128 - .../GPUImage3x3TextureSamplingFilter.m | 121 - .../GPUImageAdaptiveThresholdFilter.m | 100 - .../Vendor/GPUImage/GPUImageAddBlendFilter.m | 100 - .../GPUImage/GPUImageAlphaBlendFilter.m | 72 - .../Vendor/GPUImage/GPUImageAmatorkaFilter.m | 38 - .../Vendor/GPUImage/GPUImageAverageColor.m | 204 - .../GPUImageAverageLuminanceThresholdFilter.m | 47 - .../Vendor/GPUImage/GPUImageBilateralFilter.m | 231 - .../Vendor/GPUImage/GPUImageBoxBlurFilter.m | 178 - .../GPUImage/GPUImageBrightnessFilter.m | 66 - LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m | 112 - .../GPUImage/GPUImageBulgeDistortionFilter.m | 174 - .../GPUImage/GPUImageCGAColorspaceFilter.m | 113 - .../GPUImageCannyEdgeDetectionFilter.m | 125 - .../GPUImage/GPUImageChromaKeyBlendFilter.m | 117 - .../Vendor/GPUImage/GPUImageChromaKeyFilter.m | 113 - .../Vendor/GPUImage/GPUImageClosingFilter.m | 57 - .../GPUImage/GPUImageColorBlendFilter.m | 113 - .../GPUImage/GPUImageColorBurnBlendFilter.m | 52 - .../Vendor/GPUImage/GPUImageColorConversion.m | 159 - .../GPUImage/GPUImageColorDodgeBlendFilter.m | 75 - .../GPUImage/GPUImageColorInvertFilter.m | 46 - .../GPUImageColorLocalBinaryPatternFilter.m | 159 - .../GPUImage/GPUImageColorMatrixFilter.m | 87 - .../GPUImage/GPUImageColorPackingFilter.m | 139 - .../GPUImageColourFASTFeatureDetector.m | 48 - .../GPUImageColourFASTSamplingOperation.m | 204 - .../Vendor/GPUImage/GPUImageContrastFilter.m | 66 - .../Vendor/GPUImage/GPUImageCropFilter.m | 274 -- .../GPUImage/GPUImageCrosshairGenerator.m | 139 - .../GPUImage/GPUImageCrosshatchFilter.m | 163 - .../GPUImage/GPUImageDarkenBlendFilter.m | 52 - .../GPUImage/GPUImageDifferenceBlendFilter.m | 50 - .../Vendor/GPUImage/GPUImageDilationFilter.m | 431 -- ...geDirectionalNonMaximumSuppressionFilter.m | 141 - ...ImageDirectionalSobelEdgeDetectionFilter.m | 103 - .../GPUImage/GPUImageDissolveBlendFilter.m | 72 - .../GPUImage/GPUImageDivideBlendFilter.m | 96 - .../Vendor/GPUImage/GPUImageEmbossFilter.m | 49 - .../Vendor/GPUImage/GPUImageErosionFilter.m | 312 -- .../GPUImage/GPUImageExclusionBlendFilter.m | 56 - .../Vendor/GPUImage/GPUImageExposureFilter.m | 66 - .../GPUImageFASTCornerDetectionFilter.m | 89 - .../GPUImage/GPUImageFalseColorFilter.m | 101 - LFLiveKit/Vendor/GPUImage/GPUImageFilter.m | 753 --- .../Vendor/GPUImage/GPUImageFilterGroup.m | 208 - .../Vendor/GPUImage/GPUImageFilterPipeline.m | 218 - .../Vendor/GPUImage/GPUImageFourInputFilter.m | 401 -- .../Vendor/GPUImage/GPUImageFramebuffer.m | 457 -- .../GPUImage/GPUImageFramebufferCache.m | 190 - .../Vendor/GPUImage/GPUImageGammaFilter.m | 66 - .../GPUImage/GPUImageGaussianBlurFilter.m | 513 -- .../GPUImageGaussianBlurPositionFilter.m | 232 - .../GPUImageGaussianSelectiveBlurFilter.m | 147 - .../GPUImage/GPUImageGlassSphereFilter.m | 106 - .../Vendor/GPUImage/GPUImageGrayscaleFilter.m | 141 - LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m | 414 -- .../Vendor/GPUImage/GPUImageHalftoneFilter.m | 79 - .../GPUImage/GPUImageHardLightBlendFilter.m | 99 - .../GPUImageHarrisCornerDetectionFilter.m | 292 -- .../Vendor/GPUImage/GPUImageHazeFilter.m | 96 - .../Vendor/GPUImage/GPUImageHighPassFilter.m | 46 - .../GPUImage/GPUImageHighlightShadowFilter.m | 93 - .../GPUImageHighlightShadowTintFilter.h | 25 - .../GPUImageHighlightShadowTintFilter.m | 136 - .../GPUImageHistogramEqualizationFilter.m | 307 -- .../Vendor/GPUImage/GPUImageHistogramFilter.m | 341 -- .../GPUImage/GPUImageHistogramGenerator.m | 87 - .../GPUImageHoughTransformLineDetector.m | 241 - .../Vendor/GPUImage/GPUImageHueBlendFilter.m | 212 - LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m | 123 - .../GPUImage/GPUImageJFAVoronoiFilter.m | 446 -- .../Vendor/GPUImage/GPUImageKuwaharaFilter.m | 223 - .../GPUImage/GPUImageKuwaharaRadius3Filter.m | 547 --- .../GPUImageLanczosResamplingFilter.m | 239 - .../Vendor/GPUImage/GPUImageLaplacianFilter.m | 115 - .../Vendor/GPUImage/GPUImageLevelsFilter.m | 152 - .../GPUImage/GPUImageLightenBlendFilter.m | 52 - .../Vendor/GPUImage/GPUImageLineGenerator.m | 164 - .../GPUImage/GPUImageLinearBurnBlendFilter.m | 51 - .../GPUImageLocalBinaryPatternFilter.m | 123 - .../Vendor/GPUImage/GPUImageLookupFilter.m | 115 - .../Vendor/GPUImage/GPUImageLowPassFilter.m | 61 - .../GPUImage/GPUImageLuminanceRangeFilter.m | 76 - .../GPUImageLuminanceThresholdFilter.m | 74 - .../Vendor/GPUImage/GPUImageLuminosity.m | 329 -- .../GPUImage/GPUImageLuminosityBlendFilter.m | 113 - .../Vendor/GPUImage/GPUImageMaskFilter.m | 76 - .../Vendor/GPUImage/GPUImageMedianFilter.m | 178 - .../GPUImage/GPUImageMissEtikateFilter.m | 38 - .../GPUImage/GPUImageMonochromeFilter.m | 115 - .../Vendor/GPUImage/GPUImageMosaicFilter.m | 188 - .../GPUImage/GPUImageMotionBlurFilter.m | 209 - .../Vendor/GPUImage/GPUImageMotionDetector.m | 112 - LFLiveKit/Vendor/GPUImage/GPUImageMovie.m | 876 ---- .../GPUImage/GPUImageMovieComposition.m | 70 - .../GPUImage/GPUImageMultiplyBlendFilter.m | 52 - .../GPUImageNobleCornerDetectionFilter.m | 74 - .../GPUImageNonMaximumSuppressionFilter.m | 107 - .../GPUImage/GPUImageNormalBlendFilter.m | 96 - .../Vendor/GPUImage/GPUImageOpacityFilter.m | 65 - .../Vendor/GPUImage/GPUImageOpeningFilter.m | 57 - LFLiveKit/Vendor/GPUImage/GPUImageOutput.m | 439 -- .../GPUImage/GPUImageOverlayBlendFilter.m | 94 - ...ageParallelCoordinateLineTransformFilter.m | 266 -- .../GPUImage/GPUImagePerlinNoiseFilter.m | 239 - .../GPUImage/GPUImagePinchDistortionFilter.m | 176 - .../Vendor/GPUImage/GPUImagePixellateFilter.m | 151 - .../GPUImagePixellatePositionFilter.m | 194 - .../GPUImage/GPUImagePoissonBlendFilter.m | 175 - .../GPUImage/GPUImagePolarPixellateFilter.m | 128 - .../Vendor/GPUImage/GPUImagePolkaDotFilter.m | 85 - .../Vendor/GPUImage/GPUImagePosterizeFilter.m | 66 - .../GPUImagePrewittEdgeDetectionFilter.m | 97 - .../GPUImage/GPUImageRGBClosingFilter.m | 41 - .../GPUImage/GPUImageRGBDilationFilter.m | 306 -- .../GPUImage/GPUImageRGBErosionFilter.m | 304 -- LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m | 89 - .../GPUImage/GPUImageRGBOpeningFilter.m | 41 - .../Vendor/GPUImage/GPUImageRawDataInput.m | 139 - .../Vendor/GPUImage/GPUImageRawDataOutput.m | 307 -- .../GPUImage/GPUImageSaturationBlendFilter.m | 213 - .../GPUImage/GPUImageSaturationFilter.m | 78 - .../GPUImage/GPUImageScreenBlendFilter.m | 52 - .../Vendor/GPUImage/GPUImageSepiaFilter.m | 24 - .../Vendor/GPUImage/GPUImageSharpenFilter.m | 147 - .../GPUImageShiTomasiFeatureDetectionFilter.m | 65 - ...PUImageSingleComponentGaussianBlurFilter.m | 189 - .../Vendor/GPUImage/GPUImageSketchFilter.m | 98 - .../Vendor/GPUImage/GPUImageSkinToneFilter.h | 47 - .../Vendor/GPUImage/GPUImageSkinToneFilter.m | 246 - .../GPUImage/GPUImageSmoothToonFilter.m | 94 - .../GPUImageSobelEdgeDetectionFilter.m | 188 - .../GPUImage/GPUImageSoftEleganceFilter.m | 62 - .../GPUImage/GPUImageSoftLightBlendFilter.m | 54 - .../Vendor/GPUImage/GPUImageSolarizeFilter.m | 76 - .../GPUImage/GPUImageSolidColorGenerator.m | 123 - .../GPUImage/GPUImageSourceOverBlendFilter.m | 51 - .../GPUImage/GPUImageSphereRefractionFilter.m | 179 - .../Vendor/GPUImage/GPUImageStillCamera.m | 338 -- .../GPUImageStretchDistortionFilter.m | 99 - .../GPUImage/GPUImageSubtractBlendFilter.m | 52 - .../Vendor/GPUImage/GPUImageSwirlFilter.m | 123 - .../Vendor/GPUImage/GPUImageTextureInput.m | 46 - .../Vendor/GPUImage/GPUImageTextureOutput.m | 83 - .../GPUImage/GPUImageThreeInputFilter.m | 328 -- .../GPUImageThresholdEdgeDetectionFilter.m | 145 - .../GPUImage/GPUImageThresholdSketchFilter.m | 103 - ...geThresholdedNonMaximumSuppressionFilter.m | 297 -- .../Vendor/GPUImage/GPUImageTiltShiftFilter.m | 126 - .../Vendor/GPUImage/GPUImageToneCurveFilter.m | 621 --- .../Vendor/GPUImage/GPUImageToonFilter.m | 149 - .../Vendor/GPUImage/GPUImageTransformFilter.m | 260 -- ...UImageTwoInputCrossTextureSamplingFilter.m | 108 - .../Vendor/GPUImage/GPUImageTwoInputFilter.m | 264 -- .../Vendor/GPUImage/GPUImageTwoPassFilter.m | 201 - .../GPUImageTwoPassTextureSamplingFilter.m | 85 - LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m | 124 - .../GPUImage/GPUImageUnsharpMaskFilter.m | 101 - .../Vendor/GPUImage/GPUImageVideoCamera.m | 1062 ----- .../Vendor/GPUImage/GPUImageVignetteFilter.m | 104 - .../GPUImage/GPUImageVoronoiConsumerFilter.m | 94 - .../GPUImageWeakPixelInclusionFilter.m | 94 - .../GPUImage/GPUImageWhiteBalanceFilter.m | 107 - .../GPUImage/GPUImageXYDerivativeFilter.m | 106 - .../Vendor/GPUImage/GPUImageZoomBlurFilter.m | 115 - .../Vendor/GPUImage/GPUImageiOSBlurFilter.m | 114 - .../Vendor/GPUImage/iOS/GPUImageContext.m | 320 -- .../Vendor/GPUImage/iOS/GPUImageMovieWriter.m | 1016 ---- .../iOS/GPUImagePicture+TextureSubimage.m | 103 - .../Vendor/GPUImage/iOS/GPUImagePicture.m | 371 -- LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m | 484 -- LFLiveKit/Vendor/pili-librtmp/amf.c | 1037 ----- LFLiveKit/Vendor/pili-librtmp/error.c | 20 - LFLiveKit/Vendor/pili-librtmp/hashswf.c | 626 --- LFLiveKit/Vendor/pili-librtmp/log.c | 209 - LFLiveKit/Vendor/pili-librtmp/parseurl.c | 312 -- LFLiveKit/Vendor/pili-librtmp/rtmp.c | 4136 ----------------- LFLiveKit/coder/H264/LICENSE.markdown | 15 - LFLiveKitDemo/.gitignore | 4 - .../LFLiveKitDemo.xcodeproj/project.pbxproj | 449 +- .../UserInterfaceState.xcuserstate | Bin 8595 -> 43193 bytes .../xcschemes/LFLiveKitDemo.xcscheme | 28 +- .../xcschemes/xcschememanagement.plist | 17 +- .../xcschemes/LFLiveKitDemo.xcscheme | 91 - .../xcschemes/xcschememanagement.plist | 22 - .../contents.xcworkspacedata | 10 - .../UserInterfaceState.xcuserstate | Bin 147711 -> 0 bytes .../UserInterfaceState.xcuserstate | Bin 24941 -> 0 bytes LFLiveKitDemo/LFLiveKitDemo/AppDelegate.h | 2 +- LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m | 11 +- .../AppIcon.appiconset/Contents.json | 35 - LFLiveKitDemo/LFLiveKitDemo/Info.plist | 13 +- LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m | 2 +- LFLiveKitDemo/LFLiveKitDemo/ViewController.h | 2 +- LFLiveKitDemo/LFLiveKitDemo/ViewController.m | 9 +- .../LFLiveKitDemo/category/UIView+YYAdd.h | 20 +- LFLiveKitDemo/LFLiveKitDemo/main.m | 2 +- LFLiveKitDemo/Podfile | 8 - LFLiveKitSwiftDemo/.gitignore | 4 - .../project.pbxproj | 349 +- .../UserInterfaceState.xcuserstate | Bin 10675 -> 0 bytes .../xcschemes/LFLiveKitSwiftDemo.xcscheme | 91 - .../xcschemes/xcschememanagement.plist | 22 - .../contents.xcworkspacedata | 10 - .../UserInterfaceState.xcuserstate | Bin 27053 -> 0 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 - .../LFLiveKitSwiftDemo/AppDelegate.swift | 4 +- .../Base.lproj/Main.storyboard | 7 +- .../LFLiveKitSwiftDemo-Bridging-Header.h | 2 +- .../LFLiveKitSwiftDemo/ViewController.swift | 80 +- LFLiveKitSwiftDemo/Podfile | 6 - LFLiveKitTests/Info.plist | 24 - LFLiveKitTests/LFLiveKitTests.m | 39 - Vendor/GPUImage.framework/GPUImage | Bin 0 -> 9150832 bytes .../GPUImage.framework/Headers}/GLProgram.h | 0 .../GPUImage.framework/Headers}/GPUImage.h | 0 .../Headers}/GPUImage3x3ConvolutionFilter.h | 0 .../GPUImage3x3TextureSamplingFilter.h | 0 .../GPUImageAdaptiveThresholdFilter.h | 0 .../Headers}/GPUImageAddBlendFilter.h | 0 .../Headers}/GPUImageAlphaBlendFilter.h | 0 .../Headers}/GPUImageAmatorkaFilter.h | 0 .../Headers}/GPUImageAverageColor.h | 0 .../GPUImageAverageLuminanceThresholdFilter.h | 0 .../Headers}/GPUImageBilateralFilter.h | 0 .../Headers}/GPUImageBoxBlurFilter.h | 0 .../Headers}/GPUImageBrightnessFilter.h | 0 .../Headers}/GPUImageBuffer.h | 0 .../Headers}/GPUImageBulgeDistortionFilter.h | 0 .../Headers}/GPUImageCGAColorspaceFilter.h | 0 .../GPUImageCannyEdgeDetectionFilter.h | 0 .../Headers}/GPUImageChromaKeyBlendFilter.h | 0 .../Headers}/GPUImageChromaKeyFilter.h | 0 .../Headers}/GPUImageClosingFilter.h | 0 .../Headers}/GPUImageColorBlendFilter.h | 0 .../Headers}/GPUImageColorBurnBlendFilter.h | 0 .../Headers}/GPUImageColorConversion.h | 0 .../Headers}/GPUImageColorDodgeBlendFilter.h | 0 .../Headers}/GPUImageColorInvertFilter.h | 0 .../GPUImageColorLocalBinaryPatternFilter.h | 0 .../Headers}/GPUImageColorMatrixFilter.h | 0 .../Headers}/GPUImageColorPackingFilter.h | 0 .../GPUImageColourFASTFeatureDetector.h | 0 .../GPUImageColourFASTSamplingOperation.h | 0 .../Headers}/GPUImageContext.h | 0 .../Headers}/GPUImageContrastFilter.h | 0 .../Headers}/GPUImageCropFilter.h | 0 .../Headers}/GPUImageCrosshairGenerator.h | 0 .../Headers}/GPUImageCrosshatchFilter.h | 0 .../Headers}/GPUImageDarkenBlendFilter.h | 0 .../Headers}/GPUImageDifferenceBlendFilter.h | 0 .../Headers}/GPUImageDilationFilter.h | 0 ...geDirectionalNonMaximumSuppressionFilter.h | 0 ...ImageDirectionalSobelEdgeDetectionFilter.h | 0 .../Headers}/GPUImageDissolveBlendFilter.h | 0 .../Headers}/GPUImageDivideBlendFilter.h | 0 .../Headers}/GPUImageEmbossFilter.h | 0 .../Headers}/GPUImageErosionFilter.h | 0 .../Headers}/GPUImageExclusionBlendFilter.h | 0 .../Headers}/GPUImageExposureFilter.h | 0 .../GPUImageFASTCornerDetectionFilter.h | 0 .../Headers}/GPUImageFalseColorFilter.h | 0 .../Headers}/GPUImageFilter.h | 0 .../Headers}/GPUImageFilterGroup.h | 0 .../Headers}/GPUImageFilterPipeline.h | 0 .../Headers}/GPUImageFourInputFilter.h | 0 .../Headers}/GPUImageFramebuffer.h | 0 .../Headers}/GPUImageFramebufferCache.h | 0 .../Headers}/GPUImageFramework.h | 0 .../Headers}/GPUImageGammaFilter.h | 0 .../Headers}/GPUImageGaussianBlurFilter.h | 0 .../GPUImageGaussianBlurPositionFilter.h | 0 .../GPUImageGaussianSelectiveBlurFilter.h | 0 .../Headers}/GPUImageGlassSphereFilter.h | 0 .../Headers}/GPUImageGrayscaleFilter.h | 0 .../Headers}/GPUImageHSBFilter.h | 0 .../Headers}/GPUImageHalftoneFilter.h | 0 .../Headers}/GPUImageHardLightBlendFilter.h | 0 .../GPUImageHarrisCornerDetectionFilter.h | 0 .../Headers}/GPUImageHazeFilter.h | 0 .../Headers}/GPUImageHighPassFilter.h | 0 .../Headers}/GPUImageHighlightShadowFilter.h | 0 .../GPUImageHistogramEqualizationFilter.h | 0 .../Headers}/GPUImageHistogramFilter.h | 0 .../Headers}/GPUImageHistogramGenerator.h | 0 .../GPUImageHoughTransformLineDetector.h | 0 .../Headers}/GPUImageHueBlendFilter.h | 0 .../Headers}/GPUImageHueFilter.h | 0 .../Headers}/GPUImageJFAVoronoiFilter.h | 0 .../Headers}/GPUImageKuwaharaFilter.h | 0 .../Headers}/GPUImageKuwaharaRadius3Filter.h | 0 .../GPUImageLanczosResamplingFilter.h | 0 .../Headers}/GPUImageLaplacianFilter.h | 0 .../Headers}/GPUImageLevelsFilter.h | 0 .../Headers}/GPUImageLightenBlendFilter.h | 0 .../Headers}/GPUImageLineGenerator.h | 0 .../Headers}/GPUImageLinearBurnBlendFilter.h | 0 .../GPUImageLocalBinaryPatternFilter.h | 0 .../Headers}/GPUImageLookupFilter.h | 0 .../Headers}/GPUImageLowPassFilter.h | 0 .../Headers}/GPUImageLuminanceRangeFilter.h | 0 .../GPUImageLuminanceThresholdFilter.h | 0 .../Headers}/GPUImageLuminosity.h | 0 .../Headers}/GPUImageLuminosityBlendFilter.h | 0 .../Headers}/GPUImageMaskFilter.h | 0 .../Headers}/GPUImageMedianFilter.h | 0 .../Headers}/GPUImageMissEtikateFilter.h | 0 .../Headers}/GPUImageMonochromeFilter.h | 0 .../Headers}/GPUImageMosaicFilter.h | 0 .../Headers}/GPUImageMotionBlurFilter.h | 0 .../Headers}/GPUImageMotionDetector.h | 0 .../Headers}/GPUImageMovie.h | 0 .../Headers}/GPUImageMovieComposition.h | 0 .../Headers}/GPUImageMovieWriter.h | 0 .../Headers}/GPUImageMultiplyBlendFilter.h | 0 .../GPUImageNobleCornerDetectionFilter.h | 0 .../GPUImageNonMaximumSuppressionFilter.h | 0 .../Headers}/GPUImageNormalBlendFilter.h | 0 .../Headers}/GPUImageOpacityFilter.h | 0 .../Headers}/GPUImageOpeningFilter.h | 0 .../Headers}/GPUImageOutput.h | 0 .../Headers}/GPUImageOverlayBlendFilter.h | 0 ...ageParallelCoordinateLineTransformFilter.h | 0 .../Headers}/GPUImagePerlinNoiseFilter.h | 0 .../GPUImagePicture+TextureSubimage.h | 0 .../Headers}/GPUImagePicture.h | 0 .../Headers}/GPUImagePinchDistortionFilter.h | 0 .../Headers}/GPUImagePixellateFilter.h | 0 .../GPUImagePixellatePositionFilter.h | 0 .../Headers}/GPUImagePoissonBlendFilter.h | 0 .../Headers}/GPUImagePolarPixellateFilter.h | 0 .../Headers}/GPUImagePolkaDotFilter.h | 0 .../Headers}/GPUImagePosterizeFilter.h | 0 .../GPUImagePrewittEdgeDetectionFilter.h | 0 .../Headers}/GPUImageRGBClosingFilter.h | 0 .../Headers}/GPUImageRGBDilationFilter.h | 0 .../Headers}/GPUImageRGBErosionFilter.h | 0 .../Headers}/GPUImageRGBFilter.h | 0 .../Headers}/GPUImageRGBOpeningFilter.h | 0 .../Headers}/GPUImageRawDataInput.h | 0 .../Headers}/GPUImageRawDataOutput.h | 0 .../Headers}/GPUImageSaturationBlendFilter.h | 0 .../Headers}/GPUImageSaturationFilter.h | 0 .../Headers}/GPUImageScreenBlendFilter.h | 0 .../Headers}/GPUImageSepiaFilter.h | 0 .../Headers}/GPUImageSharpenFilter.h | 0 .../GPUImageShiTomasiFeatureDetectionFilter.h | 0 ...PUImageSingleComponentGaussianBlurFilter.h | 0 .../Headers}/GPUImageSketchFilter.h | 0 .../Headers}/GPUImageSmoothToonFilter.h | 0 .../GPUImageSobelEdgeDetectionFilter.h | 0 .../Headers}/GPUImageSoftEleganceFilter.h | 0 .../Headers}/GPUImageSoftLightBlendFilter.h | 0 .../Headers}/GPUImageSolarizeFilter.h | 0 .../Headers}/GPUImageSolidColorGenerator.h | 0 .../Headers}/GPUImageSourceOverBlendFilter.h | 0 .../Headers}/GPUImageSphereRefractionFilter.h | 0 .../Headers}/GPUImageStillCamera.h | 0 .../GPUImageStretchDistortionFilter.h | 0 .../Headers}/GPUImageSubtractBlendFilter.h | 0 .../Headers}/GPUImageSwirlFilter.h | 0 .../Headers}/GPUImageTextureInput.h | 0 .../Headers}/GPUImageTextureOutput.h | 0 .../Headers}/GPUImageThreeInputFilter.h | 0 .../GPUImageThresholdEdgeDetectionFilter.h | 0 .../Headers}/GPUImageThresholdSketchFilter.h | 0 ...geThresholdedNonMaximumSuppressionFilter.h | 0 .../Headers}/GPUImageTiltShiftFilter.h | 0 .../Headers}/GPUImageToneCurveFilter.h | 0 .../Headers}/GPUImageToonFilter.h | 0 .../Headers}/GPUImageTransformFilter.h | 0 ...UImageTwoInputCrossTextureSamplingFilter.h | 0 .../Headers}/GPUImageTwoInputFilter.h | 0 .../Headers}/GPUImageTwoPassFilter.h | 0 .../GPUImageTwoPassTextureSamplingFilter.h | 0 .../Headers}/GPUImageUIElement.h | 0 .../Headers}/GPUImageUnsharpMaskFilter.h | 0 .../Headers}/GPUImageVideoCamera.h | 0 .../Headers}/GPUImageView.h | 0 .../Headers}/GPUImageVignetteFilter.h | 0 .../Headers}/GPUImageVoronoiConsumerFilter.h | 0 .../GPUImageWeakPixelInclusionFilter.h | 0 .../Headers}/GPUImageWhiteBalanceFilter.h | 0 .../Headers}/GPUImageXYDerivativeFilter.h | 0 .../Headers}/GPUImageZoomBlurFilter.h | 0 .../Headers}/GPUImageiOSBlurFilter.h | 0 Vendor/GPUImage.framework/Info.plist | Bin 0 -> 745 bytes .../Modules/module.modulemap | 6 + .../_CodeSignature/CodeDirectory | Bin 0 -> 175 bytes .../_CodeSignature/CodeRequirements | Bin 0 -> 192 bytes .../_CodeSignature/CodeRequirements-1 | Bin 0 -> 223 bytes .../_CodeSignature/CodeResources | 2706 +++++++++++ .../_CodeSignature/CodeSignature | Bin 0 -> 4726 bytes .../pili_librtmp.framework/Headers}/amf.h | 0 .../pili_librtmp.framework/Headers}/bytes.h | 0 .../pili_librtmp.framework/Headers}/dh.h | 0 .../Headers}/dhgroups.h | 0 .../pili_librtmp.framework/Headers}/error.h | 1 + .../Headers}/handshake.h | 0 .../pili_librtmp.framework/Headers}/http.h | 0 .../pili_librtmp.framework/Headers}/log.h | 0 .../pili_librtmp.framework/Headers}/rtmp.h | 12 +- .../Headers}/rtmp_sys.h | 0 Vendor/pili_librtmp.framework/Info.plist | Bin 0 -> 753 bytes .../_CodeSignature/CodeDirectory | Bin 0 -> 166 bytes .../_CodeSignature/CodeRequirements | Bin 0 -> 184 bytes .../_CodeSignature/CodeRequirements-1 | Bin 0 -> 214 bytes .../_CodeSignature/CodeResources | 261 ++ .../_CodeSignature/CodeSignature | Bin 0 -> 4726 bytes Vendor/pili_librtmp.framework/pili_librtmp | Bin 0 -> 443120 bytes scripts/build-universal-framework.sh | 31 - uncrustify.cfg | 643 --- 474 files changed, 4102 insertions(+), 40545 deletions(-) delete mode 100644 LFLiveKit.xcodeproj/project.pbxproj delete mode 100644 LFLiveKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 LFLiveKit.xcodeproj/xcshareddata/xcschemes/LFLiveKit.xcscheme delete mode 100644 LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 LFLiveKit.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 LFLiveKit/LFLiveKit.h create mode 100644 LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj create mode 100644 LFLiveKit/LFLiveKit/LFLiveKit.h rename LFLiveKit/{ => LFLiveKit}/LFLiveSession.h (95%) rename LFLiveKit/{ => LFLiveKit}/LFLiveSession.m (97%) rename LFLiveKit/{ => LFLiveKit}/capture/LFAudioCapture.h (98%) rename LFLiveKit/{ => LFLiveKit}/capture/LFAudioCapture.m (99%) rename LFLiveKit/{ => LFLiveKit}/capture/LFVideoCapture.h (95%) rename LFLiveKit/{ => LFLiveKit}/capture/LFVideoCapture.m (97%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFAVEncoder.h (92%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFAVEncoder.mm (96%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFMP4Atom.h (100%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFMP4Atom.m (96%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFNALUnit.cpp (94%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFNALUnit.h (100%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFVideoEncoder.h (100%) rename LFLiveKit/{ => LFLiveKit}/coder/H264/LFVideoEncoder.m (100%) rename LFLiveKit/{ => LFLiveKit}/coder/LFAudioEncoding.h (91%) rename LFLiveKit/{ => LFLiveKit}/coder/LFH264VideoEncoder.h (100%) rename LFLiveKit/{ => LFLiveKit}/coder/LFH264VideoEncoder.mm (91%) rename LFLiveKit/{ => LFLiveKit}/coder/LFHardwareAudioEncoder.h (100%) rename LFLiveKit/{ => LFLiveKit}/coder/LFHardwareAudioEncoder.m (90%) rename LFLiveKit/{ => LFLiveKit}/coder/LFHardwareVideoEncoder.h (100%) rename LFLiveKit/{ => LFLiveKit}/coder/LFHardwareVideoEncoder.m (95%) rename LFLiveKit/{ => LFLiveKit}/coder/LFVideoEncoding.h (99%) rename LFLiveKit/{ => LFLiveKit}/configuration/LFLiveAudioConfiguration.h (97%) rename LFLiveKit/{ => LFLiveKit}/configuration/LFLiveAudioConfiguration.m (100%) rename LFLiveKit/{ => LFLiveKit}/configuration/LFLiveVideoConfiguration.h (100%) rename LFLiveKit/{ => LFLiveKit}/configuration/LFLiveVideoConfiguration.m (100%) rename LFLiveKit/{ => LFLiveKit}/filter/LFGPUImageBeautyFilter.h (100%) rename LFLiveKit/{ => LFLiveKit}/filter/LFGPUImageBeautyFilter.m (99%) rename LFLiveKit/{ => LFLiveKit}/filter/LFGPUImageEmptyFilter.h (100%) rename LFLiveKit/{ => LFLiveKit}/filter/LFGPUImageEmptyFilter.m (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFAudioFrame.h (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFAudioFrame.m (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFFrame.h (85%) rename LFLiveKit/{ => LFLiveKit}/objects/LFFrame.m (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFLiveDebug.h (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFLiveDebug.m (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFLiveStreamInfo.h (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFLiveStreamInfo.m (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFVideoFrame.h (100%) rename LFLiveKit/{ => LFLiveKit}/objects/LFVideoFrame.m (100%) rename LFLiveKit/{ => LFLiveKit}/publish/LFStreamRTMPSocket.h (100%) rename LFLiveKit/{publish/LFStreamRTMPSocket.m => LFLiveKit/publish/LFStreamRtmpSocket.m} (99%) rename LFLiveKit/{ => LFLiveKit}/publish/LFStreamSocket.h (100%) rename LFLiveKit/{ => LFLiveKit}/publish/LFStreamingBuffer.h (100%) rename LFLiveKit/{ => LFLiveKit}/publish/LFStreamingBuffer.m (100%) rename LFLiveKit/{ => LFLiveKit}/publish/NSMutableArray+LFAdd.h (100%) rename LFLiveKit/{ => LFLiveKit}/publish/NSMutableArray+LFAdd.m (100%) delete mode 100755 LFLiveKit/Vendor/GPUImage/GLProgram.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMovie.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageOutput.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m delete mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m delete mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m delete mode 100644 LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m delete mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m delete mode 100755 LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m delete mode 100644 LFLiveKit/Vendor/pili-librtmp/amf.c delete mode 100644 LFLiveKit/Vendor/pili-librtmp/error.c delete mode 100644 LFLiveKit/Vendor/pili-librtmp/hashswf.c delete mode 100644 LFLiveKit/Vendor/pili-librtmp/log.c delete mode 100644 LFLiveKit/Vendor/pili-librtmp/parseurl.c delete mode 100644 LFLiveKit/Vendor/pili-librtmp/rtmp.c delete mode 100755 LFLiveKit/coder/H264/LICENSE.markdown delete mode 100644 LFLiveKitDemo/.gitignore delete mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme delete mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcworkspace/contents.xcworkspacedata delete mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100755 LFLiveKitDemo/Podfile delete mode 100644 LFLiveKitSwiftDemo/.gitignore delete mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitSwiftDemo.xcscheme delete mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata delete mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100755 LFLiveKitSwiftDemo/Podfile delete mode 100644 LFLiveKitTests/Info.plist delete mode 100644 LFLiveKitTests/LFLiveKitTests.m create mode 100644 Vendor/GPUImage.framework/GPUImage rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GLProgram.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImage.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImage3x3ConvolutionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImage3x3TextureSamplingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageAdaptiveThresholdFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageAddBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageAlphaBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageAmatorkaFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageAverageColor.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageAverageLuminanceThresholdFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageBilateralFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageBoxBlurFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageBrightnessFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageBuffer.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageBulgeDistortionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageCGAColorspaceFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageCannyEdgeDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageChromaKeyBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageChromaKeyFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageClosingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorBurnBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorConversion.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorDodgeBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorInvertFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorLocalBinaryPatternFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorMatrixFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColorPackingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColourFASTFeatureDetector.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageColourFASTSamplingOperation.h (100%) rename {LFLiveKit/Vendor/GPUImage/iOS => Vendor/GPUImage.framework/Headers}/GPUImageContext.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageContrastFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageCropFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageCrosshairGenerator.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageCrosshatchFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDarkenBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDifferenceBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDilationFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDirectionalNonMaximumSuppressionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDirectionalSobelEdgeDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDissolveBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageDivideBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageEmbossFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageErosionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageExclusionBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageExposureFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFASTCornerDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFalseColorFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFilterGroup.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFilterPipeline.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFourInputFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFramebuffer.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageFramebufferCache.h (100%) rename {LFLiveKit/Vendor/GPUImage/iOS/Framework => Vendor/GPUImage.framework/Headers}/GPUImageFramework.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageGammaFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageGaussianBlurFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageGaussianBlurPositionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageGaussianSelectiveBlurFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageGlassSphereFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageGrayscaleFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHSBFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHalftoneFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHardLightBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHarrisCornerDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHazeFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHighPassFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHighlightShadowFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHistogramEqualizationFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHistogramFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHistogramGenerator.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHoughTransformLineDetector.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHueBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageHueFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageJFAVoronoiFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageKuwaharaFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageKuwaharaRadius3Filter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLanczosResamplingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLaplacianFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLevelsFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLightenBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLineGenerator.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLinearBurnBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLocalBinaryPatternFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLookupFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLowPassFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLuminanceRangeFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLuminanceThresholdFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLuminosity.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageLuminosityBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMaskFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMedianFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMissEtikateFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMonochromeFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMosaicFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMotionBlurFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMotionDetector.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMovie.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMovieComposition.h (100%) rename {LFLiveKit/Vendor/GPUImage/iOS => Vendor/GPUImage.framework/Headers}/GPUImageMovieWriter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageMultiplyBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageNobleCornerDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageNonMaximumSuppressionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageNormalBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageOpacityFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageOpeningFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageOutput.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageOverlayBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageParallelCoordinateLineTransformFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePerlinNoiseFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage/iOS => Vendor/GPUImage.framework/Headers}/GPUImagePicture+TextureSubimage.h (100%) rename {LFLiveKit/Vendor/GPUImage/iOS => Vendor/GPUImage.framework/Headers}/GPUImagePicture.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePinchDistortionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePixellateFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePixellatePositionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePoissonBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePolarPixellateFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePolkaDotFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePosterizeFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImagePrewittEdgeDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRGBClosingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRGBDilationFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRGBErosionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRGBFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRGBOpeningFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRawDataInput.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageRawDataOutput.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSaturationBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSaturationFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageScreenBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSepiaFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSharpenFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageShiTomasiFeatureDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSingleComponentGaussianBlurFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSketchFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSmoothToonFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSobelEdgeDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSoftEleganceFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSoftLightBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSolarizeFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSolidColorGenerator.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSourceOverBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSphereRefractionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageStillCamera.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageStretchDistortionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSubtractBlendFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageSwirlFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTextureInput.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTextureOutput.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageThreeInputFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageThresholdEdgeDetectionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageThresholdSketchFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageThresholdedNonMaximumSuppressionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTiltShiftFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageToneCurveFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageToonFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTransformFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTwoInputCrossTextureSamplingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTwoInputFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTwoPassFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageTwoPassTextureSamplingFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageUIElement.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageUnsharpMaskFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageVideoCamera.h (100%) rename {LFLiveKit/Vendor/GPUImage/iOS => Vendor/GPUImage.framework/Headers}/GPUImageView.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageVignetteFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageVoronoiConsumerFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageWeakPixelInclusionFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageWhiteBalanceFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageXYDerivativeFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageZoomBlurFilter.h (100%) rename {LFLiveKit/Vendor/GPUImage => Vendor/GPUImage.framework/Headers}/GPUImageiOSBlurFilter.h (100%) create mode 100644 Vendor/GPUImage.framework/Info.plist create mode 100644 Vendor/GPUImage.framework/Modules/module.modulemap create mode 100644 Vendor/GPUImage.framework/_CodeSignature/CodeDirectory create mode 100644 Vendor/GPUImage.framework/_CodeSignature/CodeRequirements create mode 100644 Vendor/GPUImage.framework/_CodeSignature/CodeRequirements-1 create mode 100644 Vendor/GPUImage.framework/_CodeSignature/CodeResources create mode 100644 Vendor/GPUImage.framework/_CodeSignature/CodeSignature rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/amf.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/bytes.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/dh.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/dhgroups.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/error.h (96%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/handshake.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/http.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/log.h (100%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/rtmp.h (97%) mode change 100644 => 100755 rename {LFLiveKit/Vendor/pili-librtmp => Vendor/pili_librtmp.framework/Headers}/rtmp_sys.h (100%) mode change 100644 => 100755 create mode 100644 Vendor/pili_librtmp.framework/Info.plist create mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeDirectory create mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements create mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements-1 create mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeResources create mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeSignature create mode 100644 Vendor/pili_librtmp.framework/pili_librtmp delete mode 100755 scripts/build-universal-framework.sh delete mode 100644 uncrustify.cfg diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 9e379473..411f4b84 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "2.1" + s.version = "2.2" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -11,8 +11,8 @@ Pod::Spec.new do |s| s.ios.deployment_target = "7.0" s.source = { :git => "https://github.com/LaiFengiOS/LFLiveKit.git", :tag => "#{s.version}" } s.source_files = "LFLiveKit/**/*.{h,m,mm,cpp,c}" - #s.public_header_files = "LFLiveKit/**/*.h" - s.public_header_files = ['LFLiveKit/*.h', 'LFLiveKit/objects/*.h', 'LFLiveKit/configuration/*.h'] + #s.public_header_files = "LFLiveKit/LFLiveKit/**/*.h" + s.public_header_files = ['LFLiveKit/LFLiveKit/*.h', 'LFLiveKit/LFLiveKit/objects/*.h', 'LFLiveKit/LFLiveKit/configuration/*.h'] s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit" s.libraries = "c++", "z" diff --git a/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit.xcodeproj/project.pbxproj deleted file mode 100644 index e9d8ebea..00000000 --- a/LFLiveKit.xcodeproj/project.pbxproj +++ /dev/null @@ -1,2295 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXAggregateTarget section */ - 84C329DE1D61EB0C00984B01 /* LFLiveKit-universal */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 84C329E11D61EB0C00984B01 /* Build configuration list for PBXAggregateTarget "LFLiveKit-universal" */; - buildPhases = ( - 84C329E41D61EB1B00984B01 /* ShellScript */, - ); - dependencies = ( - 84C329E31D61EB1600984B01 /* PBXTargetDependency */, - ); - name = "LFLiveKit-universal"; - productName = "LFLiveKit-universal"; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001F8D1D0015D10026C63F /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; }; - 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001F991D0015D10026C63F /* LFLiveKitTests.m */; }; - 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA51D0016380026C63F /* LFAudioCapture.h */; }; - 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA61D0016380026C63F /* LFAudioCapture.m */; }; - 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FA71D0016380026C63F /* LFVideoCapture.h */; }; - 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FA81D0016380026C63F /* LFVideoCapture.m */; }; - 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAA1D0016380026C63F /* LFAudioEncoding.h */; }; - 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */; }; - 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */; }; - 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */; }; - 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */; }; - 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FAF1D0016380026C63F /* LFVideoEncoding.h */; }; - 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */; }; - 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */; }; - 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */; }; - 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */; }; - 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */; }; - 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */; }; - 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBA1D0016380026C63F /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBB1D0016380026C63F /* LFLiveSession.m */; }; - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBD1D0016380026C63F /* LFAudioFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FBE1D0016380026C63F /* LFAudioFrame.m */; }; - 84001FE71D0016380026C63F /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FBF1D0016380026C63F /* LFFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FE81D0016380026C63F /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC01D0016380026C63F /* LFFrame.m */; }; - 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC11D0016380026C63F /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC21D0016380026C63F /* LFLiveDebug.m */; }; - 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */; }; - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84001FC51D0016380026C63F /* LFVideoFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84001FC61D0016380026C63F /* LFVideoFrame.m */; }; - 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF61D0017590026C63F /* AVFoundation.framework */; }; - 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FF81D00175D0026C63F /* Foundation.framework */; }; - 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFA1D0017630026C63F /* UIKit.framework */; }; - 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFC1D0017680026C63F /* AudioToolbox.framework */; }; - 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84001FFE1D00176C0026C63F /* VideoToolbox.framework */; }; - 840020011D0017850026C63F /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 840020001D0017850026C63F /* libz.tbd */; }; - 8437239A1D4F260A002B398B /* GLProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437222D1D4F260A002B398B /* GLProgram.h */; }; - 8437239B1D4F260A002B398B /* GLProgram.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437222E1D4F260A002B398B /* GLProgram.m */; }; - 8437239C1D4F260A002B398B /* GPUImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437222F1D4F260A002B398B /* GPUImage.h */; }; - 8437239D1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722301D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h */; }; - 8437239E1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722311D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m */; }; - 8437239F1D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722321D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h */; }; - 843723A01D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722331D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m */; }; - 843723A11D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722341D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h */; }; - 843723A21D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722351D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m */; }; - 843723A31D4F260A002B398B /* GPUImageAddBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722361D4F260A002B398B /* GPUImageAddBlendFilter.h */; }; - 843723A41D4F260A002B398B /* GPUImageAddBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722371D4F260A002B398B /* GPUImageAddBlendFilter.m */; }; - 843723A51D4F260A002B398B /* GPUImageAlphaBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722381D4F260A002B398B /* GPUImageAlphaBlendFilter.h */; }; - 843723A61D4F260A002B398B /* GPUImageAlphaBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722391D4F260A002B398B /* GPUImageAlphaBlendFilter.m */; }; - 843723A71D4F260A002B398B /* GPUImageAmatorkaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437223A1D4F260A002B398B /* GPUImageAmatorkaFilter.h */; }; - 843723A81D4F260A002B398B /* GPUImageAmatorkaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437223B1D4F260A002B398B /* GPUImageAmatorkaFilter.m */; }; - 843723A91D4F260A002B398B /* GPUImageAverageColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437223C1D4F260A002B398B /* GPUImageAverageColor.h */; }; - 843723AA1D4F260A002B398B /* GPUImageAverageColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437223D1D4F260A002B398B /* GPUImageAverageColor.m */; }; - 843723AB1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437223E1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h */; }; - 843723AC1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437223F1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m */; }; - 843723AD1D4F260A002B398B /* GPUImageBilateralFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722401D4F260A002B398B /* GPUImageBilateralFilter.h */; }; - 843723AE1D4F260A002B398B /* GPUImageBilateralFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722411D4F260A002B398B /* GPUImageBilateralFilter.m */; }; - 843723AF1D4F260A002B398B /* GPUImageBoxBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722421D4F260A002B398B /* GPUImageBoxBlurFilter.h */; }; - 843723B01D4F260A002B398B /* GPUImageBoxBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722431D4F260A002B398B /* GPUImageBoxBlurFilter.m */; }; - 843723B11D4F260A002B398B /* GPUImageBrightnessFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722441D4F260A002B398B /* GPUImageBrightnessFilter.h */; }; - 843723B21D4F260A002B398B /* GPUImageBrightnessFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722451D4F260A002B398B /* GPUImageBrightnessFilter.m */; }; - 843723B31D4F260A002B398B /* GPUImageBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722461D4F260A002B398B /* GPUImageBuffer.h */; }; - 843723B41D4F260A002B398B /* GPUImageBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722471D4F260A002B398B /* GPUImageBuffer.m */; }; - 843723B51D4F260A002B398B /* GPUImageBulgeDistortionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722481D4F260A002B398B /* GPUImageBulgeDistortionFilter.h */; }; - 843723B61D4F260A002B398B /* GPUImageBulgeDistortionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722491D4F260A002B398B /* GPUImageBulgeDistortionFilter.m */; }; - 843723B71D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437224A1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h */; }; - 843723B81D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437224B1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m */; }; - 843723B91D4F260A002B398B /* GPUImageCGAColorspaceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437224C1D4F260A002B398B /* GPUImageCGAColorspaceFilter.h */; }; - 843723BA1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437224D1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m */; }; - 843723BB1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437224E1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h */; }; - 843723BC1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437224F1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m */; }; - 843723BD1D4F260A002B398B /* GPUImageChromaKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722501D4F260A002B398B /* GPUImageChromaKeyFilter.h */; }; - 843723BE1D4F260A002B398B /* GPUImageChromaKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722511D4F260A002B398B /* GPUImageChromaKeyFilter.m */; }; - 843723BF1D4F260A002B398B /* GPUImageClosingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722521D4F260A002B398B /* GPUImageClosingFilter.h */; }; - 843723C01D4F260A002B398B /* GPUImageClosingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722531D4F260A002B398B /* GPUImageClosingFilter.m */; }; - 843723C11D4F260A002B398B /* GPUImageColorBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722541D4F260A002B398B /* GPUImageColorBlendFilter.h */; }; - 843723C21D4F260A002B398B /* GPUImageColorBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722551D4F260A002B398B /* GPUImageColorBlendFilter.m */; }; - 843723C31D4F260A002B398B /* GPUImageColorBurnBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722561D4F260A002B398B /* GPUImageColorBurnBlendFilter.h */; }; - 843723C41D4F260A002B398B /* GPUImageColorBurnBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722571D4F260A002B398B /* GPUImageColorBurnBlendFilter.m */; }; - 843723C51D4F260A002B398B /* GPUImageColorConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722581D4F260A002B398B /* GPUImageColorConversion.h */; }; - 843723C61D4F260A002B398B /* GPUImageColorConversion.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722591D4F260A002B398B /* GPUImageColorConversion.m */; }; - 843723C71D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437225A1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h */; }; - 843723C81D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437225B1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m */; }; - 843723C91D4F260A002B398B /* GPUImageColorInvertFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437225C1D4F260A002B398B /* GPUImageColorInvertFilter.h */; }; - 843723CA1D4F260A002B398B /* GPUImageColorInvertFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437225D1D4F260A002B398B /* GPUImageColorInvertFilter.m */; }; - 843723CB1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437225E1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h */; }; - 843723CC1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437225F1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m */; }; - 843723CD1D4F260A002B398B /* GPUImageColorMatrixFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722601D4F260A002B398B /* GPUImageColorMatrixFilter.h */; }; - 843723CE1D4F260A002B398B /* GPUImageColorMatrixFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722611D4F260A002B398B /* GPUImageColorMatrixFilter.m */; }; - 843723CF1D4F260A002B398B /* GPUImageColorPackingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722621D4F260A002B398B /* GPUImageColorPackingFilter.h */; }; - 843723D01D4F260A002B398B /* GPUImageColorPackingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722631D4F260A002B398B /* GPUImageColorPackingFilter.m */; }; - 843723D11D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722641D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h */; }; - 843723D21D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722651D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m */; }; - 843723D31D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722661D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h */; }; - 843723D41D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722671D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m */; }; - 843723D51D4F260A002B398B /* GPUImageContrastFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722681D4F260A002B398B /* GPUImageContrastFilter.h */; }; - 843723D61D4F260A002B398B /* GPUImageContrastFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722691D4F260A002B398B /* GPUImageContrastFilter.m */; }; - 843723D71D4F260A002B398B /* GPUImageCropFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437226A1D4F260A002B398B /* GPUImageCropFilter.h */; }; - 843723D81D4F260A002B398B /* GPUImageCropFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437226B1D4F260A002B398B /* GPUImageCropFilter.m */; }; - 843723D91D4F260A002B398B /* GPUImageCrosshairGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437226C1D4F260A002B398B /* GPUImageCrosshairGenerator.h */; }; - 843723DA1D4F260A002B398B /* GPUImageCrosshairGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437226D1D4F260A002B398B /* GPUImageCrosshairGenerator.m */; }; - 843723DB1D4F260A002B398B /* GPUImageCrosshatchFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437226E1D4F260A002B398B /* GPUImageCrosshatchFilter.h */; }; - 843723DC1D4F260A002B398B /* GPUImageCrosshatchFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437226F1D4F260A002B398B /* GPUImageCrosshatchFilter.m */; }; - 843723DD1D4F260A002B398B /* GPUImageDarkenBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722701D4F260A002B398B /* GPUImageDarkenBlendFilter.h */; }; - 843723DE1D4F260A002B398B /* GPUImageDarkenBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722711D4F260A002B398B /* GPUImageDarkenBlendFilter.m */; }; - 843723DF1D4F260A002B398B /* GPUImageDifferenceBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722721D4F260A002B398B /* GPUImageDifferenceBlendFilter.h */; }; - 843723E01D4F260A002B398B /* GPUImageDifferenceBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722731D4F260A002B398B /* GPUImageDifferenceBlendFilter.m */; }; - 843723E11D4F260A002B398B /* GPUImageDilationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722741D4F260A002B398B /* GPUImageDilationFilter.h */; }; - 843723E21D4F260A002B398B /* GPUImageDilationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722751D4F260A002B398B /* GPUImageDilationFilter.m */; }; - 843723E31D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722761D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h */; }; - 843723E41D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722771D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m */; }; - 843723E51D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722781D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h */; }; - 843723E61D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722791D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m */; }; - 843723E71D4F260A002B398B /* GPUImageDissolveBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437227A1D4F260A002B398B /* GPUImageDissolveBlendFilter.h */; }; - 843723E81D4F260A002B398B /* GPUImageDissolveBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437227B1D4F260A002B398B /* GPUImageDissolveBlendFilter.m */; }; - 843723E91D4F260A002B398B /* GPUImageDivideBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437227C1D4F260A002B398B /* GPUImageDivideBlendFilter.h */; }; - 843723EA1D4F260A002B398B /* GPUImageDivideBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437227D1D4F260A002B398B /* GPUImageDivideBlendFilter.m */; }; - 843723EB1D4F260A002B398B /* GPUImageEmbossFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437227E1D4F260A002B398B /* GPUImageEmbossFilter.h */; }; - 843723EC1D4F260A002B398B /* GPUImageEmbossFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437227F1D4F260A002B398B /* GPUImageEmbossFilter.m */; }; - 843723ED1D4F260A002B398B /* GPUImageErosionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722801D4F260A002B398B /* GPUImageErosionFilter.h */; }; - 843723EE1D4F260A002B398B /* GPUImageErosionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722811D4F260A002B398B /* GPUImageErosionFilter.m */; }; - 843723EF1D4F260A002B398B /* GPUImageExclusionBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722821D4F260A002B398B /* GPUImageExclusionBlendFilter.h */; }; - 843723F01D4F260A002B398B /* GPUImageExclusionBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722831D4F260A002B398B /* GPUImageExclusionBlendFilter.m */; }; - 843723F11D4F260A002B398B /* GPUImageExposureFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722841D4F260A002B398B /* GPUImageExposureFilter.h */; }; - 843723F21D4F260A002B398B /* GPUImageExposureFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722851D4F260A002B398B /* GPUImageExposureFilter.m */; }; - 843723F31D4F260A002B398B /* GPUImageFalseColorFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722861D4F260A002B398B /* GPUImageFalseColorFilter.h */; }; - 843723F41D4F260A002B398B /* GPUImageFalseColorFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722871D4F260A002B398B /* GPUImageFalseColorFilter.m */; }; - 843723F51D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722881D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h */; }; - 843723F61D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722891D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m */; }; - 843723F71D4F260A002B398B /* GPUImageFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437228A1D4F260A002B398B /* GPUImageFilter.h */; }; - 843723F81D4F260A002B398B /* GPUImageFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437228B1D4F260A002B398B /* GPUImageFilter.m */; }; - 843723F91D4F260A002B398B /* GPUImageFilterGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437228C1D4F260A002B398B /* GPUImageFilterGroup.h */; }; - 843723FA1D4F260A002B398B /* GPUImageFilterGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437228D1D4F260A002B398B /* GPUImageFilterGroup.m */; }; - 843723FB1D4F260A002B398B /* GPUImageFilterPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437228E1D4F260A002B398B /* GPUImageFilterPipeline.h */; }; - 843723FC1D4F260A002B398B /* GPUImageFilterPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437228F1D4F260A002B398B /* GPUImageFilterPipeline.m */; }; - 843723FD1D4F260A002B398B /* GPUImageFourInputFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722901D4F260A002B398B /* GPUImageFourInputFilter.h */; }; - 843723FE1D4F260A002B398B /* GPUImageFourInputFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722911D4F260A002B398B /* GPUImageFourInputFilter.m */; }; - 843723FF1D4F260A002B398B /* GPUImageFramebuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722921D4F260A002B398B /* GPUImageFramebuffer.h */; }; - 843724001D4F260A002B398B /* GPUImageFramebuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722931D4F260A002B398B /* GPUImageFramebuffer.m */; }; - 843724011D4F260A002B398B /* GPUImageFramebufferCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722941D4F260A002B398B /* GPUImageFramebufferCache.h */; }; - 843724021D4F260A002B398B /* GPUImageFramebufferCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722951D4F260A002B398B /* GPUImageFramebufferCache.m */; }; - 843724031D4F260A002B398B /* GPUImageGammaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722961D4F260A002B398B /* GPUImageGammaFilter.h */; }; - 843724041D4F260A002B398B /* GPUImageGammaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722971D4F260A002B398B /* GPUImageGammaFilter.m */; }; - 843724051D4F260A002B398B /* GPUImageGaussianBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722981D4F260A002B398B /* GPUImageGaussianBlurFilter.h */; }; - 843724061D4F260A002B398B /* GPUImageGaussianBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722991D4F260A002B398B /* GPUImageGaussianBlurFilter.m */; }; - 843724071D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437229A1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h */; }; - 843724081D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437229B1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m */; }; - 843724091D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437229C1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h */; }; - 8437240A1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437229D1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m */; }; - 8437240B1D4F260A002B398B /* GPUImageGlassSphereFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437229E1D4F260A002B398B /* GPUImageGlassSphereFilter.h */; }; - 8437240C1D4F260A002B398B /* GPUImageGlassSphereFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437229F1D4F260A002B398B /* GPUImageGlassSphereFilter.m */; }; - 8437240D1D4F260A002B398B /* GPUImageGrayscaleFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A01D4F260A002B398B /* GPUImageGrayscaleFilter.h */; }; - 8437240E1D4F260A002B398B /* GPUImageGrayscaleFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A11D4F260A002B398B /* GPUImageGrayscaleFilter.m */; }; - 8437240F1D4F260A002B398B /* GPUImageHalftoneFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A21D4F260A002B398B /* GPUImageHalftoneFilter.h */; }; - 843724101D4F260A002B398B /* GPUImageHalftoneFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A31D4F260A002B398B /* GPUImageHalftoneFilter.m */; }; - 843724111D4F260A002B398B /* GPUImageHardLightBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A41D4F260A002B398B /* GPUImageHardLightBlendFilter.h */; }; - 843724121D4F260A002B398B /* GPUImageHardLightBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A51D4F260A002B398B /* GPUImageHardLightBlendFilter.m */; }; - 843724131D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A61D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h */; }; - 843724141D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A71D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m */; }; - 843724151D4F260A002B398B /* GPUImageHazeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722A81D4F260A002B398B /* GPUImageHazeFilter.h */; }; - 843724161D4F260A002B398B /* GPUImageHazeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722A91D4F260A002B398B /* GPUImageHazeFilter.m */; }; - 843724171D4F260A002B398B /* GPUImageHighlightShadowFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722AA1D4F260A002B398B /* GPUImageHighlightShadowFilter.h */; }; - 843724181D4F260A002B398B /* GPUImageHighlightShadowFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722AB1D4F260A002B398B /* GPUImageHighlightShadowFilter.m */; }; - 843724191D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722AC1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h */; }; - 8437241A1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722AD1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m */; }; - 8437241B1D4F260A002B398B /* GPUImageHighPassFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722AE1D4F260A002B398B /* GPUImageHighPassFilter.h */; }; - 8437241C1D4F260A002B398B /* GPUImageHighPassFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722AF1D4F260A002B398B /* GPUImageHighPassFilter.m */; }; - 8437241D1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B01D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h */; }; - 8437241E1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B11D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m */; }; - 8437241F1D4F260A002B398B /* GPUImageHistogramFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B21D4F260A002B398B /* GPUImageHistogramFilter.h */; }; - 843724201D4F260A002B398B /* GPUImageHistogramFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B31D4F260A002B398B /* GPUImageHistogramFilter.m */; }; - 843724211D4F260A002B398B /* GPUImageHistogramGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B41D4F260A002B398B /* GPUImageHistogramGenerator.h */; }; - 843724221D4F260A002B398B /* GPUImageHistogramGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B51D4F260A002B398B /* GPUImageHistogramGenerator.m */; }; - 843724231D4F260A002B398B /* GPUImageHoughTransformLineDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B61D4F260A002B398B /* GPUImageHoughTransformLineDetector.h */; }; - 843724241D4F260A002B398B /* GPUImageHoughTransformLineDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B71D4F260A002B398B /* GPUImageHoughTransformLineDetector.m */; }; - 843724251D4F260A002B398B /* GPUImageHSBFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722B81D4F260A002B398B /* GPUImageHSBFilter.h */; }; - 843724261D4F260A002B398B /* GPUImageHSBFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722B91D4F260A002B398B /* GPUImageHSBFilter.m */; }; - 843724271D4F260A002B398B /* GPUImageHueBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722BA1D4F260A002B398B /* GPUImageHueBlendFilter.h */; }; - 843724281D4F260A002B398B /* GPUImageHueBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722BB1D4F260A002B398B /* GPUImageHueBlendFilter.m */; }; - 843724291D4F260A002B398B /* GPUImageHueFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722BC1D4F260A002B398B /* GPUImageHueFilter.h */; }; - 8437242A1D4F260A002B398B /* GPUImageHueFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722BD1D4F260A002B398B /* GPUImageHueFilter.m */; }; - 8437242B1D4F260A002B398B /* GPUImageiOSBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722BE1D4F260A002B398B /* GPUImageiOSBlurFilter.h */; }; - 8437242C1D4F260A002B398B /* GPUImageiOSBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722BF1D4F260A002B398B /* GPUImageiOSBlurFilter.m */; }; - 8437242D1D4F260A002B398B /* GPUImageJFAVoronoiFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C01D4F260A002B398B /* GPUImageJFAVoronoiFilter.h */; }; - 8437242E1D4F260A002B398B /* GPUImageJFAVoronoiFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C11D4F260A002B398B /* GPUImageJFAVoronoiFilter.m */; }; - 8437242F1D4F260A002B398B /* GPUImageKuwaharaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C21D4F260A002B398B /* GPUImageKuwaharaFilter.h */; }; - 843724301D4F260A002B398B /* GPUImageKuwaharaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C31D4F260A002B398B /* GPUImageKuwaharaFilter.m */; }; - 843724311D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C41D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h */; }; - 843724321D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C51D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m */; }; - 843724331D4F260A002B398B /* GPUImageLanczosResamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C61D4F260A002B398B /* GPUImageLanczosResamplingFilter.h */; }; - 843724341D4F260A002B398B /* GPUImageLanczosResamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C71D4F260A002B398B /* GPUImageLanczosResamplingFilter.m */; }; - 843724351D4F260A002B398B /* GPUImageLaplacianFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722C81D4F260A002B398B /* GPUImageLaplacianFilter.h */; }; - 843724361D4F260A002B398B /* GPUImageLaplacianFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722C91D4F260A002B398B /* GPUImageLaplacianFilter.m */; }; - 843724371D4F260A002B398B /* GPUImageLevelsFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722CA1D4F260A002B398B /* GPUImageLevelsFilter.h */; }; - 843724381D4F260A002B398B /* GPUImageLevelsFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722CB1D4F260A002B398B /* GPUImageLevelsFilter.m */; }; - 843724391D4F260A002B398B /* GPUImageLightenBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722CC1D4F260A002B398B /* GPUImageLightenBlendFilter.h */; }; - 8437243A1D4F260A002B398B /* GPUImageLightenBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722CD1D4F260A002B398B /* GPUImageLightenBlendFilter.m */; }; - 8437243B1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722CE1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h */; }; - 8437243C1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722CF1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m */; }; - 8437243D1D4F260A002B398B /* GPUImageLineGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D01D4F260A002B398B /* GPUImageLineGenerator.h */; }; - 8437243E1D4F260A002B398B /* GPUImageLineGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D11D4F260A002B398B /* GPUImageLineGenerator.m */; }; - 8437243F1D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D21D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h */; }; - 843724401D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D31D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m */; }; - 843724411D4F260A002B398B /* GPUImageLookupFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D41D4F260A002B398B /* GPUImageLookupFilter.h */; }; - 843724421D4F260A002B398B /* GPUImageLookupFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D51D4F260A002B398B /* GPUImageLookupFilter.m */; }; - 843724431D4F260A002B398B /* GPUImageLowPassFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D61D4F260A002B398B /* GPUImageLowPassFilter.h */; }; - 843724441D4F260A002B398B /* GPUImageLowPassFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D71D4F260A002B398B /* GPUImageLowPassFilter.m */; }; - 843724451D4F260A002B398B /* GPUImageLuminanceRangeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722D81D4F260A002B398B /* GPUImageLuminanceRangeFilter.h */; }; - 843724461D4F260A002B398B /* GPUImageLuminanceRangeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722D91D4F260A002B398B /* GPUImageLuminanceRangeFilter.m */; }; - 843724471D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722DA1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h */; }; - 843724481D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722DB1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m */; }; - 843724491D4F260A002B398B /* GPUImageLuminosity.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722DC1D4F260A002B398B /* GPUImageLuminosity.h */; }; - 8437244A1D4F260A002B398B /* GPUImageLuminosity.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722DD1D4F260A002B398B /* GPUImageLuminosity.m */; }; - 8437244B1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722DE1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h */; }; - 8437244C1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722DF1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m */; }; - 8437244D1D4F260A002B398B /* GPUImageMaskFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E01D4F260A002B398B /* GPUImageMaskFilter.h */; }; - 8437244E1D4F260A002B398B /* GPUImageMaskFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E11D4F260A002B398B /* GPUImageMaskFilter.m */; }; - 8437244F1D4F260A002B398B /* GPUImageMedianFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E21D4F260A002B398B /* GPUImageMedianFilter.h */; }; - 843724501D4F260A002B398B /* GPUImageMedianFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E31D4F260A002B398B /* GPUImageMedianFilter.m */; }; - 843724511D4F260A002B398B /* GPUImageMissEtikateFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E41D4F260A002B398B /* GPUImageMissEtikateFilter.h */; }; - 843724521D4F260A002B398B /* GPUImageMissEtikateFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E51D4F260A002B398B /* GPUImageMissEtikateFilter.m */; }; - 843724531D4F260A002B398B /* GPUImageMonochromeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E61D4F260A002B398B /* GPUImageMonochromeFilter.h */; }; - 843724541D4F260A002B398B /* GPUImageMonochromeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E71D4F260A002B398B /* GPUImageMonochromeFilter.m */; }; - 843724551D4F260A002B398B /* GPUImageMosaicFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722E81D4F260A002B398B /* GPUImageMosaicFilter.h */; }; - 843724561D4F260A002B398B /* GPUImageMosaicFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722E91D4F260A002B398B /* GPUImageMosaicFilter.m */; }; - 843724571D4F260A002B398B /* GPUImageMotionBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722EA1D4F260A002B398B /* GPUImageMotionBlurFilter.h */; }; - 843724581D4F260A002B398B /* GPUImageMotionBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722EB1D4F260A002B398B /* GPUImageMotionBlurFilter.m */; }; - 843724591D4F260A002B398B /* GPUImageMotionDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722EC1D4F260A002B398B /* GPUImageMotionDetector.h */; }; - 8437245A1D4F260A002B398B /* GPUImageMotionDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722ED1D4F260A002B398B /* GPUImageMotionDetector.m */; }; - 8437245B1D4F260A002B398B /* GPUImageMovie.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722EE1D4F260A002B398B /* GPUImageMovie.h */; }; - 8437245C1D4F260A002B398B /* GPUImageMovie.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722EF1D4F260A002B398B /* GPUImageMovie.m */; }; - 8437245D1D4F260A002B398B /* GPUImageMovieComposition.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F01D4F260A002B398B /* GPUImageMovieComposition.h */; }; - 8437245E1D4F260A002B398B /* GPUImageMovieComposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F11D4F260A002B398B /* GPUImageMovieComposition.m */; }; - 8437245F1D4F260A002B398B /* GPUImageMultiplyBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F21D4F260A002B398B /* GPUImageMultiplyBlendFilter.h */; }; - 843724601D4F260A002B398B /* GPUImageMultiplyBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F31D4F260A002B398B /* GPUImageMultiplyBlendFilter.m */; }; - 843724611D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F41D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h */; }; - 843724621D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F51D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m */; }; - 843724631D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F61D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h */; }; - 843724641D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F71D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m */; }; - 843724651D4F260A002B398B /* GPUImageNormalBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722F81D4F260A002B398B /* GPUImageNormalBlendFilter.h */; }; - 843724661D4F260A002B398B /* GPUImageNormalBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722F91D4F260A002B398B /* GPUImageNormalBlendFilter.m */; }; - 843724671D4F260A002B398B /* GPUImageOpacityFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722FA1D4F260A002B398B /* GPUImageOpacityFilter.h */; }; - 843724681D4F260A002B398B /* GPUImageOpacityFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722FB1D4F260A002B398B /* GPUImageOpacityFilter.m */; }; - 843724691D4F260A002B398B /* GPUImageOpeningFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722FC1D4F260A002B398B /* GPUImageOpeningFilter.h */; }; - 8437246A1D4F260A002B398B /* GPUImageOpeningFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722FD1D4F260A002B398B /* GPUImageOpeningFilter.m */; }; - 8437246B1D4F260A002B398B /* GPUImageOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843722FE1D4F260A002B398B /* GPUImageOutput.h */; }; - 8437246C1D4F260A002B398B /* GPUImageOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843722FF1D4F260A002B398B /* GPUImageOutput.m */; }; - 8437246D1D4F260A002B398B /* GPUImageOverlayBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723001D4F260A002B398B /* GPUImageOverlayBlendFilter.h */; }; - 8437246E1D4F260A002B398B /* GPUImageOverlayBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723011D4F260A002B398B /* GPUImageOverlayBlendFilter.m */; }; - 8437246F1D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723021D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h */; }; - 843724701D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723031D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m */; }; - 843724711D4F260A002B398B /* GPUImagePerlinNoiseFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723041D4F260A002B398B /* GPUImagePerlinNoiseFilter.h */; }; - 843724721D4F260A002B398B /* GPUImagePerlinNoiseFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723051D4F260A002B398B /* GPUImagePerlinNoiseFilter.m */; }; - 843724731D4F260A002B398B /* GPUImagePinchDistortionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723061D4F260A002B398B /* GPUImagePinchDistortionFilter.h */; }; - 843724741D4F260A002B398B /* GPUImagePinchDistortionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723071D4F260A002B398B /* GPUImagePinchDistortionFilter.m */; }; - 843724751D4F260A002B398B /* GPUImagePixellateFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723081D4F260A002B398B /* GPUImagePixellateFilter.h */; }; - 843724761D4F260A002B398B /* GPUImagePixellateFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723091D4F260A002B398B /* GPUImagePixellateFilter.m */; }; - 843724771D4F260A002B398B /* GPUImagePixellatePositionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437230A1D4F260A002B398B /* GPUImagePixellatePositionFilter.h */; }; - 843724781D4F260A002B398B /* GPUImagePixellatePositionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437230B1D4F260A002B398B /* GPUImagePixellatePositionFilter.m */; }; - 843724791D4F260A002B398B /* GPUImagePoissonBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437230C1D4F260A002B398B /* GPUImagePoissonBlendFilter.h */; }; - 8437247A1D4F260A002B398B /* GPUImagePoissonBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437230D1D4F260A002B398B /* GPUImagePoissonBlendFilter.m */; }; - 8437247B1D4F260A002B398B /* GPUImagePolarPixellateFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437230E1D4F260A002B398B /* GPUImagePolarPixellateFilter.h */; }; - 8437247C1D4F260A002B398B /* GPUImagePolarPixellateFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437230F1D4F260A002B398B /* GPUImagePolarPixellateFilter.m */; }; - 8437247D1D4F260A002B398B /* GPUImagePolkaDotFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723101D4F260A002B398B /* GPUImagePolkaDotFilter.h */; }; - 8437247E1D4F260A002B398B /* GPUImagePolkaDotFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723111D4F260A002B398B /* GPUImagePolkaDotFilter.m */; }; - 8437247F1D4F260A002B398B /* GPUImagePosterizeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723121D4F260A002B398B /* GPUImagePosterizeFilter.h */; }; - 843724801D4F260A002B398B /* GPUImagePosterizeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723131D4F260A002B398B /* GPUImagePosterizeFilter.m */; }; - 843724811D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723141D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h */; }; - 843724821D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723151D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m */; }; - 843724831D4F260A002B398B /* GPUImageRawDataInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723161D4F260A002B398B /* GPUImageRawDataInput.h */; }; - 843724841D4F260A002B398B /* GPUImageRawDataInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723171D4F260A002B398B /* GPUImageRawDataInput.m */; }; - 843724851D4F260A002B398B /* GPUImageRawDataOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723181D4F260A002B398B /* GPUImageRawDataOutput.h */; }; - 843724861D4F260A002B398B /* GPUImageRawDataOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723191D4F260A002B398B /* GPUImageRawDataOutput.m */; }; - 843724871D4F260A002B398B /* GPUImageRGBClosingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437231A1D4F260A002B398B /* GPUImageRGBClosingFilter.h */; }; - 843724881D4F260A002B398B /* GPUImageRGBClosingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437231B1D4F260A002B398B /* GPUImageRGBClosingFilter.m */; }; - 843724891D4F260A002B398B /* GPUImageRGBDilationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437231C1D4F260A002B398B /* GPUImageRGBDilationFilter.h */; }; - 8437248A1D4F260A002B398B /* GPUImageRGBDilationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437231D1D4F260A002B398B /* GPUImageRGBDilationFilter.m */; }; - 8437248B1D4F260A002B398B /* GPUImageRGBErosionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437231E1D4F260A002B398B /* GPUImageRGBErosionFilter.h */; }; - 8437248C1D4F260A002B398B /* GPUImageRGBErosionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437231F1D4F260A002B398B /* GPUImageRGBErosionFilter.m */; }; - 8437248D1D4F260A002B398B /* GPUImageRGBFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723201D4F260A002B398B /* GPUImageRGBFilter.h */; }; - 8437248E1D4F260A002B398B /* GPUImageRGBFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723211D4F260A002B398B /* GPUImageRGBFilter.m */; }; - 8437248F1D4F260A002B398B /* GPUImageRGBOpeningFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723221D4F260A002B398B /* GPUImageRGBOpeningFilter.h */; }; - 843724901D4F260A002B398B /* GPUImageRGBOpeningFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723231D4F260A002B398B /* GPUImageRGBOpeningFilter.m */; }; - 843724911D4F260A002B398B /* GPUImageSaturationBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723241D4F260A002B398B /* GPUImageSaturationBlendFilter.h */; }; - 843724921D4F260A002B398B /* GPUImageSaturationBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723251D4F260A002B398B /* GPUImageSaturationBlendFilter.m */; }; - 843724931D4F260A002B398B /* GPUImageSaturationFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723261D4F260A002B398B /* GPUImageSaturationFilter.h */; }; - 843724941D4F260A002B398B /* GPUImageSaturationFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723271D4F260A002B398B /* GPUImageSaturationFilter.m */; }; - 843724951D4F260A002B398B /* GPUImageScreenBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723281D4F260A002B398B /* GPUImageScreenBlendFilter.h */; }; - 843724961D4F260A002B398B /* GPUImageScreenBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723291D4F260A002B398B /* GPUImageScreenBlendFilter.m */; }; - 843724971D4F260A002B398B /* GPUImageSepiaFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437232A1D4F260A002B398B /* GPUImageSepiaFilter.h */; }; - 843724981D4F260A002B398B /* GPUImageSepiaFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437232B1D4F260A002B398B /* GPUImageSepiaFilter.m */; }; - 843724991D4F260A002B398B /* GPUImageSharpenFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437232C1D4F260A002B398B /* GPUImageSharpenFilter.h */; }; - 8437249A1D4F260A002B398B /* GPUImageSharpenFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437232D1D4F260A002B398B /* GPUImageSharpenFilter.m */; }; - 8437249B1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437232E1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h */; }; - 8437249C1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437232F1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m */; }; - 8437249D1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723301D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h */; }; - 8437249E1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723311D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m */; }; - 8437249F1D4F260A002B398B /* GPUImageSketchFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723321D4F260A002B398B /* GPUImageSketchFilter.h */; }; - 843724A01D4F260A002B398B /* GPUImageSketchFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723331D4F260A002B398B /* GPUImageSketchFilter.m */; }; - 843724A11D4F260A002B398B /* GPUImageSkinToneFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723341D4F260A002B398B /* GPUImageSkinToneFilter.h */; }; - 843724A21D4F260A002B398B /* GPUImageSkinToneFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723351D4F260A002B398B /* GPUImageSkinToneFilter.m */; }; - 843724A31D4F260A002B398B /* GPUImageSmoothToonFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723361D4F260A002B398B /* GPUImageSmoothToonFilter.h */; }; - 843724A41D4F260A002B398B /* GPUImageSmoothToonFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723371D4F260A002B398B /* GPUImageSmoothToonFilter.m */; }; - 843724A51D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723381D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h */; }; - 843724A61D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723391D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m */; }; - 843724A71D4F260A002B398B /* GPUImageSoftEleganceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437233A1D4F260A002B398B /* GPUImageSoftEleganceFilter.h */; }; - 843724A81D4F260A002B398B /* GPUImageSoftEleganceFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437233B1D4F260A002B398B /* GPUImageSoftEleganceFilter.m */; }; - 843724A91D4F260A002B398B /* GPUImageSoftLightBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437233C1D4F260A002B398B /* GPUImageSoftLightBlendFilter.h */; }; - 843724AA1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437233D1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m */; }; - 843724AB1D4F260A002B398B /* GPUImageSolarizeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437233E1D4F260A002B398B /* GPUImageSolarizeFilter.h */; }; - 843724AC1D4F260A002B398B /* GPUImageSolarizeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437233F1D4F260A002B398B /* GPUImageSolarizeFilter.m */; }; - 843724AD1D4F260A002B398B /* GPUImageSolidColorGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723401D4F260A002B398B /* GPUImageSolidColorGenerator.h */; }; - 843724AE1D4F260A002B398B /* GPUImageSolidColorGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723411D4F260A002B398B /* GPUImageSolidColorGenerator.m */; }; - 843724AF1D4F260A002B398B /* GPUImageSourceOverBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723421D4F260A002B398B /* GPUImageSourceOverBlendFilter.h */; }; - 843724B01D4F260A002B398B /* GPUImageSourceOverBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723431D4F260A002B398B /* GPUImageSourceOverBlendFilter.m */; }; - 843724B11D4F260A002B398B /* GPUImageSphereRefractionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723441D4F260A002B398B /* GPUImageSphereRefractionFilter.h */; }; - 843724B21D4F260A002B398B /* GPUImageSphereRefractionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723451D4F260A002B398B /* GPUImageSphereRefractionFilter.m */; }; - 843724B31D4F260A002B398B /* GPUImageStillCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723461D4F260A002B398B /* GPUImageStillCamera.h */; }; - 843724B41D4F260A002B398B /* GPUImageStillCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723471D4F260A002B398B /* GPUImageStillCamera.m */; }; - 843724B51D4F260A002B398B /* GPUImageStretchDistortionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723481D4F260A002B398B /* GPUImageStretchDistortionFilter.h */; }; - 843724B61D4F260A002B398B /* GPUImageStretchDistortionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723491D4F260A002B398B /* GPUImageStretchDistortionFilter.m */; }; - 843724B71D4F260A002B398B /* GPUImageSubtractBlendFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437234A1D4F260A002B398B /* GPUImageSubtractBlendFilter.h */; }; - 843724B81D4F260A002B398B /* GPUImageSubtractBlendFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437234B1D4F260A002B398B /* GPUImageSubtractBlendFilter.m */; }; - 843724B91D4F260A002B398B /* GPUImageSwirlFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437234C1D4F260A002B398B /* GPUImageSwirlFilter.h */; }; - 843724BA1D4F260A002B398B /* GPUImageSwirlFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437234D1D4F260A002B398B /* GPUImageSwirlFilter.m */; }; - 843724BB1D4F260A002B398B /* GPUImageTextureInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437234E1D4F260A002B398B /* GPUImageTextureInput.h */; }; - 843724BC1D4F260A002B398B /* GPUImageTextureInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437234F1D4F260A002B398B /* GPUImageTextureInput.m */; }; - 843724BD1D4F260A002B398B /* GPUImageTextureOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723501D4F260A002B398B /* GPUImageTextureOutput.h */; }; - 843724BE1D4F260A002B398B /* GPUImageTextureOutput.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723511D4F260A002B398B /* GPUImageTextureOutput.m */; }; - 843724BF1D4F260A002B398B /* GPUImageThreeInputFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723521D4F260A002B398B /* GPUImageThreeInputFilter.h */; }; - 843724C01D4F260A002B398B /* GPUImageThreeInputFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723531D4F260A002B398B /* GPUImageThreeInputFilter.m */; }; - 843724C11D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723541D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h */; }; - 843724C21D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723551D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m */; }; - 843724C31D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723561D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h */; }; - 843724C41D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723571D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m */; }; - 843724C51D4F260A002B398B /* GPUImageThresholdSketchFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723581D4F260A002B398B /* GPUImageThresholdSketchFilter.h */; }; - 843724C61D4F260A002B398B /* GPUImageThresholdSketchFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723591D4F260A002B398B /* GPUImageThresholdSketchFilter.m */; }; - 843724C71D4F260A002B398B /* GPUImageTiltShiftFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437235A1D4F260A002B398B /* GPUImageTiltShiftFilter.h */; }; - 843724C81D4F260A002B398B /* GPUImageTiltShiftFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437235B1D4F260A002B398B /* GPUImageTiltShiftFilter.m */; }; - 843724C91D4F260A002B398B /* GPUImageToneCurveFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437235C1D4F260A002B398B /* GPUImageToneCurveFilter.h */; }; - 843724CA1D4F260A002B398B /* GPUImageToneCurveFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437235D1D4F260A002B398B /* GPUImageToneCurveFilter.m */; }; - 843724CB1D4F260A002B398B /* GPUImageToonFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437235E1D4F260A002B398B /* GPUImageToonFilter.h */; }; - 843724CC1D4F260A002B398B /* GPUImageToonFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437235F1D4F260A002B398B /* GPUImageToonFilter.m */; }; - 843724CD1D4F260A002B398B /* GPUImageTransformFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723601D4F260A002B398B /* GPUImageTransformFilter.h */; }; - 843724CE1D4F260A002B398B /* GPUImageTransformFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723611D4F260A002B398B /* GPUImageTransformFilter.m */; }; - 843724CF1D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723621D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h */; }; - 843724D01D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723631D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m */; }; - 843724D11D4F260A002B398B /* GPUImageTwoInputFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723641D4F260A002B398B /* GPUImageTwoInputFilter.h */; }; - 843724D21D4F260A002B398B /* GPUImageTwoInputFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723651D4F260A002B398B /* GPUImageTwoInputFilter.m */; }; - 843724D31D4F260A002B398B /* GPUImageTwoPassFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723661D4F260A002B398B /* GPUImageTwoPassFilter.h */; }; - 843724D41D4F260A002B398B /* GPUImageTwoPassFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723671D4F260A002B398B /* GPUImageTwoPassFilter.m */; }; - 843724D51D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723681D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h */; }; - 843724D61D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723691D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m */; }; - 843724D71D4F260A002B398B /* GPUImageUIElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437236A1D4F260A002B398B /* GPUImageUIElement.h */; }; - 843724D81D4F260A002B398B /* GPUImageUIElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437236B1D4F260A002B398B /* GPUImageUIElement.m */; }; - 843724D91D4F260A002B398B /* GPUImageUnsharpMaskFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437236C1D4F260A002B398B /* GPUImageUnsharpMaskFilter.h */; }; - 843724DA1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437236D1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m */; }; - 843724DB1D4F260A002B398B /* GPUImageVideoCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437236E1D4F260A002B398B /* GPUImageVideoCamera.h */; }; - 843724DC1D4F260A002B398B /* GPUImageVideoCamera.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437236F1D4F260A002B398B /* GPUImageVideoCamera.m */; }; - 843724DD1D4F260A002B398B /* GPUImageVignetteFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723701D4F260A002B398B /* GPUImageVignetteFilter.h */; }; - 843724DE1D4F260A002B398B /* GPUImageVignetteFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723711D4F260A002B398B /* GPUImageVignetteFilter.m */; }; - 843724DF1D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723721D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h */; }; - 843724E01D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723731D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m */; }; - 843724E11D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723741D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h */; }; - 843724E21D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723751D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m */; }; - 843724E31D4F260A002B398B /* GPUImageWhiteBalanceFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723761D4F260A002B398B /* GPUImageWhiteBalanceFilter.h */; }; - 843724E41D4F260A002B398B /* GPUImageWhiteBalanceFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723771D4F260A002B398B /* GPUImageWhiteBalanceFilter.m */; }; - 843724E51D4F260A002B398B /* GPUImageXYDerivativeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723781D4F260A002B398B /* GPUImageXYDerivativeFilter.h */; }; - 843724E61D4F260A002B398B /* GPUImageXYDerivativeFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723791D4F260A002B398B /* GPUImageXYDerivativeFilter.m */; }; - 843724E71D4F260A002B398B /* GPUImageZoomBlurFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437237A1D4F260A002B398B /* GPUImageZoomBlurFilter.h */; }; - 843724E81D4F260A002B398B /* GPUImageZoomBlurFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8437237B1D4F260A002B398B /* GPUImageZoomBlurFilter.m */; }; - 843724E91D4F260A002B398B /* GPUImageFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437237E1D4F260A002B398B /* GPUImageFramework.h */; }; - 843724EA1D4F260A002B398B /* GPUImageContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437237F1D4F260A002B398B /* GPUImageContext.h */; }; - 843724EB1D4F260A002B398B /* GPUImageContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723801D4F260A002B398B /* GPUImageContext.m */; }; - 843724EC1D4F260A002B398B /* GPUImageMovieWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723811D4F260A002B398B /* GPUImageMovieWriter.h */; }; - 843724ED1D4F260A002B398B /* GPUImageMovieWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723821D4F260A002B398B /* GPUImageMovieWriter.m */; }; - 843724EE1D4F260A002B398B /* GPUImagePicture+TextureSubimage.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723831D4F260A002B398B /* GPUImagePicture+TextureSubimage.h */; }; - 843724EF1D4F260A002B398B /* GPUImagePicture+TextureSubimage.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723841D4F260A002B398B /* GPUImagePicture+TextureSubimage.m */; }; - 843724F01D4F260A002B398B /* GPUImagePicture.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723851D4F260A002B398B /* GPUImagePicture.h */; }; - 843724F11D4F260A002B398B /* GPUImagePicture.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723861D4F260A002B398B /* GPUImagePicture.m */; }; - 843724F21D4F260A002B398B /* GPUImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723871D4F260A002B398B /* GPUImageView.h */; }; - 843724F31D4F260A002B398B /* GPUImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 843723881D4F260A002B398B /* GPUImageView.m */; }; - 843724F41D4F260A002B398B /* amf.c in Sources */ = {isa = PBXBuildFile; fileRef = 8437238A1D4F260A002B398B /* amf.c */; }; - 843724F51D4F260A002B398B /* amf.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238B1D4F260A002B398B /* amf.h */; }; - 843724F61D4F260A002B398B /* bytes.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238C1D4F260A002B398B /* bytes.h */; }; - 843724F71D4F260A002B398B /* dh.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238D1D4F260A002B398B /* dh.h */; }; - 843724F81D4F260A002B398B /* dhgroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 8437238E1D4F260A002B398B /* dhgroups.h */; }; - 843724F91D4F260A002B398B /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 8437238F1D4F260A002B398B /* error.c */; }; - 843724FA1D4F260A002B398B /* error.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723901D4F260A002B398B /* error.h */; }; - 843724FB1D4F260A002B398B /* handshake.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723911D4F260A002B398B /* handshake.h */; }; - 843724FC1D4F260A002B398B /* hashswf.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723921D4F260A002B398B /* hashswf.c */; }; - 843724FD1D4F260A002B398B /* http.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723931D4F260A002B398B /* http.h */; }; - 843724FE1D4F260A002B398B /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723941D4F260A002B398B /* log.c */; }; - 843724FF1D4F260A002B398B /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723951D4F260A002B398B /* log.h */; }; - 843725001D4F260A002B398B /* parseurl.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723961D4F260A002B398B /* parseurl.c */; }; - 843725011D4F260A002B398B /* rtmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 843723971D4F260A002B398B /* rtmp.c */; }; - 843725021D4F260A002B398B /* rtmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723981D4F260A002B398B /* rtmp.h */; }; - 843725031D4F260A002B398B /* rtmp_sys.h in Headers */ = {isa = PBXBuildFile; fileRef = 843723991D4F260A002B398B /* rtmp_sys.h */; }; - B221C24F1D59D41A009615C3 /* LFAVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C2471D59D41A009615C3 /* LFAVEncoder.h */; }; - B221C2501D59D41A009615C3 /* LFAVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B221C2481D59D41A009615C3 /* LFAVEncoder.mm */; }; - B221C2511D59D41A009615C3 /* LFMP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C2491D59D41A009615C3 /* LFMP4Atom.h */; }; - B221C2521D59D41A009615C3 /* LFMP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = B221C24A1D59D41A009615C3 /* LFMP4Atom.m */; }; - B221C2531D59D41A009615C3 /* LFNALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B221C24B1D59D41A009615C3 /* LFNALUnit.cpp */; }; - B221C2541D59D41A009615C3 /* LFNALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C24C1D59D41A009615C3 /* LFNALUnit.h */; }; - B221C2551D59D41A009615C3 /* LFVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B221C24D1D59D41A009615C3 /* LFVideoEncoder.h */; }; - B221C2561D59D41A009615C3 /* LFVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B221C24E1D59D41A009615C3 /* LFVideoEncoder.m */; }; - B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */; }; - B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */; }; - B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */; }; - B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */; }; - B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */; }; - B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */; }; - B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */; }; - B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */ = {isa = PBXBuildFile; fileRef = B2CD14641D45F18B008082E8 /* LICENSE.markdown */; }; - B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */; }; - B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 84001F961D0015D10026C63F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 84001F811D0015D10026C63F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 84001F891D0015D10026C63F; - remoteInfo = LFLiveKit; - }; - 84C329E21D61EB1600984B01 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 84001F811D0015D10026C63F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 84001F891D0015D10026C63F; - remoteInfo = LFLiveKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 0BA5A0CE1F07E1D707F69735 /* Pods-LFLiveKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.release.xcconfig"; sourceTree = ""; }; - 84001F8A1D0015D10026C63F /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 84001F8D1D0015D10026C63F /* LFLiveKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; - 84001F8F1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LFLiveKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 84001F991D0015D10026C63F /* LFLiveKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LFLiveKitTests.m; sourceTree = ""; }; - 84001F9B1D0015D10026C63F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 84001FA51D0016380026C63F /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; - 84001FA61D0016380026C63F /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; - 84001FA71D0016380026C63F /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; - 84001FA81D0016380026C63F /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; - 84001FAA1D0016380026C63F /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; - 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; - 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; - 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; - 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; - 84001FAF1D0016380026C63F /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; - 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; - 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; - 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; - 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; - 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; - 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; - 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; - 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; - 84001FBA1D0016380026C63F /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; - 84001FBB1D0016380026C63F /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; - 84001FBD1D0016380026C63F /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; - 84001FBE1D0016380026C63F /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; - 84001FBF1D0016380026C63F /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; - 84001FC01D0016380026C63F /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; - 84001FC11D0016380026C63F /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; - 84001FC21D0016380026C63F /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; - 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; - 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; - 84001FC51D0016380026C63F /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; - 84001FC61D0016380026C63F /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; - 84001FF61D0017590026C63F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 84001FF81D00175D0026C63F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 84001FFA1D0017630026C63F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 84001FFC1D0017680026C63F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - 84001FFE1D00176C0026C63F /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; - 840020001D0017850026C63F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 8437222D1D4F260A002B398B /* GLProgram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLProgram.h; sourceTree = ""; }; - 8437222E1D4F260A002B398B /* GLProgram.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GLProgram.m; sourceTree = ""; }; - 8437222F1D4F260A002B398B /* GPUImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImage.h; sourceTree = ""; }; - 843722301D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImage3x3ConvolutionFilter.h; sourceTree = ""; }; - 843722311D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImage3x3ConvolutionFilter.m; sourceTree = ""; }; - 843722321D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImage3x3TextureSamplingFilter.h; sourceTree = ""; }; - 843722331D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImage3x3TextureSamplingFilter.m; sourceTree = ""; }; - 843722341D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAdaptiveThresholdFilter.h; sourceTree = ""; }; - 843722351D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAdaptiveThresholdFilter.m; sourceTree = ""; }; - 843722361D4F260A002B398B /* GPUImageAddBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAddBlendFilter.h; sourceTree = ""; }; - 843722371D4F260A002B398B /* GPUImageAddBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAddBlendFilter.m; sourceTree = ""; }; - 843722381D4F260A002B398B /* GPUImageAlphaBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAlphaBlendFilter.h; sourceTree = ""; }; - 843722391D4F260A002B398B /* GPUImageAlphaBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAlphaBlendFilter.m; sourceTree = ""; }; - 8437223A1D4F260A002B398B /* GPUImageAmatorkaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAmatorkaFilter.h; sourceTree = ""; }; - 8437223B1D4F260A002B398B /* GPUImageAmatorkaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAmatorkaFilter.m; sourceTree = ""; }; - 8437223C1D4F260A002B398B /* GPUImageAverageColor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAverageColor.h; sourceTree = ""; }; - 8437223D1D4F260A002B398B /* GPUImageAverageColor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAverageColor.m; sourceTree = ""; }; - 8437223E1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageAverageLuminanceThresholdFilter.h; sourceTree = ""; }; - 8437223F1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageAverageLuminanceThresholdFilter.m; sourceTree = ""; }; - 843722401D4F260A002B398B /* GPUImageBilateralFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBilateralFilter.h; sourceTree = ""; }; - 843722411D4F260A002B398B /* GPUImageBilateralFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBilateralFilter.m; sourceTree = ""; }; - 843722421D4F260A002B398B /* GPUImageBoxBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBoxBlurFilter.h; sourceTree = ""; }; - 843722431D4F260A002B398B /* GPUImageBoxBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBoxBlurFilter.m; sourceTree = ""; }; - 843722441D4F260A002B398B /* GPUImageBrightnessFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBrightnessFilter.h; sourceTree = ""; }; - 843722451D4F260A002B398B /* GPUImageBrightnessFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBrightnessFilter.m; sourceTree = ""; }; - 843722461D4F260A002B398B /* GPUImageBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBuffer.h; sourceTree = ""; }; - 843722471D4F260A002B398B /* GPUImageBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBuffer.m; sourceTree = ""; }; - 843722481D4F260A002B398B /* GPUImageBulgeDistortionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageBulgeDistortionFilter.h; sourceTree = ""; }; - 843722491D4F260A002B398B /* GPUImageBulgeDistortionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageBulgeDistortionFilter.m; sourceTree = ""; }; - 8437224A1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCannyEdgeDetectionFilter.h; sourceTree = ""; }; - 8437224B1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCannyEdgeDetectionFilter.m; sourceTree = ""; }; - 8437224C1D4F260A002B398B /* GPUImageCGAColorspaceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCGAColorspaceFilter.h; sourceTree = ""; }; - 8437224D1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCGAColorspaceFilter.m; sourceTree = ""; }; - 8437224E1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageChromaKeyBlendFilter.h; sourceTree = ""; }; - 8437224F1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageChromaKeyBlendFilter.m; sourceTree = ""; }; - 843722501D4F260A002B398B /* GPUImageChromaKeyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageChromaKeyFilter.h; sourceTree = ""; }; - 843722511D4F260A002B398B /* GPUImageChromaKeyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageChromaKeyFilter.m; sourceTree = ""; }; - 843722521D4F260A002B398B /* GPUImageClosingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageClosingFilter.h; sourceTree = ""; }; - 843722531D4F260A002B398B /* GPUImageClosingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageClosingFilter.m; sourceTree = ""; }; - 843722541D4F260A002B398B /* GPUImageColorBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorBlendFilter.h; sourceTree = ""; }; - 843722551D4F260A002B398B /* GPUImageColorBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorBlendFilter.m; sourceTree = ""; }; - 843722561D4F260A002B398B /* GPUImageColorBurnBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorBurnBlendFilter.h; sourceTree = ""; }; - 843722571D4F260A002B398B /* GPUImageColorBurnBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorBurnBlendFilter.m; sourceTree = ""; }; - 843722581D4F260A002B398B /* GPUImageColorConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorConversion.h; sourceTree = ""; }; - 843722591D4F260A002B398B /* GPUImageColorConversion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorConversion.m; sourceTree = ""; }; - 8437225A1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorDodgeBlendFilter.h; sourceTree = ""; }; - 8437225B1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorDodgeBlendFilter.m; sourceTree = ""; }; - 8437225C1D4F260A002B398B /* GPUImageColorInvertFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorInvertFilter.h; sourceTree = ""; }; - 8437225D1D4F260A002B398B /* GPUImageColorInvertFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorInvertFilter.m; sourceTree = ""; }; - 8437225E1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorLocalBinaryPatternFilter.h; sourceTree = ""; }; - 8437225F1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorLocalBinaryPatternFilter.m; sourceTree = ""; }; - 843722601D4F260A002B398B /* GPUImageColorMatrixFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorMatrixFilter.h; sourceTree = ""; }; - 843722611D4F260A002B398B /* GPUImageColorMatrixFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorMatrixFilter.m; sourceTree = ""; }; - 843722621D4F260A002B398B /* GPUImageColorPackingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColorPackingFilter.h; sourceTree = ""; }; - 843722631D4F260A002B398B /* GPUImageColorPackingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColorPackingFilter.m; sourceTree = ""; }; - 843722641D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColourFASTFeatureDetector.h; sourceTree = ""; }; - 843722651D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColourFASTFeatureDetector.m; sourceTree = ""; }; - 843722661D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageColourFASTSamplingOperation.h; sourceTree = ""; }; - 843722671D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageColourFASTSamplingOperation.m; sourceTree = ""; }; - 843722681D4F260A002B398B /* GPUImageContrastFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageContrastFilter.h; sourceTree = ""; }; - 843722691D4F260A002B398B /* GPUImageContrastFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageContrastFilter.m; sourceTree = ""; }; - 8437226A1D4F260A002B398B /* GPUImageCropFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCropFilter.h; sourceTree = ""; }; - 8437226B1D4F260A002B398B /* GPUImageCropFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCropFilter.m; sourceTree = ""; }; - 8437226C1D4F260A002B398B /* GPUImageCrosshairGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCrosshairGenerator.h; sourceTree = ""; }; - 8437226D1D4F260A002B398B /* GPUImageCrosshairGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCrosshairGenerator.m; sourceTree = ""; }; - 8437226E1D4F260A002B398B /* GPUImageCrosshatchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageCrosshatchFilter.h; sourceTree = ""; }; - 8437226F1D4F260A002B398B /* GPUImageCrosshatchFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageCrosshatchFilter.m; sourceTree = ""; }; - 843722701D4F260A002B398B /* GPUImageDarkenBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDarkenBlendFilter.h; sourceTree = ""; }; - 843722711D4F260A002B398B /* GPUImageDarkenBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDarkenBlendFilter.m; sourceTree = ""; }; - 843722721D4F260A002B398B /* GPUImageDifferenceBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDifferenceBlendFilter.h; sourceTree = ""; }; - 843722731D4F260A002B398B /* GPUImageDifferenceBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDifferenceBlendFilter.m; sourceTree = ""; }; - 843722741D4F260A002B398B /* GPUImageDilationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDilationFilter.h; sourceTree = ""; }; - 843722751D4F260A002B398B /* GPUImageDilationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDilationFilter.m; sourceTree = ""; }; - 843722761D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDirectionalNonMaximumSuppressionFilter.h; sourceTree = ""; }; - 843722771D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDirectionalNonMaximumSuppressionFilter.m; sourceTree = ""; }; - 843722781D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDirectionalSobelEdgeDetectionFilter.h; sourceTree = ""; }; - 843722791D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDirectionalSobelEdgeDetectionFilter.m; sourceTree = ""; }; - 8437227A1D4F260A002B398B /* GPUImageDissolveBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDissolveBlendFilter.h; sourceTree = ""; }; - 8437227B1D4F260A002B398B /* GPUImageDissolveBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDissolveBlendFilter.m; sourceTree = ""; }; - 8437227C1D4F260A002B398B /* GPUImageDivideBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageDivideBlendFilter.h; sourceTree = ""; }; - 8437227D1D4F260A002B398B /* GPUImageDivideBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageDivideBlendFilter.m; sourceTree = ""; }; - 8437227E1D4F260A002B398B /* GPUImageEmbossFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageEmbossFilter.h; sourceTree = ""; }; - 8437227F1D4F260A002B398B /* GPUImageEmbossFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageEmbossFilter.m; sourceTree = ""; }; - 843722801D4F260A002B398B /* GPUImageErosionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageErosionFilter.h; sourceTree = ""; }; - 843722811D4F260A002B398B /* GPUImageErosionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageErosionFilter.m; sourceTree = ""; }; - 843722821D4F260A002B398B /* GPUImageExclusionBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageExclusionBlendFilter.h; sourceTree = ""; }; - 843722831D4F260A002B398B /* GPUImageExclusionBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageExclusionBlendFilter.m; sourceTree = ""; }; - 843722841D4F260A002B398B /* GPUImageExposureFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageExposureFilter.h; sourceTree = ""; }; - 843722851D4F260A002B398B /* GPUImageExposureFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageExposureFilter.m; sourceTree = ""; }; - 843722861D4F260A002B398B /* GPUImageFalseColorFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFalseColorFilter.h; sourceTree = ""; }; - 843722871D4F260A002B398B /* GPUImageFalseColorFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFalseColorFilter.m; sourceTree = ""; }; - 843722881D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFASTCornerDetectionFilter.h; sourceTree = ""; }; - 843722891D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFASTCornerDetectionFilter.m; sourceTree = ""; }; - 8437228A1D4F260A002B398B /* GPUImageFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFilter.h; sourceTree = ""; }; - 8437228B1D4F260A002B398B /* GPUImageFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFilter.m; sourceTree = ""; }; - 8437228C1D4F260A002B398B /* GPUImageFilterGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFilterGroup.h; sourceTree = ""; }; - 8437228D1D4F260A002B398B /* GPUImageFilterGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFilterGroup.m; sourceTree = ""; }; - 8437228E1D4F260A002B398B /* GPUImageFilterPipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFilterPipeline.h; sourceTree = ""; }; - 8437228F1D4F260A002B398B /* GPUImageFilterPipeline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFilterPipeline.m; sourceTree = ""; }; - 843722901D4F260A002B398B /* GPUImageFourInputFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFourInputFilter.h; sourceTree = ""; }; - 843722911D4F260A002B398B /* GPUImageFourInputFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFourInputFilter.m; sourceTree = ""; }; - 843722921D4F260A002B398B /* GPUImageFramebuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFramebuffer.h; sourceTree = ""; }; - 843722931D4F260A002B398B /* GPUImageFramebuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFramebuffer.m; sourceTree = ""; }; - 843722941D4F260A002B398B /* GPUImageFramebufferCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFramebufferCache.h; sourceTree = ""; }; - 843722951D4F260A002B398B /* GPUImageFramebufferCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageFramebufferCache.m; sourceTree = ""; }; - 843722961D4F260A002B398B /* GPUImageGammaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGammaFilter.h; sourceTree = ""; }; - 843722971D4F260A002B398B /* GPUImageGammaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGammaFilter.m; sourceTree = ""; }; - 843722981D4F260A002B398B /* GPUImageGaussianBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGaussianBlurFilter.h; sourceTree = ""; }; - 843722991D4F260A002B398B /* GPUImageGaussianBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGaussianBlurFilter.m; sourceTree = ""; }; - 8437229A1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGaussianBlurPositionFilter.h; sourceTree = ""; }; - 8437229B1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGaussianBlurPositionFilter.m; sourceTree = ""; }; - 8437229C1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGaussianSelectiveBlurFilter.h; sourceTree = ""; }; - 8437229D1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGaussianSelectiveBlurFilter.m; sourceTree = ""; }; - 8437229E1D4F260A002B398B /* GPUImageGlassSphereFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGlassSphereFilter.h; sourceTree = ""; }; - 8437229F1D4F260A002B398B /* GPUImageGlassSphereFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGlassSphereFilter.m; sourceTree = ""; }; - 843722A01D4F260A002B398B /* GPUImageGrayscaleFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageGrayscaleFilter.h; sourceTree = ""; }; - 843722A11D4F260A002B398B /* GPUImageGrayscaleFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageGrayscaleFilter.m; sourceTree = ""; }; - 843722A21D4F260A002B398B /* GPUImageHalftoneFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHalftoneFilter.h; sourceTree = ""; }; - 843722A31D4F260A002B398B /* GPUImageHalftoneFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHalftoneFilter.m; sourceTree = ""; }; - 843722A41D4F260A002B398B /* GPUImageHardLightBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHardLightBlendFilter.h; sourceTree = ""; }; - 843722A51D4F260A002B398B /* GPUImageHardLightBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHardLightBlendFilter.m; sourceTree = ""; }; - 843722A61D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHarrisCornerDetectionFilter.h; sourceTree = ""; }; - 843722A71D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHarrisCornerDetectionFilter.m; sourceTree = ""; }; - 843722A81D4F260A002B398B /* GPUImageHazeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHazeFilter.h; sourceTree = ""; }; - 843722A91D4F260A002B398B /* GPUImageHazeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHazeFilter.m; sourceTree = ""; }; - 843722AA1D4F260A002B398B /* GPUImageHighlightShadowFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHighlightShadowFilter.h; sourceTree = ""; }; - 843722AB1D4F260A002B398B /* GPUImageHighlightShadowFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHighlightShadowFilter.m; sourceTree = ""; }; - 843722AC1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHighlightShadowTintFilter.h; sourceTree = ""; }; - 843722AD1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHighlightShadowTintFilter.m; sourceTree = ""; }; - 843722AE1D4F260A002B398B /* GPUImageHighPassFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHighPassFilter.h; sourceTree = ""; }; - 843722AF1D4F260A002B398B /* GPUImageHighPassFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHighPassFilter.m; sourceTree = ""; }; - 843722B01D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHistogramEqualizationFilter.h; sourceTree = ""; }; - 843722B11D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHistogramEqualizationFilter.m; sourceTree = ""; }; - 843722B21D4F260A002B398B /* GPUImageHistogramFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHistogramFilter.h; sourceTree = ""; }; - 843722B31D4F260A002B398B /* GPUImageHistogramFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHistogramFilter.m; sourceTree = ""; }; - 843722B41D4F260A002B398B /* GPUImageHistogramGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHistogramGenerator.h; sourceTree = ""; }; - 843722B51D4F260A002B398B /* GPUImageHistogramGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHistogramGenerator.m; sourceTree = ""; }; - 843722B61D4F260A002B398B /* GPUImageHoughTransformLineDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHoughTransformLineDetector.h; sourceTree = ""; }; - 843722B71D4F260A002B398B /* GPUImageHoughTransformLineDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHoughTransformLineDetector.m; sourceTree = ""; }; - 843722B81D4F260A002B398B /* GPUImageHSBFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHSBFilter.h; sourceTree = ""; }; - 843722B91D4F260A002B398B /* GPUImageHSBFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHSBFilter.m; sourceTree = ""; }; - 843722BA1D4F260A002B398B /* GPUImageHueBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHueBlendFilter.h; sourceTree = ""; }; - 843722BB1D4F260A002B398B /* GPUImageHueBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHueBlendFilter.m; sourceTree = ""; }; - 843722BC1D4F260A002B398B /* GPUImageHueFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageHueFilter.h; sourceTree = ""; }; - 843722BD1D4F260A002B398B /* GPUImageHueFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageHueFilter.m; sourceTree = ""; }; - 843722BE1D4F260A002B398B /* GPUImageiOSBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageiOSBlurFilter.h; sourceTree = ""; }; - 843722BF1D4F260A002B398B /* GPUImageiOSBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageiOSBlurFilter.m; sourceTree = ""; }; - 843722C01D4F260A002B398B /* GPUImageJFAVoronoiFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageJFAVoronoiFilter.h; sourceTree = ""; }; - 843722C11D4F260A002B398B /* GPUImageJFAVoronoiFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageJFAVoronoiFilter.m; sourceTree = ""; }; - 843722C21D4F260A002B398B /* GPUImageKuwaharaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageKuwaharaFilter.h; sourceTree = ""; }; - 843722C31D4F260A002B398B /* GPUImageKuwaharaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageKuwaharaFilter.m; sourceTree = ""; }; - 843722C41D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageKuwaharaRadius3Filter.h; sourceTree = ""; }; - 843722C51D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageKuwaharaRadius3Filter.m; sourceTree = ""; }; - 843722C61D4F260A002B398B /* GPUImageLanczosResamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLanczosResamplingFilter.h; sourceTree = ""; }; - 843722C71D4F260A002B398B /* GPUImageLanczosResamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLanczosResamplingFilter.m; sourceTree = ""; }; - 843722C81D4F260A002B398B /* GPUImageLaplacianFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLaplacianFilter.h; sourceTree = ""; }; - 843722C91D4F260A002B398B /* GPUImageLaplacianFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLaplacianFilter.m; sourceTree = ""; }; - 843722CA1D4F260A002B398B /* GPUImageLevelsFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLevelsFilter.h; sourceTree = ""; }; - 843722CB1D4F260A002B398B /* GPUImageLevelsFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLevelsFilter.m; sourceTree = ""; }; - 843722CC1D4F260A002B398B /* GPUImageLightenBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLightenBlendFilter.h; sourceTree = ""; }; - 843722CD1D4F260A002B398B /* GPUImageLightenBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLightenBlendFilter.m; sourceTree = ""; }; - 843722CE1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLinearBurnBlendFilter.h; sourceTree = ""; }; - 843722CF1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLinearBurnBlendFilter.m; sourceTree = ""; }; - 843722D01D4F260A002B398B /* GPUImageLineGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLineGenerator.h; sourceTree = ""; }; - 843722D11D4F260A002B398B /* GPUImageLineGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLineGenerator.m; sourceTree = ""; }; - 843722D21D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLocalBinaryPatternFilter.h; sourceTree = ""; }; - 843722D31D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLocalBinaryPatternFilter.m; sourceTree = ""; }; - 843722D41D4F260A002B398B /* GPUImageLookupFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLookupFilter.h; sourceTree = ""; }; - 843722D51D4F260A002B398B /* GPUImageLookupFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLookupFilter.m; sourceTree = ""; }; - 843722D61D4F260A002B398B /* GPUImageLowPassFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLowPassFilter.h; sourceTree = ""; }; - 843722D71D4F260A002B398B /* GPUImageLowPassFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLowPassFilter.m; sourceTree = ""; }; - 843722D81D4F260A002B398B /* GPUImageLuminanceRangeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminanceRangeFilter.h; sourceTree = ""; }; - 843722D91D4F260A002B398B /* GPUImageLuminanceRangeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminanceRangeFilter.m; sourceTree = ""; }; - 843722DA1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminanceThresholdFilter.h; sourceTree = ""; }; - 843722DB1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminanceThresholdFilter.m; sourceTree = ""; }; - 843722DC1D4F260A002B398B /* GPUImageLuminosity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminosity.h; sourceTree = ""; }; - 843722DD1D4F260A002B398B /* GPUImageLuminosity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminosity.m; sourceTree = ""; }; - 843722DE1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageLuminosityBlendFilter.h; sourceTree = ""; }; - 843722DF1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageLuminosityBlendFilter.m; sourceTree = ""; }; - 843722E01D4F260A002B398B /* GPUImageMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMaskFilter.h; sourceTree = ""; }; - 843722E11D4F260A002B398B /* GPUImageMaskFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMaskFilter.m; sourceTree = ""; }; - 843722E21D4F260A002B398B /* GPUImageMedianFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMedianFilter.h; sourceTree = ""; }; - 843722E31D4F260A002B398B /* GPUImageMedianFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMedianFilter.m; sourceTree = ""; }; - 843722E41D4F260A002B398B /* GPUImageMissEtikateFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMissEtikateFilter.h; sourceTree = ""; }; - 843722E51D4F260A002B398B /* GPUImageMissEtikateFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMissEtikateFilter.m; sourceTree = ""; }; - 843722E61D4F260A002B398B /* GPUImageMonochromeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMonochromeFilter.h; sourceTree = ""; }; - 843722E71D4F260A002B398B /* GPUImageMonochromeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMonochromeFilter.m; sourceTree = ""; }; - 843722E81D4F260A002B398B /* GPUImageMosaicFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMosaicFilter.h; sourceTree = ""; }; - 843722E91D4F260A002B398B /* GPUImageMosaicFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMosaicFilter.m; sourceTree = ""; }; - 843722EA1D4F260A002B398B /* GPUImageMotionBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMotionBlurFilter.h; sourceTree = ""; }; - 843722EB1D4F260A002B398B /* GPUImageMotionBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMotionBlurFilter.m; sourceTree = ""; }; - 843722EC1D4F260A002B398B /* GPUImageMotionDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMotionDetector.h; sourceTree = ""; }; - 843722ED1D4F260A002B398B /* GPUImageMotionDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMotionDetector.m; sourceTree = ""; }; - 843722EE1D4F260A002B398B /* GPUImageMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMovie.h; sourceTree = ""; }; - 843722EF1D4F260A002B398B /* GPUImageMovie.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMovie.m; sourceTree = ""; }; - 843722F01D4F260A002B398B /* GPUImageMovieComposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMovieComposition.h; sourceTree = ""; }; - 843722F11D4F260A002B398B /* GPUImageMovieComposition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMovieComposition.m; sourceTree = ""; }; - 843722F21D4F260A002B398B /* GPUImageMultiplyBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMultiplyBlendFilter.h; sourceTree = ""; }; - 843722F31D4F260A002B398B /* GPUImageMultiplyBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMultiplyBlendFilter.m; sourceTree = ""; }; - 843722F41D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageNobleCornerDetectionFilter.h; sourceTree = ""; }; - 843722F51D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageNobleCornerDetectionFilter.m; sourceTree = ""; }; - 843722F61D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageNonMaximumSuppressionFilter.h; sourceTree = ""; }; - 843722F71D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageNonMaximumSuppressionFilter.m; sourceTree = ""; }; - 843722F81D4F260A002B398B /* GPUImageNormalBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageNormalBlendFilter.h; sourceTree = ""; }; - 843722F91D4F260A002B398B /* GPUImageNormalBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageNormalBlendFilter.m; sourceTree = ""; }; - 843722FA1D4F260A002B398B /* GPUImageOpacityFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOpacityFilter.h; sourceTree = ""; }; - 843722FB1D4F260A002B398B /* GPUImageOpacityFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOpacityFilter.m; sourceTree = ""; }; - 843722FC1D4F260A002B398B /* GPUImageOpeningFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOpeningFilter.h; sourceTree = ""; }; - 843722FD1D4F260A002B398B /* GPUImageOpeningFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOpeningFilter.m; sourceTree = ""; }; - 843722FE1D4F260A002B398B /* GPUImageOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOutput.h; sourceTree = ""; }; - 843722FF1D4F260A002B398B /* GPUImageOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOutput.m; sourceTree = ""; }; - 843723001D4F260A002B398B /* GPUImageOverlayBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageOverlayBlendFilter.h; sourceTree = ""; }; - 843723011D4F260A002B398B /* GPUImageOverlayBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageOverlayBlendFilter.m; sourceTree = ""; }; - 843723021D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageParallelCoordinateLineTransformFilter.h; sourceTree = ""; }; - 843723031D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageParallelCoordinateLineTransformFilter.m; sourceTree = ""; }; - 843723041D4F260A002B398B /* GPUImagePerlinNoiseFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePerlinNoiseFilter.h; sourceTree = ""; }; - 843723051D4F260A002B398B /* GPUImagePerlinNoiseFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePerlinNoiseFilter.m; sourceTree = ""; }; - 843723061D4F260A002B398B /* GPUImagePinchDistortionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePinchDistortionFilter.h; sourceTree = ""; }; - 843723071D4F260A002B398B /* GPUImagePinchDistortionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePinchDistortionFilter.m; sourceTree = ""; }; - 843723081D4F260A002B398B /* GPUImagePixellateFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePixellateFilter.h; sourceTree = ""; }; - 843723091D4F260A002B398B /* GPUImagePixellateFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePixellateFilter.m; sourceTree = ""; }; - 8437230A1D4F260A002B398B /* GPUImagePixellatePositionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePixellatePositionFilter.h; sourceTree = ""; }; - 8437230B1D4F260A002B398B /* GPUImagePixellatePositionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePixellatePositionFilter.m; sourceTree = ""; }; - 8437230C1D4F260A002B398B /* GPUImagePoissonBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePoissonBlendFilter.h; sourceTree = ""; }; - 8437230D1D4F260A002B398B /* GPUImagePoissonBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePoissonBlendFilter.m; sourceTree = ""; }; - 8437230E1D4F260A002B398B /* GPUImagePolarPixellateFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePolarPixellateFilter.h; sourceTree = ""; }; - 8437230F1D4F260A002B398B /* GPUImagePolarPixellateFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePolarPixellateFilter.m; sourceTree = ""; }; - 843723101D4F260A002B398B /* GPUImagePolkaDotFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePolkaDotFilter.h; sourceTree = ""; }; - 843723111D4F260A002B398B /* GPUImagePolkaDotFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePolkaDotFilter.m; sourceTree = ""; }; - 843723121D4F260A002B398B /* GPUImagePosterizeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePosterizeFilter.h; sourceTree = ""; }; - 843723131D4F260A002B398B /* GPUImagePosterizeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePosterizeFilter.m; sourceTree = ""; }; - 843723141D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePrewittEdgeDetectionFilter.h; sourceTree = ""; }; - 843723151D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePrewittEdgeDetectionFilter.m; sourceTree = ""; }; - 843723161D4F260A002B398B /* GPUImageRawDataInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRawDataInput.h; sourceTree = ""; }; - 843723171D4F260A002B398B /* GPUImageRawDataInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRawDataInput.m; sourceTree = ""; }; - 843723181D4F260A002B398B /* GPUImageRawDataOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRawDataOutput.h; sourceTree = ""; }; - 843723191D4F260A002B398B /* GPUImageRawDataOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRawDataOutput.m; sourceTree = ""; }; - 8437231A1D4F260A002B398B /* GPUImageRGBClosingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBClosingFilter.h; sourceTree = ""; }; - 8437231B1D4F260A002B398B /* GPUImageRGBClosingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBClosingFilter.m; sourceTree = ""; }; - 8437231C1D4F260A002B398B /* GPUImageRGBDilationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBDilationFilter.h; sourceTree = ""; }; - 8437231D1D4F260A002B398B /* GPUImageRGBDilationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBDilationFilter.m; sourceTree = ""; }; - 8437231E1D4F260A002B398B /* GPUImageRGBErosionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBErosionFilter.h; sourceTree = ""; }; - 8437231F1D4F260A002B398B /* GPUImageRGBErosionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBErosionFilter.m; sourceTree = ""; }; - 843723201D4F260A002B398B /* GPUImageRGBFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBFilter.h; sourceTree = ""; }; - 843723211D4F260A002B398B /* GPUImageRGBFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBFilter.m; sourceTree = ""; }; - 843723221D4F260A002B398B /* GPUImageRGBOpeningFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageRGBOpeningFilter.h; sourceTree = ""; }; - 843723231D4F260A002B398B /* GPUImageRGBOpeningFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageRGBOpeningFilter.m; sourceTree = ""; }; - 843723241D4F260A002B398B /* GPUImageSaturationBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSaturationBlendFilter.h; sourceTree = ""; }; - 843723251D4F260A002B398B /* GPUImageSaturationBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSaturationBlendFilter.m; sourceTree = ""; }; - 843723261D4F260A002B398B /* GPUImageSaturationFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSaturationFilter.h; sourceTree = ""; }; - 843723271D4F260A002B398B /* GPUImageSaturationFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSaturationFilter.m; sourceTree = ""; }; - 843723281D4F260A002B398B /* GPUImageScreenBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageScreenBlendFilter.h; sourceTree = ""; }; - 843723291D4F260A002B398B /* GPUImageScreenBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageScreenBlendFilter.m; sourceTree = ""; }; - 8437232A1D4F260A002B398B /* GPUImageSepiaFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSepiaFilter.h; sourceTree = ""; }; - 8437232B1D4F260A002B398B /* GPUImageSepiaFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSepiaFilter.m; sourceTree = ""; }; - 8437232C1D4F260A002B398B /* GPUImageSharpenFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSharpenFilter.h; sourceTree = ""; }; - 8437232D1D4F260A002B398B /* GPUImageSharpenFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSharpenFilter.m; sourceTree = ""; }; - 8437232E1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageShiTomasiFeatureDetectionFilter.h; sourceTree = ""; }; - 8437232F1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageShiTomasiFeatureDetectionFilter.m; sourceTree = ""; }; - 843723301D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSingleComponentGaussianBlurFilter.h; sourceTree = ""; }; - 843723311D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSingleComponentGaussianBlurFilter.m; sourceTree = ""; }; - 843723321D4F260A002B398B /* GPUImageSketchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSketchFilter.h; sourceTree = ""; }; - 843723331D4F260A002B398B /* GPUImageSketchFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSketchFilter.m; sourceTree = ""; }; - 843723341D4F260A002B398B /* GPUImageSkinToneFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSkinToneFilter.h; sourceTree = ""; }; - 843723351D4F260A002B398B /* GPUImageSkinToneFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSkinToneFilter.m; sourceTree = ""; }; - 843723361D4F260A002B398B /* GPUImageSmoothToonFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSmoothToonFilter.h; sourceTree = ""; }; - 843723371D4F260A002B398B /* GPUImageSmoothToonFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSmoothToonFilter.m; sourceTree = ""; }; - 843723381D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSobelEdgeDetectionFilter.h; sourceTree = ""; }; - 843723391D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSobelEdgeDetectionFilter.m; sourceTree = ""; }; - 8437233A1D4F260A002B398B /* GPUImageSoftEleganceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSoftEleganceFilter.h; sourceTree = ""; }; - 8437233B1D4F260A002B398B /* GPUImageSoftEleganceFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSoftEleganceFilter.m; sourceTree = ""; }; - 8437233C1D4F260A002B398B /* GPUImageSoftLightBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSoftLightBlendFilter.h; sourceTree = ""; }; - 8437233D1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSoftLightBlendFilter.m; sourceTree = ""; }; - 8437233E1D4F260A002B398B /* GPUImageSolarizeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSolarizeFilter.h; sourceTree = ""; }; - 8437233F1D4F260A002B398B /* GPUImageSolarizeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSolarizeFilter.m; sourceTree = ""; }; - 843723401D4F260A002B398B /* GPUImageSolidColorGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSolidColorGenerator.h; sourceTree = ""; }; - 843723411D4F260A002B398B /* GPUImageSolidColorGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSolidColorGenerator.m; sourceTree = ""; }; - 843723421D4F260A002B398B /* GPUImageSourceOverBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSourceOverBlendFilter.h; sourceTree = ""; }; - 843723431D4F260A002B398B /* GPUImageSourceOverBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSourceOverBlendFilter.m; sourceTree = ""; }; - 843723441D4F260A002B398B /* GPUImageSphereRefractionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSphereRefractionFilter.h; sourceTree = ""; }; - 843723451D4F260A002B398B /* GPUImageSphereRefractionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSphereRefractionFilter.m; sourceTree = ""; }; - 843723461D4F260A002B398B /* GPUImageStillCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageStillCamera.h; sourceTree = ""; }; - 843723471D4F260A002B398B /* GPUImageStillCamera.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageStillCamera.m; sourceTree = ""; }; - 843723481D4F260A002B398B /* GPUImageStretchDistortionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageStretchDistortionFilter.h; sourceTree = ""; }; - 843723491D4F260A002B398B /* GPUImageStretchDistortionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageStretchDistortionFilter.m; sourceTree = ""; }; - 8437234A1D4F260A002B398B /* GPUImageSubtractBlendFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSubtractBlendFilter.h; sourceTree = ""; }; - 8437234B1D4F260A002B398B /* GPUImageSubtractBlendFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSubtractBlendFilter.m; sourceTree = ""; }; - 8437234C1D4F260A002B398B /* GPUImageSwirlFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageSwirlFilter.h; sourceTree = ""; }; - 8437234D1D4F260A002B398B /* GPUImageSwirlFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageSwirlFilter.m; sourceTree = ""; }; - 8437234E1D4F260A002B398B /* GPUImageTextureInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTextureInput.h; sourceTree = ""; }; - 8437234F1D4F260A002B398B /* GPUImageTextureInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTextureInput.m; sourceTree = ""; }; - 843723501D4F260A002B398B /* GPUImageTextureOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTextureOutput.h; sourceTree = ""; }; - 843723511D4F260A002B398B /* GPUImageTextureOutput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTextureOutput.m; sourceTree = ""; }; - 843723521D4F260A002B398B /* GPUImageThreeInputFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThreeInputFilter.h; sourceTree = ""; }; - 843723531D4F260A002B398B /* GPUImageThreeInputFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThreeInputFilter.m; sourceTree = ""; }; - 843723541D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThresholdEdgeDetectionFilter.h; sourceTree = ""; }; - 843723551D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThresholdEdgeDetectionFilter.m; sourceTree = ""; }; - 843723561D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThresholdedNonMaximumSuppressionFilter.h; sourceTree = ""; }; - 843723571D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThresholdedNonMaximumSuppressionFilter.m; sourceTree = ""; }; - 843723581D4F260A002B398B /* GPUImageThresholdSketchFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageThresholdSketchFilter.h; sourceTree = ""; }; - 843723591D4F260A002B398B /* GPUImageThresholdSketchFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageThresholdSketchFilter.m; sourceTree = ""; }; - 8437235A1D4F260A002B398B /* GPUImageTiltShiftFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTiltShiftFilter.h; sourceTree = ""; }; - 8437235B1D4F260A002B398B /* GPUImageTiltShiftFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTiltShiftFilter.m; sourceTree = ""; }; - 8437235C1D4F260A002B398B /* GPUImageToneCurveFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageToneCurveFilter.h; sourceTree = ""; }; - 8437235D1D4F260A002B398B /* GPUImageToneCurveFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageToneCurveFilter.m; sourceTree = ""; }; - 8437235E1D4F260A002B398B /* GPUImageToonFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageToonFilter.h; sourceTree = ""; }; - 8437235F1D4F260A002B398B /* GPUImageToonFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageToonFilter.m; sourceTree = ""; }; - 843723601D4F260A002B398B /* GPUImageTransformFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTransformFilter.h; sourceTree = ""; }; - 843723611D4F260A002B398B /* GPUImageTransformFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTransformFilter.m; sourceTree = ""; }; - 843723621D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoInputCrossTextureSamplingFilter.h; sourceTree = ""; }; - 843723631D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoInputCrossTextureSamplingFilter.m; sourceTree = ""; }; - 843723641D4F260A002B398B /* GPUImageTwoInputFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoInputFilter.h; sourceTree = ""; }; - 843723651D4F260A002B398B /* GPUImageTwoInputFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoInputFilter.m; sourceTree = ""; }; - 843723661D4F260A002B398B /* GPUImageTwoPassFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoPassFilter.h; sourceTree = ""; }; - 843723671D4F260A002B398B /* GPUImageTwoPassFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoPassFilter.m; sourceTree = ""; }; - 843723681D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageTwoPassTextureSamplingFilter.h; sourceTree = ""; }; - 843723691D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageTwoPassTextureSamplingFilter.m; sourceTree = ""; }; - 8437236A1D4F260A002B398B /* GPUImageUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageUIElement.h; sourceTree = ""; }; - 8437236B1D4F260A002B398B /* GPUImageUIElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageUIElement.m; sourceTree = ""; }; - 8437236C1D4F260A002B398B /* GPUImageUnsharpMaskFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageUnsharpMaskFilter.h; sourceTree = ""; }; - 8437236D1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageUnsharpMaskFilter.m; sourceTree = ""; }; - 8437236E1D4F260A002B398B /* GPUImageVideoCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageVideoCamera.h; sourceTree = ""; }; - 8437236F1D4F260A002B398B /* GPUImageVideoCamera.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageVideoCamera.m; sourceTree = ""; }; - 843723701D4F260A002B398B /* GPUImageVignetteFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageVignetteFilter.h; sourceTree = ""; }; - 843723711D4F260A002B398B /* GPUImageVignetteFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageVignetteFilter.m; sourceTree = ""; }; - 843723721D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageVoronoiConsumerFilter.h; sourceTree = ""; }; - 843723731D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageVoronoiConsumerFilter.m; sourceTree = ""; }; - 843723741D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageWeakPixelInclusionFilter.h; sourceTree = ""; }; - 843723751D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageWeakPixelInclusionFilter.m; sourceTree = ""; }; - 843723761D4F260A002B398B /* GPUImageWhiteBalanceFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageWhiteBalanceFilter.h; sourceTree = ""; }; - 843723771D4F260A002B398B /* GPUImageWhiteBalanceFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageWhiteBalanceFilter.m; sourceTree = ""; }; - 843723781D4F260A002B398B /* GPUImageXYDerivativeFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageXYDerivativeFilter.h; sourceTree = ""; }; - 843723791D4F260A002B398B /* GPUImageXYDerivativeFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageXYDerivativeFilter.m; sourceTree = ""; }; - 8437237A1D4F260A002B398B /* GPUImageZoomBlurFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageZoomBlurFilter.h; sourceTree = ""; }; - 8437237B1D4F260A002B398B /* GPUImageZoomBlurFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageZoomBlurFilter.m; sourceTree = ""; }; - 8437237E1D4F260A002B398B /* GPUImageFramework.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageFramework.h; sourceTree = ""; }; - 8437237F1D4F260A002B398B /* GPUImageContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageContext.h; sourceTree = ""; }; - 843723801D4F260A002B398B /* GPUImageContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageContext.m; sourceTree = ""; }; - 843723811D4F260A002B398B /* GPUImageMovieWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageMovieWriter.h; sourceTree = ""; }; - 843723821D4F260A002B398B /* GPUImageMovieWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageMovieWriter.m; sourceTree = ""; }; - 843723831D4F260A002B398B /* GPUImagePicture+TextureSubimage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GPUImagePicture+TextureSubimage.h"; sourceTree = ""; }; - 843723841D4F260A002B398B /* GPUImagePicture+TextureSubimage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GPUImagePicture+TextureSubimage.m"; sourceTree = ""; }; - 843723851D4F260A002B398B /* GPUImagePicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImagePicture.h; sourceTree = ""; }; - 843723861D4F260A002B398B /* GPUImagePicture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImagePicture.m; sourceTree = ""; }; - 843723871D4F260A002B398B /* GPUImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUImageView.h; sourceTree = ""; }; - 843723881D4F260A002B398B /* GPUImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GPUImageView.m; sourceTree = ""; }; - 8437238A1D4F260A002B398B /* amf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amf.c; sourceTree = ""; }; - 8437238B1D4F260A002B398B /* amf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amf.h; sourceTree = ""; }; - 8437238C1D4F260A002B398B /* bytes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bytes.h; sourceTree = ""; }; - 8437238D1D4F260A002B398B /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = ""; }; - 8437238E1D4F260A002B398B /* dhgroups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dhgroups.h; sourceTree = ""; }; - 8437238F1D4F260A002B398B /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = ""; }; - 843723901D4F260A002B398B /* error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = ""; }; - 843723911D4F260A002B398B /* handshake.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = handshake.h; sourceTree = ""; }; - 843723921D4F260A002B398B /* hashswf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashswf.c; sourceTree = ""; }; - 843723931D4F260A002B398B /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = ""; }; - 843723941D4F260A002B398B /* log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = ""; }; - 843723951D4F260A002B398B /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; - 843723961D4F260A002B398B /* parseurl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parseurl.c; sourceTree = ""; }; - 843723971D4F260A002B398B /* rtmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtmp.c; sourceTree = ""; }; - 843723981D4F260A002B398B /* rtmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp.h; sourceTree = ""; }; - 843723991D4F260A002B398B /* rtmp_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rtmp_sys.h; sourceTree = ""; }; - B221C2471D59D41A009615C3 /* LFAVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAVEncoder.h; sourceTree = ""; }; - B221C2481D59D41A009615C3 /* LFAVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFAVEncoder.mm; sourceTree = ""; }; - B221C2491D59D41A009615C3 /* LFMP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFMP4Atom.h; sourceTree = ""; }; - B221C24A1D59D41A009615C3 /* LFMP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFMP4Atom.m; sourceTree = ""; }; - B221C24B1D59D41A009615C3 /* LFNALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LFNALUnit.cpp; sourceTree = ""; }; - B221C24C1D59D41A009615C3 /* LFNALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFNALUnit.h; sourceTree = ""; }; - B221C24D1D59D41A009615C3 /* LFVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoder.h; sourceTree = ""; }; - B221C24E1D59D41A009615C3 /* LFVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoEncoder.m; sourceTree = ""; }; - B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamingBuffer.h; path = LFLiveKit/publish/LFStreamingBuffer.h; sourceTree = SOURCE_ROOT; }; - B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamingBuffer.m; path = LFLiveKit/publish/LFStreamingBuffer.m; sourceTree = SOURCE_ROOT; }; - B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamRtmpSocket.h; path = LFLiveKit/publish/LFStreamRtmpSocket.h; sourceTree = SOURCE_ROOT; }; - B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LFStreamRtmpSocket.m; path = LFLiveKit/publish/LFStreamRtmpSocket.m; sourceTree = SOURCE_ROOT; }; - B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LFStreamSocket.h; path = LFLiveKit/publish/LFStreamSocket.h; sourceTree = SOURCE_ROOT; }; - B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+LFAdd.h"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.h"; sourceTree = SOURCE_ROOT; }; - B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+LFAdd.m"; path = "LFLiveKit/publish/NSMutableArray+LFAdd.m"; sourceTree = SOURCE_ROOT; }; - B2CD14641D45F18B008082E8 /* LICENSE.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.markdown; sourceTree = ""; }; - B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; - B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; - D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKit/Pods-LFLiveKit.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 84001F861D0015D10026C63F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 840020011D0017850026C63F /* libz.tbd in Frameworks */, - 84001FFF1D00176C0026C63F /* VideoToolbox.framework in Frameworks */, - 84001FFD1D0017680026C63F /* AudioToolbox.framework in Frameworks */, - 84001FFB1D0017630026C63F /* UIKit.framework in Frameworks */, - 84001FF91D00175D0026C63F /* Foundation.framework in Frameworks */, - 84001FF71D0017590026C63F /* AVFoundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F911D0015D10026C63F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001F951D0015D10026C63F /* LFLiveKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0C07D14560B9E91EA1B59306 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 840020001D0017850026C63F /* libz.tbd */, - 84001FFE1D00176C0026C63F /* VideoToolbox.framework */, - 84001FFC1D0017680026C63F /* AudioToolbox.framework */, - 84001FFA1D0017630026C63F /* UIKit.framework */, - 84001FF81D00175D0026C63F /* Foundation.framework */, - 84001FF61D0017590026C63F /* AVFoundation.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 4FDA0F424950EEA14E09E312 /* Pods */ = { - isa = PBXGroup; - children = ( - D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */, - 0BA5A0CE1F07E1D707F69735 /* Pods-LFLiveKit.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - 84001F801D0015D10026C63F = { - isa = PBXGroup; - children = ( - 84001F8C1D0015D10026C63F /* LFLiveKit */, - 84001F981D0015D10026C63F /* LFLiveKitTests */, - 84001F8B1D0015D10026C63F /* Products */, - 0C07D14560B9E91EA1B59306 /* Frameworks */, - 4FDA0F424950EEA14E09E312 /* Pods */, - ); - sourceTree = ""; - }; - 84001F8B1D0015D10026C63F /* Products */ = { - isa = PBXGroup; - children = ( - 84001F8A1D0015D10026C63F /* LFLiveKit.framework */, - 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 84001F8C1D0015D10026C63F /* LFLiveKit */ = { - isa = PBXGroup; - children = ( - 84001F8D1D0015D10026C63F /* LFLiveKit.h */, - 84001FBA1D0016380026C63F /* LFLiveSession.h */, - 84001FBB1D0016380026C63F /* LFLiveSession.m */, - 84001FBC1D0016380026C63F /* objects */, - 84001FB01D0016380026C63F /* configuration */, - 84001FA41D0016380026C63F /* capture */, - 84001FA91D0016380026C63F /* coder */, - 84001FB51D0016380026C63F /* filter */, - 84001FC91D0016380026C63F /* publish */, - 8437222B1D4F260A002B398B /* Vendor */, - 84001F8F1D0015D10026C63F /* Info.plist */, - ); - path = LFLiveKit; - sourceTree = ""; - }; - 84001F981D0015D10026C63F /* LFLiveKitTests */ = { - isa = PBXGroup; - children = ( - 84001F991D0015D10026C63F /* LFLiveKitTests.m */, - 84001F9B1D0015D10026C63F /* Info.plist */, - ); - path = LFLiveKitTests; - sourceTree = ""; - }; - 84001FA41D0016380026C63F /* capture */ = { - isa = PBXGroup; - children = ( - 84001FA51D0016380026C63F /* LFAudioCapture.h */, - 84001FA61D0016380026C63F /* LFAudioCapture.m */, - 84001FA71D0016380026C63F /* LFVideoCapture.h */, - 84001FA81D0016380026C63F /* LFVideoCapture.m */, - ); - path = capture; - sourceTree = ""; - }; - 84001FA91D0016380026C63F /* coder */ = { - isa = PBXGroup; - children = ( - B2CD14611D45F18B008082E8 /* H264 */, - B2CD146B1D45F18B008082E8 /* LFH264VideoEncoder.h */, - B2CD146C1D45F18B008082E8 /* LFH264VideoEncoder.mm */, - 84001FAA1D0016380026C63F /* LFAudioEncoding.h */, - 84001FAB1D0016380026C63F /* LFHardwareAudioEncoder.h */, - 84001FAC1D0016380026C63F /* LFHardwareAudioEncoder.m */, - 84001FAD1D0016380026C63F /* LFHardwareVideoEncoder.h */, - 84001FAE1D0016380026C63F /* LFHardwareVideoEncoder.m */, - 84001FAF1D0016380026C63F /* LFVideoEncoding.h */, - ); - path = coder; - sourceTree = ""; - }; - 84001FB01D0016380026C63F /* configuration */ = { - isa = PBXGroup; - children = ( - 84001FB11D0016380026C63F /* LFLiveAudioConfiguration.h */, - 84001FB21D0016380026C63F /* LFLiveAudioConfiguration.m */, - 84001FB31D0016380026C63F /* LFLiveVideoConfiguration.h */, - 84001FB41D0016380026C63F /* LFLiveVideoConfiguration.m */, - ); - path = configuration; - sourceTree = ""; - }; - 84001FB51D0016380026C63F /* filter */ = { - isa = PBXGroup; - children = ( - 84001FB61D0016380026C63F /* LFGPUImageBeautyFilter.h */, - 84001FB71D0016380026C63F /* LFGPUImageBeautyFilter.m */, - 84001FB81D0016380026C63F /* LFGPUImageEmptyFilter.h */, - 84001FB91D0016380026C63F /* LFGPUImageEmptyFilter.m */, - ); - path = filter; - sourceTree = ""; - }; - 84001FBC1D0016380026C63F /* objects */ = { - isa = PBXGroup; - children = ( - 84001FBD1D0016380026C63F /* LFAudioFrame.h */, - 84001FBE1D0016380026C63F /* LFAudioFrame.m */, - 84001FBF1D0016380026C63F /* LFFrame.h */, - 84001FC01D0016380026C63F /* LFFrame.m */, - 84001FC11D0016380026C63F /* LFLiveDebug.h */, - 84001FC21D0016380026C63F /* LFLiveDebug.m */, - 84001FC31D0016380026C63F /* LFLiveStreamInfo.h */, - 84001FC41D0016380026C63F /* LFLiveStreamInfo.m */, - 84001FC51D0016380026C63F /* LFVideoFrame.h */, - 84001FC61D0016380026C63F /* LFVideoFrame.m */, - ); - path = objects; - sourceTree = ""; - }; - 84001FC91D0016380026C63F /* publish */ = { - isa = PBXGroup; - children = ( - B289F1D41D3DE77F00D9C7A5 /* LFStreamingBuffer.h */, - B289F1D51D3DE77F00D9C7A5 /* LFStreamingBuffer.m */, - B289F1D61D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h */, - B289F1D71D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m */, - B289F1D81D3DE77F00D9C7A5 /* LFStreamSocket.h */, - B289F1D91D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h */, - B289F1DA1D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m */, - ); - name = publish; - path = upload; - sourceTree = ""; - }; - 8437222B1D4F260A002B398B /* Vendor */ = { - isa = PBXGroup; - children = ( - 8437222C1D4F260A002B398B /* GPUImage */, - 843723891D4F260A002B398B /* pili-librtmp */, - ); - path = Vendor; - sourceTree = ""; - }; - 8437222C1D4F260A002B398B /* GPUImage */ = { - isa = PBXGroup; - children = ( - 8437222D1D4F260A002B398B /* GLProgram.h */, - 8437222E1D4F260A002B398B /* GLProgram.m */, - 8437222F1D4F260A002B398B /* GPUImage.h */, - 843722301D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h */, - 843722311D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m */, - 843722321D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h */, - 843722331D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m */, - 843722341D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h */, - 843722351D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m */, - 843722361D4F260A002B398B /* GPUImageAddBlendFilter.h */, - 843722371D4F260A002B398B /* GPUImageAddBlendFilter.m */, - 843722381D4F260A002B398B /* GPUImageAlphaBlendFilter.h */, - 843722391D4F260A002B398B /* GPUImageAlphaBlendFilter.m */, - 8437223A1D4F260A002B398B /* GPUImageAmatorkaFilter.h */, - 8437223B1D4F260A002B398B /* GPUImageAmatorkaFilter.m */, - 8437223C1D4F260A002B398B /* GPUImageAverageColor.h */, - 8437223D1D4F260A002B398B /* GPUImageAverageColor.m */, - 8437223E1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h */, - 8437223F1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m */, - 843722401D4F260A002B398B /* GPUImageBilateralFilter.h */, - 843722411D4F260A002B398B /* GPUImageBilateralFilter.m */, - 843722421D4F260A002B398B /* GPUImageBoxBlurFilter.h */, - 843722431D4F260A002B398B /* GPUImageBoxBlurFilter.m */, - 843722441D4F260A002B398B /* GPUImageBrightnessFilter.h */, - 843722451D4F260A002B398B /* GPUImageBrightnessFilter.m */, - 843722461D4F260A002B398B /* GPUImageBuffer.h */, - 843722471D4F260A002B398B /* GPUImageBuffer.m */, - 843722481D4F260A002B398B /* GPUImageBulgeDistortionFilter.h */, - 843722491D4F260A002B398B /* GPUImageBulgeDistortionFilter.m */, - 8437224A1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h */, - 8437224B1D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m */, - 8437224C1D4F260A002B398B /* GPUImageCGAColorspaceFilter.h */, - 8437224D1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m */, - 8437224E1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h */, - 8437224F1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m */, - 843722501D4F260A002B398B /* GPUImageChromaKeyFilter.h */, - 843722511D4F260A002B398B /* GPUImageChromaKeyFilter.m */, - 843722521D4F260A002B398B /* GPUImageClosingFilter.h */, - 843722531D4F260A002B398B /* GPUImageClosingFilter.m */, - 843722541D4F260A002B398B /* GPUImageColorBlendFilter.h */, - 843722551D4F260A002B398B /* GPUImageColorBlendFilter.m */, - 843722561D4F260A002B398B /* GPUImageColorBurnBlendFilter.h */, - 843722571D4F260A002B398B /* GPUImageColorBurnBlendFilter.m */, - 843722581D4F260A002B398B /* GPUImageColorConversion.h */, - 843722591D4F260A002B398B /* GPUImageColorConversion.m */, - 8437225A1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h */, - 8437225B1D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m */, - 8437225C1D4F260A002B398B /* GPUImageColorInvertFilter.h */, - 8437225D1D4F260A002B398B /* GPUImageColorInvertFilter.m */, - 8437225E1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h */, - 8437225F1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m */, - 843722601D4F260A002B398B /* GPUImageColorMatrixFilter.h */, - 843722611D4F260A002B398B /* GPUImageColorMatrixFilter.m */, - 843722621D4F260A002B398B /* GPUImageColorPackingFilter.h */, - 843722631D4F260A002B398B /* GPUImageColorPackingFilter.m */, - 843722641D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h */, - 843722651D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m */, - 843722661D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h */, - 843722671D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m */, - 843722681D4F260A002B398B /* GPUImageContrastFilter.h */, - 843722691D4F260A002B398B /* GPUImageContrastFilter.m */, - 8437226A1D4F260A002B398B /* GPUImageCropFilter.h */, - 8437226B1D4F260A002B398B /* GPUImageCropFilter.m */, - 8437226C1D4F260A002B398B /* GPUImageCrosshairGenerator.h */, - 8437226D1D4F260A002B398B /* GPUImageCrosshairGenerator.m */, - 8437226E1D4F260A002B398B /* GPUImageCrosshatchFilter.h */, - 8437226F1D4F260A002B398B /* GPUImageCrosshatchFilter.m */, - 843722701D4F260A002B398B /* GPUImageDarkenBlendFilter.h */, - 843722711D4F260A002B398B /* GPUImageDarkenBlendFilter.m */, - 843722721D4F260A002B398B /* GPUImageDifferenceBlendFilter.h */, - 843722731D4F260A002B398B /* GPUImageDifferenceBlendFilter.m */, - 843722741D4F260A002B398B /* GPUImageDilationFilter.h */, - 843722751D4F260A002B398B /* GPUImageDilationFilter.m */, - 843722761D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h */, - 843722771D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m */, - 843722781D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h */, - 843722791D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m */, - 8437227A1D4F260A002B398B /* GPUImageDissolveBlendFilter.h */, - 8437227B1D4F260A002B398B /* GPUImageDissolveBlendFilter.m */, - 8437227C1D4F260A002B398B /* GPUImageDivideBlendFilter.h */, - 8437227D1D4F260A002B398B /* GPUImageDivideBlendFilter.m */, - 8437227E1D4F260A002B398B /* GPUImageEmbossFilter.h */, - 8437227F1D4F260A002B398B /* GPUImageEmbossFilter.m */, - 843722801D4F260A002B398B /* GPUImageErosionFilter.h */, - 843722811D4F260A002B398B /* GPUImageErosionFilter.m */, - 843722821D4F260A002B398B /* GPUImageExclusionBlendFilter.h */, - 843722831D4F260A002B398B /* GPUImageExclusionBlendFilter.m */, - 843722841D4F260A002B398B /* GPUImageExposureFilter.h */, - 843722851D4F260A002B398B /* GPUImageExposureFilter.m */, - 843722861D4F260A002B398B /* GPUImageFalseColorFilter.h */, - 843722871D4F260A002B398B /* GPUImageFalseColorFilter.m */, - 843722881D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h */, - 843722891D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m */, - 8437228A1D4F260A002B398B /* GPUImageFilter.h */, - 8437228B1D4F260A002B398B /* GPUImageFilter.m */, - 8437228C1D4F260A002B398B /* GPUImageFilterGroup.h */, - 8437228D1D4F260A002B398B /* GPUImageFilterGroup.m */, - 8437228E1D4F260A002B398B /* GPUImageFilterPipeline.h */, - 8437228F1D4F260A002B398B /* GPUImageFilterPipeline.m */, - 843722901D4F260A002B398B /* GPUImageFourInputFilter.h */, - 843722911D4F260A002B398B /* GPUImageFourInputFilter.m */, - 843722921D4F260A002B398B /* GPUImageFramebuffer.h */, - 843722931D4F260A002B398B /* GPUImageFramebuffer.m */, - 843722941D4F260A002B398B /* GPUImageFramebufferCache.h */, - 843722951D4F260A002B398B /* GPUImageFramebufferCache.m */, - 843722961D4F260A002B398B /* GPUImageGammaFilter.h */, - 843722971D4F260A002B398B /* GPUImageGammaFilter.m */, - 843722981D4F260A002B398B /* GPUImageGaussianBlurFilter.h */, - 843722991D4F260A002B398B /* GPUImageGaussianBlurFilter.m */, - 8437229A1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h */, - 8437229B1D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m */, - 8437229C1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h */, - 8437229D1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m */, - 8437229E1D4F260A002B398B /* GPUImageGlassSphereFilter.h */, - 8437229F1D4F260A002B398B /* GPUImageGlassSphereFilter.m */, - 843722A01D4F260A002B398B /* GPUImageGrayscaleFilter.h */, - 843722A11D4F260A002B398B /* GPUImageGrayscaleFilter.m */, - 843722A21D4F260A002B398B /* GPUImageHalftoneFilter.h */, - 843722A31D4F260A002B398B /* GPUImageHalftoneFilter.m */, - 843722A41D4F260A002B398B /* GPUImageHardLightBlendFilter.h */, - 843722A51D4F260A002B398B /* GPUImageHardLightBlendFilter.m */, - 843722A61D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h */, - 843722A71D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m */, - 843722A81D4F260A002B398B /* GPUImageHazeFilter.h */, - 843722A91D4F260A002B398B /* GPUImageHazeFilter.m */, - 843722AA1D4F260A002B398B /* GPUImageHighlightShadowFilter.h */, - 843722AB1D4F260A002B398B /* GPUImageHighlightShadowFilter.m */, - 843722AC1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h */, - 843722AD1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m */, - 843722AE1D4F260A002B398B /* GPUImageHighPassFilter.h */, - 843722AF1D4F260A002B398B /* GPUImageHighPassFilter.m */, - 843722B01D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h */, - 843722B11D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m */, - 843722B21D4F260A002B398B /* GPUImageHistogramFilter.h */, - 843722B31D4F260A002B398B /* GPUImageHistogramFilter.m */, - 843722B41D4F260A002B398B /* GPUImageHistogramGenerator.h */, - 843722B51D4F260A002B398B /* GPUImageHistogramGenerator.m */, - 843722B61D4F260A002B398B /* GPUImageHoughTransformLineDetector.h */, - 843722B71D4F260A002B398B /* GPUImageHoughTransformLineDetector.m */, - 843722B81D4F260A002B398B /* GPUImageHSBFilter.h */, - 843722B91D4F260A002B398B /* GPUImageHSBFilter.m */, - 843722BA1D4F260A002B398B /* GPUImageHueBlendFilter.h */, - 843722BB1D4F260A002B398B /* GPUImageHueBlendFilter.m */, - 843722BC1D4F260A002B398B /* GPUImageHueFilter.h */, - 843722BD1D4F260A002B398B /* GPUImageHueFilter.m */, - 843722BE1D4F260A002B398B /* GPUImageiOSBlurFilter.h */, - 843722BF1D4F260A002B398B /* GPUImageiOSBlurFilter.m */, - 843722C01D4F260A002B398B /* GPUImageJFAVoronoiFilter.h */, - 843722C11D4F260A002B398B /* GPUImageJFAVoronoiFilter.m */, - 843722C21D4F260A002B398B /* GPUImageKuwaharaFilter.h */, - 843722C31D4F260A002B398B /* GPUImageKuwaharaFilter.m */, - 843722C41D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h */, - 843722C51D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m */, - 843722C61D4F260A002B398B /* GPUImageLanczosResamplingFilter.h */, - 843722C71D4F260A002B398B /* GPUImageLanczosResamplingFilter.m */, - 843722C81D4F260A002B398B /* GPUImageLaplacianFilter.h */, - 843722C91D4F260A002B398B /* GPUImageLaplacianFilter.m */, - 843722CA1D4F260A002B398B /* GPUImageLevelsFilter.h */, - 843722CB1D4F260A002B398B /* GPUImageLevelsFilter.m */, - 843722CC1D4F260A002B398B /* GPUImageLightenBlendFilter.h */, - 843722CD1D4F260A002B398B /* GPUImageLightenBlendFilter.m */, - 843722CE1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h */, - 843722CF1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m */, - 843722D01D4F260A002B398B /* GPUImageLineGenerator.h */, - 843722D11D4F260A002B398B /* GPUImageLineGenerator.m */, - 843722D21D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h */, - 843722D31D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m */, - 843722D41D4F260A002B398B /* GPUImageLookupFilter.h */, - 843722D51D4F260A002B398B /* GPUImageLookupFilter.m */, - 843722D61D4F260A002B398B /* GPUImageLowPassFilter.h */, - 843722D71D4F260A002B398B /* GPUImageLowPassFilter.m */, - 843722D81D4F260A002B398B /* GPUImageLuminanceRangeFilter.h */, - 843722D91D4F260A002B398B /* GPUImageLuminanceRangeFilter.m */, - 843722DA1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h */, - 843722DB1D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m */, - 843722DC1D4F260A002B398B /* GPUImageLuminosity.h */, - 843722DD1D4F260A002B398B /* GPUImageLuminosity.m */, - 843722DE1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h */, - 843722DF1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m */, - 843722E01D4F260A002B398B /* GPUImageMaskFilter.h */, - 843722E11D4F260A002B398B /* GPUImageMaskFilter.m */, - 843722E21D4F260A002B398B /* GPUImageMedianFilter.h */, - 843722E31D4F260A002B398B /* GPUImageMedianFilter.m */, - 843722E41D4F260A002B398B /* GPUImageMissEtikateFilter.h */, - 843722E51D4F260A002B398B /* GPUImageMissEtikateFilter.m */, - 843722E61D4F260A002B398B /* GPUImageMonochromeFilter.h */, - 843722E71D4F260A002B398B /* GPUImageMonochromeFilter.m */, - 843722E81D4F260A002B398B /* GPUImageMosaicFilter.h */, - 843722E91D4F260A002B398B /* GPUImageMosaicFilter.m */, - 843722EA1D4F260A002B398B /* GPUImageMotionBlurFilter.h */, - 843722EB1D4F260A002B398B /* GPUImageMotionBlurFilter.m */, - 843722EC1D4F260A002B398B /* GPUImageMotionDetector.h */, - 843722ED1D4F260A002B398B /* GPUImageMotionDetector.m */, - 843722EE1D4F260A002B398B /* GPUImageMovie.h */, - 843722EF1D4F260A002B398B /* GPUImageMovie.m */, - 843722F01D4F260A002B398B /* GPUImageMovieComposition.h */, - 843722F11D4F260A002B398B /* GPUImageMovieComposition.m */, - 843722F21D4F260A002B398B /* GPUImageMultiplyBlendFilter.h */, - 843722F31D4F260A002B398B /* GPUImageMultiplyBlendFilter.m */, - 843722F41D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h */, - 843722F51D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m */, - 843722F61D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h */, - 843722F71D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m */, - 843722F81D4F260A002B398B /* GPUImageNormalBlendFilter.h */, - 843722F91D4F260A002B398B /* GPUImageNormalBlendFilter.m */, - 843722FA1D4F260A002B398B /* GPUImageOpacityFilter.h */, - 843722FB1D4F260A002B398B /* GPUImageOpacityFilter.m */, - 843722FC1D4F260A002B398B /* GPUImageOpeningFilter.h */, - 843722FD1D4F260A002B398B /* GPUImageOpeningFilter.m */, - 843722FE1D4F260A002B398B /* GPUImageOutput.h */, - 843722FF1D4F260A002B398B /* GPUImageOutput.m */, - 843723001D4F260A002B398B /* GPUImageOverlayBlendFilter.h */, - 843723011D4F260A002B398B /* GPUImageOverlayBlendFilter.m */, - 843723021D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h */, - 843723031D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m */, - 843723041D4F260A002B398B /* GPUImagePerlinNoiseFilter.h */, - 843723051D4F260A002B398B /* GPUImagePerlinNoiseFilter.m */, - 843723061D4F260A002B398B /* GPUImagePinchDistortionFilter.h */, - 843723071D4F260A002B398B /* GPUImagePinchDistortionFilter.m */, - 843723081D4F260A002B398B /* GPUImagePixellateFilter.h */, - 843723091D4F260A002B398B /* GPUImagePixellateFilter.m */, - 8437230A1D4F260A002B398B /* GPUImagePixellatePositionFilter.h */, - 8437230B1D4F260A002B398B /* GPUImagePixellatePositionFilter.m */, - 8437230C1D4F260A002B398B /* GPUImagePoissonBlendFilter.h */, - 8437230D1D4F260A002B398B /* GPUImagePoissonBlendFilter.m */, - 8437230E1D4F260A002B398B /* GPUImagePolarPixellateFilter.h */, - 8437230F1D4F260A002B398B /* GPUImagePolarPixellateFilter.m */, - 843723101D4F260A002B398B /* GPUImagePolkaDotFilter.h */, - 843723111D4F260A002B398B /* GPUImagePolkaDotFilter.m */, - 843723121D4F260A002B398B /* GPUImagePosterizeFilter.h */, - 843723131D4F260A002B398B /* GPUImagePosterizeFilter.m */, - 843723141D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h */, - 843723151D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m */, - 843723161D4F260A002B398B /* GPUImageRawDataInput.h */, - 843723171D4F260A002B398B /* GPUImageRawDataInput.m */, - 843723181D4F260A002B398B /* GPUImageRawDataOutput.h */, - 843723191D4F260A002B398B /* GPUImageRawDataOutput.m */, - 8437231A1D4F260A002B398B /* GPUImageRGBClosingFilter.h */, - 8437231B1D4F260A002B398B /* GPUImageRGBClosingFilter.m */, - 8437231C1D4F260A002B398B /* GPUImageRGBDilationFilter.h */, - 8437231D1D4F260A002B398B /* GPUImageRGBDilationFilter.m */, - 8437231E1D4F260A002B398B /* GPUImageRGBErosionFilter.h */, - 8437231F1D4F260A002B398B /* GPUImageRGBErosionFilter.m */, - 843723201D4F260A002B398B /* GPUImageRGBFilter.h */, - 843723211D4F260A002B398B /* GPUImageRGBFilter.m */, - 843723221D4F260A002B398B /* GPUImageRGBOpeningFilter.h */, - 843723231D4F260A002B398B /* GPUImageRGBOpeningFilter.m */, - 843723241D4F260A002B398B /* GPUImageSaturationBlendFilter.h */, - 843723251D4F260A002B398B /* GPUImageSaturationBlendFilter.m */, - 843723261D4F260A002B398B /* GPUImageSaturationFilter.h */, - 843723271D4F260A002B398B /* GPUImageSaturationFilter.m */, - 843723281D4F260A002B398B /* GPUImageScreenBlendFilter.h */, - 843723291D4F260A002B398B /* GPUImageScreenBlendFilter.m */, - 8437232A1D4F260A002B398B /* GPUImageSepiaFilter.h */, - 8437232B1D4F260A002B398B /* GPUImageSepiaFilter.m */, - 8437232C1D4F260A002B398B /* GPUImageSharpenFilter.h */, - 8437232D1D4F260A002B398B /* GPUImageSharpenFilter.m */, - 8437232E1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h */, - 8437232F1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m */, - 843723301D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h */, - 843723311D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m */, - 843723321D4F260A002B398B /* GPUImageSketchFilter.h */, - 843723331D4F260A002B398B /* GPUImageSketchFilter.m */, - 843723341D4F260A002B398B /* GPUImageSkinToneFilter.h */, - 843723351D4F260A002B398B /* GPUImageSkinToneFilter.m */, - 843723361D4F260A002B398B /* GPUImageSmoothToonFilter.h */, - 843723371D4F260A002B398B /* GPUImageSmoothToonFilter.m */, - 843723381D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h */, - 843723391D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m */, - 8437233A1D4F260A002B398B /* GPUImageSoftEleganceFilter.h */, - 8437233B1D4F260A002B398B /* GPUImageSoftEleganceFilter.m */, - 8437233C1D4F260A002B398B /* GPUImageSoftLightBlendFilter.h */, - 8437233D1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m */, - 8437233E1D4F260A002B398B /* GPUImageSolarizeFilter.h */, - 8437233F1D4F260A002B398B /* GPUImageSolarizeFilter.m */, - 843723401D4F260A002B398B /* GPUImageSolidColorGenerator.h */, - 843723411D4F260A002B398B /* GPUImageSolidColorGenerator.m */, - 843723421D4F260A002B398B /* GPUImageSourceOverBlendFilter.h */, - 843723431D4F260A002B398B /* GPUImageSourceOverBlendFilter.m */, - 843723441D4F260A002B398B /* GPUImageSphereRefractionFilter.h */, - 843723451D4F260A002B398B /* GPUImageSphereRefractionFilter.m */, - 843723461D4F260A002B398B /* GPUImageStillCamera.h */, - 843723471D4F260A002B398B /* GPUImageStillCamera.m */, - 843723481D4F260A002B398B /* GPUImageStretchDistortionFilter.h */, - 843723491D4F260A002B398B /* GPUImageStretchDistortionFilter.m */, - 8437234A1D4F260A002B398B /* GPUImageSubtractBlendFilter.h */, - 8437234B1D4F260A002B398B /* GPUImageSubtractBlendFilter.m */, - 8437234C1D4F260A002B398B /* GPUImageSwirlFilter.h */, - 8437234D1D4F260A002B398B /* GPUImageSwirlFilter.m */, - 8437234E1D4F260A002B398B /* GPUImageTextureInput.h */, - 8437234F1D4F260A002B398B /* GPUImageTextureInput.m */, - 843723501D4F260A002B398B /* GPUImageTextureOutput.h */, - 843723511D4F260A002B398B /* GPUImageTextureOutput.m */, - 843723521D4F260A002B398B /* GPUImageThreeInputFilter.h */, - 843723531D4F260A002B398B /* GPUImageThreeInputFilter.m */, - 843723541D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h */, - 843723551D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m */, - 843723561D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h */, - 843723571D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m */, - 843723581D4F260A002B398B /* GPUImageThresholdSketchFilter.h */, - 843723591D4F260A002B398B /* GPUImageThresholdSketchFilter.m */, - 8437235A1D4F260A002B398B /* GPUImageTiltShiftFilter.h */, - 8437235B1D4F260A002B398B /* GPUImageTiltShiftFilter.m */, - 8437235C1D4F260A002B398B /* GPUImageToneCurveFilter.h */, - 8437235D1D4F260A002B398B /* GPUImageToneCurveFilter.m */, - 8437235E1D4F260A002B398B /* GPUImageToonFilter.h */, - 8437235F1D4F260A002B398B /* GPUImageToonFilter.m */, - 843723601D4F260A002B398B /* GPUImageTransformFilter.h */, - 843723611D4F260A002B398B /* GPUImageTransformFilter.m */, - 843723621D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h */, - 843723631D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m */, - 843723641D4F260A002B398B /* GPUImageTwoInputFilter.h */, - 843723651D4F260A002B398B /* GPUImageTwoInputFilter.m */, - 843723661D4F260A002B398B /* GPUImageTwoPassFilter.h */, - 843723671D4F260A002B398B /* GPUImageTwoPassFilter.m */, - 843723681D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h */, - 843723691D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m */, - 8437236A1D4F260A002B398B /* GPUImageUIElement.h */, - 8437236B1D4F260A002B398B /* GPUImageUIElement.m */, - 8437236C1D4F260A002B398B /* GPUImageUnsharpMaskFilter.h */, - 8437236D1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m */, - 8437236E1D4F260A002B398B /* GPUImageVideoCamera.h */, - 8437236F1D4F260A002B398B /* GPUImageVideoCamera.m */, - 843723701D4F260A002B398B /* GPUImageVignetteFilter.h */, - 843723711D4F260A002B398B /* GPUImageVignetteFilter.m */, - 843723721D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h */, - 843723731D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m */, - 843723741D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h */, - 843723751D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m */, - 843723761D4F260A002B398B /* GPUImageWhiteBalanceFilter.h */, - 843723771D4F260A002B398B /* GPUImageWhiteBalanceFilter.m */, - 843723781D4F260A002B398B /* GPUImageXYDerivativeFilter.h */, - 843723791D4F260A002B398B /* GPUImageXYDerivativeFilter.m */, - 8437237A1D4F260A002B398B /* GPUImageZoomBlurFilter.h */, - 8437237B1D4F260A002B398B /* GPUImageZoomBlurFilter.m */, - 8437237C1D4F260A002B398B /* iOS */, - ); - path = GPUImage; - sourceTree = ""; - }; - 8437237C1D4F260A002B398B /* iOS */ = { - isa = PBXGroup; - children = ( - 8437237D1D4F260A002B398B /* Framework */, - 8437237F1D4F260A002B398B /* GPUImageContext.h */, - 843723801D4F260A002B398B /* GPUImageContext.m */, - 843723811D4F260A002B398B /* GPUImageMovieWriter.h */, - 843723821D4F260A002B398B /* GPUImageMovieWriter.m */, - 843723831D4F260A002B398B /* GPUImagePicture+TextureSubimage.h */, - 843723841D4F260A002B398B /* GPUImagePicture+TextureSubimage.m */, - 843723851D4F260A002B398B /* GPUImagePicture.h */, - 843723861D4F260A002B398B /* GPUImagePicture.m */, - 843723871D4F260A002B398B /* GPUImageView.h */, - 843723881D4F260A002B398B /* GPUImageView.m */, - ); - path = iOS; - sourceTree = ""; - }; - 8437237D1D4F260A002B398B /* Framework */ = { - isa = PBXGroup; - children = ( - 8437237E1D4F260A002B398B /* GPUImageFramework.h */, - ); - path = Framework; - sourceTree = ""; - }; - 843723891D4F260A002B398B /* pili-librtmp */ = { - isa = PBXGroup; - children = ( - 8437238A1D4F260A002B398B /* amf.c */, - 8437238B1D4F260A002B398B /* amf.h */, - 8437238C1D4F260A002B398B /* bytes.h */, - 8437238D1D4F260A002B398B /* dh.h */, - 8437238E1D4F260A002B398B /* dhgroups.h */, - 8437238F1D4F260A002B398B /* error.c */, - 843723901D4F260A002B398B /* error.h */, - 843723911D4F260A002B398B /* handshake.h */, - 843723921D4F260A002B398B /* hashswf.c */, - 843723931D4F260A002B398B /* http.h */, - 843723941D4F260A002B398B /* log.c */, - 843723951D4F260A002B398B /* log.h */, - 843723961D4F260A002B398B /* parseurl.c */, - 843723971D4F260A002B398B /* rtmp.c */, - 843723981D4F260A002B398B /* rtmp.h */, - 843723991D4F260A002B398B /* rtmp_sys.h */, - ); - path = "pili-librtmp"; - sourceTree = ""; - }; - B2CD14611D45F18B008082E8 /* H264 */ = { - isa = PBXGroup; - children = ( - B221C2471D59D41A009615C3 /* LFAVEncoder.h */, - B221C2481D59D41A009615C3 /* LFAVEncoder.mm */, - B221C2491D59D41A009615C3 /* LFMP4Atom.h */, - B221C24A1D59D41A009615C3 /* LFMP4Atom.m */, - B221C24B1D59D41A009615C3 /* LFNALUnit.cpp */, - B221C24C1D59D41A009615C3 /* LFNALUnit.h */, - B221C24D1D59D41A009615C3 /* LFVideoEncoder.h */, - B221C24E1D59D41A009615C3 /* LFVideoEncoder.m */, - B2CD14641D45F18B008082E8 /* LICENSE.markdown */, - ); - path = H264; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 84001F871D0015D10026C63F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001FE51D0016380026C63F /* LFAudioFrame.h in Headers */, - B221C24F1D59D41A009615C3 /* LFAVEncoder.h in Headers */, - 843724711D4F260A002B398B /* GPUImagePerlinNoiseFilter.h in Headers */, - 843724F61D4F260A002B398B /* bytes.h in Headers */, - 84001FED1D0016380026C63F /* LFVideoFrame.h in Headers */, - 843724A51D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.h in Headers */, - 843724231D4F260A002B398B /* GPUImageHoughTransformLineDetector.h in Headers */, - 8437246D1D4F260A002B398B /* GPUImageOverlayBlendFilter.h in Headers */, - 84001FE71D0016380026C63F /* LFFrame.h in Headers */, - 843724C11D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.h in Headers */, - 843724B71D4F260A002B398B /* GPUImageSubtractBlendFilter.h in Headers */, - 8437245B1D4F260A002B398B /* GPUImageMovie.h in Headers */, - 843724191D4F260A002B398B /* GPUImageHighlightShadowTintFilter.h in Headers */, - 843724291D4F260A002B398B /* GPUImageHueFilter.h in Headers */, - 843724FF1D4F260A002B398B /* log.h in Headers */, - 843724AF1D4F260A002B398B /* GPUImageSourceOverBlendFilter.h in Headers */, - 843723CB1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.h in Headers */, - 843723DF1D4F260A002B398B /* GPUImageDifferenceBlendFilter.h in Headers */, - 843724EA1D4F260A002B398B /* GPUImageContext.h in Headers */, - 843723D91D4F260A002B398B /* GPUImageCrosshairGenerator.h in Headers */, - 84001FDB1D0016380026C63F /* LFLiveAudioConfiguration.h in Headers */, - 843723ED1D4F260A002B398B /* GPUImageErosionFilter.h in Headers */, - B289F1DD1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.h in Headers */, - 843724211D4F260A002B398B /* GPUImageHistogramGenerator.h in Headers */, - 843723C51D4F260A002B398B /* GPUImageColorConversion.h in Headers */, - 8437239D1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.h in Headers */, - 843724971D4F260A002B398B /* GPUImageSepiaFilter.h in Headers */, - 843723AF1D4F260A002B398B /* GPUImageBoxBlurFilter.h in Headers */, - 8437248B1D4F260A002B398B /* GPUImageRGBErosionFilter.h in Headers */, - 843724D11D4F260A002B398B /* GPUImageTwoInputFilter.h in Headers */, - 843723B31D4F260A002B398B /* GPUImageBuffer.h in Headers */, - 843724D31D4F260A002B398B /* GPUImageTwoPassFilter.h in Headers */, - 843724311D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.h in Headers */, - 843724F21D4F260A002B398B /* GPUImageView.h in Headers */, - 843724991D4F260A002B398B /* GPUImageSharpenFilter.h in Headers */, - 84001FDD1D0016380026C63F /* LFLiveVideoConfiguration.h in Headers */, - 843724FB1D4F260A002B398B /* handshake.h in Headers */, - 843723F31D4F260A002B398B /* GPUImageFalseColorFilter.h in Headers */, - 843723B71D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.h in Headers */, - 843724151D4F260A002B398B /* GPUImageHazeFilter.h in Headers */, - 843723E51D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.h in Headers */, - 843724091D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.h in Headers */, - 843724DD1D4F260A002B398B /* GPUImageVignetteFilter.h in Headers */, - 843724AD1D4F260A002B398B /* GPUImageSolidColorGenerator.h in Headers */, - 8437244D1D4F260A002B398B /* GPUImageMaskFilter.h in Headers */, - 843723E91D4F260A002B398B /* GPUImageDivideBlendFilter.h in Headers */, - 84001FE31D0016380026C63F /* LFLiveSession.h in Headers */, - 843724411D4F260A002B398B /* GPUImageLookupFilter.h in Headers */, - 843724E91D4F260A002B398B /* GPUImageFramework.h in Headers */, - 8437244B1D4F260A002B398B /* GPUImageLuminosityBlendFilter.h in Headers */, - 8437247D1D4F260A002B398B /* GPUImagePolkaDotFilter.h in Headers */, - 843724571D4F260A002B398B /* GPUImageMotionBlurFilter.h in Headers */, - 843724BD1D4F260A002B398B /* GPUImageTextureOutput.h in Headers */, - 843724DB1D4F260A002B398B /* GPUImageVideoCamera.h in Headers */, - 843724791D4F260A002B398B /* GPUImagePoissonBlendFilter.h in Headers */, - B289F1DB1D3DE77F00D9C7A5 /* LFStreamingBuffer.h in Headers */, - 843724771D4F260A002B398B /* GPUImagePixellatePositionFilter.h in Headers */, - 843724911D4F260A002B398B /* GPUImageSaturationBlendFilter.h in Headers */, - 8437240D1D4F260A002B398B /* GPUImageGrayscaleFilter.h in Headers */, - 8437249D1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.h in Headers */, - 843724751D4F260A002B398B /* GPUImagePixellateFilter.h in Headers */, - 843724E71D4F260A002B398B /* GPUImageZoomBlurFilter.h in Headers */, - 843723FF1D4F260A002B398B /* GPUImageFramebuffer.h in Headers */, - 8437244F1D4F260A002B398B /* GPUImageMedianFilter.h in Headers */, - 843724B11D4F260A002B398B /* GPUImageSphereRefractionFilter.h in Headers */, - 843724631D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.h in Headers */, - 843724591D4F260A002B398B /* GPUImageMotionDetector.h in Headers */, - 8437246F1D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.h in Headers */, - 843724931D4F260A002B398B /* GPUImageSaturationFilter.h in Headers */, - 843723EF1D4F260A002B398B /* GPUImageExclusionBlendFilter.h in Headers */, - 843724811D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.h in Headers */, - 843724C91D4F260A002B398B /* GPUImageToneCurveFilter.h in Headers */, - 843724CF1D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.h in Headers */, - 843723AD1D4F260A002B398B /* GPUImageBilateralFilter.h in Headers */, - 843724F81D4F260A002B398B /* dhgroups.h in Headers */, - 843724731D4F260A002B398B /* GPUImagePinchDistortionFilter.h in Headers */, - 843724D71D4F260A002B398B /* GPUImageUIElement.h in Headers */, - 843724BB1D4F260A002B398B /* GPUImageTextureInput.h in Headers */, - 843724871D4F260A002B398B /* GPUImageRGBClosingFilter.h in Headers */, - 843724371D4F260A002B398B /* GPUImageLevelsFilter.h in Headers */, - 843724951D4F260A002B398B /* GPUImageScreenBlendFilter.h in Headers */, - 84001FEB1D0016380026C63F /* LFLiveStreamInfo.h in Headers */, - 843724251D4F260A002B398B /* GPUImageHSBFilter.h in Headers */, - 843724891D4F260A002B398B /* GPUImageRGBDilationFilter.h in Headers */, - 843724C31D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.h in Headers */, - B221C2511D59D41A009615C3 /* LFMP4Atom.h in Headers */, - 843723A71D4F260A002B398B /* GPUImageAmatorkaFilter.h in Headers */, - 8437245F1D4F260A002B398B /* GPUImageMultiplyBlendFilter.h in Headers */, - 84001FE91D0016380026C63F /* LFLiveDebug.h in Headers */, - 843723BB1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.h in Headers */, - 8437239A1D4F260A002B398B /* GLProgram.h in Headers */, - 843723E71D4F260A002B398B /* GPUImageDissolveBlendFilter.h in Headers */, - 843723B51D4F260A002B398B /* GPUImageBulgeDistortionFilter.h in Headers */, - 843724331D4F260A002B398B /* GPUImageLanczosResamplingFilter.h in Headers */, - 843724131D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.h in Headers */, - 843724C71D4F260A002B398B /* GPUImageTiltShiftFilter.h in Headers */, - 843723F91D4F260A002B398B /* GPUImageFilterGroup.h in Headers */, - 843723C31D4F260A002B398B /* GPUImageColorBurnBlendFilter.h in Headers */, - 8437243B1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.h in Headers */, - B221C2551D59D41A009615C3 /* LFVideoEncoder.h in Headers */, - 843724011D4F260A002B398B /* GPUImageFramebufferCache.h in Headers */, - 8437247B1D4F260A002B398B /* GPUImagePolarPixellateFilter.h in Headers */, - 843724AB1D4F260A002B398B /* GPUImageSolarizeFilter.h in Headers */, - 843724071D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.h in Headers */, - 843723D71D4F260A002B398B /* GPUImageCropFilter.h in Headers */, - 8437249B1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.h in Headers */, - 843724031D4F260A002B398B /* GPUImageGammaFilter.h in Headers */, - 8437242B1D4F260A002B398B /* GPUImageiOSBlurFilter.h in Headers */, - 843724EE1D4F260A002B398B /* GPUImagePicture+TextureSubimage.h in Headers */, - 843724111D4F260A002B398B /* GPUImageHardLightBlendFilter.h in Headers */, - 843723A51D4F260A002B398B /* GPUImageAlphaBlendFilter.h in Headers */, - 843724E11D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.h in Headers */, - 843723EB1D4F260A002B398B /* GPUImageEmbossFilter.h in Headers */, - 843724EC1D4F260A002B398B /* GPUImageMovieWriter.h in Headers */, - 843724451D4F260A002B398B /* GPUImageLuminanceRangeFilter.h in Headers */, - B221C2541D59D41A009615C3 /* LFNALUnit.h in Headers */, - 843723D31D4F260A002B398B /* GPUImageColourFASTSamplingOperation.h in Headers */, - 8437243F1D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.h in Headers */, - 843725021D4F260A002B398B /* rtmp.h in Headers */, - B2CD14761D45F18B008082E8 /* LFH264VideoEncoder.h in Headers */, - 843724FA1D4F260A002B398B /* error.h in Headers */, - 843723E31D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.h in Headers */, - 843724351D4F260A002B398B /* GPUImageLaplacianFilter.h in Headers */, - 843724511D4F260A002B398B /* GPUImageMissEtikateFilter.h in Headers */, - 843724D91D4F260A002B398B /* GPUImageUnsharpMaskFilter.h in Headers */, - 843724A71D4F260A002B398B /* GPUImageSoftEleganceFilter.h in Headers */, - 843724CB1D4F260A002B398B /* GPUImageToonFilter.h in Headers */, - 843723DD1D4F260A002B398B /* GPUImageDarkenBlendFilter.h in Headers */, - 84001FD61D0016380026C63F /* LFHardwareAudioEncoder.h in Headers */, - B289F1E01D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.h in Headers */, - 8437242D1D4F260A002B398B /* GPUImageJFAVoronoiFilter.h in Headers */, - 843723D11D4F260A002B398B /* GPUImageColourFASTFeatureDetector.h in Headers */, - 843723F51D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.h in Headers */, - 84001FDF1D0016380026C63F /* LFGPUImageBeautyFilter.h in Headers */, - 843723BF1D4F260A002B398B /* GPUImageClosingFilter.h in Headers */, - 843723FB1D4F260A002B398B /* GPUImageFilterPipeline.h in Headers */, - 843724E51D4F260A002B398B /* GPUImageXYDerivativeFilter.h in Headers */, - 8437241F1D4F260A002B398B /* GPUImageHistogramFilter.h in Headers */, - 8437248D1D4F260A002B398B /* GPUImageRGBFilter.h in Headers */, - 843723E11D4F260A002B398B /* GPUImageDilationFilter.h in Headers */, - 843724531D4F260A002B398B /* GPUImageMonochromeFilter.h in Headers */, - 843724391D4F260A002B398B /* GPUImageLightenBlendFilter.h in Headers */, - 843723CD1D4F260A002B398B /* GPUImageColorMatrixFilter.h in Headers */, - 843724DF1D4F260A002B398B /* GPUImageVoronoiConsumerFilter.h in Headers */, - 8437241B1D4F260A002B398B /* GPUImageHighPassFilter.h in Headers */, - 843724CD1D4F260A002B398B /* GPUImageTransformFilter.h in Headers */, - 843724831D4F260A002B398B /* GPUImageRawDataInput.h in Headers */, - 843724F51D4F260A002B398B /* amf.h in Headers */, - 843723A31D4F260A002B398B /* GPUImageAddBlendFilter.h in Headers */, - 843724B91D4F260A002B398B /* GPUImageSwirlFilter.h in Headers */, - 8437246B1D4F260A002B398B /* GPUImageOutput.h in Headers */, - 843724851D4F260A002B398B /* GPUImageRawDataOutput.h in Headers */, - 843723DB1D4F260A002B398B /* GPUImageCrosshatchFilter.h in Headers */, - 843724491D4F260A002B398B /* GPUImageLuminosity.h in Headers */, - 84001FD31D0016380026C63F /* LFVideoCapture.h in Headers */, - 84001FD11D0016380026C63F /* LFAudioCapture.h in Headers */, - 843723C71D4F260A002B398B /* GPUImageColorDodgeBlendFilter.h in Headers */, - 8437241D1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.h in Headers */, - 843723C91D4F260A002B398B /* GPUImageColorInvertFilter.h in Headers */, - 843724E31D4F260A002B398B /* GPUImageWhiteBalanceFilter.h in Headers */, - 843724C51D4F260A002B398B /* GPUImageThresholdSketchFilter.h in Headers */, - 8437248F1D4F260A002B398B /* GPUImageRGBOpeningFilter.h in Headers */, - 8437240B1D4F260A002B398B /* GPUImageGlassSphereFilter.h in Headers */, - 8437239F1D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.h in Headers */, - 843724651D4F260A002B398B /* GPUImageNormalBlendFilter.h in Headers */, - 8437245D1D4F260A002B398B /* GPUImageMovieComposition.h in Headers */, - 84001FE11D0016380026C63F /* LFGPUImageEmptyFilter.h in Headers */, - 843724B51D4F260A002B398B /* GPUImageStretchDistortionFilter.h in Headers */, - 84001FDA1D0016380026C63F /* LFVideoEncoding.h in Headers */, - 843724BF1D4F260A002B398B /* GPUImageThreeInputFilter.h in Headers */, - 843724F71D4F260A002B398B /* dh.h in Headers */, - 843725031D4F260A002B398B /* rtmp_sys.h in Headers */, - 843724691D4F260A002B398B /* GPUImageOpeningFilter.h in Headers */, - 843723C11D4F260A002B398B /* GPUImageColorBlendFilter.h in Headers */, - 8437249F1D4F260A002B398B /* GPUImageSketchFilter.h in Headers */, - 84001FD81D0016380026C63F /* LFHardwareVideoEncoder.h in Headers */, - 843724A91D4F260A002B398B /* GPUImageSoftLightBlendFilter.h in Headers */, - 843723A91D4F260A002B398B /* GPUImageAverageColor.h in Headers */, - 843723FD1D4F260A002B398B /* GPUImageFourInputFilter.h in Headers */, - 843724431D4F260A002B398B /* GPUImageLowPassFilter.h in Headers */, - 8437239C1D4F260A002B398B /* GPUImage.h in Headers */, - B289F1DF1D3DE77F00D9C7A5 /* LFStreamSocket.h in Headers */, - 8437242F1D4F260A002B398B /* GPUImageKuwaharaFilter.h in Headers */, - 843723B11D4F260A002B398B /* GPUImageBrightnessFilter.h in Headers */, - 843724FD1D4F260A002B398B /* http.h in Headers */, - 843724611D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.h in Headers */, - 8437243D1D4F260A002B398B /* GPUImageLineGenerator.h in Headers */, - 84001FD51D0016380026C63F /* LFAudioEncoding.h in Headers */, - 843723AB1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.h in Headers */, - 843723F71D4F260A002B398B /* GPUImageFilter.h in Headers */, - 8437240F1D4F260A002B398B /* GPUImageHalftoneFilter.h in Headers */, - 843723A11D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.h in Headers */, - 843723CF1D4F260A002B398B /* GPUImageColorPackingFilter.h in Headers */, - 843723B91D4F260A002B398B /* GPUImageCGAColorspaceFilter.h in Headers */, - 843724051D4F260A002B398B /* GPUImageGaussianBlurFilter.h in Headers */, - 843724B31D4F260A002B398B /* GPUImageStillCamera.h in Headers */, - 843724D51D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.h in Headers */, - 843723F11D4F260A002B398B /* GPUImageExposureFilter.h in Headers */, - 843723D51D4F260A002B398B /* GPUImageContrastFilter.h in Headers */, - 843724A11D4F260A002B398B /* GPUImageSkinToneFilter.h in Headers */, - 843724271D4F260A002B398B /* GPUImageHueBlendFilter.h in Headers */, - 843724471D4F260A002B398B /* GPUImageLuminanceThresholdFilter.h in Headers */, - 843724551D4F260A002B398B /* GPUImageMosaicFilter.h in Headers */, - 843723BD1D4F260A002B398B /* GPUImageChromaKeyFilter.h in Headers */, - 843724171D4F260A002B398B /* GPUImageHighlightShadowFilter.h in Headers */, - 84001F8E1D0015D10026C63F /* LFLiveKit.h in Headers */, - 843724671D4F260A002B398B /* GPUImageOpacityFilter.h in Headers */, - 8437247F1D4F260A002B398B /* GPUImagePosterizeFilter.h in Headers */, - 843724A31D4F260A002B398B /* GPUImageSmoothToonFilter.h in Headers */, - 843724F01D4F260A002B398B /* GPUImagePicture.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 84001F891D0015D10026C63F /* LFLiveKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */; - buildPhases = ( - 84001F851D0015D10026C63F /* Sources */, - 84001F861D0015D10026C63F /* Frameworks */, - 84001F871D0015D10026C63F /* Headers */, - 84001F881D0015D10026C63F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = LFLiveKit; - productName = LFLiveKit; - productReference = 84001F8A1D0015D10026C63F /* LFLiveKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 84001F931D0015D10026C63F /* LFLiveKitTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */; - buildPhases = ( - 84001F901D0015D10026C63F /* Sources */, - 84001F911D0015D10026C63F /* Frameworks */, - 84001F921D0015D10026C63F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 84001F971D0015D10026C63F /* PBXTargetDependency */, - ); - name = LFLiveKitTests; - productName = LFLiveKitTests; - productReference = 84001F941D0015D10026C63F /* LFLiveKitTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 84001F811D0015D10026C63F /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0730; - ORGANIZATIONNAME = admin; - TargetAttributes = { - 84001F891D0015D10026C63F = { - CreatedOnToolsVersion = 7.3; - }; - 84001F931D0015D10026C63F = { - CreatedOnToolsVersion = 7.3; - }; - 84C329DE1D61EB0C00984B01 = { - CreatedOnToolsVersion = 7.3; - }; - }; - }; - buildConfigurationList = 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 84001F801D0015D10026C63F; - productRefGroup = 84001F8B1D0015D10026C63F /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 84001F891D0015D10026C63F /* LFLiveKit */, - 84001F931D0015D10026C63F /* LFLiveKitTests */, - 84C329DE1D61EB0C00984B01 /* LFLiveKit-universal */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 84001F881D0015D10026C63F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F921D0015D10026C63F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 84C329E41D61EB1B00984B01 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "./scripts/build-universal-framework.sh"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 84001F851D0015D10026C63F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001FE21D0016380026C63F /* LFGPUImageEmptyFilter.m in Sources */, - 843724C21D4F260A002B398B /* GPUImageThresholdEdgeDetectionFilter.m in Sources */, - 84001FE41D0016380026C63F /* LFLiveSession.m in Sources */, - 843724BA1D4F260A002B398B /* GPUImageSwirlFilter.m in Sources */, - 843723A41D4F260A002B398B /* GPUImageAddBlendFilter.m in Sources */, - 843723B01D4F260A002B398B /* GPUImageBoxBlurFilter.m in Sources */, - 843723DC1D4F260A002B398B /* GPUImageCrosshatchFilter.m in Sources */, - 843724E41D4F260A002B398B /* GPUImageWhiteBalanceFilter.m in Sources */, - 843724101D4F260A002B398B /* GPUImageHalftoneFilter.m in Sources */, - 843724301D4F260A002B398B /* GPUImageKuwaharaFilter.m in Sources */, - 843724201D4F260A002B398B /* GPUImageHistogramFilter.m in Sources */, - B221C2531D59D41A009615C3 /* LFNALUnit.cpp in Sources */, - 8437246E1D4F260A002B398B /* GPUImageOverlayBlendFilter.m in Sources */, - 843723A81D4F260A002B398B /* GPUImageAmatorkaFilter.m in Sources */, - 84001FE61D0016380026C63F /* LFAudioFrame.m in Sources */, - 843724C41D4F260A002B398B /* GPUImageThresholdedNonMaximumSuppressionFilter.m in Sources */, - 843724F91D4F260A002B398B /* error.c in Sources */, - 843724DC1D4F260A002B398B /* GPUImageVideoCamera.m in Sources */, - 8437246C1D4F260A002B398B /* GPUImageOutput.m in Sources */, - 843724B01D4F260A002B398B /* GPUImageSourceOverBlendFilter.m in Sources */, - 843724581D4F260A002B398B /* GPUImageMotionBlurFilter.m in Sources */, - 84001FDC1D0016380026C63F /* LFLiveAudioConfiguration.m in Sources */, - 84001FD41D0016380026C63F /* LFVideoCapture.m in Sources */, - 843723B81D4F260A002B398B /* GPUImageCannyEdgeDetectionFilter.m in Sources */, - 84001FE81D0016380026C63F /* LFFrame.m in Sources */, - 843724CE1D4F260A002B398B /* GPUImageTransformFilter.m in Sources */, - 843723E81D4F260A002B398B /* GPUImageDissolveBlendFilter.m in Sources */, - 843723D81D4F260A002B398B /* GPUImageCropFilter.m in Sources */, - 843723EC1D4F260A002B398B /* GPUImageEmbossFilter.m in Sources */, - 843724AA1D4F260A002B398B /* GPUImageSoftLightBlendFilter.m in Sources */, - 843723F21D4F260A002B398B /* GPUImageExposureFilter.m in Sources */, - 8437244E1D4F260A002B398B /* GPUImageMaskFilter.m in Sources */, - 843724841D4F260A002B398B /* GPUImageRawDataInput.m in Sources */, - B289F1DC1D3DE77F00D9C7A5 /* LFStreamingBuffer.m in Sources */, - 843723F01D4F260A002B398B /* GPUImageExclusionBlendFilter.m in Sources */, - 843724F31D4F260A002B398B /* GPUImageView.m in Sources */, - 843724081D4F260A002B398B /* GPUImageGaussianBlurPositionFilter.m in Sources */, - 843724A41D4F260A002B398B /* GPUImageSmoothToonFilter.m in Sources */, - 8437241A1D4F260A002B398B /* GPUImageHighlightShadowTintFilter.m in Sources */, - 843724821D4F260A002B398B /* GPUImagePrewittEdgeDetectionFilter.m in Sources */, - 843724CC1D4F260A002B398B /* GPUImageToonFilter.m in Sources */, - 843724801D4F260A002B398B /* GPUImagePosterizeFilter.m in Sources */, - B289F1E11D3DE77F00D9C7A5 /* NSMutableArray+LFAdd.m in Sources */, - 843724041D4F260A002B398B /* GPUImageGammaFilter.m in Sources */, - 843724B21D4F260A002B398B /* GPUImageSphereRefractionFilter.m in Sources */, - 8437248E1D4F260A002B398B /* GPUImageRGBFilter.m in Sources */, - 843724161D4F260A002B398B /* GPUImageHazeFilter.m in Sources */, - 843723BC1D4F260A002B398B /* GPUImageChromaKeyBlendFilter.m in Sources */, - 8437247A1D4F260A002B398B /* GPUImagePoissonBlendFilter.m in Sources */, - 843723E01D4F260A002B398B /* GPUImageDifferenceBlendFilter.m in Sources */, - 843723EA1D4F260A002B398B /* GPUImageDivideBlendFilter.m in Sources */, - 8437243E1D4F260A002B398B /* GPUImageLineGenerator.m in Sources */, - 843723B21D4F260A002B398B /* GPUImageBrightnessFilter.m in Sources */, - 843723C21D4F260A002B398B /* GPUImageColorBlendFilter.m in Sources */, - 843724241D4F260A002B398B /* GPUImageHoughTransformLineDetector.m in Sources */, - 843723A21D4F260A002B398B /* GPUImageAdaptiveThresholdFilter.m in Sources */, - 843724BE1D4F260A002B398B /* GPUImageTextureOutput.m in Sources */, - 8437241C1D4F260A002B398B /* GPUImageHighPassFilter.m in Sources */, - B2CD14771D45F18B008082E8 /* LFH264VideoEncoder.mm in Sources */, - 843723C01D4F260A002B398B /* GPUImageClosingFilter.m in Sources */, - 843724AE1D4F260A002B398B /* GPUImageSolidColorGenerator.m in Sources */, - 843724ED1D4F260A002B398B /* GPUImageMovieWriter.m in Sources */, - 843723AA1D4F260A002B398B /* GPUImageAverageColor.m in Sources */, - 84001FDE1D0016380026C63F /* LFLiveVideoConfiguration.m in Sources */, - 8437247E1D4F260A002B398B /* GPUImagePolkaDotFilter.m in Sources */, - 843723D01D4F260A002B398B /* GPUImageColorPackingFilter.m in Sources */, - 843724F41D4F260A002B398B /* amf.c in Sources */, - 8437242C1D4F260A002B398B /* GPUImageiOSBlurFilter.m in Sources */, - 843724941D4F260A002B398B /* GPUImageSaturationFilter.m in Sources */, - 8437248A1D4F260A002B398B /* GPUImageRGBDilationFilter.m in Sources */, - 843724781D4F260A002B398B /* GPUImagePixellatePositionFilter.m in Sources */, - 8437245A1D4F260A002B398B /* GPUImageMotionDetector.m in Sources */, - 84001FD21D0016380026C63F /* LFAudioCapture.m in Sources */, - 843724B81D4F260A002B398B /* GPUImageSubtractBlendFilter.m in Sources */, - 843724741D4F260A002B398B /* GPUImagePinchDistortionFilter.m in Sources */, - 843724D61D4F260A002B398B /* GPUImageTwoPassTextureSamplingFilter.m in Sources */, - 843723DA1D4F260A002B398B /* GPUImageCrosshairGenerator.m in Sources */, - 843724A01D4F260A002B398B /* GPUImageSketchFilter.m in Sources */, - 843723A01D4F260A002B398B /* GPUImage3x3TextureSamplingFilter.m in Sources */, - B221C2561D59D41A009615C3 /* LFVideoEncoder.m in Sources */, - 8437249A1D4F260A002B398B /* GPUImageSharpenFilter.m in Sources */, - 843723C41D4F260A002B398B /* GPUImageColorBurnBlendFilter.m in Sources */, - 843724121D4F260A002B398B /* GPUImageHardLightBlendFilter.m in Sources */, - 843723D61D4F260A002B398B /* GPUImageContrastFilter.m in Sources */, - 843724BC1D4F260A002B398B /* GPUImageTextureInput.m in Sources */, - 843724521D4F260A002B398B /* GPUImageMissEtikateFilter.m in Sources */, - B2CD146F1D45F18B008082E8 /* LICENSE.markdown in Sources */, - B289F1DE1D3DE77F00D9C7A5 /* LFStreamRtmpSocket.m in Sources */, - 843724CA1D4F260A002B398B /* GPUImageToneCurveFilter.m in Sources */, - 843724D21D4F260A002B398B /* GPUImageTwoInputFilter.m in Sources */, - 843723F61D4F260A002B398B /* GPUImageFASTCornerDetectionFilter.m in Sources */, - 843724901D4F260A002B398B /* GPUImageRGBOpeningFilter.m in Sources */, - 843724861D4F260A002B398B /* GPUImageRawDataOutput.m in Sources */, - 843724F11D4F260A002B398B /* GPUImagePicture.m in Sources */, - 843723E41D4F260A002B398B /* GPUImageDirectionalNonMaximumSuppressionFilter.m in Sources */, - 843724DE1D4F260A002B398B /* GPUImageVignetteFilter.m in Sources */, - 8437245C1D4F260A002B398B /* GPUImageMovie.m in Sources */, - 84001FD91D0016380026C63F /* LFHardwareVideoEncoder.m in Sources */, - 843724A61D4F260A002B398B /* GPUImageSobelEdgeDetectionFilter.m in Sources */, - B221C2501D59D41A009615C3 /* LFAVEncoder.mm in Sources */, - 843724281D4F260A002B398B /* GPUImageHueBlendFilter.m in Sources */, - 843723B61D4F260A002B398B /* GPUImageBulgeDistortionFilter.m in Sources */, - 8437243A1D4F260A002B398B /* GPUImageLightenBlendFilter.m in Sources */, - 843724AC1D4F260A002B398B /* GPUImageSolarizeFilter.m in Sources */, - 843724481D4F260A002B398B /* GPUImageLuminanceThresholdFilter.m in Sources */, - 843723C61D4F260A002B398B /* GPUImageColorConversion.m in Sources */, - 843724561D4F260A002B398B /* GPUImageMosaicFilter.m in Sources */, - 8437245E1D4F260A002B398B /* GPUImageMovieComposition.m in Sources */, - 843724A81D4F260A002B398B /* GPUImageSoftEleganceFilter.m in Sources */, - 843724961D4F260A002B398B /* GPUImageScreenBlendFilter.m in Sources */, - 843724541D4F260A002B398B /* GPUImageMonochromeFilter.m in Sources */, - 843723B41D4F260A002B398B /* GPUImageBuffer.m in Sources */, - B221C2521D59D41A009615C3 /* LFMP4Atom.m in Sources */, - 8437239B1D4F260A002B398B /* GLProgram.m in Sources */, - 843724E81D4F260A002B398B /* GPUImageZoomBlurFilter.m in Sources */, - 84001FEC1D0016380026C63F /* LFLiveStreamInfo.m in Sources */, - 8437244A1D4F260A002B398B /* GPUImageLuminosity.m in Sources */, - 843724FC1D4F260A002B398B /* hashswf.c in Sources */, - 843724321D4F260A002B398B /* GPUImageKuwaharaRadius3Filter.m in Sources */, - 843724E21D4F260A002B398B /* GPUImageWeakPixelInclusionFilter.m in Sources */, - 84001FEA1D0016380026C63F /* LFLiveDebug.m in Sources */, - 8437244C1D4F260A002B398B /* GPUImageLuminosityBlendFilter.m in Sources */, - 843724FE1D4F260A002B398B /* log.c in Sources */, - 8437241E1D4F260A002B398B /* GPUImageHistogramEqualizationFilter.m in Sources */, - 84001FEE1D0016380026C63F /* LFVideoFrame.m in Sources */, - 843723DE1D4F260A002B398B /* GPUImageDarkenBlendFilter.m in Sources */, - 843723D41D4F260A002B398B /* GPUImageColourFASTSamplingOperation.m in Sources */, - 843724921D4F260A002B398B /* GPUImageSaturationBlendFilter.m in Sources */, - 843724261D4F260A002B398B /* GPUImageHSBFilter.m in Sources */, - 843724E61D4F260A002B398B /* GPUImageXYDerivativeFilter.m in Sources */, - 843724401D4F260A002B398B /* GPUImageLocalBinaryPatternFilter.m in Sources */, - 8437240E1D4F260A002B398B /* GPUImageGrayscaleFilter.m in Sources */, - 843724361D4F260A002B398B /* GPUImageLaplacianFilter.m in Sources */, - 843723FE1D4F260A002B398B /* GPUImageFourInputFilter.m in Sources */, - 843724061D4F260A002B398B /* GPUImageGaussianBlurFilter.m in Sources */, - 843724A21D4F260A002B398B /* GPUImageSkinToneFilter.m in Sources */, - 8437249C1D4F260A002B398B /* GPUImageShiTomasiFeatureDetectionFilter.m in Sources */, - 843724601D4F260A002B398B /* GPUImageMultiplyBlendFilter.m in Sources */, - 843723E61D4F260A002B398B /* GPUImageDirectionalSobelEdgeDetectionFilter.m in Sources */, - 8437246A1D4F260A002B398B /* GPUImageOpeningFilter.m in Sources */, - 8437247C1D4F260A002B398B /* GPUImagePolarPixellateFilter.m in Sources */, - 843724381D4F260A002B398B /* GPUImageLevelsFilter.m in Sources */, - 8437248C1D4F260A002B398B /* GPUImageRGBErosionFilter.m in Sources */, - 843723CE1D4F260A002B398B /* GPUImageColorMatrixFilter.m in Sources */, - 8437242E1D4F260A002B398B /* GPUImageJFAVoronoiFilter.m in Sources */, - 843723CC1D4F260A002B398B /* GPUImageColorLocalBinaryPatternFilter.m in Sources */, - 8437239E1D4F260A002B398B /* GPUImage3x3ConvolutionFilter.m in Sources */, - 843724021D4F260A002B398B /* GPUImageFramebufferCache.m in Sources */, - 843724501D4F260A002B398B /* GPUImageMedianFilter.m in Sources */, - 8437240C1D4F260A002B398B /* GPUImageGlassSphereFilter.m in Sources */, - 843724DA1D4F260A002B398B /* GPUImageUnsharpMaskFilter.m in Sources */, - 8437240A1D4F260A002B398B /* GPUImageGaussianSelectiveBlurFilter.m in Sources */, - 843723AE1D4F260A002B398B /* GPUImageBilateralFilter.m in Sources */, - 843724141D4F260A002B398B /* GPUImageHarrisCornerDetectionFilter.m in Sources */, - 843724C01D4F260A002B398B /* GPUImageThreeInputFilter.m in Sources */, - 843724E01D4F260A002B398B /* GPUImageVoronoiConsumerFilter.m in Sources */, - 843724721D4F260A002B398B /* GPUImagePerlinNoiseFilter.m in Sources */, - 843724701D4F260A002B398B /* GPUImageParallelCoordinateLineTransformFilter.m in Sources */, - 843723F81D4F260A002B398B /* GPUImageFilter.m in Sources */, - 843724881D4F260A002B398B /* GPUImageRGBClosingFilter.m in Sources */, - 8437242A1D4F260A002B398B /* GPUImageHueFilter.m in Sources */, - 843724D41D4F260A002B398B /* GPUImageTwoPassFilter.m in Sources */, - 843723CA1D4F260A002B398B /* GPUImageColorInvertFilter.m in Sources */, - 843724D01D4F260A002B398B /* GPUImageTwoInputCrossTextureSamplingFilter.m in Sources */, - 843724421D4F260A002B398B /* GPUImageLookupFilter.m in Sources */, - 843723BA1D4F260A002B398B /* GPUImageCGAColorspaceFilter.m in Sources */, - 843724681D4F260A002B398B /* GPUImageOpacityFilter.m in Sources */, - 843724D81D4F260A002B398B /* GPUImageUIElement.m in Sources */, - 843724981D4F260A002B398B /* GPUImageSepiaFilter.m in Sources */, - 843724461D4F260A002B398B /* GPUImageLuminanceRangeFilter.m in Sources */, - 84001FD71D0016380026C63F /* LFHardwareAudioEncoder.m in Sources */, - 843723BE1D4F260A002B398B /* GPUImageChromaKeyFilter.m in Sources */, - 843724761D4F260A002B398B /* GPUImagePixellateFilter.m in Sources */, - 843724641D4F260A002B398B /* GPUImageNonMaximumSuppressionFilter.m in Sources */, - 843724181D4F260A002B398B /* GPUImageHighlightShadowFilter.m in Sources */, - 843723EE1D4F260A002B398B /* GPUImageErosionFilter.m in Sources */, - 843723F41D4F260A002B398B /* GPUImageFalseColorFilter.m in Sources */, - 843723A61D4F260A002B398B /* GPUImageAlphaBlendFilter.m in Sources */, - 843723D21D4F260A002B398B /* GPUImageColourFASTFeatureDetector.m in Sources */, - 843724B41D4F260A002B398B /* GPUImageStillCamera.m in Sources */, - 843724B61D4F260A002B398B /* GPUImageStretchDistortionFilter.m in Sources */, - 843724001D4F260A002B398B /* GPUImageFramebuffer.m in Sources */, - 843724C61D4F260A002B398B /* GPUImageThresholdSketchFilter.m in Sources */, - 8437243C1D4F260A002B398B /* GPUImageLinearBurnBlendFilter.m in Sources */, - 843724EB1D4F260A002B398B /* GPUImageContext.m in Sources */, - 843724C81D4F260A002B398B /* GPUImageTiltShiftFilter.m in Sources */, - 843725001D4F260A002B398B /* parseurl.c in Sources */, - 843724EF1D4F260A002B398B /* GPUImagePicture+TextureSubimage.m in Sources */, - 843723C81D4F260A002B398B /* GPUImageColorDodgeBlendFilter.m in Sources */, - 8437249E1D4F260A002B398B /* GPUImageSingleComponentGaussianBlurFilter.m in Sources */, - 843723E21D4F260A002B398B /* GPUImageDilationFilter.m in Sources */, - 843724661D4F260A002B398B /* GPUImageNormalBlendFilter.m in Sources */, - 843723AC1D4F260A002B398B /* GPUImageAverageLuminanceThresholdFilter.m in Sources */, - 843723FA1D4F260A002B398B /* GPUImageFilterGroup.m in Sources */, - 84001FE01D0016380026C63F /* LFGPUImageBeautyFilter.m in Sources */, - 843723FC1D4F260A002B398B /* GPUImageFilterPipeline.m in Sources */, - 843724441D4F260A002B398B /* GPUImageLowPassFilter.m in Sources */, - 843725011D4F260A002B398B /* rtmp.c in Sources */, - 843724221D4F260A002B398B /* GPUImageHistogramGenerator.m in Sources */, - 843724621D4F260A002B398B /* GPUImageNobleCornerDetectionFilter.m in Sources */, - 843724341D4F260A002B398B /* GPUImageLanczosResamplingFilter.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84001F901D0015D10026C63F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 84001F9A1D0015D10026C63F /* LFLiveKitTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 84001F971D0015D10026C63F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 84001F891D0015D10026C63F /* LFLiveKit */; - targetProxy = 84001F961D0015D10026C63F /* PBXContainerItemProxy */; - }; - 84C329E31D61EB1600984B01 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 84001F891D0015D10026C63F /* LFLiveKit */; - targetProxy = 84C329E21D61EB1600984B01 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 84001F9C1D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 84001F9D1D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 84001F9F1D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D0BB7E7CE5403C4911E026B9 /* Pods-LFLiveKit.debug.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = YES; - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = LFLiveKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/LFLiveKit/publish/libpili-librtmp", - ); - OTHER_CFLAGS = ( - "$(inherited)", - "-fembed-bitcode", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-framework", - "\"AVFoundation\"", - "-framework", - "\"CoreMedia\"", - "-framework", - "\"OpenGLES\"", - "-framework", - "\"QuartzCore\"", - "-framework", - "\"UIKit\"", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/**"; - }; - name = Debug; - }; - 84001FA01D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0BA5A0CE1F07E1D707F69735 /* Pods-LFLiveKit.release.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_BITCODE = YES; - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = LFLiveKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/LFLiveKit/publish/libpili-librtmp", - ); - OTHER_CFLAGS = ( - "$(inherited)", - "-fembed-bitcode", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-framework", - "\"AVFoundation\"", - "-framework", - "\"CoreMedia\"", - "-framework", - "\"OpenGLES\"", - "-framework", - "\"QuartzCore\"", - "-framework", - "\"UIKit\"", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKit; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/**"; - }; - name = Release; - }; - 84001FA21D0015D10026C63F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = LFLiveKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 84001FA31D0015D10026C63F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = LFLiveKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit.LFLiveKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; - 84C329DF1D61EB0C00984B01 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 84C329E01D61EB0C00984B01 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 84001F841D0015D10026C63F /* Build configuration list for PBXProject "LFLiveKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001F9C1D0015D10026C63F /* Debug */, - 84001F9D1D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84001F9E1D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001F9F1D0015D10026C63F /* Debug */, - 84001FA01D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84001FA11D0015D10026C63F /* Build configuration list for PBXNativeTarget "LFLiveKitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84001FA21D0015D10026C63F /* Debug */, - 84001FA31D0015D10026C63F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 84C329E11D61EB0C00984B01 /* Build configuration list for PBXAggregateTarget "LFLiveKit-universal" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 84C329DF1D61EB0C00984B01 /* Debug */, - 84C329E01D61EB0C00984B01 /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; -/* End XCConfigurationList section */ - }; - rootObject = 84001F811D0015D10026C63F /* Project object */; -} diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/LFLiveKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3f412b52..00000000 --- a/LFLiveKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKit.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index bc218d8af68eec92a6fea16bde192b17a962da2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21260 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 32d181b6..00000000 --- a/LFLiveKit.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,37 +0,0 @@ - - - - - SchemeUserState - - LFLiveKit-universal.xcscheme - - orderHint - 1 - - LFLiveKit.xcscheme_^#shared#^_ - - orderHint - 0 - - - SuppressBuildableAutocreation - - 84001F891D0015D10026C63F - - primary - - - 84001F931D0015D10026C63F - - primary - - - 84C329DE1D61EB0C00984B01 - - primary - - - - - diff --git a/LFLiveKit.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKit.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 723c7381..00000000 --- a/LFLiveKit.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,19 +0,0 @@ - - - - - SuppressBuildableAutocreation - - 84001F891D0015D10026C63F - - primary - - - 84001F931D0015D10026C63F - - primary - - - - - diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index dd01cf0f..7cbcfb31 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.1 + 2.2 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/LFLiveKit.h b/LFLiveKit/LFLiveKit.h deleted file mode 100644 index ebac8b72..00000000 --- a/LFLiveKit/LFLiveKit.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// LFLiveKit.h -// LFLiveKit -// -// Created by admin on 16/5/24. -// Copyright © 2016年 admin. All rights reserved. -// - -#import "LFLiveSession.h" -#import "LFLiveAudioConfiguration.h" -#import "LFLiveVideoConfiguration.h" -#import "LFAudioFrame.h" -#import "LFFrame.h" -#import "LFLiveStreamInfo.h" -#import "LFVideoFrame.h" diff --git a/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj new file mode 100644 index 00000000..8e3c2a8f --- /dev/null +++ b/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj @@ -0,0 +1,565 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 84D8B3D21D75753300752B56 /* LFAudioCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B39C1D75753300752B56 /* LFAudioCapture.h */; }; + 84D8B3D31D75753300752B56 /* LFAudioCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B39D1D75753300752B56 /* LFAudioCapture.m */; }; + 84D8B3D41D75753300752B56 /* LFVideoCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B39E1D75753300752B56 /* LFVideoCapture.h */; }; + 84D8B3D51D75753300752B56 /* LFVideoCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B39F1D75753300752B56 /* LFVideoCapture.m */; }; + 84D8B3D61D75753300752B56 /* LFAVEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3A21D75753300752B56 /* LFAVEncoder.h */; }; + 84D8B3D71D75753300752B56 /* LFAVEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3A31D75753300752B56 /* LFAVEncoder.mm */; }; + 84D8B3D81D75753300752B56 /* LFMP4Atom.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3A41D75753300752B56 /* LFMP4Atom.h */; }; + 84D8B3D91D75753300752B56 /* LFMP4Atom.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3A51D75753300752B56 /* LFMP4Atom.m */; }; + 84D8B3DA1D75753300752B56 /* LFNALUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3A61D75753300752B56 /* LFNALUnit.cpp */; }; + 84D8B3DB1D75753300752B56 /* LFNALUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3A71D75753300752B56 /* LFNALUnit.h */; }; + 84D8B3DC1D75753300752B56 /* LFVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3A81D75753300752B56 /* LFVideoEncoder.h */; }; + 84D8B3DD1D75753300752B56 /* LFVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3A91D75753300752B56 /* LFVideoEncoder.m */; }; + 84D8B3DE1D75753300752B56 /* LFAudioEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3AA1D75753300752B56 /* LFAudioEncoding.h */; }; + 84D8B3DF1D75753300752B56 /* LFH264VideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3AB1D75753300752B56 /* LFH264VideoEncoder.h */; }; + 84D8B3E01D75753300752B56 /* LFH264VideoEncoder.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3AC1D75753300752B56 /* LFH264VideoEncoder.mm */; }; + 84D8B3E11D75753300752B56 /* LFHardwareAudioEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3AD1D75753300752B56 /* LFHardwareAudioEncoder.h */; }; + 84D8B3E21D75753300752B56 /* LFHardwareAudioEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3AE1D75753300752B56 /* LFHardwareAudioEncoder.m */; }; + 84D8B3E31D75753300752B56 /* LFHardwareVideoEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3AF1D75753300752B56 /* LFHardwareVideoEncoder.h */; }; + 84D8B3E41D75753300752B56 /* LFHardwareVideoEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3B01D75753300752B56 /* LFHardwareVideoEncoder.m */; }; + 84D8B3E51D75753300752B56 /* LFVideoEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3B11D75753300752B56 /* LFVideoEncoding.h */; }; + 84D8B3E61D75753300752B56 /* LFLiveAudioConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3B31D75753300752B56 /* LFLiveAudioConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3E71D75753300752B56 /* LFLiveAudioConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3B41D75753300752B56 /* LFLiveAudioConfiguration.m */; }; + 84D8B3E81D75753300752B56 /* LFLiveVideoConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3B51D75753300752B56 /* LFLiveVideoConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3E91D75753300752B56 /* LFLiveVideoConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3B61D75753300752B56 /* LFLiveVideoConfiguration.m */; }; + 84D8B3EA1D75753300752B56 /* LFGPUImageBeautyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3B81D75753300752B56 /* LFGPUImageBeautyFilter.h */; }; + 84D8B3EB1D75753300752B56 /* LFGPUImageBeautyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3B91D75753300752B56 /* LFGPUImageBeautyFilter.m */; }; + 84D8B3EC1D75753300752B56 /* LFGPUImageEmptyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3BA1D75753300752B56 /* LFGPUImageEmptyFilter.h */; }; + 84D8B3ED1D75753300752B56 /* LFGPUImageEmptyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3BB1D75753300752B56 /* LFGPUImageEmptyFilter.m */; }; + 84D8B3EE1D75753300752B56 /* LFLiveKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3BC1D75753300752B56 /* LFLiveKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3EF1D75753300752B56 /* LFLiveSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3BD1D75753300752B56 /* LFLiveSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3F01D75753300752B56 /* LFLiveSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3BE1D75753300752B56 /* LFLiveSession.m */; }; + 84D8B3F11D75753300752B56 /* LFAudioFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3C01D75753300752B56 /* LFAudioFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3F21D75753300752B56 /* LFAudioFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3C11D75753300752B56 /* LFAudioFrame.m */; }; + 84D8B3F31D75753300752B56 /* LFFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3C21D75753300752B56 /* LFFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3F41D75753300752B56 /* LFFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3C31D75753300752B56 /* LFFrame.m */; }; + 84D8B3F51D75753300752B56 /* LFLiveDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3C41D75753300752B56 /* LFLiveDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3F61D75753300752B56 /* LFLiveDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3C51D75753300752B56 /* LFLiveDebug.m */; }; + 84D8B3F71D75753300752B56 /* LFLiveStreamInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3C61D75753300752B56 /* LFLiveStreamInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3F81D75753300752B56 /* LFLiveStreamInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3C71D75753300752B56 /* LFLiveStreamInfo.m */; }; + 84D8B3F91D75753300752B56 /* LFVideoFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3C81D75753300752B56 /* LFVideoFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 84D8B3FA1D75753300752B56 /* LFVideoFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3C91D75753300752B56 /* LFVideoFrame.m */; }; + 84D8B3FB1D75753300752B56 /* LFStreamingBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3CB1D75753300752B56 /* LFStreamingBuffer.h */; }; + 84D8B3FC1D75753300752B56 /* LFStreamingBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3CC1D75753300752B56 /* LFStreamingBuffer.m */; }; + 84D8B3FD1D75753300752B56 /* LFStreamRTMPSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3CD1D75753300752B56 /* LFStreamRTMPSocket.h */; }; + 84D8B3FE1D75753300752B56 /* LFStreamRtmpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3CE1D75753300752B56 /* LFStreamRtmpSocket.m */; }; + 84D8B3FF1D75753300752B56 /* LFStreamSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3CF1D75753300752B56 /* LFStreamSocket.h */; }; + 84D8B4001D75753300752B56 /* NSMutableArray+LFAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D8B3D01D75753300752B56 /* NSMutableArray+LFAdd.h */; }; + 84D8B4011D75753300752B56 /* NSMutableArray+LFAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B3D11D75753300752B56 /* NSMutableArray+LFAdd.m */; }; + 84D8B4BF1D757EB800752B56 /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4BE1D757EB800752B56 /* VideoToolbox.framework */; }; + 84D8B4C11D757EBE00752B56 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4C01D757EBE00752B56 /* AudioToolbox.framework */; }; + 84D8B4C31D757EC400752B56 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4C21D757EC400752B56 /* AVFoundation.framework */; }; + 84D8B4C51D757EC800752B56 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4C41D757EC800752B56 /* Foundation.framework */; }; + 84D8B4C71D757ECC00752B56 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4C61D757ECC00752B56 /* UIKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 84D8B3901D7574D600752B56 /* LFLiveKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LFLiveKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 84D8B39C1D75753300752B56 /* LFAudioCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioCapture.h; sourceTree = ""; }; + 84D8B39D1D75753300752B56 /* LFAudioCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioCapture.m; sourceTree = ""; }; + 84D8B39E1D75753300752B56 /* LFVideoCapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoCapture.h; sourceTree = ""; }; + 84D8B39F1D75753300752B56 /* LFVideoCapture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoCapture.m; sourceTree = ""; }; + 84D8B3A21D75753300752B56 /* LFAVEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAVEncoder.h; sourceTree = ""; }; + 84D8B3A31D75753300752B56 /* LFAVEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFAVEncoder.mm; sourceTree = ""; }; + 84D8B3A41D75753300752B56 /* LFMP4Atom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFMP4Atom.h; sourceTree = ""; }; + 84D8B3A51D75753300752B56 /* LFMP4Atom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFMP4Atom.m; sourceTree = ""; }; + 84D8B3A61D75753300752B56 /* LFNALUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LFNALUnit.cpp; sourceTree = ""; }; + 84D8B3A71D75753300752B56 /* LFNALUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFNALUnit.h; sourceTree = ""; }; + 84D8B3A81D75753300752B56 /* LFVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoder.h; sourceTree = ""; }; + 84D8B3A91D75753300752B56 /* LFVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoEncoder.m; sourceTree = ""; }; + 84D8B3AA1D75753300752B56 /* LFAudioEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioEncoding.h; sourceTree = ""; }; + 84D8B3AB1D75753300752B56 /* LFH264VideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFH264VideoEncoder.h; sourceTree = ""; }; + 84D8B3AC1D75753300752B56 /* LFH264VideoEncoder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LFH264VideoEncoder.mm; sourceTree = ""; }; + 84D8B3AD1D75753300752B56 /* LFHardwareAudioEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareAudioEncoder.h; sourceTree = ""; }; + 84D8B3AE1D75753300752B56 /* LFHardwareAudioEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareAudioEncoder.m; sourceTree = ""; }; + 84D8B3AF1D75753300752B56 /* LFHardwareVideoEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFHardwareVideoEncoder.h; sourceTree = ""; }; + 84D8B3B01D75753300752B56 /* LFHardwareVideoEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFHardwareVideoEncoder.m; sourceTree = ""; }; + 84D8B3B11D75753300752B56 /* LFVideoEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoEncoding.h; sourceTree = ""; }; + 84D8B3B31D75753300752B56 /* LFLiveAudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveAudioConfiguration.h; sourceTree = ""; }; + 84D8B3B41D75753300752B56 /* LFLiveAudioConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveAudioConfiguration.m; sourceTree = ""; }; + 84D8B3B51D75753300752B56 /* LFLiveVideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveVideoConfiguration.h; sourceTree = ""; }; + 84D8B3B61D75753300752B56 /* LFLiveVideoConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveVideoConfiguration.m; sourceTree = ""; }; + 84D8B3B81D75753300752B56 /* LFGPUImageBeautyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageBeautyFilter.h; sourceTree = ""; }; + 84D8B3B91D75753300752B56 /* LFGPUImageBeautyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageBeautyFilter.m; sourceTree = ""; }; + 84D8B3BA1D75753300752B56 /* LFGPUImageEmptyFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFGPUImageEmptyFilter.h; sourceTree = ""; }; + 84D8B3BB1D75753300752B56 /* LFGPUImageEmptyFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFGPUImageEmptyFilter.m; sourceTree = ""; }; + 84D8B3BC1D75753300752B56 /* LFLiveKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveKit.h; sourceTree = ""; }; + 84D8B3BD1D75753300752B56 /* LFLiveSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveSession.h; sourceTree = ""; }; + 84D8B3BE1D75753300752B56 /* LFLiveSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveSession.m; sourceTree = ""; }; + 84D8B3C01D75753300752B56 /* LFAudioFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFAudioFrame.h; sourceTree = ""; }; + 84D8B3C11D75753300752B56 /* LFAudioFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFAudioFrame.m; sourceTree = ""; }; + 84D8B3C21D75753300752B56 /* LFFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFFrame.h; sourceTree = ""; }; + 84D8B3C31D75753300752B56 /* LFFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFFrame.m; sourceTree = ""; }; + 84D8B3C41D75753300752B56 /* LFLiveDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveDebug.h; sourceTree = ""; }; + 84D8B3C51D75753300752B56 /* LFLiveDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveDebug.m; sourceTree = ""; }; + 84D8B3C61D75753300752B56 /* LFLiveStreamInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLiveStreamInfo.h; sourceTree = ""; }; + 84D8B3C71D75753300752B56 /* LFLiveStreamInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLiveStreamInfo.m; sourceTree = ""; }; + 84D8B3C81D75753300752B56 /* LFVideoFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFVideoFrame.h; sourceTree = ""; }; + 84D8B3C91D75753300752B56 /* LFVideoFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFVideoFrame.m; sourceTree = ""; }; + 84D8B3CB1D75753300752B56 /* LFStreamingBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamingBuffer.h; sourceTree = ""; }; + 84D8B3CC1D75753300752B56 /* LFStreamingBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamingBuffer.m; sourceTree = ""; }; + 84D8B3CD1D75753300752B56 /* LFStreamRTMPSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamRTMPSocket.h; sourceTree = ""; }; + 84D8B3CE1D75753300752B56 /* LFStreamRtmpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFStreamRtmpSocket.m; sourceTree = ""; }; + 84D8B3CF1D75753300752B56 /* LFStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFStreamSocket.h; sourceTree = ""; }; + 84D8B3D01D75753300752B56 /* NSMutableArray+LFAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+LFAdd.h"; sourceTree = ""; }; + 84D8B3D11D75753300752B56 /* NSMutableArray+LFAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+LFAdd.m"; sourceTree = ""; }; + 84D8B4BE1D757EB800752B56 /* VideoToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VideoToolbox.framework; path = System/Library/Frameworks/VideoToolbox.framework; sourceTree = SDKROOT; }; + 84D8B4C01D757EBE00752B56 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 84D8B4C21D757EC400752B56 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 84D8B4C41D757EC800752B56 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 84D8B4C61D757ECC00752B56 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 84D8B4C81D757ED100752B56 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; + 84D8B4CA1D757ED600752B56 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 84D8B38C1D7574D600752B56 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84D8B4C71D757ECC00752B56 /* UIKit.framework in Frameworks */, + 84D8B4C51D757EC800752B56 /* Foundation.framework in Frameworks */, + 84D8B4C31D757EC400752B56 /* AVFoundation.framework in Frameworks */, + 84D8B4C11D757EBE00752B56 /* AudioToolbox.framework in Frameworks */, + 84D8B4BF1D757EB800752B56 /* VideoToolbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 84D8B3861D7574D600752B56 = { + isa = PBXGroup; + children = ( + 84D8B4CA1D757ED600752B56 /* libz.tbd */, + 84D8B4C81D757ED100752B56 /* libstdc++.tbd */, + 84D8B4C61D757ECC00752B56 /* UIKit.framework */, + 84D8B4C41D757EC800752B56 /* Foundation.framework */, + 84D8B4C21D757EC400752B56 /* AVFoundation.framework */, + 84D8B4C01D757EBE00752B56 /* AudioToolbox.framework */, + 84D8B4BE1D757EB800752B56 /* VideoToolbox.framework */, + 84D8B3921D7574D600752B56 /* LFLiveKit */, + 84D8B3911D7574D600752B56 /* Products */, + ); + sourceTree = ""; + }; + 84D8B3911D7574D600752B56 /* Products */ = { + isa = PBXGroup; + children = ( + 84D8B3901D7574D600752B56 /* LFLiveKit.framework */, + ); + name = Products; + sourceTree = ""; + }; + 84D8B3921D7574D600752B56 /* LFLiveKit */ = { + isa = PBXGroup; + children = ( + 84D8B39B1D75753300752B56 /* capture */, + 84D8B3A01D75753300752B56 /* coder */, + 84D8B3B21D75753300752B56 /* configuration */, + 84D8B3B71D75753300752B56 /* filter */, + 84D8B3BC1D75753300752B56 /* LFLiveKit.h */, + 84D8B3BD1D75753300752B56 /* LFLiveSession.h */, + 84D8B3BE1D75753300752B56 /* LFLiveSession.m */, + 84D8B3BF1D75753300752B56 /* objects */, + 84D8B3CA1D75753300752B56 /* publish */, + ); + path = LFLiveKit; + sourceTree = ""; + }; + 84D8B39B1D75753300752B56 /* capture */ = { + isa = PBXGroup; + children = ( + 84D8B39C1D75753300752B56 /* LFAudioCapture.h */, + 84D8B39D1D75753300752B56 /* LFAudioCapture.m */, + 84D8B39E1D75753300752B56 /* LFVideoCapture.h */, + 84D8B39F1D75753300752B56 /* LFVideoCapture.m */, + ); + path = capture; + sourceTree = ""; + }; + 84D8B3A01D75753300752B56 /* coder */ = { + isa = PBXGroup; + children = ( + 84D8B3A11D75753300752B56 /* H264 */, + 84D8B3AA1D75753300752B56 /* LFAudioEncoding.h */, + 84D8B3AB1D75753300752B56 /* LFH264VideoEncoder.h */, + 84D8B3AC1D75753300752B56 /* LFH264VideoEncoder.mm */, + 84D8B3AD1D75753300752B56 /* LFHardwareAudioEncoder.h */, + 84D8B3AE1D75753300752B56 /* LFHardwareAudioEncoder.m */, + 84D8B3AF1D75753300752B56 /* LFHardwareVideoEncoder.h */, + 84D8B3B01D75753300752B56 /* LFHardwareVideoEncoder.m */, + 84D8B3B11D75753300752B56 /* LFVideoEncoding.h */, + ); + path = coder; + sourceTree = ""; + }; + 84D8B3A11D75753300752B56 /* H264 */ = { + isa = PBXGroup; + children = ( + 84D8B3A21D75753300752B56 /* LFAVEncoder.h */, + 84D8B3A31D75753300752B56 /* LFAVEncoder.mm */, + 84D8B3A41D75753300752B56 /* LFMP4Atom.h */, + 84D8B3A51D75753300752B56 /* LFMP4Atom.m */, + 84D8B3A61D75753300752B56 /* LFNALUnit.cpp */, + 84D8B3A71D75753300752B56 /* LFNALUnit.h */, + 84D8B3A81D75753300752B56 /* LFVideoEncoder.h */, + 84D8B3A91D75753300752B56 /* LFVideoEncoder.m */, + ); + path = H264; + sourceTree = ""; + }; + 84D8B3B21D75753300752B56 /* configuration */ = { + isa = PBXGroup; + children = ( + 84D8B3B31D75753300752B56 /* LFLiveAudioConfiguration.h */, + 84D8B3B41D75753300752B56 /* LFLiveAudioConfiguration.m */, + 84D8B3B51D75753300752B56 /* LFLiveVideoConfiguration.h */, + 84D8B3B61D75753300752B56 /* LFLiveVideoConfiguration.m */, + ); + path = configuration; + sourceTree = ""; + }; + 84D8B3B71D75753300752B56 /* filter */ = { + isa = PBXGroup; + children = ( + 84D8B3B81D75753300752B56 /* LFGPUImageBeautyFilter.h */, + 84D8B3B91D75753300752B56 /* LFGPUImageBeautyFilter.m */, + 84D8B3BA1D75753300752B56 /* LFGPUImageEmptyFilter.h */, + 84D8B3BB1D75753300752B56 /* LFGPUImageEmptyFilter.m */, + ); + path = filter; + sourceTree = ""; + }; + 84D8B3BF1D75753300752B56 /* objects */ = { + isa = PBXGroup; + children = ( + 84D8B3C01D75753300752B56 /* LFAudioFrame.h */, + 84D8B3C11D75753300752B56 /* LFAudioFrame.m */, + 84D8B3C21D75753300752B56 /* LFFrame.h */, + 84D8B3C31D75753300752B56 /* LFFrame.m */, + 84D8B3C41D75753300752B56 /* LFLiveDebug.h */, + 84D8B3C51D75753300752B56 /* LFLiveDebug.m */, + 84D8B3C61D75753300752B56 /* LFLiveStreamInfo.h */, + 84D8B3C71D75753300752B56 /* LFLiveStreamInfo.m */, + 84D8B3C81D75753300752B56 /* LFVideoFrame.h */, + 84D8B3C91D75753300752B56 /* LFVideoFrame.m */, + ); + path = objects; + sourceTree = ""; + }; + 84D8B3CA1D75753300752B56 /* publish */ = { + isa = PBXGroup; + children = ( + 84D8B3CB1D75753300752B56 /* LFStreamingBuffer.h */, + 84D8B3CC1D75753300752B56 /* LFStreamingBuffer.m */, + 84D8B3CD1D75753300752B56 /* LFStreamRTMPSocket.h */, + 84D8B3CE1D75753300752B56 /* LFStreamRtmpSocket.m */, + 84D8B3CF1D75753300752B56 /* LFStreamSocket.h */, + 84D8B3D01D75753300752B56 /* NSMutableArray+LFAdd.h */, + 84D8B3D11D75753300752B56 /* NSMutableArray+LFAdd.m */, + ); + path = publish; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 84D8B38D1D7574D600752B56 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 84D8B3F51D75753300752B56 /* LFLiveDebug.h in Headers */, + 84D8B3E61D75753300752B56 /* LFLiveAudioConfiguration.h in Headers */, + 84D8B3F11D75753300752B56 /* LFAudioFrame.h in Headers */, + 84D8B3F71D75753300752B56 /* LFLiveStreamInfo.h in Headers */, + 84D8B3E81D75753300752B56 /* LFLiveVideoConfiguration.h in Headers */, + 84D8B3F31D75753300752B56 /* LFFrame.h in Headers */, + 84D8B3EE1D75753300752B56 /* LFLiveKit.h in Headers */, + 84D8B3EF1D75753300752B56 /* LFLiveSession.h in Headers */, + 84D8B3F91D75753300752B56 /* LFVideoFrame.h in Headers */, + 84D8B3D21D75753300752B56 /* LFAudioCapture.h in Headers */, + 84D8B3FD1D75753300752B56 /* LFStreamRTMPSocket.h in Headers */, + 84D8B3D81D75753300752B56 /* LFMP4Atom.h in Headers */, + 84D8B3EA1D75753300752B56 /* LFGPUImageBeautyFilter.h in Headers */, + 84D8B3D61D75753300752B56 /* LFAVEncoder.h in Headers */, + 84D8B3DC1D75753300752B56 /* LFVideoEncoder.h in Headers */, + 84D8B3EC1D75753300752B56 /* LFGPUImageEmptyFilter.h in Headers */, + 84D8B3DE1D75753300752B56 /* LFAudioEncoding.h in Headers */, + 84D8B4001D75753300752B56 /* NSMutableArray+LFAdd.h in Headers */, + 84D8B3E31D75753300752B56 /* LFHardwareVideoEncoder.h in Headers */, + 84D8B3D41D75753300752B56 /* LFVideoCapture.h in Headers */, + 84D8B3FF1D75753300752B56 /* LFStreamSocket.h in Headers */, + 84D8B3DB1D75753300752B56 /* LFNALUnit.h in Headers */, + 84D8B3E11D75753300752B56 /* LFHardwareAudioEncoder.h in Headers */, + 84D8B3E51D75753300752B56 /* LFVideoEncoding.h in Headers */, + 84D8B3FB1D75753300752B56 /* LFStreamingBuffer.h in Headers */, + 84D8B3DF1D75753300752B56 /* LFH264VideoEncoder.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 84D8B38F1D7574D600752B56 /* LFLiveKit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84D8B3981D7574D600752B56 /* Build configuration list for PBXNativeTarget "LFLiveKit" */; + buildPhases = ( + 84D8B38B1D7574D600752B56 /* Sources */, + 84D8B38C1D7574D600752B56 /* Frameworks */, + 84D8B38D1D7574D600752B56 /* Headers */, + 84D8B38E1D7574D600752B56 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LFLiveKit; + productName = LFLiveKit; + productReference = 84D8B3901D7574D600752B56 /* LFLiveKit.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 84D8B3871D7574D600752B56 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = admin; + TargetAttributes = { + 84D8B38F1D7574D600752B56 = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 84D8B38A1D7574D600752B56 /* Build configuration list for PBXProject "LFLiveKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 84D8B3861D7574D600752B56; + productRefGroup = 84D8B3911D7574D600752B56 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 84D8B38F1D7574D600752B56 /* LFLiveKit */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 84D8B38E1D7574D600752B56 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84D8B38B1D7574D600752B56 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84D8B3EB1D75753300752B56 /* LFGPUImageBeautyFilter.m in Sources */, + 84D8B3F41D75753300752B56 /* LFFrame.m in Sources */, + 84D8B3F61D75753300752B56 /* LFLiveDebug.m in Sources */, + 84D8B3D51D75753300752B56 /* LFVideoCapture.m in Sources */, + 84D8B3F21D75753300752B56 /* LFAudioFrame.m in Sources */, + 84D8B3F81D75753300752B56 /* LFLiveStreamInfo.m in Sources */, + 84D8B3DA1D75753300752B56 /* LFNALUnit.cpp in Sources */, + 84D8B3D71D75753300752B56 /* LFAVEncoder.mm in Sources */, + 84D8B3D91D75753300752B56 /* LFMP4Atom.m in Sources */, + 84D8B3E91D75753300752B56 /* LFLiveVideoConfiguration.m in Sources */, + 84D8B3DD1D75753300752B56 /* LFVideoEncoder.m in Sources */, + 84D8B3ED1D75753300752B56 /* LFGPUImageEmptyFilter.m in Sources */, + 84D8B3F01D75753300752B56 /* LFLiveSession.m in Sources */, + 84D8B3FE1D75753300752B56 /* LFStreamRtmpSocket.m in Sources */, + 84D8B3E71D75753300752B56 /* LFLiveAudioConfiguration.m in Sources */, + 84D8B3E21D75753300752B56 /* LFHardwareAudioEncoder.m in Sources */, + 84D8B3E01D75753300752B56 /* LFH264VideoEncoder.mm in Sources */, + 84D8B3FC1D75753300752B56 /* LFStreamingBuffer.m in Sources */, + 84D8B3E41D75753300752B56 /* LFHardwareVideoEncoder.m in Sources */, + 84D8B3FA1D75753300752B56 /* LFVideoFrame.m in Sources */, + 84D8B3D31D75753300752B56 /* LFAudioCapture.m in Sources */, + 84D8B4011D75753300752B56 /* NSMutableArray+LFAdd.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 84D8B3961D7574D600752B56 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 84D8B3971D7574D600752B56 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 84D8B3991D7574D600752B56 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../Vendor/GPUImage.framework/Headers\"", + "\"$(SRCROOT)/../Vendor/pili_librtmp.framework/Headers\"", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 84D8B39A1D7574D600752B56 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + HEADER_SEARCH_PATHS = ( + "\"$(SRCROOT)/../Vendor/GPUImage.framework/Headers\"", + "\"$(SRCROOT)/../Vendor/pili_librtmp.framework/Headers\"", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKit; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84D8B38A1D7574D600752B56 /* Build configuration list for PBXProject "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84D8B3961D7574D600752B56 /* Debug */, + 84D8B3971D7574D600752B56 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84D8B3981D7574D600752B56 /* Build configuration list for PBXNativeTarget "LFLiveKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84D8B3991D7574D600752B56 /* Debug */, + 84D8B39A1D7574D600752B56 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 84D8B3871D7574D600752B56 /* Project object */; +} diff --git a/LFLiveKit/LFLiveKit/LFLiveKit.h b/LFLiveKit/LFLiveKit/LFLiveKit.h new file mode 100644 index 00000000..ca308d46 --- /dev/null +++ b/LFLiveKit/LFLiveKit/LFLiveKit.h @@ -0,0 +1,25 @@ +// +// LFLiveKit.h +// LFLiveKit +// +// Created by admin on 16/5/24. +// Copyright © 2016年 admin. All rights reserved. +// + +#import "LFLiveSession.h" +#import "LFLiveAudioConfiguration.h" +#import "LFLiveVideoConfiguration.h" +#import "LFAudioFrame.h" +#import "LFFrame.h" +#import "LFLiveStreamInfo.h" +#import "LFVideoFrame.h" +#import "LFLiveDebug.h" + +//#import +//#import +//#import +//#import +//#import +//#import +//#import +//#import \ No newline at end of file diff --git a/LFLiveKit/LFLiveSession.h b/LFLiveKit/LFLiveKit/LFLiveSession.h similarity index 95% rename from LFLiveKit/LFLiveSession.h rename to LFLiveKit/LFLiveKit/LFLiveSession.h index c4e094f5..a04ac3bb 100755 --- a/LFLiveKit/LFLiveSession.h +++ b/LFLiveKit/LFLiveKit/LFLiveSession.h @@ -113,9 +113,9 @@ typedef NS_ENUM(NSInteger,LFLiveCaptureTypeMask) { /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add. set alpha represent mix.Position relative to outVideoSize. *.*/ -@property (nonatomic, strong) UIView *warterMarkView; +@property (nonatomic, strong, nullable) UIView *warterMarkView; -@property (nonatomic, strong) UIImage *currentImage; +@property (nonatomic, strong,readonly ,nullable) UIImage *currentImage; #pragma mark - Initializer ///============================================================================= /// @name Initializer @@ -127,7 +127,7 @@ typedef NS_ENUM(NSInteger,LFLiveCaptureTypeMask) { The designated initializer. Multiple instances with the same configuration will make the capture unstable. */ -- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration; /** The designated initializer. Multiple instances with the same configuration will make the @@ -142,10 +142,10 @@ typedef NS_ENUM(NSInteger,LFLiveCaptureTypeMask) { - (void)stopLive; /** support outer input yuv or rgb video(set LFLiveCaptureTypeMask) .*/ -- (void)pushVideo:(CVPixelBufferRef)pixelBuffer; +- (void)pushVideo:(nullable CVPixelBufferRef)pixelBuffer; /** support outer input pcm audio(set LFLiveCaptureTypeMask) .*/ -- (void)pushAudio:(NSData*)audioData; +- (void)pushAudio:(nullable NSData*)audioData; @end diff --git a/LFLiveKit/LFLiveSession.m b/LFLiveKit/LFLiveKit/LFLiveSession.m similarity index 97% rename from LFLiveKit/LFLiveSession.m rename to LFLiveKit/LFLiveKit/LFLiveSession.m index 7735e0ab..617ef2c0 100755 --- a/LFLiveKit/LFLiveSession.m +++ b/LFLiveKit/LFLiveKit/LFLiveSession.m @@ -73,7 +73,7 @@ @interface LFLiveSession () @implementation LFLiveSession #pragma mark -- LifeCycle -- (instancetype)initWithAudioConfiguration:(LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(LFLiveVideoConfiguration *)videoConfiguration { +- (instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration *)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration *)videoConfiguration { return [self initWithAudioConfiguration:audioConfiguration videoConfiguration:videoConfiguration captureType:LFLiveCaptureDefaultMask]; } @@ -119,20 +119,20 @@ - (void)pushSendBuffer:(LFFrame*)frame{ [self.socket sendFrame:frame]; } -- (void)pushVideo:(CVPixelBufferRef)pixelBuffer{ +- (void)pushVideo:(nullable CVPixelBufferRef)pixelBuffer{ if(self.captureType & LFLiveInputMaskVideo){ if (self.uploading) [self.videoEncoder encodeVideoData:pixelBuffer timeStamp:NOW]; } } -- (void)pushAudio:(NSData*)audioData{ +- (void)pushAudio:(nullable NSData*)audioData{ if(self.captureType & LFLiveInputMaskAudio){ if (self.uploading) [self.audioEncoder encodeAudioData:audioData timeStamp:NOW]; } } #pragma mark -- CaptureDelegate -- (void)captureOutput:(nullable LFAudioCapture *)capture audioData:(NSData*)audioData { +- (void)captureOutput:(nullable LFAudioCapture *)capture audioData:(nullable NSData*)audioData { if (self.uploading) [self.audioEncoder encodeAudioData:audioData timeStamp:NOW]; } @@ -320,11 +320,11 @@ - (void)setWarterMarkView:(UIView *)warterMarkView{ [self.videoCaptureSource setWarterMarkView:warterMarkView]; } -- (UIView*)warterMarkView{ +- (nullable UIView*)warterMarkView{ return self.videoCaptureSource.warterMarkView; } -- (UIImage *)currentImage{ +- (nullable UIImage *)currentImage{ return self.videoCaptureSource.currentImage; } diff --git a/LFLiveKit/capture/LFAudioCapture.h b/LFLiveKit/LFLiveKit/capture/LFAudioCapture.h similarity index 98% rename from LFLiveKit/capture/LFAudioCapture.h rename to LFLiveKit/LFLiveKit/capture/LFAudioCapture.h index 7efb83c4..f0bc83b2 100755 --- a/LFLiveKit/capture/LFAudioCapture.h +++ b/LFLiveKit/LFLiveKit/capture/LFAudioCapture.h @@ -17,7 +17,7 @@ extern NSString *_Nullable const LFAudioComponentFailedToCreateNotification; @class LFAudioCapture; /** LFAudioCapture callback audioData */ @protocol LFAudioCaptureDelegate -- (void)captureOutput:(nullable LFAudioCapture *)capture audioData:(NSData*)audioData; +- (void)captureOutput:(nullable LFAudioCapture *)capture audioData:(nullable NSData*)audioData; @end diff --git a/LFLiveKit/capture/LFAudioCapture.m b/LFLiveKit/LFLiveKit/capture/LFAudioCapture.m similarity index 99% rename from LFLiveKit/capture/LFAudioCapture.m rename to LFLiveKit/LFLiveKit/capture/LFAudioCapture.m index 5c75f861..f41ba840 100755 --- a/LFLiveKit/capture/LFAudioCapture.m +++ b/LFLiveKit/LFLiveKit/capture/LFAudioCapture.m @@ -18,7 +18,7 @@ @interface LFAudioCapture () @property (nonatomic, assign) AudioComponent component; @property (nonatomic, strong) dispatch_queue_t taskQueue; @property (nonatomic, assign) BOOL isRunning; -@property (nonatomic, strong) LFLiveAudioConfiguration *configuration; +@property (nonatomic, strong,nullable) LFLiveAudioConfiguration *configuration; @end diff --git a/LFLiveKit/capture/LFVideoCapture.h b/LFLiveKit/LFLiveKit/capture/LFVideoCapture.h similarity index 95% rename from LFLiveKit/capture/LFVideoCapture.h rename to LFLiveKit/LFLiveKit/capture/LFVideoCapture.h index 2e227989..5919391e 100755 --- a/LFLiveKit/capture/LFVideoCapture.h +++ b/LFLiveKit/LFLiveKit/capture/LFVideoCapture.h @@ -57,9 +57,9 @@ @property (nonatomic, assign) NSInteger videoFrameRate; /*** The warterMarkView control whether the watermark is displayed or not ,if set ni,will remove watermark,otherwise add *.*/ -@property (nonatomic, strong) UIView *warterMarkView; +@property (nonatomic, strong, nullable) UIView *warterMarkView; -@property (nonatomic, strong) UIImage *currentImage; +@property (nonatomic, strong, nullable) UIImage *currentImage; #pragma mark - Initializer ///============================================================================= /// @name Initializer diff --git a/LFLiveKit/capture/LFVideoCapture.m b/LFLiveKit/LFLiveKit/capture/LFVideoCapture.m similarity index 97% rename from LFLiveKit/capture/LFVideoCapture.m rename to LFLiveKit/LFLiveKit/capture/LFVideoCapture.m index cb1b489d..7c4ae932 100755 --- a/LFLiveKit/capture/LFVideoCapture.m +++ b/LFLiveKit/LFLiveKit/capture/LFVideoCapture.m @@ -14,7 +14,7 @@ @interface LFVideoCapture () @property (nonatomic, strong) GPUImageVideoCamera *videoCamera; -@property (nonatomic, weak) LFGPUImageBeautyFilter *beautyFilter; +@property (nonatomic, strong) LFGPUImageBeautyFilter *beautyFilter; @property (nonatomic, strong) GPUImageOutput *filter; @property (nonatomic, strong) GPUImageCropFilter *cropfilter; @property (nonatomic, strong) GPUImageOutput *output; @@ -69,14 +69,12 @@ - (GPUImageVideoCamera *)videoCamera{ if (self.configuration.landscape) { if (statusBar != UIInterfaceOrientationLandscapeLeft && statusBar != UIInterfaceOrientationLandscapeRight) { @throw [NSException exceptionWithName:@"当前设置方向出错" reason:@"LFLiveVideoConfiguration landscape error" userInfo:nil]; - _videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; } else { _videoCamera.outputImageOrientation = statusBar; } } else { if (statusBar != UIInterfaceOrientationPortrait && statusBar != UIInterfaceOrientationPortraitUpsideDown) { @throw [NSException exceptionWithName:@"当前设置方向出错" reason:@"LFLiveVideoConfiguration landscape error" userInfo:nil]; - _videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; } else { _videoCamera.outputImageOrientation = statusBar; } @@ -284,7 +282,7 @@ - (void)reloadFilter{ if (self.beautyFace) { self.output = [[LFGPUImageEmptyFilter alloc] init]; self.filter = [[LFGPUImageBeautyFilter alloc] init]; - self.beautyFilter = self.filter; + self.beautyFilter = (LFGPUImageBeautyFilter*)self.filter; } else { self.output = [[LFGPUImageEmptyFilter alloc] init]; self.filter = [[LFGPUImageEmptyFilter alloc] init]; diff --git a/LFLiveKit/coder/H264/LFAVEncoder.h b/LFLiveKit/LFLiveKit/coder/H264/LFAVEncoder.h similarity index 92% rename from LFLiveKit/coder/H264/LFAVEncoder.h rename to LFLiveKit/LFLiveKit/coder/H264/LFAVEncoder.h index 8d917b96..66b5a3f1 100755 --- a/LFLiveKit/coder/H264/LFAVEncoder.h +++ b/LFLiveKit/LFLiveKit/coder/H264/LFAVEncoder.h @@ -26,7 +26,6 @@ typedef int (^param_handler_t)(NSData *params); - (void)encodeWithBlock:(encoder_handler_t)block onParams:(param_handler_t)paramsHandler; - (void)encodeFrame:(CMSampleBufferRef)sampleBuffer; -- (void)encodePixelBuffer:(CVPixelBufferRef)pixelBuffer pts:(CMTime)pts; - (NSData *)getConfigData; - (void)shutdown; diff --git a/LFLiveKit/coder/H264/LFAVEncoder.mm b/LFLiveKit/LFLiveKit/coder/H264/LFAVEncoder.mm similarity index 96% rename from LFLiveKit/coder/H264/LFAVEncoder.mm rename to LFLiveKit/LFLiveKit/coder/H264/LFAVEncoder.mm index 8cd67f08..95467c8e 100755 --- a/LFLiveKit/coder/H264/LFAVEncoder.mm +++ b/LFLiveKit/LFLiveKit/coder/H264/LFAVEncoder.mm @@ -91,12 +91,12 @@ - (void)initForHeight:(int)height andWidth:(int)width bitrate:(int)bitrate { _width = width; _bitrate = bitrate; NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"params.mp4"]; - _headerWriter = [LFVideoEncoder encoderForPath:path Height:height andWidth:width bitrate:self.bitrate]; + _headerWriter = [LFVideoEncoder encoderForPath:path Height:height andWidth:width bitrate:(int)self.bitrate]; _times = [NSMutableArray arrayWithCapacity:10]; // swap between 3 filenames _currentFile = 1; - _writer = [LFVideoEncoder encoderForPath:[self makeFilename] Height:height andWidth:width bitrate:self.bitrate]; + _writer = [LFVideoEncoder encoderForPath:[self makeFilename] Height:height andWidth:width bitrate:(int)self.bitrate]; [self addObserver:self forKeyPath:NSStringFromSelector(@selector(bitrate)) options:0 context:AVEncoderContext]; } @@ -123,7 +123,7 @@ - (BOOL)parseParams:(NSString *)path { NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path]; struct stat s; fstat([file fileDescriptor], &s); - LFMP4Atom *movie = [LFMP4Atom atomAt:0 size:s.st_size type:(OSType)('file') inFile:file]; + LFMP4Atom *movie = [LFMP4Atom atomAt:0 size:(int)s.st_size type:(OSType)('file') inFile:file]; LFMP4Atom *moov = [movie childOfType:(OSType)('moov') startAt:0]; LFMP4Atom *trak = nil; if (moov != nil) { @@ -164,7 +164,7 @@ - (BOOL)parseParams:(NSString *)path { LFMP4Atom *esd = [avc1 childOfType:(OSType)('avcC') startAt:78]; if (esd != nil) { // this is the avcC record that we are looking for - _avcC = [esd readAt:0 size:esd.length]; + _avcC = [esd readAt:0 size:(int)esd.length]; if (_avcC != nil) { // extract size of length field unsigned char *p = (unsigned char *)[_avcC bytes]; @@ -236,7 +236,7 @@ - (void)encodeFrame:(CMSampleBufferRef)sampleBuffer { _currentFile = 1; } //NSLog(@"Swap to file %d", _currentFile); - _writer = [LFVideoEncoder encoderForPath:[self makeFilename] Height:_height andWidth:_width bitrate:self.bitrate]; + _writer = [LFVideoEncoder encoderForPath:[self makeFilename] Height:_height andWidth:_width bitrate:(int)self.bitrate]; // to do this seamlessly requires a few steps in the right order // first, suspend the read source @@ -319,7 +319,7 @@ - (void)onFileUpdate { // called whenever there is more data to read in the main encoder output file. struct stat s; fstat([_inputFile fileDescriptor], &s); - int cReady = s.st_size - [_inputFile offsetInFile]; + int cReady = (int)(s.st_size - [_inputFile offsetInFile]); // locate the mdat atom if needed while (!_foundMDAT && (cReady > 8)) { @@ -385,7 +385,7 @@ - (void)onNALU:(NSData *)nalu { int naltype = pNal[0] & 0x1f; if (_pendingNALU) { - LFNALUnit nal(pNal, [nalu length]); + LFNALUnit nal(pNal, (int)[nalu length]); // we have existing data —is this the same frame? // typically there are a couple of NALUs per frame in iOS encoding. @@ -397,7 +397,7 @@ - (void)onNALU:(NSData *)nalu { bNew = YES; } else if ((naltype >= 1) && (naltype <= 5)) { nal.Skip(8); - int first_mb = nal.GetUE(); + int first_mb = (int)nal.GetUE(); if (first_mb == 0) { bNew = YES; } diff --git a/LFLiveKit/coder/H264/LFMP4Atom.h b/LFLiveKit/LFLiveKit/coder/H264/LFMP4Atom.h similarity index 100% rename from LFLiveKit/coder/H264/LFMP4Atom.h rename to LFLiveKit/LFLiveKit/coder/H264/LFMP4Atom.h diff --git a/LFLiveKit/coder/H264/LFMP4Atom.m b/LFLiveKit/LFLiveKit/coder/H264/LFMP4Atom.m similarity index 96% rename from LFLiveKit/coder/H264/LFMP4Atom.m rename to LFLiveKit/LFLiveKit/coder/H264/LFMP4Atom.m index c2bb9308..7edaf48b 100755 --- a/LFLiveKit/coder/H264/LFMP4Atom.m +++ b/LFLiveKit/LFLiveKit/coder/H264/LFMP4Atom.m @@ -73,7 +73,7 @@ - (LFMP4Atom *)nextChild { int64_t offset = _nextChild + cHeader; _nextChild += len; len -= cHeader; - return [LFMP4Atom atomAt:offset+_offset size:len type:fourcc inFile:_file]; + return [LFMP4Atom atomAt:offset+_offset size:(int)len type:fourcc inFile:_file]; } return nil; } diff --git a/LFLiveKit/coder/H264/LFNALUnit.cpp b/LFLiveKit/LFLiveKit/coder/H264/LFNALUnit.cpp similarity index 94% rename from LFLiveKit/coder/H264/LFNALUnit.cpp rename to LFLiveKit/LFLiveKit/coder/H264/LFNALUnit.cpp index 8802ea92..27b2fc0f 100755 --- a/LFLiveKit/coder/H264/LFNALUnit.cpp +++ b/LFLiveKit/LFLiveKit/coder/H264/LFNALUnit.cpp @@ -222,7 +222,7 @@ ScalingList(int size, LFNALUnit *pnalu){ long delta = pnalu->GetSE(); nextScale = (lastScale + delta + 256) %256; } - int scaling_list_j = (nextScale == 0) ? lastScale : nextScale; + int scaling_list_j = (nextScale == 0) ? (int)lastScale : (int)nextScale; lastScale = scaling_list_j; } } @@ -237,21 +237,21 @@ LFSeqParamSet::Parse(LFNALUnit *pnalu){ // to get through to the ones we want pnalu->ResetBitstream(); pnalu->Skip(8); // type - m_Profile = pnalu->GetWord(8); + m_Profile =(int) pnalu->GetWord(8); m_Compatibility = (BYTE)pnalu->GetWord(8); - m_Level = pnalu->GetWord(8); + m_Level = (int)pnalu->GetWord(8); /*int seq_param_id =*/ pnalu->GetUE(); if ((m_Profile == 100) || (m_Profile == 110) || (m_Profile == 122) || (m_Profile == 144)) { - int chroma_fmt = pnalu->GetUE(); + int chroma_fmt = (int)pnalu->GetUE(); if (chroma_fmt == 3) { pnalu->Skip(1); } /* int bit_depth_luma_minus8 = */ pnalu->GetUE(); /* int bit_depth_chroma_minus8 = */ pnalu->GetUE(); pnalu->Skip(1); - int seq_scaling_matrix_present = pnalu->GetBit(); + int seq_scaling_matrix_present = (int)pnalu->GetBit(); if (seq_scaling_matrix_present) { for (int i = 0; i < 8; i++) { if (pnalu->GetBit()) { @@ -265,16 +265,16 @@ LFSeqParamSet::Parse(LFNALUnit *pnalu){ } } - int log2_frame_minus4 = pnalu->GetUE(); + int log2_frame_minus4 = (int)pnalu->GetUE(); m_FrameBits = log2_frame_minus4 + 4; - int POCtype = pnalu->GetUE(); + int POCtype = (int)pnalu->GetUE(); if (POCtype == 0) { /*int log2_poc_minus4 =*/ pnalu->GetUE(); } else if (POCtype == 1) { pnalu->Skip(1); // delta always zero /*int nsp_offset =*/ pnalu->GetSE(); /*int nsp_top_to_bottom = */ pnalu->GetSE(); - int num_ref_in_cycle = pnalu->GetUE(); + int num_ref_in_cycle = (int)pnalu->GetUE(); for (int i = 0; i < num_ref_in_cycle; i++) { /*int sf_offset =*/ pnalu->GetSE(); } @@ -286,8 +286,8 @@ LFSeqParamSet::Parse(LFNALUnit *pnalu){ /*int num_ref_frames =*/ pnalu->GetUE(); /*int gaps_allowed =*/ pnalu->GetBit(); - int mbs_width = pnalu->GetUE(); - int mbs_height = pnalu->GetUE(); + int mbs_width = (int)pnalu->GetUE(); + int mbs_height = (int)pnalu->GetUE(); m_cx = (mbs_width+1) * 16; m_cy = (mbs_height+1) * 16; @@ -359,7 +359,7 @@ LFSliceHeader::Parse(LFNALUnit *pnalu){ pnalu->GetUE(); // slice type pnalu->GetUE(); // pic param set id - m_framenum = pnalu->GetWord(m_nBitsFrame); + m_framenum = (int)pnalu->GetWord(m_nBitsFrame); return true; } diff --git a/LFLiveKit/coder/H264/LFNALUnit.h b/LFLiveKit/LFLiveKit/coder/H264/LFNALUnit.h similarity index 100% rename from LFLiveKit/coder/H264/LFNALUnit.h rename to LFLiveKit/LFLiveKit/coder/H264/LFNALUnit.h diff --git a/LFLiveKit/coder/H264/LFVideoEncoder.h b/LFLiveKit/LFLiveKit/coder/H264/LFVideoEncoder.h similarity index 100% rename from LFLiveKit/coder/H264/LFVideoEncoder.h rename to LFLiveKit/LFLiveKit/coder/H264/LFVideoEncoder.h diff --git a/LFLiveKit/coder/H264/LFVideoEncoder.m b/LFLiveKit/LFLiveKit/coder/H264/LFVideoEncoder.m similarity index 100% rename from LFLiveKit/coder/H264/LFVideoEncoder.m rename to LFLiveKit/LFLiveKit/coder/H264/LFVideoEncoder.m diff --git a/LFLiveKit/coder/LFAudioEncoding.h b/LFLiveKit/LFLiveKit/coder/LFAudioEncoding.h similarity index 91% rename from LFLiveKit/coder/LFAudioEncoding.h rename to LFLiveKit/LFLiveKit/coder/LFAudioEncoding.h index cb61d7ea..ec0ff5df 100755 --- a/LFLiveKit/coder/LFAudioEncoding.h +++ b/LFLiveKit/LFLiveKit/coder/LFAudioEncoding.h @@ -21,7 +21,7 @@ /// 编码器抽象的接口 @protocol LFAudioEncoding @required -- (void)encodeAudioData:(NSData*)audioData timeStamp:(uint64_t)timeStamp; +- (void)encodeAudioData:(nullable NSData*)audioData timeStamp:(uint64_t)timeStamp; - (void)stopEncoder; @optional - (nullable instancetype)initWithAudioStreamConfiguration:(nullable LFLiveAudioConfiguration *)configuration; diff --git a/LFLiveKit/coder/LFH264VideoEncoder.h b/LFLiveKit/LFLiveKit/coder/LFH264VideoEncoder.h similarity index 100% rename from LFLiveKit/coder/LFH264VideoEncoder.h rename to LFLiveKit/LFLiveKit/coder/LFH264VideoEncoder.h diff --git a/LFLiveKit/coder/LFH264VideoEncoder.mm b/LFLiveKit/LFLiveKit/coder/LFH264VideoEncoder.mm similarity index 91% rename from LFLiveKit/coder/LFH264VideoEncoder.mm rename to LFLiveKit/LFLiveKit/coder/LFH264VideoEncoder.mm index 3021c75f..e788ab1d 100644 --- a/LFLiveKit/coder/LFH264VideoEncoder.mm +++ b/LFLiveKit/LFLiveKit/coder/LFH264VideoEncoder.mm @@ -60,7 +60,7 @@ - (void)initCompressionSession{ [self initForFilePath]; #endif - _encoder = [LFAVEncoder encoderForHeight:_configuration.videoSize.height andWidth:_configuration.videoSize.width bitrate:_configuration.videoBitRate]; + _encoder = [LFAVEncoder encoderForHeight:(int)_configuration.videoSize.height andWidth:(int)_configuration.videoSize.width bitrate:(int)_configuration.videoBitRate]; [_encoder encodeWithBlock:^int(NSArray* dataArray, CMTimeValue ptsValue) { [self incomingVideoFrames:dataArray ptsValue:ptsValue]; return 0; @@ -85,7 +85,7 @@ - (void) generateSPSandPPS { if (!config) { return; } - LFavcCHeader avcC((const BYTE*)[config bytes], [config length]); + LFavcCHeader avcC((const BYTE*)[config bytes], (int)[config length]); LFSeqParamSet seqParams; seqParams.Parse(avcC.sps()); @@ -107,6 +107,8 @@ - (void) generateSPSandPPS { [_videoSPSandPPS appendData:ppsData]; } + + - (void)setVideoBitRate:(NSInteger)videoBitRate{ _currentVideoBitRate = videoBitRate; _encoder.bitrate = _currentVideoBitRate; @@ -162,7 +164,7 @@ - (void)writeVideoFrames:(NSArray*)frames pts:(CMTime)pts { [totalFrames addObjectsFromArray:frames]; NSMutableData *aggregateFrameData = [NSMutableData data]; - BOOL hasKeyframe = NO; + //BOOL hasKeyframe = NO; for (NSData *data in totalFrames) { unsigned char* pNal = (unsigned char*)[data bytes]; @@ -174,7 +176,7 @@ - (void)writeVideoFrames:(NSArray*)frames pts:(CMTime)pts { _sei = [NSMutableData dataWithData:data]; continue; } else if (naltype == 5) { // IDR - hasKeyframe = YES; + //hasKeyframe = YES; NSMutableData *IDRData = [NSMutableData dataWithData:_videoSPSandPPS]; if (_sei) { [IDRData appendData:_naluStartCode]; @@ -246,25 +248,16 @@ - (void)shutdown { } - (void)initForFilePath { - char *path = [self GetFilePathByfileName:"IOSCamDemo.h264"]; - NSLog(@"%s", path); - self->fp = fopen(path, "wb"); + NSString *path = [self GetFilePathByfileName:@"IOSCamDemo.h264"]; + NSLog(@"%@", path); + self->fp = fopen([path cStringUsingEncoding:NSUTF8StringEncoding], "wb"); } -- (char *)GetFilePathByfileName:(char *)filename { +- (NSString *)GetFilePathByfileName:(NSString*)filename { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *strName = [NSString stringWithFormat:@"%s", filename]; - - NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; - - NSUInteger len = [writablePath length]; - - char *filepath = (char *)malloc(sizeof(char) * (len + 1)); - - [writablePath getCString:filepath maxLength:len + 1 encoding:[NSString defaultCStringEncoding]]; - - return filepath; + NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:filename]; + return writablePath; } @end diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.h b/LFLiveKit/LFLiveKit/coder/LFHardwareAudioEncoder.h similarity index 100% rename from LFLiveKit/coder/LFHardwareAudioEncoder.h rename to LFLiveKit/LFLiveKit/coder/LFHardwareAudioEncoder.h diff --git a/LFLiveKit/coder/LFHardwareAudioEncoder.m b/LFLiveKit/LFLiveKit/coder/LFHardwareAudioEncoder.m similarity index 90% rename from LFLiveKit/coder/LFHardwareAudioEncoder.m rename to LFLiveKit/LFLiveKit/coder/LFHardwareAudioEncoder.m index ff646274..9993a657 100755 --- a/LFLiveKit/coder/LFHardwareAudioEncoder.m +++ b/LFLiveKit/LFLiveKit/coder/LFHardwareAudioEncoder.m @@ -23,7 +23,7 @@ @interface LFHardwareAudioEncoder (){ @implementation LFHardwareAudioEncoder -- (instancetype)initWithAudioStreamConfiguration:(LFLiveAudioConfiguration *)configuration { +- (instancetype)initWithAudioStreamConfiguration:(nullable LFLiveAudioConfiguration *)configuration { if (self = [super init]) { NSLog(@"USE LFHardwareAudioEncoder"); _configuration = configuration; @@ -55,7 +55,7 @@ - (void)setDelegate:(id)delegate { _aacDeleage = delegate; } -- (void)encodeAudioData:(NSData*)audioData timeStamp:(uint64_t)timeStamp { +- (void)encodeAudioData:(nullable NSData*)audioData timeStamp:(uint64_t)timeStamp { if (![self createAudioConvert]) { return; } @@ -67,7 +67,7 @@ - (void)encodeAudioData:(NSData*)audioData timeStamp:(uint64_t)timeStamp { char *totalBuf = malloc(totalSize); char *p = totalBuf; - memset(totalBuf, totalSize, 0); + memset(totalBuf, (int)totalSize, 0); memcpy(totalBuf, leftBuf, leftLength); memcpy(totalBuf + leftLength, audioData.bytes, audioData.length); @@ -175,16 +175,16 @@ - (BOOL)createAudioConvert { //根据输入样本初始化一个编码转换器 OSStatus result = AudioConverterNewSpecific(&inputFormat, &outputFormat, 2, requestedCodecs, &m_converter);; UInt32 outputBitrate = _configuration.audioBitrate; UInt32 propSize = sizeof(outputBitrate); - UInt32 outputPacketSize = 0; +// UInt32 outputPacketSize = 0; if(result == noErr) { result = AudioConverterSetProperty(m_converter, kAudioConverterEncodeBitRate, propSize, &outputBitrate); } - if(result == noErr) { - result = AudioConverterGetProperty(m_converter, kAudioConverterPropertyMaximumOutputPacketSize, &propSize, &outputPacketSize); - } +// if(result == noErr) { +// AudioConverterGetProperty(m_converter, kAudioConverterPropertyMaximumOutputPacketSize, &propSize, &outputPacketSize); +// } return YES; } @@ -216,7 +216,7 @@ - (NSData *)adtsData:(NSInteger)channel rawDataLength:(NSInteger)rawDataLength { // Variables Recycled by addADTStoPacket int profile = 2; //AAC LC //39=MediaCodecInfo.CodecProfileLevel.AACObjectELD; - int freqIdx = [self sampleRateIndex:self.configuration.audioSampleRate]; //44.1KHz + NSInteger freqIdx = [self sampleRateIndex:self.configuration.audioSampleRate]; //44.1KHz int chanCfg = (int)channel; //MPEG-4 Audio Channel Configuration. 1 Channel front-center NSUInteger fullLength = adtsLength + rawDataLength; // fill in ADTS data @@ -280,25 +280,16 @@ - (NSInteger)sampleRateIndex:(NSInteger)frequencyInHz { } - (void)initForFilePath { - char *path = [self GetFilePathByfileName:"IOSCamDemo_HW.aac"]; - NSLog(@"%s", path); - self->fp = fopen(path, "wb"); + NSString *path = [self GetFilePathByfileName:@"IOSCamDemo_HW.aac"]; + NSLog(@"%@", path); + self->fp = fopen([path cStringUsingEncoding:NSUTF8StringEncoding], "wb"); } -- (char *)GetFilePathByfileName:(char *)filename { +- (NSString *)GetFilePathByfileName:(NSString*)filename { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *strName = [NSString stringWithFormat:@"%s", filename]; - - NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; - - NSUInteger len = [writablePath length]; - - char *filepath = (char *)malloc(sizeof(char) * (len + 1)); - - [writablePath getCString:filepath maxLength:len + 1 encoding:[NSString defaultCStringEncoding]]; - - return filepath; + NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:filename]; + return writablePath; } @end diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.h b/LFLiveKit/LFLiveKit/coder/LFHardwareVideoEncoder.h similarity index 100% rename from LFLiveKit/coder/LFHardwareVideoEncoder.h rename to LFLiveKit/LFLiveKit/coder/LFHardwareVideoEncoder.h diff --git a/LFLiveKit/coder/LFHardwareVideoEncoder.m b/LFLiveKit/LFLiveKit/coder/LFHardwareVideoEncoder.m similarity index 95% rename from LFLiveKit/coder/LFHardwareVideoEncoder.m rename to LFLiveKit/LFLiveKit/coder/LFHardwareVideoEncoder.m index 454cc071..0e996f9b 100755 --- a/LFLiveKit/coder/LFHardwareVideoEncoder.m +++ b/LFLiveKit/LFLiveKit/coder/LFHardwareVideoEncoder.m @@ -226,25 +226,16 @@ static void VideoCompressonOutputCallback(void *VTref, void *VTFrameRef, OSStatu } - (void)initForFilePath { - char *path = [self GetFilePathByfileName:"IOSCamDemo_HW.h264"]; - NSLog(@"%s", path); - self->fp = fopen(path, "wb"); + NSString *path = [self GetFilePathByfileName:@"IOSCamDemo.h264"]; + NSLog(@"%@", path); + self->fp = fopen([path cStringUsingEncoding:NSUTF8StringEncoding], "wb"); } -- (char *)GetFilePathByfileName:(char *)filename { +- (NSString *)GetFilePathByfileName:(NSString*)filename { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *strName = [NSString stringWithFormat:@"%s", filename]; - - NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:strName]; - - NSUInteger len = [writablePath length]; - - char *filepath = (char *)malloc(sizeof(char) * (len + 1)); - - [writablePath getCString:filepath maxLength:len + 1 encoding:[NSString defaultCStringEncoding]]; - - return filepath; + NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:filename]; + return writablePath; } @end diff --git a/LFLiveKit/coder/LFVideoEncoding.h b/LFLiveKit/LFLiveKit/coder/LFVideoEncoding.h similarity index 99% rename from LFLiveKit/coder/LFVideoEncoding.h rename to LFLiveKit/LFLiveKit/coder/LFVideoEncoding.h index 2f090fb3..d2dbdf16 100755 --- a/LFLiveKit/coder/LFVideoEncoding.h +++ b/LFLiveKit/LFLiveKit/coder/LFVideoEncoding.h @@ -21,11 +21,10 @@ @protocol LFVideoEncoding @required - (void)encodeVideoData:(nullable CVPixelBufferRef)pixelBuffer timeStamp:(uint64_t)timeStamp; -- (void)stopEncoder; @optional @property (nonatomic, assign) NSInteger videoBitRate; - (nullable instancetype)initWithVideoStreamConfiguration:(nullable LFLiveVideoConfiguration *)configuration; - (void)setDelegate:(nullable id)delegate; - +- (void)stopEncoder; @end diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.h b/LFLiveKit/LFLiveKit/configuration/LFLiveAudioConfiguration.h similarity index 97% rename from LFLiveKit/configuration/LFLiveAudioConfiguration.h rename to LFLiveKit/LFLiveKit/configuration/LFLiveAudioConfiguration.h index 79474e7d..a3217144 100755 --- a/LFLiveKit/configuration/LFLiveAudioConfiguration.h +++ b/LFLiveKit/LFLiveKit/configuration/LFLiveAudioConfiguration.h @@ -68,6 +68,6 @@ typedef NS_ENUM (NSUInteger, LFLiveAudioQuality){ /// flv编码音频头 44100 为0x12 0x10 @property (nonatomic, assign, readonly) char *asc; /// 缓存区长度 -@property (nonatomic, assign) NSUInteger bufferLength; +@property (nonatomic, assign,readonly) NSUInteger bufferLength; @end diff --git a/LFLiveKit/configuration/LFLiveAudioConfiguration.m b/LFLiveKit/LFLiveKit/configuration/LFLiveAudioConfiguration.m similarity index 100% rename from LFLiveKit/configuration/LFLiveAudioConfiguration.m rename to LFLiveKit/LFLiveKit/configuration/LFLiveAudioConfiguration.m diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.h b/LFLiveKit/LFLiveKit/configuration/LFLiveVideoConfiguration.h similarity index 100% rename from LFLiveKit/configuration/LFLiveVideoConfiguration.h rename to LFLiveKit/LFLiveKit/configuration/LFLiveVideoConfiguration.h diff --git a/LFLiveKit/configuration/LFLiveVideoConfiguration.m b/LFLiveKit/LFLiveKit/configuration/LFLiveVideoConfiguration.m similarity index 100% rename from LFLiveKit/configuration/LFLiveVideoConfiguration.m rename to LFLiveKit/LFLiveKit/configuration/LFLiveVideoConfiguration.m diff --git a/LFLiveKit/filter/LFGPUImageBeautyFilter.h b/LFLiveKit/LFLiveKit/filter/LFGPUImageBeautyFilter.h similarity index 100% rename from LFLiveKit/filter/LFGPUImageBeautyFilter.h rename to LFLiveKit/LFLiveKit/filter/LFGPUImageBeautyFilter.h diff --git a/LFLiveKit/filter/LFGPUImageBeautyFilter.m b/LFLiveKit/LFLiveKit/filter/LFGPUImageBeautyFilter.m similarity index 99% rename from LFLiveKit/filter/LFGPUImageBeautyFilter.m rename to LFLiveKit/LFLiveKit/filter/LFGPUImageBeautyFilter.m index 4fc8bbac..dafae4d9 100755 --- a/LFLiveKit/filter/LFGPUImageBeautyFilter.m +++ b/LFLiveKit/LFLiveKit/filter/LFGPUImageBeautyFilter.m @@ -238,7 +238,6 @@ - (id)init; } - (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex { - CGSize oldInputSize = inputTextureSize; [super setInputSize:newSize atIndex:textureIndex]; inputTextureSize = newSize; diff --git a/LFLiveKit/filter/LFGPUImageEmptyFilter.h b/LFLiveKit/LFLiveKit/filter/LFGPUImageEmptyFilter.h similarity index 100% rename from LFLiveKit/filter/LFGPUImageEmptyFilter.h rename to LFLiveKit/LFLiveKit/filter/LFGPUImageEmptyFilter.h diff --git a/LFLiveKit/filter/LFGPUImageEmptyFilter.m b/LFLiveKit/LFLiveKit/filter/LFGPUImageEmptyFilter.m similarity index 100% rename from LFLiveKit/filter/LFGPUImageEmptyFilter.m rename to LFLiveKit/LFLiveKit/filter/LFGPUImageEmptyFilter.m diff --git a/LFLiveKit/objects/LFAudioFrame.h b/LFLiveKit/LFLiveKit/objects/LFAudioFrame.h similarity index 100% rename from LFLiveKit/objects/LFAudioFrame.h rename to LFLiveKit/LFLiveKit/objects/LFAudioFrame.h diff --git a/LFLiveKit/objects/LFAudioFrame.m b/LFLiveKit/LFLiveKit/objects/LFAudioFrame.m similarity index 100% rename from LFLiveKit/objects/LFAudioFrame.m rename to LFLiveKit/LFLiveKit/objects/LFAudioFrame.m diff --git a/LFLiveKit/objects/LFFrame.h b/LFLiveKit/LFLiveKit/objects/LFFrame.h similarity index 85% rename from LFLiveKit/objects/LFFrame.h rename to LFLiveKit/LFLiveKit/objects/LFFrame.h index eee870ea..9bea6cde 100755 --- a/LFLiveKit/objects/LFFrame.h +++ b/LFLiveKit/LFLiveKit/objects/LFFrame.h @@ -10,7 +10,7 @@ @interface LFFrame : NSObject -@property (nonatomic, assign) uint64_t timestamp; +@property (nonatomic, assign,) uint64_t timestamp; @property (nonatomic, strong) NSData *data; ///< flv或者rtmp包头 @property (nonatomic, strong) NSData *header; diff --git a/LFLiveKit/objects/LFFrame.m b/LFLiveKit/LFLiveKit/objects/LFFrame.m similarity index 100% rename from LFLiveKit/objects/LFFrame.m rename to LFLiveKit/LFLiveKit/objects/LFFrame.m diff --git a/LFLiveKit/objects/LFLiveDebug.h b/LFLiveKit/LFLiveKit/objects/LFLiveDebug.h similarity index 100% rename from LFLiveKit/objects/LFLiveDebug.h rename to LFLiveKit/LFLiveKit/objects/LFLiveDebug.h diff --git a/LFLiveKit/objects/LFLiveDebug.m b/LFLiveKit/LFLiveKit/objects/LFLiveDebug.m similarity index 100% rename from LFLiveKit/objects/LFLiveDebug.m rename to LFLiveKit/LFLiveKit/objects/LFLiveDebug.m diff --git a/LFLiveKit/objects/LFLiveStreamInfo.h b/LFLiveKit/LFLiveKit/objects/LFLiveStreamInfo.h similarity index 100% rename from LFLiveKit/objects/LFLiveStreamInfo.h rename to LFLiveKit/LFLiveKit/objects/LFLiveStreamInfo.h diff --git a/LFLiveKit/objects/LFLiveStreamInfo.m b/LFLiveKit/LFLiveKit/objects/LFLiveStreamInfo.m similarity index 100% rename from LFLiveKit/objects/LFLiveStreamInfo.m rename to LFLiveKit/LFLiveKit/objects/LFLiveStreamInfo.m diff --git a/LFLiveKit/objects/LFVideoFrame.h b/LFLiveKit/LFLiveKit/objects/LFVideoFrame.h similarity index 100% rename from LFLiveKit/objects/LFVideoFrame.h rename to LFLiveKit/LFLiveKit/objects/LFVideoFrame.h diff --git a/LFLiveKit/objects/LFVideoFrame.m b/LFLiveKit/LFLiveKit/objects/LFVideoFrame.m similarity index 100% rename from LFLiveKit/objects/LFVideoFrame.m rename to LFLiveKit/LFLiveKit/objects/LFVideoFrame.m diff --git a/LFLiveKit/publish/LFStreamRTMPSocket.h b/LFLiveKit/LFLiveKit/publish/LFStreamRTMPSocket.h similarity index 100% rename from LFLiveKit/publish/LFStreamRTMPSocket.h rename to LFLiveKit/LFLiveKit/publish/LFStreamRTMPSocket.h diff --git a/LFLiveKit/publish/LFStreamRTMPSocket.m b/LFLiveKit/LFLiveKit/publish/LFStreamRtmpSocket.m similarity index 99% rename from LFLiveKit/publish/LFStreamRTMPSocket.m rename to LFLiveKit/LFLiveKit/publish/LFStreamRtmpSocket.m index a406e074..f83f7915 100644 --- a/LFLiveKit/publish/LFStreamRTMPSocket.m +++ b/LFLiveKit/LFLiveKit/publish/LFStreamRtmpSocket.m @@ -33,10 +33,10 @@ SAVC(audiodatarate); SAVC(audiosamplerate); SAVC(audiosamplesize); -SAVC(audiochannels); +//SAVC(audiochannels); SAVC(stereo); SAVC(encoder); -SAVC(av_stereo); +//SAVC(av_stereo); SAVC(fileSize); SAVC(avc1); SAVC(mp4a); @@ -345,7 +345,7 @@ - (void)sendMetaData { *enc++ = 0; *enc++ = AMF_OBJECT_END; - packet.m_nBodySize = enc - packet.m_body; + packet.m_nBodySize = (uint32_t)(enc - packet.m_body); if (!PILI_RTMP_SendPacket(_rtmp, &packet, FALSE, &_error)) { return; } diff --git a/LFLiveKit/publish/LFStreamSocket.h b/LFLiveKit/LFLiveKit/publish/LFStreamSocket.h similarity index 100% rename from LFLiveKit/publish/LFStreamSocket.h rename to LFLiveKit/LFLiveKit/publish/LFStreamSocket.h diff --git a/LFLiveKit/publish/LFStreamingBuffer.h b/LFLiveKit/LFLiveKit/publish/LFStreamingBuffer.h similarity index 100% rename from LFLiveKit/publish/LFStreamingBuffer.h rename to LFLiveKit/LFLiveKit/publish/LFStreamingBuffer.h diff --git a/LFLiveKit/publish/LFStreamingBuffer.m b/LFLiveKit/LFLiveKit/publish/LFStreamingBuffer.m similarity index 100% rename from LFLiveKit/publish/LFStreamingBuffer.m rename to LFLiveKit/LFLiveKit/publish/LFStreamingBuffer.m diff --git a/LFLiveKit/publish/NSMutableArray+LFAdd.h b/LFLiveKit/LFLiveKit/publish/NSMutableArray+LFAdd.h similarity index 100% rename from LFLiveKit/publish/NSMutableArray+LFAdd.h rename to LFLiveKit/LFLiveKit/publish/NSMutableArray+LFAdd.h diff --git a/LFLiveKit/publish/NSMutableArray+LFAdd.m b/LFLiveKit/LFLiveKit/publish/NSMutableArray+LFAdd.m similarity index 100% rename from LFLiveKit/publish/NSMutableArray+LFAdd.m rename to LFLiveKit/LFLiveKit/publish/NSMutableArray+LFAdd.m diff --git a/LFLiveKit/Vendor/GPUImage/GLProgram.m b/LFLiveKit/Vendor/GPUImage/GLProgram.m deleted file mode 100755 index 105d75fe..00000000 --- a/LFLiveKit/Vendor/GPUImage/GLProgram.m +++ /dev/null @@ -1,236 +0,0 @@ -// This is Jeff LaMarche's GLProgram OpenGL shader wrapper class from his OpenGL ES 2.0 book. -// A description of this can be found at his page on the topic: -// http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-ios-chapter-4.html - - -#import "GLProgram.h" -// START:typedefs -#pragma mark Function Pointer Definitions -typedef void (*GLInfoFunction)(GLuint program, GLenum pname, GLint* params); -typedef void (*GLLogFunction) (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); -// END:typedefs -#pragma mark - -#pragma mark Private Extension Method Declaration -// START:extension -@interface GLProgram() - -- (BOOL)compileShader:(GLuint *)shader - type:(GLenum)type - string:(NSString *)shaderString; -@end -// END:extension -#pragma mark - - -@implementation GLProgram -// START:init - -@synthesize initialized = _initialized; - -- (id)initWithVertexShaderString:(NSString *)vShaderString - fragmentShaderString:(NSString *)fShaderString; -{ - if ((self = [super init])) - { - _initialized = NO; - - attributes = [[NSMutableArray alloc] init]; - uniforms = [[NSMutableArray alloc] init]; - program = glCreateProgram(); - - if (![self compileShader:&vertShader - type:GL_VERTEX_SHADER - string:vShaderString]) - { - NSLog(@"Failed to compile vertex shader"); - } - - // Create and compile fragment shader - if (![self compileShader:&fragShader - type:GL_FRAGMENT_SHADER - string:fShaderString]) - { - NSLog(@"Failed to compile fragment shader"); - } - - glAttachShader(program, vertShader); - glAttachShader(program, fragShader); - } - - return self; -} - -- (id)initWithVertexShaderString:(NSString *)vShaderString - fragmentShaderFilename:(NSString *)fShaderFilename; -{ - NSString *fragShaderPathname = [[NSBundle mainBundle] pathForResource:fShaderFilename ofType:@"fsh"]; - NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - if ((self = [self initWithVertexShaderString:vShaderString fragmentShaderString:fragmentShaderString])) - { - } - - return self; -} - -- (id)initWithVertexShaderFilename:(NSString *)vShaderFilename - fragmentShaderFilename:(NSString *)fShaderFilename; -{ - NSString *vertShaderPathname = [[NSBundle mainBundle] pathForResource:vShaderFilename ofType:@"vsh"]; - NSString *vertexShaderString = [NSString stringWithContentsOfFile:vertShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - NSString *fragShaderPathname = [[NSBundle mainBundle] pathForResource:fShaderFilename ofType:@"fsh"]; - NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - if ((self = [self initWithVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString])) - { - } - - return self; -} -// END:init -// START:compile -- (BOOL)compileShader:(GLuint *)shader - type:(GLenum)type - string:(NSString *)shaderString -{ -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - GLint status; - const GLchar *source; - - source = - (GLchar *)[shaderString UTF8String]; - if (!source) - { - NSLog(@"Failed to load vertex shader"); - return NO; - } - - *shader = glCreateShader(type); - glShaderSource(*shader, 1, &source, NULL); - glCompileShader(*shader); - - glGetShaderiv(*shader, GL_COMPILE_STATUS, &status); - - if (status != GL_TRUE) - { - GLint logLength; - glGetShaderiv(*shader, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetShaderInfoLog(*shader, logLength, &logLength, log); - if (shader == &vertShader) - { - self.vertexShaderLog = [NSString stringWithFormat:@"%s", log]; - } - else - { - self.fragmentShaderLog = [NSString stringWithFormat:@"%s", log]; - } - - free(log); - } - } - -// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Compiled in %f ms", linkTime * 1000.0); - - return status == GL_TRUE; -} -// END:compile -#pragma mark - -// START:addattribute -- (void)addAttribute:(NSString *)attributeName -{ - if (![attributes containsObject:attributeName]) - { - [attributes addObject:attributeName]; - glBindAttribLocation(program, - (GLuint)[attributes indexOfObject:attributeName], - [attributeName UTF8String]); - } -} -// END:addattribute -// START:indexmethods -- (GLuint)attributeIndex:(NSString *)attributeName -{ - return (GLuint)[attributes indexOfObject:attributeName]; -} -- (GLuint)uniformIndex:(NSString *)uniformName -{ - return glGetUniformLocation(program, [uniformName UTF8String]); -} -// END:indexmethods -#pragma mark - -// START:link -- (BOOL)link -{ -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - GLint status; - - glLinkProgram(program); - - glGetProgramiv(program, GL_LINK_STATUS, &status); - if (status == GL_FALSE) - return NO; - - if (vertShader) - { - glDeleteShader(vertShader); - vertShader = 0; - } - if (fragShader) - { - glDeleteShader(fragShader); - fragShader = 0; - } - - self.initialized = YES; - -// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Linked in %f ms", linkTime * 1000.0); - - return YES; -} -// END:link -// START:use -- (void)use -{ - glUseProgram(program); -} -// END:use -#pragma mark - - -- (void)validate; -{ - GLint logLength; - - glValidateProgram(program); - glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar *)malloc(logLength); - glGetProgramInfoLog(program, logLength, &logLength, log); - self.programLog = [NSString stringWithFormat:@"%s", log]; - free(log); - } -} - -#pragma mark - -// START:dealloc -- (void)dealloc -{ - if (vertShader) - glDeleteShader(vertShader); - - if (fragShader) - glDeleteShader(fragShader); - - if (program) - glDeleteProgram(program); - -} -// END:dealloc -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m deleted file mode 100755 index c623ac67..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.m +++ /dev/null @@ -1,128 +0,0 @@ -#import "GPUImage3x3ConvolutionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImage3x3ConvolutionFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - uniform mediump mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - mediump vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - mediump vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - mediump vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - mediump vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - mediump vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - mediump vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - mediump vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - mediump vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#else -NSString *const kGPUImage3x3ConvolutionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - uniform mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#endif - -@implementation GPUImage3x3ConvolutionFilter - -@synthesize convolutionKernel = _convolutionKernel; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImage3x3ConvolutionFragmentShaderString])) - { - return nil; - } - - self.convolutionKernel = (GPUMatrix3x3){ - {0.f, 0.f, 0.f}, - {0.f, 1.f, 0.f}, - {0.f, 0.f, 0.f} - }; - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - convolutionMatrixUniform = [filterProgram uniformIndex:@"convolutionMatrix"]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setConvolutionKernel:(GPUMatrix3x3)newValue; -{ - _convolutionKernel = newValue; - - [self setMatrix3f:_convolutionKernel forUniform:convolutionMatrixUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m deleted file mode 100644 index 05c4d50c..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.m +++ /dev/null @@ -1,121 +0,0 @@ -#import "GPUImage3x3TextureSamplingFilter.h" - -// Override vertex shader to remove dependent texture reads -NSString *const kGPUImageNearbyTexelSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(texelWidth, 0.0); - vec2 heightStep = vec2(0.0, texelHeight); - vec2 widthHeightStep = vec2(texelWidth, texelHeight); - vec2 widthNegativeHeightStep = vec2(texelWidth, -texelHeight); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - - topTextureCoordinate = inputTextureCoordinate.xy - heightStep; - topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep; - topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep; - - bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; - bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep; - bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep; - } -); - - -@implementation GPUImage3x3TextureSamplingFilter - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageNearbyTexelSamplingVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(texelWidthUniform, _texelHeight); - glUniform1f(texelHeightUniform, _texelWidth); - } - else - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m deleted file mode 100755 index 71fa6abf..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.m +++ /dev/null @@ -1,100 +0,0 @@ -#import "GPUImageAdaptiveThresholdFilter.h" -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageBoxBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageAdaptiveThresholdFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - highp float blurredInput = texture2D(inputImageTexture, textureCoordinate).r; - highp float localLuminance = texture2D(inputImageTexture2, textureCoordinate2).r; - highp float thresholdResult = step(blurredInput - 0.05, localLuminance); - - gl_FragColor = vec4(vec3(thresholdResult), 1.0); - } -); -#else -NSString *const kGPUImageAdaptiveThresholdFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - float blurredInput = texture2D(inputImageTexture, textureCoordinate).r; - float localLuminance = texture2D(inputImageTexture2, textureCoordinate2).r; - float thresholdResult = step(blurredInput - 0.05, localLuminance); - - gl_FragColor = vec4(vec3(thresholdResult), 1.0); - } -); -#endif - -@interface GPUImageAdaptiveThresholdFilter() -{ - GPUImageBoxBlurFilter *boxBlurFilter; -} -@end - -@implementation GPUImageAdaptiveThresholdFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: reduce to luminance - GPUImageGrayscaleFilter *luminanceFilter = [[GPUImageGrayscaleFilter alloc] init]; - [self addFilter:luminanceFilter]; - - // Second pass: perform a box blur - boxBlurFilter = [[GPUImageBoxBlurFilter alloc] init]; - [self addFilter:boxBlurFilter]; - - // Third pass: compare the blurred background luminance to the local value - GPUImageFilter *adaptiveThresholdFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageAdaptiveThresholdFragmentShaderString]; - [self addFilter:adaptiveThresholdFilter]; - - [luminanceFilter addTarget:boxBlurFilter]; - - [boxBlurFilter addTarget:adaptiveThresholdFilter]; - // To prevent double updating of this filter, disable updates from the sharp luminance image side - [luminanceFilter addTarget:adaptiveThresholdFilter]; - - self.initialFilters = [NSArray arrayWithObject:luminanceFilter]; - self.terminalFilter = adaptiveThresholdFilter; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - boxBlurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return boxBlurFilter.blurRadiusInPixels; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m deleted file mode 100644 index c89054a8..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.m +++ /dev/null @@ -1,100 +0,0 @@ -#import "GPUImageAddBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageAddBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - mediump float r; - if (overlay.r * base.a + base.r * overlay.a >= overlay.a * base.a) { - r = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - r = overlay.r + base.r; - } - - mediump float g; - if (overlay.g * base.a + base.g * overlay.a >= overlay.a * base.a) { - g = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - g = overlay.g + base.g; - } - - mediump float b; - if (overlay.b * base.a + base.b * overlay.a >= overlay.a * base.a) { - b = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - b = overlay.b + base.b; - } - - mediump float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(r, g, b, a); - } -); -#else -NSString *const kGPUImageAddBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float r; - if (overlay.r * base.a + base.r * overlay.a >= overlay.a * base.a) { - r = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - r = overlay.r + base.r; - } - - float g; - if (overlay.g * base.a + base.g * overlay.a >= overlay.a * base.a) { - g = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - g = overlay.g + base.g; - } - - float b; - if (overlay.b * base.a + base.b * overlay.a >= overlay.a * base.a) { - b = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - b = overlay.b + base.b; - } - - float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(r, g, b, a); - } -); -#endif - - - -@implementation GPUImageAddBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageAddBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m deleted file mode 100755 index 077df790..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.m +++ /dev/null @@ -1,72 +0,0 @@ -#import "GPUImageAlphaBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageAlphaBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform lowp float mixturePercent; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a); - } -); -#else -NSString *const kGPUImageAlphaBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float mixturePercent; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(mix(textureColor.rgb, textureColor2.rgb, textureColor2.a * mixturePercent), textureColor.a); - } -); -#endif - -@implementation GPUImageAlphaBlendFilter - -@synthesize mix = _mix; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageAlphaBlendFragmentShaderString])) - { - return nil; - } - - mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; - self.mix = 0.5; - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setMix:(CGFloat)newValue; -{ - _mix = newValue; - - [self setFloat:_mix forUniform:mixUniform program:filterProgram]; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m deleted file mode 100755 index 1ab3ec4e..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "GPUImageAmatorkaFilter.h" -#import "GPUImagePicture.h" -#import "GPUImageLookupFilter.h" - -@implementation GPUImageAmatorkaFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *image = [UIImage imageNamed:@"lookup_amatorka.png"]; -#else - NSImage *image = [NSImage imageNamed:@"lookup_amatorka.png"]; -#endif - - NSAssert(image, @"To use GPUImageAmatorkaFilter you need to add lookup_amatorka.png from GPUImage/framework/Resources to your application bundle."); - - lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; - GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; - [self addFilter:lookupFilter]; - - [lookupImageSource addTarget:lookupFilter atTextureLocation:1]; - [lookupImageSource processImage]; - - self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; - self.terminalFilter = lookupFilter; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m b/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m deleted file mode 100644 index e2dd7e73..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.m +++ /dev/null @@ -1,204 +0,0 @@ -#import "GPUImageAverageColor.h" - -NSString *const kGPUImageColorAveragingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - gl_Position = position; - - upperLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, -texelHeight); - upperRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, -texelHeight); - lowerLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, texelHeight); - lowerRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, texelHeight); - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorAveragingFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - void main() - { - highp vec4 upperLeftColor = texture2D(inputImageTexture, upperLeftInputTextureCoordinate); - highp vec4 upperRightColor = texture2D(inputImageTexture, upperRightInputTextureCoordinate); - highp vec4 lowerLeftColor = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate); - highp vec4 lowerRightColor = texture2D(inputImageTexture, lowerRightInputTextureCoordinate); - - gl_FragColor = 0.25 * (upperLeftColor + upperRightColor + lowerLeftColor + lowerRightColor); - } -); -#else -NSString *const kGPUImageColorAveragingFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - vec4 upperLeftColor = texture2D(inputImageTexture, upperLeftInputTextureCoordinate); - vec4 upperRightColor = texture2D(inputImageTexture, upperRightInputTextureCoordinate); - vec4 lowerLeftColor = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate); - vec4 lowerRightColor = texture2D(inputImageTexture, lowerRightInputTextureCoordinate); - - gl_FragColor = 0.25 * (upperLeftColor + upperRightColor + lowerLeftColor + lowerRightColor); - } -); -#endif - -@implementation GPUImageAverageColor - -@synthesize colorAverageProcessingFinishedBlock = _colorAverageProcessingFinishedBlock; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColorAveragingVertexShaderString fragmentShaderFromString:kGPUImageColorAveragingFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - finalStageSize = CGSizeMake(1.0, 1.0); - - __unsafe_unretained GPUImageAverageColor *weakSelf = self; - [self setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractAverageColorAtFrameTime:frameTime]; - }]; - - return self; -} - -- (void)dealloc; -{ - if (rawImagePixels != NULL) - { - free(rawImagePixels); - } -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - outputFramebuffer = nil; - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - GLuint currentTexture = [firstInputFramebuffer texture]; - - NSUInteger numberOfReductionsInX = floor(log(inputTextureSize.width) / log(4.0)); - NSUInteger numberOfReductionsInY = floor(log(inputTextureSize.height) / log(4.0)); - NSUInteger reductionsToHitSideLimit = MIN(numberOfReductionsInX, numberOfReductionsInY); - for (NSUInteger currentReduction = 0; currentReduction < reductionsToHitSideLimit; currentReduction++) - { - CGSize currentStageSize = CGSizeMake(floor(inputTextureSize.width / pow(4.0, currentReduction + 1.0)), floor(inputTextureSize.height / pow(4.0, currentReduction + 1.0))); - - [outputFramebuffer unlock]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:currentStageSize textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, currentTexture); - - glUniform1i(filterInputTextureUniform, 2); - - glUniform1f(texelWidthUniform, 0.25 / currentStageSize.width); - glUniform1f(texelHeightUniform, 0.25 / currentStageSize.height); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - currentTexture = [outputFramebuffer texture]; - finalStageSize = currentStageSize; - } - - [firstInputFramebuffer unlock]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = kGPUImageNoRotation; -} - -- (void)extractAverageColorAtFrameTime:(CMTime)frameTime; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - // we need a normal color texture for averaging the color values - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture internal format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger totalNumberOfPixels = round(finalStageSize.width * finalStageSize.height); - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(totalNumberOfPixels * 4); - } - - [GPUImageContext useImageProcessingContext]; - [outputFramebuffer activateFramebuffer]; - glReadPixels(0, 0, (int)finalStageSize.width, (int)finalStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - NSUInteger redTotal = 0, greenTotal = 0, blueTotal = 0, alphaTotal = 0; - NSUInteger byteIndex = 0; - for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) - { - redTotal += rawImagePixels[byteIndex++]; - greenTotal += rawImagePixels[byteIndex++]; - blueTotal += rawImagePixels[byteIndex++]; - alphaTotal += rawImagePixels[byteIndex++]; - } - - CGFloat normalizedRedTotal = (CGFloat)redTotal / (CGFloat)totalNumberOfPixels / 255.0; - CGFloat normalizedGreenTotal = (CGFloat)greenTotal / (CGFloat)totalNumberOfPixels / 255.0; - CGFloat normalizedBlueTotal = (CGFloat)blueTotal / (CGFloat)totalNumberOfPixels / 255.0; - CGFloat normalizedAlphaTotal = (CGFloat)alphaTotal / (CGFloat)totalNumberOfPixels / 255.0; - - if (_colorAverageProcessingFinishedBlock != NULL) - { - _colorAverageProcessingFinishedBlock(normalizedRedTotal, normalizedGreenTotal, normalizedBlueTotal, normalizedAlphaTotal, frameTime); - } - }); -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m deleted file mode 100644 index eb2796f4..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.m +++ /dev/null @@ -1,47 +0,0 @@ -#import "GPUImageAverageLuminanceThresholdFilter.h" -#import "GPUImageLuminosity.h" -#import "GPUImageLuminanceThresholdFilter.h" - -@interface GPUImageAverageLuminanceThresholdFilter() -{ - GPUImageLuminosity *luminosityFilter; - GPUImageLuminanceThresholdFilter *luminanceThresholdFilter; -} -@end - -@implementation GPUImageAverageLuminanceThresholdFilter - -@synthesize thresholdMultiplier = _thresholdMultiplier; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.thresholdMultiplier = 1.0; - - luminosityFilter = [[GPUImageLuminosity alloc] init]; - [self addFilter:luminosityFilter]; - - luminanceThresholdFilter = [[GPUImageLuminanceThresholdFilter alloc] init]; - [self addFilter:luminanceThresholdFilter]; - - __unsafe_unretained GPUImageAverageLuminanceThresholdFilter *weakSelf = self; - __unsafe_unretained GPUImageLuminanceThresholdFilter *weakThreshold = luminanceThresholdFilter; - - [luminosityFilter setLuminosityProcessingFinishedBlock:^(CGFloat luminosity, CMTime frameTime) { - weakThreshold.threshold = luminosity * weakSelf.thresholdMultiplier; - }]; - - self.initialFilters = [NSArray arrayWithObjects:luminosityFilter, luminanceThresholdFilter, nil]; - self.terminalFilter = luminanceThresholdFilter; - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m deleted file mode 100644 index c2a8c867..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.m +++ /dev/null @@ -1,231 +0,0 @@ -#import "GPUImageBilateralFilter.h" - -NSString *const kGPUImageBilateralBlurVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - const int GAUSSIAN_SAMPLES = 9; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - - // Calculate the positions for the blur - int multiplier = 0; - vec2 blurStep; - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset); - - for (int i = 0; i < GAUSSIAN_SAMPLES; i++) - { - multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2)); - // Blur in x (horizontal) - blurStep = float(multiplier) * singleStepOffset; - blurCoordinates[i] = inputTextureCoordinate.xy + blurStep; - } - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBilateralFilterFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const lowp int GAUSSIAN_SAMPLES = 9; - - varying highp vec2 textureCoordinate; - varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform mediump float distanceNormalizationFactor; - - void main() - { - lowp vec4 centralColor; - lowp float gaussianWeightTotal; - lowp vec4 sum; - lowp vec4 sampleColor; - lowp float distanceFromCentralColor; - lowp float gaussianWeight; - - centralColor = texture2D(inputImageTexture, blurCoordinates[4]); - gaussianWeightTotal = 0.18; - sum = centralColor * 0.18; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[0]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[1]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[2]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[3]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[5]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[6]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[7]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[8]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - gl_FragColor = sum / gaussianWeightTotal; - } -); -#else -NSString *const kGPUImageBilateralFilterFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const int GAUSSIAN_SAMPLES = 9; - - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform float distanceNormalizationFactor; - - void main() - { - vec4 centralColor; - float gaussianWeightTotal; - vec4 sum; - vec4 sampleColor; - float distanceFromCentralColor; - float gaussianWeight; - - centralColor = texture2D(inputImageTexture, blurCoordinates[4]); - gaussianWeightTotal = 0.18; - sum = centralColor * 0.18; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[0]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[1]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[2]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[3]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[5]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.15 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[6]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.12 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[7]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.09 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - sampleColor = texture2D(inputImageTexture, blurCoordinates[8]); - distanceFromCentralColor = min(distance(centralColor, sampleColor) * distanceNormalizationFactor, 1.0); - gaussianWeight = 0.05 * (1.0 - distanceFromCentralColor); - gaussianWeightTotal += gaussianWeight; - sum += sampleColor * gaussianWeight; - - gl_FragColor = sum / gaussianWeightTotal; - } -); -#endif - -@implementation GPUImageBilateralFilter - -@synthesize distanceNormalizationFactor = _distanceNormalizationFactor; - -- (id)init; -{ - - if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageBilateralBlurVertexShaderString - firstStageFragmentShaderFromString:kGPUImageBilateralFilterFragmentShaderString - secondStageVertexShaderFromString:kGPUImageBilateralBlurVertexShaderString - secondStageFragmentShaderFromString:kGPUImageBilateralFilterFragmentShaderString])) { - return nil; - } - - firstDistanceNormalizationFactorUniform = [filterProgram uniformIndex:@"distanceNormalizationFactor"]; - secondDistanceNormalizationFactorUniform = [filterProgram uniformIndex:@"distanceNormalizationFactor"]; - - self.texelSpacingMultiplier = 4.0; - self.distanceNormalizationFactor = 8.0; - - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setDistanceNormalizationFactor:(CGFloat)newValue -{ - _distanceNormalizationFactor = newValue; - - [self setFloat:newValue - forUniform:firstDistanceNormalizationFactorUniform - program:filterProgram]; - - [self setFloat:newValue - forUniform:secondDistanceNormalizationFactorUniform - program:secondFilterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m deleted file mode 100755 index 5a49385b..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.m +++ /dev/null @@ -1,178 +0,0 @@ -#import "GPUImageBoxBlurFilter.h" - - -@implementation GPUImageBoxBlurFilter - -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; - - // Inner offset loop - [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - GLfloat optimizedOffset = (GLfloat)(currentOptimizedOffset * 2) + 1.5; - - [shaderString appendFormat:@"\ - blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ - blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedOffset, (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedOffset]; - } - - // Footer - [shaderString appendString:@"}\n"]; - - return shaderString; -} - -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform highp float texelWidthOffset;\n\ - uniform highp float texelHeightOffset;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp vec4 sum = vec4(0.0);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - vec4 sum = vec4(0.0);\n", 1 + (numberOfOptimizedOffsets * 2) ]; -#endif - - GLfloat boxWeight = 1.0 / (GLfloat)((blurRadius * 2) + 1); - - // Inner texture loop - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]) * %f;\n", boxWeight]; - - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) - { - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), boxWeight * 2.0]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), boxWeight * 2.0]; - } - - // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader - if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#else - [shaderString appendString:@"vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#endif - - for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) - { - GLfloat optimizedOffset = (GLfloat)(currentOverlowTextureRead * 2) + 1.5; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f) * %f;\n", optimizedOffset, boxWeight * 2.0]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f) * %f;\n", optimizedOffset, boxWeight * 2.0]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = sum;\n\ - }\n"]; - - return shaderString; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - [super setupFilterForSize:filterFrameSize]; - - if (shouldResizeBlurRadiusWithImageSize == YES) - { - - } -} - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - // NSString *currentGaussianBlurVertexShader = [GPUImageGaussianBlurFilter vertexShaderForStandardGaussianOfRadius:4 sigma:2.0]; - // NSString *currentGaussianBlurFragmentShader = [GPUImageGaussianBlurFilter fragmentShaderForStandardGaussianOfRadius:4 sigma:2.0]; - - NSString *currentBoxBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:4 sigma:0.0]; - NSString *currentBoxBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:4 sigma:0.0]; - - if (!(self = [super initWithFirstStageVertexShaderFromString:currentBoxBlurVertexShader firstStageFragmentShaderFromString:currentBoxBlurFragmentShader secondStageVertexShaderFromString:currentBoxBlurVertexShader secondStageFragmentShaderFromString:currentBoxBlurFragmentShader])) - { - return nil; - } - - _blurRadiusInPixels = 4.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - CGFloat newBlurRadius = round(round(newValue / 2.0) * 2.0); // For now, only do even radii - - if (newBlurRadius != _blurRadiusInPixels) - { - _blurRadiusInPixels = newBlurRadius; - - NSString *newGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:_blurRadiusInPixels sigma:0.0]; - NSString *newGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:_blurRadiusInPixels sigma:0.0]; - - // NSLog(@"Optimized vertex shader: \n%@", newGaussianBlurVertexShader); - // NSLog(@"Optimized fragment shader: \n%@", newGaussianBlurFragmentShader); - // - [self switchToVertexShader:newGaussianBlurVertexShader fragmentShader:newGaussianBlurFragmentShader]; - } - shouldResizeBlurRadiusWithImageSize = NO; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m deleted file mode 100755 index 7e526d85..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageBrightnessFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBrightnessFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float brightness; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); - } -); -#else -NSString *const kGPUImageBrightnessFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float brightness; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); - } - ); -#endif - -@implementation GPUImageBrightnessFilter - -@synthesize brightness = _brightness; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageBrightnessFragmentShaderString])) - { - return nil; - } - - brightnessUniform = [filterProgram uniformIndex:@"brightness"]; - self.brightness = 0.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBrightness:(CGFloat)newValue; -{ - _brightness = newValue; - - [self setFloat:_brightness forUniform:brightnessUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m b/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m deleted file mode 100644 index c90d020a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.m +++ /dev/null @@ -1,112 +0,0 @@ -#import "GPUImageBuffer.h" - -@interface GPUImageBuffer() - -@end - -@implementation GPUImageBuffer - -@synthesize bufferSize = _bufferSize; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) - { - return nil; - } - - bufferedFramebuffers = [[NSMutableArray alloc] init]; -// [bufferedTextures addObject:[NSNumber numberWithInt:outputTexture]]; - _bufferSize = 1; - - return self; -} - -- (void)dealloc -{ - for (GPUImageFramebuffer *currentFramebuffer in bufferedFramebuffers) - { - [currentFramebuffer unlock]; - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - if ([bufferedFramebuffers count] >= _bufferSize) - { - outputFramebuffer = [bufferedFramebuffers objectAtIndex:0]; - [bufferedFramebuffers removeObjectAtIndex:0]; - } - else - { - // Nothing yet in the buffer, so don't process further until the buffer is full - outputFramebuffer = firstInputFramebuffer; - [firstInputFramebuffer lock]; - } - - [bufferedFramebuffers addObject:firstInputFramebuffer]; - - // Need to pass along rotation information, as we're just holding on to buffered framebuffers and not rotating them ourselves - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputRotation:inputRotation atIndex:textureIndex]; - } - } - - // Let the downstream video elements see the previous frame from the buffer before rendering a new one into place - [self informTargetsAboutNewFrameAtTime:frameTime]; - -// [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // No need to render to another texture anymore, since we'll be hanging on to the textures in our buffer -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBufferSize:(NSUInteger)newValue; -{ - if ( (newValue == _bufferSize) || (newValue < 1) ) - { - return; - } - - if (newValue > _bufferSize) - { - NSUInteger texturesToAdd = newValue - _bufferSize; - for (NSUInteger currentTextureIndex = 0; currentTextureIndex < texturesToAdd; currentTextureIndex++) - { - // TODO: Deal with the growth of the size of the buffer by rotating framebuffers, no textures - } - } - else - { - NSUInteger texturesToRemove = _bufferSize - newValue; - for (NSUInteger currentTextureIndex = 0; currentTextureIndex < texturesToRemove; currentTextureIndex++) - { - GPUImageFramebuffer *lastFramebuffer = [bufferedFramebuffers lastObject]; - [bufferedFramebuffers removeObjectAtIndex:([bufferedFramebuffers count] - 1)]; - - [lastFramebuffer unlock]; - lastFramebuffer = nil; - } - } - - _bufferSize = newValue; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m deleted file mode 100755 index ad002678..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.m +++ /dev/null @@ -1,174 +0,0 @@ -#import "GPUImageBulgeDistortionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float aspectRatio; - uniform highp vec2 center; - uniform highp float radius; - uniform highp float scale; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, ((textureCoordinate.y - center.y) * aspectRatio) + center.y); - highp float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - highp float percent = 1.0 - ((radius - dist) / radius) * scale; - percent = percent * percent; - - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } -); -#else -NSString *const kGPUImageBulgeDistortionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float aspectRatio; - uniform vec2 center; - uniform float radius; - uniform float scale; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, ((textureCoordinate.y - center.y) * aspectRatio) + center.y); - float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - float percent = 1.0 - ((radius - dist) / radius) * scale; - percent = percent * percent; - - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } -); -#endif - - -@interface GPUImageBulgeDistortionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImageBulgeDistortionFilter - -@synthesize aspectRatio = _aspectRatio; -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize scale = _scale; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageBulgeDistortionFragmentShaderString])) - { - return nil; - } - - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - radiusUniform = [filterProgram uniformIndex:@"radius"]; - scaleUniform = [filterProgram uniformIndex:@"scale"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.radius = 0.25; - self.scale = 0.5; - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setScale:(CGFloat)newValue; -{ - _scale = newValue; - - [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m deleted file mode 100755 index eee939a0..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -// -// GPUImageCGAColorspaceFilter.m -// - -#import "GPUImageCGAColorspaceFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCGAColorspaceFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - highp vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0); - //highp vec4 colorDivisor = vec4(colorDepth); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor); - highp vec4 color = texture2D(inputImageTexture, samplePos ); - - //gl_FragColor = texture2D(inputImageTexture, samplePos ); - mediump vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0); - mediump vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0); - mediump vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0); - mediump vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0); - - mediump vec4 endColor; - highp float blackDistance = distance(color, colorBlack); - highp float whiteDistance = distance(color, colorWhite); - highp float magentaDistance = distance(color, colorMagenta); - highp float cyanDistance = distance(color, colorCyan); - - mediump vec4 finalColor; - - highp float colorDistance = min(magentaDistance, cyanDistance); - colorDistance = min(colorDistance, whiteDistance); - colorDistance = min(colorDistance, blackDistance); - - if (colorDistance == blackDistance) { - finalColor = colorBlack; - } else if (colorDistance == whiteDistance) { - finalColor = colorWhite; - } else if (colorDistance == cyanDistance) { - finalColor = colorCyan; - } else { - finalColor = colorMagenta; - } - - gl_FragColor = finalColor; - } -); -#else -NSString *const kGPUImageCGAColorspaceFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0); - //highp vec4 colorDivisor = vec4(colorDepth); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor); - vec4 color = texture2D(inputImageTexture, samplePos ); - - //gl_FragColor = texture2D(inputImageTexture, samplePos ); - vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0); - vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0); - vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0); - vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0); - - vec4 endColor; - float blackDistance = distance(color, colorBlack); - float whiteDistance = distance(color, colorWhite); - float magentaDistance = distance(color, colorMagenta); - float cyanDistance = distance(color, colorCyan); - - vec4 finalColor; - - float colorDistance = min(magentaDistance, cyanDistance); - colorDistance = min(colorDistance, whiteDistance); - colorDistance = min(colorDistance, blackDistance); - - if (colorDistance == blackDistance) { - finalColor = colorBlack; - } else if (colorDistance == whiteDistance) { - finalColor = colorWhite; - } else if (colorDistance == cyanDistance) { - finalColor = colorCyan; - } else { - finalColor = colorMagenta; - } - - gl_FragColor = finalColor; - } -); -#endif - -@implementation GPUImageCGAColorspaceFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageCGAColorspaceFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m deleted file mode 100755 index 7327d532..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.m +++ /dev/null @@ -1,125 +0,0 @@ -#import "GPUImageCannyEdgeDetectionFilter.h" - -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" -#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" -#import "GPUImageWeakPixelInclusionFilter.h" -#import "GPUImageSingleComponentGaussianBlurFilter.h" - -@implementation GPUImageCannyEdgeDetectionFilter - -@synthesize upperThreshold; -@synthesize lowerThreshold; -@synthesize blurRadiusInPixels; -@synthesize blurTexelSpacingMultiplier; -@synthesize texelWidth; -@synthesize texelHeight; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: convert image to luminance - luminanceFilter = [[GPUImageGrayscaleFilter alloc] init]; - [self addFilter:luminanceFilter]; - - // Second pass: apply a variable Gaussian blur - blurFilter = [[GPUImageSingleComponentGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Third pass: run the Sobel edge detection, with calculated gradient directions, on this blurred image - edgeDetectionFilter = [[GPUImageDirectionalSobelEdgeDetectionFilter alloc] init]; - [self addFilter:edgeDetectionFilter]; - - // Fourth pass: apply non-maximum suppression - nonMaximumSuppressionFilter = [[GPUImageDirectionalNonMaximumSuppressionFilter alloc] init]; - [self addFilter:nonMaximumSuppressionFilter]; - - // Fifth pass: include weak pixels to complete edges - weakPixelInclusionFilter = [[GPUImageWeakPixelInclusionFilter alloc] init]; - [self addFilter:weakPixelInclusionFilter]; - - [luminanceFilter addTarget:blurFilter]; - [blurFilter addTarget:edgeDetectionFilter]; - [edgeDetectionFilter addTarget:nonMaximumSuppressionFilter]; - [nonMaximumSuppressionFilter addTarget:weakPixelInclusionFilter]; - - self.initialFilters = [NSArray arrayWithObject:luminanceFilter]; -// self.terminalFilter = nonMaximumSuppressionFilter; - self.terminalFilter = weakPixelInclusionFilter; - - self.blurRadiusInPixels = 2.0; - self.blurTexelSpacingMultiplier = 1.0; - self.upperThreshold = 0.4; - self.lowerThreshold = 0.1; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setBlurTexelSpacingMultiplier:(CGFloat)newValue; -{ - blurFilter.texelSpacingMultiplier = newValue; -} - -- (CGFloat)blurTexelSpacingMultiplier; -{ - return blurFilter.texelSpacingMultiplier; -} - -- (void)setTexelWidth:(CGFloat)newValue; -{ - edgeDetectionFilter.texelWidth = newValue; -} - -- (CGFloat)texelWidth; -{ - return edgeDetectionFilter.texelWidth; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - edgeDetectionFilter.texelHeight = newValue; -} - -- (CGFloat)texelHeight; -{ - return edgeDetectionFilter.texelHeight; -} - -- (void)setUpperThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.upperThreshold = newValue; -} - -- (CGFloat)upperThreshold; -{ - return nonMaximumSuppressionFilter.upperThreshold; -} - -- (void)setLowerThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.lowerThreshold = newValue; -} - -- (CGFloat)lowerThreshold; -{ - return nonMaximumSuppressionFilter.lowerThreshold; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m deleted file mode 100755 index 4e6b4661..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.m +++ /dev/null @@ -1,117 +0,0 @@ -#import "GPUImageChromaKeyBlendFilter.h" - -// Shader code based on Apple's CIChromaKeyFilter example: https://developer.apple.com/library/mac/#samplecode/CIChromaKeyFilter/Introduction/Intro.html - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageChromaKeyBlendFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - -// float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = mix(textureColor, textureColor2, blendValue); - } -); -#else -NSString *const kGPUImageChromaKeyBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - - // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = 1.0 - smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = mix(textureColor, textureColor2, blendValue); - } -); -#endif - -@implementation GPUImageChromaKeyBlendFilter - -@synthesize thresholdSensitivity = _thresholdSensitivity; -@synthesize smoothing = _smoothing; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageChromaKeyBlendFragmentShaderString])) - { - return nil; - } - - thresholdSensitivityUniform = [filterProgram uniformIndex:@"thresholdSensitivity"]; - smoothingUniform = [filterProgram uniformIndex:@"smoothing"]; - colorToReplaceUniform = [filterProgram uniformIndex:@"colorToReplace"]; - - self.thresholdSensitivity = 0.4; - self.smoothing = 0.1; - [self setColorToReplaceRed:0.0 green:1.0 blue:0.0]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 colorToReplace = {redComponent, greenComponent, blueComponent}; - - [self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram]; -} - -- (void)setThresholdSensitivity:(CGFloat)newValue; -{ - _thresholdSensitivity = newValue; - - [self setFloat:(GLfloat)_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram]; -} - -- (void)setSmoothing:(CGFloat)newValue; -{ - _smoothing = newValue; - - [self setFloat:(GLfloat)_smoothing forUniform:smoothingUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m deleted file mode 100644 index c70ef61d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "GPUImageChromaKeyFilter.h" - -// Shader code based on Apple's CIChromaKeyFilter example: https://developer.apple.com/library/mac/#samplecode/CIChromaKeyFilter/Introduction/Intro.html - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageChromaKeyFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying highp vec2 textureCoordinate; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - - // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = vec4(textureColor.rgb, textureColor.a * blendValue); - } -); -#else -NSString *const kGPUImageChromaKeyFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform float thresholdSensitivity; - uniform float smoothing; - uniform vec3 colorToReplace; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b; - float maskCr = 0.7132 * (colorToReplace.r - maskY); - float maskCb = 0.5647 * (colorToReplace.b - maskY); - - float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b; - float Cr = 0.7132 * (textureColor.r - Y); - float Cb = 0.5647 * (textureColor.b - Y); - - // float blendValue = 1.0 - smoothstep(thresholdSensitivity - smoothing, thresholdSensitivity , abs(Cr - maskCr) + abs(Cb - maskCb)); - float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb))); - gl_FragColor = vec4(textureColor.rgb, textureColor.a * blendValue); - } - ); -#endif - -@implementation GPUImageChromaKeyFilter - -@synthesize thresholdSensitivity = _thresholdSensitivity; -@synthesize smoothing = _smoothing; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageChromaKeyFragmentShaderString])) - { - return nil; - } - - thresholdSensitivityUniform = [filterProgram uniformIndex:@"thresholdSensitivity"]; - smoothingUniform = [filterProgram uniformIndex:@"smoothing"]; - colorToReplaceUniform = [filterProgram uniformIndex:@"colorToReplace"]; - - self.thresholdSensitivity = 0.4; - self.smoothing = 0.1; - [self setColorToReplaceRed:0.0 green:1.0 blue:0.0]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColorToReplaceRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 colorToReplace = {redComponent, greenComponent, blueComponent}; - - [self setVec3:colorToReplace forUniform:colorToReplaceUniform program:filterProgram]; -} - -- (void)setThresholdSensitivity:(CGFloat)newValue; -{ - _thresholdSensitivity = newValue; - - [self setFloat:(GLfloat)_thresholdSensitivity forUniform:thresholdSensitivityUniform program:filterProgram]; -} - -- (void)setSmoothing:(CGFloat)newValue; -{ - _smoothing = newValue; - - [self setFloat:(GLfloat)_smoothing forUniform:smoothingUniform program:filterProgram]; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m deleted file mode 100644 index 01e9b29b..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.m +++ /dev/null @@ -1,57 +0,0 @@ -#import "GPUImageClosingFilter.h" -#import "GPUImageErosionFilter.h" -#import "GPUImageDilationFilter.h" - -@implementation GPUImageClosingFilter - -@synthesize verticalTexelSpacing = _verticalTexelSpacing; -@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: dilation - dilationFilter = [[GPUImageDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - // Second pass: erosion - erosionFilter = [[GPUImageErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - [dilationFilter addTarget:erosionFilter]; - - self.initialFilters = [NSArray arrayWithObjects:dilationFilter, nil]; - self.terminalFilter = erosionFilter; - - return self; -} - -- (void)setVerticalTexelSpacing:(CGFloat)newValue; -{ - _verticalTexelSpacing = newValue; - erosionFilter.verticalTexelSpacing = newValue; - dilationFilter.verticalTexelSpacing = newValue; -} - -- (void)setHorizontalTexelSpacing:(CGFloat)newValue; -{ - _horizontalTexelSpacing = newValue; - erosionFilter.horizontalTexelSpacing = newValue; - dilationFilter.horizontalTexelSpacing = newValue; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m deleted file mode 100644 index ced1cb8e..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "GPUImageColorBlendFilter.h" - -/** - * Color blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(overlayColor.rgb, lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageColorBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(overlayColor.rgb, lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - - -@implementation GPUImageColorBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m deleted file mode 100755 index 5d6ff60d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageColorBurnBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorBurnBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - mediump vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - (whiteColor - textureColor) / textureColor2; - } -); -#else -NSString *const kGPUImageColorBurnBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - (whiteColor - textureColor) / textureColor2; - } -); -#endif - -@implementation GPUImageColorBurnBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorBurnBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m deleted file mode 100644 index 35534c20..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.m +++ /dev/null @@ -1,159 +0,0 @@ -#import "GPUImageFilter.h" - -// Color Conversion Constants (YUV to RGB) including adjustment from 16-235/16-240 (video range) - -// BT.601, which is the standard for SDTV. -GLfloat kColorConversion601Default[] = { - 1.164, 1.164, 1.164, - 0.0, -0.392, 2.017, - 1.596, -0.813, 0.0, -}; - -// BT.601 full range (ref: http://www.equasys.de/colorconversion.html) -GLfloat kColorConversion601FullRangeDefault[] = { - 1.0, 1.0, 1.0, - 0.0, -0.343, 1.765, - 1.4, -0.711, 0.0, -}; - -// BT.709, which is the standard for HDTV. -GLfloat kColorConversion709Default[] = { - 1.164, 1.164, 1.164, - 0.0, -0.213, 2.112, - 1.793, -0.533, 0.0, -}; - - -GLfloat *kColorConversion601 = kColorConversion601Default; -GLfloat *kColorConversion601FullRange = kColorConversion601FullRangeDefault; -GLfloat *kColorConversion709 = kColorConversion709Default; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - uniform mediump mat3 colorConversionMatrix; - - void main() - { - mediump vec3 yuv; - lowp vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r; - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).rg - vec2(0.5, 0.5); - rgb = colorConversionMatrix * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); -#else -NSString *const kGPUImageYUVVideoRangeConversionForRGFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - - void main() - { - vec3 yuv; - vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r; - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).rg - vec2(0.5, 0.5); - - // BT.601, which is the standard for SDTV is provided as a reference - /* - rgb = mat3( 1, 1, 1, - 0, -.39465, 2.03211, - 1.13983, -.58060, 0) * yuv; - */ - - // Using BT.709 which is the standard for HDTV - rgb = mat3( 1, 1, 1, - 0, -.21482, 2.12798, - 1.28033, -.38059, 0) * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); -#endif - -NSString *const kGPUImageYUVFullRangeConversionForLAFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - uniform mediump mat3 colorConversionMatrix; - - void main() - { - mediump vec3 yuv; - lowp vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r; - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); - rgb = colorConversionMatrix * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - uniform mediump mat3 colorConversionMatrix; - - void main() - { - mediump vec3 yuv; - lowp vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r - (16.0/255.0); - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); - rgb = colorConversionMatrix * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); -#else -NSString *const kGPUImageYUVVideoRangeConversionForLAFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D luminanceTexture; - uniform sampler2D chrominanceTexture; - - void main() - { - vec3 yuv; - vec3 rgb; - - yuv.x = texture2D(luminanceTexture, textureCoordinate).r; - yuv.yz = texture2D(chrominanceTexture, textureCoordinate).ra - vec2(0.5, 0.5); - - // BT.601, which is the standard for SDTV is provided as a reference - /* - rgb = mat3( 1, 1, 1, - 0, -.39465, 2.03211, - 1.13983, -.58060, 0) * yuv; - */ - - // Using BT.709 which is the standard for HDTV - rgb = mat3( 1, 1, 1, - 0, -.21482, 2.12798, - 1.28033, -.38059, 0) * yuv; - - gl_FragColor = vec4(rgb, 1); - } - ); -#endif - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m deleted file mode 100755 index 6a38827c..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.m +++ /dev/null @@ -1,75 +0,0 @@ -#import "GPUImageColorDodgeBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING -( - - precision mediump float; - - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a); - vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); - - vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; - vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); - - vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct; - - vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct); - - gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0); - } -); -#else -NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - vec3 baseOverlayAlphaProduct = vec3(overlay.a * base.a); - vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); - - vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; - vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); - - vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct; - - vec3 colorChoice = step((overlay.rgb * base.a + base.rgb * overlay.a), baseOverlayAlphaProduct); - - gl_FragColor = vec4(mix(firstBlendColor, secondBlendColor, colorChoice), 1.0); - } -); -#endif - -@implementation GPUImageColorDodgeBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorDodgeBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m deleted file mode 100755 index 0a8798b1..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.m +++ /dev/null @@ -1,46 +0,0 @@ -#import "GPUImageColorInvertFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w); - } -); -#else -NSString *const kGPUImageInvertFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4((1.0 - textureColor.rgb), textureColor.w); - } - ); -#endif - -@implementation GPUImageColorInvertFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageInvertFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m deleted file mode 100644 index d51aedf6..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.m +++ /dev/null @@ -1,159 +0,0 @@ -#import "GPUImageColorLocalBinaryPatternFilter.h" - -// This is based on "Accelerating image recognition on mobile devices using GPGPU" by Miguel Bordallo Lopez, Henri Nykanen, Jari Hannuksela, Olli Silven and Markku Vehvilainen -// http://www.ee.oulu.fi/~jhannuks/publications/SPIE2011a.pdf - -// Right pixel is the most significant bit, traveling clockwise to get to the upper right, which is the least significant -// If the external pixel is greater than or equal to the center, set to 1, otherwise 0 -// -// 2 1 0 -// 3 7 -// 4 5 6 - -// 01101101 -// 76543210 - -@implementation GPUImageColorLocalBinaryPatternFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorLocalBinaryPatternFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; - lowp vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - lowp vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - lowp vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - lowp vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - lowp vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - lowp vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - lowp vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - lowp vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - lowp float redByteTally = 1.0 / 255.0 * step(centerColor.r, topRightColor.r); - redByteTally += 2.0 / 255.0 * step(centerColor.r, topColor.r); - redByteTally += 4.0 / 255.0 * step(centerColor.r, topLeftColor.r); - redByteTally += 8.0 / 255.0 * step(centerColor.r, leftColor.r); - redByteTally += 16.0 / 255.0 * step(centerColor.r, bottomLeftColor.r); - redByteTally += 32.0 / 255.0 * step(centerColor.r, bottomColor.r); - redByteTally += 64.0 / 255.0 * step(centerColor.r, bottomRightColor.r); - redByteTally += 128.0 / 255.0 * step(centerColor.r, rightColor.r); - - lowp float blueByteTally = 1.0 / 255.0 * step(centerColor.b, topRightColor.b); - blueByteTally += 2.0 / 255.0 * step(centerColor.b, topColor.b); - blueByteTally += 4.0 / 255.0 * step(centerColor.b, topLeftColor.b); - blueByteTally += 8.0 / 255.0 * step(centerColor.b, leftColor.b); - blueByteTally += 16.0 / 255.0 * step(centerColor.b, bottomLeftColor.b); - blueByteTally += 32.0 / 255.0 * step(centerColor.b, bottomColor.b); - blueByteTally += 64.0 / 255.0 * step(centerColor.b, bottomRightColor.b); - blueByteTally += 128.0 / 255.0 * step(centerColor.b, rightColor.b); - - lowp float greenByteTally = 1.0 / 255.0 * step(centerColor.g, topRightColor.g); - greenByteTally += 2.0 / 255.0 * step(centerColor.g, topColor.g); - greenByteTally += 4.0 / 255.0 * step(centerColor.g, topLeftColor.g); - greenByteTally += 8.0 / 255.0 * step(centerColor.g, leftColor.g); - greenByteTally += 16.0 / 255.0 * step(centerColor.g, bottomLeftColor.g); - greenByteTally += 32.0 / 255.0 * step(centerColor.g, bottomColor.g); - greenByteTally += 64.0 / 255.0 * step(centerColor.g, bottomRightColor.g); - greenByteTally += 128.0 / 255.0 * step(centerColor.g, rightColor.g); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(redByteTally, blueByteTally, greenByteTally, 1.0); - } -); -#else -NSString *const kGPUImageColorLocalBinaryPatternFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; - vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - float redByteTally = 1.0 / 255.0 * step(centerColor.r, topRightColor.r); - redByteTally += 2.0 / 255.0 * step(centerColor.r, topColor.r); - redByteTally += 4.0 / 255.0 * step(centerColor.r, topLeftColor.r); - redByteTally += 8.0 / 255.0 * step(centerColor.r, leftColor.r); - redByteTally += 16.0 / 255.0 * step(centerColor.r, bottomLeftColor.r); - redByteTally += 32.0 / 255.0 * step(centerColor.r, bottomColor.r); - redByteTally += 64.0 / 255.0 * step(centerColor.r, bottomRightColor.r); - redByteTally += 128.0 / 255.0 * step(centerColor.r, rightColor.r); - - float blueByteTally = 1.0 / 255.0 * step(centerColor.b, topRightColor.b); - blueByteTally += 2.0 / 255.0 * step(centerColor.b, topColor.b); - blueByteTally += 4.0 / 255.0 * step(centerColor.b, topLeftColor.b); - blueByteTally += 8.0 / 255.0 * step(centerColor.b, leftColor.b); - blueByteTally += 16.0 / 255.0 * step(centerColor.b, bottomLeftColor.b); - blueByteTally += 32.0 / 255.0 * step(centerColor.b, bottomColor.b); - blueByteTally += 64.0 / 255.0 * step(centerColor.b, bottomRightColor.b); - blueByteTally += 128.0 / 255.0 * step(centerColor.b, rightColor.b); - - float greenByteTally = 1.0 / 255.0 * step(centerColor.g, topRightColor.g); - greenByteTally += 2.0 / 255.0 * step(centerColor.g, topColor.g); - greenByteTally += 4.0 / 255.0 * step(centerColor.g, topLeftColor.g); - greenByteTally += 8.0 / 255.0 * step(centerColor.g, leftColor.g); - greenByteTally += 16.0 / 255.0 * step(centerColor.g, bottomLeftColor.g); - greenByteTally += 32.0 / 255.0 * step(centerColor.g, bottomColor.g); - greenByteTally += 64.0 / 255.0 * step(centerColor.g, bottomRightColor.g); - greenByteTally += 128.0 / 255.0 * step(centerColor.g, rightColor.g); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(redByteTally, blueByteTally, greenByteTally, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorLocalBinaryPatternFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m deleted file mode 100755 index 0e21c7e8..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.m +++ /dev/null @@ -1,87 +0,0 @@ -#import "GPUImageColorMatrixFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorMatrixFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform lowp mat4 colorMatrix; - uniform lowp float intensity; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 outputColor = textureColor * colorMatrix; - - gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor); - } -); -#else -NSString *const kGPUImageColorMatrixFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform mat4 colorMatrix; - uniform float intensity; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 outputColor = textureColor * colorMatrix; - - gl_FragColor = (intensity * outputColor) + ((1.0 - intensity) * textureColor); - } -); -#endif - -@implementation GPUImageColorMatrixFilter - -@synthesize intensity = _intensity; -@synthesize colorMatrix = _colorMatrix; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageColorMatrixFragmentShaderString])) - { - return nil; - } - - colorMatrixUniform = [filterProgram uniformIndex:@"colorMatrix"]; - intensityUniform = [filterProgram uniformIndex:@"intensity"]; - - self.intensity = 1.f; - self.colorMatrix = (GPUMatrix4x4){ - {1.f, 0.f, 0.f, 0.f}, - {0.f, 1.f, 0.f, 0.f}, - {0.f, 0.f, 1.f, 0.f}, - {0.f, 0.f, 0.f, 1.f} - }; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setIntensity:(CGFloat)newIntensity; -{ - _intensity = newIntensity; - - [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; -} - -- (void)setColorMatrix:(GPUMatrix4x4)newColorMatrix; -{ - _colorMatrix = newColorMatrix; - - [self setMatrix4f:_colorMatrix forUniform:colorMatrixUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m deleted file mode 100644 index 1a087ca8..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.m +++ /dev/null @@ -1,139 +0,0 @@ -#import "GPUImageColorPackingFilter.h" - -NSString *const kGPUImageColorPackingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - gl_Position = position; - - upperLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, -texelHeight); - upperRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, -texelHeight); - lowerLeftInputTextureCoordinate = inputTextureCoordinate.xy + vec2(-texelWidth, texelHeight); - lowerRightInputTextureCoordinate = inputTextureCoordinate.xy + vec2(texelWidth, texelHeight); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColorPackingFragmentShaderString = SHADER_STRING -( - precision lowp float; - - uniform sampler2D inputImageTexture; - - uniform mediump mat3 convolutionMatrix; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - void main() - { - float upperLeftIntensity = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - float upperRightIntensity = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - float lowerLeftIntensity = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - float lowerRightIntensity = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - gl_FragColor = vec4(upperLeftIntensity, upperRightIntensity, lowerLeftIntensity, lowerRightIntensity); - } -); -#else -NSString *const kGPUImageColorPackingFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - uniform mat3 convolutionMatrix; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - float upperLeftIntensity = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - float upperRightIntensity = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - float lowerLeftIntensity = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - float lowerRightIntensity = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - gl_FragColor = vec4(upperLeftIntensity, upperRightIntensity, lowerLeftIntensity, lowerRightIntensity); - } -); -#endif - -@implementation GPUImageColorPackingFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColorPackingVertexShaderString fragmentShaderFromString:kGPUImageColorPackingFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - texelWidth = 0.5 / inputTextureSize.width; - texelHeight = 0.5 / inputTextureSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - glUniform1f(texelWidthUniform, texelWidth); - glUniform1f(texelHeightUniform, texelHeight); - }); -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (CGSize)sizeOfFBO; -{ - CGSize outputSize = [self maximumOutputSize]; - if ( (CGSizeEqualToSize(outputSize, CGSizeZero)) || (inputTextureSize.width < outputSize.width) ) - { - CGSize quarterSize; - quarterSize.width = inputTextureSize.width / 2.0; - quarterSize.height = inputTextureSize.height / 2.0; - return quarterSize; - } - else - { - return outputSize; - } -} - -#pragma mark - -#pragma mark Rendering - -- (CGSize)outputFrameSize; -{ - CGSize quarterSize; - quarterSize.width = inputTextureSize.width / 2.0; - quarterSize.height = inputTextureSize.height / 2.0; - return quarterSize; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m deleted file mode 100755 index f4e3684c..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.m +++ /dev/null @@ -1,48 +0,0 @@ -#import "GPUImageColourFASTFeatureDetector.h" -#import "GPUImageColourFASTSamplingOperation.h" -#import "GPUImageBoxBlurFilter.h" - -@implementation GPUImageColourFASTFeatureDetector - -@synthesize blurRadiusInPixels; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageBoxBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - colourFASTSamplingOperation = [[GPUImageColourFASTSamplingOperation alloc] init]; - [self addFilter:colourFASTSamplingOperation]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:colourFASTSamplingOperation atTextureLocation:1]; - - self.initialFilters = [NSArray arrayWithObjects:blurFilter, colourFASTSamplingOperation, nil]; - self.terminalFilter = colourFASTSamplingOperation; - - self.blurRadiusInPixels = 3.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m b/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m deleted file mode 100755 index fc67f470..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.m +++ /dev/null @@ -1,204 +0,0 @@ -#import "GPUImageColourFASTSamplingOperation.h" - -NSString *const kGPUImageColourFASTSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 textureCoordinate; - varying vec2 pointATextureCoordinate; - varying vec2 pointBTextureCoordinate; - varying vec2 pointCTextureCoordinate; - varying vec2 pointDTextureCoordinate; - varying vec2 pointETextureCoordinate; - varying vec2 pointFTextureCoordinate; - varying vec2 pointGTextureCoordinate; - varying vec2 pointHTextureCoordinate; - - void main() - { - gl_Position = position; - - float tripleTexelWidth = 3.0 * texelWidth; - float tripleTexelHeight = 3.0 * texelHeight; - - textureCoordinate = inputTextureCoordinate.xy; - - pointATextureCoordinate = vec2(textureCoordinate.x + tripleTexelWidth, textureCoordinate.y + texelHeight); - pointBTextureCoordinate = vec2(textureCoordinate.x + texelWidth, textureCoordinate.y + tripleTexelHeight); - pointCTextureCoordinate = vec2(textureCoordinate.x - texelWidth, textureCoordinate.y + tripleTexelHeight); - pointDTextureCoordinate = vec2(textureCoordinate.x - tripleTexelWidth, textureCoordinate.y + texelHeight); - pointETextureCoordinate = vec2(textureCoordinate.x - tripleTexelWidth, textureCoordinate.y - texelHeight); - pointFTextureCoordinate = vec2(textureCoordinate.x - texelWidth, textureCoordinate.y - tripleTexelHeight); - pointGTextureCoordinate = vec2(textureCoordinate.x + texelWidth, textureCoordinate.y - tripleTexelHeight); - pointHTextureCoordinate = vec2(textureCoordinate.x + tripleTexelWidth, textureCoordinate.y - texelHeight); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageColourFASTSamplingFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 pointATextureCoordinate; - varying vec2 pointBTextureCoordinate; - varying vec2 pointCTextureCoordinate; - varying vec2 pointDTextureCoordinate; - varying vec2 pointETextureCoordinate; - varying vec2 pointFTextureCoordinate; - varying vec2 pointGTextureCoordinate; - varying vec2 pointHTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - const float PITwo = 6.2832; - const float PI = 3.1416; - void main() - { - vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; - - vec3 pointAColor = texture2D(inputImageTexture, pointATextureCoordinate).rgb; - vec3 pointBColor = texture2D(inputImageTexture, pointBTextureCoordinate).rgb; - vec3 pointCColor = texture2D(inputImageTexture, pointCTextureCoordinate).rgb; - vec3 pointDColor = texture2D(inputImageTexture, pointDTextureCoordinate).rgb; - vec3 pointEColor = texture2D(inputImageTexture, pointETextureCoordinate).rgb; - vec3 pointFColor = texture2D(inputImageTexture, pointFTextureCoordinate).rgb; - vec3 pointGColor = texture2D(inputImageTexture, pointGTextureCoordinate).rgb; - vec3 pointHColor = texture2D(inputImageTexture, pointHTextureCoordinate).rgb; - - vec3 colorComparison = ((pointAColor + pointBColor + pointCColor + pointDColor + pointEColor + pointFColor + pointGColor + pointHColor) * 0.125) - centerColor; - - // Direction calculation drawn from Appendix B of Seth Hall's Ph.D. thesis - - vec3 dirX = (pointAColor*0.94868) + (pointBColor*0.316227) - (pointCColor*0.316227) - (pointDColor*0.94868) - (pointEColor*0.94868) - (pointFColor*0.316227) + (pointGColor*0.316227) + (pointHColor*0.94868); - vec3 dirY = (pointAColor*0.316227) + (pointBColor*0.94868) + (pointCColor*0.94868) + (pointDColor*0.316227) - (pointEColor*0.316227) - (pointFColor*0.94868) - (pointGColor*0.94868) - (pointHColor*0.316227); - vec3 absoluteDifference = abs(colorComparison); - float componentLength = length(colorComparison); - float avgX = dot(absoluteDifference, dirX) / componentLength; - float avgY = dot(absoluteDifference, dirY) / componentLength; - float angle = atan(avgY, avgX); - - vec3 normalizedColorComparison = (colorComparison + 1.0) * 0.5; - - gl_FragColor = vec4(normalizedColorComparison, (angle+PI)/PITwo); - } -); -#else -NSString *const kGPUImageColourFASTSamplingFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 pointATextureCoordinate; - varying vec2 pointBTextureCoordinate; - varying vec2 pointCTextureCoordinate; - varying vec2 pointDTextureCoordinate; - varying vec2 pointETextureCoordinate; - varying vec2 pointFTextureCoordinate; - varying vec2 pointGTextureCoordinate; - varying vec2 pointHTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - const float PITwo = 6.2832; - const float PI = 3.1416; - void main() - { - vec3 centerColor = texture2D(inputImageTexture, textureCoordinate).rgb; - - vec3 pointAColor = texture2D(inputImageTexture, pointATextureCoordinate).rgb; - vec3 pointBColor = texture2D(inputImageTexture, pointBTextureCoordinate).rgb; - vec3 pointCColor = texture2D(inputImageTexture, pointCTextureCoordinate).rgb; - vec3 pointDColor = texture2D(inputImageTexture, pointDTextureCoordinate).rgb; - vec3 pointEColor = texture2D(inputImageTexture, pointETextureCoordinate).rgb; - vec3 pointFColor = texture2D(inputImageTexture, pointFTextureCoordinate).rgb; - vec3 pointGColor = texture2D(inputImageTexture, pointGTextureCoordinate).rgb; - vec3 pointHColor = texture2D(inputImageTexture, pointHTextureCoordinate).rgb; - - vec3 colorComparison = ((pointAColor + pointBColor + pointCColor + pointDColor + pointEColor + pointFColor + pointGColor + pointHColor) * 0.125) - centerColor; - - // Direction calculation drawn from Appendix B of Seth Hall's Ph.D. thesis - - vec3 dirX = (pointAColor*0.94868) + (pointBColor*0.316227) - (pointCColor*0.316227) - (pointDColor*0.94868) - (pointEColor*0.94868) - (pointFColor*0.316227) + (pointGColor*0.316227) + (pointHColor*0.94868); - vec3 dirY = (pointAColor*0.316227) + (pointBColor*0.94868) + (pointCColor*0.94868) + (pointDColor*0.316227) - (pointEColor*0.316227) - (pointFColor*0.94868) - (pointGColor*0.94868) - (pointHColor*0.316227); - vec3 absoluteDifference = abs(colorComparison); - float componentLength = length(colorComparison); - float avgX = dot(absoluteDifference, dirX) / componentLength; - float avgY = dot(absoluteDifference, dirY) / componentLength; - float angle = atan(avgY, avgX); - - vec3 normalizedColorComparison = (colorComparison + 1.0) * 0.5; - - gl_FragColor = vec4(normalizedColorComparison, (angle+PI)/PITwo); - } -); -#endif - - -@implementation GPUImageColourFASTSamplingOperation - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColourFASTSamplingVertexShaderString fragmentShaderFromString:kGPUImageColourFASTSamplingFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(texelWidthUniform, _texelHeight); - glUniform1f(texelHeightUniform, _texelWidth); - } - else - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m deleted file mode 100755 index 5ed1e22f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageContrastFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageContrastFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float contrast; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); - } -); -#else -NSString *const kGPUImageContrastFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float contrast; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w); - } - ); -#endif - -@implementation GPUImageContrastFilter - -@synthesize contrast = _contrast; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageContrastFragmentShaderString])) - { - return nil; - } - - contrastUniform = [filterProgram uniformIndex:@"contrast"]; - self.contrast = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setContrast:(CGFloat)newValue; -{ - _contrast = newValue; - - [self setFloat:_contrast forUniform:contrastUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m deleted file mode 100755 index 22e33c17..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.m +++ /dev/null @@ -1,274 +0,0 @@ -#import "GPUImageCropFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCropFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); -#else -NSString *const kGPUImageCropFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); -#endif - -@interface GPUImageCropFilter () - -- (void)calculateCropTextureCoordinates; - -@end - -@interface GPUImageCropFilter() -{ - CGSize originallySuppliedInputSize; -} - -@end - -@implementation GPUImageCropFilter - -@synthesize cropRegion = _cropRegion; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithCropRegion:(CGRect)newCropRegion; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageCropFragmentShaderString])) - { - return nil; - } - - self.cropRegion = newCropRegion; - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithCropRegion:CGRectMake(0.0, 0.0, 1.0, 1.0)])) - { - return nil; - } - - return self; -} - -#pragma mark - -#pragma mark Rendering - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (self.preventRendering) - { - return; - } - -// if (overrideInputSize) -// { -// if (CGSizeEqualToSize(forcedMaximumSize, CGSizeZero)) -// { -// return; -// } -// else -// { -// CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(newSize, CGRectMake(0.0, 0.0, forcedMaximumSize.width, forcedMaximumSize.height)); -// inputTextureSize = insetRect.size; -// return; -// } -// } - - CGSize rotatedSize = [self rotatedSize:newSize forIndex:textureIndex]; - originallySuppliedInputSize = rotatedSize; - - CGSize scaledSize; - scaledSize.width = rotatedSize.width * _cropRegion.size.width; - scaledSize.height = rotatedSize.height * _cropRegion.size.height; - - - if (CGSizeEqualToSize(scaledSize, CGSizeZero)) - { - inputTextureSize = scaledSize; - } - else if (!CGSizeEqualToSize(inputTextureSize, scaledSize)) - { - inputTextureSize = scaledSize; - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)calculateCropTextureCoordinates; -{ - CGFloat minX = _cropRegion.origin.x; - CGFloat minY = _cropRegion.origin.y; - CGFloat maxX = CGRectGetMaxX(_cropRegion); - CGFloat maxY = CGRectGetMaxY(_cropRegion); - - switch(inputRotation) - { - case kGPUImageNoRotation: // Works - { - cropTextureCoordinates[0] = minX; // 0,0 - cropTextureCoordinates[1] = minY; - - cropTextureCoordinates[2] = maxX; // 1,0 - cropTextureCoordinates[3] = minY; - - cropTextureCoordinates[4] = minX; // 0,1 - cropTextureCoordinates[5] = maxY; - - cropTextureCoordinates[6] = maxX; // 1,1 - cropTextureCoordinates[7] = maxY; - }; break; - case kGPUImageRotateLeft: // Fixed - { - cropTextureCoordinates[0] = maxY; // 1,0 - cropTextureCoordinates[1] = 1.0 - maxX; - - cropTextureCoordinates[2] = maxY; // 1,1 - cropTextureCoordinates[3] = 1.0 - minX; - - cropTextureCoordinates[4] = minY; // 0,0 - cropTextureCoordinates[5] = 1.0 - maxX; - - cropTextureCoordinates[6] = minY; // 0,1 - cropTextureCoordinates[7] = 1.0 - minX; - }; break; - case kGPUImageRotateRight: // Fixed - { - cropTextureCoordinates[0] = minY; // 0,1 - cropTextureCoordinates[1] = 1.0 - minX; - - cropTextureCoordinates[2] = minY; // 0,0 - cropTextureCoordinates[3] = 1.0 - maxX; - - cropTextureCoordinates[4] = maxY; // 1,1 - cropTextureCoordinates[5] = 1.0 - minX; - - cropTextureCoordinates[6] = maxY; // 1,0 - cropTextureCoordinates[7] = 1.0 - maxX; - }; break; - case kGPUImageFlipVertical: // Works for me - { - cropTextureCoordinates[0] = minX; // 0,1 - cropTextureCoordinates[1] = maxY; - - cropTextureCoordinates[2] = maxX; // 1,1 - cropTextureCoordinates[3] = maxY; - - cropTextureCoordinates[4] = minX; // 0,0 - cropTextureCoordinates[5] = minY; - - cropTextureCoordinates[6] = maxX; // 1,0 - cropTextureCoordinates[7] = minY; - }; break; - case kGPUImageFlipHorizonal: // Works for me - { - cropTextureCoordinates[0] = maxX; // 1,0 - cropTextureCoordinates[1] = minY; - - cropTextureCoordinates[2] = minX; // 0,0 - cropTextureCoordinates[3] = minY; - - cropTextureCoordinates[4] = maxX; // 1,1 - cropTextureCoordinates[5] = maxY; - - cropTextureCoordinates[6] = minX; // 0,1 - cropTextureCoordinates[7] = maxY; - }; break; - case kGPUImageRotate180: // Fixed - { - cropTextureCoordinates[0] = maxX; // 1,1 - cropTextureCoordinates[1] = maxY; - - cropTextureCoordinates[2] = minX; // 0,1 - cropTextureCoordinates[3] = maxY; - - cropTextureCoordinates[4] = maxX; // 1,0 - cropTextureCoordinates[5] = minY; - - cropTextureCoordinates[6] = minX; // 0,0 - cropTextureCoordinates[7] = minY; - }; break; - case kGPUImageRotateRightFlipVertical: // Fixed - { - cropTextureCoordinates[0] = minY; // 0,0 - cropTextureCoordinates[1] = 1.0 - maxX; - - cropTextureCoordinates[2] = minY; // 0,1 - cropTextureCoordinates[3] = 1.0 - minX; - - cropTextureCoordinates[4] = maxY; // 1,0 - cropTextureCoordinates[5] = 1.0 - maxX; - - cropTextureCoordinates[6] = maxY; // 1,1 - cropTextureCoordinates[7] = 1.0 - minX; - }; break; - case kGPUImageRotateRightFlipHorizontal: // Fixed - { - cropTextureCoordinates[0] = maxY; // 1,1 - cropTextureCoordinates[1] = 1.0 - minX; - - cropTextureCoordinates[2] = maxY; // 1,0 - cropTextureCoordinates[3] = 1.0 - maxX; - - cropTextureCoordinates[4] = minY; // 0,1 - cropTextureCoordinates[5] = 1.0 - minX; - - cropTextureCoordinates[6] = minY; // 0,0 - cropTextureCoordinates[7] = 1.0 - maxX; - }; break; - } -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - static const GLfloat cropSquareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:cropSquareVertices textureCoordinates:cropTextureCoordinates]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setCropRegion:(CGRect)newValue; -{ - NSParameterAssert(newValue.origin.x >= 0 && newValue.origin.x <= 1 && - newValue.origin.y >= 0 && newValue.origin.y <= 1 && - newValue.size.width >= 0 && newValue.size.width <= 1 && - newValue.size.height >= 0 && newValue.size.height <= 1); - - _cropRegion = newValue; - [self calculateCropTextureCoordinates]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self calculateCropTextureCoordinates]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m deleted file mode 100644 index 9e2a29a2..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.m +++ /dev/null @@ -1,139 +0,0 @@ -#import "GPUImageCrosshairGenerator.h" - -NSString *const kGPUImageCrosshairVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - uniform float crosshairWidth; - - varying vec2 centerLocation; - varying float pointSpacing; - - void main() - { - gl_Position = vec4(((position.xy * 2.0) - 1.0), 0.0, 1.0); - gl_PointSize = crosshairWidth + 1.0; - pointSpacing = 1.0 / crosshairWidth; - centerLocation = vec2(pointSpacing * ceil(crosshairWidth / 2.0), pointSpacing * ceil(crosshairWidth / 2.0)); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCrosshairFragmentShaderString = SHADER_STRING -( - uniform lowp vec3 crosshairColor; - - varying highp vec2 centerLocation; - varying highp float pointSpacing; - - void main() - { - lowp vec2 distanceFromCenter = abs(centerLocation - gl_PointCoord.xy); - lowp float axisTest = step(pointSpacing, gl_PointCoord.y) * step(distanceFromCenter.x, 0.09) + step(pointSpacing, gl_PointCoord.x) * step(distanceFromCenter.y, 0.09); - - gl_FragColor = vec4(crosshairColor * axisTest, axisTest); -// gl_FragColor = vec4(distanceFromCenterInX, distanceFromCenterInY, 0.0, 1.0); - } -); -#else -NSString *const kGPUImageCrosshairFragmentShaderString = SHADER_STRING -( - GPUImageEscapedHashIdentifier(version 120)\n - - uniform vec3 crosshairColor; - - varying vec2 centerLocation; - varying float pointSpacing; - - void main() - { - vec2 distanceFromCenter = abs(centerLocation - gl_PointCoord.xy); - float axisTest = step(pointSpacing, gl_PointCoord.y) * step(distanceFromCenter.x, 0.09) + step(pointSpacing, gl_PointCoord.x) * step(distanceFromCenter.y, 0.09); - - gl_FragColor = vec4(crosshairColor * axisTest, axisTest); - // gl_FragColor = vec4(distanceFromCenterInX, distanceFromCenterInY, 0.0, 1.0); - } -); -#endif - -@implementation GPUImageCrosshairGenerator - -@synthesize crosshairWidth = _crosshairWidth; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageCrosshairVertexShaderString fragmentShaderFromString:kGPUImageCrosshairFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - crosshairWidthUniform = [filterProgram uniformIndex:@"crosshairWidth"]; - crosshairColorUniform = [filterProgram uniformIndex:@"crosshairColor"]; - - self.crosshairWidth = 5.0; - [self setCrosshairColorRed:0.0 green:1.0 blue:0.0]; - }); - - return self; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderCrosshairsFromArray:(GLfloat *)crosshairCoordinates count:(NSUInteger)numberOfCrosshairs frameTime:(CMTime)frameTime; -{ - if (self.preventRendering) - { - return; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#else - glEnable(GL_POINT_SPRITE); - glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); -#endif - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, crosshairCoordinates); - - glDrawArrays(GL_POINTS, 0, (GLsizei)numberOfCrosshairs); - - [self informTargetsAboutNewFrameAtTime:frameTime]; - }); -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Prevent rendering of the frame by normal means -} - -#pragma mark - -#pragma mark Accessors - -- (void)setCrosshairWidth:(CGFloat)newValue; -{ - _crosshairWidth = newValue; - - [self setFloat:_crosshairWidth forUniform:crosshairWidthUniform program:filterProgram]; -} - -- (void)setCrosshairColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 crosshairColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:crosshairColor forUniform:crosshairColorUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m deleted file mode 100755 index 51dbd592..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.m +++ /dev/null @@ -1,163 +0,0 @@ -#import "GPUImageCrosshatchFilter.h" - -// Shader code based on http://machinesdontcare.wordpress.com/ - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageCrosshatchFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float crossHatchSpacing; - uniform highp float lineWidth; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W); - - lowp vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); - if (luminance < 1.00) - { - if (mod(textureCoordinate.x + textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.75) - { - if (mod(textureCoordinate.x - textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.50) - { - if (mod(textureCoordinate.x + textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.3) - { - if (mod(textureCoordinate.x - textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - - gl_FragColor = colorToDisplay; - } -); -#else -NSString *const kGPUImageCrosshatchFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float crossHatchSpacing; - uniform float lineWidth; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float luminance = dot(texture2D(inputImageTexture, textureCoordinate).rgb, W); - - vec4 colorToDisplay = vec4(1.0, 1.0, 1.0, 1.0); - if (luminance < 1.00) - { - if (mod(textureCoordinate.x + textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.75) - { - if (mod(textureCoordinate.x - textureCoordinate.y, crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.50) - { - if (mod(textureCoordinate.x + textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - if (luminance < 0.3) - { - if (mod(textureCoordinate.x - textureCoordinate.y - (crossHatchSpacing / 2.0), crossHatchSpacing) <= lineWidth) - { - colorToDisplay = vec4(0.0, 0.0, 0.0, 1.0); - } - } - - gl_FragColor = colorToDisplay; - } -); -#endif - -@implementation GPUImageCrosshatchFilter - -@synthesize crossHatchSpacing = _crossHatchSpacing; -@synthesize lineWidth = _lineWidth; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageCrosshatchFragmentShaderString])) - { - return nil; - } - - crossHatchSpacingUniform = [filterProgram uniformIndex:@"crossHatchSpacing"]; - lineWidthUniform = [filterProgram uniformIndex:@"lineWidth"]; - - self.crossHatchSpacing = 0.03; - self.lineWidth = 0.003; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setCrossHatchSpacing:(CGFloat)newValue; -{ - CGFloat singlePixelSpacing; - if (inputTextureSize.width != 0.0) - { - singlePixelSpacing = 1.0 / inputTextureSize.width; - } - else - { - singlePixelSpacing = 1.0 / 2048.0; - } - - if (newValue < singlePixelSpacing) - { - _crossHatchSpacing = singlePixelSpacing; - } - else - { - _crossHatchSpacing = newValue; - } - - [self setFloat:_crossHatchSpacing forUniform:crossHatchSpacingUniform program:filterProgram]; -} - -- (void)setLineWidth:(CGFloat)newValue; -{ - _lineWidth = newValue; - - [self setFloat:_lineWidth forUniform:lineWidthUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m deleted file mode 100644 index 85ec9e8a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageDarkenBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDarkenBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0); - } -); -#else -NSString *const kGPUImageDarkenBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0); - } - ); -#endif - -@implementation GPUImageDarkenBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDarkenBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m deleted file mode 100755 index 01bf09b2..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.m +++ /dev/null @@ -1,50 +0,0 @@ -#import "GPUImageDifferenceBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDifferenceBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - gl_FragColor = vec4(abs(textureColor2.rgb - textureColor.rgb), textureColor.a); - } -); -#else -NSString *const kGPUImageDifferenceBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - gl_FragColor = vec4(abs(textureColor2.rgb - textureColor.rgb), textureColor.a); - } -); -#endif - -@implementation GPUImageDifferenceBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDifferenceBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m deleted file mode 100644 index df065185..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.m +++ /dev/null @@ -1,431 +0,0 @@ -#import "GPUImageDilationFilter.h" - -@implementation GPUImageDilationFilter - -NSString *const kGPUImageDilationRadiusOneVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - } -); - -NSString *const kGPUImageDilationRadiusTwoVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); - twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); - } -); - -NSString *const kGPUImageDilationRadiusThreeVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); - twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); - threeStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 3.0); - threeStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 3.0); - } -); - -NSString *const kGPUImageDilationRadiusFourVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 offset = vec2(texelWidthOffset, texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepNegativeTextureCoordinate = inputTextureCoordinate - offset; - oneStepPositiveTextureCoordinate = inputTextureCoordinate + offset; - twoStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 2.0); - twoStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 2.0); - threeStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 3.0); - threeStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 3.0); - fourStepsNegativeTextureCoordinate = inputTextureCoordinate - (offset * 4.0); - fourStepsPositiveTextureCoordinate = inputTextureCoordinate + (offset * 4.0); - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDilationRadiusOneFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusFourFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - lowp float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - maxValue = max(maxValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); -#else -NSString *const kGPUImageDilationRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); - -NSString *const kGPUImageDilationRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - float maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - maxValue = max(maxValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(maxValue), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)dilationRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (dilationRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageDilationRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m deleted file mode 100644 index b442f3aa..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.m +++ /dev/null @@ -1,141 +0,0 @@ -#import "GPUImageDirectionalNonMaximumSuppressionFilter.h" - -@implementation GPUImageDirectionalNonMaximumSuppressionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float texelWidth; - uniform highp float texelHeight; - uniform mediump float upperThreshold; - uniform mediump float lowerThreshold; - - void main() - { - vec3 currentGradientAndDirection = texture2D(inputImageTexture, textureCoordinate).rgb; - vec2 gradientDirection = ((currentGradientAndDirection.gb * 2.0) - 1.0) * vec2(texelWidth, texelHeight); - - float firstSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate + gradientDirection).r; - float secondSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate - gradientDirection).r; - - float multiplier = step(firstSampledGradientMagnitude, currentGradientAndDirection.r); - multiplier = multiplier * step(secondSampledGradientMagnitude, currentGradientAndDirection.r); - - float thresholdCompliance = smoothstep(lowerThreshold, upperThreshold, currentGradientAndDirection.r); - multiplier = multiplier * thresholdCompliance; - - gl_FragColor = vec4(multiplier, multiplier, multiplier, 1.0); - } -); -#else -NSString *const kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float texelWidth; - uniform float texelHeight; - uniform float upperThreshold; - uniform float lowerThreshold; - - void main() - { - vec3 currentGradientAndDirection = texture2D(inputImageTexture, textureCoordinate).rgb; - vec2 gradientDirection = ((currentGradientAndDirection.gb * 2.0) - 1.0) * vec2(texelWidth, texelHeight); - - float firstSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate + gradientDirection).r; - float secondSampledGradientMagnitude = texture2D(inputImageTexture, textureCoordinate - gradientDirection).r; - - float multiplier = step(firstSampledGradientMagnitude, currentGradientAndDirection.r); - multiplier = multiplier * step(secondSampledGradientMagnitude, currentGradientAndDirection.r); - - float thresholdCompliance = smoothstep(lowerThreshold, upperThreshold, currentGradientAndDirection.r); - multiplier = multiplier * thresholdCompliance; - - gl_FragColor = vec4(multiplier, multiplier, multiplier, 1.0); - } -); -#endif - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; -@synthesize upperThreshold = _upperThreshold; -@synthesize lowerThreshold = _lowerThreshold; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDirectionalNonmaximumSuppressionFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - upperThresholdUniform = [filterProgram uniformIndex:@"upperThreshold"]; - lowerThresholdUniform = [filterProgram uniformIndex:@"lowerThreshold"]; - - self.upperThreshold = 0.5; - self.lowerThreshold = 0.1; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -- (void)setLowerThreshold:(CGFloat)newValue; -{ - _lowerThreshold = newValue; - - [self setFloat:_lowerThreshold forUniform:lowerThresholdUniform program:filterProgram]; -} - -- (void)setUpperThreshold:(CGFloat)newValue; -{ - _upperThreshold = newValue; - - [self setFloat:_upperThreshold forUniform:upperThresholdUniform program:filterProgram]; -} - - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m deleted file mode 100644 index a3575e3a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.m +++ /dev/null @@ -1,103 +0,0 @@ -#import "GPUImageDirectionalSobelEdgeDetectionFilter.h" - -@implementation GPUImageDirectionalSobelEdgeDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - vec2 gradientDirection; - gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - - float gradientMagnitude = length(gradientDirection); - vec2 normalizedDirection = normalize(gradientDirection); - normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away - normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0 - - gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0); - } -); -#else -NSString *const kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - vec2 gradientDirection; - gradientDirection.x = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - gradientDirection.y = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - - float gradientMagnitude = length(gradientDirection); - vec2 normalizedDirection = normalize(gradientDirection); - normalizedDirection = sign(normalizedDirection) * floor(abs(normalizedDirection) + 0.617316); // Offset by 1-sin(pi/8) to set to 0 if near axis, 1 if away - normalizedDirection = (normalizedDirection + 1.0) * 0.5; // Place -1.0 - 1.0 within 0 - 1.0 - - gl_FragColor = vec4(gradientMagnitude, normalizedDirection.x, normalizedDirection.y, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDirectionalSobelEdgeDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m deleted file mode 100755 index b4a5609f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.m +++ /dev/null @@ -1,72 +0,0 @@ -#import "GPUImageDissolveBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDissolveBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform lowp float mixturePercent; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = mix(textureColor, textureColor2, mixturePercent); - } -); -#else -NSString *const kGPUImageDissolveBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform float mixturePercent; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = mix(textureColor, textureColor2, mixturePercent); - } -); -#endif - -@implementation GPUImageDissolveBlendFilter - -@synthesize mix = _mix; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDissolveBlendFragmentShaderString])) - { - return nil; - } - - mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; - self.mix = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setMix:(CGFloat)newValue; -{ - _mix = newValue; - - [self setFloat:_mix forUniform:mixUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m deleted file mode 100644 index 63ee071e..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "GPUImageDivideBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageDivideBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - mediump float ra; - if (overlay.a == 0.0 || ((base.r / overlay.r) > (base.a / overlay.a))) - ra = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - else - ra = (base.r * overlay.a * overlay.a) / overlay.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - - - mediump float ga; - if (overlay.a == 0.0 || ((base.g / overlay.g) > (base.a / overlay.a))) - ga = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - else - ga = (base.g * overlay.a * overlay.a) / overlay.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - - - mediump float ba; - if (overlay.a == 0.0 || ((base.b / overlay.b) > (base.a / overlay.a))) - ba = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - else - ba = (base.b * overlay.a * overlay.a) / overlay.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - - mediump float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(ra, ga, ba, a); - } -); -#else -NSString *const kGPUImageDivideBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float ra; - if (overlay.a == 0.0 || ((base.r / overlay.r) > (base.a / overlay.a))) - ra = overlay.a * base.a + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - else - ra = (base.r * overlay.a * overlay.a) / overlay.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - - - float ga; - if (overlay.a == 0.0 || ((base.g / overlay.g) > (base.a / overlay.a))) - ga = overlay.a * base.a + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - else - ga = (base.g * overlay.a * overlay.a) / overlay.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - - - float ba; - if (overlay.a == 0.0 || ((base.b / overlay.b) > (base.a / overlay.a))) - ba = overlay.a * base.a + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - else - ba = (base.b * overlay.a * overlay.a) / overlay.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - - float a = overlay.a + base.a - overlay.a * base.a; - - gl_FragColor = vec4(ra, ga, ba, a); - } - ); -#endif - -@implementation GPUImageDivideBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageDivideBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m deleted file mode 100755 index 6ba48cd4..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.m +++ /dev/null @@ -1,49 +0,0 @@ -#import "GPUImageEmbossFilter.h" - -@implementation GPUImageEmbossFilter - -@synthesize intensity = _intensity; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.intensity = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setIntensity:(CGFloat)newValue; -{ -// [(GPUImage3x3ConvolutionFilter *)filter setConvolutionMatrix:(GPUMatrix3x3){ -// {-2.0f, -1.0f, 0.0f}, -// {-1.0f, 1.0f, 1.0f}, -// { 0.0f, 1.0f, 2.0f} -// }]; - - _intensity = newValue; - - GPUMatrix3x3 newConvolutionMatrix; - newConvolutionMatrix.one.one = _intensity * (-2.0); - newConvolutionMatrix.one.two = -_intensity; - newConvolutionMatrix.one.three = 0.0f; - - newConvolutionMatrix.two.one = -_intensity; - newConvolutionMatrix.two.two = 1.0; - newConvolutionMatrix.two.three = _intensity; - - newConvolutionMatrix.three.one = 0.0f; - newConvolutionMatrix.three.two = _intensity; - newConvolutionMatrix.three.three = _intensity * 2.0; - - self.convolutionKernel = newConvolutionMatrix; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m deleted file mode 100644 index 05f4f28d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.m +++ /dev/null @@ -1,312 +0,0 @@ -#import "GPUImageErosionFilter.h" -#import "GPUImageDilationFilter.h" - -@implementation GPUImageErosionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageErosionRadiusOneFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusFourFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - lowp float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - minValue = min(minValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); -#else -NSString *const kGPUImageErosionRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); - -NSString *const kGPUImageErosionRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate).r; - float oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate).r; - float oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate).r; - float twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate).r; - float twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate).r; - float threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate).r; - float threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate).r; - float fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate).r; - float fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate).r; - - float minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - minValue = min(minValue, fourStepsNegativeIntensity); - - gl_FragColor = vec4(vec3(minValue), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)dilationRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (dilationRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageErosionRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m deleted file mode 100755 index c364159f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.m +++ /dev/null @@ -1,56 +0,0 @@ -#import "GPUImageExclusionBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageExclusionBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - // Dca = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa) - - gl_FragColor = vec4((overlay.rgb * base.a + base.rgb * overlay.a - 2.0 * overlay.rgb * base.rgb) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a); - } -); -#else -NSString *const kGPUImageExclusionBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - // Dca = (Sca.Da + Dca.Sa - 2.Sca.Dca) + Sca.(1 - Da) + Dca.(1 - Sa) - - gl_FragColor = vec4((overlay.rgb * base.a + base.rgb * overlay.a - 2.0 * overlay.rgb * base.rgb) + overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a), base.a); - } - ); -#endif - -@implementation GPUImageExclusionBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageExclusionBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m deleted file mode 100755 index d5ee2c9f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageExposureFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageExposureFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float exposure; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); - } -); -#else -NSString *const kGPUImageExposureFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float exposure; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb * pow(2.0, exposure), textureColor.w); - } -); -#endif - -@implementation GPUImageExposureFilter - -@synthesize exposure = _exposure; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageExposureFragmentShaderString])) - { - return nil; - } - - exposureUniform = [filterProgram uniformIndex:@"exposure"]; - self.exposure = 0.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setExposure:(CGFloat)newValue; -{ - _exposure = newValue; - - [self setFloat:_exposure forUniform:exposureUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m deleted file mode 100644 index b04a24aa..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.m +++ /dev/null @@ -1,89 +0,0 @@ -#import "GPUImageFASTCornerDetectionFilter.h" - -#import "GPUImageGrayscaleFilter.h" -#import "GPUImage3x3TextureSamplingFilter.h" -#import "GPUImageNonMaximumSuppressionFilter.h" - -// 14 total texture coordinates from vertex shader for non-dependent reads -// 3 texture coordinates for dependent reads, then - -NSString *const kGPUImageFASTDetectorFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D lookupTable; - - void main() - { - lowp float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - lowp float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - lowp float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - lowp float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); - byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); - byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); - byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); - byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); - byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); - byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); - byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); - } - ); - - -@implementation GPUImageFASTCornerDetectionFilter - -- (id)init; -{ - if (!(self = [self initWithFASTDetectorVariant:kGPUImageFAST12ContiguousNonMaximumSuppressed])) - { - return nil; - } - - return self; -} - -- (id)initWithFASTDetectorVariant:(GPUImageFASTDetectorType)detectorType; -{ - if (!(self = [super init])) - { - return nil; - } - -// [derivativeFilter addTarget:blurFilter]; -// [blurFilter addTarget:harrisCornerDetectionFilter]; -// [harrisCornerDetectionFilter addTarget:nonMaximumSuppressionFilter]; - // [simpleThresholdFilter addTarget:colorPackingFilter]; - -// self.initialFilters = [NSArray arrayWithObjects:derivativeFilter, nil]; - // self.terminalFilter = colorPackingFilter; -// self.terminalFilter = nonMaximumSuppressionFilter; - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m deleted file mode 100644 index f514dbab..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.m +++ /dev/null @@ -1,101 +0,0 @@ -#import "GPUImageFalseColorFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUFalseColorFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 firstColor; - uniform vec3 secondColor; - - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - gl_FragColor = vec4( mix(firstColor.rgb, secondColor.rgb, luminance), textureColor.a); - } -); -#else -NSString *const kGPUFalseColorFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 firstColor; - uniform vec3 secondColor; - - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - gl_FragColor = vec4( mix(firstColor.rgb, secondColor.rgb, luminance), textureColor.a); - } -); -#endif - - -@implementation GPUImageFalseColorFilter - -@synthesize secondColor = _secondColor; -@synthesize firstColor = _firstColor; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUFalseColorFragmentShaderString])) - { - return nil; - } - - firstColorUniform = [filterProgram uniformIndex:@"firstColor"]; - secondColorUniform = [filterProgram uniformIndex:@"secondColor"]; - - self.firstColor = (GPUVector4){0.0f, 0.0f, 0.5f, 1.0f}; - self.secondColor = (GPUVector4){1.0f, 0.0f, 0.0f, 1.0f}; - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setFirstColor:(GPUVector4)newValue; -{ - _firstColor = newValue; - - [self setFirstColorRed:_firstColor.one green:_firstColor.two blue:_firstColor.three]; -} - -- (void)setSecondColor:(GPUVector4)newValue; -{ - _secondColor = newValue; - - [self setSecondColorRed:_secondColor.one green:_secondColor.two blue:_secondColor.three]; -} - -- (void)setFirstColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 firstColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:firstColor forUniform:firstColorUniform program:filterProgram]; -} - -- (void)setSecondColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 secondColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:secondColor forUniform:secondColorUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFilter.m deleted file mode 100755 index 406d707a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFilter.m +++ /dev/null @@ -1,753 +0,0 @@ -#import "GPUImageFilter.h" -#import "GPUImagePicture.h" -#import - -// Hardcode the vertex shader for standard filters, but this can be overridden -NSString *const kGPUImageVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - varying vec2 textureCoordinate; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - -NSString *const kGPUImagePassthroughFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); - -#else - -NSString *const kGPUImagePassthroughFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } -); -#endif - - -@implementation GPUImageFilter - -@synthesize preventRendering = _preventRendering; -@synthesize currentlyReceivingMonochromeInput; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super init])) - { - return nil; - } - - uniformStateRestorationBlocks = [NSMutableDictionary dictionaryWithCapacity:10]; - _preventRendering = NO; - currentlyReceivingMonochromeInput = NO; - inputRotation = kGPUImageNoRotation; - backgroundColorRed = 0.0; - backgroundColorGreen = 0.0; - backgroundColorBlue = 0.0; - backgroundColorAlpha = 0.0; - imageCaptureSemaphore = dispatch_semaphore_create(0); - dispatch_semaphore_signal(imageCaptureSemaphore); - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - filterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString]; - - if (!filterProgram.initialized) - { - [self initializeAttributes]; - - if (![filterProgram link]) - { - NSString *progLog = [filterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [filterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [filterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - filterPositionAttribute = [filterProgram attributeIndex:@"position"]; - filterTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate"]; - filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glEnableVertexAttribArray(filterPositionAttribute); - glEnableVertexAttribArray(filterTextureCoordinateAttribute); - }); - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromFile:(NSString *)fragmentShaderFilename; -{ - NSString *fragmentShaderPathname = [[NSBundle mainBundle] pathForResource:fragmentShaderFilename ofType:@"fsh"]; - NSString *fragmentShaderString = [NSString stringWithContentsOfFile:fragmentShaderPathname encoding:NSUTF8StringEncoding error:nil]; - - if (!(self = [self initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (void)initializeAttributes; -{ - [filterProgram addAttribute:@"position"]; - [filterProgram addAttribute:@"inputTextureCoordinate"]; - - // Override this, calling back to this super method, in order to add new attributes to your vertex shader -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - // This is where you can override to provide some custom setup, if your filter has a size-dependent element -} - -- (void)dealloc -{ -#if !OS_OBJECT_USE_OBJC - if (imageCaptureSemaphore != NULL) - { - dispatch_release(imageCaptureSemaphore); - } -#endif - -} - -#pragma mark - -#pragma mark Still image processing - -- (void)useNextFrameForImageCapture; -{ - usingNextFrameForImageCapture = YES; - - // Set the semaphore high, if it isn't already - if (dispatch_semaphore_wait(imageCaptureSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } -} - -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput -{ - // Give it three seconds to process, then abort if they forgot to set up the image capture properly - double timeoutForImageCapture = 3.0; - dispatch_time_t convertedTimeout = dispatch_time(DISPATCH_TIME_NOW, timeoutForImageCapture * NSEC_PER_SEC); - - if (dispatch_semaphore_wait(imageCaptureSemaphore, convertedTimeout) != 0) - { - return NULL; - } - - GPUImageFramebuffer* framebuffer = [self framebufferForOutput]; - - usingNextFrameForImageCapture = NO; - dispatch_semaphore_signal(imageCaptureSemaphore); - - CGImageRef image = [framebuffer newCGImageFromFramebufferContents]; - return image; -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (CGSize)sizeOfFBO; -{ - CGSize outputSize = [self maximumOutputSize]; - if ( (CGSizeEqualToSize(outputSize, CGSizeZero)) || (inputTextureSize.width < outputSize.width) ) - { - return inputTextureSize; - } - else - { - return outputSize; - } -} - -#pragma mark - -#pragma mark Rendering - -+ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; -{ - static const GLfloat noRotationTextureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat rotateLeftTextureCoordinates[] = { - 1.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 0.0f, 1.0f, - }; - - static const GLfloat rotateRightTextureCoordinates[] = { - 0.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 1.0f, 0.0f, - }; - - static const GLfloat verticalFlipTextureCoordinates[] = { - 0.0f, 1.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 0.0f, - }; - - static const GLfloat horizontalFlipTextureCoordinates[] = { - 1.0f, 0.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 1.0f, - }; - - static const GLfloat rotateRightVerticalFlipTextureCoordinates[] = { - 0.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 1.0f, 1.0f, - }; - - static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = { - 1.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotate180TextureCoordinates[] = { - 1.0f, 1.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 0.0f, - }; - - switch(rotationMode) - { - case kGPUImageNoRotation: return noRotationTextureCoordinates; - case kGPUImageRotateLeft: return rotateLeftTextureCoordinates; - case kGPUImageRotateRight: return rotateRightTextureCoordinates; - case kGPUImageFlipVertical: return verticalFlipTextureCoordinates; - case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates; - case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates; - case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates; - case kGPUImageRotate180: return rotate180TextureCoordinates; - } -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; -{ - if (self.frameProcessingCompletionBlock != NULL) - { - self.frameProcessingCompletionBlock(self, frameTime); - } - - // Get all targets the framebuffer so they can grab a lock on it - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [self setInputFramebufferForTarget:currentTarget atIndex:textureIndex]; - [currentTarget setInputSize:[self outputFrameSize] atIndex:textureIndex]; - } - } - - // Release our hold so it can return to the cache immediately upon processing - [[self framebufferForOutput] unlock]; - - if (usingNextFrameForImageCapture) - { -// usingNextFrameForImageCapture = NO; - } - else - { - [self removeOutputFramebuffer]; - } - - // Trigger processing last, so that our unlock comes first in serial execution, avoiding the need for a callback - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndex]; - } - } -} - -- (CGSize)outputFrameSize; -{ - return inputTextureSize; -} - -#pragma mark - -#pragma mark Input parameters - -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ - backgroundColorRed = redComponent; - backgroundColorGreen = greenComponent; - backgroundColorBlue = blueComponent; - backgroundColorAlpha = alphaComponent; -} - -- (void)setInteger:(GLint)newInteger forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setInteger:newInteger forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloat:(GLfloat)newFloat forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setFloat:newFloat forUniform:uniformIndex program:filterProgram]; -} - -- (void)setSize:(CGSize)newSize forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setSize:newSize forUniform:uniformIndex program:filterProgram]; -} - -- (void)setPoint:(CGPoint)newPoint forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setPoint:newPoint forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloatVec3:(GPUVector3)newVec3 forUniformName:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setVec3:newVec3 forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloatVec4:(GPUVector4)newVec4 forUniform:(NSString *)uniformName; -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - [self setVec4:newVec4 forUniform:uniformIndex program:filterProgram]; -} - -- (void)setFloatArray:(GLfloat *)array length:(GLsizei)count forUniform:(NSString*)uniformName -{ - GLint uniformIndex = [filterProgram uniformIndex:uniformName]; - - [self setFloatArray:array length:count forUniform:uniformIndex program:filterProgram]; -} - -- (void)setMatrix3f:(GPUMatrix3x3)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniformMatrix3fv(uniform, 1, GL_FALSE, (GLfloat *)&matrix); - }]; - }); -} - -- (void)setMatrix4f:(GPUMatrix4x4)matrix forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniformMatrix4fv(uniform, 1, GL_FALSE, (GLfloat *)&matrix); - }]; - }); -} - -- (void)setFloat:(GLfloat)floatValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform1f(uniform, floatValue); - }]; - }); -} - -- (void)setPoint:(CGPoint)pointValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - GLfloat positionArray[2]; - positionArray[0] = pointValue.x; - positionArray[1] = pointValue.y; - - glUniform2fv(uniform, 1, positionArray); - }]; - }); -} - -- (void)setSize:(CGSize)sizeValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - GLfloat sizeArray[2]; - sizeArray[0] = sizeValue.width; - sizeArray[1] = sizeValue.height; - - glUniform2fv(uniform, 1, sizeArray); - }]; - }); -} - -- (void)setVec3:(GPUVector3)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform3fv(uniform, 1, (GLfloat *)&vectorValue); - }]; - }); -} - -- (void)setVec4:(GPUVector4)vectorValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform4fv(uniform, 1, (GLfloat *)&vectorValue); - }]; - }); -} - -- (void)setFloatArray:(GLfloat *)arrayValue length:(GLsizei)arrayLength forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - // Make a copy of the data, so it doesn't get overwritten before async call executes - NSData* arrayData = [NSData dataWithBytes:arrayValue length:arrayLength * sizeof(arrayValue[0])]; - - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform1fv(uniform, arrayLength, [arrayData bytes]); - }]; - }); -} - -- (void)setInteger:(GLint)intValue forUniform:(GLint)uniform program:(GLProgram *)shaderProgram; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:shaderProgram]; - - [self setAndExecuteUniformStateCallbackAtIndex:uniform forProgram:shaderProgram toBlock:^{ - glUniform1i(uniform, intValue); - }]; - }); -} - -- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; -{ - [uniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; - uniformStateBlock(); -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ - dispatch_block_t currentBlock = obj; - currentBlock(); - }]; -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - static const GLfloat imageVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - firstInputFramebuffer = newInputFramebuffer; - [firstInputFramebuffer lock]; -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (CGPoint)rotatedPoint:(CGPoint)pointToRotate forRotation:(GPUImageRotationMode)rotation; -{ - CGPoint rotatedPoint; - switch(rotation) - { - case kGPUImageNoRotation: return pointToRotate; break; - case kGPUImageFlipHorizonal: - { - rotatedPoint.x = 1.0 - pointToRotate.x; - rotatedPoint.y = pointToRotate.y; - }; break; - case kGPUImageFlipVertical: - { - rotatedPoint.x = pointToRotate.x; - rotatedPoint.y = 1.0 - pointToRotate.y; - }; break; - case kGPUImageRotateLeft: - { - rotatedPoint.x = 1.0 - pointToRotate.y; - rotatedPoint.y = pointToRotate.x; - }; break; - case kGPUImageRotateRight: - { - rotatedPoint.x = pointToRotate.y; - rotatedPoint.y = 1.0 - pointToRotate.x; - }; break; - case kGPUImageRotateRightFlipVertical: - { - rotatedPoint.x = pointToRotate.y; - rotatedPoint.y = pointToRotate.x; - }; break; - case kGPUImageRotateRightFlipHorizontal: - { - rotatedPoint.x = 1.0 - pointToRotate.y; - rotatedPoint.y = 1.0 - pointToRotate.x; - }; break; - case kGPUImageRotate180: - { - rotatedPoint.x = 1.0 - pointToRotate.x; - rotatedPoint.y = 1.0 - pointToRotate.y; - }; break; - } - - return rotatedPoint; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (self.preventRendering) - { - return; - } - - if (overrideInputSize) - { - if (CGSizeEqualToSize(forcedMaximumSize, CGSizeZero)) - { - } - else - { - CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(newSize, CGRectMake(0.0, 0.0, forcedMaximumSize.width, forcedMaximumSize.height)); - inputTextureSize = insetRect.size; - } - } - else - { - CGSize rotatedSize = [self rotatedSize:newSize forIndex:textureIndex]; - - if (CGSizeEqualToSize(rotatedSize, CGSizeZero)) - { - inputTextureSize = rotatedSize; - } - else if (!CGSizeEqualToSize(inputTextureSize, rotatedSize)) - { - inputTextureSize = rotatedSize; - } - } - - [self setupFilterForSize:[self sizeOfFBO]]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - if (CGSizeEqualToSize(frameSize, CGSizeZero)) - { - overrideInputSize = NO; - } - else - { - overrideInputSize = YES; - inputTextureSize = frameSize; - forcedMaximumSize = CGSizeZero; - } -} - -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; -{ - if (CGSizeEqualToSize(frameSize, CGSizeZero)) - { - overrideInputSize = NO; - inputTextureSize = CGSizeZero; - forcedMaximumSize = CGSizeZero; - } - else - { - overrideInputSize = YES; - forcedMaximumSize = frameSize; - } -} - -- (CGSize)maximumOutputSize; -{ - // I'm temporarily disabling adjustments for smaller output sizes until I figure out how to make this work better - return CGSizeZero; - - /* - if (CGSizeEqualToSize(cachedMaximumOutputSize, CGSizeZero)) - { - for (id currentTarget in targets) - { - if ([currentTarget maximumOutputSize].width > cachedMaximumOutputSize.width) - { - cachedMaximumOutputSize = [currentTarget maximumOutputSize]; - } - } - } - - return cachedMaximumOutputSize; - */ -} - -- (void)endProcessing -{ - if (!isEndProcessing) - { - isEndProcessing = YES; - - for (id currentTarget in targets) - { - [currentTarget endProcessing]; - } - } -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m b/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m deleted file mode 100755 index 72cfe5e7..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.m +++ /dev/null @@ -1,208 +0,0 @@ -#import "GPUImageFilterGroup.h" -#import "GPUImagePicture.h" - -@implementation GPUImageFilterGroup - -@synthesize terminalFilter = _terminalFilter; -@synthesize initialFilters = _initialFilters; -@synthesize inputFilterToIgnoreForUpdates = _inputFilterToIgnoreForUpdates; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - filters = [[NSMutableArray alloc] init]; - - return self; -} - -#pragma mark - -#pragma mark Filter management - -- (void)addFilter:(GPUImageOutput *)newFilter; -{ - [filters addObject:newFilter]; -} - -- (GPUImageOutput *)filterAtIndex:(NSUInteger)filterIndex; -{ - return [filters objectAtIndex:filterIndex]; -} - -- (NSUInteger)filterCount; -{ - return [filters count]; -} - -#pragma mark - -#pragma mark Still image processing - -- (void)useNextFrameForImageCapture; -{ - [self.terminalFilter useNextFrameForImageCapture]; -} - -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; -{ - return [self.terminalFilter newCGImageFromCurrentlyProcessedOutput]; -} - -#pragma mark - -#pragma mark GPUImageOutput overrides - -- (void)setTargetToIgnoreForUpdates:(id)targetToIgnoreForUpdates; -{ - [_terminalFilter setTargetToIgnoreForUpdates:targetToIgnoreForUpdates]; -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [_terminalFilter addTarget:newTarget atTextureLocation:textureLocation]; -} - -- (void)removeTarget:(id)targetToRemove; -{ - [_terminalFilter removeTarget:targetToRemove]; -} - -- (void)removeAllTargets; -{ - [_terminalFilter removeAllTargets]; -} - -- (NSArray *)targets; -{ - return [_terminalFilter targets]; -} - -- (void)setFrameProcessingCompletionBlock:(void (^)(GPUImageOutput *, CMTime))frameProcessingCompletionBlock; -{ - [_terminalFilter setFrameProcessingCompletionBlock:frameProcessingCompletionBlock]; -} - -- (void (^)(GPUImageOutput *, CMTime))frameProcessingCompletionBlock; -{ - return [_terminalFilter frameProcessingCompletionBlock]; -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - if (currentFilter != self.inputFilterToIgnoreForUpdates) - { - [currentFilter newFrameReadyAtTime:frameTime atIndex:textureIndex]; - } - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setInputFramebuffer:newInputFramebuffer atIndex:textureIndex]; - } -} - -- (NSInteger)nextAvailableTextureIndex; -{ -// if ([_initialFilters count] > 0) -// { -// return [[_initialFilters objectAtIndex:0] nextAvailableTextureIndex]; -// } - - return 0; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setInputSize:newSize atIndex:textureIndex]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setInputRotation:newInputRotation atIndex:(NSInteger)textureIndex]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - for (GPUImageOutput *currentFilter in filters) - { - [currentFilter forceProcessingAtSize:frameSize]; - } -} - -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; -{ - for (GPUImageOutput *currentFilter in filters) - { - [currentFilter forceProcessingAtSizeRespectingAspectRatio:frameSize]; - } -} - -- (CGSize)maximumOutputSize; -{ - // I'm temporarily disabling adjustments for smaller output sizes until I figure out how to make this work better - return CGSizeZero; - - /* - if (CGSizeEqualToSize(cachedMaximumOutputSize, CGSizeZero)) - { - for (id currentTarget in _initialFilters) - { - if ([currentTarget maximumOutputSize].width > cachedMaximumOutputSize.width) - { - cachedMaximumOutputSize = [currentTarget maximumOutputSize]; - } - } - } - - return cachedMaximumOutputSize; - */ -} - -- (void)endProcessing; -{ - if (!isEndProcessing) - { - isEndProcessing = YES; - - for (id currentTarget in _initialFilters) - { - [currentTarget endProcessing]; - } - } -} - -- (BOOL)wantsMonochromeInput; -{ - BOOL allInputsWantMonochromeInput = YES; - for (GPUImageOutput *currentFilter in _initialFilters) - { - allInputsWantMonochromeInput = allInputsWantMonochromeInput && [currentFilter wantsMonochromeInput]; - } - - return allInputsWantMonochromeInput; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - for (GPUImageOutput *currentFilter in _initialFilters) - { - [currentFilter setCurrentlyReceivingMonochromeInput:newValue]; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m b/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m deleted file mode 100755 index 4fbe5ebb..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.m +++ /dev/null @@ -1,218 +0,0 @@ -#import "GPUImageFilterPipeline.h" - -@interface GPUImageFilterPipeline () - -- (BOOL)_parseConfiguration:(NSDictionary *)configuration; - -- (void)_refreshFilters; - -@end - -@implementation GPUImageFilterPipeline - -@synthesize filters = _filters, input = _input, output = _output; - -#pragma mark Config file init - -- (id)initWithConfiguration:(NSDictionary *)configuration input:(GPUImageOutput *)input output:(id )output { - self = [super init]; - if (self) { - self.input = input; - self.output = output; - if (![self _parseConfiguration:configuration]) { - NSLog(@"Sorry, a parsing error occurred."); - abort(); - } - [self _refreshFilters]; - } - return self; -} - -- (id)initWithConfigurationFile:(NSURL *)configuration input:(GPUImageOutput *)input output:(id )output { - return [self initWithConfiguration:[NSDictionary dictionaryWithContentsOfURL:configuration] input:input output:output]; -} - -- (BOOL)_parseConfiguration:(NSDictionary *)configuration { - NSArray *filters = [configuration objectForKey:@"Filters"]; - if (!filters) { - return NO; - } - - NSError *regexError = nil; - NSRegularExpression *parsingRegex = [NSRegularExpression regularExpressionWithPattern:@"(float|CGPoint|NSString)\\((.*?)(?:,\\s*(.*?))*\\)" - options:0 - error:®exError]; - - // It's faster to put them into an array and then pass it to the filters property than it is to call [self addFilter:] every time - NSMutableArray *orderedFilters = [NSMutableArray arrayWithCapacity:[filters count]]; - for (NSDictionary *filter in filters) { - NSString *filterName = [filter objectForKey:@"FilterName"]; - Class theClass = NSClassFromString(filterName); - GPUImageOutput *genericFilter = [[theClass alloc] init]; - // Set up the properties - NSDictionary *filterAttributes; - if ((filterAttributes = [filter objectForKey:@"Attributes"])) { - for (NSString *propertyKey in filterAttributes) { - // Set up the selector - SEL theSelector = NSSelectorFromString(propertyKey); - NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[theClass instanceMethodSignatureForSelector:theSelector]]; - [inv setSelector:theSelector]; - [inv setTarget:genericFilter]; - - // check selector given with parameter - if ([propertyKey hasSuffix:@":"]) { - - stringValue = nil; - - // Then parse the arguments - NSMutableArray *parsedArray; - if ([[filterAttributes objectForKey:propertyKey] isKindOfClass:[NSArray class]]) { - NSArray *array = [filterAttributes objectForKey:propertyKey]; - parsedArray = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString *string in array) { - NSTextCheckingResult *parse = [parsingRegex firstMatchInString:string - options:0 - range:NSMakeRange(0, [string length])]; - - NSString *modifier = [string substringWithRange:[parse rangeAtIndex:1]]; - if ([modifier isEqualToString:@"float"]) { - // Float modifier, one argument - CGFloat value = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - [parsedArray addObject:[NSNumber numberWithFloat:value]]; - [inv setArgument:&value atIndex:2]; - } else if ([modifier isEqualToString:@"CGPoint"]) { - // CGPoint modifier, two float arguments - CGFloat x = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - CGFloat y = [[string substringWithRange:[parse rangeAtIndex:3]] floatValue]; - CGPoint value = CGPointMake(x, y); - [parsedArray addObject:[NSValue valueWithCGPoint:value]]; - } else if ([modifier isEqualToString:@"NSString"]) { - // NSString modifier, one string argument - stringValue = [[string substringWithRange:[parse rangeAtIndex:2]] copy]; - [inv setArgument:&stringValue atIndex:2]; - - } else { - return NO; - } - } - [inv setArgument:&parsedArray atIndex:2]; - } else { - NSString *string = [filterAttributes objectForKey:propertyKey]; - NSTextCheckingResult *parse = [parsingRegex firstMatchInString:string - options:0 - range:NSMakeRange(0, [string length])]; - - NSString *modifier = [string substringWithRange:[parse rangeAtIndex:1]]; - if ([modifier isEqualToString:@"float"]) { - // Float modifier, one argument - CGFloat value = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - [inv setArgument:&value atIndex:2]; - } else if ([modifier isEqualToString:@"CGPoint"]) { - // CGPoint modifier, two float arguments - CGFloat x = [[string substringWithRange:[parse rangeAtIndex:2]] floatValue]; - CGFloat y = [[string substringWithRange:[parse rangeAtIndex:3]] floatValue]; - CGPoint value = CGPointMake(x, y); - [inv setArgument:&value atIndex:2]; - } else if ([modifier isEqualToString:@"NSString"]) { - // NSString modifier, one string argument - stringValue = [[string substringWithRange:[parse rangeAtIndex:2]] copy]; - [inv setArgument:&stringValue atIndex:2]; - - } else { - return NO; - } - } - } - - - [inv invoke]; - } - } - [orderedFilters addObject:genericFilter]; - } - self.filters = orderedFilters; - - return YES; -} - -#pragma mark Regular init - -- (id)initWithOrderedFilters:(NSArray *)filters input:(GPUImageOutput *)input output:(id )output { - self = [super init]; - if (self) { - self.input = input; - self.output = output; - self.filters = [NSMutableArray arrayWithArray:filters]; - [self _refreshFilters]; - } - return self; -} - -- (void)addFilter:(GPUImageOutput *)filter atIndex:(NSUInteger)insertIndex { - [self.filters insertObject:filter atIndex:insertIndex]; - [self _refreshFilters]; -} - -- (void)addFilter:(GPUImageOutput *)filter { - [self.filters addObject:filter]; - [self _refreshFilters]; -} - -- (void)replaceFilterAtIndex:(NSUInteger)index withFilter:(GPUImageOutput *)filter { - [self.filters replaceObjectAtIndex:index withObject:filter]; - [self _refreshFilters]; -} - -- (void) removeFilter:(GPUImageOutput *)filter; -{ - [self.filters removeObject:filter]; - [self _refreshFilters]; -} - -- (void)removeFilterAtIndex:(NSUInteger)index { - [self.filters removeObjectAtIndex:index]; - [self _refreshFilters]; -} - -- (void)removeAllFilters { - [self.filters removeAllObjects]; - [self _refreshFilters]; -} - -- (void)replaceAllFilters:(NSArray *)newFilters { - self.filters = [NSMutableArray arrayWithArray:newFilters]; - [self _refreshFilters]; -} - -- (void)_refreshFilters { - - id prevFilter = self.input; - GPUImageOutput *theFilter = nil; - - for (int i = 0; i < [self.filters count]; i++) { - theFilter = [self.filters objectAtIndex:i]; - [prevFilter removeAllTargets]; - [prevFilter addTarget:theFilter]; - prevFilter = theFilter; - } - - [prevFilter removeAllTargets]; - - if (self.output != nil) { - [prevFilter addTarget:self.output]; - } -} - -- (UIImage *)currentFilteredFrame { - return [(GPUImageOutput *)[_filters lastObject] imageFromCurrentFramebuffer]; -} - -- (UIImage *)currentFilteredFrameWithOrientation:(UIImageOrientation)imageOrientation { - return [(GPUImageOutput *)[_filters lastObject] imageFromCurrentFramebufferWithOrientation:imageOrientation]; -} - -- (CGImageRef)newCGImageFromCurrentFilteredFrame { - return [(GPUImageOutput *)[_filters lastObject] newCGImageFromCurrentlyProcessedOutput]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m deleted file mode 100644 index bc660a3d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.m +++ /dev/null @@ -1,401 +0,0 @@ -#import "GPUImageFourInputFilter.h" - - -NSString *const kGPUImageFourInputTextureVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - attribute vec4 inputTextureCoordinate3; - attribute vec4 inputTextureCoordinate4; - - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - varying vec2 textureCoordinate3; - varying vec2 textureCoordinate4; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - textureCoordinate2 = inputTextureCoordinate2.xy; - textureCoordinate3 = inputTextureCoordinate3.xy; - textureCoordinate4 = inputTextureCoordinate4.xy; - } -); - -@implementation GPUImageFourInputFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageFourInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - inputRotation4 = kGPUImageNoRotation; - - hasSetThirdTexture = NO; - - hasReceivedFourthFrame = NO; - fourthFrameWasVideo = NO; - fourthFrameCheckDisabled = NO; - - fourthFrameTime = kCMTimeInvalid; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - filterFourthTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate4"]; - - filterInputTextureUniform4 = [filterProgram uniformIndex:@"inputImageTexture4"]; // This does assume a name of "inputImageTexture3" for the third input texture in the fragment shader - glEnableVertexAttribArray(filterFourthTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeAttributes; -{ - [super initializeAttributes]; - [filterProgram addAttribute:@"inputTextureCoordinate4"]; -} - -- (void)disableFourthFrameCheck; -{ - fourthFrameCheckDisabled = YES; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - [thirdInputFramebuffer unlock]; - [fourthInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [thirdInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform3, 4); - - glActiveTexture(GL_TEXTURE5); - glBindTexture(GL_TEXTURE_2D, [fourthInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform4, 5); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - glVertexAttribPointer(filterThirdTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation3]); - glVertexAttribPointer(filterFourthTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation4]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - [thirdInputFramebuffer unlock]; - [fourthInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (NSInteger)nextAvailableTextureIndex; -{ - if (hasSetThirdTexture) - { - return 3; - } - else if (hasSetSecondTexture) - { - return 2; - } - else if (hasSetFirstTexture) - { - return 1; - } - else - { - return 0; - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - firstInputFramebuffer = newInputFramebuffer; - hasSetFirstTexture = YES; - [firstInputFramebuffer lock]; - } - else if (textureIndex == 1) - { - secondInputFramebuffer = newInputFramebuffer; - hasSetSecondTexture = YES; - [secondInputFramebuffer lock]; - } - else if (textureIndex == 2) - { - thirdInputFramebuffer = newInputFramebuffer; - hasSetThirdTexture = YES; - [thirdInputFramebuffer lock]; - } - else - { - fourthInputFramebuffer = newInputFramebuffer; - [fourthInputFramebuffer lock]; - } -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - [super setInputSize:newSize atIndex:textureIndex]; - - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetFirstTexture = NO; - } - } - else if (textureIndex == 1) - { - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetSecondTexture = NO; - } - } - else if (textureIndex == 2) - { - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetThirdTexture = NO; - } - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - inputRotation = newInputRotation; - } - else if (textureIndex == 1) - { - inputRotation2 = newInputRotation; - } - else if (textureIndex == 2) - { - inputRotation3 = newInputRotation; - } - else - { - inputRotation4 = newInputRotation; - } -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - GPUImageRotationMode rotationToCheck; - if (textureIndex == 0) - { - rotationToCheck = inputRotation; - } - else if (textureIndex == 1) - { - rotationToCheck = inputRotation2; - } - else if (textureIndex == 2) - { - rotationToCheck = inputRotation3; - } - else - { - rotationToCheck = inputRotation4; - } - - if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - // You can set up infinite update loops, so this helps to short circuit them - if (hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) - { - return; - } - - BOOL updatedMovieFrameOppositeStillImage = NO; - - if (textureIndex == 0) - { - hasReceivedFirstFrame = YES; - firstFrameTime = frameTime; - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - if (fourthFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(secondFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else if (textureIndex == 1) - { - hasReceivedSecondFrame = YES; - secondFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - if (fourthFrameCheckDisabled) - { - hasReceivedFourthFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else if (textureIndex == 2) - { - hasReceivedThirdFrame = YES; - thirdFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - if (fourthFrameCheckDisabled) - { - hasReceivedFourthFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else - { - hasReceivedFourthFrame = YES; - fourthFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - - // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) - if ((hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame && hasReceivedFourthFrame) || updatedMovieFrameOppositeStillImage) - { - static const GLfloat imageVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; - - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - hasReceivedThirdFrame = NO; - hasReceivedFourthFrame = NO; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m b/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m deleted file mode 100644 index ea55c266..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.m +++ /dev/null @@ -1,457 +0,0 @@ -#import "GPUImageFramebuffer.h" -#import "GPUImageOutput.h" - -@interface GPUImageFramebuffer() -{ - GLuint framebuffer; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVPixelBufferRef renderTarget; - CVOpenGLESTextureRef renderTexture; - NSUInteger readLockCount; -#else -#endif - NSUInteger framebufferReferenceCount; - BOOL referenceCountingDisabled; -} - -- (void)generateFramebuffer; -- (void)generateTexture; -- (void)destroyFramebuffer; - -@end - -void dataProviderReleaseCallback (void *info, const void *data, size_t size); -void dataProviderUnlockCallback (void *info, const void *data, size_t size); - -@implementation GPUImageFramebuffer - -@synthesize size = _size; -@synthesize textureOptions = _textureOptions; -@synthesize texture = _texture; -@synthesize missingFramebuffer = _missingFramebuffer; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)fboTextureOptions onlyTexture:(BOOL)onlyGenerateTexture; -{ - if (!(self = [super init])) - { - return nil; - } - - _textureOptions = fboTextureOptions; - _size = framebufferSize; - framebufferReferenceCount = 0; - referenceCountingDisabled = NO; - _missingFramebuffer = onlyGenerateTexture; - - if (_missingFramebuffer) - { - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - [self generateTexture]; - framebuffer = 0; - }); - } - else - { - [self generateFramebuffer]; - } - return self; -} - -- (id)initWithSize:(CGSize)framebufferSize overriddenTexture:(GLuint)inputTexture; -{ - if (!(self = [super init])) - { - return nil; - } - - GPUTextureOptions defaultTextureOptions; - defaultTextureOptions.minFilter = GL_LINEAR; - defaultTextureOptions.magFilter = GL_LINEAR; - defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - defaultTextureOptions.internalFormat = GL_RGBA; - defaultTextureOptions.format = GL_BGRA; - defaultTextureOptions.type = GL_UNSIGNED_BYTE; - - _textureOptions = defaultTextureOptions; - _size = framebufferSize; - framebufferReferenceCount = 0; - referenceCountingDisabled = YES; - - _texture = inputTexture; - - return self; -} - -- (id)initWithSize:(CGSize)framebufferSize; -{ - GPUTextureOptions defaultTextureOptions; - defaultTextureOptions.minFilter = GL_LINEAR; - defaultTextureOptions.magFilter = GL_LINEAR; - defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - defaultTextureOptions.internalFormat = GL_RGBA; - defaultTextureOptions.format = GL_BGRA; - defaultTextureOptions.type = GL_UNSIGNED_BYTE; - - if (!(self = [self initWithSize:framebufferSize textureOptions:defaultTextureOptions onlyTexture:NO])) - { - return nil; - } - - return self; -} - -- (void)dealloc -{ - [self destroyFramebuffer]; -} - -#pragma mark - -#pragma mark Internal - -- (void)generateTexture; -{ - glActiveTexture(GL_TEXTURE1); - glGenTextures(1, &_texture); - glBindTexture(GL_TEXTURE_2D, _texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _textureOptions.minFilter); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _textureOptions.magFilter); - // This is necessary for non-power-of-two textures - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT); - - // TODO: Handle mipmaps -} - -- (void)generateFramebuffer; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - glGenFramebuffers(1, &framebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - - // By default, all framebuffers on iOS 5.0+ devices are backed by texture caches, using one shared cache - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVOpenGLESTextureCacheRef coreVideoTextureCache = [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache]; - // Code originally sourced from http://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/ - - CFDictionaryRef empty; // empty value for attr value. - CFMutableDictionaryRef attrs; - empty = CFDictionaryCreate(kCFAllocatorDefault, NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); // our empty IOSurface properties dictionary - attrs = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - CFDictionarySetValue(attrs, kCVPixelBufferIOSurfacePropertiesKey, empty); - - CVReturn err = CVPixelBufferCreate(kCFAllocatorDefault, (int)_size.width, (int)_size.height, kCVPixelFormatType_32BGRA, attrs, &renderTarget); - if (err) - { - NSLog(@"FBO size: %f, %f", _size.width, _size.height); - NSAssert(NO, @"Error at CVPixelBufferCreate %d", err); - } - - err = CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault, coreVideoTextureCache, renderTarget, - NULL, // texture attributes - GL_TEXTURE_2D, - _textureOptions.internalFormat, // opengl format - (int)_size.width, - (int)_size.height, - _textureOptions.format, // native iOS format - _textureOptions.type, - 0, - &renderTexture); - if (err) - { - NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - CFRelease(attrs); - CFRelease(empty); - - glBindTexture(CVOpenGLESTextureGetTarget(renderTexture), CVOpenGLESTextureGetName(renderTexture)); - _texture = CVOpenGLESTextureGetName(renderTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); -#endif - } - else - { - [self generateTexture]; - - glBindTexture(GL_TEXTURE_2D, _texture); - - glTexImage2D(GL_TEXTURE_2D, 0, _textureOptions.internalFormat, (int)_size.width, (int)_size.height, 0, _textureOptions.format, _textureOptions.type, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _texture, 0); - } - - #ifndef NS_BLOCK_ASSERTIONS - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - NSAssert(status == GL_FRAMEBUFFER_COMPLETE, @"Incomplete filter FBO: %d", status); - #endif - - glBindTexture(GL_TEXTURE_2D, 0); - }); -} - -- (void)destroyFramebuffer; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - if (framebuffer) - { - glDeleteFramebuffers(1, &framebuffer); - framebuffer = 0; - } - - - if ([GPUImageContext supportsFastTextureUpload] && (!_missingFramebuffer)) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - if (renderTarget) - { - CFRelease(renderTarget); - renderTarget = NULL; - } - - if (renderTexture) - { - CFRelease(renderTexture); - renderTexture = NULL; - } -#endif - } - else - { - glDeleteTextures(1, &_texture); - } - - }); -} - -#pragma mark - -#pragma mark Usage - -- (void)activateFramebuffer; -{ - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - glViewport(0, 0, (int)_size.width, (int)_size.height); -} - -#pragma mark - -#pragma mark Reference counting - -- (void)lock; -{ - if (referenceCountingDisabled) - { - return; - } - - framebufferReferenceCount++; -} - -- (void)unlock; -{ - if (referenceCountingDisabled) - { - return; - } - - NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?"); - framebufferReferenceCount--; - if (framebufferReferenceCount < 1) - { - [[GPUImageContext sharedFramebufferCache] returnFramebufferToCache:self]; - } -} - -- (void)clearAllLocks; -{ - framebufferReferenceCount = 0; -} - -- (void)disableReferenceCounting; -{ - referenceCountingDisabled = YES; -} - -- (void)enableReferenceCounting; -{ - referenceCountingDisabled = NO; -} - -#pragma mark - -#pragma mark Image capture - -void dataProviderReleaseCallback (void *info, const void *data, size_t size) -{ - free((void *)data); -} - -void dataProviderUnlockCallback (void *info, const void *data, size_t size) -{ - GPUImageFramebuffer *framebuffer = (__bridge_transfer GPUImageFramebuffer*)info; - - [framebuffer restoreRenderTarget]; - [framebuffer unlock]; - [[GPUImageContext sharedFramebufferCache] removeFramebufferFromActiveImageCaptureList:framebuffer]; -} - -- (CGImageRef)newCGImageFromFramebufferContents; -{ - // a CGImage can only be created from a 'normal' color texture - NSAssert(self.textureOptions.internalFormat == GL_RGBA, @"For conversion to a CGImage the output texture format for this filter must be GL_RGBA."); - NSAssert(self.textureOptions.type == GL_UNSIGNED_BYTE, @"For conversion to a CGImage the type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - __block CGImageRef cgImageFromBytes; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - NSUInteger totalBytesForImage = (int)_size.width * (int)_size.height * 4; - // It appears that the width of a texture must be padded out to be a multiple of 8 (32 bytes) if reading from it using a texture cache - - GLubyte *rawImagePixels; - - CGDataProviderRef dataProvider = NULL; - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - NSUInteger paddedWidthOfImage = CVPixelBufferGetBytesPerRow(renderTarget) / 4.0; - NSUInteger paddedBytesForImage = paddedWidthOfImage * (int)_size.height * 4; - - glFinish(); - CFRetain(renderTarget); // I need to retain the pixel buffer here and release in the data source callback to prevent its bytes from being prematurely deallocated during a photo write operation - [self lockForReading]; - rawImagePixels = (GLubyte *)CVPixelBufferGetBaseAddress(renderTarget); - dataProvider = CGDataProviderCreateWithData((__bridge_retained void*)self, rawImagePixels, paddedBytesForImage, dataProviderUnlockCallback); - [[GPUImageContext sharedFramebufferCache] addFramebufferToActiveImageCaptureList:self]; // In case the framebuffer is swapped out on the filter, need to have a strong reference to it somewhere for it to hang on while the image is in existence -#else -#endif - } - else - { - [self activateFramebuffer]; - rawImagePixels = (GLubyte *)malloc(totalBytesForImage); - glReadPixels(0, 0, (int)_size.width, (int)_size.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - dataProvider = CGDataProviderCreateWithData(NULL, rawImagePixels, totalBytesForImage, dataProviderReleaseCallback); - [self unlock]; // Don't need to keep this around anymore - } - - CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB(); - - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - cgImageFromBytes = CGImageCreate((int)_size.width, (int)_size.height, 8, 32, CVPixelBufferGetBytesPerRow(renderTarget), defaultRGBColorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst, dataProvider, NULL, NO, kCGRenderingIntentDefault); -#else -#endif - } - else - { - cgImageFromBytes = CGImageCreate((int)_size.width, (int)_size.height, 8, 32, 4 * (int)_size.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider, NULL, NO, kCGRenderingIntentDefault); - } - - // Capture image with current device orientation - CGDataProviderRelease(dataProvider); - CGColorSpaceRelease(defaultRGBColorSpace); - - }); - - return cgImageFromBytes; -} - -- (void)restoreRenderTarget; -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [self unlockAfterReading]; - CFRelease(renderTarget); -#else -#endif -} - -#pragma mark - -#pragma mark Raw data bytes - -- (void)lockForReading -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - if ([GPUImageContext supportsFastTextureUpload]) - { - if (readLockCount == 0) - { - CVPixelBufferLockBaseAddress(renderTarget, 0); - } - readLockCount++; - } -#endif -} - -- (void)unlockAfterReading -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - if ([GPUImageContext supportsFastTextureUpload]) - { - NSAssert(readLockCount > 0, @"Unbalanced call to -[GPUImageFramebuffer unlockAfterReading]"); - readLockCount--; - if (readLockCount == 0) - { - CVPixelBufferUnlockBaseAddress(renderTarget, 0); - } - } -#endif -} - -- (NSUInteger)bytesPerRow; -{ - if ([GPUImageContext supportsFastTextureUpload]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - return CVPixelBufferGetBytesPerRow(renderTarget); -#else - return _size.width * 4; // TODO: do more with this on the non-texture-cache side -#endif - } - else - { - return _size.width * 4; - } -} - -- (GLubyte *)byteBuffer; -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [self lockForReading]; - GLubyte * bufferBytes = CVPixelBufferGetBaseAddress(renderTarget); - [self unlockAfterReading]; - return bufferBytes; -#else - return NULL; // TODO: do more with this on the non-texture-cache side -#endif -} - -- (CVPixelBufferRef )pixelBuffer; -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - return renderTarget; -#else - return NULL; // TODO: do more with this on the non-texture-cache side -#endif -} - -- (GLuint)texture; -{ -// NSLog(@"Accessing texture: %d from FB: %@", _texture, self); - return _texture; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m b/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m deleted file mode 100644 index 53faf2c3..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.m +++ /dev/null @@ -1,190 +0,0 @@ -#import "GPUImageFramebufferCache.h" -#import "GPUImageContext.h" -#import "GPUImageOutput.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -#import -#else -#endif - -@interface GPUImageFramebufferCache() -{ -// NSCache *framebufferCache; - NSMutableDictionary *framebufferCache; - NSMutableDictionary *framebufferTypeCounts; - NSMutableArray *activeImageCaptureList; // Where framebuffers that may be lost by a filter, but which are still needed for a UIImage, etc., are stored - id memoryWarningObserver; - - dispatch_queue_t framebufferCacheQueue; -} - -- (NSString *)hashForSize:(CGSize)size textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; - -@end - - -@implementation GPUImageFramebufferCache - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - __unsafe_unretained __typeof__ (self) weakSelf = self; - memoryWarningObserver = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:nil usingBlock:^(NSNotification *note) { - __typeof__ (self) strongSelf = weakSelf; - if (strongSelf) { - [strongSelf purgeAllUnassignedFramebuffers]; - } - }]; -#else -#endif - -// framebufferCache = [[NSCache alloc] init]; - framebufferCache = [[NSMutableDictionary alloc] init]; - framebufferTypeCounts = [[NSMutableDictionary alloc] init]; - activeImageCaptureList = [[NSMutableArray alloc] init]; - framebufferCacheQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.framebufferCacheQueue", GPUImageDefaultQueueAttribute()); - - return self; -} - -- (void)dealloc; -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [[NSNotificationCenter defaultCenter] removeObserver:self]; -#else -#endif -} - -#pragma mark - -#pragma mark Framebuffer management - -- (NSString *)hashForSize:(CGSize)size textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; -{ - if (onlyTexture) - { - return [NSString stringWithFormat:@"%.1fx%.1f-%d:%d:%d:%d:%d:%d:%d-NOFB", size.width, size.height, textureOptions.minFilter, textureOptions.magFilter, textureOptions.wrapS, textureOptions.wrapT, textureOptions.internalFormat, textureOptions.format, textureOptions.type]; - } - else - { - return [NSString stringWithFormat:@"%.1fx%.1f-%d:%d:%d:%d:%d:%d:%d", size.width, size.height, textureOptions.minFilter, textureOptions.magFilter, textureOptions.wrapS, textureOptions.wrapT, textureOptions.internalFormat, textureOptions.format, textureOptions.type]; - } -} - -- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize textureOptions:(GPUTextureOptions)textureOptions onlyTexture:(BOOL)onlyTexture; -{ - __block GPUImageFramebuffer *framebufferFromCache = nil; -// dispatch_sync(framebufferCacheQueue, ^{ - runSynchronouslyOnVideoProcessingQueue(^{ - NSString *lookupHash = [self hashForSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; - NSNumber *numberOfMatchingTexturesInCache = [framebufferTypeCounts objectForKey:lookupHash]; - NSInteger numberOfMatchingTextures = [numberOfMatchingTexturesInCache integerValue]; - - if ([numberOfMatchingTexturesInCache integerValue] < 1) - { - // Nothing in the cache, create a new framebuffer to use - framebufferFromCache = [[GPUImageFramebuffer alloc] initWithSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; - } - else - { - // Something found, pull the old framebuffer and decrement the count - NSInteger currentTextureID = (numberOfMatchingTextures - 1); - while ((framebufferFromCache == nil) && (currentTextureID >= 0)) - { - NSString *textureHash = [NSString stringWithFormat:@"%@-%ld", lookupHash, (long)currentTextureID]; - framebufferFromCache = [framebufferCache objectForKey:textureHash]; - // Test the values in the cache first, to see if they got invalidated behind our back - if (framebufferFromCache != nil) - { - // Withdraw this from the cache while it's in use - [framebufferCache removeObjectForKey:textureHash]; - } - currentTextureID--; - } - - currentTextureID++; - - [framebufferTypeCounts setObject:[NSNumber numberWithInteger:currentTextureID] forKey:lookupHash]; - - if (framebufferFromCache == nil) - { - framebufferFromCache = [[GPUImageFramebuffer alloc] initWithSize:framebufferSize textureOptions:textureOptions onlyTexture:onlyTexture]; - } - } - }); - - [framebufferFromCache lock]; - return framebufferFromCache; -} - -- (GPUImageFramebuffer *)fetchFramebufferForSize:(CGSize)framebufferSize onlyTexture:(BOOL)onlyTexture; -{ - GPUTextureOptions defaultTextureOptions; - defaultTextureOptions.minFilter = GL_LINEAR; - defaultTextureOptions.magFilter = GL_LINEAR; - defaultTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - defaultTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - defaultTextureOptions.internalFormat = GL_RGBA; - defaultTextureOptions.format = GL_BGRA; - defaultTextureOptions.type = GL_UNSIGNED_BYTE; - - return [self fetchFramebufferForSize:framebufferSize textureOptions:defaultTextureOptions onlyTexture:onlyTexture]; -} - -- (void)returnFramebufferToCache:(GPUImageFramebuffer *)framebuffer; -{ - [framebuffer clearAllLocks]; - -// dispatch_async(framebufferCacheQueue, ^{ - runAsynchronouslyOnVideoProcessingQueue(^{ - CGSize framebufferSize = framebuffer.size; - GPUTextureOptions framebufferTextureOptions = framebuffer.textureOptions; - NSString *lookupHash = [self hashForSize:framebufferSize textureOptions:framebufferTextureOptions onlyTexture:framebuffer.missingFramebuffer]; - NSNumber *numberOfMatchingTexturesInCache = [framebufferTypeCounts objectForKey:lookupHash]; - NSInteger numberOfMatchingTextures = [numberOfMatchingTexturesInCache integerValue]; - - NSString *textureHash = [NSString stringWithFormat:@"%@-%ld", lookupHash, (long)numberOfMatchingTextures]; - -// [framebufferCache setObject:framebuffer forKey:textureHash cost:round(framebufferSize.width * framebufferSize.height * 4.0)]; - [framebufferCache setObject:framebuffer forKey:textureHash]; - [framebufferTypeCounts setObject:[NSNumber numberWithInteger:(numberOfMatchingTextures + 1)] forKey:lookupHash]; - }); -} - -- (void)purgeAllUnassignedFramebuffers; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ -// dispatch_async(framebufferCacheQueue, ^{ - [framebufferCache removeAllObjects]; - [framebufferTypeCounts removeAllObjects]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVOpenGLESTextureCacheFlush([[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], 0); -#else -#endif - }); -} - -- (void)addFramebufferToActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ -// dispatch_async(framebufferCacheQueue, ^{ - [activeImageCaptureList addObject:framebuffer]; - }); -} - -- (void)removeFramebufferFromActiveImageCaptureList:(GPUImageFramebuffer *)framebuffer; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ -// dispatch_async(framebufferCacheQueue, ^{ - [activeImageCaptureList removeObject:framebuffer]; - }); -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m deleted file mode 100755 index 35adaba2..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImageGammaFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGammaFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float gamma; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); - } -); -#else -NSString *const kGPUImageGammaFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float gamma; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w); - } -); -#endif - -@implementation GPUImageGammaFilter - -@synthesize gamma = _gamma; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageGammaFragmentShaderString])) - { - return nil; - } - - gammaUniform = [filterProgram uniformIndex:@"gamma"]; - self.gamma = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setGamma:(CGFloat)newValue; -{ - _gamma = newValue; - - [self setFloat:_gamma forUniform:gammaUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m deleted file mode 100755 index ec99352a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.m +++ /dev/null @@ -1,513 +0,0 @@ -#import "GPUImageGaussianBlurFilter.h" - -@implementation GPUImageGaussianBlurFilter - -@synthesize texelSpacingMultiplier = _texelSpacingMultiplier; -@synthesize blurRadiusInPixels = _blurRadiusInPixels; -@synthesize blurRadiusAsFractionOfImageWidth = _blurRadiusAsFractionOfImageWidth; -@synthesize blurRadiusAsFractionOfImageHeight = _blurRadiusAsFractionOfImageHeight; -@synthesize blurPasses = _blurPasses; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString -{ - if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:secondStageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) - { - return nil; - } - - self.texelSpacingMultiplier = 1.0; - _blurRadiusInPixels = 2.0; - shouldResizeBlurRadiusWithImageSize = NO; - - return self; -} - -- (id)init; -{ - NSString *currentGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:4 sigma:2.0]; - NSString *currentGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:4 sigma:2.0]; - - return [self initWithFirstStageVertexShaderFromString:currentGaussianBlurVertexShader firstStageFragmentShaderFromString:currentGaussianBlurFragmentShader secondStageVertexShaderFromString:currentGaussianBlurVertexShader secondStageFragmentShaderFromString:currentGaussianBlurFragmentShader]; -} - -#pragma mark - -#pragma mark Auto-generation of optimized Gaussian shaders - -// "Implementation limit of 32 varying components exceeded" - Max number of varyings for these GPUs - -+ (NSString *)vertexShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - -// NSLog(@"Max varyings: %d", [GPUImageContext maximumVaryingVectorsForThisDevice]); - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(blurRadius * 2 + 1) ]; - - // Inner offset loop - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < (blurRadius * 2 + 1); currentBlurCoordinateIndex++) - { - NSInteger offsetFromCenter = currentBlurCoordinateIndex - blurRadius; - if (offsetFromCenter < 0) - { - [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)currentBlurCoordinateIndex, (GLfloat)(-offsetFromCenter)]; - } - else if (offsetFromCenter > 0) - { - [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy + singleStepOffset * %f;\n", (unsigned long)currentBlurCoordinateIndex, (GLfloat)(offsetFromCenter)]; - } - else - { - [shaderString appendFormat:@"blurCoordinates[%ld] = inputTextureCoordinate.xy;\n", (unsigned long)currentBlurCoordinateIndex]; - } - } - - // Footer - [shaderString appendString:@"}\n"]; - - return shaderString; -} - -+ (NSString *)fragmentShaderForStandardBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // Finally, generate the shader from these weights - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp vec4 sum = vec4(0.0);\n", (unsigned long)(blurRadius * 2 + 1) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - vec4 sum = vec4(0.0);\n", (blurRadius * 2 + 1) ]; -#endif - - // Inner texture loop - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < (blurRadius * 2 + 1); currentBlurCoordinateIndex++) - { - NSInteger offsetFromCenter = currentBlurCoordinateIndex - blurRadius; - if (offsetFromCenter < 0) - { - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)currentBlurCoordinateIndex, standardGaussianWeights[-offsetFromCenter]]; - } - else - { - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)currentBlurCoordinateIndex, standardGaussianWeights[offsetFromCenter]]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = sum;\n\ - }\n"]; - - free(standardGaussianWeights); - return shaderString; -} - -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - GLfloat *optimizedGaussianOffsets = calloc(numberOfOptimizedOffsets, sizeof(GLfloat)); - - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - GLfloat firstWeight = standardGaussianWeights[currentOptimizedOffset*2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOptimizedOffset*2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - - optimizedGaussianOffsets[currentOptimizedOffset] = (firstWeight * (currentOptimizedOffset*2 + 1) + secondWeight * (currentOptimizedOffset*2 + 2)) / optimizedWeight; - } - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; - - // Inner offset loop - [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - [shaderString appendFormat:@"\ - blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ - blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedGaussianOffsets[currentOptimizedOffset], (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedGaussianOffsets[currentOptimizedOffset]]; - } - - // Footer - [shaderString appendString:@"}\n"]; - - free(optimizedGaussianOffsets); - free(standardGaussianWeights); - return shaderString; -} - -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform highp float texelWidthOffset;\n\ - uniform highp float texelHeightOffset;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp vec4 sum = vec4(0.0);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - vec4 sum = vec4(0.0);\n", 1 + (numberOfOptimizedOffsets * 2) ]; -#endif - - // Inner texture loop - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]) * %f;\n", standardGaussianWeights[0]]; - - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) - { - GLfloat firstWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 2]; - GLfloat optimizedWeight = firstWeight + secondWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]) * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), optimizedWeight]; - } - - // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader - if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#else - [shaderString appendString:@"vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#endif - - for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) - { - GLfloat firstWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - GLfloat optimizedOffset = (firstWeight * (currentOverlowTextureRead * 2 + 1) + secondWeight * (currentOverlowTextureRead * 2 + 2)) / optimizedWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f) * %f;\n", optimizedOffset, optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f) * %f;\n", optimizedOffset, optimizedWeight]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = sum;\n\ - }\n"]; - - free(standardGaussianWeights); - return shaderString; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - [super setupFilterForSize:filterFrameSize]; - - if (shouldResizeBlurRadiusWithImageSize) - { - if (self.blurRadiusAsFractionOfImageWidth > 0) - { - self.blurRadiusInPixels = filterFrameSize.width * self.blurRadiusAsFractionOfImageWidth; - } - else - { - self.blurRadiusInPixels = filterFrameSize.height * self.blurRadiusAsFractionOfImageHeight; - } - } -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - - for (NSUInteger currentAdditionalBlurPass = 1; currentAdditionalBlurPass < _blurPasses; currentAdditionalBlurPass++) - { - [super renderToTextureWithVertices:vertices textureCoordinates:[[self class] textureCoordinatesForRotation:kGPUImageNoRotation]]; - } -} - -- (void)switchToVertexShader:(NSString *)newVertexShader fragmentShader:(NSString *)newFragmentShader; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - filterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:newVertexShader fragmentShaderString:newFragmentShader]; - - if (!filterProgram.initialized) - { - [self initializeAttributes]; - - if (![filterProgram link]) - { - NSString *progLog = [filterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [filterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [filterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - filterPositionAttribute = [filterProgram attributeIndex:@"position"]; - filterTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate"]; - filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - verticalPassTexelWidthOffsetUniform = [filterProgram uniformIndex:@"texelWidthOffset"]; - verticalPassTexelHeightOffsetUniform = [filterProgram uniformIndex:@"texelHeightOffset"]; - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glEnableVertexAttribArray(filterPositionAttribute); - glEnableVertexAttribArray(filterTextureCoordinateAttribute); - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:newVertexShader fragmentShaderString:newFragmentShader]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - secondFilterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; - secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - horizontalPassTexelWidthOffsetUniform = [secondFilterProgram uniformIndex:@"texelWidthOffset"]; - horizontalPassTexelHeightOffsetUniform = [secondFilterProgram uniformIndex:@"texelHeightOffset"]; - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); - - [self setupFilterForSize:[self sizeOfFBO]]; - glFinish(); - }); - -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelSpacingMultiplier:(CGFloat)newValue; -{ - _texelSpacingMultiplier = newValue; - - _verticalTexelSpacing = _texelSpacingMultiplier; - _horizontalTexelSpacing = _texelSpacingMultiplier; - - [self setupFilterForSize:[self sizeOfFBO]]; -} - -// inputRadius for Core Image's CIGaussianBlur is really sigma in the Gaussian equation, so I'm using that for my blur radius, to be consistent -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - // 7.0 is the limit for blur size for hardcoded varying offsets - - if (round(newValue) != _blurRadiusInPixels) - { - _blurRadiusInPixels = round(newValue); // For now, only do integral sigmas - - NSUInteger calculatedSampleRadius = 0; - if (_blurRadiusInPixels >= 1) // Avoid a divide-by-zero error here - { - // Calculate the number of pixels to sample from by setting a bottom limit for the contribution of the outermost pixel - CGFloat minimumWeightToFindEdgeOfSamplingArea = 1.0/256.0; - calculatedSampleRadius = floor(sqrt(-2.0 * pow(_blurRadiusInPixels, 2.0) * log(minimumWeightToFindEdgeOfSamplingArea * sqrt(2.0 * M_PI * pow(_blurRadiusInPixels, 2.0))) )); - calculatedSampleRadius += calculatedSampleRadius % 2; // There's nothing to gain from handling odd radius sizes, due to the optimizations I use - } - -// NSLog(@"Blur radius: %f, calculated sample radius: %d", _blurRadiusInPixels, calculatedSampleRadius); -// - NSString *newGaussianBlurVertexShader = [[self class] vertexShaderForOptimizedBlurOfRadius:calculatedSampleRadius sigma:_blurRadiusInPixels]; - NSString *newGaussianBlurFragmentShader = [[self class] fragmentShaderForOptimizedBlurOfRadius:calculatedSampleRadius sigma:_blurRadiusInPixels]; - -// NSLog(@"Optimized vertex shader: \n%@", newGaussianBlurVertexShader); -// NSLog(@"Optimized fragment shader: \n%@", newGaussianBlurFragmentShader); -// - [self switchToVertexShader:newGaussianBlurVertexShader fragmentShader:newGaussianBlurFragmentShader]; - } - shouldResizeBlurRadiusWithImageSize = NO; -} - -- (void)setBlurRadiusAsFractionOfImageWidth:(CGFloat)blurRadiusAsFractionOfImageWidth -{ - if (blurRadiusAsFractionOfImageWidth < 0) return; - - shouldResizeBlurRadiusWithImageSize = _blurRadiusAsFractionOfImageWidth != blurRadiusAsFractionOfImageWidth && blurRadiusAsFractionOfImageWidth > 0; - _blurRadiusAsFractionOfImageWidth = blurRadiusAsFractionOfImageWidth; - _blurRadiusAsFractionOfImageHeight = 0; -} - -- (void)setBlurRadiusAsFractionOfImageHeight:(CGFloat)blurRadiusAsFractionOfImageHeight -{ - if (blurRadiusAsFractionOfImageHeight < 0) return; - - shouldResizeBlurRadiusWithImageSize = _blurRadiusAsFractionOfImageHeight != blurRadiusAsFractionOfImageHeight && blurRadiusAsFractionOfImageHeight > 0; - _blurRadiusAsFractionOfImageHeight = blurRadiusAsFractionOfImageHeight; - _blurRadiusAsFractionOfImageWidth = 0; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m deleted file mode 100755 index 8ecd9246..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.m +++ /dev/null @@ -1,232 +0,0 @@ -#import "GPUImageGaussianBlurPositionFilter.h" - -NSString *const kGPUImageGaussianBlurPositionVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - const int GAUSSIAN_SAMPLES = 9; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - - // Calculate the positions for the blur - int multiplier = 0; - vec2 blurStep; - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset); - - for (int i = 0; i < GAUSSIAN_SAMPLES; i++) { - multiplier = (i - ((GAUSSIAN_SAMPLES - 1) / 2)); - // Blur in x (horizontal) - blurStep = float(multiplier) * singleStepOffset; - blurCoordinates[i] = inputTextureCoordinate.xy + blurStep; - } - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGaussianBlurPositionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const lowp int GAUSSIAN_SAMPLES = 9; - - varying highp vec2 textureCoordinate; - varying highp vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform highp float aspectRatio; - uniform lowp vec2 blurCenter; - uniform highp float blurRadius; - - void main() { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(blurCenter, textureCoordinateToUse); - - if (dist < blurRadius) - { - lowp vec4 sum = vec4(0.0); - - sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.05; - sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.18; - sum += texture2D(inputImageTexture, blurCoordinates[5]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[6]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[7]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[8]) * 0.05; - - gl_FragColor = sum; - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } - } -); -#else -NSString *const kGPUImageGaussianBlurPositionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - const int GAUSSIAN_SAMPLES = 9; - - varying vec2 textureCoordinate; - varying vec2 blurCoordinates[GAUSSIAN_SAMPLES]; - - uniform float aspectRatio; - uniform vec2 blurCenter; - uniform float blurRadius; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(blurCenter, textureCoordinateToUse); - - if (dist < blurRadius) - { - vec4 sum = vec4(0.0); - - sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.05; - sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.18; - sum += texture2D(inputImageTexture, blurCoordinates[5]) * 0.15; - sum += texture2D(inputImageTexture, blurCoordinates[6]) * 0.12; - sum += texture2D(inputImageTexture, blurCoordinates[7]) * 0.09; - sum += texture2D(inputImageTexture, blurCoordinates[8]) * 0.05; - - gl_FragColor = sum; - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate); - } - } -); -#endif - -@interface GPUImageGaussianBlurPositionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImageGaussianBlurPositionFilter - -@synthesize blurSize = _blurSize; -@synthesize blurCenter = _blurCenter; -@synthesize aspectRatio = _aspectRatio; - -- (id) initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString - firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString - secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString - secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString { - - if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString ? firstStageVertexShaderString : kGPUImageGaussianBlurPositionVertexShaderString - firstStageFragmentShaderFromString:firstStageFragmentShaderString ? firstStageFragmentShaderString : kGPUImageGaussianBlurPositionFragmentShaderString - secondStageVertexShaderFromString:secondStageVertexShaderString ? secondStageVertexShaderString : kGPUImageGaussianBlurPositionVertexShaderString - secondStageFragmentShaderFromString:secondStageFragmentShaderString ? secondStageFragmentShaderString : kGPUImageGaussianBlurPositionFragmentShaderString])) { - return nil; - } - - aspectRatioUniform = [secondFilterProgram uniformIndex:@"aspectRatio"]; - blurCenterUniform = [secondFilterProgram uniformIndex:@"blurCenter"]; - blurRadiusUniform = [secondFilterProgram uniformIndex:@"blurRadius"]; - - self.blurSize = 1.0; - self.blurRadius = 1.0; - self.blurCenter = CGPointMake(0.5, 0.5); - - return self; -} - -- (id)init; -{ - return [self initWithFirstStageVertexShaderFromString:nil - firstStageFragmentShaderFromString:nil - secondStageVertexShaderFromString:nil - secondStageFragmentShaderFromString:nil]; -} - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setBlurCenter:self.blurCenter]; - [self adjustAspectRatio]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurSize:(CGFloat)newValue; -{ - _blurSize = newValue; - - _verticalTexelSpacing = _blurSize; - _horizontalTexelSpacing = _blurSize; - - [self setupFilterForSize:[self sizeOfFBO]]; -} - -- (void) setBlurCenter:(CGPoint)blurCenter; -{ - _blurCenter = blurCenter; - CGPoint rotatedPoint = [self rotatedPoint:blurCenter forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:blurCenterUniform program:secondFilterProgram]; -} - -- (void) setBlurRadius:(CGFloat)blurRadius; -{ - _blurRadius = blurRadius; - - [self setFloat:_blurRadius forUniform:blurRadiusUniform program:secondFilterProgram]; -} - -- (void) setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:secondFilterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m deleted file mode 100755 index 7ebc9e19..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.m +++ /dev/null @@ -1,147 +0,0 @@ -#import "GPUImageGaussianSelectiveBlurFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageTwoInputFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGaussianSelectiveBlurFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform lowp float excludeCircleRadius; - uniform lowp vec2 excludeCirclePoint; - uniform lowp float excludeBlurSize; - uniform highp float aspectRatio; - - void main() - { - lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - highp vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromCenter = distance(excludeCirclePoint, textureCoordinateToUse); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter)); - } -); -#else -NSString *const kGPUImageGaussianSelectiveBlurFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float excludeCircleRadius; - uniform vec2 excludeCirclePoint; - uniform float excludeBlurSize; - uniform float aspectRatio; - - void main() - { - vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - vec2 textureCoordinateToUse = vec2(textureCoordinate2.x, (textureCoordinate2.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromCenter = distance(excludeCirclePoint, textureCoordinateToUse); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(excludeCircleRadius - excludeBlurSize, excludeCircleRadius, distanceFromCenter)); - } -); -#endif - -@implementation GPUImageGaussianSelectiveBlurFilter - -@synthesize excludeCirclePoint = _excludeCirclePoint, excludeCircleRadius = _excludeCircleRadius, excludeBlurSize = _excludeBlurSize; -@synthesize blurRadiusInPixels = _blurRadiusInPixels; -@synthesize aspectRatio = _aspectRatio; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - hasOverriddenAspectRatio = NO; - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - selectiveFocusFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageGaussianSelectiveBlurFragmentShaderString]; - [self addFilter:selectiveFocusFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:selectiveFocusFilter atTextureLocation:1]; - - // To prevent double updating of this filter, disable updates from the sharp image side - self.initialFilters = [NSArray arrayWithObjects:blurFilter, selectiveFocusFilter, nil]; - self.terminalFilter = selectiveFocusFilter; - - self.blurRadiusInPixels = 5.0; - - self.excludeCircleRadius = 60.0/320.0; - self.excludeCirclePoint = CGPointMake(0.5f, 0.5f); - self.excludeBlurSize = 30.0/320.0; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - inputTextureSize = newSize; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!hasOverriddenAspectRatio) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - _aspectRatio = (inputTextureSize.width / inputTextureSize.height); - [selectiveFocusFilter setFloat:_aspectRatio forUniformName:@"aspectRatio"]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setExcludeCirclePoint:(CGPoint)newValue; -{ - _excludeCirclePoint = newValue; - [selectiveFocusFilter setPoint:newValue forUniformName:@"excludeCirclePoint"]; -} - -- (void)setExcludeCircleRadius:(CGFloat)newValue; -{ - _excludeCircleRadius = newValue; - [selectiveFocusFilter setFloat:newValue forUniformName:@"excludeCircleRadius"]; -} - -- (void)setExcludeBlurSize:(CGFloat)newValue; -{ - _excludeBlurSize = newValue; - [selectiveFocusFilter setFloat:newValue forUniformName:@"excludeBlurSize"]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - hasOverriddenAspectRatio = YES; - _aspectRatio = newValue; - [selectiveFocusFilter setFloat:_aspectRatio forUniformName:@"aspectRatio"]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m deleted file mode 100644 index 18662916..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.m +++ /dev/null @@ -1,106 +0,0 @@ -#import "GPUImageGlassSphereFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGlassSphereFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp float radius; - uniform highp float aspectRatio; - uniform highp float refractiveIndex; -// uniform vec3 lightPosition; - const highp vec3 lightPosition = vec3(-0.5, 0.5, 1.0); - const highp vec3 ambientLightPosition = vec3(0.0, 0.0, 1.0); - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromCenter = distance(center, textureCoordinateToUse); - lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - highp vec3 refractedVector = 2.0 * refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - refractedVector.xy = -refractedVector.xy; - - highp vec3 finalSphereColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5).rgb; - - // Grazing angle lighting - highp float lightingIntensity = 2.5 * (1.0 - pow(clamp(dot(ambientLightPosition, sphereNormal), 0.0, 1.0), 0.25)); - finalSphereColor += lightingIntensity; - - // Specular lighting - lightingIntensity = clamp(dot(normalize(lightPosition), sphereNormal), 0.0, 1.0); - lightingIntensity = pow(lightingIntensity, 15.0); - finalSphereColor += vec3(0.8, 0.8, 0.8) * lightingIntensity; - - gl_FragColor = vec4(finalSphereColor, 1.0) * checkForPresenceWithinSphere; - } -); -#else -NSString *const kGPUImageGlassSphereFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform float radius; - uniform float aspectRatio; - uniform float refractiveIndex; - // uniform vec3 lightPosition; - const vec3 lightPosition = vec3(-0.5, 0.5, 1.0); - const vec3 ambientLightPosition = vec3(0.0, 0.0, 1.0); - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromCenter = distance(center, textureCoordinateToUse); - float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - vec3 refractedVector = 2.0 * refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - refractedVector.xy = -refractedVector.xy; - - vec3 finalSphereColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5).rgb; - - // Grazing angle lighting - float lightingIntensity = 2.5 * (1.0 - pow(clamp(dot(ambientLightPosition, sphereNormal), 0.0, 1.0), 0.25)); - finalSphereColor += lightingIntensity; - - // Specular lighting - lightingIntensity = clamp(dot(normalize(lightPosition), sphereNormal), 0.0, 1.0); - lightingIntensity = pow(lightingIntensity, 15.0); - finalSphereColor += vec3(0.8, 0.8, 0.8) * lightingIntensity; - - gl_FragColor = vec4(finalSphereColor, 1.0) * checkForPresenceWithinSphere; - } -); -#endif - -@implementation GPUImageGlassSphereFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageGlassSphereFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m deleted file mode 100755 index 0066ca87..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.m +++ /dev/null @@ -1,141 +0,0 @@ -#import "GPUImageGrayscaleFilter.h" - -@implementation GPUImageGrayscaleFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - - gl_FragColor = vec4(vec3(luminance), textureColor.a); - } -); -#else -NSString *const kGPUImageLuminanceFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - - gl_FragColor = vec4(vec3(luminance), textureColor.a); - } -); -#endif - - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (!currentlyReceivingMonochromeInput) - { - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - } -} - -//- (void)setInputTexture:(GLuint)newInputTexture atIndex:(NSInteger)textureIndex; -//{ -// [super setInputTexture:newInputTexture atIndex:textureIndex]; -// if (currentlyReceivingMonochromeInput) -// { -// [self notifyTargetsAboutNewOutputTexture]; -// } -//} - -//- (GLuint)textureForOutput; -//{ -// if (currentlyReceivingMonochromeInput) -// { -// return filterSourceTexture; -// } -// else -// { -// return outputTexture; -// } -//} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -- (BOOL)providesMonochromeOutput; -{ -// return YES; - return NO; -} - -// TODO: Rewrite this based on the new GPUImageFilter implementation -//- (void)informTargetsAboutNewFrameAtTime:(CMTime)frameTime; -//{ -// if (self.frameProcessingCompletionBlock != NULL) -// { -// self.frameProcessingCompletionBlock(self, frameTime); -// } -// -// for (id currentTarget in targets) -// { -// if (currentTarget != self.targetToIgnoreForUpdates) -// { -// NSInteger indexOfObject = [targets indexOfObject:currentTarget]; -// NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; -// -// if ([GPUImageContext supportsFastTextureUpload] && preparedToCaptureImage) -// { -// [self setInputTextureForTarget:currentTarget atIndex:textureIndex]; -// } -// -// if (currentlyReceivingMonochromeInput) -// { -// [currentTarget setInputRotation:inputRotation atIndex:textureIndex]; -// -// CGSize sizeToRotate = [self outputFrameSize]; -// CGSize rotatedSize = sizeToRotate; -// if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) -// { -// rotatedSize.width = sizeToRotate.height; -// rotatedSize.height = sizeToRotate.width; -// } -// [currentTarget setInputSize:rotatedSize atIndex:textureIndex]; -// } -// else -// { -// [currentTarget setInputSize:[self outputFrameSize] atIndex:textureIndex]; -// } -// [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndex]; -// } -// } -//} - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceFragmentShaderString])) - { - return nil; - } - - return self; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m deleted file mode 100644 index eb668f7d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.m +++ /dev/null @@ -1,414 +0,0 @@ -#import "GPUImageHSBFilter.h" - -@implementation GPUImageHSBFilter { - float matrix[4][4]; -} - -- (id)init -{ - self = [super init]; - if (self) { - [self reset]; - } - return self; -} - -- (void)reset { - identmat(matrix); - [self _updateColorMatrix]; -} - -- (void)rotateHue:(float)h { - huerotatemat(matrix, h); - [self _updateColorMatrix]; -} - -- (void)adjustSaturation:(float)s { - saturatemat(matrix, s); - [self _updateColorMatrix]; -} - -- (void)adjustBrightness:(float)b { - cscalemat(matrix, b, b, b); - [self _updateColorMatrix]; -} - -- (void)_updateColorMatrix { - GPUMatrix4x4 gpuMatrix; - gpuMatrix.one.one = matrix[0][0]; - gpuMatrix.one.two = matrix[1][0]; - gpuMatrix.one.three = matrix[2][0]; - gpuMatrix.one.four = matrix[3][0]; - gpuMatrix.two.one = matrix[0][1]; - gpuMatrix.two.two = matrix[1][1]; - gpuMatrix.two.three = matrix[2][1]; - gpuMatrix.two.four = matrix[3][1]; - gpuMatrix.three.one = matrix[0][2]; - gpuMatrix.three.two = matrix[1][2]; - gpuMatrix.three.three = matrix[2][2]; - gpuMatrix.three.four = matrix[3][2]; - gpuMatrix.four.one = matrix[0][3]; - gpuMatrix.four.two = matrix[1][3]; - gpuMatrix.four.three = matrix[2][3]; - gpuMatrix.four.four = matrix[3][3]; - self.colorMatrix = gpuMatrix; -} - -#pragma mark - Matrix algorithms - -/* Matrix algorithms adapted from http://www.graficaobscura.com/matrix/index.html - - Note about luminance vector values below from that page: - Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This is the luminance vector. Notice here that we do not use the standard NTSC weights of 0.299, 0.587, and 0.114. The NTSC weights are only applicable to RGB colors in a gamma 2.2 color space. For linear RGB colors the values above are better. - */ -//#define RLUM (0.3086f) -//#define GLUM (0.6094f) -//#define BLUM (0.0820f) - -/* This is the vector value from the PDF specification, and may be closer to what Photoshop uses */ -#define RLUM (0.3f) -#define GLUM (0.59f) -#define BLUM (0.11f) - -/* - * matrixmult - - * multiply two matricies - */ -static void matrixmult(a,b,c) -float a[4][4], b[4][4], c[4][4]; -{ - int x, y; - float temp[4][4]; - - for(y=0; y<4 ; y++) - for(x=0 ; x<4 ; x++) { - temp[y][x] = b[y][0] * a[0][x] - + b[y][1] * a[1][x] - + b[y][2] * a[2][x] - + b[y][3] * a[3][x]; - } - for(y=0; y<4; y++) - for(x=0; x<4; x++) - c[y][x] = temp[y][x]; -} - -/* - * identmat - - * make an identity matrix - */ -static void identmat(matrix) -float matrix[4][4]; -{ - memset(matrix, 0, sizeof(float[4][4])); - matrix[0][0] = 1.0f; - matrix[1][1] = 1.0f; - matrix[2][2] = 1.0f; - matrix[3][3] = 1.0f; -} - -/* - * xformpnt - - * transform a 3D point using a matrix - */ -static void xformpnt(matrix,x,y,z,tx,ty,tz) -float matrix[4][4]; -float x,y,z; -float *tx,*ty,*tz; -{ - *tx = x*matrix[0][0] + y*matrix[1][0] + z*matrix[2][0] + matrix[3][0]; - *ty = x*matrix[0][1] + y*matrix[1][1] + z*matrix[2][1] + matrix[3][1]; - *tz = x*matrix[0][2] + y*matrix[1][2] + z*matrix[2][2] + matrix[3][2]; -} - -/* - * cscalemat - - * make a color scale marix - */ -static void cscalemat(mat,rscale,gscale,bscale) -float mat[4][4]; -float rscale, gscale, bscale; -{ - float mmat[4][4]; - - mmat[0][0] = rscale; - mmat[0][1] = 0.0; - mmat[0][2] = 0.0; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = gscale; - mmat[1][2] = 0.0; - mmat[1][3] = 0.0; - - - mmat[2][0] = 0.0; - mmat[2][1] = 0.0; - mmat[2][2] = bscale; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * saturatemat - - * make a saturation marix - */ -static void saturatemat(mat,sat) -float mat[4][4]; -float sat; -{ - float mmat[4][4]; - float a, b, c, d, e, f, g, h, i; - float rwgt, gwgt, bwgt; - - rwgt = RLUM; - gwgt = GLUM; - bwgt = BLUM; - - a = (1.0-sat)*rwgt + sat; - b = (1.0-sat)*rwgt; - c = (1.0-sat)*rwgt; - d = (1.0-sat)*gwgt; - e = (1.0-sat)*gwgt + sat; - f = (1.0-sat)*gwgt; - g = (1.0-sat)*bwgt; - h = (1.0-sat)*bwgt; - i = (1.0-sat)*bwgt + sat; - mmat[0][0] = a; - mmat[0][1] = b; - mmat[0][2] = c; - mmat[0][3] = 0.0; - - mmat[1][0] = d; - mmat[1][1] = e; - mmat[1][2] = f; - mmat[1][3] = 0.0; - - mmat[2][0] = g; - mmat[2][1] = h; - mmat[2][2] = i; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * xrotate - - * rotate about the x (red) axis - */ -static void xrotatemat(mat,rs,rc) -float mat[4][4]; -float rs, rc; -{ - float mmat[4][4]; - - mmat[0][0] = 1.0; - mmat[0][1] = 0.0; - mmat[0][2] = 0.0; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = rc; - mmat[1][2] = rs; - mmat[1][3] = 0.0; - - mmat[2][0] = 0.0; - mmat[2][1] = -rs; - mmat[2][2] = rc; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * yrotate - - * rotate about the y (green) axis - */ -static void yrotatemat(mat,rs,rc) -float mat[4][4]; -float rs, rc; -{ - float mmat[4][4]; - - mmat[0][0] = rc; - mmat[0][1] = 0.0; - mmat[0][2] = -rs; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = 1.0; - mmat[1][2] = 0.0; - mmat[1][3] = 0.0; - - mmat[2][0] = rs; - mmat[2][1] = 0.0; - mmat[2][2] = rc; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * zrotate - - * rotate about the z (blue) axis - */ -static void zrotatemat(mat,rs,rc) -float mat[4][4]; -float rs, rc; -{ - float mmat[4][4]; - - mmat[0][0] = rc; - mmat[0][1] = rs; - mmat[0][2] = 0.0; - mmat[0][3] = 0.0; - - mmat[1][0] = -rs; - mmat[1][1] = rc; - mmat[1][2] = 0.0; - mmat[1][3] = 0.0; - - mmat[2][0] = 0.0; - mmat[2][1] = 0.0; - mmat[2][2] = 1.0; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * zshear - - * shear z using x and y. - */ -static void zshearmat(mat,dx,dy) -float mat[4][4]; -float dx, dy; -{ - float mmat[4][4]; - - mmat[0][0] = 1.0; - mmat[0][1] = 0.0; - mmat[0][2] = dx; - mmat[0][3] = 0.0; - - mmat[1][0] = 0.0; - mmat[1][1] = 1.0; - mmat[1][2] = dy; - mmat[1][3] = 0.0; - - mmat[2][0] = 0.0; - mmat[2][1] = 0.0; - mmat[2][2] = 1.0; - mmat[2][3] = 0.0; - - mmat[3][0] = 0.0; - mmat[3][1] = 0.0; - mmat[3][2] = 0.0; - mmat[3][3] = 1.0; - matrixmult(mmat,mat,mat); -} - -/* - * simplehuerotatemat - - * simple hue rotation. This changes luminance - */ -//static void simplehuerotatemat(mat,rot) -//float mat[4][4]; -//float rot; -//{ -// float mag; -// float xrs, xrc; -// float yrs, yrc; -// float zrs, zrc; -// -// /* rotate the grey vector into positive Z */ -// mag = sqrt(2.0); -// xrs = 1.0/mag; -// xrc = 1.0/mag; -// xrotatemat(mat,xrs,xrc); -// -// mag = sqrt(3.0); -// yrs = -1.0/mag; -// yrc = sqrt(2.0)/mag; -// yrotatemat(mat,yrs,yrc); -// -// /* rotate the hue */ -// zrs = sin(rot*M_PI/180.0); -// zrc = cos(rot*M_PI/180.0); -// zrotatemat(mat,zrs,zrc); -// -// /* rotate the grey vector back into place */ -// yrotatemat(mat,-yrs,yrc); -// xrotatemat(mat,-xrs,xrc); -//} - -/* - * huerotatemat - - * rotate the hue, while maintaining luminance. - */ -static void huerotatemat(mat,rot) -float mat[4][4]; -float rot; -{ - float mmat[4][4]; - float mag; - float lx, ly, lz; - float xrs, xrc; - float yrs, yrc; - float zrs, zrc; - float zsx, zsy; - - identmat(mmat); - - /* rotate the grey vector into positive Z */ - mag = sqrt(2.0); - xrs = 1.0/mag; - xrc = 1.0/mag; - xrotatemat(mmat,xrs,xrc); - mag = sqrt(3.0); - yrs = -1.0/mag; - yrc = sqrt(2.0)/mag; - yrotatemat(mmat,yrs,yrc); - - /* shear the space to make the luminance plane horizontal */ - xformpnt(mmat,RLUM,GLUM,BLUM,&lx,&ly,&lz); - zsx = lx/lz; - zsy = ly/lz; - zshearmat(mmat,zsx,zsy); - - /* rotate the hue */ - zrs = sin(rot*M_PI/180.0); - zrc = cos(rot*M_PI/180.0); - zrotatemat(mmat,zrs,zrc); - - /* unshear the space to put the luminance plane back */ - zshearmat(mmat,-zsx,-zsy); - - /* rotate the grey vector back into place */ - yrotatemat(mmat,-yrs,yrc); - xrotatemat(mmat,-xrs,xrc); - - matrixmult(mmat,mat,mat); -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m deleted file mode 100644 index 1b621c6a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.m +++ /dev/null @@ -1,79 +0,0 @@ -#import "GPUImageHalftoneFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHalftoneFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - uniform highp float dotScaling; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - - lowp vec3 sampledColor = texture2D(inputImageTexture, samplePos ).rgb; - highp float dotScaling = 1.0 - dot(sampledColor, W); - - lowp float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); - } -); -#else -NSString *const kGPUImageHalftoneFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - uniform float dotScaling; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - - vec3 sampledColor = texture2D(inputImageTexture, samplePos ).rgb; - float dotScaling = 1.0 - dot(sampledColor, W); - - float checkForPresenceWithinDot = 1.0 - step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - gl_FragColor = vec4(vec3(checkForPresenceWithinDot), 1.0); - } -); -#endif - -@implementation GPUImageHalftoneFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHalftoneFragmentShaderString])) - { - return nil; - } - - self.fractionalWidthOfAPixel = 0.01; - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m deleted file mode 100755 index 2896ce82..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.m +++ /dev/null @@ -1,99 +0,0 @@ -#import "GPUImageHardLightBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHardLightBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - highp float ra; - if (2.0 * overlay.r < overlay.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - highp float ga; - if (2.0 * overlay.g < overlay.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - highp float ba; - if (2.0 * overlay.b < overlay.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#else -NSString *const kGPUImageHardLightBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float ra; - if (2.0 * overlay.r < overlay.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - float ga; - if (2.0 * overlay.g < overlay.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - float ba; - if (2.0 * overlay.b < overlay.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#endif - - -@implementation GPUImageHardLightBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHardLightBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m deleted file mode 100755 index 999748dd..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.m +++ /dev/null @@ -1,292 +0,0 @@ -#import "GPUImageHarrisCornerDetectionFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageXYDerivativeFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" -#import "GPUImageColorPackingFilter.h" -#import "GPUImageGaussianBlurFilter.h" - -@interface GPUImageHarrisCornerDetectionFilter() - -- (void)extractCornerLocationsFromImageAtFrameTime:(CMTime)frameTime; - -@end - -// This is the Harris corner detector, as described in -// C. Harris and M. Stephens. A Combined Corner and Edge Detector. Proc. Alvey Vision Conf., Univ. Manchester, pp. 147-151, 1988. - -@implementation GPUImageHarrisCornerDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHarrisCornerDetectionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float sensitivity; - - const mediump float harrisConstant = 0.04; - - void main() - { - mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - mediump float derivativeSum = derivativeElements.x + derivativeElements.y; - - mediump float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - mediump float cornerness = derivativeElements.x * derivativeElements.y - (zElement * zElement) - harrisConstant * derivativeSum * derivativeSum; - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#else -NSString *const kGPUImageHarrisCornerDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float sensitivity; - - const float harrisConstant = 0.04; - - void main() - { - vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - float derivativeSum = derivativeElements.x + derivativeElements.y; - - float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - float cornerness = derivativeElements.x * derivativeElements.y - (zElement * zElement) - harrisConstant * derivativeSum * derivativeSum; - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#endif - -@synthesize blurRadiusInPixels; -@synthesize cornersDetectedBlock; -@synthesize sensitivity = _sensitivity; -@synthesize threshold = _threshold; -@synthesize intermediateImages = _intermediateImages; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageHarrisCornerDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithCornerDetectionFragmentShader:(NSString *)cornerDetectionFragmentShader; -{ - if (!(self = [super init])) - { - return nil; - } - -#ifdef DEBUGFEATUREDETECTION - _intermediateImages = [[NSMutableArray alloc] init]; -#endif - - // First pass: reduce to luminance and take the derivative of the luminance texture - derivativeFilter = [[GPUImageXYDerivativeFilter alloc] init]; - [self addFilter:derivativeFilter]; - -#ifdef DEBUGFEATUREDETECTION - __unsafe_unretained NSMutableArray *weakIntermediateImages = _intermediateImages; - __unsafe_unretained GPUImageFilter *weakFilter = derivativeFilter; - [derivativeFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - }]; -#endif - - // Second pass: blur the derivative - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - -#ifdef DEBUGFEATUREDETECTION - weakFilter = blurFilter; - [blurFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - }]; -#endif - - // Third pass: apply the Harris corner detection calculation - harrisCornerDetectionFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromString:cornerDetectionFragmentShader]; - [self addFilter:harrisCornerDetectionFilter]; - -#ifdef DEBUGFEATUREDETECTION - weakFilter = harrisCornerDetectionFilter; - [harrisCornerDetectionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - }]; -#endif - - // Fourth pass: apply non-maximum suppression and thresholding to find the local maxima - nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] init]; - [self addFilter:nonMaximumSuppressionFilter]; - - __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; -#ifdef DEBUGFEATUREDETECTION - weakFilter = nonMaximumSuppressionFilter; - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; - [weakIntermediateImages addObject:intermediateImage]; - - [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; - }]; -#else - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; - }]; -#endif - -// Sixth pass: compress the thresholded points into the RGBA channels -// colorPackingFilter = [[GPUImageColorPackingFilter alloc] init]; -// [self addFilter:colorPackingFilter]; -// -// -//#ifdef DEBUGFEATUREDETECTION -// __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; -// weakFilter = colorPackingFilter; -// [colorPackingFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ -// NSLog(@"Triggered response from compaction filter"); -// -// UIImage *intermediateImage = [weakFilter imageFromCurrentlyProcessedOutput]; -// [weakIntermediateImages addObject:intermediateImage]; -// -// [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; -// }]; -//#else -// __unsafe_unretained GPUImageHarrisCornerDetectionFilter *weakSelf = self; -// [colorPackingFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { -// [weakSelf extractCornerLocationsFromImageAtFrameTime:frameTime]; -// }]; -//#endif - - [derivativeFilter addTarget:blurFilter]; - [blurFilter addTarget:harrisCornerDetectionFilter]; - [harrisCornerDetectionFilter addTarget:nonMaximumSuppressionFilter]; -// [simpleThresholdFilter addTarget:colorPackingFilter]; - - self.initialFilters = [NSArray arrayWithObjects:derivativeFilter, nil]; -// self.terminalFilter = colorPackingFilter; - self.terminalFilter = nonMaximumSuppressionFilter; - - self.blurRadiusInPixels = 2.0; - self.sensitivity = 5.0; - self.threshold = 0.20; - - return self; -} - -- (void)dealloc; -{ - free(rawImagePixels); - free(cornersArray); -} - -#pragma mark - -#pragma mark Corner extraction - -- (void)extractCornerLocationsFromImageAtFrameTime:(CMTime)frameTime; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger numberOfCorners = 0; - CGSize imageSize = nonMaximumSuppressionFilter.outputFrameSize; - - unsigned int imageByteSize = imageSize.width * imageSize.height * 4; - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(imageByteSize); - cornersArray = calloc(512 * 2, sizeof(GLfloat)); - } - - glReadPixels(0, 0, (int)imageSize.width, (int)imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - unsigned int imageWidth = imageSize.width * 4; - - unsigned int currentByte = 0; - unsigned int cornerStorageIndex = 0; - while (currentByte < imageByteSize) - { - GLubyte colorByte = rawImagePixels[currentByte]; - - if (colorByte > 0) - { - unsigned int xCoordinate = currentByte % imageWidth; - unsigned int yCoordinate = currentByte / imageWidth; - - cornersArray[cornerStorageIndex++] = (CGFloat)(xCoordinate / 4) / imageSize.width; - cornersArray[cornerStorageIndex++] = (CGFloat)(yCoordinate) / imageSize.height; - numberOfCorners++; - - numberOfCorners = MIN(numberOfCorners, 511); - cornerStorageIndex = MIN(cornerStorageIndex, 1021); - } - currentByte +=4; - } - - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - NSLog(@"Processing time : %f ms", 1000.0 * currentFrameTime); - - if (cornersDetectedBlock != NULL) - { - cornersDetectedBlock(cornersArray, numberOfCorners, frameTime); - } -} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setSensitivity:(CGFloat)newValue; -{ - _sensitivity = newValue; - [harrisCornerDetectionFilter setFloat:newValue forUniformName:@"sensitivity"]; -} - -- (void)setThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.threshold = newValue; -} - -- (CGFloat)threshold; -{ - return nonMaximumSuppressionFilter.threshold; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m deleted file mode 100755 index f90fc22f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "GPUImageHazeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHazeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform lowp float hazeDistance; - uniform highp float slope; - - void main() - { - //todo reconsider precision modifiers - highp vec4 color = vec4(1.0);//todo reimplement as a parameter - - highp float d = textureCoordinate.y * slope + hazeDistance; - - highp vec4 c = texture2D(inputImageTexture, textureCoordinate) ; // consider using unpremultiply - - c = (c - d * color) / (1.0 -d); - - gl_FragColor = c; //consider using premultiply(c); - } -); -#else -NSString *const kGPUImageHazeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float hazeDistance; - uniform float slope; - - void main() - { - //todo reconsider precision modifiers - vec4 color = vec4(1.0);//todo reimplement as a parameter - - float d = textureCoordinate.y * slope + hazeDistance; - - vec4 c = texture2D(inputImageTexture, textureCoordinate) ; // consider using unpremultiply - - c = (c - d * color) / (1.0 -d); - - gl_FragColor = c; //consider using premultiply(c); - } -); -#endif - - - - -@implementation GPUImageHazeFilter - -@synthesize distance = _distance; -@synthesize slope = _slope; -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHazeFragmentShaderString])) - { - return nil; - } - - distanceUniform = [filterProgram uniformIndex:@"hazeDistance"]; - slopeUniform = [filterProgram uniformIndex:@"slope"]; - - self.distance = 0.2; - self.slope = 0.0; - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setDistance:(CGFloat)newValue; -{ - _distance = newValue; - - [self setFloat:_distance forUniform:distanceUniform program:filterProgram]; -} - -- (void)setSlope:(CGFloat)newValue; -{ - _slope = newValue; - - [self setFloat:_slope forUniform:slopeUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m deleted file mode 100644 index 511240d8..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.m +++ /dev/null @@ -1,46 +0,0 @@ -#import "GPUImageHighPassFilter.h" - -@implementation GPUImageHighPassFilter - -@synthesize filterStrength; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // Start with a low pass filter to define the component to be removed - lowPassFilter = [[GPUImageLowPassFilter alloc] init]; - [self addFilter:lowPassFilter]; - - // Take the difference of the current frame from the low pass filtered result to get the high pass - differenceBlendFilter = [[GPUImageDifferenceBlendFilter alloc] init]; - [self addFilter:differenceBlendFilter]; - - // Texture location 0 needs to be the original image for the difference blend - [lowPassFilter addTarget:differenceBlendFilter atTextureLocation:1]; - - self.initialFilters = [NSArray arrayWithObjects:lowPassFilter, differenceBlendFilter, nil]; - self.terminalFilter = differenceBlendFilter; - - self.filterStrength = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setFilterStrength:(CGFloat)newValue; -{ - lowPassFilter.filterStrength = newValue; -} - -- (CGFloat)filterStrength; -{ - return lowPassFilter.filterStrength; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m deleted file mode 100644 index aa92b740..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.m +++ /dev/null @@ -1,93 +0,0 @@ -#import "GPUImageHighlightShadowFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHighlightShadowFragmentShaderString = SHADER_STRING -( -uniform sampler2D inputImageTexture; -varying highp vec2 textureCoordinate; - -uniform lowp float shadows; -uniform lowp float highlights; - -const mediump vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); - -void main() -{ - lowp vec4 source = texture2D(inputImageTexture, textureCoordinate); - mediump float luminance = dot(source.rgb, luminanceWeighting); - - mediump float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); - mediump float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); - lowp vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); - - gl_FragColor = vec4(result.rgb, source.a); -} -); -#else -NSString *const kGPUImageHighlightShadowFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying vec2 textureCoordinate; - - uniform float shadows; - uniform float highlights; - - const vec3 luminanceWeighting = vec3(0.3, 0.3, 0.3); - - void main() - { - vec4 source = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(source.rgb, luminanceWeighting); - - float shadow = clamp((pow(luminance, 1.0/(shadows+1.0)) + (-0.76)*pow(luminance, 2.0/(shadows+1.0))) - luminance, 0.0, 1.0); - float highlight = clamp((1.0 - (pow(1.0-luminance, 1.0/(2.0-highlights)) + (-0.8)*pow(1.0-luminance, 2.0/(2.0-highlights)))) - luminance, -1.0, 0.0); - vec3 result = vec3(0.0, 0.0, 0.0) + ((luminance + shadow + highlight) - 0.0) * ((source.rgb - vec3(0.0, 0.0, 0.0))/(luminance - 0.0)); - - gl_FragColor = vec4(result.rgb, source.a); - } -); -#endif - -@implementation GPUImageHighlightShadowFilter - -@synthesize shadows = _shadows; -@synthesize highlights = _highlights; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHighlightShadowFragmentShaderString])) - { - return nil; - } - - shadowsUniform = [filterProgram uniformIndex:@"shadows"]; - highlightsUniform = [filterProgram uniformIndex:@"highlights"]; - - self.shadows = 0.0; - self.highlights = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setShadows:(CGFloat)newValue; -{ - _shadows = newValue; - - [self setFloat:_shadows forUniform:shadowsUniform program:filterProgram]; -} - -- (void)setHighlights:(CGFloat)newValue; -{ - _highlights = newValue; - - [self setFloat:_highlights forUniform:highlightsUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h deleted file mode 100644 index 166c5c8c..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// GPUImageHighlightShadowTintFilter.h -// -// -// Created by github.com/r3mus on 8/14/15. -// -// - -#import "GPUImageFilter.h" - -@interface GPUImageHighlightShadowTintFilter : GPUImageFilter -{ - GLint shadowTintIntensityUniform, highlightTintIntensityUniform, shadowTintColorUniform, highlightTintColorUniform; -} - -// The shadowTint and highlightTint colors specify what colors replace the dark and light areas of the image, respectively. The defaults for shadows are black, highlighs white. -@property(readwrite, nonatomic) GLfloat shadowTintIntensity; -@property(readwrite, nonatomic) GPUVector4 shadowTintColor; -@property(readwrite, nonatomic) GLfloat highlightTintIntensity; -@property(readwrite, nonatomic) GPUVector4 highlightTintColor; - -- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m deleted file mode 100644 index 54bc0850..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowTintFilter.m +++ /dev/null @@ -1,136 +0,0 @@ -// -// GPUImageHighlightShadowTintFilter.m -// -// Created by github.com/r3mus on 8/14/15. -// -// - -#import "GPUImageHighlightShadowTintFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUHighlightShadowTintFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float shadowTintIntensity; - uniform lowp float highlightTintIntensity; - uniform highp vec4 shadowTintColor; - uniform highp vec4 highlightTintColor; - - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - highp float luminance = dot(textureColor.rgb, luminanceWeighting); - - highp vec4 shadowResult = mix(textureColor, max(textureColor, vec4( mix(shadowTintColor.rgb, textureColor.rgb, luminance), textureColor.a)), shadowTintIntensity); - highp vec4 highlightResult = mix(textureColor, min(shadowResult, vec4( mix(shadowResult.rgb, highlightTintColor.rgb, luminance), textureColor.a)), highlightTintIntensity); - - gl_FragColor = vec4( mix(shadowResult.rgb, highlightResult.rgb, luminance), textureColor.a); - } - ); -#else -NSString *const kGPUHighlightShadowTintFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float shadowTintIntensity; - uniform float highlightTintIntensity; - uniform vec3 shadowTintColor; - uniform vec3 highlightTintColor; - - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - vec4 shadowResult = mix(textureColor, max(textureColor, vec4( mix(shadowTintColor.rgb, textureColor.rgb, luminance), textureColor.a)), shadowTintIntensity); - vec4 highlightResult = mix(textureColor, min(shadowResult, vec4( mix(shadowResult.rgb, highlightTintColor.rgb, luminance), textureColor.a)), highlightTintIntensity); - - gl_FragColor = vec4( mix(shadowResult.rgb, highlightResult.rgb, luminance), textureColor.a); - } - ); -#endif - - -@implementation GPUImageHighlightShadowTintFilter - -@synthesize shadowTintIntensity = _shadowTintIntensity; -@synthesize highlightTintIntensity = _highlightTintIntensity; -@synthesize shadowTintColor = _shadowTintColor; -@synthesize highlightTintColor = _highlightTintColor; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUHighlightShadowTintFragmentShaderString])) - { - return nil; - } - - shadowTintIntensityUniform = [filterProgram uniformIndex:@"shadowTintIntensity"]; - highlightTintIntensityUniform = [filterProgram uniformIndex:@"highlightTintIntensity"]; - shadowTintColorUniform = [filterProgram uniformIndex:@"shadowTintColor"]; - highlightTintColorUniform = [filterProgram uniformIndex:@"highlightTintColor"]; - - self.shadowTintIntensity = 0.0f; - self.highlightTintIntensity = 0.0f; - self.shadowTintColor = (GPUVector4){1.0f, 0.0f, 0.0f, 1.0f}; - self.highlightTintColor = (GPUVector4){0.0f, 0.0f, 1.0f, 1.0f}; - - return self; -} - - -#pragma mark - -#pragma mark Accessors - -- (void)setShadowTintIntensity:(GLfloat)newValue -{ - _shadowTintIntensity = newValue; - - [self setFloat:_shadowTintIntensity forUniform:shadowTintIntensityUniform program:filterProgram]; -} - -- (void)setHighlightTintIntensity:(GLfloat)newValue -{ - _highlightTintIntensity = newValue; - - [self setFloat:_highlightTintIntensity forUniform:highlightTintIntensityUniform program:filterProgram]; -} - -- (void)setShadowTintColor:(GPUVector4)newValue; -{ - _shadowTintColor = newValue; - - [self setShadowTintColorRed:_shadowTintColor.one green:_shadowTintColor.two blue:_shadowTintColor.three alpha:_shadowTintColor.four]; -} - -- (void)setHighlightTintColor:(GPUVector4)newValue; -{ - _highlightTintColor = newValue; - - [self setHighlightTintColorRed:_highlightTintColor.one green:_highlightTintColor.two blue:_highlightTintColor.three alpha:_highlightTintColor.four]; -} - -- (void)setShadowTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ - GPUVector4 shadowTintColor = {redComponent, greenComponent, blueComponent, alphaComponent}; - - [self setVec4:shadowTintColor forUniform:shadowTintColorUniform program:filterProgram]; -} - -- (void)setHighlightTintColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ - GPUVector4 highlightTintColor = {redComponent, greenComponent, blueComponent, alphaComponent}; - - [self setVec4:highlightTintColor forUniform:highlightTintColorUniform program:filterProgram]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m deleted file mode 100644 index 7d6b9a2d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.m +++ /dev/null @@ -1,307 +0,0 @@ -// -// GPUImageHistogramEqualizationFilter.m -// FilterShowcase -// -// Created by Adam Marcus on 19/08/2014. -// Copyright (c) 2014 Sunset Lake Software LLC. All rights reserved. -// - -#import "GPUImageHistogramEqualizationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRedHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - - gl_FragColor = vec4(redCurveValue, textureColor.g, textureColor.b, textureColor.a); - } - ); -#else -NSString *const kGPUImageRedHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - - gl_FragColor = vec4(redCurveValue, textureColor.g, textureColor.b, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGreenHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - - gl_FragColor = vec4(textureColor.r, greenCurveValue, textureColor.b, textureColor.a); - } - ); -#else -NSString *const kGPUImageGreenHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - - gl_FragColor = vec4(textureColor.r, greenCurveValue, textureColor.b, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageBlueHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(textureColor.r, textureColor.g, blueCurveValue, textureColor.a); - } - ); -#else -NSString *const kGPUImageBlueHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(textureColor.r, textureColor.g, blueCurveValue, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - lowp float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - lowp float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); - } - ); -#else -NSString *const kGPUImageRGBHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float redCurveValue = texture2D(inputImageTexture2, vec2(textureColor.r, 0.0)).r; - float greenCurveValue = texture2D(inputImageTexture2, vec2(textureColor.g, 0.0)).g; - float blueCurveValue = texture2D(inputImageTexture2, vec2(textureColor.b, 0.0)).b; - - gl_FragColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, textureColor.a); - } - ); -#endif - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const lowp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float luminance = dot(textureColor.rgb, W); - lowp float newLuminance = texture2D(inputImageTexture2, vec2(luminance, 0.0)).r; - lowp float deltaLuminance = newLuminance - luminance; - - lowp float red = clamp(textureColor.r + deltaLuminance, 0.0, 1.0); - lowp float green = clamp(textureColor.g + deltaLuminance, 0.0, 1.0); - lowp float blue = clamp(textureColor.b + deltaLuminance, 0.0, 1.0); - - gl_FragColor = vec4(red, green, blue, textureColor.a); - } - ); -#else -NSString *const kGPUImageLuminanceHistogramEqualizationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - float newLuminance = texture2D(inputImageTexture2, vec2(luminance, 0.0)).r; - float deltaLuminance = newLuminance - luminance; - - float red = clamp(textureColor.r + deltaLuminance, 0.0, 1.0); - float green = clamp(textureColor.g + deltaLuminance, 0.0, 1.0); - float blue = clamp(textureColor.b + deltaLuminance, 0.0, 1.0); - - gl_FragColor = vec4(red, green, blue, textureColor.a); - } - ); -#endif - -@implementation GPUImageHistogramEqualizationFilter - -@synthesize downsamplingFactor = _downsamplingFactor; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [self initWithHistogramType:kGPUImageHistogramRGB])) - { - return nil; - } - - return self; -} - -- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType -{ - if (!(self = [super init])) - { - return nil; - } - - histogramFilter = [[GPUImageHistogramFilter alloc] initWithHistogramType:newHistogramType]; - [self addFilter:histogramFilter]; - - GLubyte dummyInput[4 * 256]; // NB: No way to initialise GPUImageRawDataInput without providing bytes - rawDataInputFilter = [[GPUImageRawDataInput alloc] initWithBytes:dummyInput size:CGSizeMake(256.0, 1.0) pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte]; - rawDataOutputFilter = [[GPUImageRawDataOutput alloc] initWithImageSize:CGSizeMake(256.0, 3.0) resultsInBGRAFormat:YES]; - - __unsafe_unretained GPUImageRawDataOutput *_rawDataOutputFilter = rawDataOutputFilter; - __unsafe_unretained GPUImageRawDataInput *_rawDataInputFilter = rawDataInputFilter; - [rawDataOutputFilter setNewFrameAvailableBlock:^{ - - unsigned int histogramBins[3][256]; - - [_rawDataOutputFilter lockFramebufferForReading]; - - GLubyte *data = [_rawDataOutputFilter rawBytesForImage]; - data += [_rawDataOutputFilter bytesPerRowInOutput]; - - histogramBins[0][0] = *data++; - histogramBins[1][0] = *data++; - histogramBins[2][0] = *data++; - data++; - - for (unsigned int x = 1; x < 256; x++) { - histogramBins[0][x] = histogramBins[0][x-1] + *data++; - histogramBins[1][x] = histogramBins[1][x-1] + *data++; - histogramBins[2][x] = histogramBins[2][x-1] + *data++; - data++; - } - - [_rawDataOutputFilter unlockFramebufferAfterReading]; - - GLubyte colorMapping[4 * 256]; - GLubyte *_colorMapping = colorMapping; - - for (unsigned int x = 0; x < 256; x++) { - *_colorMapping++ = (GLubyte) (((histogramBins[0][x] - histogramBins[0][0]) * 255) / histogramBins[0][255]); - *_colorMapping++ = (GLubyte) (((histogramBins[1][x] - histogramBins[1][0]) * 255) / histogramBins[1][255]); - *_colorMapping++ = (GLubyte) (((histogramBins[2][x] - histogramBins[2][0]) * 255) / histogramBins[2][255]); - *_colorMapping++ = 255; - } - - _colorMapping = colorMapping; - [_rawDataInputFilter updateDataFromBytes:_colorMapping size:CGSizeMake(256.0, 1.0)]; - [_rawDataInputFilter processData]; - }]; - [histogramFilter addTarget:rawDataOutputFilter]; - - NSString *fragmentShader = nil; - switch (newHistogramType) { - case kGPUImageHistogramRed: - fragmentShader = kGPUImageRedHistogramEqualizationFragmentShaderString; - break; - case kGPUImageHistogramGreen: - fragmentShader = kGPUImageGreenHistogramEqualizationFragmentShaderString; - break; - case kGPUImageHistogramBlue: - fragmentShader = kGPUImageBlueHistogramEqualizationFragmentShaderString; - break; - default: - case kGPUImageHistogramRGB: - fragmentShader = kGPUImageRGBHistogramEqualizationFragmentShaderString; - break; - case kGPUImageHistogramLuminance: - fragmentShader = kGPUImageLuminanceHistogramEqualizationFragmentShaderString; - break; - } - GPUImageFilter *equalizationFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:fragmentShader]; - [rawDataInputFilter addTarget:equalizationFilter atTextureLocation:1]; - - [self addFilter:equalizationFilter]; - - self.initialFilters = [NSArray arrayWithObjects:histogramFilter, equalizationFilter, nil]; - self.terminalFilter = equalizationFilter; - - self.downsamplingFactor = 16; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setDownsamplingFactor:(NSUInteger)newValue; -{ - if (_downsamplingFactor != newValue) - { - _downsamplingFactor = newValue; - histogramFilter.downsamplingFactor = newValue; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m deleted file mode 100755 index bb7acce7..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.m +++ /dev/null @@ -1,341 +0,0 @@ -#import "GPUImageHistogramFilter.h" - -// Unlike other filters, this one uses a grid of GL_POINTs to sample the incoming image in a grid. A custom vertex shader reads the color in the texture at its position -// and outputs a bin position in the final histogram as the vertex position. That point is then written into the image of the histogram using translucent pixels. -// The degree of translucency is controlled by the scalingFactor, which lets you adjust the dynamic range of the histogram. The histogram can only be generated for one -// color channel or luminance value at a time. -// -// This is based on this implementation: http://www.shaderwrangler.com/publications/histogram/histogram_cameraready.pdf -// -// Or at least that's how it would work if iOS could read from textures in a vertex shader, which it can't. Therefore, I read the texture data down from the -// incoming frame and process the texture colors as vertices. - -NSString *const kGPUImageRedHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - void main() - { - colorFactor = vec3(1.0, 0.0, 0.0); - gl_Position = vec4(-1.0 + (position.x * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -NSString *const kGPUImageGreenHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - void main() - { - colorFactor = vec3(0.0, 1.0, 0.0); - gl_Position = vec4(-1.0 + (position.y * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -NSString *const kGPUImageBlueHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - void main() - { - colorFactor = vec3(0.0, 0.0, 1.0); - gl_Position = vec4(-1.0 + (position.z * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -NSString *const kGPUImageLuminanceHistogramSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - varying vec3 colorFactor; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float luminance = dot(position.xyz, W); - - colorFactor = vec3(1.0, 1.0, 1.0); - gl_Position = vec4(-1.0 + (luminance * 0.0078125), 0.0, 0.0, 1.0); - gl_PointSize = 1.0; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHistogramAccumulationFragmentShaderString = SHADER_STRING -( - const lowp float scalingFactor = 1.0 / 256.0; - - varying lowp vec3 colorFactor; - - void main() - { - gl_FragColor = vec4(colorFactor * scalingFactor , 1.0); - } -); -#else -NSString *const kGPUImageHistogramAccumulationFragmentShaderString = SHADER_STRING -( - const float scalingFactor = 1.0 / 256.0; - - varying vec3 colorFactor; - - void main() - { - gl_FragColor = vec4(colorFactor * scalingFactor , 1.0); - } -); -#endif - -@implementation GPUImageHistogramFilter - -@synthesize downsamplingFactor = _downsamplingFactor; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithHistogramType:(GPUImageHistogramType)newHistogramType; -{ - switch (newHistogramType) - { - case kGPUImageHistogramRed: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageRedHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramGreen: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageGreenHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramBlue: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageBlueHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramLuminance: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageLuminanceHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - }; break; - case kGPUImageHistogramRGB: - { - if (!(self = [super initWithVertexShaderFromString:kGPUImageRedHistogramSamplingVertexShaderString fragmentShaderFromString:kGPUImageHistogramAccumulationFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageGreenHistogramSamplingVertexShaderString fragmentShaderString:kGPUImageHistogramAccumulationFragmentShaderString]; - thirdFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageBlueHistogramSamplingVertexShaderString fragmentShaderString:kGPUImageHistogramAccumulationFragmentShaderString]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - - } - - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - - if (![thirdFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - - - thirdFilterPositionAttribute = [thirdFilterProgram attributeIndex:@"position"]; - [GPUImageContext setActiveShaderProgram:thirdFilterProgram]; - - glEnableVertexAttribArray(thirdFilterPositionAttribute); - }); - }; break; - } - - histogramType = newHistogramType; - - self.downsamplingFactor = 16; - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithHistogramType:kGPUImageHistogramRGB])) - { - return nil; - } - - return self; -} - -- (void)initializeSecondaryAttributes; -{ - [secondFilterProgram addAttribute:@"position"]; - [thirdFilterProgram addAttribute:@"position"]; -} - -- (void)dealloc; -{ - if (vertexSamplingCoordinates != NULL && ![GPUImageContext supportsFastTextureUpload]) - { - free(vertexSamplingCoordinates); - } -} - -#pragma mark - -#pragma mark Rendering - -- (CGSize)sizeOfFBO; -{ - return CGSizeMake(256.0, 3.0); -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - [self renderToTextureWithVertices:NULL textureCoordinates:NULL]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (CGSize)outputFrameSize; -{ - return [self sizeOfFBO]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (self.preventRendering) - { - return; - } - - inputTextureSize = newSize; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = kGPUImageNoRotation; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext useImageProcessingContext]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - glFinish(); - vertexSamplingCoordinates = [firstInputFramebuffer byteBuffer]; - } else { - if (vertexSamplingCoordinates == NULL) - { - vertexSamplingCoordinates = calloc(inputTextureSize.width * inputTextureSize.height * 4, sizeof(GLubyte)); - } - glReadPixels(0, 0, inputTextureSize.width, inputTextureSize.height, GL_RGBA, GL_UNSIGNED_BYTE, vertexSamplingCoordinates); - } - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - - glVertexAttribPointer(filterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); - glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); - - if (histogramType == kGPUImageHistogramRGB) - { - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glVertexAttribPointer(secondFilterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); - glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); - - [GPUImageContext setActiveShaderProgram:thirdFilterProgram]; - - glVertexAttribPointer(thirdFilterPositionAttribute, 4, GL_UNSIGNED_BYTE, 0, ((unsigned int)_downsamplingFactor - 1) * 4, vertexSamplingCoordinates); - glDrawArrays(GL_POINTS, 0, inputTextureSize.width * inputTextureSize.height / (CGFloat)_downsamplingFactor); - } - - glDisable(GL_BLEND); - [firstInputFramebuffer unlock]; - - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark Accessors - -//- (void)setScalingFactor:(CGFloat)newValue; -//{ -// _scalingFactor = newValue; -// -// [GPUImageContext useImageProcessingContext]; -// [filterProgram use]; -// glUniform1f(scalingFactorUniform, _scalingFactor); -//} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m deleted file mode 100755 index 703795df..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.m +++ /dev/null @@ -1,87 +0,0 @@ -#import "GPUImageHistogramGenerator.h" - -NSString *const kGPUImageHistogramGeneratorVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - varying vec2 textureCoordinate; - varying float height; - - void main() - { - gl_Position = position; - textureCoordinate = vec2(inputTextureCoordinate.x, 0.5); - height = 1.0 - inputTextureCoordinate.y; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHistogramGeneratorFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp float height; - - uniform sampler2D inputImageTexture; - uniform lowp vec4 backgroundColor; - - void main() - { - lowp vec3 colorChannels = texture2D(inputImageTexture, textureCoordinate).rgb; - lowp vec4 heightTest = vec4(step(height, colorChannels), 1.0); - gl_FragColor = mix(backgroundColor, heightTest, heightTest.r + heightTest.g + heightTest.b); - } -); -#else -NSString *const kGPUImageHistogramGeneratorFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying float height; - - uniform sampler2D inputImageTexture; - uniform vec4 backgroundColor; - - void main() - { - vec3 colorChannels = texture2D(inputImageTexture, textureCoordinate).rgb; - vec4 heightTest = vec4(step(height, colorChannels), 1.0); - gl_FragColor = mix(backgroundColor, heightTest, heightTest.r + heightTest.g + heightTest.b); - } -); -#endif - -@implementation GPUImageHistogramGenerator - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageHistogramGeneratorVertexShaderString fragmentShaderFromString:kGPUImageHistogramGeneratorFragmentShaderString])) - { - return nil; - } - - backgroundColorUniform = [filterProgram uniformIndex:@"backgroundColor"]; - - [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:0.0]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ -// GLfloat backgroundColor[4]; -// backgroundColor[0] = redComponent; -// backgroundColor[1] = greenComponent; -// backgroundColor[2] = blueComponent; -// backgroundColor[3] = alphaComponent; - GPUVector4 backgroundColor = {redComponent, greenComponent, blueComponent, alphaComponent}; - - [self setVec4:backgroundColor forUniform:backgroundColorUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m b/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m deleted file mode 100644 index 8289eb80..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.m +++ /dev/null @@ -1,241 +0,0 @@ -#import "GPUImageHoughTransformLineDetector.h" - -@interface GPUImageHoughTransformLineDetector() - -- (void)extractLineParametersFromImageAtFrameTime:(CMTime)frameTime; - -@end - -@implementation GPUImageHoughTransformLineDetector - -@synthesize linesDetectedBlock; -@synthesize edgeThreshold; -@synthesize lineDetectionThreshold; -@synthesize intermediateImages = _intermediateImages; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: do edge detection and threshold that to just have white pixels for edges -// if ([GPUImageContext deviceSupportsFramebufferReads]) -// if ([GPUImageContext deviceSupportsFramebufferReads]) -// { -// thresholdEdgeDetectionFilter = [[GPUImageThresholdEdgeDetectionFilter alloc] init]; -// thresholdEdgeDetectionFilter = [[GPUImageSobelEdgeDetectionFilter alloc] init]; -// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setThreshold:0.07]; -// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setEdgeStrength:0.25]; -// [(GPUImageThresholdEdgeDetectionFilter *)thresholdEdgeDetectionFilter setEdgeStrength:1.0]; -// thresholdEdgeDetectionFilter = [[GPUImageCannyEdgeDetectionFilter alloc] init]; -// } -// else -// { - thresholdEdgeDetectionFilter = [[GPUImageCannyEdgeDetectionFilter alloc] init]; -// } - [self addFilter:thresholdEdgeDetectionFilter]; - - // Second pass: extract the white points and draw representative lines in parallel coordinate space - parallelCoordinateLineTransformFilter = [[GPUImageParallelCoordinateLineTransformFilter alloc] init]; - [self addFilter:parallelCoordinateLineTransformFilter]; - - // Third pass: apply non-maximum suppression - if ([GPUImageContext deviceSupportsFramebufferReads]) - { - nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] initWithPackedColorspace:YES]; - } - else - { - nonMaximumSuppressionFilter = [[GPUImageThresholdedNonMaximumSuppressionFilter alloc] initWithPackedColorspace:NO]; - } - [self addFilter:nonMaximumSuppressionFilter]; - - __unsafe_unretained GPUImageHoughTransformLineDetector *weakSelf = self; -#ifdef DEBUGLINEDETECTION - _intermediateImages = [[NSMutableArray alloc] init]; - __unsafe_unretained NSMutableArray *weakIntermediateImages = _intermediateImages; - -// __unsafe_unretained GPUImageOutput *weakEdgeDetectionFilter = thresholdEdgeDetectionFilter; -// [thresholdEdgeDetectionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ -// [weakIntermediateImages removeAllObjects]; -// UIImage *intermediateImage = [weakEdgeDetectionFilter imageFromCurrentFramebuffer]; -// [weakIntermediateImages addObject:intermediateImage]; -// }]; -// -// __unsafe_unretained GPUImageOutput *weakParallelCoordinateLineTransformFilter = parallelCoordinateLineTransformFilter; -// [parallelCoordinateLineTransformFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ -// UIImage *intermediateImage = [weakParallelCoordinateLineTransformFilter imageFromCurrentFramebuffer]; -// [weakIntermediateImages addObject:intermediateImage]; -// }]; - - __unsafe_unretained GPUImageOutput *weakNonMaximumSuppressionFilter = nonMaximumSuppressionFilter; - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime){ - UIImage *intermediateImage = [weakNonMaximumSuppressionFilter imageFromCurrentFramebuffer]; - [weakIntermediateImages addObject:intermediateImage]; - - [weakSelf extractLineParametersFromImageAtFrameTime:frameTime]; - }]; -#else - [nonMaximumSuppressionFilter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractLineParametersFromImageAtFrameTime:frameTime]; - }]; -#endif - - [thresholdEdgeDetectionFilter addTarget:parallelCoordinateLineTransformFilter]; - [parallelCoordinateLineTransformFilter addTarget:nonMaximumSuppressionFilter]; - - self.initialFilters = [NSArray arrayWithObjects:thresholdEdgeDetectionFilter, nil]; - // self.terminalFilter = colorPackingFilter; - self.terminalFilter = nonMaximumSuppressionFilter; - -// self.edgeThreshold = 0.95; - self.lineDetectionThreshold = 0.12; - - return self; -} - -- (void)dealloc; -{ - free(rawImagePixels); - free(linesArray); -} - -#pragma mark - -#pragma mark Corner extraction - -- (void)extractLineParametersFromImageAtFrameTime:(CMTime)frameTime; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger numberOfLines = 0; - CGSize imageSize = nonMaximumSuppressionFilter.outputFrameSize; - - unsigned int imageByteSize = imageSize.width * imageSize.height * 4; - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(imageByteSize); - linesArray = calloc(1024 * 2, sizeof(GLfloat)); - } - - glReadPixels(0, 0, (int)imageSize.width, (int)imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - unsigned int imageWidth = imageSize.width * 4; - - unsigned int currentByte = 0; - unsigned int cornerStorageIndex = 0; - unsigned long lineStrengthCounter = 0; - while (currentByte < imageByteSize) - { - GLubyte colorByte = rawImagePixels[currentByte]; -// NSLog(@"(%d,%d): [%d,%d,%d,%d]", xCoordinate, yCoordinate, rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); -// NSLog(@"[%d,%d,%d,%d]", rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); - - if (colorByte > 0) - { - unsigned int xCoordinate = currentByte % imageWidth; - unsigned int yCoordinate = currentByte / imageWidth; - - lineStrengthCounter += colorByte; -// NSLog(@"(%d,%d): [%d,%d,%d,%d]", xCoordinate, yCoordinate, rawImagePixels[currentByte], rawImagePixels[currentByte+1], rawImagePixels[currentByte+2], rawImagePixels[currentByte+3]); - - CGFloat normalizedXCoordinate = -1.0 + 2.0 * (CGFloat)(xCoordinate / 4) / imageSize.width; - CGFloat normalizedYCoordinate = -1.0 + 2.0 * (CGFloat)(yCoordinate) / imageSize.height; - - if (normalizedXCoordinate < 0.0) - { - // T space - // m = -1 - d/u - // b = d * v/u - if (normalizedXCoordinate > -0.05) // Test for the case right near the X axis, stamp the X intercept instead of the Y - { - linesArray[cornerStorageIndex++] = 100000.0; - linesArray[cornerStorageIndex++] = normalizedYCoordinate; - } - else - { - linesArray[cornerStorageIndex++] = -1.0 - 1.0 / normalizedXCoordinate; - linesArray[cornerStorageIndex++] = 1.0 * normalizedYCoordinate / normalizedXCoordinate; - } - } - else - { - // S space - // m = 1 - d/u - // b = d * v/u - if (normalizedXCoordinate < 0.05) // Test for the case right near the X axis, stamp the X intercept instead of the Y - { - linesArray[cornerStorageIndex++] = 100000.0; - linesArray[cornerStorageIndex++] = normalizedYCoordinate; - } - else - { - linesArray[cornerStorageIndex++] = 1.0 - 1.0 / normalizedXCoordinate; - linesArray[cornerStorageIndex++] = 1.0 * normalizedYCoordinate / normalizedXCoordinate; - } - } - - numberOfLines++; - - numberOfLines = MIN(numberOfLines, 1023); - cornerStorageIndex = MIN(cornerStorageIndex, 2040); - } - currentByte +=4; - } - -// CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Processing time : %f ms", 1000.0 * currentFrameTime); - - if (linesDetectedBlock != NULL) - { - linesDetectedBlock(linesArray, numberOfLines, frameTime); - } -} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -#pragma mark - -#pragma mark Accessors - -//- (void)setEdgeThreshold:(CGFloat)newValue; -//{ -// [(GPUImageCannyEdgeDetectionFilter *)thresholdEdgeDetectionFilter setThreshold:newValue]; -//} -// -//- (CGFloat)edgeThreshold; -//{ -// return [(GPUImageCannyEdgeDetectionFilter *)thresholdEdgeDetectionFilter threshold]; -//} - -- (void)setLineDetectionThreshold:(CGFloat)newValue; -{ - nonMaximumSuppressionFilter.threshold = newValue; -} - -- (CGFloat)lineDetectionThreshold; -{ - return nonMaximumSuppressionFilter.threshold; -} - -#ifdef DEBUGLINEDETECTION -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ -// [thresholdEdgeDetectionFilter useNextFrameForImageCapture]; -// [parallelCoordinateLineTransformFilter useNextFrameForImageCapture]; - [nonMaximumSuppressionFilter useNextFrameForImageCapture]; - - [super newFrameReadyAtTime:frameTime atIndex:textureIndex]; -} -#endif - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m deleted file mode 100644 index f9dfbbb8..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.m +++ /dev/null @@ -1,212 +0,0 @@ -#import "GPUImageHueBlendFilter.h" - -/** - * Hue blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHueBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - highp float sat(lowp vec3 c) { - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - return x - n; - } - - lowp float mid(lowp float cmin, lowp float cmid, lowp float cmax, highp float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - lowp vec3 setsat(lowp vec3 c, highp float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(overlayColor.rgb, sat(baseColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageHueBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - float sat(vec3 c) { - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - return x - n; - } - - float mid(float cmin, float cmid, float cmax, float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - vec3 setsat(vec3 c, float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(overlayColor.rgb, sat(baseColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - -@implementation GPUImageHueBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageHueBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m deleted file mode 100644 index 5b42c86d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.m +++ /dev/null @@ -1,123 +0,0 @@ - -#import "GPUImageHueFilter.h" - -// Adapted from http://stackoverflow.com/questions/9234724/how-to-change-hue-of-a-texture-with-glsl - see for code and discussion -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHueFragmentShaderString = SHADER_STRING -( - precision highp float; - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform mediump float hueAdjust; - const highp vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); - const highp vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); - const highp vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); - - const highp vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); - const highp vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); - const highp vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); - - void main () - { - // Sample the input pixel - highp vec4 color = texture2D(inputImageTexture, textureCoordinate); - - // Convert to YIQ - highp float YPrime = dot (color, kRGBToYPrime); - highp float I = dot (color, kRGBToI); - highp float Q = dot (color, kRGBToQ); - - // Calculate the hue and chroma - highp float hue = atan (Q, I); - highp float chroma = sqrt (I * I + Q * Q); - - // Make the user's adjustments - hue += (-hueAdjust); //why negative rotation? - - // Convert back to YIQ - Q = chroma * sin (hue); - I = chroma * cos (hue); - - // Convert back to RGB - highp vec4 yIQ = vec4 (YPrime, I, Q, 0.0); - color.r = dot (yIQ, kYIQToR); - color.g = dot (yIQ, kYIQToG); - color.b = dot (yIQ, kYIQToB); - - // Save the result - gl_FragColor = color; - } -); -#else -NSString *const kGPUImageHueFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float hueAdjust; - const vec4 kRGBToYPrime = vec4 (0.299, 0.587, 0.114, 0.0); - const vec4 kRGBToI = vec4 (0.595716, -0.274453, -0.321263, 0.0); - const vec4 kRGBToQ = vec4 (0.211456, -0.522591, 0.31135, 0.0); - - const vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0); - const vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0); - const vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0); - - void main () - { - // Sample the input pixel - vec4 color = texture2D(inputImageTexture, textureCoordinate); - - // Convert to YIQ - float YPrime = dot (color, kRGBToYPrime); - float I = dot (color, kRGBToI); - float Q = dot (color, kRGBToQ); - - // Calculate the hue and chroma - float hue = atan (Q, I); - float chroma = sqrt (I * I + Q * Q); - - // Make the user's adjustments - hue += (-hueAdjust); //why negative rotation? - - // Convert back to YIQ - Q = chroma * sin (hue); - I = chroma * cos (hue); - - // Convert back to RGB - vec4 yIQ = vec4 (YPrime, I, Q, 0.0); - color.r = dot (yIQ, kYIQToR); - color.g = dot (yIQ, kYIQToG); - color.b = dot (yIQ, kYIQToB); - - // Save the result - gl_FragColor = color; - } -); -#endif - -@implementation GPUImageHueFilter -@synthesize hue; - -- (id)init -{ - if(! (self = [super initWithFragmentShaderFromString:kGPUImageHueFragmentShaderString]) ) - { - return nil; - } - - hueAdjustUniform = [filterProgram uniformIndex:@"hueAdjust"]; - self.hue = 90; - - return self; -} - -- (void)setHue:(CGFloat)newHue -{ - // Convert degrees to radians for hue rotation - hue = fmodf(newHue, 360.0) * M_PI/180; - [self setFloat:hue forUniform:hueAdjustUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m deleted file mode 100644 index 15835917..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.m +++ /dev/null @@ -1,446 +0,0 @@ -// adapted from unitzeroone - http://unitzeroone.com/labs/jfavoronoi/ - -#import "GPUImageJFAVoronoiFilter.h" - -// The shaders are mostly taken from UnitZeroOne's WebGL example here: -// http://unitzeroone.com/blog/2011/03/22/jump-flood-voronoi-for-webgl/ - -NSString *const kGPUImageJFAVoronoiVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float sampleStep; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(sampleStep, 0.0); - vec2 heightStep = vec2(0.0, sampleStep); - vec2 widthHeightStep = vec2(sampleStep); - vec2 widthNegativeHeightStep = vec2(sampleStep, -sampleStep); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - - topTextureCoordinate = inputTextureCoordinate.xy - heightStep; - topLeftTextureCoordinate = inputTextureCoordinate.xy - widthHeightStep; - topRightTextureCoordinate = inputTextureCoordinate.xy + widthNegativeHeightStep; - - bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; - bottomLeftTextureCoordinate = inputTextureCoordinate.xy - widthNegativeHeightStep; - bottomRightTextureCoordinate = inputTextureCoordinate.xy + widthHeightStep; - } - ); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageJFAVoronoiFragmentShaderString = SHADER_STRING -( - - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform vec2 size; - //varying vec2 textureCoordinate; - //uniform float sampleStep; - - vec2 getCoordFromColor(vec4 color) -{ - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; -} - - void main(void) { - - vec2 sub; - vec4 dst; - vec4 local = texture2D(inputImageTexture, textureCoordinate); - vec4 sam; - float l; - float smallestDist; - if(local.a == 0.0){ - - smallestDist = dot(1.0,1.0); - }else{ - sub = getCoordFromColor(local)-textureCoordinate; - smallestDist = dot(sub,sub); - } - dst = local; - - - sam = texture2D(inputImageTexture, topRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, leftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, rightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - gl_FragColor = dst; - } -); -#else -NSString *const kGPUImageJFAVoronoiFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform vec2 size; - //varying vec2 textureCoordinate; - //uniform float sampleStep; - - vec2 getCoordFromColor(vec4 color) -{ - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; -} - - void main(void) { - - vec2 sub; - vec4 dst; - vec4 local = texture2D(inputImageTexture, textureCoordinate); - vec4 sam; - float l; - float smallestDist; - if(local.a == 0.0){ - - smallestDist = dot(1.0,1.0); - }else{ - sub = getCoordFromColor(local)-textureCoordinate; - smallestDist = dot(sub,sub); - } - dst = local; - - - sam = texture2D(inputImageTexture, topRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, topLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomRightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, bottomLeftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, leftTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - - sam = texture2D(inputImageTexture, rightTextureCoordinate); - if(sam.a == 1.0){ - sub = (getCoordFromColor(sam)-textureCoordinate); - l = dot(sub,sub); - if(l < smallestDist){ - smallestDist = l; - dst = sam; - } - } - gl_FragColor = dst; - } -); -#endif - -@interface GPUImageJFAVoronoiFilter() { - int currentPass; -} - - -@end - -@implementation GPUImageJFAVoronoiFilter - -@synthesize sizeInPixels = _sizeInPixels; - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageJFAVoronoiVertexShaderString fragmentShaderFromString:kGPUImageJFAVoronoiFragmentShaderString])) - { - - NSLog(@"nil returned"); - return nil; - - } - - sampleStepUniform = [filterProgram uniformIndex:@"sampleStep"]; - sizeUniform = [filterProgram uniformIndex:@"size"]; - //[self disableSecondFrameCheck]; - - return self; -} - --(void)setSizeInPixels:(CGSize)sizeInPixels { - _sizeInPixels = sizeInPixels; - - //validate that it's a power of 2 - - float width = log2(sizeInPixels.width); - float height = log2(sizeInPixels.height); - - if (width != height) { - NSLog(@"Voronoi point texture must be square"); - return; - } - if (width != floor(width) || height != floor(height)) { - NSLog(@"Voronoi point texture must be a power of 2. Texture size: %f, %f", sizeInPixels.width, sizeInPixels.height); - return; - } - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); -} - -#pragma mark - -#pragma mark Managing the display FBOs - --(NSUInteger)nextPowerOfTwo:(CGPoint)input { - NSUInteger val; - if (input.x > input.y) { - val = (NSUInteger)input.x; - } else { - val = (NSUInteger)input.y; - } - - val--; - val = (val >> 1) | val; - val = (val >> 2) | val; - val = (val >> 4) | val; - val = (val >> 8) | val; - val = (val >> 16) | val; - val++; - return val; -} - -//- (void)setOutputFBO; -//{ -// if (currentPass % 2 == 1) { -// [self setSecondFilterFBO]; -// } else { -// [self setFilterFBO]; -// } -// -//} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Run the first stage of the two-pass filter - [GPUImageContext setActiveShaderProgram:filterProgram]; - currentPass = 0; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glActiveTexture(GL_TEXTURE2); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glUniform1f(sampleStepUniform, 0.5); - - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); - - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - for (int pass = 1; pass <= numPasses + 1; pass++) { - currentPass = pass; -// [self setOutputFBO]; - - //glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - if (pass % 2 == 0) { - glBindTexture(GL_TEXTURE_2D, secondFilterOutputTexture); - } else { - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - } - glUniform1i(filterInputTextureUniform, 2); - - float step = pow(2.0, numPasses - pass) / pow(2.0, numPasses); - glUniform1f(sampleStepUniform, step); - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m deleted file mode 100755 index 9061dbf3..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.m +++ /dev/null @@ -1,223 +0,0 @@ -#import "GPUImageKuwaharaFilter.h" - -// Sourced from Kyprianidis, J. E., Kang, H., and Doellner, J. "Anisotropic Kuwahara Filtering on the GPU," GPU Pro p.247 (2010). -// -// Original header: -// -// Anisotropic Kuwahara Filtering on the GPU -// by Jan Eric Kyprianidis - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform int radius; - - precision highp float; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float((radius + 1) * (radius + 1)); - int i; int j; - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - - for (j = -radius; j <= 0; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m0 += c; - s0 += c * c; - } - } - - for (j = -radius; j <= 0; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m1 += c; - s1 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m2 += c; - s2 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m3 += c; - s3 += c * c; - } - } - - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#else -NSString *const kGPUImageKuwaharaFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform int radius; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float((radius + 1) * (radius + 1)); - int i; int j; - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - - for (j = -radius; j <= 0; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m0 += c; - s0 += c * c; - } - } - - for (j = -radius; j <= 0; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m1 += c; - s1 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = 0; i <= radius; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m2 += c; - s2 += c * c; - } - } - - for (j = 0; j <= radius; ++j) { - for (i = -radius; i <= 0; ++i) { - c = texture2D(inputImageTexture, uv + vec2(i,j) * src_size).rgb; - m3 += c; - s3 += c * c; - } - } - - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#endif - -@implementation GPUImageKuwaharaFilter - -@synthesize radius = _radius; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageKuwaharaFragmentShaderString])) - { - return nil; - } - - radiusUniform = [filterProgram uniformIndex:@"radius"]; - - self.radius = 3; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRadius:(NSUInteger)newValue; -{ - _radius = newValue; - - [self setInteger:(GLint)_radius forUniform:radiusUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m b/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m deleted file mode 100644 index 98b092c6..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.m +++ /dev/null @@ -1,547 +0,0 @@ -#import "GPUImageKuwaharaRadius3Filter.h" - -// Sourced from Kyprianidis, J. E., Kang, H., and Doellner, J. "Anisotropic Kuwahara Filtering on the GPU," GPU Pro p.247 (2010). -// -// Original header: -// -// Anisotropic Kuwahara Filtering on the GPU -// by Jan Eric Kyprianidis - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageKuwaharaRadius3FragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - - precision highp float; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float(16); // radius is assumed to be 3 - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - vec3 cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-2,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-1,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(0,-3) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-2) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-1) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-2,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-1,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(0,3) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,2) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,1) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(2,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(1,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(2,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(1,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#else -NSString *const kGPUImageKuwaharaRadius3FragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - - const vec2 src_size = vec2 (1.0 / 768.0, 1.0 / 1024.0); - - void main (void) - { - vec2 uv = textureCoordinate; - float n = float(16); // radius is assumed to be 3 - vec3 m0 = vec3(0.0); vec3 m1 = vec3(0.0); vec3 m2 = vec3(0.0); vec3 m3 = vec3(0.0); - vec3 s0 = vec3(0.0); vec3 s1 = vec3(0.0); vec3 s2 = vec3(0.0); vec3 s3 = vec3(0.0); - vec3 c; - vec3 cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-2,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-1,-3) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-2) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,-1) * src_size).rgb; - m0 += c; - s0 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(0,-3) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-2) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,-1) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m3 += c; - s3 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,0) * src_size).rgb; - cSq = c * c; - m0 += c; - s0 += cSq; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(-3,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-3,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-2,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-2,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(-1,3) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,2) * src_size).rgb; - m1 += c; - s1 += c * c; - c = texture2D(inputImageTexture, uv + vec2(-1,1) * src_size).rgb; - m1 += c; - s1 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(0,3) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,2) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - c = texture2D(inputImageTexture, uv + vec2(0,1) * src_size).rgb; - cSq = c * c; - m1 += c; - s1 += cSq; - m2 += c; - s2 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(2,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(1,3) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,2) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,1) * src_size).rgb; - m2 += c; - s2 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,0) * src_size).rgb; - cSq = c * c; - m2 += c; - s2 += cSq; - m3 += c; - s3 += cSq; - - c = texture2D(inputImageTexture, uv + vec2(3,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(3,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(2,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(2,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - c = texture2D(inputImageTexture, uv + vec2(1,-3) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-2) * src_size).rgb; - m3 += c; - s3 += c * c; - c = texture2D(inputImageTexture, uv + vec2(1,-1) * src_size).rgb; - m3 += c; - s3 += c * c; - - float min_sigma2 = 1e+2; - m0 /= n; - s0 = abs(s0 / n - m0 * m0); - - float sigma2 = s0.r + s0.g + s0.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m0, 1.0); - } - - m1 /= n; - s1 = abs(s1 / n - m1 * m1); - - sigma2 = s1.r + s1.g + s1.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m1, 1.0); - } - - m2 /= n; - s2 = abs(s2 / n - m2 * m2); - - sigma2 = s2.r + s2.g + s2.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m2, 1.0); - } - - m3 /= n; - s3 = abs(s3 / n - m3 * m3); - - sigma2 = s3.r + s3.g + s3.b; - if (sigma2 < min_sigma2) { - min_sigma2 = sigma2; - gl_FragColor = vec4(m3, 1.0); - } - } -); -#endif - -@implementation GPUImageKuwaharaRadius3Filter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageKuwaharaRadius3FragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m deleted file mode 100644 index a655f486..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.m +++ /dev/null @@ -1,239 +0,0 @@ -#import "GPUImageLanczosResamplingFilter.h" - -NSString *const kGPUImageLanczosVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec2 inputTextureCoordinate; - - uniform float texelWidthOffset; - uniform float texelHeightOffset; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepLeftTextureCoordinate; - varying vec2 twoStepsLeftTextureCoordinate; - varying vec2 threeStepsLeftTextureCoordinate; - varying vec2 fourStepsLeftTextureCoordinate; - varying vec2 oneStepRightTextureCoordinate; - varying vec2 twoStepsRightTextureCoordinate; - varying vec2 threeStepsRightTextureCoordinate; - varying vec2 fourStepsRightTextureCoordinate; - - void main() - { - gl_Position = position; - - vec2 firstOffset = vec2(texelWidthOffset, texelHeightOffset); - vec2 secondOffset = vec2(2.0 * texelWidthOffset, 2.0 * texelHeightOffset); - vec2 thirdOffset = vec2(3.0 * texelWidthOffset, 3.0 * texelHeightOffset); - vec2 fourthOffset = vec2(4.0 * texelWidthOffset, 4.0 * texelHeightOffset); - - centerTextureCoordinate = inputTextureCoordinate; - oneStepLeftTextureCoordinate = inputTextureCoordinate - firstOffset; - twoStepsLeftTextureCoordinate = inputTextureCoordinate - secondOffset; - threeStepsLeftTextureCoordinate = inputTextureCoordinate - thirdOffset; - fourStepsLeftTextureCoordinate = inputTextureCoordinate - fourthOffset; - oneStepRightTextureCoordinate = inputTextureCoordinate + firstOffset; - twoStepsRightTextureCoordinate = inputTextureCoordinate + secondOffset; - threeStepsRightTextureCoordinate = inputTextureCoordinate + thirdOffset; - fourStepsRightTextureCoordinate = inputTextureCoordinate + fourthOffset; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLanczosFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepLeftTextureCoordinate; - varying vec2 twoStepsLeftTextureCoordinate; - varying vec2 threeStepsLeftTextureCoordinate; - varying vec2 fourStepsLeftTextureCoordinate; - varying vec2 oneStepRightTextureCoordinate; - varying vec2 twoStepsRightTextureCoordinate; - varying vec2 threeStepsRightTextureCoordinate; - varying vec2 fourStepsRightTextureCoordinate; - - // sinc(x) * sinc(x/a) = (a * sin(pi * x) * sin(pi * x / a)) / (pi^2 * x^2) - // Assuming a Lanczos constant of 2.0, and scaling values to max out at x = +/- 1.5 - - void main() - { - lowp vec4 fragmentColor = texture2D(inputImageTexture, centerTextureCoordinate) * 0.38026; - - fragmentColor += texture2D(inputImageTexture, oneStepLeftTextureCoordinate) * 0.27667; - fragmentColor += texture2D(inputImageTexture, oneStepRightTextureCoordinate) * 0.27667; - - fragmentColor += texture2D(inputImageTexture, twoStepsLeftTextureCoordinate) * 0.08074; - fragmentColor += texture2D(inputImageTexture, twoStepsRightTextureCoordinate) * 0.08074; - - fragmentColor += texture2D(inputImageTexture, threeStepsLeftTextureCoordinate) * -0.02612; - fragmentColor += texture2D(inputImageTexture, threeStepsRightTextureCoordinate) * -0.02612; - - fragmentColor += texture2D(inputImageTexture, fourStepsLeftTextureCoordinate) * -0.02143; - fragmentColor += texture2D(inputImageTexture, fourStepsRightTextureCoordinate) * -0.02143; - - gl_FragColor = fragmentColor; - } -); -#else -NSString *const kGPUImageLanczosFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepLeftTextureCoordinate; - varying vec2 twoStepsLeftTextureCoordinate; - varying vec2 threeStepsLeftTextureCoordinate; - varying vec2 fourStepsLeftTextureCoordinate; - varying vec2 oneStepRightTextureCoordinate; - varying vec2 twoStepsRightTextureCoordinate; - varying vec2 threeStepsRightTextureCoordinate; - varying vec2 fourStepsRightTextureCoordinate; - - // sinc(x) * sinc(x/a) = (a * sin(pi * x) * sin(pi * x / a)) / (pi^2 * x^2) - // Assuming a Lanczos constant of 2.0, and scaling values to max out at x = +/- 1.5 - - void main() - { - vec4 fragmentColor = texture2D(inputImageTexture, centerTextureCoordinate) * 0.38026; - - fragmentColor += texture2D(inputImageTexture, oneStepLeftTextureCoordinate) * 0.27667; - fragmentColor += texture2D(inputImageTexture, oneStepRightTextureCoordinate) * 0.27667; - - fragmentColor += texture2D(inputImageTexture, twoStepsLeftTextureCoordinate) * 0.08074; - fragmentColor += texture2D(inputImageTexture, twoStepsRightTextureCoordinate) * 0.08074; - - fragmentColor += texture2D(inputImageTexture, threeStepsLeftTextureCoordinate) * -0.02612; - fragmentColor += texture2D(inputImageTexture, threeStepsRightTextureCoordinate) * -0.02612; - - fragmentColor += texture2D(inputImageTexture, fourStepsLeftTextureCoordinate) * -0.02143; - fragmentColor += texture2D(inputImageTexture, fourStepsRightTextureCoordinate) * -0.02143; - - gl_FragColor = fragmentColor; - } -); -#endif - -@implementation GPUImageLanczosResamplingFilter - -@synthesize originalImageSize = _originalImageSize; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageLanczosVertexShaderString firstStageFragmentShaderFromString:kGPUImageLanczosFragmentShaderString secondStageVertexShaderFromString:kGPUImageLanczosVertexShaderString secondStageFragmentShaderFromString:kGPUImageLanczosFragmentShaderString])) - { - return nil; - } - - return self; -} - -// Base texture sampling offset on the input image, not the final size -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - self.originalImageSize = newSize; - [super setInputSize:newSize atIndex:textureIndex]; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - // The first pass through the framebuffer may rotate the inbound image, so need to account for that by changing up the kernel ordering for that pass - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - verticalPassTexelWidthOffset = 1.0 / _originalImageSize.height; - verticalPassTexelHeightOffset = 0.0; - } - else - { - verticalPassTexelWidthOffset = 0.0; - verticalPassTexelHeightOffset = 1.0 / _originalImageSize.height; - } - - horizontalPassTexelWidthOffset = 1.0 / _originalImageSize.width; - horizontalPassTexelHeightOffset = 0.0; - }); -} - - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - CGSize currentFBOSize = [self sizeOfFBO]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - currentFBOSize.height = self.originalImageSize.height; - } - else - { - currentFBOSize.width = self.originalImageSize.width; - } - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:currentFBOSize textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - - // Run the second stage of the two-pass filter - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, 0); - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, 0); - secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [secondOutputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [secondOutputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:1]; - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); - - glUniform1i(secondFilterInputTextureUniform, 3); - - glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [outputFramebuffer unlock]; - outputFramebuffer = nil; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m deleted file mode 100644 index 98b78509..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageLaplacianFilter.h" -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLaplacianFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - uniform mediump mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - mediump vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - mediump vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - mediump vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - mediump vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - mediump vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - mediump vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - mediump vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - mediump vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - mediump vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - // Normalize the results to allow for negative gradients in the 0.0-1.0 colorspace - resultColor = resultColor + 0.5; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#else -NSString *const kGPUImageLaplacianFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - uniform mat3 convolutionMatrix; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - vec3 bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - vec3 topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - - vec3 resultColor = topLeftColor * convolutionMatrix[0][0] + topColor * convolutionMatrix[0][1] + topRightColor * convolutionMatrix[0][2]; - resultColor += leftColor * convolutionMatrix[1][0] + centerColor.rgb * convolutionMatrix[1][1] + rightColor * convolutionMatrix[1][2]; - resultColor += bottomLeftColor * convolutionMatrix[2][0] + bottomColor * convolutionMatrix[2][1] + bottomRightColor * convolutionMatrix[2][2]; - - // Normalize the results to allow for negative gradients in the 0.0-1.0 colorspace - resultColor = resultColor + 0.5; - - gl_FragColor = vec4(resultColor, centerColor.a); - } -); -#endif - -@implementation GPUImageLaplacianFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLaplacianFragmentShaderString])) - { - return nil; - } - - GPUMatrix3x3 newConvolutionMatrix; - newConvolutionMatrix.one.one = 0.5; - newConvolutionMatrix.one.two = 1.0; - newConvolutionMatrix.one.three = 0.5; - - newConvolutionMatrix.two.one = 1.0; - newConvolutionMatrix.two.two = -6.0; - newConvolutionMatrix.two.three = 1.0; - - newConvolutionMatrix.three.one = 0.5; - newConvolutionMatrix.three.two = 1.0; - newConvolutionMatrix.three.three = 0.5; - - self.convolutionKernel = newConvolutionMatrix; - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m deleted file mode 100644 index 158815fd..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.m +++ /dev/null @@ -1,152 +0,0 @@ -#import "GPUImageLevelsFilter.h" - -/* - ** Gamma correction - ** Details: http://blog.mouaif.org/2009/01/22/photoshop-gamma-correction-shader/ - */ - -#define GammaCorrection(color, gamma) pow(color, 1.0 / gamma) - -/* - ** Levels control (input (+gamma), output) - ** Details: http://blog.mouaif.org/2009/01/28/levels-control-shader/ - */ - -#define LevelsControlInputRange(color, minInput, maxInput) min(max(color - minInput, vec3(0.0)) / (maxInput - minInput), vec3(1.0)) -#define LevelsControlInput(color, minInput, gamma, maxInput) GammaCorrection(LevelsControlInputRange(color, minInput, maxInput), gamma) -#define LevelsControlOutputRange(color, minOutput, maxOutput) mix(minOutput, maxOutput, color) -#define LevelsControl(color, minInput, gamma, maxInput, minOutput, maxOutput) LevelsControlOutputRange(LevelsControlInput(color, minInput, gamma, maxInput), minOutput, maxOutput) - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLevelsFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform mediump vec3 levelMinimum; - uniform mediump vec3 levelMiddle; - uniform mediump vec3 levelMaximum; - uniform mediump vec3 minOutput; - uniform mediump vec3 maxOutput; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(LevelsControl(textureColor.rgb, levelMinimum, levelMiddle, levelMaximum, minOutput, maxOutput), textureColor.a); - } -); -#else -NSString *const kGPUImageLevelsFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform vec3 levelMinimum; - uniform vec3 levelMiddle; - uniform vec3 levelMaximum; - uniform vec3 minOutput; - uniform vec3 maxOutput; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(LevelsControl(textureColor.rgb, levelMinimum, levelMiddle, levelMaximum, minOutput, maxOutput), textureColor.a); - } -); -#endif - -@implementation GPUImageLevelsFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLevelsFragmentShaderString])) - { - return nil; - } - - minUniform = [filterProgram uniformIndex:@"levelMinimum"]; - midUniform = [filterProgram uniformIndex:@"levelMiddle"]; - maxUniform = [filterProgram uniformIndex:@"levelMaximum"]; - minOutputUniform = [filterProgram uniformIndex:@"minOutput"]; - maxOutputUniform = [filterProgram uniformIndex:@"maxOutput"]; - - [self setRedMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; - [self setGreenMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; - [self setBlueMin:0.0 gamma:1.0 max:1.0 minOut:0.0 maxOut:1.0]; - - return self; -} - -#pragma mark - -#pragma mark Helpers - -- (void)updateUniforms { - [self setVec3:minVector forUniform:minUniform program:filterProgram]; - [self setVec3:midVector forUniform:midUniform program:filterProgram]; - [self setVec3:maxVector forUniform:maxUniform program:filterProgram]; - [self setVec3:minOutputVector forUniform:minOutputUniform program:filterProgram]; - [self setVec3:maxOutputVector forUniform:maxOutputUniform program:filterProgram]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - [self setRedMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; - [self setGreenMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; - [self setBlueMin:min gamma:mid max:max minOut:minOut maxOut:maxOut]; -} - -- (void)setMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - minVector.one = min; - midVector.one = mid; - maxVector.one = max; - minOutputVector.one = minOut; - maxOutputVector.one = maxOut; - - [self updateUniforms]; -} - -- (void)setRedMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setRedMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - minVector.two = min; - midVector.two = mid; - maxVector.two = max; - minOutputVector.two = minOut; - maxOutputVector.two = maxOut; - - [self updateUniforms]; -} - -- (void)setGreenMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setGreenMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max minOut:(CGFloat)minOut maxOut:(CGFloat)maxOut { - minVector.three = min; - midVector.three = mid; - maxVector.three = max; - minOutputVector.three = minOut; - maxOutputVector.three = maxOut; - - [self updateUniforms]; -} - -- (void)setBlueMin:(CGFloat)min gamma:(CGFloat)mid max:(CGFloat)max { - [self setBlueMin:min gamma:mid max:max minOut:0.0 maxOut:1.0]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m deleted file mode 100755 index 2bbd4b20..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageLightenBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLightenBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = max(textureColor, textureColor2); - } -); -#else -NSString *const kGPUImageLightenBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = max(textureColor, textureColor2); - } - ); -#endif - -@implementation GPUImageLightenBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLightenBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m deleted file mode 100644 index 85d93bee..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.m +++ /dev/null @@ -1,164 +0,0 @@ -#import "GPUImageLineGenerator.h" - -NSString *const kGPUImageLineGeneratorVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - void main() - { - gl_Position = position; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLineGeneratorFragmentShaderString = SHADER_STRING -( - uniform lowp vec3 lineColor; - - void main() - { - gl_FragColor = vec4(lineColor, 1.0); - } -); -#else -NSString *const kGPUImageLineGeneratorFragmentShaderString = SHADER_STRING -( - uniform vec3 lineColor; - - void main() - { - gl_FragColor = vec4(lineColor, 1.0); - } -); -#endif - -@interface GPUImageLineGenerator() - -- (void)generateLineCoordinates; - -@end - -@implementation GPUImageLineGenerator - -@synthesize lineWidth = _lineWidth; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageLineGeneratorVertexShaderString fragmentShaderFromString:kGPUImageLineGeneratorFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - lineWidthUniform = [filterProgram uniformIndex:@"lineWidth"]; - lineColorUniform = [filterProgram uniformIndex:@"lineColor"]; - - self.lineWidth = 1.0; - [self setLineColorRed:0.0 green:1.0 blue:0.0]; - }); - - return self; -} - -- (void)dealloc -{ - if (lineCoordinates) - { - free(lineCoordinates); - } -} - -#pragma mark - -#pragma mark Rendering - -- (void)generateLineCoordinates; -{ - lineCoordinates = calloc(1024 * 4, sizeof(GLfloat)); -} - -- (void)renderLinesFromArray:(GLfloat *)lineSlopeAndIntercepts count:(NSUInteger)numberOfLines frameTime:(CMTime)frameTime; -{ - if (self.preventRendering) - { - return; - } - - if (lineCoordinates == NULL) - { - [self generateLineCoordinates]; - } - - // Iterate through and generate vertices from the slopes and intercepts - NSUInteger currentVertexIndex = 0; - NSUInteger currentLineIndex = 0; - NSUInteger maxLineIndex = numberOfLines *2; - while(currentLineIndex < maxLineIndex) - { - GLfloat slope = lineSlopeAndIntercepts[currentLineIndex++]; - GLfloat intercept = lineSlopeAndIntercepts[currentLineIndex++]; - - if (slope > 9000.0) // Vertical line - { - lineCoordinates[currentVertexIndex++] = intercept; - lineCoordinates[currentVertexIndex++] = -1.0; - lineCoordinates[currentVertexIndex++] = intercept; - lineCoordinates[currentVertexIndex++] = 1.0; - } - else - { - lineCoordinates[currentVertexIndex++] = -1.0; - lineCoordinates[currentVertexIndex++] = slope * -1.0 + intercept; - lineCoordinates[currentVertexIndex++] = 1.0; - lineCoordinates[currentVertexIndex++] = slope * 1.0 + intercept; - } - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); - - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, lineCoordinates); - glDrawArrays(GL_LINES, 0, ((unsigned int)numberOfLines * 2)); - - glDisable(GL_BLEND); - - [self informTargetsAboutNewFrameAtTime:frameTime]; - }); -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Prevent rendering of the frame by normal means -} - -#pragma mark - -#pragma mark Accessors - -- (void)setLineWidth:(CGFloat)newValue; -{ - _lineWidth = newValue; - [GPUImageContext setActiveShaderProgram:filterProgram]; - glLineWidth(newValue); -} - -- (void)setLineColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 lineColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:lineColor forUniform:lineColorUniform program:filterProgram]; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m deleted file mode 100644 index 47031967..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "GPUImageLinearBurnBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLinearBurnBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(clamp(textureColor.rgb + textureColor2.rgb - vec3(1.0), vec3(0.0), vec3(1.0)), textureColor.a); - } -); -#else -NSString *const kGPUImageLinearBurnBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(clamp(textureColor.rgb + textureColor2.rgb - vec3(1.0), vec3(0.0), vec3(1.0)), textureColor.a); - } -); -#endif - -@implementation GPUImageLinearBurnBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLinearBurnBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m deleted file mode 100644 index 1ee1f8d9..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageLocalBinaryPatternFilter.h" - -// This is based on "Accelerating image recognition on mobile devices using GPGPU" by Miguel Bordallo Lopez, Henri Nykanen, Jari Hannuksela, Olli Silven and Markku Vehvilainen -// http://www.ee.oulu.fi/~jhannuks/publications/SPIE2011a.pdf - -// Right pixel is the most significant bit, traveling clockwise to get to the upper right, which is the least significant -// If the external pixel is greater than or equal to the center, set to 1, otherwise 0 -// -// 2 1 0 -// 3 7 -// 4 5 6 - -// 01101101 -// 76543210 - -@implementation GPUImageLocalBinaryPatternFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLocalBinaryPatternFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - lowp float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - lowp float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - lowp float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); - byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); - byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); - byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); - byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); - byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); - byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); - byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); - } -); -#else -NSString *const kGPUImageLocalBinaryPatternFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - - float byteTally = 1.0 / 255.0 * step(centerIntensity, topRightIntensity); - byteTally += 2.0 / 255.0 * step(centerIntensity, topIntensity); - byteTally += 4.0 / 255.0 * step(centerIntensity, topLeftIntensity); - byteTally += 8.0 / 255.0 * step(centerIntensity, leftIntensity); - byteTally += 16.0 / 255.0 * step(centerIntensity, bottomLeftIntensity); - byteTally += 32.0 / 255.0 * step(centerIntensity, bottomIntensity); - byteTally += 64.0 / 255.0 * step(centerIntensity, bottomRightIntensity); - byteTally += 128.0 / 255.0 * step(centerIntensity, rightIntensity); - - // TODO: Replace the above with a dot product and two vec4s - // TODO: Apply step to a matrix, rather than individually - - gl_FragColor = vec4(byteTally, byteTally, byteTally, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLocalBinaryPatternFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m deleted file mode 100644 index 1c3505eb..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageLookupFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; // TODO: This is not used - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; // lookup texture - - uniform lowp float intensity; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - highp float blueColor = textureColor.b * 63.0; - - highp vec2 quad1; - quad1.y = floor(floor(blueColor) / 8.0); - quad1.x = floor(blueColor) - (quad1.y * 8.0); - - highp vec2 quad2; - quad2.y = floor(ceil(blueColor) / 8.0); - quad2.x = ceil(blueColor) - (quad2.y * 8.0); - - highp vec2 texPos1; - texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - highp vec2 texPos2; - texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - lowp vec4 newColor1 = texture2D(inputImageTexture2, texPos1); - lowp vec4 newColor2 = texture2D(inputImageTexture2, texPos2); - - lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); - gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity); - } -); -#else -NSString *const kGPUImageLookupFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; // TODO: This is not used - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; // lookup texture - - uniform float intensity; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float blueColor = textureColor.b * 63.0; - - vec2 quad1; - quad1.y = floor(floor(blueColor) / 8.0); - quad1.x = floor(blueColor) - (quad1.y * 8.0); - - vec2 quad2; - quad2.y = floor(ceil(blueColor) / 8.0); - quad2.x = ceil(blueColor) - (quad2.y * 8.0); - - vec2 texPos1; - texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - vec2 texPos2; - texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); - texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); - - vec4 newColor1 = texture2D(inputImageTexture2, texPos1); - vec4 newColor2 = texture2D(inputImageTexture2, texPos2); - - vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); - gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), intensity); - } -); -#endif - -@implementation GPUImageLookupFilter - -@synthesize intensity = _intensity; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLookupFragmentShaderString])) - { - return nil; - } - - intensityUniform = [filterProgram uniformIndex:@"intensity"]; - self.intensity = 1.0f; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setIntensity:(CGFloat)intensity -{ - _intensity = intensity; - - [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m deleted file mode 100644 index 39ca08f6..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.m +++ /dev/null @@ -1,61 +0,0 @@ -#import "GPUImageLowPassFilter.h" - -@implementation GPUImageLowPassFilter - -@synthesize filterStrength; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // Take in the frame and blend it with the previous one - dissolveBlendFilter = [[GPUImageDissolveBlendFilter alloc] init]; - [self addFilter:dissolveBlendFilter]; - - // Buffer the result to be fed back into the blend - bufferFilter = [[GPUImageBuffer alloc] init]; - [self addFilter:bufferFilter]; - - // Texture location 0 needs to be the original image for the dissolve blend - [bufferFilter addTarget:dissolveBlendFilter atTextureLocation:1]; - [dissolveBlendFilter addTarget:bufferFilter]; - - [dissolveBlendFilter disableSecondFrameCheck]; - - // To prevent double updating of this filter, disable updates from the sharp image side - // self.inputFilterToIgnoreForUpdates = unsharpMaskFilter; - - self.initialFilters = [NSArray arrayWithObject:dissolveBlendFilter]; - self.terminalFilter = dissolveBlendFilter; - - self.filterStrength = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setFilterStrength:(CGFloat)newValue; -{ - dissolveBlendFilter.mix = newValue; -} - -- (CGFloat)filterStrength; -{ - return dissolveBlendFilter.mix; -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [self.terminalFilter addTarget:newTarget atTextureLocation:textureLocation]; - //if use GPUImagePipline,will cause self.termainlFilter removeAllTargets,so need add bufferFilter back - if (self.terminalFilter == dissolveBlendFilter && ![self.terminalFilter.targets containsObject:bufferFilter]) { - [self.terminalFilter addTarget:bufferFilter atTextureLocation:1]; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m deleted file mode 100644 index 5122c958..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.m +++ /dev/null @@ -1,76 +0,0 @@ -#import "GPUImageLuminanceRangeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceRangeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float rangeReduction; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump float luminance = dot(textureColor.rgb, luminanceWeighting); - mediump float luminanceRatio = ((0.5 - luminance) * rangeReduction); - - gl_FragColor = vec4((textureColor.rgb) + (luminanceRatio), textureColor.w); - } -); -#else -NSString *const kGPUImageLuminanceRangeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float rangeReduction; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - float luminanceRatio = ((0.5 - luminance) * rangeReduction); - - gl_FragColor = vec4((textureColor.rgb) + (luminanceRatio), textureColor.w); - } -); -#endif - -@implementation GPUImageLuminanceRangeFilter - -@synthesize rangeReductionFactor = _rangeReductionFactor; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceRangeFragmentShaderString])) - { - return nil; - } - - rangeReductionUniform = [filterProgram uniformIndex:@"rangeReduction"]; - self.rangeReductionFactor = 0.6; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRangeReductionFactor:(CGFloat)newValue; -{ - _rangeReductionFactor = newValue; - - [self setFloat:_rangeReductionFactor forUniform:rangeReductionUniform program:filterProgram]; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m deleted file mode 100755 index 368b8fbe..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.m +++ /dev/null @@ -1,74 +0,0 @@ -#import "GPUImageLuminanceThresholdFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminanceThresholdFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float threshold; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - highp float luminance = dot(textureColor.rgb, W); - highp float thresholdResult = step(threshold, luminance); - - gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); - } -); -#else -NSString *const kGPUImageLuminanceThresholdFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - float thresholdResult = step(threshold, luminance); - - gl_FragColor = vec4(vec3(thresholdResult), textureColor.w); - } -); -#endif - -@implementation GPUImageLuminanceThresholdFilter - -@synthesize threshold = _threshold; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminanceThresholdFragmentShaderString])) - { - return nil; - } - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - self.threshold = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m deleted file mode 100644 index 37f374ab..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.m +++ /dev/null @@ -1,329 +0,0 @@ -#import "GPUImageLuminosity.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W); - highp float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W); - highp float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W); - highp float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W); - - highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); - -NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying highp vec2 outputTextureCoordinate; - - varying highp vec2 upperLeftInputTextureCoordinate; - varying highp vec2 upperRightInputTextureCoordinate; - varying highp vec2 lowerLeftInputTextureCoordinate; - varying highp vec2 lowerRightInputTextureCoordinate; - - void main() - { - highp float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - highp float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - highp float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - highp float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - highp float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); -#else -NSString *const kGPUImageInitialLuminosityFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float upperLeftLuminance = dot(texture2D(inputImageTexture, upperLeftInputTextureCoordinate).rgb, W); - float upperRightLuminance = dot(texture2D(inputImageTexture, upperRightInputTextureCoordinate).rgb, W); - float lowerLeftLuminance = dot(texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).rgb, W); - float lowerRightLuminance = dot(texture2D(inputImageTexture, lowerRightInputTextureCoordinate).rgb, W); - - float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); - -NSString *const kGPUImageLuminosityFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 outputTextureCoordinate; - - varying vec2 upperLeftInputTextureCoordinate; - varying vec2 upperRightInputTextureCoordinate; - varying vec2 lowerLeftInputTextureCoordinate; - varying vec2 lowerRightInputTextureCoordinate; - - void main() - { - float upperLeftLuminance = texture2D(inputImageTexture, upperLeftInputTextureCoordinate).r; - float upperRightLuminance = texture2D(inputImageTexture, upperRightInputTextureCoordinate).r; - float lowerLeftLuminance = texture2D(inputImageTexture, lowerLeftInputTextureCoordinate).r; - float lowerRightLuminance = texture2D(inputImageTexture, lowerRightInputTextureCoordinate).r; - - float luminosity = 0.25 * (upperLeftLuminance + upperRightLuminance + lowerLeftLuminance + lowerRightLuminance); - gl_FragColor = vec4(luminosity, luminosity, luminosity, 1.0); - } -); -#endif - -@implementation GPUImageLuminosity - -@synthesize luminosityProcessingFinishedBlock = _luminosityProcessingFinishedBlock; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageColorAveragingVertexShaderString fragmentShaderFromString:kGPUImageInitialLuminosityFragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - __unsafe_unretained GPUImageLuminosity *weakSelf = self; - [self setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) { - [weakSelf extractLuminosityAtFrameTime:frameTime]; - }]; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageColorAveragingVertexShaderString fragmentShaderString:kGPUImageLuminosityFragmentShaderString]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - filterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; - secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - - secondFilterTexelWidthUniform = [secondFilterProgram uniformIndex:@"texelWidth"]; - secondFilterTexelHeightUniform = [secondFilterProgram uniformIndex:@"texelHeight"]; - - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeSecondaryAttributes; -{ - [secondFilterProgram addAttribute:@"position"]; - [secondFilterProgram addAttribute:@"inputTextureCoordinate"]; -} - -/* -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - // Do an initial render pass that both convert to luminance and reduces - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - GLuint currentFramebuffer = [[stageFramebuffers objectAtIndex:0] intValue]; - glBindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGSize currentStageSize = [[stageSizes objectAtIndex:0] CGSizeValue]; -#else - NSSize currentStageSize = [[stageSizes objectAtIndex:0] sizeValue]; -#endif - glViewport(0, 0, (int)currentStageSize.width, (int)currentStageSize.height); - - GLuint currentTexture = [firstInputFramebuffer texture]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, currentTexture); - - glUniform1i(filterInputTextureUniform, 2); - - glUniform1f(texelWidthUniform, 0.5 / currentStageSize.width); - glUniform1f(texelHeightUniform, 0.5 / currentStageSize.height); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - currentTexture = [[stageTextures objectAtIndex:0] intValue]; - - // Just perform reductions from this point on - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - NSUInteger numberOfStageFramebuffers = [stageFramebuffers count]; - for (NSUInteger currentStage = 1; currentStage < numberOfStageFramebuffers; currentStage++) - { - currentFramebuffer = [[stageFramebuffers objectAtIndex:currentStage] intValue]; - glBindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - currentStageSize = [[stageSizes objectAtIndex:currentStage] CGSizeValue]; -#else - currentStageSize = [[stageSizes objectAtIndex:currentStage] sizeValue]; -#endif - glViewport(0, 0, (int)currentStageSize.width, (int)currentStageSize.height); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, currentTexture); - - glUniform1i(secondFilterInputTextureUniform, 2); - - glUniform1f(secondFilterTexelWidthUniform, 0.5 / currentStageSize.width); - glUniform1f(secondFilterTexelHeightUniform, 0.5 / currentStageSize.height); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - currentTexture = [[stageTextures objectAtIndex:currentStage] intValue]; - -// NSUInteger totalBytesForImage = (int)currentStageSize.width * (int)currentStageSize.height * 4; -// GLubyte *rawImagePixels2 = (GLubyte *)malloc(totalBytesForImage); -// glReadPixels(0, 0, (int)currentStageSize.width, (int)currentStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels2); -// CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, rawImagePixels2, totalBytesForImage, NULL); -// CGColorSpaceRef defaultRGBColorSpace = CGColorSpaceCreateDeviceRGB(); -// -// CGFloat currentRedTotal = 0.0f, currentGreenTotal = 0.0f, currentBlueTotal = 0.0f, currentAlphaTotal = 0.0f; -// NSUInteger totalNumberOfPixels = totalBytesForImage / 4; -// -// for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) -// { -// currentRedTotal += (CGFloat)rawImagePixels2[(currentPixel * 4)] / 255.0f; -// currentGreenTotal += (CGFloat)rawImagePixels2[(currentPixel * 4) + 1] / 255.0f; -// currentBlueTotal += (CGFloat)rawImagePixels2[(currentPixel * 4 + 2)] / 255.0f; -// currentAlphaTotal += (CGFloat)rawImagePixels2[(currentPixel * 4) + 3] / 255.0f; -// } -// -// NSLog(@"Stage %d average image red: %f, green: %f, blue: %f, alpha: %f", currentStage, currentRedTotal / (CGFloat)totalNumberOfPixels, currentGreenTotal / (CGFloat)totalNumberOfPixels, currentBlueTotal / (CGFloat)totalNumberOfPixels, currentAlphaTotal / (CGFloat)totalNumberOfPixels); -// -// -// CGImageRef cgImageFromBytes = CGImageCreate((int)currentStageSize.width, (int)currentStageSize.height, 8, 32, 4 * (int)currentStageSize.width, defaultRGBColorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast, dataProvider, NULL, NO, kCGRenderingIntentDefault); -// -// UIImage *imageToSave = [UIImage imageWithCGImage:cgImageFromBytes]; -// -// NSData *dataForPNGFile = UIImagePNGRepresentation(imageToSave); -// -// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); -// NSString *documentsDirectory = [paths objectAtIndex:0]; -// -// NSString *imageName = [NSString stringWithFormat:@"AverageLevel%d.png", currentStage]; -// NSError *error = nil; -// if (![dataForPNGFile writeToFile:[documentsDirectory stringByAppendingPathComponent:imageName] options:NSAtomicWrite error:&error]) -// { -// return; -// } - } - - [firstInputFramebuffer unlock]; -} - */ - -#pragma mark - -#pragma mark Callbacks - -- (void)extractLuminosityAtFrameTime:(CMTime)frameTime; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - NSUInteger totalNumberOfPixels = round(finalStageSize.width * finalStageSize.height); - - if (rawImagePixels == NULL) - { - rawImagePixels = (GLubyte *)malloc(totalNumberOfPixels * 4); - } - - [GPUImageContext useImageProcessingContext]; - [outputFramebuffer activateFramebuffer]; - - glReadPixels(0, 0, (int)finalStageSize.width, (int)finalStageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - NSUInteger luminanceTotal = 0; - NSUInteger byteIndex = 0; - for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) - { - luminanceTotal += rawImagePixels[byteIndex]; - byteIndex += 4; - } - - CGFloat normalizedLuminosityTotal = (CGFloat)luminanceTotal / (CGFloat)totalNumberOfPixels / 255.0; - - if (_luminosityProcessingFinishedBlock != NULL) - { - _luminosityProcessingFinishedBlock(normalizedLuminosityTotal, frameTime); - } - }); -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m deleted file mode 100644 index 7e399746..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "GPUImageLuminosityBlendFilter.h" - -/** - * Luminosity blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageLuminosityBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(baseColor.rgb, lum(overlayColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageLuminosityBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(baseColor.rgb, lum(overlayColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - - -@implementation GPUImageLuminosityBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageLuminosityBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m deleted file mode 100755 index 24503b3b..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.m +++ /dev/null @@ -1,76 +0,0 @@ -#import "GPUImageMaskFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMaskShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - //Averages mask's the RGB values, and scales that value by the mask's alpha - // - //The dot product should take fewer cycles than doing an average normally - // - //Typical/ideal case, R,G, and B will be the same, and Alpha will be 1.0 - lowp float newAlpha = dot(textureColor2.rgb, vec3(.33333334, .33333334, .33333334)) * textureColor2.a; - - gl_FragColor = vec4(textureColor.xyz, newAlpha); -// gl_FragColor = vec4(textureColor2); - } -); -#else -NSString *const kGPUImageMaskShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - //Averages mask's the RGB values, and scales that value by the mask's alpha - // - //The dot product should take fewer cycles than doing an average normally - // - //Typical/ideal case, R,G, and B will be the same, and Alpha will be 1.0 - float newAlpha = dot(textureColor2.rgb, vec3(.33333334, .33333334, .33333334)) * textureColor2.a; - - gl_FragColor = vec4(textureColor.xyz, newAlpha); - // gl_FragColor = vec4(textureColor2); - } -); -#endif - -@implementation GPUImageMaskFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMaskShaderString])) - { - return nil; - } - - return self; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - glDisable(GL_BLEND); -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m deleted file mode 100644 index 78c11805..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.m +++ /dev/null @@ -1,178 +0,0 @@ -#import "GPUImageMedianFilter.h" - -/* - 3x3 median filter, adapted from "A Fast, Small-Radius GPU Median Filter" by Morgan McGuire in ShaderX6 - http://graphics.cs.williams.edu/papers/MedianShaderX6/ - - Morgan McGuire and Kyle Whitson - Williams College - - Register allocation tips by Victor Huang Xiaohuang - University of Illinois at Urbana-Champaign - - http://graphics.cs.williams.edu - - - Copyright (c) Morgan McGuire and Williams College, 2006 - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMedianFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - -#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); -#define mn3(a, b, c) s2(a, b); s2(a, c); -#define mx3(a, b, c) s2(b, c); s2(a, c); - -#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges -#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges -#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges -#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges - - void main() - { - vec3 v[6]; - - v[0] = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - v[1] = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - v[2] = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - v[3] = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - v[4] = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - v[5] = texture2D(inputImageTexture, rightTextureCoordinate).rgb; -// v[6] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; -// v[7] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 temp; - - mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - mnmx5(v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - mnmx4(v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, textureCoordinate).rgb; - - mnmx3(v[3], v[4], v[5]); - - gl_FragColor = vec4(v[4], 1.0); - } -); -#else -NSString *const kGPUImageMedianFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - -#define s2(a, b) temp = a; a = min(a, b); b = max(temp, b); -#define mn3(a, b, c) s2(a, b); s2(a, c); -#define mx3(a, b, c) s2(b, c); s2(a, c); - -#define mnmx3(a, b, c) mx3(a, b, c); s2(a, b); // 3 exchanges -#define mnmx4(a, b, c, d) s2(a, b); s2(c, d); s2(a, c); s2(b, d); // 4 exchanges -#define mnmx5(a, b, c, d, e) s2(a, b); s2(c, d); mn3(a, c, e); mx3(b, d, e); // 6 exchanges -#define mnmx6(a, b, c, d, e, f) s2(a, d); s2(b, e); s2(c, f); mn3(a, b, c); mx3(d, e, f); // 7 exchanges - - void main() - { - vec3 v[6]; - - v[0] = texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb; - v[1] = texture2D(inputImageTexture, topRightTextureCoordinate).rgb; - v[2] = texture2D(inputImageTexture, topLeftTextureCoordinate).rgb; - v[3] = texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb; - v[4] = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - v[5] = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - // v[6] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - // v[7] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 temp; - - mnmx6(v[0], v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - mnmx5(v[1], v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - mnmx4(v[2], v[3], v[4], v[5]); - - v[5] = texture2D(inputImageTexture, textureCoordinate).rgb; - - mnmx3(v[3], v[4], v[5]); - - gl_FragColor = vec4(v[4], 1.0); - } -); -#endif - -@implementation GPUImageMedianFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMedianFragmentShaderString])) - { - return nil; - } - - hasOverriddenImageSizeFactor = NO; - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m deleted file mode 100755 index 1810b707..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "GPUImageMissEtikateFilter.h" -#import "GPUImagePicture.h" -#import "GPUImageLookupFilter.h" - -@implementation GPUImageMissEtikateFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *image = [UIImage imageNamed:@"lookup_miss_etikate.png"]; -#else - NSImage *image = [NSImage imageNamed:@"lookup_miss_etikate.png"]; -#endif - - NSAssert(image, @"To use GPUImageMissEtikateFilter you need to add lookup_miss_etikate.png from GPUImage/framework/Resources to your application bundle."); - - lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; - GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; - [self addFilter:lookupFilter]; - - [lookupImageSource addTarget:lookupFilter atTextureLocation:1]; - [lookupImageSource processImage]; - - self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; - self.terminalFilter = lookupFilter; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m deleted file mode 100644 index 70cef872..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageMonochromeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUMonochromeFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 filterColor; - - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - //desat, then apply overlay blend - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - lowp vec4 desat = vec4(vec3(luminance), 1.0); - - //overlay - lowp vec4 outputColor = vec4( - (desat.r < 0.5 ? (2.0 * desat.r * filterColor.r) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - filterColor.r))), - (desat.g < 0.5 ? (2.0 * desat.g * filterColor.g) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - filterColor.g))), - (desat.b < 0.5 ? (2.0 * desat.b * filterColor.b) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - filterColor.b))), - 1.0 - ); - - //which is better, or are they equal? - gl_FragColor = vec4( mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a); - } -); -#else -NSString *const kGPUMonochromeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float intensity; - uniform vec3 filterColor; - - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - //desat, then apply overlay blend - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - - vec4 desat = vec4(vec3(luminance), 1.0); - - //overlay - vec4 outputColor = vec4( - (desat.r < 0.5 ? (2.0 * desat.r * filterColor.r) : (1.0 - 2.0 * (1.0 - desat.r) * (1.0 - filterColor.r))), - (desat.g < 0.5 ? (2.0 * desat.g * filterColor.g) : (1.0 - 2.0 * (1.0 - desat.g) * (1.0 - filterColor.g))), - (desat.b < 0.5 ? (2.0 * desat.b * filterColor.b) : (1.0 - 2.0 * (1.0 - desat.b) * (1.0 - filterColor.b))), - 1.0 - ); - - //which is better, or are they equal? - gl_FragColor = vec4( mix(textureColor.rgb, outputColor.rgb, intensity), textureColor.a); - } -); -#endif - -@implementation GPUImageMonochromeFilter - -@synthesize intensity = _intensity; -@synthesize color = _color; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUMonochromeFragmentShaderString])) - { - return nil; - } - - intensityUniform = [filterProgram uniformIndex:@"intensity"]; - filterColorUniform = [filterProgram uniformIndex:@"filterColor"]; - - self.intensity = 1.0; - self.color = (GPUVector4){0.6f, 0.45f, 0.3f, 1.f}; - //self.color = [CIColor colorWithRed:0.6 green:0.45 blue:0.3 alpha:1.]; - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColor:(GPUVector4)color; -{ - - _color = color; - - [self setColorRed:color.one green:color.two blue:color.three]; -} - -- (void)setColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent; -{ - GPUVector3 filterColor = {redComponent, greenComponent, blueComponent}; - - [self setVec3:filterColor forUniform:filterColorUniform program:filterProgram]; -} - -- (void)setIntensity:(CGFloat)newValue; -{ - _intensity = newValue; - - [self setFloat:_intensity forUniform:intensityUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m deleted file mode 100644 index b017ca97..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.m +++ /dev/null @@ -1,188 +0,0 @@ -// -// GPUImageMosaicFilter.m - - -#import "GPUImageMosaicFilter.h" -#import "GPUImagePicture.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMosaicFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform vec2 inputTileSize; - uniform vec2 displayTileSize; - uniform float numTiles; - uniform int colorOn; - - void main() - { - vec2 xy = textureCoordinate; - xy = xy - mod(xy, displayTileSize); - - vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0); - - vec4 inputColor = texture2D(inputImageTexture2, xy); - float lum = dot(inputColor,lumcoeff); - lum = 1.0 - lum; - - float stepsize = 1.0 / numTiles; - float lumStep = (lum - mod(lum, stepsize)) / stepsize; - - float rowStep = 1.0 / inputTileSize.x; - float x = mod(lumStep, rowStep); - float y = floor(lumStep / rowStep); - - vec2 startCoord = vec2(float(x) * inputTileSize.x, float(y) * inputTileSize.y); - vec2 finalCoord = startCoord + ((textureCoordinate - xy) * (inputTileSize / displayTileSize)); - - vec4 color = texture2D(inputImageTexture, finalCoord); - if (colorOn == 1) { - color = color * inputColor; - } - gl_FragColor = color; - - } -); -#else -NSString *const kGPUImageMosaicFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform vec2 inputTileSize; - uniform vec2 displayTileSize; - uniform float numTiles; - uniform int colorOn; - - void main() - { - vec2 xy = textureCoordinate; - xy = xy - mod(xy, displayTileSize); - - vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0); - - vec4 inputColor = texture2D(inputImageTexture2, xy); - float lum = dot(inputColor,lumcoeff); - lum = 1.0 - lum; - - float stepsize = 1.0 / numTiles; - float lumStep = (lum - mod(lum, stepsize)) / stepsize; - - float rowStep = 1.0 / inputTileSize.x; - float x = mod(lumStep, rowStep); - float y = floor(lumStep / rowStep); - - vec2 startCoord = vec2(float(x) * inputTileSize.x, float(y) * inputTileSize.y); - vec2 finalCoord = startCoord + ((textureCoordinate - xy) * (inputTileSize / displayTileSize)); - - vec4 color = texture2D(inputImageTexture, finalCoord); - if (colorOn == 1) { - color = color * inputColor; - } - gl_FragColor = color; - } -); -#endif - -@implementation GPUImageMosaicFilter - -@synthesize inputTileSize = _inputTileSize, numTiles = _numTiles, displayTileSize = _displayTileSize, colorOn = _colorOn; -@synthesize tileSet = _tileSet; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMosaicFragmentShaderString])) - { - return nil; - } - - inputTileSizeUniform = [filterProgram uniformIndex:@"inputTileSize"]; - displayTileSizeUniform = [filterProgram uniformIndex:@"displayTileSize"]; - numTilesUniform = [filterProgram uniformIndex:@"numTiles"]; - colorOnUniform = [filterProgram uniformIndex:@"colorOn"]; - - CGSize its = CGSizeMake(0.125, 0.125); - CGSize dts = CGSizeMake(0.025, 0.025); - [self setDisplayTileSize:dts]; - [self setInputTileSize:its]; - [self setNumTiles:64.0]; - [self setColorOn:YES]; - //[self setTileSet:@"squares.png"]; - return self; -} - -- (void)setColorOn:(BOOL)yes -{ - glUniform1i(colorOnUniform, yes); -} - -- (void)setNumTiles:(float)numTiles -{ - - _numTiles = numTiles; - [self setFloat:_numTiles forUniformName:@"numTiles"]; -} - -- (void)setInputTileSize:(CGSize)inputTileSize -{ - if (inputTileSize.width > 1.0) { - _inputTileSize.width = 1.0; - } - if (inputTileSize.height > 1.0) { - _inputTileSize.height = 1.0; - } - if (inputTileSize.width < 0.0) { - _inputTileSize.width = 0.0; - } - if (inputTileSize.height < 0.0) { - _inputTileSize.height = 0.0; - } - - - _inputTileSize = inputTileSize; - - [self setSize:_inputTileSize forUniform:inputTileSizeUniform program:filterProgram]; -} - --(void)setDisplayTileSize:(CGSize)displayTileSize -{ - if (displayTileSize.width > 1.0) { - _displayTileSize.width = 1.0; - } - if (displayTileSize.height > 1.0) { - _displayTileSize.height = 1.0; - } - if (displayTileSize.width < 0.0) { - _displayTileSize.width = 0.0; - } - if (displayTileSize.height < 0.0) { - _displayTileSize.height = 0.0; - } - - - _displayTileSize = displayTileSize; - - [self setSize:_displayTileSize forUniform:displayTileSizeUniform program:filterProgram]; -} - --(void)setTileSet:(NSString *)tileSet -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *img = [UIImage imageNamed:tileSet]; -#else - NSImage *img = [NSImage imageNamed:tileSet]; -#endif - pic = [[GPUImagePicture alloc] initWithImage:img smoothlyScaleOutput:YES]; - [pic addTarget:self]; - [pic processImage]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m deleted file mode 100644 index 5a2c20b6..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.m +++ /dev/null @@ -1,209 +0,0 @@ -#import "GPUImageMotionBlurFilter.h" - -// Override vertex shader to remove dependent texture reads -NSString *const kGPUImageTiltedTexelSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform vec2 directionalTexelStep; - - varying vec2 textureCoordinate; - varying vec2 oneStepBackTextureCoordinate; - varying vec2 twoStepsBackTextureCoordinate; - varying vec2 threeStepsBackTextureCoordinate; - varying vec2 fourStepsBackTextureCoordinate; - varying vec2 oneStepForwardTextureCoordinate; - varying vec2 twoStepsForwardTextureCoordinate; - varying vec2 threeStepsForwardTextureCoordinate; - varying vec2 fourStepsForwardTextureCoordinate; - - void main() - { - gl_Position = position; - - textureCoordinate = inputTextureCoordinate.xy; - oneStepBackTextureCoordinate = inputTextureCoordinate.xy - directionalTexelStep; - twoStepsBackTextureCoordinate = inputTextureCoordinate.xy - 2.0 * directionalTexelStep; - threeStepsBackTextureCoordinate = inputTextureCoordinate.xy - 3.0 * directionalTexelStep; - fourStepsBackTextureCoordinate = inputTextureCoordinate.xy - 4.0 * directionalTexelStep; - oneStepForwardTextureCoordinate = inputTextureCoordinate.xy + directionalTexelStep; - twoStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 2.0 * directionalTexelStep; - threeStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 3.0 * directionalTexelStep; - fourStepsForwardTextureCoordinate = inputTextureCoordinate.xy + 4.0 * directionalTexelStep; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMotionBlurFragmentShaderString = SHADER_STRING -( - precision highp float; - - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 oneStepBackTextureCoordinate; - varying vec2 twoStepsBackTextureCoordinate; - varying vec2 threeStepsBackTextureCoordinate; - varying vec2 fourStepsBackTextureCoordinate; - varying vec2 oneStepForwardTextureCoordinate; - varying vec2 twoStepsForwardTextureCoordinate; - varying vec2 threeStepsForwardTextureCoordinate; - varying vec2 fourStepsForwardTextureCoordinate; - - void main() - { - // Box weights -// lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.1111111; -// fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.1111111; - - lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.05; - fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#else -NSString *const kGPUImageMotionBlurFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 oneStepBackTextureCoordinate; - varying vec2 twoStepsBackTextureCoordinate; - varying vec2 threeStepsBackTextureCoordinate; - varying vec2 fourStepsBackTextureCoordinate; - varying vec2 oneStepForwardTextureCoordinate; - varying vec2 twoStepsForwardTextureCoordinate; - varying vec2 threeStepsForwardTextureCoordinate; - varying vec2 fourStepsForwardTextureCoordinate; - - void main() - { - // Box weights - // vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.1111111; - // fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.1111111; - - vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, oneStepBackTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsBackTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsBackTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsBackTextureCoordinate) * 0.05; - fragmentColor += texture2D(inputImageTexture, oneStepForwardTextureCoordinate) * 0.15; - fragmentColor += texture2D(inputImageTexture, twoStepsForwardTextureCoordinate) * 0.12; - fragmentColor += texture2D(inputImageTexture, threeStepsForwardTextureCoordinate) * 0.09; - fragmentColor += texture2D(inputImageTexture, fourStepsForwardTextureCoordinate) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#endif - -@interface GPUImageMotionBlurFilter() -{ - GLint directionalTexelStepUniform; -} - -- (void)recalculateTexelOffsets; - -@end - -@implementation GPUImageMotionBlurFilter - -@synthesize blurSize = _blurSize; -@synthesize blurAngle = _blurAngle; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageTiltedTexelSamplingVertexShaderString fragmentShaderFromString:kGPUImageMotionBlurFragmentShaderString])) - { - return nil; - } - - directionalTexelStepUniform = [filterProgram uniformIndex:@"directionalTexelStep"]; - - self.blurSize = 2.5; - self.blurAngle = 0.0; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if (!CGSizeEqualToSize(oldInputSize, inputTextureSize) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self recalculateTexelOffsets]; - } -} - -- (void)recalculateTexelOffsets; -{ - CGFloat aspectRatio = 1.0; - CGPoint texelOffsets; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - aspectRatio = (inputTextureSize.width / inputTextureSize.height); - texelOffsets.x = _blurSize * sin(_blurAngle * M_PI / 180.0) * aspectRatio / inputTextureSize.height; - texelOffsets.y = _blurSize * cos(_blurAngle * M_PI / 180.0) / inputTextureSize.height; - } - else - { - aspectRatio = (inputTextureSize.height / inputTextureSize.width); - texelOffsets.x = _blurSize * cos(_blurAngle * M_PI / 180.0) * aspectRatio / inputTextureSize.width; - texelOffsets.y = _blurSize * sin(_blurAngle * M_PI / 180.0) / inputTextureSize.width; - } - - [self setPoint:texelOffsets forUniform:directionalTexelStepUniform program:filterProgram]; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self recalculateTexelOffsets]; -} - -- (void)setBlurAngle:(CGFloat)newValue; -{ - _blurAngle = newValue; - [self recalculateTexelOffsets]; -} - -- (void)setBlurSize:(CGFloat)newValue; -{ - _blurSize = newValue; - [self recalculateTexelOffsets]; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m b/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m deleted file mode 100644 index 0e204ad7..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.m +++ /dev/null @@ -1,112 +0,0 @@ -#import "GPUImageMotionDetector.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMotionComparisonFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform highp float intensity; - - void main() - { - lowp vec3 currentImageColor = texture2D(inputImageTexture, textureCoordinate).rgb; - lowp vec3 lowPassImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - mediump float colorDistance = distance(currentImageColor, lowPassImageColor); // * 0.57735 - lowp float movementThreshold = step(0.2, colorDistance); - - gl_FragColor = movementThreshold * vec4(textureCoordinate2.x, textureCoordinate2.y, 1.0, 1.0); - } -); -#else -NSString *const kGPUImageMotionComparisonFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float intensity; - - void main() - { - vec3 currentImageColor = texture2D(inputImageTexture, textureCoordinate).rgb; - vec3 lowPassImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - float colorDistance = distance(currentImageColor, lowPassImageColor); // * 0.57735 - float movementThreshold = step(0.2, colorDistance); - - gl_FragColor = movementThreshold * vec4(textureCoordinate2.x, textureCoordinate2.y, 1.0, 1.0); - } -); -#endif - - -@implementation GPUImageMotionDetector - -@synthesize lowPassFilterStrength, motionDetectionBlock; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // Start with a low pass filter to define the component to be removed - lowPassFilter = [[GPUImageLowPassFilter alloc] init]; - [self addFilter:lowPassFilter]; - - // Take the difference of the current frame from the low pass filtered result to get the high pass - frameComparisonFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageMotionComparisonFragmentShaderString]; - [self addFilter:frameComparisonFilter]; - - // Texture location 0 needs to be the original image for the difference blend - [lowPassFilter addTarget:frameComparisonFilter atTextureLocation:1]; - - // End with the average color for the scene to determine the centroid - averageColor = [[GPUImageAverageColor alloc] init]; - - __unsafe_unretained GPUImageMotionDetector *weakSelf = self; - - [averageColor setColorAverageProcessingFinishedBlock:^(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime) { - if (weakSelf.motionDetectionBlock != NULL) - { - weakSelf.motionDetectionBlock(CGPointMake(redComponent / alphaComponent, greenComponent / alphaComponent), alphaComponent, frameTime); - } -// NSLog(@"Average X: %f, Y: %f total: %f", redComponent / alphaComponent, greenComponent / alphaComponent, alphaComponent); - }]; - - [frameComparisonFilter addTarget:averageColor]; - - self.initialFilters = [NSArray arrayWithObjects:lowPassFilter, frameComparisonFilter, nil]; - self.terminalFilter = frameComparisonFilter; - - self.lowPassFilterStrength = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setLowPassFilterStrength:(CGFloat)newValue; -{ - lowPassFilter.filterStrength = newValue; -} - -- (CGFloat)lowPassFilterStrength; -{ - return lowPassFilter.filterStrength; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovie.m b/LFLiveKit/Vendor/GPUImage/GPUImageMovie.m deleted file mode 100755 index 4da050f4..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMovie.m +++ /dev/null @@ -1,876 +0,0 @@ -#import "GPUImageMovie.h" -#import "GPUImageMovieWriter.h" -#import "GPUImageFilter.h" -#import "GPUImageColorConversion.h" - - -@interface GPUImageMovie () -{ - BOOL audioEncodingIsFinished, videoEncodingIsFinished; - GPUImageMovieWriter *synchronizedMovieWriter; - AVAssetReader *reader; - AVPlayerItemVideoOutput *playerItemOutput; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CADisplayLink *displayLink; -#else - CVDisplayLinkRef displayLink; -#endif - CMTime previousFrameTime, processingFrameTime; - CFAbsoluteTime previousActualFrameTime; - BOOL keepLooping; - - GLuint luminanceTexture, chrominanceTexture; - - GLProgram *yuvConversionProgram; - GLint yuvConversionPositionAttribute, yuvConversionTextureCoordinateAttribute; - GLint yuvConversionLuminanceTextureUniform, yuvConversionChrominanceTextureUniform; - GLint yuvConversionMatrixUniform; - const GLfloat *_preferredConversion; - - BOOL isFullYUVRange; - - int imageBufferWidth, imageBufferHeight; -} - -- (void)processAsset; - -@end - -@implementation GPUImageMovie - -@synthesize url = _url; -@synthesize asset = _asset; -@synthesize runBenchmark = _runBenchmark; -@synthesize playAtActualSpeed = _playAtActualSpeed; -@synthesize delegate = _delegate; -@synthesize shouldRepeat = _shouldRepeat; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithURL:(NSURL *)url; -{ - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.url = url; - self.asset = nil; - - return self; -} - -- (id)initWithAsset:(AVAsset *)asset; -{ - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.url = nil; - self.asset = asset; - - return self; -} - -- (id)initWithPlayerItem:(AVPlayerItem *)playerItem; -{ - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.url = nil; - self.asset = nil; - self.playerItem = playerItem; - - return self; -} - -- (void)yuvConversionSetup; -{ - if ([GPUImageContext supportsFastTextureUpload]) - { - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - _preferredConversion = kColorConversion709; - isFullYUVRange = YES; - yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVFullRangeConversionForLAFragmentShaderString]; - - if (!yuvConversionProgram.initialized) - { - [yuvConversionProgram addAttribute:@"position"]; - [yuvConversionProgram addAttribute:@"inputTextureCoordinate"]; - - if (![yuvConversionProgram link]) - { - NSString *progLog = [yuvConversionProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [yuvConversionProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [yuvConversionProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - yuvConversionProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - yuvConversionPositionAttribute = [yuvConversionProgram attributeIndex:@"position"]; - yuvConversionTextureCoordinateAttribute = [yuvConversionProgram attributeIndex:@"inputTextureCoordinate"]; - yuvConversionLuminanceTextureUniform = [yuvConversionProgram uniformIndex:@"luminanceTexture"]; - yuvConversionChrominanceTextureUniform = [yuvConversionProgram uniformIndex:@"chrominanceTexture"]; - yuvConversionMatrixUniform = [yuvConversionProgram uniformIndex:@"colorConversionMatrix"]; - - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - - glEnableVertexAttribArray(yuvConversionPositionAttribute); - glEnableVertexAttribArray(yuvConversionTextureCoordinateAttribute); - }); - } -} - -- (void)dealloc -{ - [playerItemOutput setDelegate:nil queue:nil]; - - // Moved into endProcessing - //if (self.playerItem && (displayLink != nil)) - //{ - // [displayLink invalidate]; // remove from all run loops - // displayLink = nil; - //} -} - -#pragma mark - -#pragma mark Movie processing - -- (void)enableSynchronizedEncodingUsingMovieWriter:(GPUImageMovieWriter *)movieWriter; -{ - synchronizedMovieWriter = movieWriter; - movieWriter.encodingLiveVideo = NO; -} - -- (void)startProcessing -{ - if( self.playerItem ) { - [self processPlayerItem]; - return; - } - if(self.url == nil) - { - [self processAsset]; - return; - } - - if (_shouldRepeat) keepLooping = YES; - - previousFrameTime = kCMTimeZero; - previousActualFrameTime = CFAbsoluteTimeGetCurrent(); - - NSDictionary *inputOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; - AVURLAsset *inputAsset = [[AVURLAsset alloc] initWithURL:self.url options:inputOptions]; - - GPUImageMovie __block *blockSelf = self; - - [inputAsset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler: ^{ - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSError *error = nil; - AVKeyValueStatus tracksStatus = [inputAsset statusOfValueForKey:@"tracks" error:&error]; - if (tracksStatus != AVKeyValueStatusLoaded) - { - return; - } - blockSelf.asset = inputAsset; - [blockSelf processAsset]; - blockSelf = nil; - }); - }]; -} - -- (AVAssetReader*)createAssetReader -{ - NSError *error = nil; - AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.asset error:&error]; - - NSMutableDictionary *outputSettings = [NSMutableDictionary dictionary]; - if ([GPUImageContext supportsFastTextureUpload]) { - [outputSettings setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - isFullYUVRange = YES; - } - else { - [outputSettings setObject:@(kCVPixelFormatType_32BGRA) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - isFullYUVRange = NO; - } - - // Maybe set alwaysCopiesSampleData to NO on iOS 5.0 for faster video decoding - AVAssetReaderTrackOutput *readerVideoTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:[[self.asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] outputSettings:outputSettings]; - readerVideoTrackOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerVideoTrackOutput]; - - NSArray *audioTracks = [self.asset tracksWithMediaType:AVMediaTypeAudio]; - BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) ); - AVAssetReaderTrackOutput *readerAudioTrackOutput = nil; - - if (shouldRecordAudioTrack) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES]; -#else -#warning Missing OSX implementation -#endif - - // This might need to be extended to handle movies with more than one audio track - AVAssetTrack* audioTrack = [audioTracks objectAtIndex:0]; - readerAudioTrackOutput = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:audioTrack outputSettings:nil]; - readerAudioTrackOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerAudioTrackOutput]; - } - - return assetReader; -} - -- (void)processAsset -{ - reader = [self createAssetReader]; - - AVAssetReaderOutput *readerVideoTrackOutput = nil; - AVAssetReaderOutput *readerAudioTrackOutput = nil; - - audioEncodingIsFinished = YES; - for( AVAssetReaderOutput *output in reader.outputs ) { - if( [output.mediaType isEqualToString:AVMediaTypeAudio] ) { - audioEncodingIsFinished = NO; - readerAudioTrackOutput = output; - } - else if( [output.mediaType isEqualToString:AVMediaTypeVideo] ) { - readerVideoTrackOutput = output; - } - } - - if ([reader startReading] == NO) - { - NSLog(@"Error reading from file at URL: %@", self.url); - return; - } - - __unsafe_unretained GPUImageMovie *weakSelf = self; - - if (synchronizedMovieWriter != nil) - { - [synchronizedMovieWriter setVideoInputReadyCallback:^{ - BOOL success = [weakSelf readNextVideoFrameFromOutput:readerVideoTrackOutput]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - return success; -#endif - }]; - - [synchronizedMovieWriter setAudioInputReadyCallback:^{ - BOOL success = [weakSelf readNextAudioSampleFromOutput:readerAudioTrackOutput]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - return success; -#endif - }]; - - [synchronizedMovieWriter enableSynchronizationCallbacks]; - - } - else - { - while (reader.status == AVAssetReaderStatusReading && (!_shouldRepeat || keepLooping)) - { - [weakSelf readNextVideoFrameFromOutput:readerVideoTrackOutput]; - - if ( (readerAudioTrackOutput) && (!audioEncodingIsFinished) ) - { - [weakSelf readNextAudioSampleFromOutput:readerAudioTrackOutput]; - } - - } - - if (reader.status == AVAssetReaderStatusCompleted) { - - [reader cancelReading]; - - if (keepLooping) { - reader = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - [self startProcessing]; - }); - } else { - [weakSelf endProcessing]; - } - - } - } -} - -- (void)processPlayerItem -{ - runSynchronouslyOnVideoProcessingQueue(^{ - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCallback:)]; - [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; - [displayLink setPaused:YES]; -#else - // Suggested implementation: use CVDisplayLink http://stackoverflow.com/questions/14158743/alternative-of-cadisplaylink-for-mac-os-x - CGDirectDisplayID displayID = CGMainDisplayID(); - CVReturn error = kCVReturnSuccess; - error = CVDisplayLinkCreateWithCGDisplay(displayID, &displayLink); - if (error) - { - NSLog(@"DisplayLink created with error:%d", error); - displayLink = NULL; - } - CVDisplayLinkSetOutputCallback(displayLink, renderCallback, (__bridge void *)self); - CVDisplayLinkStop(displayLink); -#endif - - dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; - NSMutableDictionary *pixBuffAttributes = [NSMutableDictionary dictionary]; - if ([GPUImageContext supportsFastTextureUpload]) { - [pixBuffAttributes setObject:@(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - } - else { - [pixBuffAttributes setObject:@(kCVPixelFormatType_32BGRA) forKey:(id)kCVPixelBufferPixelFormatTypeKey]; - } - playerItemOutput = [[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:pixBuffAttributes]; - [playerItemOutput setDelegate:self queue:videoProcessingQueue]; - - [_playerItem addOutput:playerItemOutput]; - [playerItemOutput requestNotificationOfMediaDataChangeWithAdvanceInterval:0.1]; - }); -} - -- (void)outputMediaDataWillChange:(AVPlayerItemOutput *)sender -{ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - // Restart display link. - [displayLink setPaused:NO]; -#else - CVDisplayLinkStart(displayLink); -#endif -} - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -- (void)displayLinkCallback:(CADisplayLink *)sender -{ - /* - The callback gets called once every Vsync. - Using the display link's timestamp and duration we can compute the next time the screen will be refreshed, and copy the pixel buffer for that time - This pixel buffer can then be processed and later rendered on screen. - */ - // Calculate the nextVsync time which is when the screen will be refreshed next. - CFTimeInterval nextVSync = ([sender timestamp] + [sender duration]); - - CMTime outputItemTime = [playerItemOutput itemTimeForHostTime:nextVSync]; - - [self processPixelBufferAtTime:outputItemTime]; - -} -#else -static CVReturn renderCallback(CVDisplayLinkRef displayLink, - const CVTimeStamp *inNow, - const CVTimeStamp *inOutputTime, - CVOptionFlags flagsIn, - CVOptionFlags *flagsOut, - void *displayLinkContext) -{ - // Sample code taken from here https://developer.apple.com/library/mac/samplecode/AVGreenScreenPlayer/Listings/AVGreenScreenPlayer_GSPlayerView_m.html - - GPUImageMovie *self = (__bridge GPUImageMovie *)displayLinkContext; - AVPlayerItemVideoOutput *playerItemOutput = self->playerItemOutput; - - - // The displayLink calls back at every vsync (screen refresh) - // Compute itemTime for the next vsync - CMTime outputItemTime = [playerItemOutput itemTimeForCVTimeStamp:*inOutputTime]; - - [self processPixelBufferAtTime:outputItemTime]; - - return kCVReturnSuccess; -} -#endif - -- (void)processPixelBufferAtTime:(CMTime)outputItemTime { - if ([playerItemOutput hasNewPixelBufferForItemTime:outputItemTime]) { - __unsafe_unretained GPUImageMovie *weakSelf = self; - CVPixelBufferRef pixelBuffer = [playerItemOutput copyPixelBufferForItemTime:outputItemTime itemTimeForDisplay:NULL]; - if( pixelBuffer ) - runSynchronouslyOnVideoProcessingQueue(^{ - [weakSelf processMovieFrame:pixelBuffer withSampleTime:outputItemTime]; - CFRelease(pixelBuffer); - }); - } -} - -- (BOOL)readNextVideoFrameFromOutput:(AVAssetReaderOutput *)readerVideoTrackOutput; -{ - if (reader.status == AVAssetReaderStatusReading && ! videoEncodingIsFinished) - { - CMSampleBufferRef sampleBufferRef = [readerVideoTrackOutput copyNextSampleBuffer]; - if (sampleBufferRef) - { - //NSLog(@"read a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, CMSampleBufferGetOutputPresentationTimeStamp(sampleBufferRef)))); - if (_playAtActualSpeed) - { - // Do this outside of the video processing queue to not slow that down while waiting - CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(sampleBufferRef); - CMTime differenceFromLastFrame = CMTimeSubtract(currentSampleTime, previousFrameTime); - CFAbsoluteTime currentActualTime = CFAbsoluteTimeGetCurrent(); - - CGFloat frameTimeDifference = CMTimeGetSeconds(differenceFromLastFrame); - CGFloat actualTimeDifference = currentActualTime - previousActualFrameTime; - - if (frameTimeDifference > actualTimeDifference) - { - usleep(1000000.0 * (frameTimeDifference - actualTimeDifference)); - } - - previousFrameTime = currentSampleTime; - previousActualFrameTime = CFAbsoluteTimeGetCurrent(); - } - - __unsafe_unretained GPUImageMovie *weakSelf = self; - runSynchronouslyOnVideoProcessingQueue(^{ - [weakSelf processMovieFrame:sampleBufferRef]; - CMSampleBufferInvalidate(sampleBufferRef); - CFRelease(sampleBufferRef); - }); - - return YES; - } - else - { - if (!keepLooping) { - videoEncodingIsFinished = YES; - if( videoEncodingIsFinished && audioEncodingIsFinished ) - [self endProcessing]; - } - } - } - else if (synchronizedMovieWriter != nil) - { - if (reader.status == AVAssetReaderStatusCompleted) - { - [self endProcessing]; - } - } - return NO; -} - -- (BOOL)readNextAudioSampleFromOutput:(AVAssetReaderOutput *)readerAudioTrackOutput; -{ - if (reader.status == AVAssetReaderStatusReading && ! audioEncodingIsFinished) - { - CMSampleBufferRef audioSampleBufferRef = [readerAudioTrackOutput copyNextSampleBuffer]; - if (audioSampleBufferRef) - { - //NSLog(@"read an audio frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, CMSampleBufferGetOutputPresentationTimeStamp(audioSampleBufferRef)))); - [self.audioEncodingTarget processAudioBuffer:audioSampleBufferRef]; - CFRelease(audioSampleBufferRef); - return YES; - } - else - { - if (!keepLooping) { - audioEncodingIsFinished = YES; - if( videoEncodingIsFinished && audioEncodingIsFinished ) - [self endProcessing]; - } - } - } - else if (synchronizedMovieWriter != nil) - { - if (reader.status == AVAssetReaderStatusCompleted || reader.status == AVAssetReaderStatusFailed || - reader.status == AVAssetReaderStatusCancelled) - { - [self endProcessing]; - } - } - return NO; -} - -- (void)processMovieFrame:(CMSampleBufferRef)movieSampleBuffer; -{ -// CMTimeGetSeconds -// CMTimeSubtract - - CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(movieSampleBuffer); - CVImageBufferRef movieFrame = CMSampleBufferGetImageBuffer(movieSampleBuffer); - - processingFrameTime = currentSampleTime; - [self processMovieFrame:movieFrame withSampleTime:currentSampleTime]; -} - -- (float)progress -{ - if ( AVAssetReaderStatusReading == reader.status ) - { - float current = processingFrameTime.value * 1.0f / processingFrameTime.timescale; - float duration = self.asset.duration.value * 1.0f / self.asset.duration.timescale; - return current / duration; - } - else if ( AVAssetReaderStatusCompleted == reader.status ) - { - return 1.f; - } - else - { - return 0.f; - } -} - -- (void)processMovieFrame:(CVPixelBufferRef)movieFrame withSampleTime:(CMTime)currentSampleTime -{ - int bufferHeight = (int) CVPixelBufferGetHeight(movieFrame); - int bufferWidth = (int) CVPixelBufferGetWidth(movieFrame); - - CFTypeRef colorAttachments = CVBufferGetAttachment(movieFrame, kCVImageBufferYCbCrMatrixKey, NULL); - if (colorAttachments != NULL) - { - if(CFStringCompare(colorAttachments, kCVImageBufferYCbCrMatrix_ITU_R_601_4, 0) == kCFCompareEqualTo) - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - } - else - { - _preferredConversion = kColorConversion709; - } - } - else - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - - } - - CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - // Fix issue 1580 - [GPUImageContext useImageProcessingContext]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CVOpenGLESTextureRef luminanceTextureRef = NULL; - CVOpenGLESTextureRef chrominanceTextureRef = NULL; -#else - CVOpenGLTextureRef luminanceTextureRef = NULL; - CVOpenGLTextureRef chrominanceTextureRef = NULL; -#endif - - // if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - if (CVPixelBufferGetPlaneCount(movieFrame) > 0) // Check for YUV planar inputs to do RGB conversion - { - - // fix issue 2221 - CVPixelBufferLockBaseAddress(movieFrame,0); - - - if ( (imageBufferWidth != bufferWidth) && (imageBufferHeight != bufferHeight) ) - { - imageBufferWidth = bufferWidth; - imageBufferHeight = bufferHeight; - } - - CVReturn err; - // Y-plane - glActiveTexture(GL_TEXTURE4); - if ([GPUImageContext deviceSupportsRedTextures]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); -#else - err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &luminanceTextureRef); -#endif - } - else - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); -#else - err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &luminanceTextureRef); -#endif - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - luminanceTexture = CVOpenGLESTextureGetName(luminanceTextureRef); -#else - luminanceTexture = CVOpenGLTextureGetName(luminanceTextureRef); -#endif - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - // UV-plane - glActiveTexture(GL_TEXTURE5); - if ([GPUImageContext deviceSupportsRedTextures]) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); -#else - err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &chrominanceTextureRef); -#endif - } - else - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); -#else - err = CVOpenGLTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], movieFrame, NULL, &chrominanceTextureRef); -#endif - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - chrominanceTexture = CVOpenGLESTextureGetName(chrominanceTextureRef); -#else - chrominanceTexture = CVOpenGLTextureGetName(chrominanceTextureRef); -#endif - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - -// if (!allTargetsWantMonochromeData) -// { - [self convertYUVToRGBOutput]; -// } - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; - } - - [outputFramebuffer unlock]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; - } - - CVPixelBufferUnlockBaseAddress(movieFrame, 0); - CFRelease(luminanceTextureRef); - CFRelease(chrominanceTextureRef); - } - else - { - // TODO: Mesh this with the new framebuffer cache -// CVPixelBufferLockBaseAddress(movieFrame, 0); -// -// CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, movieFrame, NULL, GL_TEXTURE_2D, GL_RGBA, bufferWidth, bufferHeight, GL_BGRA, GL_UNSIGNED_BYTE, 0, &texture); -// -// if (!texture || err) { -// NSLog(@"Movie CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err); -// NSAssert(NO, @"Camera failure"); -// return; -// } -// -// outputTexture = CVOpenGLESTextureGetName(texture); -// // glBindTexture(CVOpenGLESTextureGetTarget(texture), outputTexture); -// glBindTexture(GL_TEXTURE_2D, outputTexture); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -// -// for (id currentTarget in targets) -// { -// NSInteger indexOfObject = [targets indexOfObject:currentTarget]; -// NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; -// -// [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; -// [currentTarget setInputTexture:outputTexture atIndex:targetTextureIndex]; -// -// [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; -// } -// -// CVPixelBufferUnlockBaseAddress(movieFrame, 0); -// CVOpenGLESTextureCacheFlush(coreVideoTextureCache, 0); -// CFRelease(texture); -// -// outputTexture = 0; - } - } - else - { - // Upload to texture - CVPixelBufferLockBaseAddress(movieFrame, 0); - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(bufferWidth, bufferHeight) textureOptions:self.outputTextureOptions onlyTexture:YES]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - // Using BGRA extension to pull in video frame data directly - glTexImage2D(GL_TEXTURE_2D, - 0, - self.outputTextureOptions.internalFormat, - bufferWidth, - bufferHeight, - 0, - self.outputTextureOptions.format, - self.outputTextureOptions.type, - CVPixelBufferGetBaseAddress(movieFrame)); - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:targetTextureIndex]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; - } - - [outputFramebuffer unlock]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - [currentTarget newFrameReadyAtTime:currentSampleTime atIndex:targetTextureIndex]; - } - CVPixelBufferUnlockBaseAddress(movieFrame, 0); - } - - if (_runBenchmark) - { - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - NSLog(@"Current frame time : %f ms", 1000.0 * currentFrameTime); - } -} - -- (void)endProcessing; -{ - keepLooping = NO; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [displayLink setPaused:YES]; -#else - CVDisplayLinkStop(displayLink); -#endif - - for (id currentTarget in targets) - { - [currentTarget endProcessing]; - } - - if (synchronizedMovieWriter != nil) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [synchronizedMovieWriter setVideoInputReadyCallback:^{return NO;}]; - [synchronizedMovieWriter setAudioInputReadyCallback:^{return NO;}]; -#else - // I'm not sure about this, meybe setting a nil will be more appropriate then an empty block - [synchronizedMovieWriter setVideoInputReadyCallback:^{}]; - [synchronizedMovieWriter setAudioInputReadyCallback:^{}]; -#endif - } - - if (self.playerItem && (displayLink != nil)) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [displayLink invalidate]; // remove from all run loops - displayLink = nil; -#else - CVDisplayLinkStop(displayLink); - displayLink = NULL; -#endif - } - - if ([self.delegate respondsToSelector:@selector(didCompletePlayingMovie)]) { - [self.delegate didCompletePlayingMovie]; - } - self.delegate = nil; -} - -- (void)cancelProcessing -{ - if (reader) { - [reader cancelReading]; - } - [self endProcessing]; -} - -- (void)convertYUVToRGBOutput; -{ - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(imageBufferWidth, imageBufferHeight) onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat textureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glUniform1i(yuvConversionLuminanceTextureUniform, 4); - - glActiveTexture(GL_TEXTURE5); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glUniform1i(yuvConversionChrominanceTextureUniform, 5); - - glUniformMatrix3fv(yuvConversionMatrixUniform, 1, GL_FALSE, _preferredConversion); - - glVertexAttribPointer(yuvConversionPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(yuvConversionTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); -} - -- (AVAssetReader*)assetReader { - return reader; -} - -- (BOOL)audioEncodingIsFinished { - return audioEncodingIsFinished; -} - -- (BOOL)videoEncodingIsFinished { - return videoEncodingIsFinished; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m b/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m deleted file mode 100644 index 6138fffe..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// GPUImageMovieComposition.m -// Givit -// -// Created by Sean Meiners on 2013/01/25. -// -// - -#import "GPUImageMovieComposition.h" -#import "GPUImageMovieWriter.h" - -@implementation GPUImageMovieComposition - -@synthesize compositon = _compositon; -@synthesize videoComposition = _videoComposition; -@synthesize audioMix = _audioMix; - -- (id)initWithComposition:(AVComposition*)compositon - andVideoComposition:(AVVideoComposition*)videoComposition - andAudioMix:(AVAudioMix*)audioMix { - if (!(self = [super init])) - { - return nil; - } - - [self yuvConversionSetup]; - - self.compositon = compositon; - self.videoComposition = videoComposition; - self.audioMix = audioMix; - - return self; -} - -- (AVAssetReader*)createAssetReader - { - //NSLog(@"creating reader from composition: %@, video: %@, audio: %@ with duration: %@", _compositon, _videoComposition, _audioMix, CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, _compositon.duration))); - - NSError *error = nil; - AVAssetReader *assetReader = [AVAssetReader assetReaderWithAsset:self.compositon error:&error]; - - NSDictionary *outputSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)}; - AVAssetReaderVideoCompositionOutput *readerVideoOutput = [AVAssetReaderVideoCompositionOutput assetReaderVideoCompositionOutputWithVideoTracks:[_compositon tracksWithMediaType:AVMediaTypeVideo] - videoSettings:outputSettings]; -#if ! TARGET_IPHONE_SIMULATOR - if( [_videoComposition isKindOfClass:[AVMutableVideoComposition class]] ) - [(AVMutableVideoComposition*)_videoComposition setRenderScale:1.0]; -#endif - readerVideoOutput.videoComposition = self.videoComposition; - readerVideoOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerVideoOutput]; - - NSArray *audioTracks = [_compositon tracksWithMediaType:AVMediaTypeAudio]; - BOOL shouldRecordAudioTrack = (([audioTracks count] > 0) && (self.audioEncodingTarget != nil) ); - AVAssetReaderAudioMixOutput *readerAudioOutput = nil; - - if (shouldRecordAudioTrack) - { - [self.audioEncodingTarget setShouldInvalidateAudioSampleWhenDone:YES]; - - readerAudioOutput = [AVAssetReaderAudioMixOutput assetReaderAudioMixOutputWithAudioTracks:audioTracks audioSettings:nil]; - readerAudioOutput.audioMix = self.audioMix; - readerAudioOutput.alwaysCopiesSampleData = NO; - [assetReader addOutput:readerAudioOutput]; - } - - return assetReader; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m deleted file mode 100755 index ed647072..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageMultiplyBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageMultiplyBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 base = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = overlayer * base + overlayer * (1.0 - base.a) + base * (1.0 - overlayer.a); - } -); -#else -NSString *const kGPUImageMultiplyBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = overlayer * base + overlayer * (1.0 - base.a) + base * (1.0 - overlayer.a); - } -); -#endif - -@implementation GPUImageMultiplyBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageMultiplyBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m deleted file mode 100644 index aa6b3041..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.m +++ /dev/null @@ -1,74 +0,0 @@ -#import "GPUImageNobleCornerDetectionFilter.h" - -@implementation GPUImageNobleCornerDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageNobleCornerDetectionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float sensitivity; - - void main() - { - mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - mediump float derivativeSum = derivativeElements.x + derivativeElements.y; - - // R = (Ix^2 * Iy^2 - Ixy * Ixy) / (Ix^2 + Iy^2) - mediump float zElement = (derivativeElements.z * 2.0) - 1.0; - // mediump float harrisIntensity = (derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z)) / (derivativeSum); - mediump float cornerness = (derivativeElements.x * derivativeElements.y - (zElement * zElement)) / (derivativeSum); - - // Original Harris detector - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - // highp float harrisIntensity = derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z) - harrisConstant * derivativeSum * derivativeSum; - - // gl_FragColor = vec4(vec3(harrisIntensity * 7.0), 1.0); - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#else -NSString *const kGPUImageNobleCornerDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float sensitivity; - - void main() - { - vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - float derivativeSum = derivativeElements.x + derivativeElements.y; - - // R = (Ix^2 * Iy^2 - Ixy * Ixy) / (Ix^2 + Iy^2) - float zElement = (derivativeElements.z * 2.0) - 1.0; - // mediump float harrisIntensity = (derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z)) / (derivativeSum); - float cornerness = (derivativeElements.x * derivativeElements.y - (zElement * zElement)) / (derivativeSum); - - // Original Harris detector - // R = Ix^2 * Iy^2 - Ixy * Ixy - k * (Ix^2 + Iy^2)^2 - // highp float harrisIntensity = derivativeElements.x * derivativeElements.y - (derivativeElements.z * derivativeElements.z) - harrisConstant * derivativeSum * derivativeSum; - - // gl_FragColor = vec4(vec3(harrisIntensity * 7.0), 1.0); - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageNobleCornerDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m deleted file mode 100644 index eaf7ce56..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.m +++ /dev/null @@ -1,107 +0,0 @@ -#import "GPUImageNonMaximumSuppressionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - - varying highp vec2 topTextureCoordinate; - varying highp vec2 topLeftTextureCoordinate; - varying highp vec2 topRightTextureCoordinate; - - varying highp vec2 bottomTextureCoordinate; - varying highp vec2 bottomLeftTextureCoordinate; - varying highp vec2 bottomRightTextureCoordinate; - - void main() - { - lowp float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - lowp float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - lowp float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - lowp float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - lowp float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - gl_FragColor = vec4((centerColor.rgb * step(maxValue, centerColor.r) * multiplier), 1.0); - } -); -#else -NSString *const kGPUImageNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - void main() - { - float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - gl_FragColor = vec4((centerColor.rgb * step(maxValue, centerColor.r) * multiplier), 1.0); - } -); -#endif - -@implementation GPUImageNonMaximumSuppressionFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageNonMaximumSuppressionFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m deleted file mode 100644 index f5b5069d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.m +++ /dev/null @@ -1,96 +0,0 @@ -// Created by Jorge Garcia on 9/5/12. - -#import "GPUImageNormalBlendFilter.h" -/* - This equation is a simplification of the general blending equation. It assumes the destination color is opaque, and therefore drops the destination color's alpha term. - - D = C1 * C1a + C2 * C2a * (1 - C1a) - where D is the resultant color, C1 is the color of the first element, C1a is the alpha of the first element, C2 is the second element color, C2a is the alpha of the second element. The destination alpha is calculated with: - - Da = C1a + C2a * (1 - C1a) - The resultant color is premultiplied with the alpha. To restore the color to the unmultiplied values, just divide by Da, the resultant alpha. - - http://stackoverflow.com/questions/1724946/blend-mode-on-a-transparent-and-semi-transparent-background - - For some reason Photoshop behaves - D = C1 + C2 * C2a * (1 - C1a) - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 c2 = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2); - - lowp vec4 outputColor; - -// outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a); -// outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a); -// outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a); -// outputColor.a = c1.a + c2.a * (1.0 - c1.a); - - lowp float a = c1.a + c2.a * (1.0 - c1.a); - lowp float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output - - outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.a = a; - - gl_FragColor = outputColor; - } -); -#else -NSString *const kGPUImageNormalBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 c2 = texture2D(inputImageTexture, textureCoordinate); - vec4 c1 = texture2D(inputImageTexture2, textureCoordinate2); - - vec4 outputColor; - - // outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a); - // outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a); - // outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a); - // outputColor.a = c1.a + c2.a * (1.0 - c1.a); - - float a = c1.a + c2.a * (1.0 - c1.a); - float alphaDivisor = a + step(a, 0.0); // Protect against a divide-by-zero blacking out things in the output - - outputColor.r = (c1.r * c1.a + c2.r * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.g = (c1.g * c1.a + c2.g * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.b = (c1.b * c1.a + c2.b * c2.a * (1.0 - c1.a))/alphaDivisor; - outputColor.a = a; - - gl_FragColor = outputColor; - } -); -#endif - -@implementation GPUImageNormalBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageNormalBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m deleted file mode 100644 index b74acb60..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.m +++ /dev/null @@ -1,65 +0,0 @@ -#import "GPUImageOpacityFilter.h" - -@implementation GPUImageOpacityFilter - -@synthesize opacity = _opacity; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageOpacityFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float opacity; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); - } -); -#else -NSString *const kGPUImageOpacityFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float opacity; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.rgb, textureColor.a * opacity); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageOpacityFragmentShaderString])) - { - return nil; - } - - opacityUniform = [filterProgram uniformIndex:@"opacity"]; - self.opacity = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setOpacity:(CGFloat)newValue; -{ - _opacity = newValue; - - [self setFloat:_opacity forUniform:opacityUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m deleted file mode 100644 index 4e7a5653..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.m +++ /dev/null @@ -1,57 +0,0 @@ -#import "GPUImageOpeningFilter.h" -#import "GPUImageErosionFilter.h" -#import "GPUImageDilationFilter.h" - -@implementation GPUImageOpeningFilter - -@synthesize verticalTexelSpacing = _verticalTexelSpacing; -@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: erosion - erosionFilter = [[GPUImageErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - // Second pass: dilation - dilationFilter = [[GPUImageDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - [erosionFilter addTarget:dilationFilter]; - - self.initialFilters = [NSArray arrayWithObjects:erosionFilter, nil]; - self.terminalFilter = dilationFilter; - - return self; -} - -- (void)setVerticalTexelSpacing:(CGFloat)newValue; -{ - _verticalTexelSpacing = newValue; - erosionFilter.verticalTexelSpacing = newValue; - dilationFilter.verticalTexelSpacing = newValue; -} - -- (void)setHorizontalTexelSpacing:(CGFloat)newValue; -{ - _horizontalTexelSpacing = newValue; - erosionFilter.horizontalTexelSpacing = newValue; - dilationFilter.horizontalTexelSpacing = newValue; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOutput.m b/LFLiveKit/Vendor/GPUImage/GPUImageOutput.m deleted file mode 100755 index d9bdaefa..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageOutput.m +++ /dev/null @@ -1,439 +0,0 @@ -#import "GPUImageOutput.h" -#import "GPUImageMovieWriter.h" -#import "GPUImagePicture.h" -#import - -dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void) -{ -#if TARGET_OS_IPHONE - if ([[[UIDevice currentDevice] systemVersion] compare:@"9.0" options:NSNumericSearch] != NSOrderedAscending) - { - return dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_DEFAULT, 0); - } -#endif - return nil; -} - -void runOnMainQueueWithoutDeadlocking(void (^block)(void)) -{ - if ([NSThread isMainThread]) - { - block(); - } - else - { - dispatch_sync(dispatch_get_main_queue(), block); - } -} - -void runSynchronouslyOnVideoProcessingQueue(void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_sync(videoProcessingQueue, block); - } -} - -void runAsynchronouslyOnVideoProcessingQueue(void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [GPUImageContext sharedContextQueue]; - -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_async(videoProcessingQueue, block); - } -} - -void runSynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [context contextQueue]; -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_sync(videoProcessingQueue, block); - } -} - -void runAsynchronouslyOnContextQueue(GPUImageContext *context, void (^block)(void)) -{ - dispatch_queue_t videoProcessingQueue = [context contextQueue]; - -#if !OS_OBJECT_USE_OBJC -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (dispatch_get_current_queue() == videoProcessingQueue) -#pragma clang diagnostic pop -#else - if (dispatch_get_specific([GPUImageContext contextKey])) -#endif - { - block(); - }else - { - dispatch_async(videoProcessingQueue, block); - } -} - -void reportAvailableMemoryForGPUImage(NSString *tag) -{ - if (!tag) - tag = @"Default"; - - struct task_basic_info info; - - mach_msg_type_number_t size = sizeof(info); - - kern_return_t kerr = task_info(mach_task_self(), - - TASK_BASIC_INFO, - - (task_info_t)&info, - - &size); - if( kerr == KERN_SUCCESS ) { - NSLog(@"%@ - Memory used: %u", tag, (unsigned int)info.resident_size); //in bytes - } else { - NSLog(@"%@ - Error: %s", tag, mach_error_string(kerr)); - } -} - -@implementation GPUImageOutput - -@synthesize shouldSmoothlyScaleOutput = _shouldSmoothlyScaleOutput; -@synthesize shouldIgnoreUpdatesToThisTarget = _shouldIgnoreUpdatesToThisTarget; -@synthesize audioEncodingTarget = _audioEncodingTarget; -@synthesize targetToIgnoreForUpdates = _targetToIgnoreForUpdates; -@synthesize frameProcessingCompletionBlock = _frameProcessingCompletionBlock; -@synthesize enabled = _enabled; -@synthesize outputTextureOptions = _outputTextureOptions; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - targets = [[NSMutableArray alloc] init]; - targetTextureIndices = [[NSMutableArray alloc] init]; - _enabled = YES; - allTargetsWantMonochromeData = YES; - usingNextFrameForImageCapture = NO; - - // set default texture options - _outputTextureOptions.minFilter = GL_LINEAR; - _outputTextureOptions.magFilter = GL_LINEAR; - _outputTextureOptions.wrapS = GL_CLAMP_TO_EDGE; - _outputTextureOptions.wrapT = GL_CLAMP_TO_EDGE; - _outputTextureOptions.internalFormat = GL_RGBA; - _outputTextureOptions.format = GL_BGRA; - _outputTextureOptions.type = GL_UNSIGNED_BYTE; - - return self; -} - -- (void)dealloc -{ - [self removeAllTargets]; -} - -#pragma mark - -#pragma mark Managing targets - -- (void)setInputFramebufferForTarget:(id)target atIndex:(NSInteger)inputTextureIndex; -{ - [target setInputFramebuffer:[self framebufferForOutput] atIndex:inputTextureIndex]; -} - -- (GPUImageFramebuffer *)framebufferForOutput; -{ - return outputFramebuffer; -} - -- (void)removeOutputFramebuffer; -{ - outputFramebuffer = nil; -} - -- (void)notifyTargetsAboutNewOutputTexture; -{ - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [self setInputFramebufferForTarget:currentTarget atIndex:textureIndex]; - } -} - -- (NSArray*)targets; -{ - return [NSArray arrayWithArray:targets]; -} - -- (void)addTarget:(id)newTarget; -{ - NSInteger nextAvailableTextureIndex = [newTarget nextAvailableTextureIndex]; - [self addTarget:newTarget atTextureLocation:nextAvailableTextureIndex]; - - if ([newTarget shouldIgnoreUpdatesToThisTarget]) - { - _targetToIgnoreForUpdates = newTarget; - } -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - if([targets containsObject:newTarget]) - { - return; - } - - cachedMaximumOutputSize = CGSizeZero; - runSynchronouslyOnVideoProcessingQueue(^{ - [self setInputFramebufferForTarget:newTarget atIndex:textureLocation]; - [targets addObject:newTarget]; - [targetTextureIndices addObject:[NSNumber numberWithInteger:textureLocation]]; - - allTargetsWantMonochromeData = allTargetsWantMonochromeData && [newTarget wantsMonochromeInput]; - }); -} - -- (void)removeTarget:(id)targetToRemove; -{ - if(![targets containsObject:targetToRemove]) - { - return; - } - - if (_targetToIgnoreForUpdates == targetToRemove) - { - _targetToIgnoreForUpdates = nil; - } - - cachedMaximumOutputSize = CGSizeZero; - - NSInteger indexOfObject = [targets indexOfObject:targetToRemove]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - runSynchronouslyOnVideoProcessingQueue(^{ - [targetToRemove setInputSize:CGSizeZero atIndex:textureIndexOfTarget]; - [targetToRemove setInputRotation:kGPUImageNoRotation atIndex:textureIndexOfTarget]; - - [targetTextureIndices removeObjectAtIndex:indexOfObject]; - [targets removeObject:targetToRemove]; - [targetToRemove endProcessing]; - }); -} - -- (void)removeAllTargets; -{ - cachedMaximumOutputSize = CGSizeZero; - runSynchronouslyOnVideoProcessingQueue(^{ - for (id targetToRemove in targets) - { - NSInteger indexOfObject = [targets indexOfObject:targetToRemove]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [targetToRemove setInputSize:CGSizeZero atIndex:textureIndexOfTarget]; - [targetToRemove setInputRotation:kGPUImageNoRotation atIndex:textureIndexOfTarget]; - } - [targets removeAllObjects]; - [targetTextureIndices removeAllObjects]; - - allTargetsWantMonochromeData = YES; - }); -} - -#pragma mark - -#pragma mark Manage the output texture - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - -} - -- (void)forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize; -{ -} - -#pragma mark - -#pragma mark Still image processing - -- (void)useNextFrameForImageCapture; -{ - -} - -- (CGImageRef)newCGImageFromCurrentlyProcessedOutput; -{ - return nil; -} - -- (CGImageRef)newCGImageByFilteringCGImage:(CGImageRef)imageToFilter; -{ - GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithCGImage:imageToFilter]; - - [self useNextFrameForImageCapture]; - [stillImageSource addTarget:(id)self]; - [stillImageSource processImage]; - - CGImageRef processedImage = [self newCGImageFromCurrentlyProcessedOutput]; - - [stillImageSource removeTarget:(id)self]; - return processedImage; -} - -- (BOOL)providesMonochromeOutput; -{ - return NO; -} - -#pragma mark - -#pragma mark Platform-specific image output methods - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - -- (UIImage *)imageFromCurrentFramebuffer; -{ - UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation]; - UIImageOrientation imageOrientation = UIImageOrientationLeft; - switch (deviceOrientation) - { - case UIDeviceOrientationPortrait: - imageOrientation = UIImageOrientationUp; - break; - case UIDeviceOrientationPortraitUpsideDown: - imageOrientation = UIImageOrientationDown; - break; - case UIDeviceOrientationLandscapeLeft: - imageOrientation = UIImageOrientationLeft; - break; - case UIDeviceOrientationLandscapeRight: - imageOrientation = UIImageOrientationRight; - break; - default: - imageOrientation = UIImageOrientationUp; - break; - } - - return [self imageFromCurrentFramebufferWithOrientation:imageOrientation]; -} - -- (UIImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; -{ - CGImageRef cgImageFromBytes = [self newCGImageFromCurrentlyProcessedOutput]; - UIImage *finalImage = [UIImage imageWithCGImage:cgImageFromBytes scale:1.0 orientation:imageOrientation]; - CGImageRelease(cgImageFromBytes); - - return finalImage; -} - -- (UIImage *)imageByFilteringImage:(UIImage *)imageToFilter; -{ - CGImageRef image = [self newCGImageByFilteringCGImage:[imageToFilter CGImage]]; - UIImage *processedImage = [UIImage imageWithCGImage:image scale:[imageToFilter scale] orientation:[imageToFilter imageOrientation]]; - CGImageRelease(image); - return processedImage; -} - -- (CGImageRef)newCGImageByFilteringImage:(UIImage *)imageToFilter -{ - return [self newCGImageByFilteringCGImage:[imageToFilter CGImage]]; -} - -#else - -- (NSImage *)imageFromCurrentFramebuffer; -{ - return [self imageFromCurrentFramebufferWithOrientation:UIImageOrientationLeft]; -} - -- (NSImage *)imageFromCurrentFramebufferWithOrientation:(UIImageOrientation)imageOrientation; -{ - CGImageRef cgImageFromBytes = [self newCGImageFromCurrentlyProcessedOutput]; - NSImage *finalImage = [[NSImage alloc] initWithCGImage:cgImageFromBytes size:NSZeroSize]; - CGImageRelease(cgImageFromBytes); - - return finalImage; -} - -- (NSImage *)imageByFilteringImage:(NSImage *)imageToFilter; -{ - CGImageRef image = [self newCGImageByFilteringCGImage:[imageToFilter CGImageForProposedRect:NULL context:[NSGraphicsContext currentContext] hints:nil]]; - NSImage *processedImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize]; - CGImageRelease(image); - return processedImage; -} - -- (CGImageRef)newCGImageByFilteringImage:(NSImage *)imageToFilter -{ - return [self newCGImageByFilteringCGImage:[imageToFilter CGImageForProposedRect:NULL context:[NSGraphicsContext currentContext] hints:nil]]; -} - -#endif - -#pragma mark - -#pragma mark Accessors - -- (void)setAudioEncodingTarget:(GPUImageMovieWriter *)newValue; -{ - _audioEncodingTarget = newValue; - if( ! _audioEncodingTarget.hasAudioTrack ) - { - _audioEncodingTarget.hasAudioTrack = YES; - } -} - --(void)setOutputTextureOptions:(GPUTextureOptions)outputTextureOptions -{ - _outputTextureOptions = outputTextureOptions; - - if( outputFramebuffer.texture ) - { - glBindTexture(GL_TEXTURE_2D, outputFramebuffer.texture); - //_outputTextureOptions.format - //_outputTextureOptions.internalFormat - //_outputTextureOptions.magFilter - //_outputTextureOptions.minFilter - //_outputTextureOptions.type - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _outputTextureOptions.wrapS); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _outputTextureOptions.wrapT); - glBindTexture(GL_TEXTURE_2D, 0); - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m deleted file mode 100755 index c8c5185d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageOverlayBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageOverlayBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - mediump float ra; - if (2.0 * base.r < base.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - mediump float ga; - if (2.0 * base.g < base.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - mediump float ba; - if (2.0 * base.b < base.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#else -NSString *const kGPUImageOverlayBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float ra; - if (2.0 * base.r < base.a) { - ra = 2.0 * overlay.r * base.r + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } else { - ra = overlay.a * base.a - 2.0 * (base.a - base.r) * (overlay.a - overlay.r) + overlay.r * (1.0 - base.a) + base.r * (1.0 - overlay.a); - } - - float ga; - if (2.0 * base.g < base.a) { - ga = 2.0 * overlay.g * base.g + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } else { - ga = overlay.a * base.a - 2.0 * (base.a - base.g) * (overlay.a - overlay.g) + overlay.g * (1.0 - base.a) + base.g * (1.0 - overlay.a); - } - - float ba; - if (2.0 * base.b < base.a) { - ba = 2.0 * overlay.b * base.b + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } else { - ba = overlay.a * base.a - 2.0 * (base.a - base.b) * (overlay.a - overlay.b) + overlay.b * (1.0 - base.a) + base.b * (1.0 - overlay.a); - } - - gl_FragColor = vec4(ra, ga, ba, 1.0); - } -); -#endif - -@implementation GPUImageOverlayBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageOverlayBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m deleted file mode 100644 index 0a2f6e49..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.m +++ /dev/null @@ -1,266 +0,0 @@ -#import "GPUImageParallelCoordinateLineTransformFilter.h" - -NSString *const kGPUImageHoughAccumulationVertexShaderString = SHADER_STRING -( - attribute vec4 position; - - void main() - { - gl_Position = position; - } -); - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageHoughAccumulationFragmentShaderString = SHADER_STRING -( - const lowp float scalingFactor = 1.0 / 256.0; - - void main() - { - gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); - } -); - -// highp - 16-bit, floating point range: -2^62 to 2^62, integer range: -2^16 to 2^16 -// NOTE: See below for where I'm tacking on the required extension as a prefix -NSString *const kGPUImageHoughAccumulationFBOReadFragmentShaderString = SHADER_STRING -( - const lowp float scalingFactor = 0.004; -// const lowp float scalingFactor = 0.1; - - void main() - { - mediump vec4 fragmentData = gl_LastFragData[0]; - - fragmentData.r = fragmentData.r + scalingFactor; - fragmentData.g = scalingFactor * floor(fragmentData.r) + fragmentData.g; - fragmentData.b = scalingFactor * floor(fragmentData.g) + fragmentData.b; - fragmentData.a = scalingFactor * floor(fragmentData.b) + fragmentData.a; - - fragmentData = fract(fragmentData); - - gl_FragColor = vec4(fragmentData.rgb, 1.0); - } -); - -#else -NSString *const kGPUImageHoughAccumulationFragmentShaderString = SHADER_STRING -( - const float scalingFactor = 1.0 / 256.0; - - void main() - { - gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); - } -); - -NSString *const kGPUImageHoughAccumulationFBOReadFragmentShaderString = SHADER_STRING -( - const float scalingFactor = 1.0 / 256.0; - - void main() - { - // gl_FragColor = vec4(scalingFactor, scalingFactor, scalingFactor, 1.0); - gl_FragColor = vec4(0.004, 0.004, 0.004, 1.0); - } -); -#endif - -@interface GPUImageParallelCoordinateLineTransformFilter() -// Rendering -- (void)generateLineCoordinates; - -@end - -@implementation GPUImageParallelCoordinateLineTransformFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - NSString *fragmentShaderToUse = nil; - - if ([GPUImageContext deviceSupportsFramebufferReads]) - { - fragmentShaderToUse = [NSString stringWithFormat:@"#extension GL_EXT_shader_framebuffer_fetch : require\n %@",kGPUImageHoughAccumulationFBOReadFragmentShaderString]; - } - else - { - fragmentShaderToUse = kGPUImageHoughAccumulationFragmentShaderString; - } - - if (!(self = [super initWithVertexShaderFromString:kGPUImageHoughAccumulationVertexShaderString fragmentShaderFromString:fragmentShaderToUse])) - { - return nil; - } - - - return self; -} - -// TODO: have this be regenerated on change of image size -- (void)dealloc; -{ - free(rawImagePixels); - free(lineCoordinates); -} - -- (void)initializeAttributes; -{ - [filterProgram addAttribute:@"position"]; -} - -#pragma mark - -#pragma mark Rendering - -#define MAXLINESCALINGFACTOR 4 - -- (void)generateLineCoordinates; -{ - unsigned int imageByteSize = inputTextureSize.width * inputTextureSize.height * 4; - rawImagePixels = (GLubyte *)malloc(imageByteSize); - - maxLinePairsToRender = (inputTextureSize.width * inputTextureSize.height) / MAXLINESCALINGFACTOR; - lineCoordinates = calloc(maxLinePairsToRender * 8, sizeof(GLfloat)); -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - if (lineCoordinates == NULL) - { - [self generateLineCoordinates]; - } - - [self renderToTextureWithVertices:NULL textureCoordinates:NULL]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // we need a normal color texture for this filter - NSAssert(self.outputTextureOptions.internalFormat == GL_RGBA, @"The output texture format for this filter must be GL_RGBA."); - NSAssert(self.outputTextureOptions.type == GL_UNSIGNED_BYTE, @"The type of the output texture of this filter must be GL_UNSIGNED_BYTE."); - - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - // Grab the edge points from the previous frame and create the parallel coordinate lines for them - // This would be a great place to have a working histogram pyramid implementation - - [GPUImageContext useImageProcessingContext]; - [firstInputFramebuffer activateFramebuffer]; - - glFinish(); - glReadPixels(0, 0, inputTextureSize.width, inputTextureSize.height, GL_RGBA, GL_UNSIGNED_BYTE, rawImagePixels); - - CGFloat xAspectMultiplier = 1.0, yAspectMultiplier = 1.0; - -// if (inputTextureSize.width > inputTextureSize.height) -// { -// yAspectMultiplier = inputTextureSize.height / inputTextureSize.width; -// } -// else -// { -// xAspectMultiplier = inputTextureSize.width / inputTextureSize.height; -// } - -// CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - - unsigned int imageByteSize = inputTextureSize.width * inputTextureSize.height * 4; - unsigned int imageWidth = inputTextureSize.width * 4; - - linePairsToRender = 0; - unsigned int currentByte = 0; - unsigned int lineStorageIndex = 0; - unsigned int maxLineStorageIndex = maxLinePairsToRender * 8 - 8; - - GLfloat minY = 100, maxY = -100, minX = 100, maxX = -100; - while (currentByte < imageByteSize) - { - GLubyte colorByte = rawImagePixels[currentByte]; - - if (colorByte > 0) - { - unsigned int xCoordinate = currentByte % imageWidth; - unsigned int yCoordinate = currentByte / imageWidth; - - CGFloat normalizedXCoordinate = (-1.0 + 2.0 * (CGFloat)(xCoordinate / 4) / inputTextureSize.width) * xAspectMultiplier; - CGFloat normalizedYCoordinate = (-1.0 + 2.0 * (CGFloat)(yCoordinate) / inputTextureSize.height) * yAspectMultiplier; - - minY = MIN(minY, normalizedYCoordinate); - maxY = MAX(maxY, normalizedYCoordinate); - minX = MIN(minX, normalizedXCoordinate); - maxX = MAX(maxX, normalizedXCoordinate); - -// NSLog(@"Parallel line coordinates: (%f, %f) - (%f, %f) - (%f, %f)", -1.0, -normalizedYCoordinate, 0.0, normalizedXCoordinate, 1.0, normalizedYCoordinate); - // T space coordinates, (-d, -y) to (0, x) - lineCoordinates[lineStorageIndex++] = -1.0; - lineCoordinates[lineStorageIndex++] = -normalizedYCoordinate; - lineCoordinates[lineStorageIndex++] = 0.0; - lineCoordinates[lineStorageIndex++] = normalizedXCoordinate; - - // S space coordinates, (0, x) to (d, y) - lineCoordinates[lineStorageIndex++] = 0.0; - lineCoordinates[lineStorageIndex++] = normalizedXCoordinate; - lineCoordinates[lineStorageIndex++] = 1.0; - lineCoordinates[lineStorageIndex++] = normalizedYCoordinate; - - linePairsToRender++; - - linePairsToRender = MIN(linePairsToRender, maxLinePairsToRender); - lineStorageIndex = MIN(lineStorageIndex, maxLineStorageIndex); - } - currentByte +=8; - } - -// NSLog(@"Line pairs to render: %d out of max: %d", linePairsToRender, maxLinePairsToRender); - -// CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); -// NSLog(@"Line generation processing time : %f ms", 1000.0 * currentFrameTime); - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - [self setUniformsForProgramAtIndex:0]; - - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); - - if (![GPUImageContext deviceSupportsFramebufferReads]) - { - glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE); - glEnable(GL_BLEND); - } - else - { - } - - glLineWidth(1); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, lineCoordinates); - glDrawArrays(GL_LINES, 0, (linePairsToRender * 4)); - - if (![GPUImageContext deviceSupportsFramebufferReads]) - { - glDisable(GL_BLEND); - } - [firstInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m deleted file mode 100644 index 9ca7cbad..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.m +++ /dev/null @@ -1,239 +0,0 @@ -#import "GPUImagePerlinNoiseFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING -( - precision highp float; - varying highp vec2 textureCoordinate; - uniform float scale; - - uniform vec4 colorStart; - uniform vec4 colorFinish; - - // - // Description : Array and textureless GLSL 2D/3D/4D simplex - // noise functions. - // Author : Ian McEwan, Ashima Arts. - // Maintainer : ijm - // Lastmod : 20110822 (ijm) - // License : Copyright (C) 2011 Ashima Arts. All rights reserved. - // Distributed under the MIT License. See LICENSE file. - // https://github.com/ashima/webgl-noise - // - - vec4 mod289(vec4 x) -{ - return x - floor(x * (1.0 / 289.0)) * 289.0; -} - - vec4 permute(vec4 x) -{ - return mod289(((x*34.0)+1.0)*x); -} - - vec4 taylorInvSqrt(vec4 r) -{ - return 1.79284291400159 - 0.85373472095314 * r; -} - - vec2 fade(vec2 t) { - return t*t*t*(t*(t*6.0-15.0)+10.0); - } - - // Classic Perlin noise - float cnoise(vec2 P) -{ - vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0); - vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0); - Pi = mod289(Pi); // To avoid truncation effects in permutation - vec4 ix = Pi.xzxz; - vec4 iy = Pi.yyww; - vec4 fx = Pf.xzxz; - vec4 fy = Pf.yyww; - - vec4 i = permute(permute(ix) + iy); - - vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ; - vec4 gy = abs(gx) - 0.5 ; - vec4 tx = floor(gx + 0.5); - gx = gx - tx; - - vec2 g00 = vec2(gx.x,gy.x); - vec2 g10 = vec2(gx.y,gy.y); - vec2 g01 = vec2(gx.z,gy.z); - vec2 g11 = vec2(gx.w,gy.w); - - vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); - g00 *= norm.x; - g01 *= norm.y; - g10 *= norm.z; - g11 *= norm.w; - - float n00 = dot(g00, vec2(fx.x, fy.x)); - float n10 = dot(g10, vec2(fx.y, fy.y)); - float n01 = dot(g01, vec2(fx.z, fy.z)); - float n11 = dot(g11, vec2(fx.w, fy.w)); - - vec2 fade_xy = fade(Pf.xy); - vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x); - float n_xy = mix(n_x.x, n_x.y, fade_xy.y); - return 2.3 * n_xy; -} - - - void main() - { - - float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0; - - vec4 colorDiff = colorFinish - colorStart; - vec4 color = colorStart + colorDiff * n1; - - gl_FragColor = color; - } -); -#else -NSString *const kGPUImagePerlinNoiseFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform float scale; - - uniform vec4 colorStart; - uniform vec4 colorFinish; - - // - // Description : Array and textureless GLSL 2D/3D/4D simplex - // noise functions. - // Author : Ian McEwan, Ashima Arts. - // Maintainer : ijm - // Lastmod : 20110822 (ijm) - // License : Copyright (C) 2011 Ashima Arts. All rights reserved. - // Distributed under the MIT License. See LICENSE file. - // https://github.com/ashima/webgl-noise - // - - vec4 mod289(vec4 x) -{ - return x - floor(x * (1.0 / 289.0)) * 289.0; -} - - vec4 permute(vec4 x) -{ - return mod289(((x*34.0)+1.0)*x); -} - - vec4 taylorInvSqrt(vec4 r) -{ - return 1.79284291400159 - 0.85373472095314 * r; -} - - vec2 fade(vec2 t) { - return t*t*t*(t*(t*6.0-15.0)+10.0); - } - - // Classic Perlin noise - float cnoise(vec2 P) -{ - vec4 Pi = floor(P.xyxy) + vec4(0.0, 0.0, 1.0, 1.0); - vec4 Pf = fract(P.xyxy) - vec4(0.0, 0.0, 1.0, 1.0); - Pi = mod289(Pi); // To avoid truncation effects in permutation - vec4 ix = Pi.xzxz; - vec4 iy = Pi.yyww; - vec4 fx = Pf.xzxz; - vec4 fy = Pf.yyww; - - vec4 i = permute(permute(ix) + iy); - - vec4 gx = fract(i * (1.0 / 41.0)) * 2.0 - 1.0 ; - vec4 gy = abs(gx) - 0.5 ; - vec4 tx = floor(gx + 0.5); - gx = gx - tx; - - vec2 g00 = vec2(gx.x,gy.x); - vec2 g10 = vec2(gx.y,gy.y); - vec2 g01 = vec2(gx.z,gy.z); - vec2 g11 = vec2(gx.w,gy.w); - - vec4 norm = taylorInvSqrt(vec4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); - g00 *= norm.x; - g01 *= norm.y; - g10 *= norm.z; - g11 *= norm.w; - - float n00 = dot(g00, vec2(fx.x, fy.x)); - float n10 = dot(g10, vec2(fx.y, fy.y)); - float n01 = dot(g01, vec2(fx.z, fy.z)); - float n11 = dot(g11, vec2(fx.w, fy.w)); - - vec2 fade_xy = fade(Pf.xy); - vec2 n_x = mix(vec2(n00, n01), vec2(n10, n11), fade_xy.x); - float n_xy = mix(n_x.x, n_x.y, fade_xy.y); - return 2.3 * n_xy; - } - - void main() - { - - float n1 = (cnoise(textureCoordinate * scale) + 1.0) / 2.0; - - vec4 colorDiff = colorFinish - colorStart; - vec4 color = colorStart + colorDiff * n1; - - gl_FragColor = color; - } -); -#endif - - -@implementation GPUImagePerlinNoiseFilter - -@synthesize scale = _scale, colorStart = _colorStart, colorFinish = _colorFinish; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePerlinNoiseFragmentShaderString])) - { - return nil; - } - - scaleUniform = [filterProgram uniformIndex:@"scale"]; - - colorStartUniform = [filterProgram uniformIndex:@"colorStart"]; - colorFinishUniform = [filterProgram uniformIndex:@"colorFinish"]; - - [self setScale:8.0]; - - [self setColorStart:(GPUVector4){0.0, 0.0, 0.0, 1.0}]; - [self setColorFinish:(GPUVector4){1.0, 1.0, 1.0, 1.0}]; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setScale:(float)scale -{ - _scale = scale; - - [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; -} - -- (void)setColorStart:(GPUVector4)colorStart -{ - _colorStart = colorStart; - - [self setVec4:_colorStart forUniform:colorStartUniform program:filterProgram]; -} - -- (void)setColorFinish:(GPUVector4)colorFinish -{ - _colorFinish = colorFinish; - - [self setVec4:_colorFinish forUniform:colorFinishUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m deleted file mode 100755 index 76d79096..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.m +++ /dev/null @@ -1,176 +0,0 @@ -#import "GPUImagePinchDistortionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePinchDistortionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float aspectRatio; - uniform highp vec2 center; - uniform highp float radius; - uniform highp float scale; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - highp float percent = 1.0 + ((0.5 - dist) / 0.5) * scale; - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#else -NSString *const kGPUImagePinchDistortionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float aspectRatio; - uniform vec2 center; - uniform float radius; - uniform float scale; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(center, textureCoordinateToUse); - textureCoordinateToUse = textureCoordinate; - - if (dist < radius) - { - textureCoordinateToUse -= center; - float percent = 1.0 + ((0.5 - dist) / 0.5) * scale; - textureCoordinateToUse = textureCoordinateToUse * percent; - textureCoordinateToUse += center; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#endif - -@interface GPUImagePinchDistortionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImagePinchDistortionFilter - -@synthesize aspectRatio = _aspectRatio; -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize scale = _scale; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePinchDistortionFragmentShaderString])) - { - return nil; - } - - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - radiusUniform = [filterProgram uniformIndex:@"radius"]; - scaleUniform = [filterProgram uniformIndex:@"scale"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.radius = 1.0; - self.scale = 0.5; - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setScale:(CGFloat)newValue; -{ - _scale = newValue; - - [self setFloat:_scale forUniform:scaleUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m deleted file mode 100755 index 88430d09..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.m +++ /dev/null @@ -1,151 +0,0 @@ -#import "GPUImagePixellateFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePixellationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - - void main() - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } -); -#else -NSString *const kGPUImagePixellationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - - void main() - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } -); -#endif - -@interface GPUImagePixellateFilter () - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -- (void)adjustAspectRatio; - -@end - -@implementation GPUImagePixellateFilter - -@synthesize fractionalWidthOfAPixel = _fractionalWidthOfAPixel; -@synthesize aspectRatio = _aspectRatio; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePixellationFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - fractionalWidthOfAPixelUniform = [filterProgram uniformIndex:@"fractionalWidthOfPixel"]; - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - - self.fractionalWidthOfAPixel = 0.05; - - return self; -} - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self adjustAspectRatio]; -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setFractionalWidthOfAPixel:(CGFloat)newValue; -{ - CGFloat singlePixelSpacing; - if (inputTextureSize.width != 0.0) - { - singlePixelSpacing = 1.0 / inputTextureSize.width; - } - else - { - singlePixelSpacing = 1.0 / 2048.0; - } - - if (newValue < singlePixelSpacing) - { - _fractionalWidthOfAPixel = singlePixelSpacing; - } - else - { - _fractionalWidthOfAPixel = newValue; - } - - [self setFloat:_fractionalWidthOfAPixel forUniform:fractionalWidthOfAPixelUniform program:filterProgram]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m deleted file mode 100755 index f1bd09cc..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.m +++ /dev/null @@ -1,194 +0,0 @@ -#import "GPUImagePixellatePositionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePixellationPositionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - uniform lowp vec2 pixelateCenter; - uniform highp float pixelateRadius; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float dist = distance(pixelateCenter, textureCoordinateToUse); - - if (dist < pixelateRadius) - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#else -NSString *const kGPUImagePixellationPositionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - uniform vec2 pixelateCenter; - uniform float pixelateRadius; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float dist = distance(pixelateCenter, textureCoordinateToUse); - - if (dist < pixelateRadius) - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - gl_FragColor = texture2D(inputImageTexture, samplePos ); - } - else - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate ); - } - } -); -#endif - -@interface GPUImagePixellatePositionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - -@implementation GPUImagePixellatePositionFilter - -@synthesize fractionalWidthOfAPixel = _fractionalWidthOfAPixel; -@synthesize aspectRatio = _aspectRatio; -@synthesize center = _center; -@synthesize radius = _radius; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePixellationPositionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - fractionalWidthOfAPixelUniform = [filterProgram uniformIndex:@"fractionalWidthOfPixel"]; - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - centerUniform = [filterProgram uniformIndex:@"pixelateCenter"]; - radiusUniform = [filterProgram uniformIndex:@"pixelateRadius"]; - - self.fractionalWidthOfAPixel = 0.05; - self.center = CGPointMake(0.5f, 0.5f); - self.radius = 0.25f; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if ( (!CGSizeEqualToSize(oldInputSize, inputTextureSize)) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setFractionalWidthOfAPixel:(CGFloat)newValue; -{ - CGFloat singlePixelSpacing; - if (inputTextureSize.width != 0.0) - { - singlePixelSpacing = 1.0 / inputTextureSize.width; - } - else - { - singlePixelSpacing = 1.0 / 2048.0; - } - - if (newValue < singlePixelSpacing) - { - _fractionalWidthOfAPixel = singlePixelSpacing; - } - else - { - _fractionalWidthOfAPixel = newValue; - } - - [self setFloat:_fractionalWidthOfAPixel forUniform:fractionalWidthOfAPixelUniform program:filterProgram]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)center -{ - _center = center; - CGPoint rotatedPoint = [self rotatedPoint:center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -- (void)setRadius:(CGFloat)radius -{ - _radius = radius; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m deleted file mode 100644 index 0167e024..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.m +++ /dev/null @@ -1,175 +0,0 @@ -#import "GPUImagePoissonBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePoissonBlendFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying vec2 textureCoordinate2; - varying vec2 leftTextureCoordinate2; - varying vec2 rightTextureCoordinate2; - varying vec2 topTextureCoordinate2; - varying vec2 bottomTextureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform lowp float mixturePercent; - - void main() - { - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - vec4 centerColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec3 bottomColor2 = texture2D(inputImageTexture2, bottomTextureCoordinate2).rgb; - vec3 leftColor2 = texture2D(inputImageTexture2, leftTextureCoordinate2).rgb; - vec3 rightColor2 = texture2D(inputImageTexture2, rightTextureCoordinate2).rgb; - vec3 topColor2 = texture2D(inputImageTexture2, topTextureCoordinate2).rgb; - - vec3 meanColor = (bottomColor + leftColor + rightColor + topColor) / 4.0; - vec3 diffColor = centerColor.rgb - meanColor; - - vec3 meanColor2 = (bottomColor2 + leftColor2 + rightColor2 + topColor2) / 4.0; - vec3 diffColor2 = centerColor2.rgb - meanColor2; - - vec3 gradColor = (meanColor + diffColor2); - - gl_FragColor = vec4(mix(centerColor.rgb, gradColor, centerColor2.a * mixturePercent), centerColor.a); - } -); -#else -NSString *const kGPUImagePoissonBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying vec2 textureCoordinate2; - varying vec2 leftTextureCoordinate2; - varying vec2 rightTextureCoordinate2; - varying vec2 topTextureCoordinate2; - varying vec2 bottomTextureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float mixturePercent; - - void main() - { - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - vec3 bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - vec3 leftColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - - vec4 centerColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec3 bottomColor2 = texture2D(inputImageTexture2, bottomTextureCoordinate2).rgb; - vec3 leftColor2 = texture2D(inputImageTexture2, leftTextureCoordinate2).rgb; - vec3 rightColor2 = texture2D(inputImageTexture2, rightTextureCoordinate2).rgb; - vec3 topColor2 = texture2D(inputImageTexture2, topTextureCoordinate2).rgb; - - vec3 meanColor = (bottomColor + leftColor + rightColor + topColor) / 4.0; - vec3 diffColor = centerColor.rgb - meanColor; - - vec3 meanColor2 = (bottomColor2 + leftColor2 + rightColor2 + topColor2) / 4.0; - vec3 diffColor2 = centerColor2.rgb - meanColor2; - - vec3 gradColor = (meanColor + diffColor2); - - gl_FragColor = vec4(mix(centerColor.rgb, gradColor, centerColor2.a * mixturePercent), centerColor.a); - } -); -#endif - -@implementation GPUImagePoissonBlendFilter - -@synthesize mix = _mix; -@synthesize numIterations = _numIterations; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePoissonBlendFragmentShaderString])) - { - return nil; - } - - mixUniform = [filterProgram uniformIndex:@"mixturePercent"]; - self.mix = 0.5; - - self.numIterations = 10; - - return self; -} - -- (void)setMix:(CGFloat)newValue; -{ - _mix = newValue; - - [self setFloat:_mix forUniform:mixUniform program:filterProgram]; -} - -//- (void)setOutputFBO; -//{ -// if (self.numIterations % 2 == 1) { -// [self setSecondFilterFBO]; -// } else { -// [self setFilterFBO]; -// } -//} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - // Run the first stage of the two-pass filter - [GPUImageContext setActiveShaderProgram:filterProgram]; - - [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; - - for (int pass = 1; pass < self.numIterations; pass++) { - - if (pass % 2 == 0) { - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - // TODO: This will over-unlock the incoming framebuffer - [super renderToTextureWithVertices:vertices textureCoordinates:[[self class] textureCoordinatesForRotation:kGPUImageNoRotation]]; - } else { - // Run the second stage of the two-pass filter - secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [secondOutputFramebuffer activateFramebuffer]; - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - } - } -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m deleted file mode 100755 index 5677db48..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.m +++ /dev/null @@ -1,128 +0,0 @@ -#import "GPUImagePolarPixellateFilter.h" - -// @fattjake based on vid by toneburst - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePolarPixellateFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp vec2 pixelSize; - - - void main() - { - highp vec2 normCoord = 2.0 * textureCoordinate - 1.0; - highp vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - - highp float r = length(normCoord); // to polar coords - highp float phi = atan(normCoord.y, normCoord.x); // to polar coords - - r = r - mod(r, pixelSize.x) + 0.03; - phi = phi - mod(phi, pixelSize.y); - - normCoord.x = r * cos(phi); - normCoord.y = r * sin(phi); - - normCoord += normCenter; - - mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#else -NSString *const kGPUImagePolarPixellateFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform vec2 pixelSize; - - - void main() - { - vec2 normCoord = 2.0 * textureCoordinate - 1.0; - vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - - float r = length(normCoord); // to polar coords - float phi = atan(normCoord.y, normCoord.x); // to polar coords - - r = r - mod(r, pixelSize.x) + 0.03; - phi = phi - mod(phi, pixelSize.y); - - normCoord.x = r * cos(phi); - normCoord.y = r * sin(phi); - - normCoord += normCenter; - - vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#endif - - -@implementation GPUImagePolarPixellateFilter - -@synthesize center = _center; - -@synthesize pixelSize = _pixelSize; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePolarPixellateFragmentShaderString])) - { - return nil; - } - - pixelSizeUniform = [filterProgram uniformIndex:@"pixelSize"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - - self.pixelSize = CGSizeMake(0.05, 0.05); - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; -} - -- (void)setPixelSize:(CGSize)pixelSize -{ - _pixelSize = pixelSize; - - [self setSize:_pixelSize forUniform:pixelSizeUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m deleted file mode 100644 index a439a043..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.m +++ /dev/null @@ -1,85 +0,0 @@ -#import "GPUImagePolkaDotFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float fractionalWidthOfPixel; - uniform highp float aspectRatio; - uniform highp float dotScaling; - - void main() - { - highp vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - highp vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - lowp float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - lowp vec4 inputColor = texture2D(inputImageTexture, samplePos); - - gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a); - } -); -#else -NSString *const kGPUImagePolkaDotFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float fractionalWidthOfPixel; - uniform float aspectRatio; - uniform float dotScaling; - - void main() - { - vec2 sampleDivisor = vec2(fractionalWidthOfPixel, fractionalWidthOfPixel / aspectRatio); - - vec2 samplePos = textureCoordinate - mod(textureCoordinate, sampleDivisor) + 0.5 * sampleDivisor; - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - vec2 adjustedSamplePos = vec2(samplePos.x, (samplePos.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromSamplePoint = distance(adjustedSamplePos, textureCoordinateToUse); - float checkForPresenceWithinDot = step(distanceFromSamplePoint, (fractionalWidthOfPixel * 0.5) * dotScaling); - - vec4 inputColor = texture2D(inputImageTexture, samplePos); - - gl_FragColor = vec4(inputColor.rgb * checkForPresenceWithinDot, inputColor.a); - } -); -#endif - -@implementation GPUImagePolkaDotFilter - -@synthesize dotScaling = _dotScaling; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePolkaDotFragmentShaderString])) - { - return nil; - } - - dotScalingUniform = [filterProgram uniformIndex:@"dotScaling"]; - - self.dotScaling = 0.90; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setDotScaling:(CGFloat)newValue; -{ - _dotScaling = newValue; - - [self setFloat:_dotScaling forUniform:dotScalingUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m deleted file mode 100755 index a438cea5..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "GPUImagePosterizeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePosterizeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float colorLevels; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; - } -); -#else -NSString *const kGPUImagePosterizeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float colorLevels; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = floor((textureColor * colorLevels) + vec4(0.5)) / colorLevels; - } -); -#endif - -@implementation GPUImagePosterizeFilter - -@synthesize colorLevels = _colorLevels; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImagePosterizeFragmentShaderString])) - { - return nil; - } - - colorLevelsUniform = [filterProgram uniformIndex:@"colorLevels"]; - self.colorLevels = 10; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setColorLevels:(NSUInteger)newValue; -{ - _colorLevels = newValue; - - [self setFloat:_colorLevels forUniform:colorLevelsUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m deleted file mode 100755 index a9906930..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.m +++ /dev/null @@ -1,97 +0,0 @@ -#import "GPUImagePrewittEdgeDetectionFilter.h" - -@implementation GPUImagePrewittEdgeDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImagePrewittFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImagePrewittFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImagePrewittFragmentShaderString])) - { - return nil; - } - - self.edgeStrength = 1.0; - - return self; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m deleted file mode 100644 index c5bb1c8d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.m +++ /dev/null @@ -1,41 +0,0 @@ -#import "GPUImageRGBClosingFilter.h" -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageRGBDilationFilter.h" - -@implementation GPUImageRGBClosingFilter - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: dilation - dilationFilter = [[GPUImageRGBDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - // Second pass: erosion - erosionFilter = [[GPUImageRGBErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - [dilationFilter addTarget:erosionFilter]; - - self.initialFilters = [NSArray arrayWithObjects:dilationFilter, nil]; - self.terminalFilter = erosionFilter; - - return self; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m deleted file mode 100644 index 9702c783..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.m +++ /dev/null @@ -1,306 +0,0 @@ -#import "GPUImageRGBDilationFilter.h" -#import "GPUImageDilationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBDilationRadiusOneFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = max(maxValue, oneStepNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = max(maxValue, twoStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - - gl_FragColor = max(maxValue, threeStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusFourFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - lowp vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - lowp vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - lowp vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - - gl_FragColor = max(maxValue, fourStepsNegativeIntensity); - } -); -#else -NSString *const kGPUImageRGBDilationRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = max(maxValue, oneStepNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBDilationRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - - gl_FragColor = max(maxValue, twoStepsNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBDilationRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - - gl_FragColor = max(maxValue, threeStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBDilationRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - vec4 maxValue = max(centerIntensity, oneStepPositiveIntensity); - maxValue = max(maxValue, oneStepNegativeIntensity); - maxValue = max(maxValue, twoStepsPositiveIntensity); - maxValue = max(maxValue, twoStepsNegativeIntensity); - maxValue = max(maxValue, threeStepsPositiveIntensity); - maxValue = max(maxValue, threeStepsNegativeIntensity); - maxValue = max(maxValue, fourStepsPositiveIntensity); - - gl_FragColor = max(maxValue, fourStepsNegativeIntensity); - } -); -#endif - -@implementation GPUImageRGBDilationFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)dilationRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (dilationRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBDilationRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m deleted file mode 100644 index 91e5f33d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.m +++ /dev/null @@ -1,304 +0,0 @@ -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageDilationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBErosionRadiusOneFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = min(minValue, oneStepNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - - gl_FragColor = min(minValue, twoStepsNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - - gl_FragColor = min(minValue, threeStepsNegativeIntensity); - } - ); - -NSString *const kGPUImageRGBErosionRadiusFourFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - lowp vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - lowp vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - lowp vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - lowp vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - lowp vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - lowp vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - lowp vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - lowp vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - lowp vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - lowp vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - - gl_FragColor = min(minValue, fourStepsNegativeIntensity); - } -); -#else -NSString *const kGPUImageRGBErosionRadiusOneFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - - gl_FragColor = min(minValue, oneStepNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusTwoFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - - gl_FragColor = min(minValue, twoStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusThreeFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - - gl_FragColor = min(minValue, threeStepsNegativeIntensity); - } -); - -NSString *const kGPUImageRGBErosionRadiusFourFragmentShaderString = SHADER_STRING -( - varying vec2 centerTextureCoordinate; - varying vec2 oneStepPositiveTextureCoordinate; - varying vec2 oneStepNegativeTextureCoordinate; - varying vec2 twoStepsPositiveTextureCoordinate; - varying vec2 twoStepsNegativeTextureCoordinate; - varying vec2 threeStepsPositiveTextureCoordinate; - varying vec2 threeStepsNegativeTextureCoordinate; - varying vec2 fourStepsPositiveTextureCoordinate; - varying vec2 fourStepsNegativeTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - vec4 centerIntensity = texture2D(inputImageTexture, centerTextureCoordinate); - vec4 oneStepPositiveIntensity = texture2D(inputImageTexture, oneStepPositiveTextureCoordinate); - vec4 oneStepNegativeIntensity = texture2D(inputImageTexture, oneStepNegativeTextureCoordinate); - vec4 twoStepsPositiveIntensity = texture2D(inputImageTexture, twoStepsPositiveTextureCoordinate); - vec4 twoStepsNegativeIntensity = texture2D(inputImageTexture, twoStepsNegativeTextureCoordinate); - vec4 threeStepsPositiveIntensity = texture2D(inputImageTexture, threeStepsPositiveTextureCoordinate); - vec4 threeStepsNegativeIntensity = texture2D(inputImageTexture, threeStepsNegativeTextureCoordinate); - vec4 fourStepsPositiveIntensity = texture2D(inputImageTexture, fourStepsPositiveTextureCoordinate); - vec4 fourStepsNegativeIntensity = texture2D(inputImageTexture, fourStepsNegativeTextureCoordinate); - - vec4 minValue = min(centerIntensity, oneStepPositiveIntensity); - minValue = min(minValue, oneStepNegativeIntensity); - minValue = min(minValue, twoStepsPositiveIntensity); - minValue = min(minValue, twoStepsNegativeIntensity); - minValue = min(minValue, threeStepsPositiveIntensity); - minValue = min(minValue, threeStepsNegativeIntensity); - minValue = min(minValue, fourStepsPositiveIntensity); - - gl_FragColor = min(minValue, fourStepsNegativeIntensity); - } -); -#endif - -@implementation GPUImageRGBErosionFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithRadius:(NSUInteger)erosionRadius; -{ - NSString *fragmentShaderForThisRadius = nil; - NSString *vertexShaderForThisRadius = nil; - - switch (erosionRadius) - { - case 0: - case 1: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusOneVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusOneFragmentShaderString; - }; break; - case 2: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusTwoVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusTwoFragmentShaderString; - }; break; - case 3: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusThreeVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusThreeFragmentShaderString; - }; break; - case 4: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusFourFragmentShaderString; - }; break; - default: - { - vertexShaderForThisRadius = kGPUImageDilationRadiusFourVertexShaderString; - fragmentShaderForThisRadius = kGPUImageRGBErosionRadiusFourFragmentShaderString; - }; break; - } - - if (!(self = [super initWithFirstStageVertexShaderFromString:vertexShaderForThisRadius firstStageFragmentShaderFromString:fragmentShaderForThisRadius secondStageVertexShaderFromString:vertexShaderForThisRadius secondStageFragmentShaderFromString:fragmentShaderForThisRadius])) - { - return nil; - } - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m deleted file mode 100755 index 7a2e5681..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.m +++ /dev/null @@ -1,89 +0,0 @@ -#import "GPUImageRGBFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageRGBFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float redAdjustment; - uniform highp float greenAdjustment; - uniform highp float blueAdjustment; - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.r * redAdjustment, textureColor.g * greenAdjustment, textureColor.b * blueAdjustment, textureColor.a); - } -); -#else -NSString *const kGPUImageRGBFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float redAdjustment; - uniform float greenAdjustment; - uniform float blueAdjustment; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - gl_FragColor = vec4(textureColor.r * redAdjustment, textureColor.g * greenAdjustment, textureColor.b * blueAdjustment, textureColor.a); - } - ); -#endif - -@implementation GPUImageRGBFilter - -@synthesize red = _red, blue = _blue, green = _green; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageRGBFragmentShaderString])) - { - return nil; - } - - redUniform = [filterProgram uniformIndex:@"redAdjustment"]; - self.red = 1.0; - - greenUniform = [filterProgram uniformIndex:@"greenAdjustment"]; - self.green = 1.0; - - blueUniform = [filterProgram uniformIndex:@"blueAdjustment"]; - self.blue = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRed:(CGFloat)newValue; -{ - _red = newValue; - - [self setFloat:_red forUniform:redUniform program:filterProgram]; -} - -- (void)setGreen:(CGFloat)newValue; -{ - _green = newValue; - - [self setFloat:_green forUniform:greenUniform program:filterProgram]; -} - -- (void)setBlue:(CGFloat)newValue; -{ - _blue = newValue; - - [self setFloat:_blue forUniform:blueUniform program:filterProgram]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m deleted file mode 100644 index 9d53021e..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.m +++ /dev/null @@ -1,41 +0,0 @@ -#import "GPUImageRGBOpeningFilter.h" -#import "GPUImageRGBErosionFilter.h" -#import "GPUImageRGBDilationFilter.h" - -@implementation GPUImageRGBOpeningFilter - -- (id)init; -{ - if (!(self = [self initWithRadius:1])) - { - return nil; - } - - return self; -} - -- (id)initWithRadius:(NSUInteger)radius; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: erosion - erosionFilter = [[GPUImageRGBErosionFilter alloc] initWithRadius:radius]; - [self addFilter:erosionFilter]; - - // Second pass: dilation - dilationFilter = [[GPUImageRGBDilationFilter alloc] initWithRadius:radius]; - [self addFilter:dilationFilter]; - - [erosionFilter addTarget:dilationFilter]; - - self.initialFilters = [NSArray arrayWithObjects:erosionFilter, nil]; - self.terminalFilter = dilationFilter; - - return self; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m deleted file mode 100644 index cfa3b128..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.m +++ /dev/null @@ -1,139 +0,0 @@ -#import "GPUImageRawDataInput.h" - -@interface GPUImageRawDataInput() -- (void)uploadBytes:(GLubyte *)bytesToUpload; -@end - -@implementation GPUImageRawDataInput - -@synthesize pixelFormat = _pixelFormat; -@synthesize pixelType = _pixelType; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; -{ - if (!(self = [self initWithBytes:bytesToUpload size:imageSize pixelFormat:GPUPixelFormatBGRA type:GPUPixelTypeUByte])) - { - return nil; - } - - return self; -} - -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat; -{ - if (!(self = [self initWithBytes:bytesToUpload size:imageSize pixelFormat:pixelFormat type:GPUPixelTypeUByte])) - { - return nil; - } - - return self; -} - -- (id)initWithBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize pixelFormat:(GPUPixelFormat)pixelFormat type:(GPUPixelType)pixelType; -{ - if (!(self = [super init])) - { - return nil; - } - - dataUpdateSemaphore = dispatch_semaphore_create(1); - - uploadedImageSize = imageSize; - self.pixelFormat = pixelFormat; - self.pixelType = pixelType; - - [self uploadBytes:bytesToUpload]; - - return self; -} - -// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. -- (void)dealloc; -{ -#if !OS_OBJECT_USE_OBJC - if (dataUpdateSemaphore != NULL) - { - dispatch_release(dataUpdateSemaphore); - } -#endif -} - -#pragma mark - -#pragma mark Image rendering - -- (void)uploadBytes:(GLubyte *)bytesToUpload; -{ - [GPUImageContext useImageProcessingContext]; - - // TODO: This probably isn't right, and will need to be corrected - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:uploadedImageSize textureOptions:self.outputTextureOptions onlyTexture:YES]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glTexImage2D(GL_TEXTURE_2D, 0, _pixelFormat, (int)uploadedImageSize.width, (int)uploadedImageSize.height, 0, (GLint)_pixelFormat, (GLenum)_pixelType, bytesToUpload); -} - -- (void)updateDataFromBytes:(GLubyte *)bytesToUpload size:(CGSize)imageSize; -{ - uploadedImageSize = imageSize; - - [self uploadBytes:bytesToUpload]; -} - -- (void)processData; -{ - if (dispatch_semaphore_wait(dataUpdateSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } - - runAsynchronouslyOnVideoProcessingQueue(^{ - - CGSize pixelSizeOfImage = [self outputImageSize]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:kCMTimeInvalid atIndex:textureIndexOfTarget]; - } - - dispatch_semaphore_signal(dataUpdateSemaphore); - }); -} - -- (void)processDataForTimestamp:(CMTime)frameTime; -{ - if (dispatch_semaphore_wait(dataUpdateSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } - - runAsynchronouslyOnVideoProcessingQueue(^{ - - CGSize pixelSizeOfImage = [self outputImageSize]; - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; - } - - dispatch_semaphore_signal(dataUpdateSemaphore); - }); -} - -- (CGSize)outputImageSize; -{ - return uploadedImageSize; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m b/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m deleted file mode 100755 index 18101e2c..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.m +++ /dev/null @@ -1,307 +0,0 @@ -#import "GPUImageRawDataOutput.h" - -#import "GPUImageContext.h" -#import "GLProgram.h" -#import "GPUImageFilter.h" -#import "GPUImageMovieWriter.h" - -@interface GPUImageRawDataOutput () -{ - GPUImageFramebuffer *firstInputFramebuffer, *outputFramebuffer, *retainedFramebuffer; - - BOOL hasReadFromTheCurrentFrame; - - GLProgram *dataProgram; - GLint dataPositionAttribute, dataTextureCoordinateAttribute; - GLint dataInputTextureUniform; - - GLubyte *_rawBytesForImage; - - BOOL lockNextFramebuffer; -} - -// Frame rendering -- (void)renderAtInternalSize; - -@end - -@implementation GPUImageRawDataOutput - -@synthesize rawBytesForImage = _rawBytesForImage; -@synthesize newFrameAvailableBlock = _newFrameAvailableBlock; -@synthesize enabled; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithImageSize:(CGSize)newImageSize resultsInBGRAFormat:(BOOL)resultsInBGRAFormat; -{ - if (!(self = [super init])) - { - return nil; - } - - self.enabled = YES; - lockNextFramebuffer = NO; - outputBGRA = resultsInBGRAFormat; - imageSize = newImageSize; - hasReadFromTheCurrentFrame = NO; - _rawBytesForImage = NULL; - inputRotation = kGPUImageNoRotation; - - [GPUImageContext useImageProcessingContext]; - if ( (outputBGRA && ![GPUImageContext supportsFastTextureUpload]) || (!outputBGRA && [GPUImageContext supportsFastTextureUpload]) ) - { - dataProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageColorSwizzlingFragmentShaderString]; - } - else - { - dataProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; - } - - if (!dataProgram.initialized) - { - [dataProgram addAttribute:@"position"]; - [dataProgram addAttribute:@"inputTextureCoordinate"]; - - if (![dataProgram link]) - { - NSString *progLog = [dataProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [dataProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [dataProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - dataProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - dataPositionAttribute = [dataProgram attributeIndex:@"position"]; - dataTextureCoordinateAttribute = [dataProgram attributeIndex:@"inputTextureCoordinate"]; - dataInputTextureUniform = [dataProgram uniformIndex:@"inputImageTexture"]; - - return self; -} - -- (void)dealloc -{ - if (_rawBytesForImage != NULL && (![GPUImageContext supportsFastTextureUpload])) - { - free(_rawBytesForImage); - _rawBytesForImage = NULL; - } -} - -#pragma mark - -#pragma mark Data access - -- (void)renderAtInternalSize; -{ - [GPUImageContext setActiveShaderProgram:dataProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:imageSize onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - if(lockNextFramebuffer) - { - retainedFramebuffer = outputFramebuffer; - [retainedFramebuffer lock]; - [retainedFramebuffer lockForReading]; - lockNextFramebuffer = NO; - } - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat textureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(dataInputTextureUniform, 4); - - glVertexAttribPointer(dataPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(dataTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glEnableVertexAttribArray(dataPositionAttribute); - glEnableVertexAttribArray(dataTextureCoordinateAttribute); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; -} - -- (GPUByteColorVector)colorAtLocation:(CGPoint)locationInImage; -{ - GPUByteColorVector *imageColorBytes = (GPUByteColorVector *)self.rawBytesForImage; -// NSLog(@"Row start"); -// for (unsigned int currentXPosition = 0; currentXPosition < (imageSize.width * 2.0); currentXPosition++) -// { -// GPUByteColorVector byteAtPosition = imageColorBytes[currentXPosition]; -// NSLog(@"%d - %d, %d, %d", currentXPosition, byteAtPosition.red, byteAtPosition.green, byteAtPosition.blue); -// } -// NSLog(@"Row end"); - -// GPUByteColorVector byteAtOne = imageColorBytes[1]; -// GPUByteColorVector byteAtWidth = imageColorBytes[(int)imageSize.width - 3]; -// GPUByteColorVector byteAtHeight = imageColorBytes[(int)(imageSize.height - 1) * (int)imageSize.width]; -// NSLog(@"Byte 1: %d, %d, %d, byte 2: %d, %d, %d, byte 3: %d, %d, %d", byteAtOne.red, byteAtOne.green, byteAtOne.blue, byteAtWidth.red, byteAtWidth.green, byteAtWidth.blue, byteAtHeight.red, byteAtHeight.green, byteAtHeight.blue); - - CGPoint locationToPickFrom = CGPointZero; - locationToPickFrom.x = MIN(MAX(locationInImage.x, 0.0), (imageSize.width - 1.0)); - locationToPickFrom.y = MIN(MAX((imageSize.height - locationInImage.y), 0.0), (imageSize.height - 1.0)); - - if (outputBGRA) - { - GPUByteColorVector flippedColor = imageColorBytes[(int)(round((locationToPickFrom.y * imageSize.width) + locationToPickFrom.x))]; - GLubyte temporaryRed = flippedColor.red; - - flippedColor.red = flippedColor.blue; - flippedColor.blue = temporaryRed; - - return flippedColor; - } - else - { - return imageColorBytes[(int)(round((locationToPickFrom.y * imageSize.width) + locationToPickFrom.x))]; - } -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - hasReadFromTheCurrentFrame = NO; - - if (_newFrameAvailableBlock != NULL) - { - _newFrameAvailableBlock(); - } -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - firstInputFramebuffer = newInputFramebuffer; - [firstInputFramebuffer lock]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ -} - -- (CGSize)maximumOutputSize; -{ - return imageSize; -} - -- (void)endProcessing; -{ -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -#pragma mark - -#pragma mark Accessors - -- (GLubyte *)rawBytesForImage; -{ - if ( (_rawBytesForImage == NULL) && (![GPUImageContext supportsFastTextureUpload]) ) - { - _rawBytesForImage = (GLubyte *) calloc(imageSize.width * imageSize.height * 4, sizeof(GLubyte)); - hasReadFromTheCurrentFrame = NO; - } - - if (hasReadFromTheCurrentFrame) - { - return _rawBytesForImage; - } - else - { - runSynchronouslyOnVideoProcessingQueue(^{ - // Note: the fast texture caches speed up 640x480 frame reads from 9.6 ms to 3.1 ms on iPhone 4S - - [GPUImageContext useImageProcessingContext]; - [self renderAtInternalSize]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - glFinish(); - _rawBytesForImage = [outputFramebuffer byteBuffer]; - } - else - { - glReadPixels(0, 0, imageSize.width, imageSize.height, GL_RGBA, GL_UNSIGNED_BYTE, _rawBytesForImage); - // GL_EXT_read_format_bgra - // glReadPixels(0, 0, imageSize.width, imageSize.height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, _rawBytesForImage); - } - - hasReadFromTheCurrentFrame = YES; - - }); - - return _rawBytesForImage; - } -} - -- (NSUInteger)bytesPerRowInOutput; -{ - return [retainedFramebuffer bytesPerRow]; -} - -- (void)setImageSize:(CGSize)newImageSize { - imageSize = newImageSize; - if (_rawBytesForImage != NULL && (![GPUImageContext supportsFastTextureUpload])) - { - free(_rawBytesForImage); - _rawBytesForImage = NULL; - } -} - -- (void)lockFramebufferForReading; -{ - lockNextFramebuffer = YES; -} - -- (void)unlockFramebufferAfterReading; -{ - [retainedFramebuffer unlockAfterReading]; - [retainedFramebuffer unlock]; - retainedFramebuffer = nil; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m deleted file mode 100644 index da37f6aa..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.m +++ /dev/null @@ -1,213 +0,0 @@ -#import "GPUImageSaturationBlendFilter.h" - -/** - * Saturation blend mode based upon pseudo code from the PDF specification. - */ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSaturationBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - highp float lum(lowp vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - lowp vec3 clipcolor(lowp vec3 c) { - highp float l = lum(c); - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - lowp vec3 setlum(lowp vec3 c, highp float l) { - highp float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - highp float sat(lowp vec3 c) { - lowp float n = min(min(c.r, c.g), c.b); - lowp float x = max(max(c.r, c.g), c.b); - return x - n; - } - - lowp float mid(lowp float cmin, lowp float cmid, lowp float cmax, highp float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - lowp vec3 setsat(lowp vec3 c, highp float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - highp vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - highp vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(baseColor.rgb, sat(overlayColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#else -NSString *const kGPUImageSaturationBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - float lum(vec3 c) { - return dot(c, vec3(0.3, 0.59, 0.11)); - } - - vec3 clipcolor(vec3 c) { - float l = lum(c); - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - - if (n < 0.0) { - c.r = l + ((c.r - l) * l) / (l - n); - c.g = l + ((c.g - l) * l) / (l - n); - c.b = l + ((c.b - l) * l) / (l - n); - } - if (x > 1.0) { - c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); - c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); - c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); - } - - return c; - } - - vec3 setlum(vec3 c, float l) { - float d = l - lum(c); - c = c + vec3(d); - return clipcolor(c); - } - - float sat(vec3 c) { - float n = min(min(c.r, c.g), c.b); - float x = max(max(c.r, c.g), c.b); - return x - n; - } - - float mid(float cmin, float cmid, float cmax, float s) { - return ((cmid - cmin) * s) / (cmax - cmin); - } - - vec3 setsat(vec3 c, float s) { - if (c.r > c.g) { - if (c.r > c.b) { - if (c.g > c.b) { - /* g is mid, b is min */ - c.g = mid(c.b, c.g, c.r, s); - c.b = 0.0; - } else { - /* b is mid, g is min */ - c.b = mid(c.g, c.b, c.r, s); - c.g = 0.0; - } - c.r = s; - } else { - /* b is max, r is mid, g is min */ - c.r = mid(c.g, c.r, c.b, s); - c.b = s; - c.r = 0.0; - } - } else if (c.r > c.b) { - /* g is max, r is mid, b is min */ - c.r = mid(c.b, c.r, c.g, s); - c.g = s; - c.b = 0.0; - } else if (c.g > c.b) { - /* g is max, b is mid, r is min */ - c.b = mid(c.r, c.b, c.g, s); - c.g = s; - c.r = 0.0; - } else if (c.b > c.g) { - /* b is max, g is mid, r is min */ - c.g = mid(c.r, c.g, c.b, s); - c.b = s; - c.r = 0.0; - } else { - c = vec3(0.0); - } - return c; - } - - void main() - { - vec4 baseColor = texture2D(inputImageTexture, textureCoordinate); - vec4 overlayColor = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(baseColor.rgb * (1.0 - overlayColor.a) + setlum(setsat(baseColor.rgb, sat(overlayColor.rgb)), lum(baseColor.rgb)) * overlayColor.a, baseColor.a); - } -); -#endif - - -@implementation GPUImageSaturationBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSaturationBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m deleted file mode 100755 index fc373d4a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.m +++ /dev/null @@ -1,78 +0,0 @@ -#import "GPUImageSaturationFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSaturationFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float saturation; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const mediump vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp float luminance = dot(textureColor.rgb, luminanceWeighting); - lowp vec3 greyScaleColor = vec3(luminance); - - gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); - - } -); -#else -NSString *const kGPUImageSaturationFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float saturation; - - // Values from "Graphics Shaders: Theory and Practice" by Bailey and Cunningham - const vec3 luminanceWeighting = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, luminanceWeighting); - vec3 greyScaleColor = vec3(luminance); - - gl_FragColor = vec4(mix(greyScaleColor, textureColor.rgb, saturation), textureColor.w); - - } - ); -#endif - -@implementation GPUImageSaturationFilter - -@synthesize saturation = _saturation; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSaturationFragmentShaderString])) - { - return nil; - } - - saturationUniform = [filterProgram uniformIndex:@"saturation"]; - self.saturation = 1.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setSaturation:(CGFloat)newValue; -{ - _saturation = newValue; - - [self setFloat:_saturation forUniform:saturationUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m deleted file mode 100755 index d871e7db..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageScreenBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageScreenBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - mediump vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - ((whiteColor - textureColor2) * (whiteColor - textureColor)); - } -); -#else -NSString *const kGPUImageScreenBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - vec4 whiteColor = vec4(1.0); - gl_FragColor = whiteColor - ((whiteColor - textureColor2) * (whiteColor - textureColor)); - } -); -#endif - -@implementation GPUImageScreenBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageScreenBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m deleted file mode 100755 index 71668d63..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.m +++ /dev/null @@ -1,24 +0,0 @@ -#import "GPUImageSepiaFilter.h" - -@implementation GPUImageSepiaFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.intensity = 1.0; - self.colorMatrix = (GPUMatrix4x4){ - {0.3588, 0.7044, 0.1368, 0.0}, - {0.2990, 0.5870, 0.1140, 0.0}, - {0.2392, 0.4696, 0.0912 ,0.0}, - {0,0,0,1.0}, - }; - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m deleted file mode 100755 index 6d7367a9..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.m +++ /dev/null @@ -1,147 +0,0 @@ -#import "GPUImageSharpenFilter.h" - -NSString *const kGPUImageSharpenVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform float imageWidthFactor; - uniform float imageHeightFactor; - uniform float sharpness; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying float centerMultiplier; - varying float edgeMultiplier; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(imageWidthFactor, 0.0); - vec2 heightStep = vec2(0.0, imageHeightFactor); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - topTextureCoordinate = inputTextureCoordinate.xy + heightStep; - bottomTextureCoordinate = inputTextureCoordinate.xy - heightStep; - - centerMultiplier = 1.0 + 4.0 * sharpness; - edgeMultiplier = sharpness; - } -); - - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSharpenFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - varying highp vec2 topTextureCoordinate; - varying highp vec2 bottomTextureCoordinate; - - varying highp float centerMultiplier; - varying highp float edgeMultiplier; - - uniform sampler2D inputImageTexture; - - void main() - { - mediump vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb; - mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); - } -); -#else -NSString *const kGPUImageSharpenFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying float centerMultiplier; - varying float edgeMultiplier; - - uniform sampler2D inputImageTexture; - - void main() - { - vec3 textureColor = texture2D(inputImageTexture, textureCoordinate).rgb; - vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb; - vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb; - vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb; - vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb; - - gl_FragColor = vec4((textureColor * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), texture2D(inputImageTexture, bottomTextureCoordinate).w); - } -); -#endif - - -@implementation GPUImageSharpenFilter - -@synthesize sharpness = _sharpness; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageSharpenVertexShaderString fragmentShaderFromString:kGPUImageSharpenFragmentShaderString])) - { - return nil; - } - - sharpnessUniform = [filterProgram uniformIndex:@"sharpness"]; - self.sharpness = 0.0; - - imageWidthFactorUniform = [filterProgram uniformIndex:@"imageWidthFactor"]; - imageHeightFactorUniform = [filterProgram uniformIndex:@"imageHeightFactor"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(imageWidthFactorUniform, 1.0 / filterFrameSize.height); - glUniform1f(imageHeightFactorUniform, 1.0 / filterFrameSize.width); - } - else - { - glUniform1f(imageWidthFactorUniform, 1.0 / filterFrameSize.width); - glUniform1f(imageHeightFactorUniform, 1.0 / filterFrameSize.height); - } - }); -} - -#pragma mark - -#pragma mark Accessors - -- (void)setSharpness:(CGFloat)newValue; -{ - _sharpness = newValue; - - [self setFloat:_sharpness forUniform:sharpnessUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m deleted file mode 100644 index e58cbb4f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.m +++ /dev/null @@ -1,65 +0,0 @@ -#import "GPUImageShiTomasiFeatureDetectionFilter.h" - -@implementation GPUImageShiTomasiFeatureDetectionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageShiTomasiCornerDetectionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float sensitivity; - - void main() - { - mediump vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - mediump float derivativeDifference = derivativeElements.x - derivativeElements.y; - mediump float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 + Iy^2 - sqrt( (Ix^2 - Iy^2)^2 + 4 * Ixy * Ixy) - mediump float cornerness = derivativeElements.x + derivativeElements.y - sqrt(derivativeDifference * derivativeDifference + 4.0 * zElement * zElement); - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#else -NSString *const kGPUImageShiTomasiCornerDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float sensitivity; - - void main() - { - vec3 derivativeElements = texture2D(inputImageTexture, textureCoordinate).rgb; - - float derivativeDifference = derivativeElements.x - derivativeElements.y; - float zElement = (derivativeElements.z * 2.0) - 1.0; - - // R = Ix^2 + Iy^2 - sqrt( (Ix^2 - Iy^2)^2 + 4 * Ixy * Ixy) - float cornerness = derivativeElements.x + derivativeElements.y - sqrt(derivativeDifference * derivativeDifference + 4.0 * zElement * zElement); - - gl_FragColor = vec4(vec3(cornerness * sensitivity), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithCornerDetectionFragmentShader:kGPUImageShiTomasiCornerDetectionFragmentShaderString])) - { - return nil; - } - - self.sensitivity = 1.5; - - return self; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m deleted file mode 100644 index 4ff0d91d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.m +++ /dev/null @@ -1,189 +0,0 @@ -#import "GPUImageSingleComponentGaussianBlurFilter.h" - -@implementation GPUImageSingleComponentGaussianBlurFilter - -+ (NSString *)vertexShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImageVertexShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - GLfloat *optimizedGaussianOffsets = calloc(numberOfOptimizedOffsets, sizeof(GLfloat)); - - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - GLfloat firstWeight = standardGaussianWeights[currentOptimizedOffset*2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOptimizedOffset*2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - - optimizedGaussianOffsets[currentOptimizedOffset] = (firstWeight * (currentOptimizedOffset*2 + 1) + secondWeight * (currentOptimizedOffset*2 + 2)) / optimizedWeight; - } - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - // Header - [shaderString appendFormat:@"\ - attribute vec4 position;\n\ - attribute vec4 inputTextureCoordinate;\n\ - \n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - gl_Position = position;\n\ - \n\ - vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2))]; - - // Inner offset loop - [shaderString appendString:@"blurCoordinates[0] = inputTextureCoordinate.xy;\n"]; - for (NSUInteger currentOptimizedOffset = 0; currentOptimizedOffset < numberOfOptimizedOffsets; currentOptimizedOffset++) - { - [shaderString appendFormat:@"\ - blurCoordinates[%lu] = inputTextureCoordinate.xy + singleStepOffset * %f;\n\ - blurCoordinates[%lu] = inputTextureCoordinate.xy - singleStepOffset * %f;\n", (unsigned long)((currentOptimizedOffset * 2) + 1), optimizedGaussianOffsets[currentOptimizedOffset], (unsigned long)((currentOptimizedOffset * 2) + 2), optimizedGaussianOffsets[currentOptimizedOffset]]; - } - - // Footer - [shaderString appendString:@"}\n"]; - - free(optimizedGaussianOffsets); - free(standardGaussianWeights); - return shaderString; -} - -+ (NSString *)fragmentShaderForOptimizedBlurOfRadius:(NSUInteger)blurRadius sigma:(CGFloat)sigma; -{ - if (blurRadius < 1) - { - return kGPUImagePassthroughFragmentShaderString; - } - - // First, generate the normal Gaussian weights for a given sigma - GLfloat *standardGaussianWeights = calloc(blurRadius + 1, sizeof(GLfloat)); - GLfloat sumOfWeights = 0.0; - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = (1.0 / sqrt(2.0 * M_PI * pow(sigma, 2.0))) * exp(-pow(currentGaussianWeightIndex, 2.0) / (2.0 * pow(sigma, 2.0))); - - if (currentGaussianWeightIndex == 0) - { - sumOfWeights += standardGaussianWeights[currentGaussianWeightIndex]; - } - else - { - sumOfWeights += 2.0 * standardGaussianWeights[currentGaussianWeightIndex]; - } - } - - // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from reducing luminance - for (NSUInteger currentGaussianWeightIndex = 0; currentGaussianWeightIndex < blurRadius + 1; currentGaussianWeightIndex++) - { - standardGaussianWeights[currentGaussianWeightIndex] = standardGaussianWeights[currentGaussianWeightIndex] / sumOfWeights; - } - - // From these weights we calculate the offsets to read interpolated values from - NSUInteger numberOfOptimizedOffsets = MIN(blurRadius / 2 + (blurRadius % 2), 7); - NSUInteger trueNumberOfOptimizedOffsets = blurRadius / 2 + (blurRadius % 2); - - NSMutableString *shaderString = [[NSMutableString alloc] init]; - - // Header -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform highp float texelWidthOffset;\n\ - uniform highp float texelHeightOffset;\n\ - \n\ - varying highp vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - lowp float sum = 0.0;\n", (unsigned long)(1 + (numberOfOptimizedOffsets * 2)) ]; -#else - [shaderString appendFormat:@"\ - uniform sampler2D inputImageTexture;\n\ - uniform float texelWidthOffset;\n\ - uniform float texelHeightOffset;\n\ - \n\ - varying vec2 blurCoordinates[%lu];\n\ - \n\ - void main()\n\ - {\n\ - float sum = 0.0;\n", 1 + (numberOfOptimizedOffsets * 2) ]; -#endif - - // Inner texture loop - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0]).r * %f;\n", standardGaussianWeights[0]]; - - for (NSUInteger currentBlurCoordinateIndex = 0; currentBlurCoordinateIndex < numberOfOptimizedOffsets; currentBlurCoordinateIndex++) - { - GLfloat firstWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentBlurCoordinateIndex * 2 + 2]; - GLfloat optimizedWeight = firstWeight + secondWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]).r * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 1), optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[%lu]).r * %f;\n", (unsigned long)((currentBlurCoordinateIndex * 2) + 2), optimizedWeight]; - } - - // If the number of required samples exceeds the amount we can pass in via varyings, we have to do dependent texture reads in the fragment shader - if (trueNumberOfOptimizedOffsets > numberOfOptimizedOffsets) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#else - [shaderString appendString:@"highp vec2 singleStepOffset = vec2(texelWidthOffset, texelHeightOffset);\n"]; -#endif - - for (NSUInteger currentOverlowTextureRead = numberOfOptimizedOffsets; currentOverlowTextureRead < trueNumberOfOptimizedOffsets; currentOverlowTextureRead++) - { - GLfloat firstWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 1]; - GLfloat secondWeight = standardGaussianWeights[currentOverlowTextureRead * 2 + 2]; - - GLfloat optimizedWeight = firstWeight + secondWeight; - GLfloat optimizedOffset = (firstWeight * (currentOverlowTextureRead * 2 + 1) + secondWeight * (currentOverlowTextureRead * 2 + 2)) / optimizedWeight; - - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] + singleStepOffset * %f).r * %f;\n", optimizedOffset, optimizedWeight]; - [shaderString appendFormat:@"sum += texture2D(inputImageTexture, blurCoordinates[0] - singleStepOffset * %f).r * %f;\n", optimizedOffset, optimizedWeight]; - } - } - - // Footer - [shaderString appendString:@"\ - gl_FragColor = vec4(sum, sum, sum, 1.0);\n\ - }\n"]; - - free(standardGaussianWeights); - return shaderString; -} - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m deleted file mode 100755 index 3cda2203..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.m +++ /dev/null @@ -1,98 +0,0 @@ -#import "GPUImageSketchFilter.h" - -@implementation GPUImageSketchFilter - -// Invert the colorspace for a sketch -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float edgeStrength; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = 1.0 - (length(vec2(h, v)) * edgeStrength); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImageSketchFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float edgeStrength; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = 1.0 - (length(vec2(h, v)) * edgeStrength); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageSketchFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h b/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h deleted file mode 100644 index 0dd6f866..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// GPUImageSkinToneFilter.h -// -// -// Created by github.com/r3mus on 8/14/15. -// -// - -#import "GPUImageTwoInputFilter.h" - -typedef NS_ENUM(NSUInteger, GPUImageSkinToneUpperColor) { - GPUImageSkinToneUpperColorGreen, - GPUImageSkinToneUpperColorOrange -}; - -extern NSString *const kGPUImageSkinToneFragmentShaderString; - -@interface GPUImageSkinToneFilter : GPUImageFilter -{ - GLint skinToneAdjustUniform; - GLint skinHueUniform; - GLint skinHueThresholdUniform; - GLint maxHueShiftUniform; - GLint maxSaturationShiftUniform; - GLint upperSkinToneColorUniform; -} - -// The amount of effect to apply, between -1.0 (pink) and +1.0 (orange OR green). Default is 0.0. -@property (nonatomic, readwrite) CGFloat skinToneAdjust; - -// The initial hue of skin to adjust. Default is 0.05 (a common skin red). -@property (nonatomic, readwrite) CGFloat skinHue; - -// The bell curve "breadth" of the skin hue adjustment (i.e. how different from the original skinHue will the modifications effect). -// Default is 40.0 -@property (nonatomic, readwrite) CGFloat skinHueThreshold; - -// The maximum amount of hue shift allowed in the adjustments that affect hue (pink, green). Default = 0.25. -@property (nonatomic, readwrite) CGFloat maxHueShift; - -// The maximum amount of saturation shift allowed in the adjustments that affect saturation (orange). Default = 0.4. -@property (nonatomic, readwrite) CGFloat maxSaturationShift; - -// Defines whether the upper range (> 0.0) will change the skin tone to green (hue) or orange (saturation) -@property (nonatomic, readwrite) GPUImageSkinToneUpperColor upperSkinToneColor; - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m deleted file mode 100644 index 0db9ac7c..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSkinToneFilter.m +++ /dev/null @@ -1,246 +0,0 @@ -// -// GPUImageSkinToneFilter.m -// -// -// Created by github.com/r3mus on 8/13/15. -// -// - -#import "GPUImageSkinToneFilter.h" - -@implementation GPUImageSkinToneFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSkinToneFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - // [-1;1] <=> [pink;orange] - uniform highp float skinToneAdjust; // will make reds more pink - - // Other parameters - uniform mediump float skinHue; - uniform mediump float skinHueThreshold; - uniform mediump float maxHueShift; - uniform mediump float maxSaturationShift; - uniform int upperSkinToneColor; - - // RGB <-> HSV conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl - highp vec3 rgb2hsv(highp vec3 c) -{ - highp vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - highp vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - highp vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - - highp float d = q.x - min(q.w, q.y); - highp float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -} - - // HSV <-> RGB conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl - highp vec3 hsv2rgb(highp vec3 c) -{ - highp vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - highp vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - - // Main - void main () -{ - - // Sample the input pixel - highp vec4 colorRGB = texture2D(inputImageTexture, textureCoordinate); - - // Convert color to HSV, extract hue - highp vec3 colorHSV = rgb2hsv(colorRGB.rgb); - highp float hue = colorHSV.x; - - // check how far from skin hue - highp float dist = hue - skinHue; - if (dist > 0.5) - dist -= 1.0; - if (dist < -0.5) - dist += 1.0; - dist = abs(dist)/0.5; // normalized to [0,1] - - // Apply Gaussian like filter - highp float weight = exp(-dist*dist*skinHueThreshold); - weight = clamp(weight, 0.0, 1.0); - - // Using pink/green, so only adjust hue - if (upperSkinToneColor == 0) { - colorHSV.x += skinToneAdjust * weight * maxHueShift; - // Using pink/orange, so adjust hue < 0 and saturation > 0 - } else if (upperSkinToneColor == 1) { - // We want more orange, so increase saturation - if (skinToneAdjust > 0.0) - colorHSV.y += skinToneAdjust * weight * maxSaturationShift; - // we want more pinks, so decrease hue - else - colorHSV.x += skinToneAdjust * weight * maxHueShift; - } - - // final color - highp vec3 finalColorRGB = hsv2rgb(colorHSV.rgb); - - // display - gl_FragColor = vec4(finalColorRGB, 1.0); -} -); -#else -NSString *const kGPUImageSkinToneFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - // [-1;1] <=> [pink;orange] - uniform float skinToneAdjust; // will make reds more pink - - // Other parameters - uniform float skinHue; - uniform float skinHueThreshold; - uniform float maxHueShift; - uniform float maxSaturationShift; - uniform int upperSkinToneColor; - - // RGB <-> HSV conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl - highp vec3 rgb2hsv(highp vec3 c) -{ - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -} - - // HSV <-> RGB conversion, thanks to http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl - highp vec3 hsv2rgb(highp vec3 c) -{ - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - - // Main - void main () -{ - - // Sample the input pixel - vec4 colorRGB = texture2D(inputImageTexture, textureCoordinate); - - // Convert color to HSV, extract hue - vec3 colorHSV = rgb2hsv(colorRGB.rgb); - float hue = colorHSV.x; - - // check how far from skin hue - float dist = hue - skinHue; - if (dist > 0.5) - dist -= 1.0; - if (dist < -0.5) - dist += 1.0; - dist = abs(dist)/0.5; // normalized to [0,1] - - // Apply Gaussian like filter - float weight = exp(-dist*dist*skinHueThreshold); - weight = clamp(weight, 0.0, 1.0); - - // Using pink/green, so only adjust hue - if (upperSkinToneColor == 0) { - colorHSV.x += skinToneAdjust * weight * maxHueShift; - // Using pink/orange, so adjust hue < 0 and saturation > 0 - } else if (upperSkinToneColor == 1) { - // We want more orange, so increase saturation - if (skinToneAdjust > 0.0) - colorHSV.y += skinToneAdjust * weight * maxSaturationShift; - // we want more pinks, so decrease hue - else - colorHSV.x += skinToneAdjust * weight * maxHueShift; - } - - // final color - vec3 finalColorRGB = hsv2rgb(colorHSV.rgb); - - // display - gl_FragColor = vec4(finalColorRGB, 1.0); -} - ); -#endif - -#pragma mark - -#pragma mark Initialization and teardown -@synthesize skinToneAdjust; -@synthesize skinHue; -@synthesize skinHueThreshold; -@synthesize maxHueShift; -@synthesize maxSaturationShift; -@synthesize upperSkinToneColor; - -- (id)init -{ - if(! (self = [super initWithFragmentShaderFromString:kGPUImageSkinToneFragmentShaderString]) ) - { - return nil; - } - - skinToneAdjustUniform = [filterProgram uniformIndex:@"skinToneAdjust"]; - skinHueUniform = [filterProgram uniformIndex:@"skinHue"]; - skinHueThresholdUniform = [filterProgram uniformIndex:@"skinHueThreshold"]; - maxHueShiftUniform = [filterProgram uniformIndex:@"maxHueShift"]; - maxSaturationShiftUniform = [filterProgram uniformIndex:@"maxSaturationShift"]; - upperSkinToneColorUniform = [filterProgram uniformIndex:@"upperSkinToneColor"]; - - self.skinHue = 0.05; - self.skinHueThreshold = 40.0; - self.maxHueShift = 0.25; - self.maxSaturationShift = 0.4; - self.upperSkinToneColor = GPUImageSkinToneUpperColorGreen; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setSkinToneAdjust:(CGFloat)newValue -{ - skinToneAdjust = newValue; - [self setFloat:newValue forUniform:skinToneAdjustUniform program:filterProgram]; -} - -- (void)setSkinHue:(CGFloat)newValue -{ - skinHue = newValue; - [self setFloat:newValue forUniform:skinHueUniform program:filterProgram]; -} - -- (void)setSkinHueThreshold:(CGFloat)newValue -{ - skinHueThreshold = newValue; - [self setFloat:newValue forUniform:skinHueThresholdUniform program:filterProgram]; -} - -- (void)setMaxHueShift:(CGFloat)newValue -{ - maxHueShift = newValue; - [self setFloat:newValue forUniform:maxHueShiftUniform program:filterProgram]; -} - -- (void)setMaxSaturationShift:(CGFloat)newValue -{ - maxSaturationShift = newValue; - [self setFloat:newValue forUniform:maxSaturationShiftUniform program:filterProgram]; -} - -- (void)setUpperSkinToneColor:(GPUImageSkinToneUpperColor)newValue -{ - upperSkinToneColor = newValue; - [self setInteger:newValue forUniform:upperSkinToneColorUniform program:filterProgram]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m deleted file mode 100755 index 03828f48..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageSmoothToonFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageToonFilter.h" - -@implementation GPUImageSmoothToonFilter - -@synthesize threshold; -@synthesize blurRadiusInPixels; -@synthesize quantizationLevels; -@synthesize texelWidth; -@synthesize texelHeight; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: run the Sobel edge detection on this blurred image, along with a posterization effect - toonFilter = [[GPUImageToonFilter alloc] init]; - [self addFilter:toonFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:toonFilter]; - - self.initialFilters = [NSArray arrayWithObject:blurFilter]; - self.terminalFilter = toonFilter; - - self.blurRadiusInPixels = 2.0; - self.threshold = 0.2; - self.quantizationLevels = 10.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setTexelWidth:(CGFloat)newValue; -{ - toonFilter.texelWidth = newValue; -} - -- (CGFloat)texelWidth; -{ - return toonFilter.texelWidth; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - toonFilter.texelHeight = newValue; -} - -- (CGFloat)texelHeight; -{ - return toonFilter.texelHeight; -} - -- (void)setThreshold:(CGFloat)newValue; -{ - toonFilter.threshold = newValue; -} - -- (CGFloat)threshold; -{ - return toonFilter.threshold; -} - -- (void)setQuantizationLevels:(CGFloat)newValue; -{ - toonFilter.quantizationLevels = newValue; -} - -- (CGFloat)quantizationLevels; -{ - return toonFilter.quantizationLevels; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m deleted file mode 100755 index e193f027..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.m +++ /dev/null @@ -1,188 +0,0 @@ -#import "GPUImageSobelEdgeDetectionFilter.h" -#import "GPUImageGrayscaleFilter.h" -#import "GPUImage3x3ConvolutionFilter.h" - -// Code from "Graphics Shaders: Theory and Practice" by M. Bailey and S. Cunningham -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - precision mediump float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImageSobelEdgeDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)) * edgeStrength; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -@implementation GPUImageSobelEdgeDetectionFilter - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; -@synthesize edgeStrength = _edgeStrength; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageSobelEdgeDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - // Do a luminance pass first to reduce the calculations performed at each fragment in the edge detection phase - - if (!(self = [super initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:kGPUImageLuminanceFragmentShaderString secondStageVertexShaderFromString:kGPUImageNearbyTexelSamplingVertexShaderString secondStageFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - hasOverriddenImageSizeFactor = NO; - - texelWidthUniform = [secondFilterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [secondFilterProgram uniformIndex:@"texelHeight"]; - edgeStrengthUniform = [secondFilterProgram uniformIndex:@"edgeStrength"]; - - self.edgeStrength = 1.0; - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - GLProgram *previousProgram = [GPUImageContext sharedImageProcessingContext].currentShaderProgram; - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - [GPUImageContext setActiveShaderProgram:previousProgram]; - }); - } -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - [super setUniformsForProgramAtIndex:programIndex]; - - if (programIndex == 1) - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } -} - -- (BOOL)wantsMonochromeInput; -{ -// return YES; - return NO; -} - -- (BOOL)providesMonochromeOutput; -{ -// return YES; - return NO; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:secondFilterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:secondFilterProgram]; -} - -- (void)setEdgeStrength:(CGFloat)newValue; -{ - _edgeStrength = newValue; - - [self setFloat:_edgeStrength forUniform:edgeStrengthUniform program:secondFilterProgram]; -} - - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m deleted file mode 100755 index e1d4e02d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.m +++ /dev/null @@ -1,62 +0,0 @@ -#import "GPUImageSoftEleganceFilter.h" -#import "GPUImagePicture.h" -#import "GPUImageLookupFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageAlphaBlendFilter.h" - -@implementation GPUImageSoftEleganceFilter - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - UIImage *image1 = [UIImage imageNamed:@"lookup_soft_elegance_1.png"]; - UIImage *image2 = [UIImage imageNamed:@"lookup_soft_elegance_2.png"]; -#else - NSImage *image1 = [NSImage imageNamed:@"lookup_soft_elegance_1.png"]; - NSImage *image2 = [NSImage imageNamed:@"lookup_soft_elegance_2.png"]; -#endif - - NSAssert(image1 && image2, - @"To use GPUImageSoftEleganceFilter you need to add lookup_soft_elegance_1.png and lookup_soft_elegance_2.png from GPUImage/framework/Resources to your application bundle."); - - lookupImageSource1 = [[GPUImagePicture alloc] initWithImage:image1]; - GPUImageLookupFilter *lookupFilter1 = [[GPUImageLookupFilter alloc] init]; - [self addFilter:lookupFilter1]; - - [lookupImageSource1 addTarget:lookupFilter1 atTextureLocation:1]; - [lookupImageSource1 processImage]; - - GPUImageGaussianBlurFilter *gaussianBlur = [[GPUImageGaussianBlurFilter alloc] init]; - gaussianBlur.blurRadiusInPixels = 10.0; - [lookupFilter1 addTarget:gaussianBlur]; - [self addFilter:gaussianBlur]; - - GPUImageAlphaBlendFilter *alphaBlend = [[GPUImageAlphaBlendFilter alloc] init]; - alphaBlend.mix = 0.14; - [lookupFilter1 addTarget:alphaBlend]; - [gaussianBlur addTarget:alphaBlend]; - [self addFilter:alphaBlend]; - - lookupImageSource2 = [[GPUImagePicture alloc] initWithImage:image2]; - - GPUImageLookupFilter *lookupFilter2 = [[GPUImageLookupFilter alloc] init]; - [alphaBlend addTarget:lookupFilter2]; - [lookupImageSource2 addTarget:lookupFilter2]; - [lookupImageSource2 processImage]; - [self addFilter:lookupFilter2]; - - self.initialFilters = [NSArray arrayWithObjects:lookupFilter1, nil]; - self.terminalFilter = lookupFilter2; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m deleted file mode 100755 index 368bce0a..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.m +++ /dev/null @@ -1,54 +0,0 @@ -#import "GPUImageSoftLightBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSoftLightBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - mediump vec4 base = texture2D(inputImageTexture, textureCoordinate); - mediump vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - lowp float alphaDivisor = base.a + step(base.a, 0.0); // Protect against a divide-by-zero blacking out things in the output - gl_FragColor = base * (overlay.a * (base / alphaDivisor) + (2.0 * overlay * (1.0 - (base / alphaDivisor)))) + overlay * (1.0 - base.a) + base * (1.0 - overlay.a); - } -); -#else -NSString *const kGPUImageSoftLightBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 base = texture2D(inputImageTexture, textureCoordinate); - vec4 overlay = texture2D(inputImageTexture2, textureCoordinate2); - - float alphaDivisor = base.a + step(base.a, 0.0); // Protect against a divide-by-zero blacking out things in the output - gl_FragColor = base * (overlay.a * (base / alphaDivisor) + (2.0 * overlay * (1.0 - (base / alphaDivisor)))) + overlay * (1.0 - base.a) + base * (1.0 - overlay.a); - } -); -#endif - -@implementation GPUImageSoftLightBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSoftLightBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m deleted file mode 100644 index 616cb5b2..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.m +++ /dev/null @@ -1,76 +0,0 @@ -#import "GPUImageSolarizeFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSolarizeFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform highp float threshold; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - highp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - highp float luminance = dot(textureColor.rgb, W); - highp float thresholdResult = step(luminance, threshold); - highp vec3 finalColor = abs(thresholdResult - textureColor.rgb); - - gl_FragColor = vec4(finalColor, textureColor.w); - } -); -#else -NSString *const kGPUImageSolarizeFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - float luminance = dot(textureColor.rgb, W); - float thresholdResult = step(luminance, threshold); - vec3 finalColor = abs(thresholdResult - textureColor.rgb); - - gl_FragColor = vec4(vec3(finalColor), textureColor.w); - } -); -#endif - -@implementation GPUImageSolarizeFilter; - -@synthesize threshold = _threshold; - -#pragma mark - -#pragma mark Initialization - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSolarizeFragmentShaderString])) - { - return nil; - } - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - self.threshold = 0.5; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m b/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m deleted file mode 100644 index 9b555ce0..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageSolidColorGenerator.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUSolidColorFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying highp vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform vec4 color; - uniform float useExistingAlpha; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - gl_FragColor = vec4(color.rgb, max(textureColor.a, 1.0 - useExistingAlpha)); - } - ); -#else -NSString *const kGPUSolidColorFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - uniform sampler2D inputImageTexture; - uniform vec4 color; - uniform float useExistingAlpha; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - gl_FragColor = vec4(color.rgb, max(textureColor.a, 1.0 - useExistingAlpha)); - } - ); -#endif - -@implementation GPUImageSolidColorGenerator - -@synthesize color = _color; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUSolidColorFragmentShaderString])) - { - return nil; - } - - colorUniform = [filterProgram uniformIndex:@"color"]; - useExistingAlphaUniform = [filterProgram uniformIndex:@"useExistingAlpha"]; - - _color = (GPUVector4){0.0f, 0.0f, 0.5f, 1.0f}; - self.useExistingAlpha = NO; - - return self; -} - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - return; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(_color.one, _color.two, _color.three, _color.four); - glClear(GL_COLOR_BUFFER_BIT); - }); -} - - -#pragma mark - -#pragma mark Accessors - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - - if (!CGSizeEqualToSize(inputTextureSize, CGSizeZero)) - { - [self newFrameReadyAtTime:kCMTimeIndefinite atIndex:0]; - } -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [super addTarget:newTarget atTextureLocation:textureLocation]; - - if (!CGSizeEqualToSize(inputTextureSize, CGSizeZero)) - { - [newTarget setInputSize:inputTextureSize atIndex:textureLocation]; - [newTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureLocation]; - } -} - -- (void)setColor:(GPUVector4)newValue; -{ - [self setColorRed:newValue.one green:newValue.two blue:newValue.three alpha:newValue.four]; -} - -- (void)setColorRed:(CGFloat)redComponent green:(CGFloat)greenComponent blue:(CGFloat)blueComponent alpha:(CGFloat)alphaComponent; -{ - _color.one = (GLfloat)redComponent; - _color.two = (GLfloat)greenComponent; - _color.three = (GLfloat)blueComponent; - _color.four = (GLfloat)alphaComponent; - -// [self setVec4:_color forUniform:colorUniform program:filterProgram]; - runAsynchronouslyOnVideoProcessingQueue(^{ - [self newFrameReadyAtTime:kCMTimeIndefinite atIndex:0]; - }); -} - -- (void)setUseExistingAlpha:(BOOL)useExistingAlpha; -{ - _useExistingAlpha = useExistingAlpha; - - [self setInteger:(useExistingAlpha ? 1 : 0) forUniform:useExistingAlphaUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m deleted file mode 100644 index 432adc4b..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "GPUImageSourceOverBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSourceOverBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate); - - gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); - } -); -#else -NSString *const kGPUImageSourceOverBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate); - - gl_FragColor = mix(textureColor, textureColor2, textureColor2.a); - } - ); -#endif - -@implementation GPUImageSourceOverBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSourceOverBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m deleted file mode 100644 index b0f54042..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.m +++ /dev/null @@ -1,179 +0,0 @@ -#import "GPUImageSphereRefractionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSphereRefractionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp float radius; - uniform highp float aspectRatio; - uniform highp float refractiveIndex; - - void main() - { - highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - highp float distanceFromCenter = distance(center, textureCoordinateToUse); - lowp float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - highp float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - highp vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - highp vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - - gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere; - } -); -#else -NSString *const kGPUImageSphereRefractionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform float radius; - uniform float aspectRatio; - uniform float refractiveIndex; - - void main() - { - vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio)); - float distanceFromCenter = distance(center, textureCoordinateToUse); - float checkForPresenceWithinSphere = step(distanceFromCenter, radius); - - distanceFromCenter = distanceFromCenter / radius; - - float normalizedDepth = radius * sqrt(1.0 - distanceFromCenter * distanceFromCenter); - vec3 sphereNormal = normalize(vec3(textureCoordinateToUse - center, normalizedDepth)); - - vec3 refractedVector = refract(vec3(0.0, 0.0, -1.0), sphereNormal, refractiveIndex); - - gl_FragColor = texture2D(inputImageTexture, (refractedVector.xy + 1.0) * 0.5) * checkForPresenceWithinSphere; - } -); -#endif - -@interface GPUImageSphereRefractionFilter () - -- (void)adjustAspectRatio; - -@property (readwrite, nonatomic) CGFloat aspectRatio; - -@end - - -@implementation GPUImageSphereRefractionFilter - -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize aspectRatio = _aspectRatio; -@synthesize refractiveIndex = _refractiveIndex; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageSphereRefractionFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - radiusUniform = [filterProgram uniformIndex:@"radius"]; - aspectRatioUniform = [filterProgram uniformIndex:@"aspectRatio"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - refractiveIndexUniform = [filterProgram uniformIndex:@"refractiveIndex"]; - - self.radius = 0.25; - self.center = CGPointMake(0.5, 0.5); - self.refractiveIndex = 0.71; - - [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:0.0]; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - CGSize oldInputSize = inputTextureSize; - [super setInputSize:newSize atIndex:textureIndex]; - - if (!CGSizeEqualToSize(oldInputSize, inputTextureSize) && (!CGSizeEqualToSize(newSize, CGSizeZero)) ) - { - [self adjustAspectRatio]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)adjustAspectRatio; -{ - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - [self setAspectRatio:(inputTextureSize.width / inputTextureSize.height)]; - } - else - { - [self setAspectRatio:(inputTextureSize.height / inputTextureSize.width)]; - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; - [self adjustAspectRatio]; -} - -- (void)forceProcessingAtSize:(CGSize)frameSize; -{ - [super forceProcessingAtSize:frameSize]; - [self adjustAspectRatio]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -- (void)setAspectRatio:(CGFloat)newValue; -{ - _aspectRatio = newValue; - - [self setFloat:_aspectRatio forUniform:aspectRatioUniform program:filterProgram]; -} - -- (void)setRefractiveIndex:(CGFloat)newValue; -{ - _refractiveIndex = newValue; - - [self setFloat:_refractiveIndex forUniform:refractiveIndexUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m b/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m deleted file mode 100755 index 447f79f6..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.m +++ /dev/null @@ -1,338 +0,0 @@ -// 2448x3264 pixel image = 31,961,088 bytes for uncompressed RGBA - -#import "GPUImageStillCamera.h" - -void stillImageDataReleaseCallback(void *releaseRefCon, const void *baseAddress) -{ - free((void *)baseAddress); -} - -void GPUImageCreateResizedSampleBuffer(CVPixelBufferRef cameraFrame, CGSize finalSize, CMSampleBufferRef *sampleBuffer) -{ - // CVPixelBufferCreateWithPlanarBytes for YUV input - - CGSize originalSize = CGSizeMake(CVPixelBufferGetWidth(cameraFrame), CVPixelBufferGetHeight(cameraFrame)); - - CVPixelBufferLockBaseAddress(cameraFrame, 0); - GLubyte *sourceImageBytes = CVPixelBufferGetBaseAddress(cameraFrame); - CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, sourceImageBytes, CVPixelBufferGetBytesPerRow(cameraFrame) * originalSize.height, NULL); - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - CGImageRef cgImageFromBytes = CGImageCreate((int)originalSize.width, (int)originalSize.height, 8, 32, CVPixelBufferGetBytesPerRow(cameraFrame), genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst, dataProvider, NULL, NO, kCGRenderingIntentDefault); - - GLubyte *imageData = (GLubyte *) calloc(1, (int)finalSize.width * (int)finalSize.height * 4); - - CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)finalSize.width, (int)finalSize.height, 8, (int)finalSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, finalSize.width, finalSize.height), cgImageFromBytes); - CGImageRelease(cgImageFromBytes); - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - CGDataProviderRelease(dataProvider); - - CVPixelBufferRef pixel_buffer = NULL; - CVPixelBufferCreateWithBytes(kCFAllocatorDefault, finalSize.width, finalSize.height, kCVPixelFormatType_32BGRA, imageData, finalSize.width * 4, stillImageDataReleaseCallback, NULL, NULL, &pixel_buffer); - CMVideoFormatDescriptionRef videoInfo = NULL; - CMVideoFormatDescriptionCreateForImageBuffer(NULL, pixel_buffer, &videoInfo); - - CMTime frameTime = CMTimeMake(1, 30); - CMSampleTimingInfo timing = {frameTime, frameTime, kCMTimeInvalid}; - - CMSampleBufferCreateForImageBuffer(kCFAllocatorDefault, pixel_buffer, YES, NULL, NULL, videoInfo, &timing, sampleBuffer); - CVPixelBufferUnlockBaseAddress(cameraFrame, 0); - CFRelease(videoInfo); - CVPixelBufferRelease(pixel_buffer); -} - -@interface GPUImageStillCamera () -{ - AVCaptureStillImageOutput *photoOutput; -} - -// Methods calling this are responsible for calling dispatch_semaphore_signal(frameRenderingSemaphore) somewhere inside the block -- (void)capturePhotoProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withImageOnGPUHandler:(void (^)(NSError *error))block; - -@end - -@implementation GPUImageStillCamera { - BOOL requiresFrontCameraTextureCacheCorruptionWorkaround; -} - -@synthesize currentCaptureMetadata = _currentCaptureMetadata; -@synthesize jpegCompressionQuality = _jpegCompressionQuality; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; -{ - if (!(self = [super initWithSessionPreset:sessionPreset cameraPosition:cameraPosition])) - { - return nil; - } - - /* Detect iOS version < 6 which require a texture cache corruption workaround */ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - requiresFrontCameraTextureCacheCorruptionWorkaround = [[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] == NSOrderedAscending; -#pragma clang diagnostic pop - - [self.captureSession beginConfiguration]; - - photoOutput = [[AVCaptureStillImageOutput alloc] init]; - - // Having a still photo input set to BGRA and video to YUV doesn't work well, so since I don't have YUV resizing for iPhone 4 yet, kick back to BGRA for that device -// if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) - if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - { - BOOL supportsFullYUVRange = NO; - NSArray *supportedPixelFormats = photoOutput.availableImageDataCVPixelFormatTypes; - for (NSNumber *currentPixelFormat in supportedPixelFormats) - { - if ([currentPixelFormat intValue] == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) - { - supportsFullYUVRange = YES; - } - } - - if (supportsFullYUVRange) - { - [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - else - { - [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - } - else - { - captureAsYUV = NO; - [photoOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - - [self.captureSession addOutput:photoOutput]; - - [self.captureSession commitConfiguration]; - - self.jpegCompressionQuality = 0.8; - - return self; -} - -- (id)init; -{ - if (!(self = [self initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:AVCaptureDevicePositionBack])) - { - return nil; - } - return self; -} - -- (void)removeInputsAndOutputs; -{ - [self.captureSession removeOutput:photoOutput]; - [super removeInputsAndOutputs]; -} - -#pragma mark - -#pragma mark Photography controls - -- (void)capturePhotoAsSampleBufferWithCompletionHandler:(void (^)(CMSampleBufferRef imageSampleBuffer, NSError *error))block -{ - NSLog(@"If you want to use the method capturePhotoAsSampleBufferWithCompletionHandler:, you must comment out the line in GPUImageStillCamera.m in the method initWithSessionPreset:cameraPosition: which sets the CVPixelBufferPixelFormatTypeKey, as well as uncomment the rest of the method capturePhotoAsSampleBufferWithCompletionHandler:. However, if you do this you cannot use any of the photo capture methods to take a photo if you also supply a filter."); - - /*dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - - [photoOutput captureStillImageAsynchronouslyFromConnection:[[photoOutput connections] objectAtIndex:0] completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { - block(imageSampleBuffer, error); - }]; - - dispatch_semaphore_signal(frameRenderingSemaphore); - - */ - - return; -} - -- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block; -{ - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - UIImage *filteredPhoto = nil; - - if(!error){ - filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; - } - dispatch_semaphore_signal(frameRenderingSemaphore); - - block(filteredPhoto, error); - }]; -} - -- (void)capturePhotoAsImageProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(UIImage *processedImage, NSError *error))block { - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - UIImage *filteredPhoto = nil; - - if(!error) { - filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; - } - dispatch_semaphore_signal(frameRenderingSemaphore); - - block(filteredPhoto, error); - }]; -} - -- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedJPEG, NSError *error))block; -{ -// reportAvailableMemoryForGPUImage(@"Before Capture"); - - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForJPEGFile = nil; - - if(!error){ - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; - dispatch_semaphore_signal(frameRenderingSemaphore); -// reportAvailableMemoryForGPUImage(@"After UIImage generation"); - - dataForJPEGFile = UIImageJPEGRepresentation(filteredPhoto,self.jpegCompressionQuality); -// reportAvailableMemoryForGPUImage(@"After JPEG generation"); - } - -// reportAvailableMemoryForGPUImage(@"After autorelease pool"); - }else{ - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForJPEGFile, error); - }]; -} - -- (void)capturePhotoAsJPEGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedImage, NSError *error))block { - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForJPEGFile = nil; - - if(!error) { - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; - dispatch_semaphore_signal(frameRenderingSemaphore); - - dataForJPEGFile = UIImageJPEGRepresentation(filteredPhoto, self.jpegCompressionQuality); - } - } else { - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForJPEGFile, error); - }]; -} - -- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; -{ - - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForPNGFile = nil; - - if(!error){ - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebuffer]; - dispatch_semaphore_signal(frameRenderingSemaphore); - dataForPNGFile = UIImagePNGRepresentation(filteredPhoto); - } - }else{ - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForPNGFile, error); - }]; - - return; -} - -- (void)capturePhotoAsPNGProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withOrientation:(UIImageOrientation)orientation withCompletionHandler:(void (^)(NSData *processedPNG, NSError *error))block; -{ - - [self capturePhotoProcessedUpToFilter:finalFilterInChain withImageOnGPUHandler:^(NSError *error) { - NSData *dataForPNGFile = nil; - - if(!error){ - @autoreleasepool { - UIImage *filteredPhoto = [finalFilterInChain imageFromCurrentFramebufferWithOrientation:orientation]; - dispatch_semaphore_signal(frameRenderingSemaphore); - dataForPNGFile = UIImagePNGRepresentation(filteredPhoto); - } - }else{ - dispatch_semaphore_signal(frameRenderingSemaphore); - } - - block(dataForPNGFile, error); - }]; - - return; -} - -#pragma mark - Private Methods - -- (void)capturePhotoProcessedUpToFilter:(GPUImageOutput *)finalFilterInChain withImageOnGPUHandler:(void (^)(NSError *error))block -{ - dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - - if(photoOutput.isCapturingStillImage){ - block([NSError errorWithDomain:AVFoundationErrorDomain code:AVErrorMaximumStillImageCaptureRequestsExceeded userInfo:nil]); - return; - } - - [photoOutput captureStillImageAsynchronouslyFromConnection:[[photoOutput connections] objectAtIndex:0] completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { - if(imageSampleBuffer == NULL){ - block(error); - return; - } - - // For now, resize photos to fix within the max texture size of the GPU - CVImageBufferRef cameraFrame = CMSampleBufferGetImageBuffer(imageSampleBuffer); - - CGSize sizeOfPhoto = CGSizeMake(CVPixelBufferGetWidth(cameraFrame), CVPixelBufferGetHeight(cameraFrame)); - CGSize scaledImageSizeToFitOnGPU = [GPUImageContext sizeThatFitsWithinATextureForSize:sizeOfPhoto]; - if (!CGSizeEqualToSize(sizeOfPhoto, scaledImageSizeToFitOnGPU)) - { - CMSampleBufferRef sampleBuffer = NULL; - - if (CVPixelBufferGetPlaneCount(cameraFrame) > 0) - { - NSAssert(NO, @"Error: no downsampling for YUV input in the framework yet"); - } - else - { - GPUImageCreateResizedSampleBuffer(cameraFrame, scaledImageSizeToFitOnGPU, &sampleBuffer); - } - - dispatch_semaphore_signal(frameRenderingSemaphore); - [finalFilterInChain useNextFrameForImageCapture]; - [self captureOutput:photoOutput didOutputSampleBuffer:sampleBuffer fromConnection:[[photoOutput connections] objectAtIndex:0]]; - dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - if (sampleBuffer != NULL) - CFRelease(sampleBuffer); - } - else - { - // This is a workaround for the corrupt images that are sometimes returned when taking a photo with the front camera and using the iOS 5.0 texture caches - AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; - if ( (currentCameraPosition != AVCaptureDevicePositionFront) || (![GPUImageContext supportsFastTextureUpload]) || !requiresFrontCameraTextureCacheCorruptionWorkaround) - { - dispatch_semaphore_signal(frameRenderingSemaphore); - [finalFilterInChain useNextFrameForImageCapture]; - [self captureOutput:photoOutput didOutputSampleBuffer:imageSampleBuffer fromConnection:[[photoOutput connections] objectAtIndex:0]]; - dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_FOREVER); - } - } - - CFDictionaryRef metadata = CMCopyDictionaryOfAttachments(NULL, imageSampleBuffer, kCMAttachmentMode_ShouldPropagate); - _currentCaptureMetadata = (__bridge_transfer NSDictionary *)metadata; - - block(nil); - - _currentCaptureMetadata = nil; - }]; -} - - - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m deleted file mode 100755 index d38cac34..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.m +++ /dev/null @@ -1,99 +0,0 @@ -#import "GPUImageStretchDistortionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - - void main() - { - highp vec2 normCoord = 2.0 * textureCoordinate - 1.0; - highp vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - mediump vec2 s = sign(normCoord); - normCoord = abs(normCoord); - normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord; - normCoord = s * normCoord; - - normCoord += normCenter; - - mediump vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#else -NSString *const kGPUImageStretchDistortionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - - void main() - { - vec2 normCoord = 2.0 * textureCoordinate - 1.0; - vec2 normCenter = 2.0 * center - 1.0; - - normCoord -= normCenter; - vec2 s = sign(normCoord); - normCoord = abs(normCoord); - normCoord = 0.5 * normCoord + 0.5 * smoothstep(0.25, 0.5, normCoord) * normCoord; - normCoord = s * normCoord; - - normCoord += normCenter; - - vec2 textureCoordinateToUse = normCoord / 2.0 + 0.5; - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse); - } -); -#endif - -@implementation GPUImageStretchDistortionFilter - -@synthesize center = _center; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageStretchDistortionFragmentShaderString])) - { - return nil; - } - - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m deleted file mode 100755 index 8938baea..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "GPUImageSubtractBlendFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSubtractBlendFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(textureColor.rgb - textureColor2.rgb, textureColor.a); - } -); -#else -NSString *const kGPUImageSubtractBlendFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - vec4 textureColor2 = texture2D(inputImageTexture2, textureCoordinate2); - - gl_FragColor = vec4(textureColor.rgb - textureColor2.rgb, textureColor.a); - } -); -#endif - -@implementation GPUImageSubtractBlendFilter - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSubtractBlendFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m deleted file mode 100755 index 5462bc65..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.m +++ /dev/null @@ -1,123 +0,0 @@ -#import "GPUImageSwirlFilter.h" - -// Adapted from the shader example here: http://www.geeks3d.com/20110428/shader-library-swirl-post-processing-filter-in-glsl/ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageSwirlFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 center; - uniform highp float radius; - uniform highp float angle; - - void main() - { - highp vec2 textureCoordinateToUse = textureCoordinate; - highp float dist = distance(center, textureCoordinate); - if (dist < radius) - { - textureCoordinateToUse -= center; - highp float percent = (radius - dist) / radius; - highp float theta = percent * percent * angle * 8.0; - highp float s = sin(theta); - highp float c = cos(theta); - textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - - } -); -#else -NSString *const kGPUImageSwirlFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 center; - uniform float radius; - uniform float angle; - - void main() - { - vec2 textureCoordinateToUse = textureCoordinate; - float dist = distance(center, textureCoordinate); - if (dist < radius) - { - textureCoordinateToUse -= center; - float percent = (radius - dist) / radius; - float theta = percent * percent * angle * 8.0; - float s = sin(theta); - float c = cos(theta); - textureCoordinateToUse = vec2(dot(textureCoordinateToUse, vec2(c, -s)), dot(textureCoordinateToUse, vec2(s, c))); - textureCoordinateToUse += center; - } - - gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse ); - } -); -#endif - -@implementation GPUImageSwirlFilter - -@synthesize center = _center; -@synthesize radius = _radius; -@synthesize angle = _angle; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageSwirlFragmentShaderString])) - { - return nil; - } - - radiusUniform = [filterProgram uniformIndex:@"radius"]; - angleUniform = [filterProgram uniformIndex:@"angle"]; - centerUniform = [filterProgram uniformIndex:@"center"]; - - self.radius = 0.5; - self.angle = 1.0; - self.center = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setCenter:self.center]; -} - -- (void)setRadius:(CGFloat)newValue; -{ - _radius = newValue; - - [self setFloat:_radius forUniform:radiusUniform program:filterProgram]; -} - -- (void)setAngle:(CGFloat)newValue; -{ - _angle = newValue; - - [self setFloat:_angle forUniform:angleUniform program:filterProgram]; -} - -- (void)setCenter:(CGPoint)newValue; -{ - _center = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_center forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:centerUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m b/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m deleted file mode 100755 index ad3ca1d1..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.m +++ /dev/null @@ -1,46 +0,0 @@ -#import "GPUImageTextureInput.h" - -@implementation GPUImageTextureInput - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithTexture:(GLuint)newInputTexture size:(CGSize)newTextureSize; -{ - if (!(self = [super init])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - }); - - textureSize = newTextureSize; - - runSynchronouslyOnVideoProcessingQueue(^{ - outputFramebuffer = [[GPUImageFramebuffer alloc] initWithSize:newTextureSize overriddenTexture:newInputTexture]; - }); - - return self; -} - -#pragma mark - -#pragma mark Image rendering - -- (void)processTextureWithFrameTime:(CMTime)frameTime; -{ - runAsynchronouslyOnVideoProcessingQueue(^{ - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger targetTextureIndex = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:textureSize atIndex:targetTextureIndex]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:targetTextureIndex]; - [currentTarget newFrameReadyAtTime:frameTime atIndex:targetTextureIndex]; - } - }); -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m b/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m deleted file mode 100755 index 1e1f24f2..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.m +++ /dev/null @@ -1,83 +0,0 @@ -#import "GPUImageTextureOutput.h" - -@implementation GPUImageTextureOutput - -@synthesize delegate = _delegate; -@synthesize texture = _texture; -@synthesize enabled; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - self.enabled = YES; - - return self; -} - -- (void)doneWithTexture; -{ - [firstInputFramebuffer unlock]; -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - [_delegate newFrameReadyFromTextureOutput:self]; -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -// TODO: Deal with the fact that the texture changes regularly as a result of the caching -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - firstInputFramebuffer = newInputFramebuffer; - [firstInputFramebuffer lock]; - - _texture = [firstInputFramebuffer texture]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ -} - -- (CGSize)maximumOutputSize; -{ - return CGSizeZero; -} - -- (void)endProcessing -{ -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m deleted file mode 100644 index 2f4f113f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.m +++ /dev/null @@ -1,328 +0,0 @@ -#import "GPUImageThreeInputFilter.h" - - -NSString *const kGPUImageThreeInputTextureVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - attribute vec4 inputTextureCoordinate3; - - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - varying vec2 textureCoordinate3; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - textureCoordinate2 = inputTextureCoordinate2.xy; - textureCoordinate3 = inputTextureCoordinate3.xy; - } -); - -@implementation GPUImageThreeInputFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageThreeInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - inputRotation3 = kGPUImageNoRotation; - - hasSetSecondTexture = NO; - - hasReceivedThirdFrame = NO; - thirdFrameWasVideo = NO; - thirdFrameCheckDisabled = NO; - - thirdFrameTime = kCMTimeInvalid; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - filterThirdTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate3"]; - - filterInputTextureUniform3 = [filterProgram uniformIndex:@"inputImageTexture3"]; // This does assume a name of "inputImageTexture3" for the third input texture in the fragment shader - glEnableVertexAttribArray(filterThirdTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeAttributes; -{ - [super initializeAttributes]; - [filterProgram addAttribute:@"inputTextureCoordinate3"]; -} - -- (void)disableThirdFrameCheck; -{ - thirdFrameCheckDisabled = YES; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - [thirdInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [thirdInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform3, 4); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - glVertexAttribPointer(filterThirdTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation3]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - [thirdInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (NSInteger)nextAvailableTextureIndex; -{ - if (hasSetSecondTexture) - { - return 2; - } - else if (hasSetFirstTexture) - { - return 1; - } - else - { - return 0; - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - firstInputFramebuffer = newInputFramebuffer; - hasSetFirstTexture = YES; - [firstInputFramebuffer lock]; - } - else if (textureIndex == 1) - { - secondInputFramebuffer = newInputFramebuffer; - hasSetSecondTexture = YES; - [secondInputFramebuffer lock]; - } - else - { - thirdInputFramebuffer = newInputFramebuffer; - [thirdInputFramebuffer lock]; - } -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - [super setInputSize:newSize atIndex:textureIndex]; - - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetFirstTexture = NO; - } - } - else if (textureIndex == 1) - { - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetSecondTexture = NO; - } - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - inputRotation = newInputRotation; - } - else if (textureIndex == 1) - { - inputRotation2 = newInputRotation; - } - else - { - inputRotation3 = newInputRotation; - } -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - GPUImageRotationMode rotationToCheck; - if (textureIndex == 0) - { - rotationToCheck = inputRotation; - } - else if (textureIndex == 1) - { - rotationToCheck = inputRotation2; - } - else - { - rotationToCheck = inputRotation3; - } - - if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - // You can set up infinite update loops, so this helps to short circuit them - if (hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) - { - return; - } - - BOOL updatedMovieFrameOppositeStillImage = NO; - - if (textureIndex == 0) - { - hasReceivedFirstFrame = YES; - firstFrameTime = frameTime; - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(secondFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else if (textureIndex == 1) - { - hasReceivedSecondFrame = YES; - secondFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (thirdFrameCheckDisabled) - { - hasReceivedThirdFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else - { - hasReceivedThirdFrame = YES; - thirdFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - - // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) - if ((hasReceivedFirstFrame && hasReceivedSecondFrame && hasReceivedThirdFrame) || updatedMovieFrameOppositeStillImage) - { - static const GLfloat imageVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - [self renderToTextureWithVertices:imageVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - - [self informTargetsAboutNewFrameAtTime:frameTime]; - - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - hasReceivedThirdFrame = NO; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m deleted file mode 100755 index 553c600f..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.m +++ /dev/null @@ -1,145 +0,0 @@ -#import "GPUImageThresholdEdgeDetectionFilter.h" - -@implementation GPUImageThresholdEdgeDetectionFilter - -// Invert the colorspace for a sketch -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageThresholdEdgeDetectionFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float threshold; - - uniform float edgeStrength; - - void main() - { -// float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; -// float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; -// float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; -// float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; -// float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; -// float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; -// float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + leftIntensity + 2.0 * centerIntensity + rightIntensity; -// float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomIntensity + 2.0 * centerIntensity + topIntensity; - float h = (centerIntensity - topIntensity) + (bottomIntensity - centerIntensity); - float v = (centerIntensity - leftIntensity) + (rightIntensity - centerIntensity); -// float h = (centerIntensity - topIntensity); -// float j = (topIntensity - centerIntensity); -// h = max(h,j); -// j = abs(h); -// float v = (centerIntensity - leftIntensity); - - float mag = length(vec2(h, v)) * edgeStrength; - mag = step(threshold, mag); - -// float mag = abs(h); - -// gl_FragColor = vec4(h, h, h, 1.0); -// gl_FragColor = vec4(texture2D(inputImageTexture, textureCoordinate)); -// gl_FragColor = vec4(h, centerIntensity, j, 1.0); - gl_FragColor = vec4(mag, mag, mag, 1.0); - } -); -#else -NSString *const kGPUImageThresholdEdgeDetectionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - - uniform float edgeStrength; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - h = max(0.0, h); - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - v = max(0.0, v); - - float mag = length(vec2(h, v)) * edgeStrength; - mag = step(threshold, mag); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -@synthesize threshold = _threshold; - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithFragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - thresholdUniform = [secondFilterProgram uniformIndex:@"threshold"]; - self.threshold = 0.25; - self.edgeStrength = 1.0; - - return self; -} - - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageThresholdEdgeDetectionFragmentShaderString])) - { - return nil; - } - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:secondFilterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m deleted file mode 100644 index d24e9dea..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.m +++ /dev/null @@ -1,103 +0,0 @@ -#import "GPUImageThresholdSketchFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageThresholdSketchFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform lowp float threshold; - uniform float edgeStrength; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = (length(vec2(h, v)) * edgeStrength); - mag = step(threshold, mag); - mag = 1.0 - mag; - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#else -NSString *const kGPUImageThresholdSketchFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - uniform float threshold; - uniform float edgeStrength; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = 1.0 - length(vec2(h, v) * edgeStrength); - mag = step(threshold, mag); - - gl_FragColor = vec4(vec3(mag), 1.0); - } -); -#endif - -@implementation GPUImageThresholdSketchFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageThresholdSketchFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m deleted file mode 100644 index 439d3119..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.m +++ /dev/null @@ -1,297 +0,0 @@ -#import "GPUImageThresholdedNonMaximumSuppressionFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - - varying highp vec2 topTextureCoordinate; - varying highp vec2 topLeftTextureCoordinate; - varying highp vec2 topRightTextureCoordinate; - - varying highp vec2 bottomTextureCoordinate; - varying highp vec2 bottomLeftTextureCoordinate; - varying highp vec2 bottomRightTextureCoordinate; - - uniform lowp float threshold; - - void main() - { - lowp float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - lowp float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - lowp float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - lowp vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - lowp float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - lowp float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - lowp float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - lowp float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - lowp float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - lowp float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - lowp float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - lowp float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; - finalValue = step(threshold, finalValue); - - gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); -// -// gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); - } -); - -NSString *const kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying highp vec2 textureCoordinate; - varying highp vec2 leftTextureCoordinate; - varying highp vec2 rightTextureCoordinate; - - varying highp vec2 topTextureCoordinate; - varying highp vec2 topLeftTextureCoordinate; - varying highp vec2 topRightTextureCoordinate; - - varying highp vec2 bottomTextureCoordinate; - varying highp vec2 bottomLeftTextureCoordinate; - varying highp vec2 bottomRightTextureCoordinate; - - uniform lowp float threshold; - uniform highp float texelWidth; - uniform highp float texelHeight; - - highp float encodedIntensity(highp vec3 sourceColor) - { - return (sourceColor.b * 256.0 * 256.0 + sourceColor.g * 256.0 + sourceColor.r); - } - - void main() - { - highp float bottomColor = encodedIntensity(texture2D(inputImageTexture, bottomTextureCoordinate).rgb); - highp float bottomLeftColor = encodedIntensity(texture2D(inputImageTexture, bottomLeftTextureCoordinate).rgb); - highp float bottomRightColor = encodedIntensity(texture2D(inputImageTexture, bottomRightTextureCoordinate).rgb); - highp float centerColor = encodedIntensity(texture2D(inputImageTexture, textureCoordinate).rgb); - highp float leftColor = encodedIntensity(texture2D(inputImageTexture, leftTextureCoordinate).rgb); - highp float rightColor = encodedIntensity(texture2D(inputImageTexture, rightTextureCoordinate).rgb); - highp float topColor = encodedIntensity(texture2D(inputImageTexture, topTextureCoordinate).rgb); - highp float topRightColor = encodedIntensity(texture2D(inputImageTexture, topRightTextureCoordinate).rgb); - highp float topLeftColor = encodedIntensity(texture2D(inputImageTexture, topLeftTextureCoordinate).rgb); - - highp float secondStageColor1 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float secondStageColor2 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, -1.0 * texelHeight)).rgb); - highp float secondStageColor3 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 0.0)).rgb); - highp float secondStageColor4 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 1.0 * texelHeight)).rgb); - highp float secondStageColor5 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-2.0 * texelWidth, 2.0 * texelHeight)).rgb); - highp float secondStageColor6 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-1.0 * texelWidth, 2.0 * texelHeight)).rgb); - highp float secondStageColor7 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(0.0, 2.0 * texelHeight)).rgb); - highp float secondStageColor8 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(1.0 * texelWidth, 2.0 * texelHeight)).rgb); - - highp float thirdStageColor1 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(-1.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float thirdStageColor2 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(0.0, -2.0 * texelHeight)).rgb); - highp float thirdStageColor3 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(1.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float thirdStageColor4 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, -2.0 * texelHeight)).rgb); - highp float thirdStageColor5 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, -1.0 * texelHeight)).rgb); - highp float thirdStageColor6 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 0.0)).rgb); - highp float thirdStageColor7 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 1.0 * texelHeight)).rgb); - highp float thirdStageColor8 = encodedIntensity(texture2D(inputImageTexture, textureCoordinate + vec2(2.0 * texelWidth, 2.0 * texelHeight)).rgb); - - // Use a tiebreaker for pixels to the left and immediately above this one - highp float multiplier = 1.0 - step(centerColor, topColor); - multiplier = multiplier * (1.0 - step(centerColor, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor, bottomLeftColor)); - - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor1)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor2)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor3)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor4)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor5)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor6)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor7)); - multiplier = multiplier * (1.0 - step(centerColor, secondStageColor8)); - - highp float maxValue = max(centerColor, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - maxValue = max(maxValue, thirdStageColor1); - maxValue = max(maxValue, thirdStageColor2); - maxValue = max(maxValue, thirdStageColor3); - maxValue = max(maxValue, thirdStageColor4); - maxValue = max(maxValue, thirdStageColor5); - maxValue = max(maxValue, thirdStageColor6); - maxValue = max(maxValue, thirdStageColor7); - maxValue = max(maxValue, thirdStageColor8); - - highp float midValue = centerColor * step(maxValue, centerColor) * multiplier; - highp float finalValue = step(threshold, midValue); - - gl_FragColor = vec4(finalValue * centerColor, topLeftColor, topRightColor, topColor); - } -); -#else -NSString *const kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float threshold; - - void main() - { - float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; - finalValue = step(threshold, finalValue); - - gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); - // - // gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); - } -); - -NSString *const kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform float threshold; - - void main() - { - float bottomColor = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftColor = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightColor = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - vec4 centerColor = texture2D(inputImageTexture, textureCoordinate); - float leftColor = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightColor = texture2D(inputImageTexture, rightTextureCoordinate).r; - float topColor = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightColor = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftColor = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - - // Use a tiebreaker for pixels to the left and immediately above this one - float multiplier = 1.0 - step(centerColor.r, topColor); - multiplier = multiplier * (1.0 - step(centerColor.r, topLeftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, leftColor)); - multiplier = multiplier * (1.0 - step(centerColor.r, bottomLeftColor)); - - float maxValue = max(centerColor.r, bottomColor); - maxValue = max(maxValue, bottomRightColor); - maxValue = max(maxValue, rightColor); - maxValue = max(maxValue, topRightColor); - - float finalValue = centerColor.r * step(maxValue, centerColor.r) * multiplier; - finalValue = step(threshold, finalValue); - - gl_FragColor = vec4(finalValue, finalValue, finalValue, 1.0); - // - // gl_FragColor = vec4((centerColor.rgb * step(maxValue, step(threshold, centerColor.r)) * multiplier), 1.0); - } - ); -#endif - -@implementation GPUImageThresholdedNonMaximumSuppressionFilter - -@synthesize threshold = _threshold; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithPackedColorspace:NO])) - { - return nil; - } - - return self; -} - -- (id)initWithPackedColorspace:(BOOL)inputUsesPackedColorspace; -{ - NSString *shaderString; - if (inputUsesPackedColorspace) - { - shaderString = kGPUImageThresholdedNonMaximumSuppressionPackedColorspaceFragmentShaderString; - } - else - { - shaderString = kGPUImageThresholdedNonMaximumSuppressionFragmentShaderString; - } - - - if (!(self = [super initWithFragmentShaderFromString:shaderString])) - { - return nil; - } - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - self.threshold = 0.9; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m deleted file mode 100755 index e2f632b1..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.m +++ /dev/null @@ -1,126 +0,0 @@ -#import "GPUImageTiltShiftFilter.h" -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImageGaussianBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageTiltShiftFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform highp float topFocusLevel; - uniform highp float bottomFocusLevel; - uniform highp float focusFallOffRate; - - void main() - { - lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - lowp float blurIntensity = 1.0 - smoothstep(topFocusLevel - focusFallOffRate, topFocusLevel, textureCoordinate2.y); - blurIntensity += smoothstep(bottomFocusLevel, bottomFocusLevel + focusFallOffRate, textureCoordinate2.y); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, blurIntensity); - } -); -#else -NSString *const kGPUImageTiltShiftFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float topFocusLevel; - uniform float bottomFocusLevel; - uniform float focusFallOffRate; - - void main() - { - vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - vec4 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2); - - float blurIntensity = 1.0 - smoothstep(topFocusLevel - focusFallOffRate, topFocusLevel, textureCoordinate2.y); - blurIntensity += smoothstep(bottomFocusLevel, bottomFocusLevel + focusFallOffRate, textureCoordinate2.y); - - gl_FragColor = mix(sharpImageColor, blurredImageColor, blurIntensity); - } -); -#endif - -@implementation GPUImageTiltShiftFilter - -@synthesize blurRadiusInPixels; -@synthesize topFocusLevel = _topFocusLevel; -@synthesize bottomFocusLevel = _bottomFocusLevel; -@synthesize focusFallOffRate = _focusFallOffRate; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - tiltShiftFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageTiltShiftFragmentShaderString]; - [self addFilter:tiltShiftFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:tiltShiftFilter atTextureLocation:1]; - - // To prevent double updating of this filter, disable updates from the sharp image side -// self.inputFilterToIgnoreForUpdates = tiltShiftFilter; - - self.initialFilters = [NSArray arrayWithObjects:blurFilter, tiltShiftFilter, nil]; - self.terminalFilter = tiltShiftFilter; - - self.topFocusLevel = 0.4; - self.bottomFocusLevel = 0.6; - self.focusFallOffRate = 0.2; - self.blurRadiusInPixels = 7.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setTopFocusLevel:(CGFloat)newValue; -{ - _topFocusLevel = newValue; - [tiltShiftFilter setFloat:newValue forUniformName:@"topFocusLevel"]; -} - -- (void)setBottomFocusLevel:(CGFloat)newValue; -{ - _bottomFocusLevel = newValue; - [tiltShiftFilter setFloat:newValue forUniformName:@"bottomFocusLevel"]; -} - -- (void)setFocusFallOffRate:(CGFloat)newValue; -{ - _focusFallOffRate = newValue; - [tiltShiftFilter setFloat:newValue forUniformName:@"focusFallOffRate"]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m deleted file mode 100644 index 18a717e0..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.m +++ /dev/null @@ -1,621 +0,0 @@ -#import "GPUImageToneCurveFilter.h" - -#pragma mark - -#pragma mark GPUImageACVFile Helper - -// GPUImageACVFile -// -// ACV File format Parser -// Please refer to http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577411_pgfId-1056330 -// - -@interface GPUImageACVFile : NSObject{ - short version; - short totalCurves; - - NSArray *rgbCompositeCurvePoints; - NSArray *redCurvePoints; - NSArray *greenCurvePoints; - NSArray *blueCurvePoints; -} - -@property(strong,nonatomic) NSArray *rgbCompositeCurvePoints; -@property(strong,nonatomic) NSArray *redCurvePoints; -@property(strong,nonatomic) NSArray *greenCurvePoints; -@property(strong,nonatomic) NSArray *blueCurvePoints; - -- (id) initWithACVFileData:(NSData*)data; - - -unsigned short int16WithBytes(Byte* bytes); -@end - -@implementation GPUImageACVFile - -@synthesize rgbCompositeCurvePoints, redCurvePoints, greenCurvePoints, blueCurvePoints; - -- (id) initWithACVFileData:(NSData *)data { - self = [super init]; - if (self != nil) - { - if (data.length == 0) - { - NSLog(@"failed to init ACVFile with data:%@", data); - - return self; - } - - Byte* rawBytes = (Byte*) [data bytes]; - version = int16WithBytes(rawBytes); - rawBytes+=2; - - totalCurves = int16WithBytes(rawBytes); - rawBytes+=2; - - NSMutableArray *curves = [NSMutableArray new]; - - float pointRate = (1.0 / 255); - // The following is the data for each curve specified by count above - for (NSInteger x = 0; x 0) - { - // Sort the array. - NSArray *sortedPoints = [points sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - float x1 = [(NSValue *)a CGPointValue].x; - float x2 = [(NSValue *)b CGPointValue].x; -#else - float x1 = [(NSValue *)a pointValue].x; - float x2 = [(NSValue *)b pointValue].x; -#endif - return x1 > x2; - }]; - - // Convert from (0, 1) to (0, 255). - NSMutableArray *convertedPoints = [NSMutableArray arrayWithCapacity:[sortedPoints count]]; - for (int i=0; i<[points count]; i++){ -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint point = [[sortedPoints objectAtIndex:i] CGPointValue]; -#else - NSPoint point = [[sortedPoints objectAtIndex:i] pointValue]; -#endif - point.x = point.x * 255; - point.y = point.y * 255; - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [convertedPoints addObject:[NSValue valueWithCGPoint:point]]; -#else - [convertedPoints addObject:[NSValue valueWithPoint:point]]; -#endif - } - - - NSMutableArray *splinePoints = [self splineCurve:convertedPoints]; - - // If we have a first point like (0.3, 0) we'll be missing some points at the beginning - // that should be 0. -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint firstSplinePoint = [[splinePoints objectAtIndex:0] CGPointValue]; -#else - NSPoint firstSplinePoint = [[splinePoints objectAtIndex:0] pointValue]; -#endif - - if (firstSplinePoint.x > 0) { - for (int i=firstSplinePoint.x; i >= 0; i--) { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint newCGPoint = CGPointMake(i, 0); - [splinePoints insertObject:[NSValue valueWithCGPoint:newCGPoint] atIndex:0]; -#else - NSPoint newNSPoint = NSMakePoint(i, 0); - [splinePoints insertObject:[NSValue valueWithPoint:newNSPoint] atIndex:0]; -#endif - } - } - - // Insert points similarly at the end, if necessary. -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint lastSplinePoint = [[splinePoints lastObject] CGPointValue]; - - if (lastSplinePoint.x < 255) { - for (int i = lastSplinePoint.x + 1; i <= 255; i++) { - CGPoint newCGPoint = CGPointMake(i, 255); - [splinePoints addObject:[NSValue valueWithCGPoint:newCGPoint]]; - } - } -#else - NSPoint lastSplinePoint = [[splinePoints lastObject] pointValue]; - - if (lastSplinePoint.x < 255) { - for (int i = lastSplinePoint.x + 1; i <= 255; i++) { - NSPoint newNSPoint = NSMakePoint(i, 255); - [splinePoints addObject:[NSValue valueWithPoint:newNSPoint]]; - } - } -#endif - - // Prepare the spline points. - NSMutableArray *preparedSplinePoints = [NSMutableArray arrayWithCapacity:[splinePoints count]]; - for (int i=0; i<[splinePoints count]; i++) - { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - CGPoint newPoint = [[splinePoints objectAtIndex:i] CGPointValue]; -#else - NSPoint newPoint = [[splinePoints objectAtIndex:i] pointValue]; -#endif - CGPoint origPoint = CGPointMake(newPoint.x, newPoint.x); - - float distance = sqrt(pow((origPoint.x - newPoint.x), 2.0) + pow((origPoint.y - newPoint.y), 2.0)); - - if (origPoint.y > newPoint.y) - { - distance = -distance; - } - - [preparedSplinePoints addObject:[NSNumber numberWithFloat:distance]]; - } - - return preparedSplinePoints; - } - - return nil; -} - - -- (NSMutableArray *)splineCurve:(NSArray *)points -{ - NSMutableArray *sdA = [self secondDerivative:points]; - - // [points count] is equal to [sdA count] - NSInteger n = [sdA count]; - if (n < 1) - { - return nil; - } - double sd[n]; - - // From NSMutableArray to sd[n]; - for (int i=0; i 255.0) - { - y = 255.0; - } - else if (y < 0.0) - { - y = 0.0; - } -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - [output addObject:[NSValue valueWithCGPoint:CGPointMake(x, y)]]; -#else - [output addObject:[NSValue valueWithPoint:NSMakePoint(x, y)]]; -#endif - } - } - - // The above always misses the last point because the last point is the last next, so we approach but don't equal it. - [output addObject:[points lastObject]]; - return output; -} - -- (NSMutableArray *)secondDerivative:(NSArray *)points -{ - const NSInteger n = [points count]; - if ((n <= 0) || (n == 1)) - { - return nil; - } - - double matrix[n][3]; - double result[n]; - matrix[0][1]=1; - // What about matrix[0][1] and matrix[0][0]? Assuming 0 for now (Brad L.) - matrix[0][0]=0; - matrix[0][2]=0; - - for(int i=1;idown) - for(int i=1;iup) - for(NSInteger i=n-2;i>=0;i--) - { - double k = matrix[i][2]/matrix[i+1][1]; - matrix[i][1] -= k*matrix[i+1][0]; - matrix[i][2] = 0; - result[i] -= k*result[i+1]; - } - - double y2[n]; - for(int i=0;i= 256) && ([_greenCurve count] >= 256) && ([_blueCurve count] >= 256) && ([_rgbCompositeCurve count] >= 256)) - { - for (unsigned int currentCurveIndex = 0; currentCurveIndex < 256; currentCurveIndex++) - { - // BGRA for upload to texture - GLubyte b = fmin(fmax(currentCurveIndex + [[_blueCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4] = fmin(fmax(b + [[_rgbCompositeCurve objectAtIndex:b] floatValue], 0), 255); - GLubyte g = fmin(fmax(currentCurveIndex + [[_greenCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4 + 1] = fmin(fmax(g + [[_rgbCompositeCurve objectAtIndex:g] floatValue], 0), 255); - GLubyte r = fmin(fmax(currentCurveIndex + [[_redCurve objectAtIndex:currentCurveIndex] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4 + 2] = fmin(fmax(r + [[_rgbCompositeCurve objectAtIndex:r] floatValue], 0), 255); - toneCurveByteArray[currentCurveIndex * 4 + 3] = 255; - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256 /*width*/, 1 /*height*/, 0, GL_BGRA, GL_UNSIGNED_BYTE, toneCurveByteArray); - } - }); -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, toneCurveTexture); - glUniform1i(toneCurveTextureUniform, 3); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [firstInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setRGBControlPoints:(NSArray *)points -{ - _redControlPoints = [points copy]; - _redCurve = [self getPreparedSplineCurve:_redControlPoints]; - - _greenControlPoints = [points copy]; - _greenCurve = [self getPreparedSplineCurve:_greenControlPoints]; - - _blueControlPoints = [points copy]; - _blueCurve = [self getPreparedSplineCurve:_blueControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setRgbCompositeControlPoints:(NSArray *)newValue -{ - _rgbCompositeControlPoints = [newValue copy]; - _rgbCompositeCurve = [self getPreparedSplineCurve:_rgbCompositeControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setRedControlPoints:(NSArray *)newValue; -{ - _redControlPoints = [newValue copy]; - _redCurve = [self getPreparedSplineCurve:_redControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setGreenControlPoints:(NSArray *)newValue -{ - _greenControlPoints = [newValue copy]; - _greenCurve = [self getPreparedSplineCurve:_greenControlPoints]; - - [self updateToneCurveTexture]; -} - - -- (void)setBlueControlPoints:(NSArray *)newValue -{ - _blueControlPoints = [newValue copy]; - _blueCurve = [self getPreparedSplineCurve:_blueControlPoints]; - - [self updateToneCurveTexture]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m deleted file mode 100755 index e8ff104e..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.m +++ /dev/null @@ -1,149 +0,0 @@ -#import "GPUImageToonFilter.h" -#import "GPUImageSobelEdgeDetectionFilter.h" -#import "GPUImage3x3ConvolutionFilter.h" - -// Code from "Graphics Shaders: Theory and Practice" by M. Bailey and S. Cunningham -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp float intensity; - uniform highp float threshold; - uniform highp float quantizationLevels; - - const highp vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)); - - vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels; - - float thresholdTest = 1.0 - step(threshold, mag); - - gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a); - } -); -#else -NSString *const kGPUImageToonFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float intensity; - uniform float threshold; - uniform float quantizationLevels; - - const vec3 W = vec3(0.2125, 0.7154, 0.0721); - - void main() - { - vec4 textureColor = texture2D(inputImageTexture, textureCoordinate); - - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float h = -topLeftIntensity - 2.0 * topIntensity - topRightIntensity + bottomLeftIntensity + 2.0 * bottomIntensity + bottomRightIntensity; - float v = -bottomLeftIntensity - 2.0 * leftIntensity - topLeftIntensity + bottomRightIntensity + 2.0 * rightIntensity + topRightIntensity; - - float mag = length(vec2(h, v)); - - vec3 posterizedImageColor = floor((textureColor.rgb * quantizationLevels) + 0.5) / quantizationLevels; - - float thresholdTest = 1.0 - step(threshold, mag); - - gl_FragColor = vec4(posterizedImageColor * thresholdTest, textureColor.a); - } -); -#endif - -@implementation GPUImageToonFilter - -@synthesize threshold = _threshold; -@synthesize quantizationLevels = _quantizationLevels; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageToonFragmentShaderString])) - { - return nil; - } - - hasOverriddenImageSizeFactor = NO; - - thresholdUniform = [filterProgram uniformIndex:@"threshold"]; - quantizationLevelsUniform = [filterProgram uniformIndex:@"quantizationLevels"]; - - self.threshold = 0.2; - self.quantizationLevels = 10.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setThreshold:(CGFloat)newValue; -{ - _threshold = newValue; - - [self setFloat:_threshold forUniform:thresholdUniform program:filterProgram]; -} - -- (void)setQuantizationLevels:(CGFloat)newValue; -{ - _quantizationLevels = newValue; - - [self setFloat:_quantizationLevels forUniform:quantizationLevelsUniform program:filterProgram]; -} - - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m deleted file mode 100755 index 17933092..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.m +++ /dev/null @@ -1,260 +0,0 @@ -#import "GPUImageTransformFilter.h" - -NSString *const kGPUImageTransformVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - - uniform mat4 transformMatrix; - uniform mat4 orthographicMatrix; - - varying vec2 textureCoordinate; - - void main() - { - gl_Position = transformMatrix * vec4(position.xyz, 1.0) * orthographicMatrix; - textureCoordinate = inputTextureCoordinate.xy; - } -); - -@implementation GPUImageTransformFilter - -@synthesize affineTransform; -@synthesize transform3D = _transform3D; -@synthesize ignoreAspectRatio = _ignoreAspectRatio; -@synthesize anchorTopLeft = _anchorTopLeft; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageTransformVertexShaderString fragmentShaderFromString:kGPUImagePassthroughFragmentShaderString])) - { - return nil; - } - - transformMatrixUniform = [filterProgram uniformIndex:@"transformMatrix"]; - orthographicMatrixUniform = [filterProgram uniformIndex:@"orthographicMatrix"]; - - self.transform3D = CATransform3DIdentity; - - return self; -} - -#pragma mark - -#pragma mark Conversion from matrix formats - -- (void)loadOrthoMatrix:(GLfloat *)matrix left:(GLfloat)left right:(GLfloat)right bottom:(GLfloat)bottom top:(GLfloat)top near:(GLfloat)near far:(GLfloat)far; -{ - GLfloat r_l = right - left; - GLfloat t_b = top - bottom; - GLfloat f_n = far - near; - GLfloat tx = - (right + left) / (right - left); - GLfloat ty = - (top + bottom) / (top - bottom); - GLfloat tz = - (far + near) / (far - near); - - float scale = 2.0f; - if (_anchorTopLeft) - { - scale = 4.0f; - tx=-1.0f; - ty=-1.0f; - } - - matrix[0] = scale / r_l; - matrix[1] = 0.0f; - matrix[2] = 0.0f; - matrix[3] = tx; - - matrix[4] = 0.0f; - matrix[5] = scale / t_b; - matrix[6] = 0.0f; - matrix[7] = ty; - - matrix[8] = 0.0f; - matrix[9] = 0.0f; - matrix[10] = scale / f_n; - matrix[11] = tz; - - matrix[12] = 0.0f; - matrix[13] = 0.0f; - matrix[14] = 0.0f; - matrix[15] = 1.0f; -} - -//- (void)convert3DTransform:(CATransform3D *)transform3D toMatrix:(GLfloat *)matrix; -//{ -// // struct CATransform3D -// // { -// // CGFloat m11, m12, m13, m14; -// // CGFloat m21, m22, m23, m24; -// // CGFloat m31, m32, m33, m34; -// // CGFloat m41, m42, m43, m44; -// // }; -// -// matrix[0] = (GLfloat)transform3D->m11; -// matrix[1] = (GLfloat)transform3D->m12; -// matrix[2] = (GLfloat)transform3D->m13; -// matrix[3] = (GLfloat)transform3D->m14; -// matrix[4] = (GLfloat)transform3D->m21; -// matrix[5] = (GLfloat)transform3D->m22; -// matrix[6] = (GLfloat)transform3D->m23; -// matrix[7] = (GLfloat)transform3D->m24; -// matrix[8] = (GLfloat)transform3D->m31; -// matrix[9] = (GLfloat)transform3D->m32; -// matrix[10] = (GLfloat)transform3D->m33; -// matrix[11] = (GLfloat)transform3D->m34; -// matrix[12] = (GLfloat)transform3D->m41; -// matrix[13] = (GLfloat)transform3D->m42; -// matrix[14] = (GLfloat)transform3D->m43; -// matrix[15] = (GLfloat)transform3D->m44; -//} - -- (void)convert3DTransform:(CATransform3D *)transform3D toMatrix:(GPUMatrix4x4 *)matrix; -{ - // struct CATransform3D - // { - // CGFloat m11, m12, m13, m14; - // CGFloat m21, m22, m23, m24; - // CGFloat m31, m32, m33, m34; - // CGFloat m41, m42, m43, m44; - // }; - - GLfloat *mappedMatrix = (GLfloat *)matrix; - - mappedMatrix[0] = (GLfloat)transform3D->m11; - mappedMatrix[1] = (GLfloat)transform3D->m12; - mappedMatrix[2] = (GLfloat)transform3D->m13; - mappedMatrix[3] = (GLfloat)transform3D->m14; - mappedMatrix[4] = (GLfloat)transform3D->m21; - mappedMatrix[5] = (GLfloat)transform3D->m22; - mappedMatrix[6] = (GLfloat)transform3D->m23; - mappedMatrix[7] = (GLfloat)transform3D->m24; - mappedMatrix[8] = (GLfloat)transform3D->m31; - mappedMatrix[9] = (GLfloat)transform3D->m32; - mappedMatrix[10] = (GLfloat)transform3D->m33; - mappedMatrix[11] = (GLfloat)transform3D->m34; - mappedMatrix[12] = (GLfloat)transform3D->m41; - mappedMatrix[13] = (GLfloat)transform3D->m42; - mappedMatrix[14] = (GLfloat)transform3D->m43; - mappedMatrix[15] = (GLfloat)transform3D->m44; -} - -#pragma mark - -#pragma mark GPUImageInput - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - CGSize currentFBOSize = [self sizeOfFBO]; - CGFloat normalizedHeight = currentFBOSize.height / currentFBOSize.width; - - GLfloat adjustedVertices[] = { - -1.0f, -normalizedHeight, - 1.0f, -normalizedHeight, - -1.0f, normalizedHeight, - 1.0f, normalizedHeight, - }; - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - GLfloat adjustedVerticesAnchorTL[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, normalizedHeight, - 1.0f, normalizedHeight, - }; - - static const GLfloat squareVerticesAnchorTL[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - if (_ignoreAspectRatio) - { - if (_anchorTopLeft) - { - [self renderToTextureWithVertices:squareVerticesAnchorTL textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - else - { - [self renderToTextureWithVertices:squareVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - } - else - { - if (_anchorTopLeft) - { - [self renderToTextureWithVertices:adjustedVerticesAnchorTL textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - else - { - [self renderToTextureWithVertices:adjustedVertices textureCoordinates:[[self class] textureCoordinatesForRotation:inputRotation]]; - } - } - - [self informTargetsAboutNewFrameAtTime:frameTime]; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!_ignoreAspectRatio) - { - [self loadOrthoMatrix:(GLfloat *)&orthographicMatrix left:-1.0 right:1.0 bottom:(-1.0 * filterFrameSize.height / filterFrameSize.width) top:(1.0 * filterFrameSize.height / filterFrameSize.width) near:-1.0 far:1.0]; - // [self loadOrthoMatrix:orthographicMatrix left:-1.0 right:1.0 bottom:(-1.0 * (GLfloat)backingHeight / (GLfloat)backingWidth) top:(1.0 * (GLfloat)backingHeight / (GLfloat)backingWidth) near:-2.0 far:2.0]; - - [self setMatrix4f:orthographicMatrix forUniform:orthographicMatrixUniform program:filterProgram]; - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setAffineTransform:(CGAffineTransform)newValue; -{ - self.transform3D = CATransform3DMakeAffineTransform(newValue); -} - -- (CGAffineTransform)affineTransform; -{ - return CATransform3DGetAffineTransform(self.transform3D); -} - -- (void)setTransform3D:(CATransform3D)newValue; -{ - _transform3D = newValue; - - GPUMatrix4x4 temporaryMatrix; - - [self convert3DTransform:&_transform3D toMatrix:&temporaryMatrix]; - [self setMatrix4f:temporaryMatrix forUniform:transformMatrixUniform program:filterProgram]; -} - -- (void)setIgnoreAspectRatio:(BOOL)newValue; -{ - _ignoreAspectRatio = newValue; - - if (_ignoreAspectRatio) - { - [self loadOrthoMatrix:(GLfloat *)&orthographicMatrix left:-1.0 right:1.0 bottom:-1.0 top:1.0 near:-1.0 far:1.0]; - [self setMatrix4f:orthographicMatrix forUniform:orthographicMatrixUniform program:filterProgram]; - } - else - { - [self setupFilterForSize:[self sizeOfFBO]]; - } -} - -- (void)setAnchorTopLeft:(BOOL)newValue -{ - _anchorTopLeft = newValue; - [self setIgnoreAspectRatio:_ignoreAspectRatio]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m deleted file mode 100644 index aa338f81..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.m +++ /dev/null @@ -1,108 +0,0 @@ -#import "GPUImageTwoInputCrossTextureSamplingFilter.h" - -NSString *const kGPUImageTwoInputNearbyTexelSamplingVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - - uniform float texelWidth; - uniform float texelHeight; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - varying vec2 topTextureCoordinate; - varying vec2 bottomTextureCoordinate; - - varying vec2 textureCoordinate2; - varying vec2 leftTextureCoordinate2; - varying vec2 rightTextureCoordinate2; - varying vec2 topTextureCoordinate2; - varying vec2 bottomTextureCoordinate2; - - void main() - { - gl_Position = position; - - vec2 widthStep = vec2(texelWidth, 0.0); - vec2 heightStep = vec2(0.0, texelHeight); - - textureCoordinate = inputTextureCoordinate.xy; - leftTextureCoordinate = inputTextureCoordinate.xy - widthStep; - rightTextureCoordinate = inputTextureCoordinate.xy + widthStep; - topTextureCoordinate = inputTextureCoordinate.xy - heightStep; - bottomTextureCoordinate = inputTextureCoordinate.xy + heightStep; - - textureCoordinate2 = inputTextureCoordinate2.xy; - leftTextureCoordinate2 = inputTextureCoordinate2.xy - widthStep; - rightTextureCoordinate2 = inputTextureCoordinate2.xy + widthStep; - topTextureCoordinate2 = inputTextureCoordinate2.xy - heightStep; - bottomTextureCoordinate2 = inputTextureCoordinate2.xy + heightStep; - } -); - -@implementation GPUImageTwoInputCrossTextureSamplingFilter - -@synthesize texelWidth = _texelWidth; -@synthesize texelHeight = _texelHeight; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:kGPUImageTwoInputNearbyTexelSamplingVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - texelWidthUniform = [filterProgram uniformIndex:@"texelWidth"]; - texelHeightUniform = [filterProgram uniformIndex:@"texelHeight"]; - - return self; -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - if (!hasOverriddenImageSizeFactor) - { - _texelWidth = 1.0 / filterFrameSize.width; - _texelHeight = 1.0 / filterFrameSize.height; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:filterProgram]; - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - glUniform1f(texelWidthUniform, _texelHeight); - glUniform1f(texelHeightUniform, _texelWidth); - } - else - { - glUniform1f(texelWidthUniform, _texelWidth); - glUniform1f(texelHeightUniform, _texelHeight); - } - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTexelWidth:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelWidth = newValue; - - [self setFloat:_texelWidth forUniform:texelWidthUniform program:filterProgram]; -} - -- (void)setTexelHeight:(CGFloat)newValue; -{ - hasOverriddenImageSizeFactor = YES; - _texelHeight = newValue; - - [self setFloat:_texelHeight forUniform:texelHeightUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m deleted file mode 100644 index cf318737..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.m +++ /dev/null @@ -1,264 +0,0 @@ -#import "GPUImageTwoInputFilter.h" - -NSString *const kGPUImageTwoInputTextureVertexShaderString = SHADER_STRING -( - attribute vec4 position; - attribute vec4 inputTextureCoordinate; - attribute vec4 inputTextureCoordinate2; - - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - void main() - { - gl_Position = position; - textureCoordinate = inputTextureCoordinate.xy; - textureCoordinate2 = inputTextureCoordinate2.xy; - } -); - - -@implementation GPUImageTwoInputFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [self initWithVertexShaderFromString:kGPUImageTwoInputTextureVertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - return self; -} - -- (id)initWithVertexShaderFromString:(NSString *)vertexShaderString fragmentShaderFromString:(NSString *)fragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:vertexShaderString fragmentShaderFromString:fragmentShaderString])) - { - return nil; - } - - inputRotation2 = kGPUImageNoRotation; - - hasSetFirstTexture = NO; - - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - firstFrameWasVideo = NO; - secondFrameWasVideo = NO; - firstFrameCheckDisabled = NO; - secondFrameCheckDisabled = NO; - - firstFrameTime = kCMTimeInvalid; - secondFrameTime = kCMTimeInvalid; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - filterSecondTextureCoordinateAttribute = [filterProgram attributeIndex:@"inputTextureCoordinate2"]; - - filterInputTextureUniform2 = [filterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - glEnableVertexAttribArray(filterSecondTextureCoordinateAttribute); - }); - - return self; -} - -- (void)initializeAttributes; -{ - [super initializeAttributes]; - [filterProgram addAttribute:@"inputTextureCoordinate2"]; -} - -- (void)disableFirstFrameCheck; -{ - firstFrameCheckDisabled = YES; -} - -- (void)disableSecondFrameCheck; -{ - secondFrameCheckDisabled = YES; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - if (usingNextFrameForImageCapture) - { - [outputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform, 2); - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [secondInputFramebuffer texture]); - glUniform1i(filterInputTextureUniform2, 3); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - glVertexAttribPointer(filterSecondTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:inputRotation2]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - [secondInputFramebuffer unlock]; - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -#pragma mark - -#pragma mark GPUImageInput - -- (NSInteger)nextAvailableTextureIndex; -{ - if (hasSetFirstTexture) - { - return 1; - } - else - { - return 0; - } -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - firstInputFramebuffer = newInputFramebuffer; - hasSetFirstTexture = YES; - [firstInputFramebuffer lock]; - } - else - { - secondInputFramebuffer = newInputFramebuffer; - [secondInputFramebuffer lock]; - } -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - [super setInputSize:newSize atIndex:textureIndex]; - - if (CGSizeEqualToSize(newSize, CGSizeZero)) - { - hasSetFirstTexture = NO; - } - } -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - if (textureIndex == 0) - { - inputRotation = newInputRotation; - } - else - { - inputRotation2 = newInputRotation; - } -} - -- (CGSize)rotatedSize:(CGSize)sizeToRotate forIndex:(NSInteger)textureIndex; -{ - CGSize rotatedSize = sizeToRotate; - - GPUImageRotationMode rotationToCheck; - if (textureIndex == 0) - { - rotationToCheck = inputRotation; - } - else - { - rotationToCheck = inputRotation2; - } - - if (GPUImageRotationSwapsWidthAndHeight(rotationToCheck)) - { - rotatedSize.width = sizeToRotate.height; - rotatedSize.height = sizeToRotate.width; - } - - return rotatedSize; -} - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - // You can set up infinite update loops, so this helps to short circuit them - if (hasReceivedFirstFrame && hasReceivedSecondFrame) - { - return; - } - - BOOL updatedMovieFrameOppositeStillImage = NO; - - if (textureIndex == 0) - { - hasReceivedFirstFrame = YES; - firstFrameTime = frameTime; - if (secondFrameCheckDisabled) - { - hasReceivedSecondFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(secondFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - else - { - hasReceivedSecondFrame = YES; - secondFrameTime = frameTime; - if (firstFrameCheckDisabled) - { - hasReceivedFirstFrame = YES; - } - - if (!CMTIME_IS_INDEFINITE(frameTime)) - { - if CMTIME_IS_INDEFINITE(firstFrameTime) - { - updatedMovieFrameOppositeStillImage = YES; - } - } - } - - // || (hasReceivedFirstFrame && secondFrameCheckDisabled) || (hasReceivedSecondFrame && firstFrameCheckDisabled) - if ((hasReceivedFirstFrame && hasReceivedSecondFrame) || updatedMovieFrameOppositeStillImage) - { - CMTime passOnFrameTime = (!CMTIME_IS_INDEFINITE(firstFrameTime)) ? firstFrameTime : secondFrameTime; - [super newFrameReadyAtTime:passOnFrameTime atIndex:0]; // Bugfix when trying to record: always use time from first input (unless indefinite, in which case use the second input) - hasReceivedFirstFrame = NO; - hasReceivedSecondFrame = NO; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m deleted file mode 100755 index 9eb292b4..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.m +++ /dev/null @@ -1,201 +0,0 @@ -#import "GPUImageTwoPassFilter.h" - -@implementation GPUImageTwoPassFilter - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; -{ - if (!(self = [super initWithVertexShaderFromString:firstStageVertexShaderString fragmentShaderFromString:firstStageFragmentShaderString])) - { - return nil; - } - - secondProgramUniformStateRestorationBlocks = [NSMutableDictionary dictionaryWithCapacity:10]; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - secondFilterProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:secondStageVertexShaderString fragmentShaderString:secondStageFragmentShaderString]; - - if (!secondFilterProgram.initialized) - { - [self initializeSecondaryAttributes]; - - if (![secondFilterProgram link]) - { - NSString *progLog = [secondFilterProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [secondFilterProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [secondFilterProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - secondFilterProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - secondFilterPositionAttribute = [secondFilterProgram attributeIndex:@"position"]; - secondFilterTextureCoordinateAttribute = [secondFilterProgram attributeIndex:@"inputTextureCoordinate"]; - secondFilterInputTextureUniform = [secondFilterProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputImageTexture" for the fragment shader - secondFilterInputTextureUniform2 = [secondFilterProgram uniformIndex:@"inputImageTexture2"]; // This does assume a name of "inputImageTexture2" for second input texture in the fragment shader - - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - - glEnableVertexAttribArray(secondFilterPositionAttribute); - glEnableVertexAttribArray(secondFilterTextureCoordinateAttribute); - }); - - return self; -} - -- (id)initWithFirstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString; -{ - if (!(self = [self initWithFirstStageVertexShaderFromString:kGPUImageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:kGPUImageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) - { - return nil; - } - - return self; -} - -- (void)initializeSecondaryAttributes; -{ - [secondFilterProgram addAttribute:@"position"]; - [secondFilterProgram addAttribute:@"inputTextureCoordinate"]; -} - -#pragma mark - -#pragma mark Managing targets - -- (GPUImageFramebuffer *)framebufferForOutput; -{ - return secondOutputFramebuffer; -} - -- (void)removeOutputFramebuffer; -{ - secondOutputFramebuffer = nil; -} - -#pragma mark - -#pragma mark Rendering - -- (void)renderToTextureWithVertices:(const GLfloat *)vertices textureCoordinates:(const GLfloat *)textureCoordinates; -{ - if (self.preventRendering) - { - [firstInputFramebuffer unlock]; - return; - } - - [GPUImageContext setActiveShaderProgram:filterProgram]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - [self setUniformsForProgramAtIndex:0]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]); - - glUniform1i(filterInputTextureUniform, 2); - - glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [firstInputFramebuffer unlock]; - firstInputFramebuffer = nil; - - // This assumes that any two-pass filter that says it desires monochrome input is using the first pass for a luminance conversion, which can be dropped -// if (!currentlyReceivingMonochromeInput) -// { - // Run the first stage of the two-pass filter -// [super renderToTextureWithVertices:vertices textureCoordinates:textureCoordinates]; -// } - - // Run the second stage of the two-pass filter - secondOutputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:[self sizeOfFBO] textureOptions:self.outputTextureOptions onlyTexture:NO]; - [secondOutputFramebuffer activateFramebuffer]; - [GPUImageContext setActiveShaderProgram:secondFilterProgram]; - if (usingNextFrameForImageCapture) - { - [secondOutputFramebuffer lock]; - } - - [self setUniformsForProgramAtIndex:1]; - - glActiveTexture(GL_TEXTURE3); - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); - - // TODO: Re-enable this monochrome optimization -// if (!currentlyReceivingMonochromeInput) -// { -// glActiveTexture(GL_TEXTURE3); -// glBindTexture(GL_TEXTURE_2D, outputTexture); -// glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [[self class] textureCoordinatesForRotation:kGPUImageNoRotation]); -// } -// else -// { -// glActiveTexture(GL_TEXTURE3); -// glBindTexture(GL_TEXTURE_2D, sourceTexture); -// glVertexAttribPointer(secondFilterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); -// } - - glUniform1i(secondFilterInputTextureUniform, 3); - - glVertexAttribPointer(secondFilterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - [outputFramebuffer unlock]; - outputFramebuffer = nil; - - if (usingNextFrameForImageCapture) - { - dispatch_semaphore_signal(imageCaptureSemaphore); - } -} - -- (void)setAndExecuteUniformStateCallbackAtIndex:(GLint)uniform forProgram:(GLProgram *)shaderProgram toBlock:(dispatch_block_t)uniformStateBlock; -{ -// TODO: Deal with the fact that two-pass filters may have the same shader program identifier - if (shaderProgram == filterProgram) - { - [uniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; - } - else - { - [secondProgramUniformStateRestorationBlocks setObject:[uniformStateBlock copy] forKey:[NSNumber numberWithInt:uniform]]; - } - uniformStateBlock(); -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - if (programIndex == 0) - { - [uniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ - dispatch_block_t currentBlock = obj; - currentBlock(); - }]; - } - else - { - [secondProgramUniformStateRestorationBlocks enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ - dispatch_block_t currentBlock = obj; - currentBlock(); - }]; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m deleted file mode 100644 index b6a2ec58..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.m +++ /dev/null @@ -1,85 +0,0 @@ -#import "GPUImageTwoPassTextureSamplingFilter.h" - -@implementation GPUImageTwoPassTextureSamplingFilter - -@synthesize verticalTexelSpacing = _verticalTexelSpacing; -@synthesize horizontalTexelSpacing = _horizontalTexelSpacing; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithFirstStageVertexShaderFromString:(NSString *)firstStageVertexShaderString firstStageFragmentShaderFromString:(NSString *)firstStageFragmentShaderString secondStageVertexShaderFromString:(NSString *)secondStageVertexShaderString secondStageFragmentShaderFromString:(NSString *)secondStageFragmentShaderString -{ - if (!(self = [super initWithFirstStageVertexShaderFromString:firstStageVertexShaderString firstStageFragmentShaderFromString:firstStageFragmentShaderString secondStageVertexShaderFromString:secondStageVertexShaderString secondStageFragmentShaderFromString:secondStageFragmentShaderString])) - { - return nil; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - verticalPassTexelWidthOffsetUniform = [filterProgram uniformIndex:@"texelWidthOffset"]; - verticalPassTexelHeightOffsetUniform = [filterProgram uniformIndex:@"texelHeightOffset"]; - - horizontalPassTexelWidthOffsetUniform = [secondFilterProgram uniformIndex:@"texelWidthOffset"]; - horizontalPassTexelHeightOffsetUniform = [secondFilterProgram uniformIndex:@"texelHeightOffset"]; - }); - - self.verticalTexelSpacing = 1.0; - self.horizontalTexelSpacing = 1.0; - - return self; -} - -- (void)setUniformsForProgramAtIndex:(NSUInteger)programIndex; -{ - [super setUniformsForProgramAtIndex:programIndex]; - - if (programIndex == 0) - { - glUniform1f(verticalPassTexelWidthOffsetUniform, verticalPassTexelWidthOffset); - glUniform1f(verticalPassTexelHeightOffsetUniform, verticalPassTexelHeightOffset); - } - else - { - glUniform1f(horizontalPassTexelWidthOffsetUniform, horizontalPassTexelWidthOffset); - glUniform1f(horizontalPassTexelHeightOffsetUniform, horizontalPassTexelHeightOffset); - } -} - -- (void)setupFilterForSize:(CGSize)filterFrameSize; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - // The first pass through the framebuffer may rotate the inbound image, so need to account for that by changing up the kernel ordering for that pass - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - verticalPassTexelWidthOffset = _verticalTexelSpacing / filterFrameSize.height; - verticalPassTexelHeightOffset = 0.0; - } - else - { - verticalPassTexelWidthOffset = 0.0; - verticalPassTexelHeightOffset = _verticalTexelSpacing / filterFrameSize.height; - } - - horizontalPassTexelWidthOffset = _horizontalTexelSpacing / filterFrameSize.width; - horizontalPassTexelHeightOffset = 0.0; - }); -} - -#pragma mark - -#pragma mark Accessors - -- (void)setVerticalTexelSpacing:(CGFloat)newValue; -{ - _verticalTexelSpacing = newValue; - [self setupFilterForSize:[self sizeOfFBO]]; -} - -- (void)setHorizontalTexelSpacing:(CGFloat)newValue; -{ - _horizontalTexelSpacing = newValue; - [self setupFilterForSize:[self sizeOfFBO]]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m b/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m deleted file mode 100644 index 22c653b1..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.m +++ /dev/null @@ -1,124 +0,0 @@ -#import "GPUImageUIElement.h" - -@interface GPUImageUIElement () -{ - UIView *view; - CALayer *layer; - - CGSize previousLayerSizeInPixels; - CMTime time; - NSTimeInterval actualTimeOfLastUpdate; -} - -@end - -@implementation GPUImageUIElement - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithView:(UIView *)inputView; -{ - if (!(self = [super init])) - { - return nil; - } - - view = inputView; - layer = inputView.layer; - - previousLayerSizeInPixels = CGSizeZero; - [self update]; - - return self; -} - -- (id)initWithLayer:(CALayer *)inputLayer; -{ - if (!(self = [super init])) - { - return nil; - } - - view = nil; - layer = inputLayer; - - previousLayerSizeInPixels = CGSizeZero; - [self update]; - - return self; -} - -#pragma mark - -#pragma mark Layer management - -- (CGSize)layerSizeInPixels; -{ - CGSize pointSize = layer.bounds.size; - return CGSizeMake(layer.contentsScale * pointSize.width, layer.contentsScale * pointSize.height); -} - -- (void)update; -{ - [self updateWithTimestamp:kCMTimeIndefinite]; -} - -- (void)updateUsingCurrentTime; -{ - if(CMTIME_IS_INVALID(time)) { - time = CMTimeMakeWithSeconds(0, 600); - actualTimeOfLastUpdate = [NSDate timeIntervalSinceReferenceDate]; - } else { - NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]; - NSTimeInterval diff = now - actualTimeOfLastUpdate; - time = CMTimeAdd(time, CMTimeMakeWithSeconds(diff, 600)); - actualTimeOfLastUpdate = now; - } - - [self updateWithTimestamp:time]; -} - -- (void)updateWithTimestamp:(CMTime)frameTime; -{ - [GPUImageContext useImageProcessingContext]; - - CGSize layerPixelSize = [self layerSizeInPixels]; - - GLubyte *imageData = (GLubyte *) calloc(1, (int)layerPixelSize.width * (int)layerPixelSize.height * 4); - - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - CGContextRef imageContext = CGBitmapContextCreate(imageData, (int)layerPixelSize.width, (int)layerPixelSize.height, 8, (int)layerPixelSize.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - // CGContextRotateCTM(imageContext, M_PI_2); - CGContextTranslateCTM(imageContext, 0.0f, layerPixelSize.height); - CGContextScaleCTM(imageContext, layer.contentsScale, -layer.contentsScale); - // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html - - [layer renderInContext:imageContext]; - - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - - // TODO: This may not work - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:layerPixelSize textureOptions:self.outputTextureOptions onlyTexture:YES]; - [outputFramebuffer disableReferenceCounting]; // Add this line, because GPUImageTwoInputFilter.m frametime updatedMovieFrameOppositeStillImage is YES, but the secondbuffer not lock - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - // no need to use self.outputTextureOptions here, we always need these texture options - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)layerPixelSize.width, (int)layerPixelSize.height, 0, GL_BGRA, GL_UNSIGNED_BYTE, imageData); - - free(imageData); - for (id currentTarget in targets) - { - if (currentTarget != self.targetToIgnoreForUpdates) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setInputSize:layerPixelSize atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; // add this line, because the outputFramebuffer is update above - [currentTarget newFrameReadyAtTime:frameTime atIndex:textureIndexOfTarget]; - } - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m deleted file mode 100755 index 542c5ea3..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.m +++ /dev/null @@ -1,101 +0,0 @@ -#import "GPUImageUnsharpMaskFilter.h" -#import "GPUImageFilter.h" -#import "GPUImageTwoInputFilter.h" -#import "GPUImageGaussianBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageUnsharpMaskFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - varying highp vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform highp float intensity; - - void main() - { - lowp vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp vec3 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - gl_FragColor = vec4(sharpImageColor.rgb * intensity + blurredImageColor * (1.0 - intensity), sharpImageColor.a); -// gl_FragColor = mix(blurredImageColor, sharpImageColor, intensity); -// gl_FragColor = vec4(sharpImageColor.rgb - (blurredImageColor.rgb * intensity), 1.0); - } -); -#else -NSString *const kGPUImageUnsharpMaskFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 textureCoordinate2; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - - uniform float intensity; - - void main() - { - vec4 sharpImageColor = texture2D(inputImageTexture, textureCoordinate); - vec3 blurredImageColor = texture2D(inputImageTexture2, textureCoordinate2).rgb; - - gl_FragColor = vec4(sharpImageColor.rgb * intensity + blurredImageColor * (1.0 - intensity), sharpImageColor.a); - // gl_FragColor = mix(blurredImageColor, sharpImageColor, intensity); - // gl_FragColor = vec4(sharpImageColor.rgb - (blurredImageColor.rgb * intensity), 1.0); - } -); -#endif - -@implementation GPUImageUnsharpMaskFilter - -@synthesize blurRadiusInPixels; -@synthesize intensity = _intensity; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: apply a variable Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Second pass: combine the blurred image with the original sharp one - unsharpMaskFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromString:kGPUImageUnsharpMaskFragmentShaderString]; - [self addFilter:unsharpMaskFilter]; - - // Texture location 0 needs to be the sharp image for both the blur and the second stage processing - [blurFilter addTarget:unsharpMaskFilter atTextureLocation:1]; - - self.initialFilters = [NSArray arrayWithObjects:blurFilter, unsharpMaskFilter, nil]; - self.terminalFilter = unsharpMaskFilter; - - self.intensity = 1.0; - self.blurRadiusInPixels = 4.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setIntensity:(CGFloat)newValue; -{ - _intensity = newValue; - [unsharpMaskFilter setFloat:newValue forUniformName:@"intensity"]; -} - -@end \ No newline at end of file diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m b/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m deleted file mode 100644 index 18aa60c3..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.m +++ /dev/null @@ -1,1062 +0,0 @@ -#import "GPUImageVideoCamera.h" -#import "GPUImageMovieWriter.h" -#import "GPUImageFilter.h" - -void setColorConversion601( GLfloat conversionMatrix[9] ) -{ - kColorConversion601 = conversionMatrix; -} - -void setColorConversion601FullRange( GLfloat conversionMatrix[9] ) -{ - kColorConversion601FullRange = conversionMatrix; -} - -void setColorConversion709( GLfloat conversionMatrix[9] ) -{ - kColorConversion709 = conversionMatrix; -} - -#pragma mark - -#pragma mark Private methods and instance variables - -@interface GPUImageVideoCamera () -{ - AVCaptureDeviceInput *audioInput; - AVCaptureAudioDataOutput *audioOutput; - NSDate *startingCaptureTime; - - dispatch_queue_t cameraProcessingQueue, audioProcessingQueue; - - GLProgram *yuvConversionProgram; - GLint yuvConversionPositionAttribute, yuvConversionTextureCoordinateAttribute; - GLint yuvConversionLuminanceTextureUniform, yuvConversionChrominanceTextureUniform; - GLint yuvConversionMatrixUniform; - const GLfloat *_preferredConversion; - - BOOL isFullYUVRange; - - int imageBufferWidth, imageBufferHeight; - - BOOL addedAudioInputsDueToEncodingTarget; -} - -- (void)updateOrientationSendToTargets; -- (void)convertYUVToRGBOutput; - -@end - -@implementation GPUImageVideoCamera - -@synthesize captureSessionPreset = _captureSessionPreset; -@synthesize captureSession = _captureSession; -@synthesize inputCamera = _inputCamera; -@synthesize runBenchmark = _runBenchmark; -@synthesize outputImageOrientation = _outputImageOrientation; -@synthesize delegate = _delegate; -@synthesize horizontallyMirrorFrontFacingCamera = _horizontallyMirrorFrontFacingCamera, horizontallyMirrorRearFacingCamera = _horizontallyMirrorRearFacingCamera; -@synthesize frameRate = _frameRate; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack])) - { - return nil; - } - - return self; -} - -- (id)initWithSessionPreset:(NSString *)sessionPreset cameraPosition:(AVCaptureDevicePosition)cameraPosition; -{ - if (!(self = [super init])) - { - return nil; - } - - cameraProcessingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0); - audioProcessingQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0); - - frameRenderingSemaphore = dispatch_semaphore_create(1); - - _frameRate = 0; // This will not set frame rate unless this value gets set to 1 or above - _runBenchmark = NO; - capturePaused = NO; - outputRotation = kGPUImageNoRotation; - internalRotation = kGPUImageNoRotation; - captureAsYUV = YES; - _preferredConversion = kColorConversion709; - - // Grab the back-facing or front-facing camera - _inputCamera = nil; - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices) - { - if ([device position] == cameraPosition) - { - _inputCamera = device; - } - } - - if (!_inputCamera) { - return nil; - } - - // Create the capture session - _captureSession = [[AVCaptureSession alloc] init]; - - [_captureSession beginConfiguration]; - - // Add the video input - NSError *error = nil; - videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:_inputCamera error:&error]; - if ([_captureSession canAddInput:videoInput]) - { - [_captureSession addInput:videoInput]; - } - - // Add the video frame output - videoOutput = [[AVCaptureVideoDataOutput alloc] init]; - [videoOutput setAlwaysDiscardsLateVideoFrames:NO]; - -// if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) - { - BOOL supportsFullYUVRange = NO; - NSArray *supportedPixelFormats = videoOutput.availableVideoCVPixelFormatTypes; - for (NSNumber *currentPixelFormat in supportedPixelFormats) - { - if ([currentPixelFormat intValue] == kCVPixelFormatType_420YpCbCr8BiPlanarFullRange) - { - supportsFullYUVRange = YES; - } - } - - if (supportsFullYUVRange) - { - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - isFullYUVRange = YES; - } - else - { - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - isFullYUVRange = NO; - } - } - else - { - [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; - } - - runSynchronouslyOnVideoProcessingQueue(^{ - - if (captureAsYUV) - { - [GPUImageContext useImageProcessingContext]; - // if ([GPUImageContext deviceSupportsRedTextures]) - // { - // yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVVideoRangeConversionForRGFragmentShaderString]; - // } - // else - // { - if (isFullYUVRange) - { - yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVFullRangeConversionForLAFragmentShaderString]; - } - else - { - yuvConversionProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageYUVVideoRangeConversionForLAFragmentShaderString]; - } - - // } - - if (!yuvConversionProgram.initialized) - { - [yuvConversionProgram addAttribute:@"position"]; - [yuvConversionProgram addAttribute:@"inputTextureCoordinate"]; - - if (![yuvConversionProgram link]) - { - NSString *progLog = [yuvConversionProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [yuvConversionProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [yuvConversionProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - yuvConversionProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - yuvConversionPositionAttribute = [yuvConversionProgram attributeIndex:@"position"]; - yuvConversionTextureCoordinateAttribute = [yuvConversionProgram attributeIndex:@"inputTextureCoordinate"]; - yuvConversionLuminanceTextureUniform = [yuvConversionProgram uniformIndex:@"luminanceTexture"]; - yuvConversionChrominanceTextureUniform = [yuvConversionProgram uniformIndex:@"chrominanceTexture"]; - yuvConversionMatrixUniform = [yuvConversionProgram uniformIndex:@"colorConversionMatrix"]; - - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - - glEnableVertexAttribArray(yuvConversionPositionAttribute); - glEnableVertexAttribArray(yuvConversionTextureCoordinateAttribute); - } - }); - - [videoOutput setSampleBufferDelegate:self queue:cameraProcessingQueue]; - if ([_captureSession canAddOutput:videoOutput]) - { - [_captureSession addOutput:videoOutput]; - } - else - { - NSLog(@"Couldn't add video output"); - return nil; - } - - _captureSessionPreset = sessionPreset; - [_captureSession setSessionPreset:_captureSessionPreset]; - -// This will let you get 60 FPS video from the 720p preset on an iPhone 4S, but only that device and that preset -// AVCaptureConnection *conn = [videoOutput connectionWithMediaType:AVMediaTypeVideo]; -// -// if (conn.supportsVideoMinFrameDuration) -// conn.videoMinFrameDuration = CMTimeMake(1,60); -// if (conn.supportsVideoMaxFrameDuration) -// conn.videoMaxFrameDuration = CMTimeMake(1,60); - - [_captureSession commitConfiguration]; - - return self; -} - -- (GPUImageFramebuffer *)framebufferForOutput; -{ - return outputFramebuffer; -} - -- (void)dealloc -{ - [self stopCameraCapture]; - [videoOutput setSampleBufferDelegate:nil queue:dispatch_get_main_queue()]; - [audioOutput setSampleBufferDelegate:nil queue:dispatch_get_main_queue()]; - - [self removeInputsAndOutputs]; - -// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. -#if !OS_OBJECT_USE_OBJC - if (frameRenderingSemaphore != NULL) - { - dispatch_release(frameRenderingSemaphore); - } -#endif -} - -- (BOOL)addAudioInputsAndOutputs -{ - if (audioOutput) - return NO; - - [_captureSession beginConfiguration]; - - _microphone = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; - audioInput = [AVCaptureDeviceInput deviceInputWithDevice:_microphone error:nil]; - if ([_captureSession canAddInput:audioInput]) - { - [_captureSession addInput:audioInput]; - } - audioOutput = [[AVCaptureAudioDataOutput alloc] init]; - - if ([_captureSession canAddOutput:audioOutput]) - { - [_captureSession addOutput:audioOutput]; - } - else - { - NSLog(@"Couldn't add audio output"); - } - [audioOutput setSampleBufferDelegate:self queue:audioProcessingQueue]; - - [_captureSession commitConfiguration]; - return YES; -} - -- (BOOL)removeAudioInputsAndOutputs -{ - if (!audioOutput) - return NO; - - [_captureSession beginConfiguration]; - [_captureSession removeInput:audioInput]; - [_captureSession removeOutput:audioOutput]; - audioInput = nil; - audioOutput = nil; - _microphone = nil; - [_captureSession commitConfiguration]; - return YES; -} - -- (void)removeInputsAndOutputs; -{ - [_captureSession beginConfiguration]; - if (videoInput) { - [_captureSession removeInput:videoInput]; - [_captureSession removeOutput:videoOutput]; - videoInput = nil; - videoOutput = nil; - } - if (_microphone != nil) - { - [_captureSession removeInput:audioInput]; - [_captureSession removeOutput:audioOutput]; - audioInput = nil; - audioOutput = nil; - _microphone = nil; - } - [_captureSession commitConfiguration]; -} - -#pragma mark - -#pragma mark Managing targets - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [super addTarget:newTarget atTextureLocation:textureLocation]; - - [newTarget setInputRotation:outputRotation atIndex:textureLocation]; -} - -#pragma mark - -#pragma mark Manage the camera video stream - -- (BOOL)isRunning; -{ - return [_captureSession isRunning]; -} - -- (void)startCameraCapture; -{ - if (![_captureSession isRunning]) - { - startingCaptureTime = [NSDate date]; - [_captureSession startRunning]; - }; -} - -- (void)stopCameraCapture; -{ - if ([_captureSession isRunning]) - { - [_captureSession stopRunning]; - } -} - -- (void)pauseCameraCapture; -{ - capturePaused = YES; -} - -- (void)resumeCameraCapture; -{ - capturePaused = NO; -} - -- (void)rotateCamera -{ - if (self.frontFacingCameraPresent == NO) - return; - - NSError *error; - AVCaptureDeviceInput *newVideoInput; - AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; - - if (currentCameraPosition == AVCaptureDevicePositionBack) - { - currentCameraPosition = AVCaptureDevicePositionFront; - } - else - { - currentCameraPosition = AVCaptureDevicePositionBack; - } - - AVCaptureDevice *backFacingCamera = nil; - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - for (AVCaptureDevice *device in devices) - { - if ([device position] == currentCameraPosition) - { - backFacingCamera = device; - } - } - newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error]; - - if (newVideoInput != nil) - { - [_captureSession beginConfiguration]; - - [_captureSession removeInput:videoInput]; - if ([_captureSession canAddInput:newVideoInput]) - { - [_captureSession addInput:newVideoInput]; - videoInput = newVideoInput; - } - else - { - [_captureSession addInput:videoInput]; - } - //captureSession.sessionPreset = oriPreset; - [_captureSession commitConfiguration]; - } - - _inputCamera = backFacingCamera; - [self setOutputImageOrientation:_outputImageOrientation]; -} - -- (AVCaptureDevicePosition)cameraPosition -{ - return [[videoInput device] position]; -} - -+ (BOOL)isBackFacingCameraPresent; -{ - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - - for (AVCaptureDevice *device in devices) - { - if ([device position] == AVCaptureDevicePositionBack) - return YES; - } - - return NO; -} - -- (BOOL)isBackFacingCameraPresent -{ - return [GPUImageVideoCamera isBackFacingCameraPresent]; -} - -+ (BOOL)isFrontFacingCameraPresent; -{ - NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - - for (AVCaptureDevice *device in devices) - { - if ([device position] == AVCaptureDevicePositionFront) - return YES; - } - - return NO; -} - -- (BOOL)isFrontFacingCameraPresent -{ - return [GPUImageVideoCamera isFrontFacingCameraPresent]; -} - -- (void)setCaptureSessionPreset:(NSString *)captureSessionPreset; -{ - [_captureSession beginConfiguration]; - - _captureSessionPreset = captureSessionPreset; - [_captureSession setSessionPreset:_captureSessionPreset]; - - [_captureSession commitConfiguration]; -} - -- (void)setFrameRate:(int32_t)frameRate; -{ - _frameRate = frameRate; - - if (_frameRate > 0) - { - if ([_inputCamera respondsToSelector:@selector(setActiveVideoMinFrameDuration:)] && - [_inputCamera respondsToSelector:@selector(setActiveVideoMaxFrameDuration:)]) { - - NSError *error; - [_inputCamera lockForConfiguration:&error]; - if (error == nil) { -#if defined(__IPHONE_7_0) - [_inputCamera setActiveVideoMinFrameDuration:CMTimeMake(1, _frameRate)]; - [_inputCamera setActiveVideoMaxFrameDuration:CMTimeMake(1, _frameRate)]; -#endif - } - [_inputCamera unlockForConfiguration]; - - } else { - - for (AVCaptureConnection *connection in videoOutput.connections) - { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([connection respondsToSelector:@selector(setVideoMinFrameDuration:)]) - connection.videoMinFrameDuration = CMTimeMake(1, _frameRate); - - if ([connection respondsToSelector:@selector(setVideoMaxFrameDuration:)]) - connection.videoMaxFrameDuration = CMTimeMake(1, _frameRate); -#pragma clang diagnostic pop - } - } - - } - else - { - if ([_inputCamera respondsToSelector:@selector(setActiveVideoMinFrameDuration:)] && - [_inputCamera respondsToSelector:@selector(setActiveVideoMaxFrameDuration:)]) { - - NSError *error; - [_inputCamera lockForConfiguration:&error]; - if (error == nil) { -#if defined(__IPHONE_7_0) - [_inputCamera setActiveVideoMinFrameDuration:kCMTimeInvalid]; - [_inputCamera setActiveVideoMaxFrameDuration:kCMTimeInvalid]; -#endif - } - [_inputCamera unlockForConfiguration]; - - } else { - - for (AVCaptureConnection *connection in videoOutput.connections) - { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - if ([connection respondsToSelector:@selector(setVideoMinFrameDuration:)]) - connection.videoMinFrameDuration = kCMTimeInvalid; // This sets videoMinFrameDuration back to default - - if ([connection respondsToSelector:@selector(setVideoMaxFrameDuration:)]) - connection.videoMaxFrameDuration = kCMTimeInvalid; // This sets videoMaxFrameDuration back to default -#pragma clang diagnostic pop - } - } - - } -} - -- (int32_t)frameRate; -{ - return _frameRate; -} - -- (AVCaptureConnection *)videoCaptureConnection { - for (AVCaptureConnection *connection in [videoOutput connections] ) { - for ( AVCaptureInputPort *port in [connection inputPorts] ) { - if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) { - return connection; - } - } - } - - return nil; -} - -#define INITIALFRAMESTOIGNOREFORBENCHMARK 5 - -- (void)updateTargetsForVideoCameraUsingCacheTextureAtWidth:(int)bufferWidth height:(int)bufferHeight time:(CMTime)currentTime; -{ - // First, update all the framebuffers in the targets - for (id currentTarget in targets) - { - if ([currentTarget enabled]) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - if (currentTarget != self.targetToIgnoreForUpdates) - { - [currentTarget setInputRotation:outputRotation atIndex:textureIndexOfTarget]; - [currentTarget setInputSize:CGSizeMake(bufferWidth, bufferHeight) atIndex:textureIndexOfTarget]; - - if ([currentTarget wantsMonochromeInput] && captureAsYUV) - { - [currentTarget setCurrentlyReceivingMonochromeInput:YES]; - // TODO: Replace optimization for monochrome output - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - } - else - { - [currentTarget setCurrentlyReceivingMonochromeInput:NO]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - } - } - else - { - [currentTarget setInputRotation:outputRotation atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - } - } - } - - // Then release our hold on the local framebuffer to send it back to the cache as soon as it's no longer needed - [outputFramebuffer unlock]; - outputFramebuffer = nil; - - // Finally, trigger rendering as needed - for (id currentTarget in targets) - { - if ([currentTarget enabled]) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - if (currentTarget != self.targetToIgnoreForUpdates) - { - [currentTarget newFrameReadyAtTime:currentTime atIndex:textureIndexOfTarget]; - } - } - } -} - -- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer; -{ - if (capturePaused) - { - return; - } - - CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent(); - CVImageBufferRef cameraFrame = CMSampleBufferGetImageBuffer(sampleBuffer); - int bufferWidth = (int) CVPixelBufferGetWidth(cameraFrame); - int bufferHeight = (int) CVPixelBufferGetHeight(cameraFrame); - CFTypeRef colorAttachments = CVBufferGetAttachment(cameraFrame, kCVImageBufferYCbCrMatrixKey, NULL); - if (colorAttachments != NULL) - { - if(CFStringCompare(colorAttachments, kCVImageBufferYCbCrMatrix_ITU_R_601_4, 0) == kCFCompareEqualTo) - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - } - else - { - _preferredConversion = kColorConversion709; - } - } - else - { - if (isFullYUVRange) - { - _preferredConversion = kColorConversion601FullRange; - } - else - { - _preferredConversion = kColorConversion601; - } - } - - CMTime currentTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); - - [GPUImageContext useImageProcessingContext]; - - if ([GPUImageContext supportsFastTextureUpload] && captureAsYUV) - { - CVOpenGLESTextureRef luminanceTextureRef = NULL; - CVOpenGLESTextureRef chrominanceTextureRef = NULL; - -// if (captureAsYUV && [GPUImageContext deviceSupportsRedTextures]) - if (CVPixelBufferGetPlaneCount(cameraFrame) > 0) // Check for YUV planar inputs to do RGB conversion - { - CVPixelBufferLockBaseAddress(cameraFrame, 0); - - if ( (imageBufferWidth != bufferWidth) && (imageBufferHeight != bufferHeight) ) - { - imageBufferWidth = bufferWidth; - imageBufferHeight = bufferHeight; - } - - CVReturn err; - // Y-plane - glActiveTexture(GL_TEXTURE4); - if ([GPUImageContext deviceSupportsRedTextures]) - { -// err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, cameraFrame, NULL, GL_TEXTURE_2D, GL_RED_EXT, bufferWidth, bufferHeight, GL_RED_EXT, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - } - else - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE, bufferWidth, bufferHeight, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0, &luminanceTextureRef); - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - luminanceTexture = CVOpenGLESTextureGetName(luminanceTextureRef); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - // UV-plane - glActiveTexture(GL_TEXTURE5); - if ([GPUImageContext deviceSupportsRedTextures]) - { -// err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, coreVideoTextureCache, cameraFrame, NULL, GL_TEXTURE_2D, GL_RG_EXT, bufferWidth/2, bufferHeight/2, GL_RG_EXT, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - } - else - { - err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_LUMINANCE_ALPHA, bufferWidth/2, bufferHeight/2, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, 1, &chrominanceTextureRef); - } - if (err) - { - NSLog(@"Error at CVOpenGLESTextureCacheCreateTextureFromImage %d", err); - } - - chrominanceTexture = CVOpenGLESTextureGetName(chrominanceTextureRef); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - -// if (!allTargetsWantMonochromeData) -// { - [self convertYUVToRGBOutput]; -// } - - int rotatedImageBufferWidth = bufferWidth, rotatedImageBufferHeight = bufferHeight; - - if (GPUImageRotationSwapsWidthAndHeight(internalRotation)) - { - rotatedImageBufferWidth = bufferHeight; - rotatedImageBufferHeight = bufferWidth; - } - - [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:rotatedImageBufferWidth height:rotatedImageBufferHeight time:currentTime]; - - CVPixelBufferUnlockBaseAddress(cameraFrame, 0); - CFRelease(luminanceTextureRef); - CFRelease(chrominanceTextureRef); - } - else - { - // TODO: Mesh this with the output framebuffer structure - -// CVPixelBufferLockBaseAddress(cameraFrame, 0); -// -// CVReturn err = CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, [[GPUImageContext sharedImageProcessingContext] coreVideoTextureCache], cameraFrame, NULL, GL_TEXTURE_2D, GL_RGBA, bufferWidth, bufferHeight, GL_BGRA, GL_UNSIGNED_BYTE, 0, &texture); -// -// if (!texture || err) { -// NSLog(@"Camera CVOpenGLESTextureCacheCreateTextureFromImage failed (error: %d)", err); -// NSAssert(NO, @"Camera failure"); -// return; -// } -// -// outputTexture = CVOpenGLESTextureGetName(texture); -// // glBindTexture(CVOpenGLESTextureGetTarget(texture), outputTexture); -// glBindTexture(GL_TEXTURE_2D, outputTexture); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); -// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); -// -// [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:bufferWidth height:bufferHeight time:currentTime]; -// -// CVPixelBufferUnlockBaseAddress(cameraFrame, 0); -// CFRelease(texture); -// -// outputTexture = 0; - } - - - if (_runBenchmark) - { - numberOfFramesCaptured++; - if (numberOfFramesCaptured > INITIALFRAMESTOIGNOREFORBENCHMARK) - { - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - totalFrameTimeDuringCapture += currentFrameTime; - NSLog(@"Average frame time : %f ms", [self averageFrameDurationDuringCapture]); - NSLog(@"Current frame time : %f ms", 1000.0 * currentFrameTime); - } - } - } - else - { - CVPixelBufferLockBaseAddress(cameraFrame, 0); - - int bytesPerRow = (int) CVPixelBufferGetBytesPerRow(cameraFrame); - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(bytesPerRow / 4, bufferHeight) onlyTexture:YES]; - [outputFramebuffer activateFramebuffer]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - - // glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bufferWidth, bufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(cameraFrame)); - - // Using BGRA extension to pull in video frame data directly - // The use of bytesPerRow / 4 accounts for a display glitch present in preview video frames when using the photo preset on the camera - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bytesPerRow / 4, bufferHeight, 0, GL_BGRA, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(cameraFrame)); - - [self updateTargetsForVideoCameraUsingCacheTextureAtWidth:bytesPerRow / 4 height:bufferHeight time:currentTime]; - - CVPixelBufferUnlockBaseAddress(cameraFrame, 0); - - if (_runBenchmark) - { - numberOfFramesCaptured++; - if (numberOfFramesCaptured > INITIALFRAMESTOIGNOREFORBENCHMARK) - { - CFAbsoluteTime currentFrameTime = (CFAbsoluteTimeGetCurrent() - startTime); - totalFrameTimeDuringCapture += currentFrameTime; - } - } - } -} - -- (void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer; -{ - [self.audioEncodingTarget processAudioBuffer:sampleBuffer]; -} - -- (void)convertYUVToRGBOutput; -{ - [GPUImageContext setActiveShaderProgram:yuvConversionProgram]; - - int rotatedImageBufferWidth = imageBufferWidth, rotatedImageBufferHeight = imageBufferHeight; - - if (GPUImageRotationSwapsWidthAndHeight(internalRotation)) - { - rotatedImageBufferWidth = imageBufferHeight; - rotatedImageBufferHeight = imageBufferWidth; - } - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:CGSizeMake(rotatedImageBufferWidth, rotatedImageBufferHeight) textureOptions:self.outputTextureOptions onlyTexture:NO]; - [outputFramebuffer activateFramebuffer]; - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, luminanceTexture); - glUniform1i(yuvConversionLuminanceTextureUniform, 4); - - glActiveTexture(GL_TEXTURE5); - glBindTexture(GL_TEXTURE_2D, chrominanceTexture); - glUniform1i(yuvConversionChrominanceTextureUniform, 5); - - glUniformMatrix3fv(yuvConversionMatrixUniform, 1, GL_FALSE, _preferredConversion); - - glVertexAttribPointer(yuvConversionPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(yuvConversionTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [GPUImageFilter textureCoordinatesForRotation:internalRotation]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); -} - -#pragma mark - -#pragma mark Benchmarking - -- (CGFloat)averageFrameDurationDuringCapture; -{ - return (totalFrameTimeDuringCapture / (CGFloat)(numberOfFramesCaptured - INITIALFRAMESTOIGNOREFORBENCHMARK)) * 1000.0; -} - -- (void)resetBenchmarkAverage; -{ - numberOfFramesCaptured = 0; - totalFrameTimeDuringCapture = 0.0; -} - -#pragma mark - -#pragma mark AVCaptureVideoDataOutputSampleBufferDelegate - -- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection -{ - if (!self.captureSession.isRunning) - { - return; - } - else if (captureOutput == audioOutput) - { - [self processAudioSampleBuffer:sampleBuffer]; - } - else - { - if (dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_NOW) != 0) - { - return; - } - - CFRetain(sampleBuffer); - runAsynchronouslyOnVideoProcessingQueue(^{ - //Feature Detection Hook. - if (self.delegate) - { - [self.delegate willOutputSampleBuffer:sampleBuffer]; - } - - [self processVideoSampleBuffer:sampleBuffer]; - - CFRelease(sampleBuffer); - dispatch_semaphore_signal(frameRenderingSemaphore); - }); - } -} - -#pragma mark - -#pragma mark Accessors - -- (void)setAudioEncodingTarget:(GPUImageMovieWriter *)newValue; -{ - if (newValue) { - /* Add audio inputs and outputs, if necessary */ - addedAudioInputsDueToEncodingTarget |= [self addAudioInputsAndOutputs]; - } else if (addedAudioInputsDueToEncodingTarget) { - /* Remove audio inputs and outputs, if they were added by previously setting the audio encoding target */ - [self removeAudioInputsAndOutputs]; - addedAudioInputsDueToEncodingTarget = NO; - } - - [super setAudioEncodingTarget:newValue]; -} - -- (void)updateOrientationSendToTargets; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - - // From the iOS 5.0 release notes: - // In previous iOS versions, the front-facing camera would always deliver buffers in AVCaptureVideoOrientationLandscapeLeft and the back-facing camera would always deliver buffers in AVCaptureVideoOrientationLandscapeRight. - - if (captureAsYUV && [GPUImageContext supportsFastTextureUpload]) - { - outputRotation = kGPUImageNoRotation; - if ([self cameraPosition] == AVCaptureDevicePositionBack) - { - if (_horizontallyMirrorRearFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageFlipVertical; break; - default:internalRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageNoRotation; break; - default:internalRotation = kGPUImageNoRotation; - } - } - } - else - { - if (_horizontallyMirrorFrontFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateRightFlipHorizontal; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageFlipVertical; break; - default:internalRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:internalRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:internalRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:internalRotation = kGPUImageNoRotation; break; - case UIInterfaceOrientationLandscapeRight:internalRotation = kGPUImageRotate180; break; - default:internalRotation = kGPUImageNoRotation; - } - } - } - } - else - { - if ([self cameraPosition] == AVCaptureDevicePositionBack) - { - if (_horizontallyMirrorRearFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break; - default:outputRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageRotate180; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageNoRotation; break; - default:outputRotation = kGPUImageNoRotation; - } - } - } - else - { - if (_horizontallyMirrorFrontFacingCamera) - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRightFlipVertical; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateRightFlipHorizontal; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageFlipHorizonal; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageFlipVertical; break; - default:outputRotation = kGPUImageNoRotation; - } - } - else - { - switch(_outputImageOrientation) - { - case UIInterfaceOrientationPortrait:outputRotation = kGPUImageRotateRight; break; - case UIInterfaceOrientationPortraitUpsideDown:outputRotation = kGPUImageRotateLeft; break; - case UIInterfaceOrientationLandscapeLeft:outputRotation = kGPUImageNoRotation; break; - case UIInterfaceOrientationLandscapeRight:outputRotation = kGPUImageRotate180; break; - default:outputRotation = kGPUImageNoRotation; - } - } - } - } - - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - [currentTarget setInputRotation:outputRotation atIndex:[[targetTextureIndices objectAtIndex:indexOfObject] integerValue]]; - } - }); -} - -- (void)setOutputImageOrientation:(UIInterfaceOrientation)newValue; -{ - _outputImageOrientation = newValue; - [self updateOrientationSendToTargets]; -} - -- (void)setHorizontallyMirrorFrontFacingCamera:(BOOL)newValue -{ - _horizontallyMirrorFrontFacingCamera = newValue; - [self updateOrientationSendToTargets]; -} - -- (void)setHorizontallyMirrorRearFacingCamera:(BOOL)newValue -{ - _horizontallyMirrorRearFacingCamera = newValue; - [self updateOrientationSendToTargets]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m deleted file mode 100755 index 6e1eadb2..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.m +++ /dev/null @@ -1,104 +0,0 @@ -#import "GPUImageVignetteFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageVignetteFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying highp vec2 textureCoordinate; - - uniform lowp vec2 vignetteCenter; - uniform lowp vec3 vignetteColor; - uniform highp float vignetteStart; - uniform highp float vignetteEnd; - - void main() - { - lowp vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate); - lowp float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y)); - lowp float percent = smoothstep(vignetteStart, vignetteEnd, d); - gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a); - } -); -#else -NSString *const kGPUImageVignetteFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying vec2 textureCoordinate; - - uniform vec2 vignetteCenter; - uniform vec3 vignetteColor; - uniform float vignetteStart; - uniform float vignetteEnd; - - void main() - { - vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate); - float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y)); - float percent = smoothstep(vignetteStart, vignetteEnd, d); - gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a); - } -); -#endif - -@implementation GPUImageVignetteFilter - -@synthesize vignetteCenter = _vignetteCenter; -@synthesize vignetteColor = _vignetteColor; -@synthesize vignetteStart =_vignetteStart; -@synthesize vignetteEnd = _vignetteEnd; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageVignetteFragmentShaderString])) - { - return nil; - } - - vignetteCenterUniform = [filterProgram uniformIndex:@"vignetteCenter"]; - vignetteColorUniform = [filterProgram uniformIndex:@"vignetteColor"]; - vignetteStartUniform = [filterProgram uniformIndex:@"vignetteStart"]; - vignetteEndUniform = [filterProgram uniformIndex:@"vignetteEnd"]; - - self.vignetteCenter = (CGPoint){ 0.5f, 0.5f }; - self.vignetteColor = (GPUVector3){ 0.0f, 0.0f, 0.0f }; - self.vignetteStart = 0.3; - self.vignetteEnd = 0.75; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setVignetteCenter:(CGPoint)newValue -{ - _vignetteCenter = newValue; - - [self setPoint:newValue forUniform:vignetteCenterUniform program:filterProgram]; -} - -- (void)setVignetteColor:(GPUVector3)newValue -{ - _vignetteColor = newValue; - - [self setVec3:newValue forUniform:vignetteColorUniform program:filterProgram]; -} - -- (void)setVignetteStart:(CGFloat)newValue; -{ - _vignetteStart = newValue; - - [self setFloat:_vignetteStart forUniform:vignetteStartUniform program:filterProgram]; -} - -- (void)setVignetteEnd:(CGFloat)newValue; -{ - _vignetteEnd = newValue; - - [self setFloat:_vignetteEnd forUniform:vignetteEndUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m deleted file mode 100644 index c12c34f4..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageVoronoiConsumerFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageVoronoiConsumerFragmentShaderString = SHADER_STRING -( - - precision highp float; - - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform vec2 size; - varying vec2 textureCoordinate; - - vec2 getCoordFromColor(vec4 color) -{ - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; -} - - void main(void) { - vec4 colorLoc = texture2D(inputImageTexture2, textureCoordinate); - vec4 color = texture2D(inputImageTexture, getCoordFromColor(colorLoc)); - - gl_FragColor = color; - } -); -#else -NSString *const kGPUImageVoronoiConsumerFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - uniform sampler2D inputImageTexture2; - uniform vec2 size; - varying vec2 textureCoordinate; - - vec2 getCoordFromColor(vec4 color) - { - float z = color.z * 256.0; - float yoff = floor(z / 8.0); - float xoff = mod(z, 8.0); - float x = color.x*256.0 + xoff*256.0; - float y = color.y*256.0 + yoff*256.0; - return vec2(x,y) / size; - } - - void main(void) - { - vec4 colorLoc = texture2D(inputImageTexture2, textureCoordinate); - vec4 color = texture2D(inputImageTexture, getCoordFromColor(colorLoc)); - - gl_FragColor = color; - } -); -#endif - -@implementation GPUImageVoronoiConsumerFilter - -@synthesize sizeInPixels = _sizeInPixels; - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageVoronoiConsumerFragmentShaderString])) - { - return nil; - } - - sizeUniform = [filterProgram uniformIndex:@"size"]; - - return self; -} - --(void)setSizeInPixels:(CGSize)sizeInPixels { - _sizeInPixels = sizeInPixels; - - //validate that it's a power of 2 and square - - float width = log2(sizeInPixels.width); - float height = log2(sizeInPixels.height); - - if (width != height) { - NSLog(@"Voronoi point texture must be square"); - return; - } - if (width != floor(width) || height != floor(height)) { - NSLog(@"Voronoi point texture must be a power of 2. Texture size %f, %f", sizeInPixels.width, sizeInPixels.height); - return; - } - glUniform2f(sizeUniform, _sizeInPixels.width, _sizeInPixels.height); -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m deleted file mode 100644 index 4e95ad5d..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.m +++ /dev/null @@ -1,94 +0,0 @@ -#import "GPUImageWeakPixelInclusionFilter.h" - -@implementation GPUImageWeakPixelInclusionFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageWeakPixelInclusionFragmentShaderString = SHADER_STRING -( - precision lowp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - - float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity; - float sumTest = step(1.5, pixelIntensitySum); - float pixelTest = step(0.01, centerIntensity); - - gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0); - } -); -#else -NSString *const kGPUImageWeakPixelInclusionFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float centerIntensity = texture2D(inputImageTexture, textureCoordinate).r; - - float pixelIntensitySum = bottomLeftIntensity + topRightIntensity + topLeftIntensity + bottomRightIntensity + leftIntensity + rightIntensity + bottomIntensity + topIntensity + centerIntensity; - float sumTest = step(1.5, pixelIntensitySum); - float pixelTest = step(0.01, centerIntensity); - - gl_FragColor = vec4(vec3(sumTest * pixelTest), 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageWeakPixelInclusionFragmentShaderString])) - { - return nil; - } - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m deleted file mode 100644 index 17c9bce9..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.m +++ /dev/null @@ -1,107 +0,0 @@ -#import "GPUImageWhiteBalanceFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageWhiteBalanceFragmentShaderString = SHADER_STRING -( -uniform sampler2D inputImageTexture; -varying highp vec2 textureCoordinate; - -uniform lowp float temperature; -uniform lowp float tint; - -const lowp vec3 warmFilter = vec3(0.93, 0.54, 0.0); - -const mediump mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); -const mediump mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); - -void main() -{ - lowp vec4 source = texture2D(inputImageTexture, textureCoordinate); - - mediump vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint - yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); - lowp vec3 rgb = YIQtoRGB * yiq; - - lowp vec3 processed = vec3( - (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature - (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), - (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); - - gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); -} -); -#else -NSString *const kGPUImageWhiteBalanceFragmentShaderString = SHADER_STRING -( - uniform sampler2D inputImageTexture; - varying vec2 textureCoordinate; - - uniform float temperature; - uniform float tint; - - const vec3 warmFilter = vec3(0.93, 0.54, 0.0); - - const mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.596, -0.274, -0.322, 0.212, -0.523, 0.311); - const mat3 YIQtoRGB = mat3(1.0, 0.956, 0.621, 1.0, -0.272, -0.647, 1.0, -1.105, 1.702); - - void main() -{ - vec4 source = texture2D(inputImageTexture, textureCoordinate); - - vec3 yiq = RGBtoYIQ * source.rgb; //adjusting tint - yiq.b = clamp(yiq.b + tint*0.5226*0.1, -0.5226, 0.5226); - vec3 rgb = YIQtoRGB * yiq; - - vec3 processed = vec3( - (rgb.r < 0.5 ? (2.0 * rgb.r * warmFilter.r) : (1.0 - 2.0 * (1.0 - rgb.r) * (1.0 - warmFilter.r))), //adjusting temperature - (rgb.g < 0.5 ? (2.0 * rgb.g * warmFilter.g) : (1.0 - 2.0 * (1.0 - rgb.g) * (1.0 - warmFilter.g))), - (rgb.b < 0.5 ? (2.0 * rgb.b * warmFilter.b) : (1.0 - 2.0 * (1.0 - rgb.b) * (1.0 - warmFilter.b)))); - - gl_FragColor = vec4(mix(rgb, processed, temperature), source.a); -} -); -#endif - -@implementation GPUImageWhiteBalanceFilter - -@synthesize temperature = _temperature; -@synthesize tint = _tint; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageWhiteBalanceFragmentShaderString])) - { - return nil; - } - - temperatureUniform = [filterProgram uniformIndex:@"temperature"]; - tintUniform = [filterProgram uniformIndex:@"tint"]; - - self.temperature = 5000.0; - self.tint = 0.0; - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setTemperature:(CGFloat)newValue; -{ - _temperature = newValue; - - [self setFloat:_temperature < 5000 ? 0.0004 * (_temperature-5000.0) : 0.00006 * (_temperature-5000.0) forUniform:temperatureUniform program:filterProgram]; -} - -- (void)setTint:(CGFloat)newValue; -{ - _tint = newValue; - - [self setFloat:_tint / 100.0 forUniform:tintUniform program:filterProgram]; -} - -@end - diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m deleted file mode 100755 index 7e19e9d4..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.m +++ /dev/null @@ -1,106 +0,0 @@ -#import "GPUImageXYDerivativeFilter.h" - -// I'm using the Prewitt operator to obtain the derivative, then squaring the X and Y components and placing the product of the two in Z. -// In tests, Prewitt seemed to be tied with Sobel for the best, and it's just a little cheaper to compute. -// This is primarily intended to be used with corner detection filters. - -@implementation GPUImageXYDerivativeFilter - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageGradientFragmentShaderString = SHADER_STRING -( - precision highp float; - - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float edgeStrength; - - void main() - { - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - - float verticalDerivative = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float horizontalDerivative = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - verticalDerivative = verticalDerivative * edgeStrength; - horizontalDerivative = horizontalDerivative * edgeStrength; - - // Scaling the X * Y operation so that negative numbers are not clipped in the 0..1 range. This will be expanded in the corner detection filter - gl_FragColor = vec4(horizontalDerivative * horizontalDerivative, verticalDerivative * verticalDerivative, ((verticalDerivative * horizontalDerivative) + 1.0) / 2.0, 1.0); - } -); -#else -NSString *const kGPUImageGradientFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - varying vec2 leftTextureCoordinate; - varying vec2 rightTextureCoordinate; - - varying vec2 topTextureCoordinate; - varying vec2 topLeftTextureCoordinate; - varying vec2 topRightTextureCoordinate; - - varying vec2 bottomTextureCoordinate; - varying vec2 bottomLeftTextureCoordinate; - varying vec2 bottomRightTextureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform float edgeStrength; - - void main() - { - float topIntensity = texture2D(inputImageTexture, topTextureCoordinate).r; - float topRightIntensity = texture2D(inputImageTexture, topRightTextureCoordinate).r; - float topLeftIntensity = texture2D(inputImageTexture, topLeftTextureCoordinate).r; - float bottomIntensity = texture2D(inputImageTexture, bottomTextureCoordinate).r; - float bottomLeftIntensity = texture2D(inputImageTexture, bottomLeftTextureCoordinate).r; - float bottomRightIntensity = texture2D(inputImageTexture, bottomRightTextureCoordinate).r; - float leftIntensity = texture2D(inputImageTexture, leftTextureCoordinate).r; - float rightIntensity = texture2D(inputImageTexture, rightTextureCoordinate).r; - - float verticalDerivative = -topLeftIntensity - topIntensity - topRightIntensity + bottomLeftIntensity + bottomIntensity + bottomRightIntensity; - float horizontalDerivative = -bottomLeftIntensity - leftIntensity - topLeftIntensity + bottomRightIntensity + rightIntensity + topRightIntensity; - verticalDerivative = verticalDerivative * edgeStrength; - horizontalDerivative = horizontalDerivative * edgeStrength; - - // Scaling the X * Y operation so that negative numbers are not clipped in the 0..1 range. This will be expanded in the corner detection filter - gl_FragColor = vec4(horizontalDerivative * horizontalDerivative, verticalDerivative * verticalDerivative, ((verticalDerivative * horizontalDerivative) + 1.0) / 2.0, 1.0); - } -); -#endif - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [self initWithFragmentShaderFromString:kGPUImageGradientFragmentShaderString])) - { - return nil; - } - - self.edgeStrength = 1.0; - - return self; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m deleted file mode 100644 index 2ae84934..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "GPUImageZoomBlurFilter.h" - -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -NSString *const kGPUImageZoomBlurFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform highp vec2 blurCenter; - uniform highp float blurSize; - - void main() - { - // TODO: Do a more intelligent scaling based on resolution here - highp vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; - - lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#else -NSString *const kGPUImageZoomBlurFragmentShaderString = SHADER_STRING -( - varying vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - uniform vec2 blurCenter; - uniform float blurSize; - - void main() - { - // TODO: Do a more intelligent scaling based on resolution here - vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; - - vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) * 0.12; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; - fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; - - gl_FragColor = fragmentColor; - } -); -#endif - -@interface GPUImageZoomBlurFilter() -{ - GLint blurSizeUniform, blurCenterUniform; -} -@end - -@implementation GPUImageZoomBlurFilter - -@synthesize blurSize = _blurSize; -@synthesize blurCenter = _blurCenter; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super initWithFragmentShaderFromString:kGPUImageZoomBlurFragmentShaderString])) - { - return nil; - } - - blurSizeUniform = [filterProgram uniformIndex:@"blurSize"]; - blurCenterUniform = [filterProgram uniformIndex:@"blurCenter"]; - - self.blurSize = 1.0; - self.blurCenter = CGPointMake(0.5, 0.5); - - return self; -} - -#pragma mark - -#pragma mark Accessors - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - [super setInputRotation:newInputRotation atIndex:textureIndex]; - [self setBlurCenter:self.blurCenter]; -} - -- (void)setBlurSize:(CGFloat)newValue; -{ - _blurSize = newValue; - - [self setFloat:_blurSize forUniform:blurSizeUniform program:filterProgram]; -} - -- (void)setBlurCenter:(CGPoint)newValue; -{ - _blurCenter = newValue; - - CGPoint rotatedPoint = [self rotatedPoint:_blurCenter forRotation:inputRotation]; - [self setPoint:rotatedPoint forUniform:blurCenterUniform program:filterProgram]; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m b/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m deleted file mode 100644 index 18533213..00000000 --- a/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.m +++ /dev/null @@ -1,114 +0,0 @@ -#import "GPUImageiOSBlurFilter.h" -#import "GPUImageSaturationFilter.h" -#import "GPUImageGaussianBlurFilter.h" -#import "GPUImageLuminanceRangeFilter.h" - -@implementation GPUImageiOSBlurFilter - -@synthesize blurRadiusInPixels; -@synthesize saturation; -@synthesize downsampling = _downsampling; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - // First pass: downsample and desaturate - saturationFilter = [[GPUImageSaturationFilter alloc] init]; - [self addFilter:saturationFilter]; - - // Second pass: apply a strong Gaussian blur - blurFilter = [[GPUImageGaussianBlurFilter alloc] init]; - [self addFilter:blurFilter]; - - // Third pass: upsample and adjust luminance range - luminanceRangeFilter = [[GPUImageLuminanceRangeFilter alloc] init]; - [self addFilter:luminanceRangeFilter]; - - [saturationFilter addTarget:blurFilter]; - [blurFilter addTarget:luminanceRangeFilter]; - - self.initialFilters = [NSArray arrayWithObject:saturationFilter]; - self.terminalFilter = luminanceRangeFilter; - - self.blurRadiusInPixels = 12.0; - self.saturation = 0.8; - self.downsampling = 4.0; - self.rangeReductionFactor = 0.6; - - return self; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - if (_downsampling > 1.0) - { - CGSize rotatedSize = [saturationFilter rotatedSize:newSize forIndex:textureIndex]; - - [saturationFilter forceProcessingAtSize:CGSizeMake(rotatedSize.width / _downsampling, rotatedSize.height / _downsampling)]; - [luminanceRangeFilter forceProcessingAtSize:rotatedSize]; - } - - [super setInputSize:newSize atIndex:textureIndex]; -} - -#pragma mark - -#pragma mark Accessors - -// From Apple's UIImage+ImageEffects category: - -// A description of how to compute the box kernel width from the Gaussian -// radius (aka standard deviation) appears in the SVG spec: -// http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement -// -// For larger values of 's' (s >= 2.0), an approximation can be used: Three -// successive box-blurs build a piece-wise quadratic convolution kernel, which -// approximates the Gaussian kernel to within roughly 3%. -// -// let d = floor(s * 3*sqrt(2*pi)/4 + 0.5) -// -// ... if d is odd, use three box-blurs of size 'd', centered on the output pixel. - - -- (void)setBlurRadiusInPixels:(CGFloat)newValue; -{ - blurFilter.blurRadiusInPixels = newValue; -} - -- (CGFloat)blurRadiusInPixels; -{ - return blurFilter.blurRadiusInPixels; -} - -- (void)setSaturation:(CGFloat)newValue; -{ - saturationFilter.saturation = newValue; -} - -- (CGFloat)saturation; -{ - return saturationFilter.saturation; -} - -- (void)setDownsampling:(CGFloat)newValue; -{ - _downsampling = newValue; -} - -- (void)setRangeReductionFactor:(CGFloat)rangeReductionFactor -{ - luminanceRangeFilter.rangeReductionFactor = rangeReductionFactor; -} - -- (CGFloat)rangeReductionFactor -{ - return luminanceRangeFilter.rangeReductionFactor; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m deleted file mode 100755 index c167d15d..00000000 --- a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.m +++ /dev/null @@ -1,320 +0,0 @@ -#import "GPUImageContext.h" -#import -#import - -#define MAXSHADERPROGRAMSALLOWEDINCACHE 40 - -extern dispatch_queue_attr_t GPUImageDefaultQueueAttribute(void); - -@interface GPUImageContext() -{ - NSMutableDictionary *shaderProgramCache; - NSMutableArray *shaderProgramUsageHistory; - EAGLSharegroup *_sharegroup; -} - -@end - -@implementation GPUImageContext - -@synthesize context = _context; -@synthesize currentShaderProgram = _currentShaderProgram; -@synthesize contextQueue = _contextQueue; -@synthesize coreVideoTextureCache = _coreVideoTextureCache; -@synthesize framebufferCache = _framebufferCache; - -static void *openGLESContextQueueKey; - -- (id)init; -{ - if (!(self = [super init])) - { - return nil; - } - - openGLESContextQueueKey = &openGLESContextQueueKey; - _contextQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.openGLESContextQueue", GPUImageDefaultQueueAttribute()); - -#if OS_OBJECT_USE_OBJC - dispatch_queue_set_specific(_contextQueue, openGLESContextQueueKey, (__bridge void *)self, NULL); -#endif - shaderProgramCache = [[NSMutableDictionary alloc] init]; - shaderProgramUsageHistory = [[NSMutableArray alloc] init]; - - return self; -} - -+ (void *)contextKey { - return openGLESContextQueueKey; -} - -// Based on Colin Wheeler's example here: http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html -+ (GPUImageContext *)sharedImageProcessingContext; -{ - static dispatch_once_t pred; - static GPUImageContext *sharedImageProcessingContext = nil; - - dispatch_once(&pred, ^{ - sharedImageProcessingContext = [[[self class] alloc] init]; - }); - return sharedImageProcessingContext; -} - -+ (dispatch_queue_t)sharedContextQueue; -{ - return [[self sharedImageProcessingContext] contextQueue]; -} - -+ (GPUImageFramebufferCache *)sharedFramebufferCache; -{ - return [[self sharedImageProcessingContext] framebufferCache]; -} - -+ (void)useImageProcessingContext; -{ - [[GPUImageContext sharedImageProcessingContext] useAsCurrentContext]; -} - -- (void)useAsCurrentContext; -{ - EAGLContext *imageProcessingContext = [self context]; - if ([EAGLContext currentContext] != imageProcessingContext) - { - [EAGLContext setCurrentContext:imageProcessingContext]; - } -} - -+ (void)setActiveShaderProgram:(GLProgram *)shaderProgram; -{ - GPUImageContext *sharedContext = [GPUImageContext sharedImageProcessingContext]; - [sharedContext setContextShaderProgram:shaderProgram]; -} - -- (void)setContextShaderProgram:(GLProgram *)shaderProgram; -{ - EAGLContext *imageProcessingContext = [self context]; - if ([EAGLContext currentContext] != imageProcessingContext) - { - [EAGLContext setCurrentContext:imageProcessingContext]; - } - - if (self.currentShaderProgram != shaderProgram) - { - self.currentShaderProgram = shaderProgram; - [shaderProgram use]; - } -} - -+ (GLint)maximumTextureSizeForThisDevice; -{ - static dispatch_once_t pred; - static GLint maxTextureSize = 0; - - dispatch_once(&pred, ^{ - [self useImageProcessingContext]; - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); - }); - - return maxTextureSize; -} - -+ (GLint)maximumTextureUnitsForThisDevice; -{ - static dispatch_once_t pred; - static GLint maxTextureUnits = 0; - - dispatch_once(&pred, ^{ - [self useImageProcessingContext]; - glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureUnits); - }); - - return maxTextureUnits; -} - -+ (GLint)maximumVaryingVectorsForThisDevice; -{ - static dispatch_once_t pred; - static GLint maxVaryingVectors = 0; - - dispatch_once(&pred, ^{ - [self useImageProcessingContext]; - glGetIntegerv(GL_MAX_VARYING_VECTORS, &maxVaryingVectors); - }); - - return maxVaryingVectors; -} - -+ (BOOL)deviceSupportsOpenGLESExtension:(NSString *)extension; -{ - static dispatch_once_t pred; - static NSArray *extensionNames = nil; - - // Cache extensions for later quick reference, since this won't change for a given device - dispatch_once(&pred, ^{ - [GPUImageContext useImageProcessingContext]; - NSString *extensionsString = [NSString stringWithCString:(const char *)glGetString(GL_EXTENSIONS) encoding:NSASCIIStringEncoding]; - extensionNames = [extensionsString componentsSeparatedByString:@" "]; - }); - - return [extensionNames containsObject:extension]; -} - - -// http://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_rg.txt - -+ (BOOL)deviceSupportsRedTextures; -{ - static dispatch_once_t pred; - static BOOL supportsRedTextures = NO; - - dispatch_once(&pred, ^{ - supportsRedTextures = [GPUImageContext deviceSupportsOpenGLESExtension:@"GL_EXT_texture_rg"]; - }); - - return supportsRedTextures; -} - -+ (BOOL)deviceSupportsFramebufferReads; -{ - static dispatch_once_t pred; - static BOOL supportsFramebufferReads = NO; - - dispatch_once(&pred, ^{ - supportsFramebufferReads = [GPUImageContext deviceSupportsOpenGLESExtension:@"GL_EXT_shader_framebuffer_fetch"]; - }); - - return supportsFramebufferReads; -} - -+ (CGSize)sizeThatFitsWithinATextureForSize:(CGSize)inputSize; -{ - GLint maxTextureSize = [self maximumTextureSizeForThisDevice]; - if ( (inputSize.width < maxTextureSize) && (inputSize.height < maxTextureSize) ) - { - return inputSize; - } - - CGSize adjustedSize; - if (inputSize.width > inputSize.height) - { - adjustedSize.width = (CGFloat)maxTextureSize; - adjustedSize.height = ((CGFloat)maxTextureSize / inputSize.width) * inputSize.height; - } - else - { - adjustedSize.height = (CGFloat)maxTextureSize; - adjustedSize.width = ((CGFloat)maxTextureSize / inputSize.height) * inputSize.width; - } - - return adjustedSize; -} - -- (void)presentBufferForDisplay; -{ - [self.context presentRenderbuffer:GL_RENDERBUFFER]; -} - -- (GLProgram *)programForVertexShaderString:(NSString *)vertexShaderString fragmentShaderString:(NSString *)fragmentShaderString; -{ - NSString *lookupKeyForShaderProgram = [NSString stringWithFormat:@"V: %@ - F: %@", vertexShaderString, fragmentShaderString]; - GLProgram *programFromCache = [shaderProgramCache objectForKey:lookupKeyForShaderProgram]; - - if (programFromCache == nil) - { - programFromCache = [[GLProgram alloc] initWithVertexShaderString:vertexShaderString fragmentShaderString:fragmentShaderString]; - [shaderProgramCache setObject:programFromCache forKey:lookupKeyForShaderProgram]; -// [shaderProgramUsageHistory addObject:lookupKeyForShaderProgram]; -// if ([shaderProgramUsageHistory count] >= MAXSHADERPROGRAMSALLOWEDINCACHE) -// { -// for (NSUInteger currentShaderProgramRemovedFromCache = 0; currentShaderProgramRemovedFromCache < 10; currentShaderProgramRemovedFromCache++) -// { -// NSString *shaderProgramToRemoveFromCache = [shaderProgramUsageHistory objectAtIndex:0]; -// [shaderProgramUsageHistory removeObjectAtIndex:0]; -// [shaderProgramCache removeObjectForKey:shaderProgramToRemoveFromCache]; -// } -// } - } - - return programFromCache; -} - -- (void)useSharegroup:(EAGLSharegroup *)sharegroup; -{ - NSAssert(_context == nil, @"Unable to use a share group when the context has already been created. Call this method before you use the context for the first time."); - - _sharegroup = sharegroup; -} - -- (EAGLContext *)createContext; -{ - EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:_sharegroup]; - NSAssert(context != nil, @"Unable to create an OpenGL ES 2.0 context. The GPUImage framework requires OpenGL ES 2.0 support to work."); - return context; -} - - -#pragma mark - -#pragma mark Manage fast texture upload - -+ (BOOL)supportsFastTextureUpload; -{ -#if TARGET_IPHONE_SIMULATOR - return NO; -#else - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wtautological-pointer-compare" - return (CVOpenGLESTextureCacheCreate != NULL); -#pragma clang diagnostic pop - -#endif -} - -#pragma mark - -#pragma mark Accessors - -- (EAGLContext *)context; -{ - if (_context == nil) - { - _context = [self createContext]; - [EAGLContext setCurrentContext:_context]; - - // Set up a few global settings for the image processing pipeline - glDisable(GL_DEPTH_TEST); - } - - return _context; -} - -- (CVOpenGLESTextureCacheRef)coreVideoTextureCache; -{ - if (_coreVideoTextureCache == NULL) - { -#if defined(__IPHONE_6_0) - CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, [self context], NULL, &_coreVideoTextureCache); -#else - CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, (__bridge void *)[self context], NULL, &_coreVideoTextureCache); -#endif - - if (err) - { - NSAssert(NO, @"Error at CVOpenGLESTextureCacheCreate %d", err); - } - - } - - return _coreVideoTextureCache; -} - -- (GPUImageFramebufferCache *)framebufferCache; -{ - if (_framebufferCache == nil) - { - _framebufferCache = [[GPUImageFramebufferCache alloc] init]; - } - - return _framebufferCache; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m deleted file mode 100755 index addc0a79..00000000 --- a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.m +++ /dev/null @@ -1,1016 +0,0 @@ -#import "GPUImageMovieWriter.h" - -#import "GPUImageContext.h" -#import "GLProgram.h" -#import "GPUImageFilter.h" - -NSString *const kGPUImageColorSwizzlingFragmentShaderString = SHADER_STRING -( - varying highp vec2 textureCoordinate; - - uniform sampler2D inputImageTexture; - - void main() - { - gl_FragColor = texture2D(inputImageTexture, textureCoordinate).bgra; - } -); - - -@interface GPUImageMovieWriter () -{ - GLuint movieFramebuffer, movieRenderbuffer; - - GLProgram *colorSwizzlingProgram; - GLint colorSwizzlingPositionAttribute, colorSwizzlingTextureCoordinateAttribute; - GLint colorSwizzlingInputTextureUniform; - - GPUImageFramebuffer *firstInputFramebuffer; - - BOOL discont; - CMTime startTime, previousFrameTime, previousAudioTime; - CMTime offsetTime; - - dispatch_queue_t audioQueue, videoQueue; - BOOL audioEncodingIsFinished, videoEncodingIsFinished; - - BOOL isRecording; -} - -// Movie recording -- (void)initializeMovieWithOutputSettings:(NSMutableDictionary *)outputSettings; - -// Frame rendering -- (void)createDataFBO; -- (void)destroyDataFBO; -- (void)setFilterFBO; - -- (void)renderAtInternalSizeUsingFramebuffer:(GPUImageFramebuffer *)inputFramebufferToUse; - -@end - -@implementation GPUImageMovieWriter - -@synthesize hasAudioTrack = _hasAudioTrack; -@synthesize encodingLiveVideo = _encodingLiveVideo; -@synthesize shouldPassthroughAudio = _shouldPassthroughAudio; -@synthesize completionBlock; -@synthesize failureBlock; -@synthesize videoInputReadyCallback; -@synthesize audioInputReadyCallback; -@synthesize enabled; -@synthesize shouldInvalidateAudioSampleWhenDone = _shouldInvalidateAudioSampleWhenDone; -@synthesize paused = _paused; -@synthesize movieWriterContext = _movieWriterContext; - -@synthesize delegate = _delegate; - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize; -{ - return [self initWithMovieURL:newMovieURL size:newSize fileType:AVFileTypeQuickTimeMovie outputSettings:nil]; -} - -- (id)initWithMovieURL:(NSURL *)newMovieURL size:(CGSize)newSize fileType:(NSString *)newFileType outputSettings:(NSMutableDictionary *)outputSettings; -{ - if (!(self = [super init])) - { - return nil; - } - - _shouldInvalidateAudioSampleWhenDone = NO; - - self.enabled = YES; - alreadyFinishedRecording = NO; - videoEncodingIsFinished = NO; - audioEncodingIsFinished = NO; - - discont = NO; - videoSize = newSize; - movieURL = newMovieURL; - fileType = newFileType; - startTime = kCMTimeInvalid; - _encodingLiveVideo = [[outputSettings objectForKey:@"EncodingLiveVideo"] isKindOfClass:[NSNumber class]] ? [[outputSettings objectForKey:@"EncodingLiveVideo"] boolValue] : YES; - previousFrameTime = kCMTimeNegativeInfinity; - previousAudioTime = kCMTimeNegativeInfinity; - inputRotation = kGPUImageNoRotation; - - _movieWriterContext = [[GPUImageContext alloc] init]; - [_movieWriterContext useSharegroup:[[[GPUImageContext sharedImageProcessingContext] context] sharegroup]]; - - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - [_movieWriterContext useAsCurrentContext]; - - if ([GPUImageContext supportsFastTextureUpload]) - { - colorSwizzlingProgram = [_movieWriterContext programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; - } - else - { - colorSwizzlingProgram = [_movieWriterContext programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImageColorSwizzlingFragmentShaderString]; - } - - if (!colorSwizzlingProgram.initialized) - { - [colorSwizzlingProgram addAttribute:@"position"]; - [colorSwizzlingProgram addAttribute:@"inputTextureCoordinate"]; - - if (![colorSwizzlingProgram link]) - { - NSString *progLog = [colorSwizzlingProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [colorSwizzlingProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [colorSwizzlingProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - colorSwizzlingProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - colorSwizzlingPositionAttribute = [colorSwizzlingProgram attributeIndex:@"position"]; - colorSwizzlingTextureCoordinateAttribute = [colorSwizzlingProgram attributeIndex:@"inputTextureCoordinate"]; - colorSwizzlingInputTextureUniform = [colorSwizzlingProgram uniformIndex:@"inputImageTexture"]; - - [_movieWriterContext setContextShaderProgram:colorSwizzlingProgram]; - - glEnableVertexAttribArray(colorSwizzlingPositionAttribute); - glEnableVertexAttribArray(colorSwizzlingTextureCoordinateAttribute); - }); - - [self initializeMovieWithOutputSettings:outputSettings]; - - return self; -} - -- (void)dealloc; -{ - [self destroyDataFBO]; - -#if !OS_OBJECT_USE_OBJC - if( audioQueue != NULL ) - { - dispatch_release(audioQueue); - } - if( videoQueue != NULL ) - { - dispatch_release(videoQueue); - } -#endif -} - -#pragma mark - -#pragma mark Movie recording - -- (void)initializeMovieWithOutputSettings:(NSDictionary *)outputSettings; -{ - isRecording = NO; - - self.enabled = YES; - NSError *error = nil; - assetWriter = [[AVAssetWriter alloc] initWithURL:movieURL fileType:fileType error:&error]; - if (error != nil) - { - NSLog(@"Error: %@", error); - if (failureBlock) - { - failureBlock(error); - } - else - { - if(self.delegate && [self.delegate respondsToSelector:@selector(movieRecordingFailedWithError:)]) - { - [self.delegate movieRecordingFailedWithError:error]; - } - } - } - - // Set this to make sure that a functional movie is produced, even if the recording is cut off mid-stream. Only the last second should be lost in that case. - assetWriter.movieFragmentInterval = CMTimeMakeWithSeconds(1.0, 1000); - - // use default output settings if none specified - if (outputSettings == nil) - { - NSMutableDictionary *settings = [[NSMutableDictionary alloc] init]; - [settings setObject:AVVideoCodecH264 forKey:AVVideoCodecKey]; - [settings setObject:[NSNumber numberWithInt:videoSize.width] forKey:AVVideoWidthKey]; - [settings setObject:[NSNumber numberWithInt:videoSize.height] forKey:AVVideoHeightKey]; - outputSettings = settings; - } - // custom output settings specified - else - { - __unused NSString *videoCodec = [outputSettings objectForKey:AVVideoCodecKey]; - __unused NSNumber *width = [outputSettings objectForKey:AVVideoWidthKey]; - __unused NSNumber *height = [outputSettings objectForKey:AVVideoHeightKey]; - - NSAssert(videoCodec && width && height, @"OutputSettings is missing required parameters."); - - if( [outputSettings objectForKey:@"EncodingLiveVideo"] ) { - NSMutableDictionary *tmp = [outputSettings mutableCopy]; - [tmp removeObjectForKey:@"EncodingLiveVideo"]; - outputSettings = tmp; - } - } - - /* - NSDictionary *videoCleanApertureSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:videoSize.width], AVVideoCleanApertureWidthKey, - [NSNumber numberWithInt:videoSize.height], AVVideoCleanApertureHeightKey, - [NSNumber numberWithInt:0], AVVideoCleanApertureHorizontalOffsetKey, - [NSNumber numberWithInt:0], AVVideoCleanApertureVerticalOffsetKey, - nil]; - - NSDictionary *videoAspectRatioSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:3], AVVideoPixelAspectRatioHorizontalSpacingKey, - [NSNumber numberWithInt:3], AVVideoPixelAspectRatioVerticalSpacingKey, - nil]; - - NSMutableDictionary * compressionProperties = [[NSMutableDictionary alloc] init]; - [compressionProperties setObject:videoCleanApertureSettings forKey:AVVideoCleanApertureKey]; - [compressionProperties setObject:videoAspectRatioSettings forKey:AVVideoPixelAspectRatioKey]; - [compressionProperties setObject:[NSNumber numberWithInt: 2000000] forKey:AVVideoAverageBitRateKey]; - [compressionProperties setObject:[NSNumber numberWithInt: 16] forKey:AVVideoMaxKeyFrameIntervalKey]; - [compressionProperties setObject:AVVideoProfileLevelH264Main31 forKey:AVVideoProfileLevelKey]; - - [outputSettings setObject:compressionProperties forKey:AVVideoCompressionPropertiesKey]; - */ - - assetWriterVideoInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:outputSettings]; - assetWriterVideoInput.expectsMediaDataInRealTime = _encodingLiveVideo; - - // You need to use BGRA for the video in order to get realtime encoding. I use a color-swizzling shader to line up glReadPixels' normal RGBA output with the movie input's BGRA. - NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32BGRA], kCVPixelBufferPixelFormatTypeKey, - [NSNumber numberWithInt:videoSize.width], kCVPixelBufferWidthKey, - [NSNumber numberWithInt:videoSize.height], kCVPixelBufferHeightKey, - nil]; -// NSDictionary *sourcePixelBufferAttributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], kCVPixelBufferPixelFormatTypeKey, -// nil]; - - assetWriterPixelBufferInput = [AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:assetWriterVideoInput sourcePixelBufferAttributes:sourcePixelBufferAttributesDictionary]; - - [assetWriter addInput:assetWriterVideoInput]; -} - -- (void)setEncodingLiveVideo:(BOOL) value -{ - _encodingLiveVideo = value; - if (isRecording) { - NSAssert(NO, @"Can not change Encoding Live Video while recording"); - } - else - { - assetWriterVideoInput.expectsMediaDataInRealTime = _encodingLiveVideo; - assetWriterAudioInput.expectsMediaDataInRealTime = _encodingLiveVideo; - } -} - -- (void)startRecording; -{ - alreadyFinishedRecording = NO; - startTime = kCMTimeInvalid; - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - if (audioInputReadyCallback == NULL) - { - [assetWriter startWriting]; - } - }); - isRecording = YES; - // [assetWriter startSessionAtSourceTime:kCMTimeZero]; -} - -- (void)startRecordingInOrientation:(CGAffineTransform)orientationTransform; -{ - assetWriterVideoInput.transform = orientationTransform; - - [self startRecording]; -} - -- (void)cancelRecording; -{ - if (assetWriter.status == AVAssetWriterStatusCompleted) - { - return; - } - - isRecording = NO; - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - alreadyFinishedRecording = YES; - - if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) - { - videoEncodingIsFinished = YES; - [assetWriterVideoInput markAsFinished]; - } - if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) - { - audioEncodingIsFinished = YES; - [assetWriterAudioInput markAsFinished]; - } - [assetWriter cancelWriting]; - }); -} - -- (void)finishRecording; -{ - [self finishRecordingWithCompletionHandler:NULL]; -} - -- (void)finishRecordingWithCompletionHandler:(void (^)(void))handler; -{ - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - isRecording = NO; - - if (assetWriter.status == AVAssetWriterStatusCompleted || assetWriter.status == AVAssetWriterStatusCancelled || assetWriter.status == AVAssetWriterStatusUnknown) - { - if (handler) - runAsynchronouslyOnContextQueue(_movieWriterContext, handler); - return; - } - if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) - { - videoEncodingIsFinished = YES; - [assetWriterVideoInput markAsFinished]; - } - if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) - { - audioEncodingIsFinished = YES; - [assetWriterAudioInput markAsFinished]; - } -#if (!defined(__IPHONE_6_0) || (__IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0)) - // Not iOS 6 SDK - [assetWriter finishWriting]; - if (handler) - runAsynchronouslyOnContextQueue(_movieWriterContext,handler); -#else - // iOS 6 SDK - if ([assetWriter respondsToSelector:@selector(finishWritingWithCompletionHandler:)]) { - // Running iOS 6 - [assetWriter finishWritingWithCompletionHandler:(handler ?: ^{ })]; - } - else { - // Not running iOS 6 -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [assetWriter finishWriting]; -#pragma clang diagnostic pop - if (handler) - runAsynchronouslyOnContextQueue(_movieWriterContext, handler); - } -#endif - }); -} - -- (void)processAudioBuffer:(CMSampleBufferRef)audioBuffer; -{ - if (!isRecording || _paused) - { - return; - } - -// if (_hasAudioTrack && CMTIME_IS_VALID(startTime)) - if (_hasAudioTrack) - { - CFRetain(audioBuffer); - - CMTime currentSampleTime = CMSampleBufferGetOutputPresentationTimeStamp(audioBuffer); - - if (CMTIME_IS_INVALID(startTime)) - { - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - if ((audioInputReadyCallback == NULL) && (assetWriter.status != AVAssetWriterStatusWriting)) - { - [assetWriter startWriting]; - } - [assetWriter startSessionAtSourceTime:currentSampleTime]; - startTime = currentSampleTime; - }); - } - - if (!assetWriterAudioInput.readyForMoreMediaData && _encodingLiveVideo) - { - NSLog(@"1: Had to drop an audio frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - if (_shouldInvalidateAudioSampleWhenDone) - { - CMSampleBufferInvalidate(audioBuffer); - } - CFRelease(audioBuffer); - return; - } - - if (discont) { - discont = NO; - - CMTime current; - if (offsetTime.value > 0) { - current = CMTimeSubtract(currentSampleTime, offsetTime); - } else { - current = currentSampleTime; - } - - CMTime offset = CMTimeSubtract(current, previousAudioTime); - - if (offsetTime.value == 0) { - offsetTime = offset; - } else { - offsetTime = CMTimeAdd(offsetTime, offset); - } - } - - if (offsetTime.value > 0) { - CFRelease(audioBuffer); - audioBuffer = [self adjustTime:audioBuffer by:offsetTime]; - CFRetain(audioBuffer); - } - - // record most recent time so we know the length of the pause - currentSampleTime = CMSampleBufferGetPresentationTimeStamp(audioBuffer); - - previousAudioTime = currentSampleTime; - - //if the consumer wants to do something with the audio samples before writing, let him. - if (self.audioProcessingCallback) { - //need to introspect into the opaque CMBlockBuffer structure to find its raw sample buffers. - CMBlockBufferRef buffer = CMSampleBufferGetDataBuffer(audioBuffer); - CMItemCount numSamplesInBuffer = CMSampleBufferGetNumSamples(audioBuffer); - AudioBufferList audioBufferList; - - CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(audioBuffer, - NULL, - &audioBufferList, - sizeof(audioBufferList), - NULL, - NULL, - kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, - &buffer - ); - //passing a live pointer to the audio buffers, try to process them in-place or we might have syncing issues. - for (int bufferCount=0; bufferCount < audioBufferList.mNumberBuffers; bufferCount++) { - SInt16 *samples = (SInt16 *)audioBufferList.mBuffers[bufferCount].mData; - self.audioProcessingCallback(&samples, numSamplesInBuffer); - } - } - -// NSLog(@"Recorded audio sample time: %lld, %d, %lld", currentSampleTime.value, currentSampleTime.timescale, currentSampleTime.epoch); - void(^write)() = ^() { - while( ! assetWriterAudioInput.readyForMoreMediaData && ! _encodingLiveVideo && ! audioEncodingIsFinished ) { - NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.5]; - //NSLog(@"audio waiting..."); - [[NSRunLoop currentRunLoop] runUntilDate:maxDate]; - } - if (!assetWriterAudioInput.readyForMoreMediaData) - { - NSLog(@"2: Had to drop an audio frame %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - } - else if(assetWriter.status == AVAssetWriterStatusWriting) - { - if (![assetWriterAudioInput appendSampleBuffer:audioBuffer]) - NSLog(@"Problem appending audio buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - } - else - { - //NSLog(@"Wrote an audio frame %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, currentSampleTime))); - } - - if (_shouldInvalidateAudioSampleWhenDone) - { - CMSampleBufferInvalidate(audioBuffer); - } - CFRelease(audioBuffer); - }; -// runAsynchronouslyOnContextQueue(_movieWriterContext, write); - if( _encodingLiveVideo ) - - { - runAsynchronouslyOnContextQueue(_movieWriterContext, write); - } - else - { - write(); - } - } -} - -- (void)enableSynchronizationCallbacks; -{ - if (videoInputReadyCallback != NULL) - { - if( assetWriter.status != AVAssetWriterStatusWriting ) - { - [assetWriter startWriting]; - } - videoQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.videoReadingQueue", GPUImageDefaultQueueAttribute()); - [assetWriterVideoInput requestMediaDataWhenReadyOnQueue:videoQueue usingBlock:^{ - if( _paused ) - { - //NSLog(@"video requestMediaDataWhenReadyOnQueue paused"); - // if we don't sleep, we'll get called back almost immediately, chewing up CPU - usleep(10000); - return; - } - //NSLog(@"video requestMediaDataWhenReadyOnQueue begin"); - while( assetWriterVideoInput.readyForMoreMediaData && ! _paused ) - { - if( videoInputReadyCallback && ! videoInputReadyCallback() && ! videoEncodingIsFinished ) - { - runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ - if( assetWriter.status == AVAssetWriterStatusWriting && ! videoEncodingIsFinished ) - { - videoEncodingIsFinished = YES; - [assetWriterVideoInput markAsFinished]; - } - }); - } - } - //NSLog(@"video requestMediaDataWhenReadyOnQueue end"); - }]; - } - - if (audioInputReadyCallback != NULL) - { - audioQueue = dispatch_queue_create("com.sunsetlakesoftware.GPUImage.audioReadingQueue", GPUImageDefaultQueueAttribute()); - [assetWriterAudioInput requestMediaDataWhenReadyOnQueue:audioQueue usingBlock:^{ - if( _paused ) - { - //NSLog(@"audio requestMediaDataWhenReadyOnQueue paused"); - // if we don't sleep, we'll get called back almost immediately, chewing up CPU - usleep(10000); - return; - } - //NSLog(@"audio requestMediaDataWhenReadyOnQueue begin"); - while( assetWriterAudioInput.readyForMoreMediaData && ! _paused ) - { - if( audioInputReadyCallback && ! audioInputReadyCallback() && ! audioEncodingIsFinished ) - { - runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ - if( assetWriter.status == AVAssetWriterStatusWriting && ! audioEncodingIsFinished ) - { - audioEncodingIsFinished = YES; - [assetWriterAudioInput markAsFinished]; - } - }); - } - } - //NSLog(@"audio requestMediaDataWhenReadyOnQueue end"); - }]; - } - -} - -#pragma mark - -#pragma mark Frame rendering - -- (void)createDataFBO; -{ - glActiveTexture(GL_TEXTURE1); - glGenFramebuffers(1, &movieFramebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, movieFramebuffer); - - if ([GPUImageContext supportsFastTextureUpload]) - { - // Code originally sourced from http://allmybrain.com/2011/12/08/rendering-to-a-texture-with-ios-5-texture-cache-api/ - - - CVPixelBufferPoolCreatePixelBuffer (NULL, [assetWriterPixelBufferInput pixelBufferPool], &renderTarget); - - /* AVAssetWriter will use BT.601 conversion matrix for RGB to YCbCr conversion - * regardless of the kCVImageBufferYCbCrMatrixKey value. - * Tagging the resulting video file as BT.601, is the best option right now. - * Creating a proper BT.709 video is not possible at the moment. - */ - CVBufferSetAttachment(renderTarget, kCVImageBufferColorPrimariesKey, kCVImageBufferColorPrimaries_ITU_R_709_2, kCVAttachmentMode_ShouldPropagate); - CVBufferSetAttachment(renderTarget, kCVImageBufferYCbCrMatrixKey, kCVImageBufferYCbCrMatrix_ITU_R_601_4, kCVAttachmentMode_ShouldPropagate); - CVBufferSetAttachment(renderTarget, kCVImageBufferTransferFunctionKey, kCVImageBufferTransferFunction_ITU_R_709_2, kCVAttachmentMode_ShouldPropagate); - - CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault, [_movieWriterContext coreVideoTextureCache], renderTarget, - NULL, // texture attributes - GL_TEXTURE_2D, - GL_RGBA, // opengl format - (int)videoSize.width, - (int)videoSize.height, - GL_BGRA, // native iOS format - GL_UNSIGNED_BYTE, - 0, - &renderTexture); - - glBindTexture(CVOpenGLESTextureGetTarget(renderTexture), CVOpenGLESTextureGetName(renderTexture)); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); - } - else - { - glGenRenderbuffers(1, &movieRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, movieRenderbuffer); - glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, (int)videoSize.width, (int)videoSize.height); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, movieRenderbuffer); - } - - - __unused GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - - NSAssert(status == GL_FRAMEBUFFER_COMPLETE, @"Incomplete filter FBO: %d", status); -} - -- (void)destroyDataFBO; -{ - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - [_movieWriterContext useAsCurrentContext]; - - if (movieFramebuffer) - { - glDeleteFramebuffers(1, &movieFramebuffer); - movieFramebuffer = 0; - } - - if (movieRenderbuffer) - { - glDeleteRenderbuffers(1, &movieRenderbuffer); - movieRenderbuffer = 0; - } - - if ([GPUImageContext supportsFastTextureUpload]) - { - if (renderTexture) - { - CFRelease(renderTexture); - } - if (renderTarget) - { - CVPixelBufferRelease(renderTarget); - } - - } - }); -} - -- (void)setFilterFBO; -{ - if (!movieFramebuffer) - { - [self createDataFBO]; - } - - glBindFramebuffer(GL_FRAMEBUFFER, movieFramebuffer); - - glViewport(0, 0, (int)videoSize.width, (int)videoSize.height); -} - -- (void)renderAtInternalSizeUsingFramebuffer:(GPUImageFramebuffer *)inputFramebufferToUse; -{ - [_movieWriterContext useAsCurrentContext]; - [self setFilterFBO]; - - [_movieWriterContext setContextShaderProgram:colorSwizzlingProgram]; - - glClearColor(1.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // This needs to be flipped to write out to video correctly - static const GLfloat squareVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - -1.0f, 1.0f, - 1.0f, 1.0f, - }; - - const GLfloat *textureCoordinates = [GPUImageFilter textureCoordinatesForRotation:inputRotation]; - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [inputFramebufferToUse texture]); - glUniform1i(colorSwizzlingInputTextureUniform, 4); - -// NSLog(@"Movie writer framebuffer: %@", inputFramebufferToUse); - - glVertexAttribPointer(colorSwizzlingPositionAttribute, 2, GL_FLOAT, 0, 0, squareVertices); - glVertexAttribPointer(colorSwizzlingTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - glFinish(); -} - -#pragma mark - -#pragma mark GPUImageInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - if (!isRecording || _paused) - { - [firstInputFramebuffer unlock]; - return; - } - - if (discont) { - discont = NO; - CMTime current; - - if (offsetTime.value > 0) { - current = CMTimeSubtract(frameTime, offsetTime); - } else { - current = frameTime; - } - - CMTime offset = CMTimeSubtract(current, previousFrameTime); - - if (offsetTime.value == 0) { - offsetTime = offset; - } else { - offsetTime = CMTimeAdd(offsetTime, offset); - } - } - - if (offsetTime.value > 0) { - frameTime = CMTimeSubtract(frameTime, offsetTime); - } - - // Drop frames forced by images and other things with no time constants - // Also, if two consecutive times with the same value are added to the movie, it aborts recording, so I bail on that case - if ( (CMTIME_IS_INVALID(frameTime)) || (CMTIME_COMPARE_INLINE(frameTime, ==, previousFrameTime)) || (CMTIME_IS_INDEFINITE(frameTime)) ) - { - [firstInputFramebuffer unlock]; - return; - } - - if (CMTIME_IS_INVALID(startTime)) - { - runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - if ((videoInputReadyCallback == NULL) && (assetWriter.status != AVAssetWriterStatusWriting)) - { - [assetWriter startWriting]; - } - - [assetWriter startSessionAtSourceTime:frameTime]; - startTime = frameTime; - }); - } - - GPUImageFramebuffer *inputFramebufferForBlock = firstInputFramebuffer; - glFinish(); - - runAsynchronouslyOnContextQueue(_movieWriterContext, ^{ - if (!assetWriterVideoInput.readyForMoreMediaData && _encodingLiveVideo) - { - [inputFramebufferForBlock unlock]; - NSLog(@"1: Had to drop a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - return; - } - - // Render the frame with swizzled colors, so that they can be uploaded quickly as BGRA frames - [_movieWriterContext useAsCurrentContext]; - [self renderAtInternalSizeUsingFramebuffer:inputFramebufferForBlock]; - - CVPixelBufferRef pixel_buffer = NULL; - - if ([GPUImageContext supportsFastTextureUpload]) - { - pixel_buffer = renderTarget; - CVPixelBufferLockBaseAddress(pixel_buffer, 0); - } - else - { - CVReturn status = CVPixelBufferPoolCreatePixelBuffer (NULL, [assetWriterPixelBufferInput pixelBufferPool], &pixel_buffer); - if ((pixel_buffer == NULL) || (status != kCVReturnSuccess)) - { - CVPixelBufferRelease(pixel_buffer); - return; - } - else - { - CVPixelBufferLockBaseAddress(pixel_buffer, 0); - - GLubyte *pixelBufferData = (GLubyte *)CVPixelBufferGetBaseAddress(pixel_buffer); - glReadPixels(0, 0, videoSize.width, videoSize.height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBufferData); - } - } - - void(^write)() = ^() { - while( ! assetWriterVideoInput.readyForMoreMediaData && ! _encodingLiveVideo && ! videoEncodingIsFinished ) { - NSDate *maxDate = [NSDate dateWithTimeIntervalSinceNow:0.1]; - // NSLog(@"video waiting..."); - [[NSRunLoop currentRunLoop] runUntilDate:maxDate]; - } - if (!assetWriterVideoInput.readyForMoreMediaData) - { - NSLog(@"2: Had to drop a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - } - else if(self.assetWriter.status == AVAssetWriterStatusWriting) - { - if (![assetWriterPixelBufferInput appendPixelBuffer:pixel_buffer withPresentationTime:frameTime]) - NSLog(@"Problem appending pixel buffer at time: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - } - else - { - NSLog(@"Couldn't write a frame"); - //NSLog(@"Wrote a video frame: %@", CFBridgingRelease(CMTimeCopyDescription(kCFAllocatorDefault, frameTime))); - } - CVPixelBufferUnlockBaseAddress(pixel_buffer, 0); - - previousFrameTime = frameTime; - - if (![GPUImageContext supportsFastTextureUpload]) - { - CVPixelBufferRelease(pixel_buffer); - } - }; - - write(); - - [inputFramebufferForBlock unlock]; - }); -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - [newInputFramebuffer lock]; -// runSynchronouslyOnContextQueue(_movieWriterContext, ^{ - firstInputFramebuffer = newInputFramebuffer; -// }); -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ -} - -- (CGSize)maximumOutputSize; -{ - return videoSize; -} - -- (void)endProcessing -{ - if (completionBlock) - { - if (!alreadyFinishedRecording) - { - alreadyFinishedRecording = YES; - completionBlock(); - } - } - else - { - if (_delegate && [_delegate respondsToSelector:@selector(movieRecordingCompleted)]) - { - [_delegate movieRecordingCompleted]; - } - } -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -#pragma mark - -#pragma mark Accessors - -- (void)setHasAudioTrack:(BOOL)newValue -{ - [self setHasAudioTrack:newValue audioSettings:nil]; -} - -- (void)setHasAudioTrack:(BOOL)newValue audioSettings:(NSDictionary *)audioOutputSettings; -{ - _hasAudioTrack = newValue; - - if (_hasAudioTrack) - { - if (_shouldPassthroughAudio) - { - // Do not set any settings so audio will be the same as passthrough - audioOutputSettings = nil; - } - else if (audioOutputSettings == nil) - { - AVAudioSession *sharedAudioSession = [AVAudioSession sharedInstance]; - double preferredHardwareSampleRate; - - if ([sharedAudioSession respondsToSelector:@selector(sampleRate)]) - { - preferredHardwareSampleRate = [sharedAudioSession sampleRate]; - } - else - { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - preferredHardwareSampleRate = [[AVAudioSession sharedInstance] currentHardwareSampleRate]; -#pragma clang diagnostic pop - } - - AudioChannelLayout acl; - bzero( &acl, sizeof(acl)); - acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; - - audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, - [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey, - [ NSNumber numberWithFloat: preferredHardwareSampleRate ], AVSampleRateKey, - [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey, - //[ NSNumber numberWithInt:AVAudioQualityLow], AVEncoderAudioQualityKey, - [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey, - nil]; -/* - AudioChannelLayout acl; - bzero( &acl, sizeof(acl)); - acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; - - audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys: - [ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey, - [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey, - [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey, - [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey, - [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey, - nil];*/ - } - - assetWriterAudioInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings]; - [assetWriter addInput:assetWriterAudioInput]; - assetWriterAudioInput.expectsMediaDataInRealTime = _encodingLiveVideo; - } - else - { - // Remove audio track if it exists - } -} - -- (NSArray*)metaData { - return assetWriter.metadata; -} - -- (void)setMetaData:(NSArray*)metaData { - assetWriter.metadata = metaData; -} - -- (CMTime)duration { - if( ! CMTIME_IS_VALID(startTime) ) - return kCMTimeZero; - if( ! CMTIME_IS_NEGATIVE_INFINITY(previousFrameTime) ) - return CMTimeSubtract(previousFrameTime, startTime); - if( ! CMTIME_IS_NEGATIVE_INFINITY(previousAudioTime) ) - return CMTimeSubtract(previousAudioTime, startTime); - return kCMTimeZero; -} - -- (CGAffineTransform)transform { - return assetWriterVideoInput.transform; -} - -- (void)setTransform:(CGAffineTransform)transform { - assetWriterVideoInput.transform = transform; -} - -- (AVAssetWriter*)assetWriter { - return assetWriter; -} - -- (void)setPaused:(BOOL)newValue { - if (_paused != newValue) { - _paused = newValue; - - if (_paused) { - discont = YES; - } - } -} - -- (CMSampleBufferRef)adjustTime:(CMSampleBufferRef) sample by:(CMTime) offset { - CMItemCount count; - CMSampleBufferGetSampleTimingInfoArray(sample, 0, nil, &count); - CMSampleTimingInfo* pInfo = malloc(sizeof(CMSampleTimingInfo) * count); - CMSampleBufferGetSampleTimingInfoArray(sample, count, pInfo, &count); - - for (CMItemCount i = 0; i < count; i++) { - pInfo[i].decodeTimeStamp = CMTimeSubtract(pInfo[i].decodeTimeStamp, offset); - pInfo[i].presentationTimeStamp = CMTimeSubtract(pInfo[i].presentationTimeStamp, offset); - } - - CMSampleBufferRef sout; - CMSampleBufferCreateCopyWithNewTiming(nil, sample, count, pInfo, &sout); - free(pInfo); - - return sout; -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m deleted file mode 100644 index 71ef8f97..00000000 --- a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.m +++ /dev/null @@ -1,103 +0,0 @@ -// -// GPUImagePicture+TextureSubimage.m -// GPUImage -// -// Created by Jack Wu on 2014-05-28. -// Copyright (c) 2014 Brad Larson. All rights reserved. -// - -#import "GPUImagePicture+TextureSubimage.h" - -@implementation GPUImagePicture (TextureSubimage) - -- (void)replaceTextureWithSubimage:(UIImage*)subimage { - return [self replaceTextureWithSubCGImage:[subimage CGImage]]; -} - -- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource { - CGRect rect = (CGRect) {.origin = CGPointZero, .size = (CGSize){.width = CGImageGetWidth(subimageSource), .height = CGImageGetHeight(subimageSource)}}; - return [self replaceTextureWithSubCGImage:subimageSource inRect:rect]; -} - -- (void)replaceTextureWithSubimage:(UIImage*)subimage inRect:(CGRect)subRect { - return [self replaceTextureWithSubCGImage:[subimage CGImage] inRect:subRect]; -} - -- (void)replaceTextureWithSubCGImage:(CGImageRef)subimageSource inRect:(CGRect)subRect { - NSAssert(outputFramebuffer, @"Picture must be initialized first before replacing subtexture"); - NSAssert(self.framebufferForOutput.textureOptions.internalFormat == GL_RGBA, @"For replacing subtexture the internal texture format must be GL_RGBA."); - - CGRect subimageRect = (CGRect){.origin = CGPointZero, .size = (CGSize){.width = CGImageGetWidth(subimageSource), .height = CGImageGetHeight(subimageSource)}}; - NSAssert(!CGRectIsEmpty(subimageRect), @"Passed sub image must not be empty - it should be at least 1px tall and wide"); - NSAssert(!CGRectIsEmpty(subRect), @"Passed sub rect must not be empty"); - - NSAssert(CGSizeEqualToSize(subimageRect.size, subRect.size), @"Subimage size must match the size of sub rect"); - - // We don't have to worry about scaling the subimage or finding a power of two size. - // The initialization has taken care of that for us. - - dispatch_semaphore_signal(imageUpdateSemaphore); - - BOOL shouldRedrawUsingCoreGraphics = NO; - - // Since internal format is always RGBA, we need the input data in RGBA as well. - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(subimageSource); - CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; - if (byteOrderInfo != kCGBitmapByteOrderDefault && byteOrderInfo != kCGBitmapByteOrder32Big) { - shouldRedrawUsingCoreGraphics = YES; - } - else { - CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; - if (alphaInfo != kCGImageAlphaPremultipliedLast && alphaInfo != kCGImageAlphaLast && alphaInfo != kCGImageAlphaNoneSkipLast) { - shouldRedrawUsingCoreGraphics = YES; - } - } - - GLubyte *imageData = NULL; - CFDataRef dataFromImageDataProvider; - if (shouldRedrawUsingCoreGraphics) - { - // For resized or incompatible image: redraw - imageData = (GLubyte *) calloc(1, (int)subimageRect.size.width * (int)subimageRect.size.height * 4); - - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - - CGContextRef imageContext = CGBitmapContextCreate(imageData, (size_t)subimageRect.size.width, (size_t)subimageRect.size.height, 8, (size_t)subimageRect.size.width * 4, genericRGBColorspace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast); - - CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, subimageRect.size.width, subimageRect.size.height), subimageSource); - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - } - else - { - // Access the raw image bytes directly - dataFromImageDataProvider = CGDataProviderCopyData(CGImageGetDataProvider(subimageSource)); - imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider); - } - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - [outputFramebuffer disableReferenceCounting]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - - // no need to use self.outputTextureOptions here since pictures need this texture formats and type - glTexSubImage2D(GL_TEXTURE_2D, 0, subRect.origin.x, subRect.origin.y, (GLint)subRect.size.width, subRect.size.height, GL_RGBA, GL_UNSIGNED_BYTE, imageData); - - if (self.shouldSmoothlyScaleOutput) - { - glGenerateMipmap(GL_TEXTURE_2D); - } - glBindTexture(GL_TEXTURE_2D, 0); - }); - - if (shouldRedrawUsingCoreGraphics) - { - free(imageData); - } - else - { - CFRelease(dataFromImageDataProvider); - } -} -@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m deleted file mode 100755 index c525f4dc..00000000 --- a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.m +++ /dev/null @@ -1,371 +0,0 @@ -#import "GPUImagePicture.h" - -@implementation GPUImagePicture - -#pragma mark - -#pragma mark Initialization and teardown - -- (id)initWithURL:(NSURL *)url; -{ - NSData *imageData = [[NSData alloc] initWithContentsOfURL:url]; - - if (!(self = [self initWithData:imageData])) - { - return nil; - } - - return self; -} - -- (id)initWithData:(NSData *)imageData; -{ - UIImage *inputImage = [[UIImage alloc] initWithData:imageData]; - - if (!(self = [self initWithImage:inputImage])) - { - return nil; - } - - return self; -} - -- (id)initWithImage:(UIImage *)newImageSource; -{ - if (!(self = [self initWithImage:newImageSource smoothlyScaleOutput:NO])) - { - return nil; - } - - return self; -} - -- (id)initWithCGImage:(CGImageRef)newImageSource; -{ - if (!(self = [self initWithCGImage:newImageSource smoothlyScaleOutput:NO])) - { - return nil; - } - return self; -} - -- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; -{ - return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:smoothlyScaleOutput]; -} - -- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput; -{ - return [self initWithCGImage:newImageSource smoothlyScaleOutput:smoothlyScaleOutput removePremultiplication:NO]; -} - -- (id)initWithImage:(UIImage *)newImageSource removePremultiplication:(BOOL)removePremultiplication; -{ - return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:NO removePremultiplication:removePremultiplication]; -} - -- (id)initWithCGImage:(CGImageRef)newImageSource removePremultiplication:(BOOL)removePremultiplication; -{ - return [self initWithCGImage:newImageSource smoothlyScaleOutput:NO removePremultiplication:removePremultiplication]; -} - -- (id)initWithImage:(UIImage *)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; -{ - return [self initWithCGImage:[newImageSource CGImage] smoothlyScaleOutput:smoothlyScaleOutput removePremultiplication:removePremultiplication]; -} - -- (id)initWithCGImage:(CGImageRef)newImageSource smoothlyScaleOutput:(BOOL)smoothlyScaleOutput removePremultiplication:(BOOL)removePremultiplication; -{ - if (!(self = [super init])) - { - return nil; - } - - hasProcessedImage = NO; - self.shouldSmoothlyScaleOutput = smoothlyScaleOutput; - imageUpdateSemaphore = dispatch_semaphore_create(0); - dispatch_semaphore_signal(imageUpdateSemaphore); - - - // TODO: Dispatch this whole thing asynchronously to move image loading off main thread - CGFloat widthOfImage = CGImageGetWidth(newImageSource); - CGFloat heightOfImage = CGImageGetHeight(newImageSource); - - // If passed an empty image reference, CGContextDrawImage will fail in future versions of the SDK. - NSAssert( widthOfImage > 0 && heightOfImage > 0, @"Passed image must not be empty - it should be at least 1px tall and wide"); - - pixelSizeOfImage = CGSizeMake(widthOfImage, heightOfImage); - CGSize pixelSizeToUseForTexture = pixelSizeOfImage; - - BOOL shouldRedrawUsingCoreGraphics = NO; - - // For now, deal with images larger than the maximum texture size by resizing to be within that limit - CGSize scaledImageSizeToFitOnGPU = [GPUImageContext sizeThatFitsWithinATextureForSize:pixelSizeOfImage]; - if (!CGSizeEqualToSize(scaledImageSizeToFitOnGPU, pixelSizeOfImage)) - { - pixelSizeOfImage = scaledImageSizeToFitOnGPU; - pixelSizeToUseForTexture = pixelSizeOfImage; - shouldRedrawUsingCoreGraphics = YES; - } - - if (self.shouldSmoothlyScaleOutput) - { - // In order to use mipmaps, you need to provide power-of-two textures, so convert to the next largest power of two and stretch to fill - CGFloat powerClosestToWidth = ceil(log2(pixelSizeOfImage.width)); - CGFloat powerClosestToHeight = ceil(log2(pixelSizeOfImage.height)); - - pixelSizeToUseForTexture = CGSizeMake(pow(2.0, powerClosestToWidth), pow(2.0, powerClosestToHeight)); - - shouldRedrawUsingCoreGraphics = YES; - } - - GLubyte *imageData = NULL; - CFDataRef dataFromImageDataProvider = NULL; - GLenum format = GL_BGRA; - BOOL isLitteEndian = YES; - BOOL alphaFirst = NO; - BOOL premultiplied = NO; - - if (!shouldRedrawUsingCoreGraphics) { - /* Check that the memory layout is compatible with GL, as we cannot use glPixelStore to - * tell GL about the memory layout with GLES. - */ - if (CGImageGetBytesPerRow(newImageSource) != CGImageGetWidth(newImageSource) * 4 || - CGImageGetBitsPerPixel(newImageSource) != 32 || - CGImageGetBitsPerComponent(newImageSource) != 8) - { - shouldRedrawUsingCoreGraphics = YES; - } else { - /* Check that the bitmap pixel format is compatible with GL */ - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(newImageSource); - if ((bitmapInfo & kCGBitmapFloatComponents) != 0) { - /* We don't support float components for use directly in GL */ - shouldRedrawUsingCoreGraphics = YES; - } else { - CGBitmapInfo byteOrderInfo = bitmapInfo & kCGBitmapByteOrderMask; - if (byteOrderInfo == kCGBitmapByteOrder32Little) { - /* Little endian, for alpha-first we can use this bitmap directly in GL */ - CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; - if (alphaInfo != kCGImageAlphaPremultipliedFirst && alphaInfo != kCGImageAlphaFirst && - alphaInfo != kCGImageAlphaNoneSkipFirst) { - shouldRedrawUsingCoreGraphics = YES; - } - } else if (byteOrderInfo == kCGBitmapByteOrderDefault || byteOrderInfo == kCGBitmapByteOrder32Big) { - isLitteEndian = NO; - /* Big endian, for alpha-last we can use this bitmap directly in GL */ - CGImageAlphaInfo alphaInfo = bitmapInfo & kCGBitmapAlphaInfoMask; - if (alphaInfo != kCGImageAlphaPremultipliedLast && alphaInfo != kCGImageAlphaLast && - alphaInfo != kCGImageAlphaNoneSkipLast) { - shouldRedrawUsingCoreGraphics = YES; - } else { - /* Can access directly using GL_RGBA pixel format */ - premultiplied = alphaInfo == kCGImageAlphaPremultipliedLast || alphaInfo == kCGImageAlphaPremultipliedLast; - alphaFirst = alphaInfo == kCGImageAlphaFirst || alphaInfo == kCGImageAlphaPremultipliedFirst; - format = GL_RGBA; - } - } - } - } - } - - // CFAbsoluteTime elapsedTime, startTime = CFAbsoluteTimeGetCurrent(); - - if (shouldRedrawUsingCoreGraphics) - { - // For resized or incompatible image: redraw - imageData = (GLubyte *) calloc(1, (int)pixelSizeToUseForTexture.width * (int)pixelSizeToUseForTexture.height * 4); - - CGColorSpaceRef genericRGBColorspace = CGColorSpaceCreateDeviceRGB(); - - CGContextRef imageContext = CGBitmapContextCreate(imageData, (size_t)pixelSizeToUseForTexture.width, (size_t)pixelSizeToUseForTexture.height, 8, (size_t)pixelSizeToUseForTexture.width * 4, genericRGBColorspace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); - // CGContextSetBlendMode(imageContext, kCGBlendModeCopy); // From Technical Q&A QA1708: http://developer.apple.com/library/ios/#qa/qa1708/_index.html - CGContextDrawImage(imageContext, CGRectMake(0.0, 0.0, pixelSizeToUseForTexture.width, pixelSizeToUseForTexture.height), newImageSource); - CGContextRelease(imageContext); - CGColorSpaceRelease(genericRGBColorspace); - isLitteEndian = YES; - alphaFirst = YES; - premultiplied = YES; - } - else - { - // Access the raw image bytes directly - dataFromImageDataProvider = CGDataProviderCopyData(CGImageGetDataProvider(newImageSource)); - imageData = (GLubyte *)CFDataGetBytePtr(dataFromImageDataProvider); - } - - if (removePremultiplication && premultiplied) { - NSUInteger totalNumberOfPixels = round(pixelSizeToUseForTexture.width * pixelSizeToUseForTexture.height); - uint32_t *pixelP = (uint32_t *)imageData; - uint32_t pixel; - CGFloat srcR, srcG, srcB, srcA; - - for (NSUInteger idx=0; idx> 24) / 255.0f; - } - else { - srcA = (CGFloat)(pixel & 0x000000ff) / 255.0f; - pixel >>= 8; - } - - srcR = (CGFloat)((pixel & 0x00ff0000) >> 16) / 255.0f; - srcG = (CGFloat)((pixel & 0x0000ff00) >> 8) / 255.0f; - srcB = (CGFloat)(pixel & 0x000000ff) / 255.0f; - - srcR /= srcA; srcG /= srcA; srcB /= srcA; - - pixel = (uint32_t)(srcR * 255.0) << 16; - pixel |= (uint32_t)(srcG * 255.0) << 8; - pixel |= (uint32_t)(srcB * 255.0); - - if (alphaFirst) { - pixel |= (uint32_t)(srcA * 255.0) << 24; - } - else { - pixel <<= 8; - pixel |= (uint32_t)(srcA * 255.0); - } - *pixelP = isLitteEndian ? CFSwapInt32HostToLittle(pixel) : CFSwapInt32HostToBig(pixel); - } - } - - // elapsedTime = (CFAbsoluteTimeGetCurrent() - startTime) * 1000.0; - // NSLog(@"Core Graphics drawing time: %f", elapsedTime); - - // CGFloat currentRedTotal = 0.0f, currentGreenTotal = 0.0f, currentBlueTotal = 0.0f, currentAlphaTotal = 0.0f; - // NSUInteger totalNumberOfPixels = round(pixelSizeToUseForTexture.width * pixelSizeToUseForTexture.height); - // - // for (NSUInteger currentPixel = 0; currentPixel < totalNumberOfPixels; currentPixel++) - // { - // currentBlueTotal += (CGFloat)imageData[(currentPixel * 4)] / 255.0f; - // currentGreenTotal += (CGFloat)imageData[(currentPixel * 4) + 1] / 255.0f; - // currentRedTotal += (CGFloat)imageData[(currentPixel * 4 + 2)] / 255.0f; - // currentAlphaTotal += (CGFloat)imageData[(currentPixel * 4) + 3] / 255.0f; - // } - // - // NSLog(@"Debug, average input image red: %f, green: %f, blue: %f, alpha: %f", currentRedTotal / (CGFloat)totalNumberOfPixels, currentGreenTotal / (CGFloat)totalNumberOfPixels, currentBlueTotal / (CGFloat)totalNumberOfPixels, currentAlphaTotal / (CGFloat)totalNumberOfPixels); - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - outputFramebuffer = [[GPUImageContext sharedFramebufferCache] fetchFramebufferForSize:pixelSizeToUseForTexture onlyTexture:YES]; - [outputFramebuffer disableReferenceCounting]; - - glBindTexture(GL_TEXTURE_2D, [outputFramebuffer texture]); - if (self.shouldSmoothlyScaleOutput) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - } - // no need to use self.outputTextureOptions here since pictures need this texture formats and type - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (int)pixelSizeToUseForTexture.width, (int)pixelSizeToUseForTexture.height, 0, format, GL_UNSIGNED_BYTE, imageData); - - if (self.shouldSmoothlyScaleOutput) - { - glGenerateMipmap(GL_TEXTURE_2D); - } - glBindTexture(GL_TEXTURE_2D, 0); - }); - - if (shouldRedrawUsingCoreGraphics) - { - free(imageData); - } - else - { - if (dataFromImageDataProvider) - { - CFRelease(dataFromImageDataProvider); - } - } - - return self; -} - -// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required. -- (void)dealloc; -{ - [outputFramebuffer enableReferenceCounting]; - [outputFramebuffer unlock]; - -#if !OS_OBJECT_USE_OBJC - if (imageUpdateSemaphore != NULL) - { - dispatch_release(imageUpdateSemaphore); - } -#endif -} - -#pragma mark - -#pragma mark Image rendering - -- (void)removeAllTargets; -{ - [super removeAllTargets]; - hasProcessedImage = NO; -} - -- (void)processImage; -{ - [self processImageWithCompletionHandler:nil]; -} - -- (BOOL)processImageWithCompletionHandler:(void (^)(void))completion; -{ - hasProcessedImage = YES; - - // dispatch_semaphore_wait(imageUpdateSemaphore, DISPATCH_TIME_FOREVER); - - if (dispatch_semaphore_wait(imageUpdateSemaphore, DISPATCH_TIME_NOW) != 0) - { - return NO; - } - - runAsynchronouslyOnVideoProcessingQueue(^{ - for (id currentTarget in targets) - { - NSInteger indexOfObject = [targets indexOfObject:currentTarget]; - NSInteger textureIndexOfTarget = [[targetTextureIndices objectAtIndex:indexOfObject] integerValue]; - - [currentTarget setCurrentlyReceivingMonochromeInput:NO]; - [currentTarget setInputSize:pixelSizeOfImage atIndex:textureIndexOfTarget]; - [currentTarget setInputFramebuffer:outputFramebuffer atIndex:textureIndexOfTarget]; - [currentTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureIndexOfTarget]; - } - - dispatch_semaphore_signal(imageUpdateSemaphore); - - if (completion != nil) { - completion(); - } - }); - - return YES; -} - -- (void)processImageUpToFilter:(GPUImageOutput *)finalFilterInChain withCompletionHandler:(void (^)(UIImage *processedImage))block; -{ - [finalFilterInChain useNextFrameForImageCapture]; - [self processImageWithCompletionHandler:^{ - UIImage *imageFromFilter = [finalFilterInChain imageFromCurrentFramebuffer]; - block(imageFromFilter); - }]; -} - -- (CGSize)outputImageSize; -{ - return pixelSizeOfImage; -} - -- (void)addTarget:(id)newTarget atTextureLocation:(NSInteger)textureLocation; -{ - [super addTarget:newTarget atTextureLocation:textureLocation]; - - if (hasProcessedImage) - { - [newTarget setInputSize:pixelSizeOfImage atIndex:textureLocation]; - [newTarget newFrameReadyAtTime:kCMTimeIndefinite atIndex:textureLocation]; - } -} - -@end diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m b/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m deleted file mode 100755 index e092b80e..00000000 --- a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.m +++ /dev/null @@ -1,484 +0,0 @@ -#import "GPUImageView.h" -#import -#import -#import "GPUImageContext.h" -#import "GPUImageFilter.h" -#import - -#pragma mark - -#pragma mark Private methods and instance variables - -@interface GPUImageView () -{ - GPUImageFramebuffer *inputFramebufferForDisplay; - GLuint displayRenderbuffer, displayFramebuffer; - - GLProgram *displayProgram; - GLint displayPositionAttribute, displayTextureCoordinateAttribute; - GLint displayInputTextureUniform; - - CGSize inputImageSize; - GLfloat imageVertices[8]; - GLfloat backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha; - - CGSize boundsSizeAtFrameBufferEpoch; -} - -@property (assign, nonatomic) NSUInteger aspectRatio; - -// Initialization and teardown -- (void)commonInit; - -// Managing the display FBOs -- (void)createDisplayFramebuffer; -- (void)destroyDisplayFramebuffer; - -// Handling fill mode -- (void)recalculateViewGeometry; - -@end - -@implementation GPUImageView - -@synthesize aspectRatio; -@synthesize sizeInPixels = _sizeInPixels; -@synthesize fillMode = _fillMode; -@synthesize enabled; - -#pragma mark - -#pragma mark Initialization and teardown - -+ (Class)layerClass -{ - return [CAEAGLLayer class]; -} - -- (id)initWithFrame:(CGRect)frame -{ - if (!(self = [super initWithFrame:frame])) - { - return nil; - } - - [self commonInit]; - - return self; -} - --(id)initWithCoder:(NSCoder *)coder -{ - if (!(self = [super initWithCoder:coder])) - { - return nil; - } - - [self commonInit]; - - return self; -} - -- (void)commonInit; -{ - // Set scaling to account for Retina display - if ([self respondsToSelector:@selector(setContentScaleFactor:)]) - { - self.contentScaleFactor = [[UIScreen mainScreen] scale]; - } - - inputRotation = kGPUImageNoRotation; - self.opaque = YES; - self.hidden = NO; - CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; - eaglLayer.opaque = YES; - eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; - - self.enabled = YES; - - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext useImageProcessingContext]; - - displayProgram = [[GPUImageContext sharedImageProcessingContext] programForVertexShaderString:kGPUImageVertexShaderString fragmentShaderString:kGPUImagePassthroughFragmentShaderString]; - if (!displayProgram.initialized) - { - [displayProgram addAttribute:@"position"]; - [displayProgram addAttribute:@"inputTextureCoordinate"]; - - if (![displayProgram link]) - { - NSString *progLog = [displayProgram programLog]; - NSLog(@"Program link log: %@", progLog); - NSString *fragLog = [displayProgram fragmentShaderLog]; - NSLog(@"Fragment shader compile log: %@", fragLog); - NSString *vertLog = [displayProgram vertexShaderLog]; - NSLog(@"Vertex shader compile log: %@", vertLog); - displayProgram = nil; - NSAssert(NO, @"Filter shader link failed"); - } - } - - displayPositionAttribute = [displayProgram attributeIndex:@"position"]; - displayTextureCoordinateAttribute = [displayProgram attributeIndex:@"inputTextureCoordinate"]; - displayInputTextureUniform = [displayProgram uniformIndex:@"inputImageTexture"]; // This does assume a name of "inputTexture" for the fragment shader - - [GPUImageContext setActiveShaderProgram:displayProgram]; - glEnableVertexAttribArray(displayPositionAttribute); - glEnableVertexAttribArray(displayTextureCoordinateAttribute); - - [self setBackgroundColorRed:0.0 green:0.0 blue:0.0 alpha:1.0]; - _fillMode = kGPUImageFillModePreserveAspectRatio; - [self createDisplayFramebuffer]; - }); -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - // The frame buffer needs to be trashed and re-created when the view size changes. - if (!CGSizeEqualToSize(self.bounds.size, boundsSizeAtFrameBufferEpoch) && - !CGSizeEqualToSize(self.bounds.size, CGSizeZero)) { - runSynchronouslyOnVideoProcessingQueue(^{ - [self destroyDisplayFramebuffer]; - [self createDisplayFramebuffer]; - }); - } else if (!CGSizeEqualToSize(self.bounds.size, CGSizeZero)) { - [self recalculateViewGeometry]; - } -} - -- (void)dealloc -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [self destroyDisplayFramebuffer]; - }); -} - -#pragma mark - -#pragma mark Managing the display FBOs - -- (void)createDisplayFramebuffer; -{ - [GPUImageContext useImageProcessingContext]; - - glGenFramebuffers(1, &displayFramebuffer); - glBindFramebuffer(GL_FRAMEBUFFER, displayFramebuffer); - - glGenRenderbuffers(1, &displayRenderbuffer); - glBindRenderbuffer(GL_RENDERBUFFER, displayRenderbuffer); - - [[[GPUImageContext sharedImageProcessingContext] context] renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer]; - - GLint backingWidth, backingHeight; - - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth); - glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight); - - if ( (backingWidth == 0) || (backingHeight == 0) ) - { - [self destroyDisplayFramebuffer]; - return; - } - - _sizeInPixels.width = (CGFloat)backingWidth; - _sizeInPixels.height = (CGFloat)backingHeight; - -// NSLog(@"Backing width: %d, height: %d", backingWidth, backingHeight); - - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, displayRenderbuffer); - - __unused GLuint framebufferCreationStatus = glCheckFramebufferStatus(GL_FRAMEBUFFER); - NSAssert(framebufferCreationStatus == GL_FRAMEBUFFER_COMPLETE, @"Failure with display framebuffer generation for display of size: %f, %f", self.bounds.size.width, self.bounds.size.height); - boundsSizeAtFrameBufferEpoch = self.bounds.size; - - [self recalculateViewGeometry]; -} - -- (void)destroyDisplayFramebuffer; -{ - [GPUImageContext useImageProcessingContext]; - - if (displayFramebuffer) - { - glDeleteFramebuffers(1, &displayFramebuffer); - displayFramebuffer = 0; - } - - if (displayRenderbuffer) - { - glDeleteRenderbuffers(1, &displayRenderbuffer); - displayRenderbuffer = 0; - } -} - -- (void)setDisplayFramebuffer; -{ - if (!displayFramebuffer) - { - [self createDisplayFramebuffer]; - } - - glBindFramebuffer(GL_FRAMEBUFFER, displayFramebuffer); - - glViewport(0, 0, (GLint)_sizeInPixels.width, (GLint)_sizeInPixels.height); -} - -- (void)presentFramebuffer; -{ - glBindRenderbuffer(GL_RENDERBUFFER, displayRenderbuffer); - [[GPUImageContext sharedImageProcessingContext] presentBufferForDisplay]; -} - -#pragma mark - -#pragma mark Handling fill mode - -- (void)recalculateViewGeometry; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - CGFloat heightScaling, widthScaling; - - CGSize currentViewSize = self.bounds.size; - - // CGFloat imageAspectRatio = inputImageSize.width / inputImageSize.height; - // CGFloat viewAspectRatio = currentViewSize.width / currentViewSize.height; - - CGRect insetRect = AVMakeRectWithAspectRatioInsideRect(inputImageSize, self.bounds); - - switch(_fillMode) - { - case kGPUImageFillModeStretch: - { - widthScaling = 1.0; - heightScaling = 1.0; - }; break; - case kGPUImageFillModePreserveAspectRatio: - { - widthScaling = insetRect.size.width / currentViewSize.width; - heightScaling = insetRect.size.height / currentViewSize.height; - }; break; - case kGPUImageFillModePreserveAspectRatioAndFill: - { - // CGFloat widthHolder = insetRect.size.width / currentViewSize.width; - widthScaling = currentViewSize.height / insetRect.size.height; - heightScaling = currentViewSize.width / insetRect.size.width; - }; break; - } - - imageVertices[0] = -widthScaling; - imageVertices[1] = -heightScaling; - imageVertices[2] = widthScaling; - imageVertices[3] = -heightScaling; - imageVertices[4] = -widthScaling; - imageVertices[5] = heightScaling; - imageVertices[6] = widthScaling; - imageVertices[7] = heightScaling; - }); - -// static const GLfloat imageVertices[] = { -// -1.0f, -1.0f, -// 1.0f, -1.0f, -// -1.0f, 1.0f, -// 1.0f, 1.0f, -// }; -} - -- (void)setBackgroundColorRed:(GLfloat)redComponent green:(GLfloat)greenComponent blue:(GLfloat)blueComponent alpha:(GLfloat)alphaComponent; -{ - backgroundColorRed = redComponent; - backgroundColorGreen = greenComponent; - backgroundColorBlue = blueComponent; - backgroundColorAlpha = alphaComponent; -} - -+ (const GLfloat *)textureCoordinatesForRotation:(GPUImageRotationMode)rotationMode; -{ -// static const GLfloat noRotationTextureCoordinates[] = { -// 0.0f, 0.0f, -// 1.0f, 0.0f, -// 0.0f, 1.0f, -// 1.0f, 1.0f, -// }; - - static const GLfloat noRotationTextureCoordinates[] = { - 0.0f, 1.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 0.0f, - }; - - static const GLfloat rotateRightTextureCoordinates[] = { - 1.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotateLeftTextureCoordinates[] = { - 0.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 1.0f, 1.0f, - }; - - static const GLfloat verticalFlipTextureCoordinates[] = { - 0.0f, 0.0f, - 1.0f, 0.0f, - 0.0f, 1.0f, - 1.0f, 1.0f, - }; - - static const GLfloat horizontalFlipTextureCoordinates[] = { - 1.0f, 1.0f, - 0.0f, 1.0f, - 1.0f, 0.0f, - 0.0f, 0.0f, - }; - - static const GLfloat rotateRightVerticalFlipTextureCoordinates[] = { - 1.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 0.0f, - 0.0f, 1.0f, - }; - - static const GLfloat rotateRightHorizontalFlipTextureCoordinates[] = { - 0.0f, 1.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 1.0f, 0.0f, - }; - - static const GLfloat rotate180TextureCoordinates[] = { - 1.0f, 0.0f, - 0.0f, 0.0f, - 1.0f, 1.0f, - 0.0f, 1.0f, - }; - - switch(rotationMode) - { - case kGPUImageNoRotation: return noRotationTextureCoordinates; - case kGPUImageRotateLeft: return rotateLeftTextureCoordinates; - case kGPUImageRotateRight: return rotateRightTextureCoordinates; - case kGPUImageFlipVertical: return verticalFlipTextureCoordinates; - case kGPUImageFlipHorizonal: return horizontalFlipTextureCoordinates; - case kGPUImageRotateRightFlipVertical: return rotateRightVerticalFlipTextureCoordinates; - case kGPUImageRotateRightFlipHorizontal: return rotateRightHorizontalFlipTextureCoordinates; - case kGPUImageRotate180: return rotate180TextureCoordinates; - } -} - -#pragma mark - -#pragma mark GPUInput protocol - -- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - [GPUImageContext setActiveShaderProgram:displayProgram]; - [self setDisplayFramebuffer]; - - glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glActiveTexture(GL_TEXTURE4); - glBindTexture(GL_TEXTURE_2D, [inputFramebufferForDisplay texture]); - glUniform1i(displayInputTextureUniform, 4); - - glVertexAttribPointer(displayPositionAttribute, 2, GL_FLOAT, 0, 0, imageVertices); - glVertexAttribPointer(displayTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, [GPUImageView textureCoordinatesForRotation:inputRotation]); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - [self presentFramebuffer]; - [inputFramebufferForDisplay unlock]; - inputFramebufferForDisplay = nil; - }); -} - -- (NSInteger)nextAvailableTextureIndex; -{ - return 0; -} - -- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex; -{ - inputFramebufferForDisplay = newInputFramebuffer; - [inputFramebufferForDisplay lock]; -} - -- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex; -{ - inputRotation = newInputRotation; -} - -- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex; -{ - runSynchronouslyOnVideoProcessingQueue(^{ - CGSize rotatedSize = newSize; - - if (GPUImageRotationSwapsWidthAndHeight(inputRotation)) - { - rotatedSize.width = newSize.height; - rotatedSize.height = newSize.width; - } - - if (!CGSizeEqualToSize(inputImageSize, rotatedSize)) - { - inputImageSize = rotatedSize; - [self recalculateViewGeometry]; - } - }); -} - -- (CGSize)maximumOutputSize; -{ - if ([self respondsToSelector:@selector(setContentScaleFactor:)]) - { - CGSize pointSize = self.bounds.size; - return CGSizeMake(self.contentScaleFactor * pointSize.width, self.contentScaleFactor * pointSize.height); - } - else - { - return self.bounds.size; - } -} - -- (void)endProcessing -{ -} - -- (BOOL)shouldIgnoreUpdatesToThisTarget; -{ - return NO; -} - -- (BOOL)wantsMonochromeInput; -{ - return NO; -} - -- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue; -{ - -} - -#pragma mark - -#pragma mark Accessors - -- (CGSize)sizeInPixels; -{ - if (CGSizeEqualToSize(_sizeInPixels, CGSizeZero)) - { - return [self maximumOutputSize]; - } - else - { - return _sizeInPixels; - } -} - -- (void)setFillMode:(GPUImageFillModeType)newValue; -{ - _fillMode = newValue; - [self recalculateViewGeometry]; -} - -@end diff --git a/LFLiveKit/Vendor/pili-librtmp/amf.c b/LFLiveKit/Vendor/pili-librtmp/amf.c deleted file mode 100644 index 18630ce2..00000000 --- a/LFLiveKit/Vendor/pili-librtmp/amf.c +++ /dev/null @@ -1,1037 +0,0 @@ -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include - -#include "amf.h" -#include "bytes.h" -#include "log.h" -#include "rtmp_sys.h" - -static const AMFObjectProperty AMFProp_Invalid = {{0, 0}, AMF_INVALID}; -static const AVal AV_empty = {0, 0}; - -/* Data is Big-Endian */ -unsigned short - AMF_DecodeInt16(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned short val; - val = (c[0] << 8) | c[1]; - return val; -} - -unsigned int - AMF_DecodeInt24(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned int val; - val = (c[0] << 16) | (c[1] << 8) | c[2]; - return val; -} - -unsigned int - AMF_DecodeInt32(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned int val; - val = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3]; - return val; -} - -void AMF_DecodeString(const char *data, AVal *bv) { - bv->av_len = AMF_DecodeInt16(data); - bv->av_val = (bv->av_len > 0) ? (char *)data + 2 : NULL; -} - -void AMF_DecodeLongString(const char *data, AVal *bv) { - bv->av_len = AMF_DecodeInt32(data); - bv->av_val = (bv->av_len > 0) ? (char *)data + 4 : NULL; -} - -double - AMF_DecodeNumber(const char *data) { - double dVal; -#if __FLOAT_WORD_ORDER == __BYTE_ORDER -#if __BYTE_ORDER == __BIG_ENDIAN - memcpy(&dVal, data, 8); -#elif __BYTE_ORDER == __LITTLE_ENDIAN - unsigned char *ci, *co; - ci = (unsigned char *)data; - co = (unsigned char *)&dVal; - co[0] = ci[7]; - co[1] = ci[6]; - co[2] = ci[5]; - co[3] = ci[4]; - co[4] = ci[3]; - co[5] = ci[2]; - co[6] = ci[1]; - co[7] = ci[0]; -#endif -#else -#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ - unsigned char *ci, *co; - ci = (unsigned char *)data; - co = (unsigned char *)&dVal; - co[0] = ci[3]; - co[1] = ci[2]; - co[2] = ci[1]; - co[3] = ci[0]; - co[4] = ci[7]; - co[5] = ci[6]; - co[6] = ci[5]; - co[7] = ci[4]; -#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ - unsigned char *ci, *co; - ci = (unsigned char *)data; - co = (unsigned char *)&dVal; - co[0] = ci[4]; - co[1] = ci[5]; - co[2] = ci[6]; - co[3] = ci[7]; - co[4] = ci[0]; - co[5] = ci[1]; - co[6] = ci[2]; - co[7] = ci[3]; -#endif -#endif - return dVal; -} - -int AMF_DecodeBoolean(const char *data) { - return *data != 0; -} - -char * - AMF_EncodeInt16(char *output, char *outend, short nVal) { - if (output + 2 > outend) - return NULL; - - output[1] = nVal & 0xff; - output[0] = nVal >> 8; - return output + 2; -} - -char * - AMF_EncodeInt24(char *output, char *outend, int nVal) { - if (output + 3 > outend) - return NULL; - - output[2] = nVal & 0xff; - output[1] = nVal >> 8; - output[0] = nVal >> 16; - return output + 3; -} - -char * - AMF_EncodeInt32(char *output, char *outend, int nVal) { - if (output + 4 > outend) - return NULL; - - output[3] = nVal & 0xff; - output[2] = nVal >> 8; - output[1] = nVal >> 16; - output[0] = nVal >> 24; - return output + 4; -} - -char * - AMF_EncodeString(char *output, char *outend, const AVal *bv) { - if ((bv->av_len < 65536 && output + 1 + 2 + bv->av_len > outend) || - output + 1 + 4 + bv->av_len > outend) - return NULL; - - if (bv->av_len < 65536) { - *output++ = AMF_STRING; - - output = AMF_EncodeInt16(output, outend, bv->av_len); - } else { - *output++ = AMF_LONG_STRING; - - output = AMF_EncodeInt32(output, outend, bv->av_len); - } - memcpy(output, bv->av_val, bv->av_len); - output += bv->av_len; - - return output; -} - -char * - AMF_EncodeNumber(char *output, char *outend, double dVal) { - if (output + 1 + 8 > outend) - return NULL; - - *output++ = AMF_NUMBER; /* type: Number */ - -#if __FLOAT_WORD_ORDER == __BYTE_ORDER -#if __BYTE_ORDER == __BIG_ENDIAN - memcpy(output, &dVal, 8); -#elif __BYTE_ORDER == __LITTLE_ENDIAN - { - unsigned char *ci, *co; - ci = (unsigned char *)&dVal; - co = (unsigned char *)output; - co[0] = ci[7]; - co[1] = ci[6]; - co[2] = ci[5]; - co[3] = ci[4]; - co[4] = ci[3]; - co[5] = ci[2]; - co[6] = ci[1]; - co[7] = ci[0]; - } -#endif -#else -#if __BYTE_ORDER == __LITTLE_ENDIAN /* __FLOAT_WORD_ORER == __BIG_ENDIAN */ - { - unsigned char *ci, *co; - ci = (unsigned char *)&dVal; - co = (unsigned char *)output; - co[0] = ci[3]; - co[1] = ci[2]; - co[2] = ci[1]; - co[3] = ci[0]; - co[4] = ci[7]; - co[5] = ci[6]; - co[6] = ci[5]; - co[7] = ci[4]; - } -#else /* __BYTE_ORDER == __BIG_ENDIAN && __FLOAT_WORD_ORER == __LITTLE_ENDIAN */ - { - unsigned char *ci, *co; - ci = (unsigned char *)&dVal; - co = (unsigned char *)output; - co[0] = ci[4]; - co[1] = ci[5]; - co[2] = ci[6]; - co[3] = ci[7]; - co[4] = ci[0]; - co[5] = ci[1]; - co[6] = ci[2]; - co[7] = ci[3]; - } -#endif -#endif - - return output + 8; -} - -char * - AMF_EncodeBoolean(char *output, char *outend, int bVal) { - if (output + 2 > outend) - return NULL; - - *output++ = AMF_BOOLEAN; - - *output++ = bVal ? 0x01 : 0x00; - - return output; -} - -char * - AMF_EncodeNamedString(char *output, char *outend, const AVal *strName, const AVal *strValue) { - if (output + 2 + strName->av_len > outend) - return NULL; - output = AMF_EncodeInt16(output, outend, strName->av_len); - - memcpy(output, strName->av_val, strName->av_len); - output += strName->av_len; - - return AMF_EncodeString(output, outend, strValue); -} - -char * - AMF_EncodeNamedNumber(char *output, char *outend, const AVal *strName, double dVal) { - if (output + 2 + strName->av_len > outend) - return NULL; - output = AMF_EncodeInt16(output, outend, strName->av_len); - - memcpy(output, strName->av_val, strName->av_len); - output += strName->av_len; - - return AMF_EncodeNumber(output, outend, dVal); -} - -char * - AMF_EncodeNamedBoolean(char *output, char *outend, const AVal *strName, int bVal) { - if (output + 2 + strName->av_len > outend) - return NULL; - output = AMF_EncodeInt16(output, outend, strName->av_len); - - memcpy(output, strName->av_val, strName->av_len); - output += strName->av_len; - - return AMF_EncodeBoolean(output, outend, bVal); -} - -void AMFProp_GetName(AMFObjectProperty *prop, AVal *name) { - *name = prop->p_name; -} - -void AMFProp_SetName(AMFObjectProperty *prop, AVal *name) { - prop->p_name = *name; -} - -AMFDataType - AMFProp_GetType(AMFObjectProperty *prop) { - return prop->p_type; -} - -double - AMFProp_GetNumber(AMFObjectProperty *prop) { - return prop->p_vu.p_number; -} - -int AMFProp_GetBoolean(AMFObjectProperty *prop) { - return prop->p_vu.p_number != 0; -} - -void AMFProp_GetString(AMFObjectProperty *prop, AVal *str) { - *str = prop->p_vu.p_aval; -} - -void AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj) { - *obj = prop->p_vu.p_object; -} - -int AMFProp_IsValid(AMFObjectProperty *prop) { - return prop->p_type != AMF_INVALID; -} - -char * - AMFProp_Encode(AMFObjectProperty *prop, char *pBuffer, char *pBufEnd) { - if (prop->p_type == AMF_INVALID) - return NULL; - - if (prop->p_type != AMF_NULL && pBuffer + prop->p_name.av_len + 2 + 1 >= pBufEnd) - return NULL; - - if (prop->p_type != AMF_NULL && prop->p_name.av_len) { - *pBuffer++ = prop->p_name.av_len >> 8; - *pBuffer++ = prop->p_name.av_len & 0xff; - memcpy(pBuffer, prop->p_name.av_val, prop->p_name.av_len); - pBuffer += prop->p_name.av_len; - } - - switch (prop->p_type) { - case AMF_NUMBER: - pBuffer = AMF_EncodeNumber(pBuffer, pBufEnd, prop->p_vu.p_number); - break; - - case AMF_BOOLEAN: - pBuffer = AMF_EncodeBoolean(pBuffer, pBufEnd, prop->p_vu.p_number != 0); - break; - - case AMF_STRING: - pBuffer = AMF_EncodeString(pBuffer, pBufEnd, &prop->p_vu.p_aval); - break; - - case AMF_NULL: - if (pBuffer + 1 >= pBufEnd) - return NULL; - *pBuffer++ = AMF_NULL; - break; - - case AMF_OBJECT: - pBuffer = AMF_Encode(&prop->p_vu.p_object, pBuffer, pBufEnd); - break; - - default: - RTMP_Log(RTMP_LOGERROR, "%s, invalid type. %d", __FUNCTION__, prop->p_type); - pBuffer = NULL; - }; - - return pBuffer; -} - -#define AMF3_INTEGER_MAX 268435455 -#define AMF3_INTEGER_MIN -268435456 - -int AMF3ReadInteger(const char *data, int32_t *valp) { - int i = 0; - int32_t val = 0; - - while (i <= 2) { /* handle first 3 bytes */ - if (data[i] & 0x80) { /* byte used */ - val <<= 7; /* shift up */ - val |= (data[i] & 0x7f); /* add bits */ - i++; - } else { - break; - } - } - - if (i > 2) { /* use 4th byte, all 8bits */ - val <<= 8; - val |= data[3]; - - /* range check */ - if (val > AMF3_INTEGER_MAX) - val -= (1 << 29); - } else { /* use 7bits of last unparsed byte (0xxxxxxx) */ - val <<= 7; - val |= data[i]; - } - - *valp = val; - - return i > 2 ? 4 : i + 1; -} - -int AMF3ReadString(const char *data, AVal *str) { - int32_t ref = 0; - int len; - assert(str != 0); - - len = AMF3ReadInteger(data, &ref); - data += len; - - if ((ref & 0x1) == 0) { /* reference: 0xxx */ - uint32_t refIndex = (ref >> 1); - RTMP_Log(RTMP_LOGDEBUG, - "%s, string reference, index: %d, not supported, ignoring!", - __FUNCTION__, refIndex); - return len; - } else { - uint32_t nSize = (ref >> 1); - - str->av_val = (char *)data; - str->av_len = nSize; - - return len + nSize; - } - return len; -} - -int AMF3Prop_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, - int bDecodeName) { - int nOriginalSize = nSize; - AMF3DataType type; - - prop->p_name.av_len = 0; - prop->p_name.av_val = NULL; - - if (nSize == 0 || !pBuffer) { - RTMP_Log(RTMP_LOGDEBUG, "empty buffer/no buffer pointer!"); - return -1; - } - - /* decode name */ - if (bDecodeName) { - AVal name; - int nRes = AMF3ReadString(pBuffer, &name); - - if (name.av_len <= 0) - return nRes; - - prop->p_name = name; - pBuffer += nRes; - nSize -= nRes; - } - - /* decode */ - type = *pBuffer++; - nSize--; - - switch (type) { - case AMF3_UNDEFINED: - case AMF3_NULL: - prop->p_type = AMF_NULL; - break; - case AMF3_FALSE: - prop->p_type = AMF_BOOLEAN; - prop->p_vu.p_number = 0.0; - break; - case AMF3_TRUE: - prop->p_type = AMF_BOOLEAN; - prop->p_vu.p_number = 1.0; - break; - case AMF3_INTEGER: { - int32_t res = 0; - int len = AMF3ReadInteger(pBuffer, &res); - prop->p_vu.p_number = (double)res; - prop->p_type = AMF_NUMBER; - nSize -= len; - break; - } - case AMF3_DOUBLE: - if (nSize < 8) - return -1; - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - prop->p_type = AMF_NUMBER; - nSize -= 8; - break; - case AMF3_STRING: - case AMF3_XML_DOC: - case AMF3_XML: { - int len = AMF3ReadString(pBuffer, &prop->p_vu.p_aval); - prop->p_type = AMF_STRING; - nSize -= len; - break; - } - case AMF3_DATE: { - int32_t res = 0; - int len = AMF3ReadInteger(pBuffer, &res); - - nSize -= len; - pBuffer += len; - - if ((res & 0x1) == 0) { /* reference */ - uint32_t nIndex = (res >> 1); - RTMP_Log(RTMP_LOGDEBUG, "AMF3_DATE reference: %d, not supported!", nIndex); - } else { - if (nSize < 8) - return -1; - - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - nSize -= 8; - prop->p_type = AMF_NUMBER; - } - break; - } - case AMF3_OBJECT: { - int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - case AMF3_ARRAY: - case AMF3_BYTE_ARRAY: - default: - RTMP_Log(RTMP_LOGDEBUG, "%s - AMF3 unknown/unsupported datatype 0x%02x, @0x%08X", - __FUNCTION__, (unsigned char)(*pBuffer), pBuffer); - return -1; - } - - return nOriginalSize - nSize; -} - -int AMFProp_Decode(AMFObjectProperty *prop, const char *pBuffer, int nSize, - int bDecodeName) { - int nOriginalSize = nSize; - int nRes; - - prop->p_name.av_len = 0; - prop->p_name.av_val = NULL; - - if (nSize == 0 || !pBuffer) { - RTMP_Log(RTMP_LOGDEBUG, "%s: Empty buffer/no buffer pointer!", __FUNCTION__); - return -1; - } - - if (bDecodeName && nSize < 4) { /* at least name (length + at least 1 byte) and 1 byte of data */ - RTMP_Log(RTMP_LOGDEBUG, - "%s: Not enough data for decoding with name, less than 4 bytes!", - __FUNCTION__); - return -1; - } - - if (bDecodeName) { - unsigned short nNameSize = AMF_DecodeInt16(pBuffer); - if (nNameSize > nSize - 2) { - RTMP_Log(RTMP_LOGDEBUG, - "%s: Name size out of range: namesize (%d) > len (%d) - 2", - __FUNCTION__, nNameSize, nSize); - return -1; - } - - AMF_DecodeString(pBuffer, &prop->p_name); - nSize -= 2 + nNameSize; - pBuffer += 2 + nNameSize; - } - - if (nSize == 0) { - return -1; - } - - nSize--; - - prop->p_type = *pBuffer++; - switch (prop->p_type) { - case AMF_NUMBER: - if (nSize < 8) - return -1; - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - nSize -= 8; - break; - case AMF_BOOLEAN: - if (nSize < 1) - return -1; - prop->p_vu.p_number = (double)AMF_DecodeBoolean(pBuffer); - nSize--; - break; - case AMF_STRING: { - unsigned short nStringSize = AMF_DecodeInt16(pBuffer); - - if (nSize < (long)nStringSize + 2) - return -1; - AMF_DecodeString(pBuffer, &prop->p_vu.p_aval); - nSize -= (2 + nStringSize); - break; - } - case AMF_OBJECT: { - int nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - break; - } - case AMF_MOVIECLIP: { - RTMP_Log(RTMP_LOGERROR, "AMF_MOVIECLIP reserved!"); - return -1; - break; - } - case AMF_NULL: - case AMF_UNDEFINED: - case AMF_UNSUPPORTED: - prop->p_type = AMF_NULL; - break; - case AMF_REFERENCE: { - RTMP_Log(RTMP_LOGERROR, "AMF_REFERENCE not supported!"); - return -1; - break; - } - case AMF_ECMA_ARRAY: { - nSize -= 4; - - /* next comes the rest, mixed array has a final 0x000009 mark and names, so its an object */ - nRes = AMF_Decode(&prop->p_vu.p_object, pBuffer + 4, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - case AMF_OBJECT_END: { - return -1; - break; - } - case AMF_STRICT_ARRAY: { - unsigned int nArrayLen = AMF_DecodeInt32(pBuffer); - nSize -= 4; - - nRes = AMF_DecodeArray(&prop->p_vu.p_object, pBuffer + 4, nSize, - nArrayLen, FALSE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - case AMF_DATE: { - RTMP_Log(RTMP_LOGDEBUG, "AMF_DATE"); - - if (nSize < 10) - return -1; - - prop->p_vu.p_number = AMF_DecodeNumber(pBuffer); - prop->p_UTCoffset = AMF_DecodeInt16(pBuffer + 8); - - nSize -= 10; - break; - } - case AMF_LONG_STRING: { - unsigned int nStringSize = AMF_DecodeInt32(pBuffer); - if (nSize < (long)nStringSize + 4) - return -1; - AMF_DecodeLongString(pBuffer, &prop->p_vu.p_aval); - nSize -= (4 + nStringSize); - prop->p_type = AMF_STRING; - break; - } - case AMF_RECORDSET: { - RTMP_Log(RTMP_LOGERROR, "AMF_RECORDSET reserved!"); - return -1; - break; - } - case AMF_XML_DOC: { - RTMP_Log(RTMP_LOGERROR, "AMF_XML_DOC not supported!"); - return -1; - break; - } - case AMF_TYPED_OBJECT: { - RTMP_Log(RTMP_LOGERROR, "AMF_TYPED_OBJECT not supported!"); - return -1; - break; - } - case AMF_AVMPLUS: { - int nRes = AMF3_Decode(&prop->p_vu.p_object, pBuffer, nSize, TRUE); - if (nRes == -1) - return -1; - nSize -= nRes; - prop->p_type = AMF_OBJECT; - break; - } - default: - RTMP_Log(RTMP_LOGDEBUG, "%s - unknown datatype 0x%02x, @0x%08X", __FUNCTION__, - prop->p_type, pBuffer - 1); - return -1; - } - - return nOriginalSize - nSize; -} - -void AMFProp_Dump(AMFObjectProperty *prop) { - char strRes[256]; - char str[256]; - AVal name; - - if (prop->p_type == AMF_INVALID) { - RTMP_Log(RTMP_LOGDEBUG, "Property: INVALID"); - return; - } - - if (prop->p_type == AMF_NULL) { - RTMP_Log(RTMP_LOGDEBUG, "Property: NULL"); - return; - } - - if (prop->p_name.av_len) { - name = prop->p_name; - } else { - name.av_val = "no-name."; - name.av_len = sizeof("no-name.") - 1; - } - if (name.av_len > 18) - name.av_len = 18; - - snprintf(strRes, 255, "Name: %18.*s, ", name.av_len, name.av_val); - - if (prop->p_type == AMF_OBJECT) { - RTMP_Log(RTMP_LOGDEBUG, "Property: <%sOBJECT>", strRes); - AMF_Dump(&prop->p_vu.p_object); - return; - } - - switch (prop->p_type) { - case AMF_NUMBER: - snprintf(str, 255, "NUMBER:\t%.2f", prop->p_vu.p_number); - break; - case AMF_BOOLEAN: - snprintf(str, 255, "BOOLEAN:\t%s", - prop->p_vu.p_number != 0.0 ? "TRUE" : "FALSE"); - break; - case AMF_STRING: - snprintf(str, 255, "STRING:\t%.*s", prop->p_vu.p_aval.av_len, - prop->p_vu.p_aval.av_val); - break; - case AMF_DATE: - snprintf(str, 255, "DATE:\ttimestamp: %.2f, UTC offset: %d", - prop->p_vu.p_number, prop->p_UTCoffset); - break; - default: - snprintf(str, 255, "INVALID TYPE 0x%02x", (unsigned char)prop->p_type); - } - - RTMP_Log(RTMP_LOGDEBUG, "Property: <%s%s>", strRes, str); -} - -void AMFProp_Reset(AMFObjectProperty *prop) { - if (prop->p_type == AMF_OBJECT) - AMF_Reset(&prop->p_vu.p_object); - else { - prop->p_vu.p_aval.av_len = 0; - prop->p_vu.p_aval.av_val = NULL; - } - prop->p_type = AMF_INVALID; -} - -/* AMFObject */ - -char * - AMF_Encode(AMFObject *obj, char *pBuffer, char *pBufEnd) { - int i; - - if (pBuffer + 4 >= pBufEnd) - return NULL; - - *pBuffer++ = AMF_OBJECT; - - for (i = 0; i < obj->o_num; i++) { - char *res = AMFProp_Encode(&obj->o_props[i], pBuffer, pBufEnd); - if (res == NULL) { - RTMP_Log(RTMP_LOGERROR, "AMF_Encode - failed to encode property in index %d", - i); - break; - } else { - pBuffer = res; - } - } - - if (pBuffer + 3 >= pBufEnd) - return NULL; /* no room for the end marker */ - - pBuffer = AMF_EncodeInt24(pBuffer, pBufEnd, AMF_OBJECT_END); - - return pBuffer; -} - -int AMF_DecodeArray(AMFObject *obj, const char *pBuffer, int nSize, - int nArrayLen, int bDecodeName) { - int nOriginalSize = nSize; - int bError = FALSE; - - obj->o_num = 0; - obj->o_props = NULL; - while (nArrayLen > 0) { - AMFObjectProperty prop; - int nRes; - nArrayLen--; - - nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); - if (nRes == -1) - bError = TRUE; - else { - nSize -= nRes; - pBuffer += nRes; - AMF_AddProp(obj, &prop); - } - } - if (bError) - return -1; - - return nOriginalSize - nSize; -} - -int AMF3_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bAMFData) { - int nOriginalSize = nSize; - int32_t ref; - int len; - - obj->o_num = 0; - obj->o_props = NULL; - if (bAMFData) { - if (*pBuffer != AMF3_OBJECT) - RTMP_Log(RTMP_LOGERROR, - "AMF3 Object encapsulated in AMF stream does not start with AMF3_OBJECT!"); - pBuffer++; - nSize--; - } - - ref = 0; - len = AMF3ReadInteger(pBuffer, &ref); - pBuffer += len; - nSize -= len; - - if ((ref & 1) == 0) { /* object reference, 0xxx */ - uint32_t objectIndex = (ref >> 1); - - RTMP_Log(RTMP_LOGDEBUG, "Object reference, index: %d", objectIndex); - } else /* object instance */ - { - int32_t classRef = (ref >> 1); - - AMF3ClassDef cd = {{0, 0}}; - AMFObjectProperty prop; - - if ((classRef & 0x1) == 0) { /* class reference */ - uint32_t classIndex = (classRef >> 1); - RTMP_Log(RTMP_LOGDEBUG, "Class reference: %d", classIndex); - } else { - int32_t classExtRef = (classRef >> 1); - int i; - - cd.cd_externalizable = (classExtRef & 0x1) == 1; - cd.cd_dynamic = ((classExtRef >> 1) & 0x1) == 1; - - cd.cd_num = classExtRef >> 2; - - /* class name */ - - len = AMF3ReadString(pBuffer, &cd.cd_name); - nSize -= len; - pBuffer += len; - - /*std::string str = className; */ - - RTMP_Log(RTMP_LOGDEBUG, - "Class name: %s, externalizable: %d, dynamic: %d, classMembers: %d", - cd.cd_name.av_val, cd.cd_externalizable, cd.cd_dynamic, - cd.cd_num); - - for (i = 0; i < cd.cd_num; i++) { - AVal memberName; - len = AMF3ReadString(pBuffer, &memberName); - RTMP_Log(RTMP_LOGDEBUG, "Member: %s", memberName.av_val); - AMF3CD_AddProp(&cd, &memberName); - nSize -= len; - pBuffer += len; - } - } - - /* add as referencable object */ - - if (cd.cd_externalizable) { - int nRes; - AVal name = AVC("DEFAULT_ATTRIBUTE"); - - RTMP_Log(RTMP_LOGDEBUG, "Externalizable, TODO check"); - - nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); - if (nRes == -1) - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", - __FUNCTION__); - else { - nSize -= nRes; - pBuffer += nRes; - } - - AMFProp_SetName(&prop, &name); - AMF_AddProp(obj, &prop); - } else { - int nRes, i; - for (i = 0; i < cd.cd_num; i++) /* non-dynamic */ - { - nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, FALSE); - if (nRes == -1) - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to decode AMF3 property!", - __FUNCTION__); - - AMFProp_SetName(&prop, AMF3CD_GetProp(&cd, i)); - AMF_AddProp(obj, &prop); - - pBuffer += nRes; - nSize -= nRes; - } - if (cd.cd_dynamic) { - int len = 0; - - do { - nRes = AMF3Prop_Decode(&prop, pBuffer, nSize, TRUE); - AMF_AddProp(obj, &prop); - - pBuffer += nRes; - nSize -= nRes; - - len = prop.p_name.av_len; - } while (len > 0); - } - } - RTMP_Log(RTMP_LOGDEBUG, "class object!"); - } - return nOriginalSize - nSize; -} - -int AMF_Decode(AMFObject *obj, const char *pBuffer, int nSize, int bDecodeName) { - int nOriginalSize = nSize; - int bError = FALSE; /* if there is an error while decoding - try to at least find the end mark AMF_OBJECT_END */ - - obj->o_num = 0; - obj->o_props = NULL; - while (nSize > 0) { - AMFObjectProperty prop; - int nRes; - - if (nSize >= 3 && AMF_DecodeInt24(pBuffer) == AMF_OBJECT_END) { - nSize -= 3; - bError = FALSE; - break; - } - - if (bError) { - RTMP_Log(RTMP_LOGERROR, - "DECODING ERROR, IGNORING BYTES UNTIL NEXT KNOWN PATTERN!"); - nSize--; - pBuffer++; - continue; - } - - nRes = AMFProp_Decode(&prop, pBuffer, nSize, bDecodeName); - if (nRes == -1) - bError = TRUE; - else { - nSize -= nRes; - pBuffer += nRes; - AMF_AddProp(obj, &prop); - } - } - - if (bError) - return -1; - - return nOriginalSize - nSize; -} - -void AMF_AddProp(AMFObject *obj, const AMFObjectProperty *prop) { - if (!(obj->o_num & 0x0f)) - obj->o_props = - realloc(obj->o_props, (obj->o_num + 16) * sizeof(AMFObjectProperty)); - obj->o_props[obj->o_num++] = *prop; -} - -int AMF_CountProp(AMFObject *obj) { - return obj->o_num; -} - -AMFObjectProperty * - AMF_GetProp(AMFObject *obj, const AVal *name, int nIndex) { - if (nIndex >= 0) { - if (nIndex <= obj->o_num) - return &obj->o_props[nIndex]; - } else { - int n; - for (n = 0; n < obj->o_num; n++) { - if (AVMATCH(&obj->o_props[n].p_name, name)) - return &obj->o_props[n]; - } - } - - return (AMFObjectProperty *)&AMFProp_Invalid; -} - -void AMF_Dump(AMFObject *obj) { - int n; - RTMP_Log(RTMP_LOGDEBUG, "(object begin)"); - for (n = 0; n < obj->o_num; n++) { - AMFProp_Dump(&obj->o_props[n]); - } - RTMP_Log(RTMP_LOGDEBUG, "(object end)"); -} - -void AMF_Reset(AMFObject *obj) { - int n; - for (n = 0; n < obj->o_num; n++) { - AMFProp_Reset(&obj->o_props[n]); - } - free(obj->o_props); - obj->o_props = NULL; - obj->o_num = 0; -} - -/* AMF3ClassDefinition */ - -void AMF3CD_AddProp(AMF3ClassDef *cd, AVal *prop) { - if (!(cd->cd_num & 0x0f)) - cd->cd_props = realloc(cd->cd_props, (cd->cd_num + 16) * sizeof(AVal)); - cd->cd_props[cd->cd_num++] = *prop; -} - -AVal * - AMF3CD_GetProp(AMF3ClassDef *cd, int nIndex) { - if (nIndex >= cd->cd_num) - return (AVal *)&AV_empty; - return &cd->cd_props[nIndex]; -} diff --git a/LFLiveKit/Vendor/pili-librtmp/error.c b/LFLiveKit/Vendor/pili-librtmp/error.c deleted file mode 100644 index 0b4cafdf..00000000 --- a/LFLiveKit/Vendor/pili-librtmp/error.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "error.h" -#include -#include - -void RTMPError_Alloc(RTMPError *error, size_t msg_size) { - RTMPError_Free(error); - - error->code = 0; - error->message = (char *)malloc(msg_size + 1); - memset(error->message, 0, msg_size); -} - -void RTMPError_Free(RTMPError *error) { - if (error) { - if (error->message) { - free(error->message); - error->message = NULL; - } - } -} diff --git a/LFLiveKit/Vendor/pili-librtmp/hashswf.c b/LFLiveKit/Vendor/pili-librtmp/hashswf.c deleted file mode 100644 index 88d20c7f..00000000 --- a/LFLiveKit/Vendor/pili-librtmp/hashswf.c +++ /dev/null @@ -1,626 +0,0 @@ -/* - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include -#include - -#include "http.h" -#include "log.h" -#include "rtmp_sys.h" - -#ifdef CRYPTO -#ifdef USE_POLARSSL -#include -#ifndef SHA256_DIGEST_LENGTH -#define SHA256_DIGEST_LENGTH 32 -#endif -#define HMAC_CTX sha2_context -#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0) -#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - dlen = SHA256_DIGEST_LENGTH; \ - sha2_hmac_finish(&ctx, dig) -#define HMAC_close(ctx) -#elif defined(USE_GNUTLS) -#include -#include -#ifndef SHA256_DIGEST_LENGTH -#define SHA256_DIGEST_LENGTH 32 -#endif -#define HMAC_CTX gcry_md_hd_t -#define HMAC_setup(ctx, key, len) \ - gcry_md_open(&ctx, GCRY_MD_SHA256, GCRY_MD_FLAG_HMAC); \ - gcry_md_setkey(ctx, key, len) -#define HMAC_crunch(ctx, buf, len) gcry_md_write(ctx, buf, len) -#define HMAC_finish(ctx, dig, dlen) \ - dlen = SHA256_DIGEST_LENGTH; \ - memcpy(dig, gcry_md_read(ctx, 0), dlen) -#define HMAC_close(ctx) gcry_md_close(ctx) -#else /* USE_OPENSSL */ -#include -#include -#include -#include -#define HMAC_setup(ctx, key, len) \ - HMAC_CTX_init(&ctx); \ - HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0) -#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len) -#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen); -#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx) -#endif - -extern void RTMP_TLS_Init(); -extern TLS_CTX RTMP_TLS_ctx; - -#endif /* CRYPTO */ - -#include - -#define AGENT "Mozilla/5.0" - -HTTPResult - HTTP_get(struct HTTP_ctx *http, const char *url, HTTP_read_callback *cb) { - char *host, *path; - char *p1, *p2; - char hbuf[256]; - int port = 80; -#ifdef CRYPTO - int ssl = 0; -#endif - int hlen, flen = 0; - int rc, i; - int len_known; - HTTPResult ret = HTTPRES_OK; - // struct sockaddr_in sa; - PILI_RTMPSockBuf sb = {0}; - - http->status = -1; - - // memset(&sa, 0, sizeof(struct sockaddr_in)); - // sa.sin_family = AF_INET; - - /* we only handle http here */ - if (strncasecmp(url, "http", 4)) - return HTTPRES_BAD_REQUEST; - - if (url[4] == 's') { -#ifdef CRYPTO - ssl = 1; - port = 443; - if (!RTMP_TLS_ctx) - RTMP_TLS_Init(); -#else - return HTTPRES_BAD_REQUEST; -#endif - } - - p1 = strchr(url + 4, ':'); - if (!p1 || strncmp(p1, "://", 3)) - return HTTPRES_BAD_REQUEST; - - host = p1 + 3; - path = strchr(host, '/'); - hlen = path - host; - strncpy(hbuf, host, hlen); - hbuf[hlen] = '\0'; - host = hbuf; - p1 = strrchr(host, ':'); - if (p1) { - *p1++ = '\0'; - port = atoi(p1); - } - - // sa.sin_addr.s_addr = inet_addr(host); - // if (sa.sin_addr.s_addr == INADDR_NONE) - // { - // struct hostent *hp = gethostbyname(host); - // if (!hp || !hp->h_addr) - // return HTTPRES_LOST_CONNECTION; - // sa.sin_addr = *(struct in_addr *)hp->h_addr; - // } - // sa.sin_port = htons(port); - struct addrinfo hints = {0}, *ai, *cur_ai; - char portstr[10]; - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - snprintf(portstr, sizeof(portstr), "%d", port); - ret = getaddrinfo(host, portstr, &hints, &ai); - if (ret != 0) { - return HTTPRES_LOST_CONNECTION; - } - - cur_ai = ai; - - sb.sb_socket = socket(cur_ai->ai_family, - cur_ai->ai_socktype, - cur_ai->ai_protocol); - // sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - if (sb.sb_socket == -1) { - freeaddrinfo(ai); - return HTTPRES_LOST_CONNECTION; - } - i = sprintf(sb.sb_buf, - "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s\r\nReferrer: %.*s\r\n", - path, AGENT, host, (int)(path - url + 1), url); - if (http->date[0]) - i += sprintf(sb.sb_buf + i, "If-Modified-Since: %s\r\n", http->date); - i += sprintf(sb.sb_buf + i, "\r\n"); - - if (cur_ai->ai_family == AF_INET6) { - struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)cur_ai->ai_addr; - in6->sin6_port = htons(port); - } - - if (connect(sb.sb_socket, cur_ai->ai_addr, cur_ai->ai_addrlen) < 0) { - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } -#ifdef CRYPTO - if (ssl) { -#ifdef NO_SSL - RTMP_Log(RTMP_LOGERROR, "%s, No SSL/TLS support", __FUNCTION__); - ret = HTTPRES_BAD_REQUEST; - goto leave; -#else - TLS_client(RTMP_TLS_ctx, sb.sb_ssl); - TLS_setfd(sb.sb_ssl, sb.sb_socket); - if ((i = TLS_connect(sb.sb_ssl)) < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } -#endif - } -#endif - PILI_RTMPSockBuf_Send(&sb, sb.sb_buf, i); - -/* set timeout */ -#define HTTP_TIMEOUT 5 - { - SET_RCVTIMEO(tv, HTTP_TIMEOUT); - if (setsockopt(sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { - RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %ds failed!", - __FUNCTION__, HTTP_TIMEOUT); - } - } - - sb.sb_size = 0; - sb.sb_timedout = FALSE; - if (PILI_RTMPSockBuf_Fill(&sb) < 1) { - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } - if (strncmp(sb.sb_buf, "HTTP/1", 6)) { - ret = HTTPRES_BAD_REQUEST; - goto leave; - } - - p1 = strchr(sb.sb_buf, ' '); - rc = atoi(p1 + 1); - http->status = rc; - - if (rc >= 300) { - if (rc == 304) { - ret = HTTPRES_OK_NOT_MODIFIED; - goto leave; - } else if (rc == 404) - ret = HTTPRES_NOT_FOUND; - else if (rc >= 500) - ret = HTTPRES_SERVER_ERROR; - else if (rc >= 400) - ret = HTTPRES_BAD_REQUEST; - else - ret = HTTPRES_REDIRECTED; - } - - p1 = memchr(sb.sb_buf, '\n', sb.sb_size); - if (!p1) { - ret = HTTPRES_BAD_REQUEST; - goto leave; - } - sb.sb_start = p1 + 1; - sb.sb_size -= sb.sb_start - sb.sb_buf; - - while ((p2 = memchr(sb.sb_start, '\r', sb.sb_size))) { - if (*sb.sb_start == '\r') { - sb.sb_start += 2; - sb.sb_size -= 2; - break; - } else if (!strncasecmp(sb.sb_start, "Content-Length: ", sizeof("Content-Length: ") - 1)) { - flen = atoi(sb.sb_start + sizeof("Content-Length: ") - 1); - } else if (!strncasecmp(sb.sb_start, "Last-Modified: ", sizeof("Last-Modified: ") - 1)) { - *p2 = '\0'; - strcpy(http->date, sb.sb_start + sizeof("Last-Modified: ") - 1); - } - p2 += 2; - sb.sb_size -= p2 - sb.sb_start; - sb.sb_start = p2; - if (sb.sb_size < 1) { - if (PILI_RTMPSockBuf_Fill(&sb) < 1) { - ret = HTTPRES_LOST_CONNECTION; - goto leave; - } - } - } - - len_known = flen > 0; - while ((!len_known || flen > 0) && - (sb.sb_size > 0 || PILI_RTMPSockBuf_Fill(&sb) > 0)) { - cb(sb.sb_start, 1, sb.sb_size, http->data); - if (len_known) - flen -= sb.sb_size; - http->size += sb.sb_size; - sb.sb_size = 0; - } - - if (flen > 0) - ret = HTTPRES_LOST_CONNECTION; - -leave: - PILI_RTMPSockBuf_Close(&sb); - freeaddrinfo(ai); - return ret; -} - -#ifdef CRYPTO - -#define CHUNK 16384 - -struct info { - z_stream *zs; - HMAC_CTX ctx; - int first; - int zlib; - int size; -}; - -static size_t - swfcrunch(void *ptr, size_t size, size_t nmemb, void *stream) { - struct info *i = stream; - char *p = ptr; - size_t len = size * nmemb; - - if (i->first) { - i->first = 0; - /* compressed? */ - if (!strncmp(p, "CWS", 3)) { - *p = 'F'; - i->zlib = 1; - } - HMAC_crunch(i->ctx, (unsigned char *)p, 8); - p += 8; - len -= 8; - i->size = 8; - } - - if (i->zlib) { - unsigned char out[CHUNK]; - i->zs->next_in = (unsigned char *)p; - i->zs->avail_in = len; - do { - i->zs->avail_out = CHUNK; - i->zs->next_out = out; - inflate(i->zs, Z_NO_FLUSH); - len = CHUNK - i->zs->avail_out; - i->size += len; - HMAC_crunch(i->ctx, out, len); - } while (i->zs->avail_out == 0); - } else { - i->size += len; - HMAC_crunch(i->ctx, (unsigned char *)p, len); - } - return size * nmemb; -} - -static int tzoff; -static int tzchecked; - -#define JAN02_1980 318340800 - -static const char *monthtab[12] = {"Jan", "Feb", "Mar", - "Apr", "May", "Jun", - "Jul", "Aug", "Sep", - "Oct", "Nov", "Dec"}; -static const char *days[] = - {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; - -/* Parse an HTTP datestamp into Unix time */ -static time_t - make_unix_time(char *s) { - struct tm time; - int i, ysub = 1900, fmt = 0; - char *month; - char *n; - time_t res; - - if (s[3] != ' ') { - fmt = 1; - if (s[3] != ',') - ysub = 0; - } - for (n = s; *n; ++n) - if (*n == '-' || *n == ':') - *n = ' '; - - time.tm_mon = 0; - n = strchr(s, ' '); - if (fmt) { - /* Day, DD-MMM-YYYY HH:MM:SS GMT */ - time.tm_mday = strtol(n + 1, &n, 0); - month = n + 1; - n = strchr(month, ' '); - time.tm_year = strtol(n + 1, &n, 0); - time.tm_hour = strtol(n + 1, &n, 0); - time.tm_min = strtol(n + 1, &n, 0); - time.tm_sec = strtol(n + 1, NULL, 0); - } else { - /* Unix ctime() format. Does not conform to HTTP spec. */ - /* Day MMM DD HH:MM:SS YYYY */ - month = n + 1; - n = strchr(month, ' '); - while (isspace(*n)) - n++; - time.tm_mday = strtol(n, &n, 0); - time.tm_hour = strtol(n + 1, &n, 0); - time.tm_min = strtol(n + 1, &n, 0); - time.tm_sec = strtol(n + 1, &n, 0); - time.tm_year = strtol(n + 1, NULL, 0); - } - if (time.tm_year > 100) - time.tm_year -= ysub; - - for (i = 0; i < 12; i++) - if (!strncasecmp(month, monthtab[i], 3)) { - time.tm_mon = i; - break; - } - time.tm_isdst = 0; /* daylight saving is never in effect in GMT */ - - /* this is normally the value of extern int timezone, but some - * braindead C libraries don't provide it. - */ - if (!tzchecked) { - struct tm *tc; - time_t then = JAN02_1980; - tc = localtime(&then); - tzoff = (12 - tc->tm_hour) * 3600 + tc->tm_min * 60 + tc->tm_sec; - tzchecked = 1; - } - res = mktime(&time); - /* Unfortunately, mktime() assumes the input is in local time, - * not GMT, so we have to correct it here. - */ - if (res != -1) - res += tzoff; - return res; -} - -/* Convert a Unix time to a network time string - * Weekday, DD-MMM-YYYY HH:MM:SS GMT - */ -void strtime(time_t *t, char *s) { - struct tm *tm; - - tm = gmtime((time_t *)t); - sprintf(s, "%s, %02d %s %d %02d:%02d:%02d GMT", - days[tm->tm_wday], tm->tm_mday, monthtab[tm->tm_mon], - tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec); -} - -#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) - -int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, - int age) { - FILE *f = NULL; - char *path, date[64], cctim[64]; - long pos = 0; - time_t ctim = -1, cnow; - int i, got = 0, ret = 0; - unsigned int hlen; - struct info in = {0}; - struct HTTP_ctx http = {0}; - HTTPResult httpres; - z_stream zs = {0}; - AVal home, hpre; - - date[0] = '\0'; -#ifdef _WIN32 -#ifdef _XBOX - hpre.av_val = "Q:"; - hpre.av_len = 2; - home.av_val = "\\UserData"; -#else - hpre.av_val = getenv("HOMEDRIVE"); - hpre.av_len = strlen(hpre.av_val); - home.av_val = getenv("HOMEPATH"); -#endif -#define DIRSEP "\\" - -#else /* !_WIN32 */ - hpre.av_val = ""; - hpre.av_len = 0; - home.av_val = getenv("HOME"); -#define DIRSEP "/" -#endif - if (!home.av_val) - home.av_val = "."; - home.av_len = strlen(home.av_val); - - /* SWF hash info is cached in a fixed-format file. - * url: - * ctim: HTTP datestamp of when we last checked it. - * date: HTTP datestamp of the SWF's last modification. - * size: SWF size in hex - * hash: SWF hash in hex - * - * These fields must be present in this order. All fields - * besides URL are fixed size. - */ - path = malloc(hpre.av_len + home.av_len + sizeof(DIRSEP ".swfinfo")); - sprintf(path, "%s%s" DIRSEP ".swfinfo", hpre.av_val, home.av_val); - - f = fopen(path, "r+"); - while (f) { - char buf[4096], *file, *p; - - file = strchr(url, '/'); - if (!file) - break; - file += 2; - file = strchr(file, '/'); - if (!file) - break; - file++; - hlen = file - url; - p = strrchr(file, '/'); - if (p) - file = p; - else - file--; - - while (fgets(buf, sizeof(buf), f)) { - char *r1; - - got = 0; - - if (strncmp(buf, "url: ", 5)) - continue; - if (strncmp(buf + 5, url, hlen)) - continue; - r1 = strrchr(buf, '/'); - i = strlen(r1); - r1[--i] = '\0'; - if (strncmp(r1, file, i)) - continue; - pos = ftell(f); - while (got < 4 && fgets(buf, sizeof(buf), f)) { - if (!strncmp(buf, "size: ", 6)) { - *size = strtol(buf + 6, NULL, 16); - got++; - } else if (!strncmp(buf, "hash: ", 6)) { - unsigned char *ptr = hash, *in = (unsigned char *)buf + 6; - int l = strlen((char *)in) - 1; - for (i = 0; i < l; i += 2) - *ptr++ = (HEX2BIN(in[i]) << 4) | HEX2BIN(in[i + 1]); - got++; - } else if (!strncmp(buf, "date: ", 6)) { - buf[strlen(buf) - 1] = '\0'; - strncpy(date, buf + 6, sizeof(date)); - got++; - } else if (!strncmp(buf, "ctim: ", 6)) { - buf[strlen(buf) - 1] = '\0'; - ctim = make_unix_time(buf + 6); - got++; - } else if (!strncmp(buf, "url: ", 5)) - break; - } - break; - } - break; - } - - cnow = time(NULL); - /* If we got a cache time, see if it's young enough to use directly */ - if (age && ctim > 0) { - ctim = cnow - ctim; - ctim /= 3600 * 24; /* seconds to days */ - if (ctim < age) /* ok, it's new enough */ - goto out; - } - - in.first = 1; - HMAC_setup(in.ctx, "Genuine Adobe Flash Player 001", 30); - inflateInit(&zs); - in.zs = &zs; - - http.date = date; - http.data = ∈ - - httpres = HTTP_get(&http, url, swfcrunch); - - inflateEnd(&zs); - - if (httpres != HTTPRES_OK && httpres != HTTPRES_OK_NOT_MODIFIED) { - ret = -1; - if (httpres == HTTPRES_LOST_CONNECTION) - RTMP_Log(RTMP_LOGERROR, "%s: connection lost while downloading swfurl %s", - __FUNCTION__, url); - else if (httpres == HTTPRES_NOT_FOUND) - RTMP_Log(RTMP_LOGERROR, "%s: swfurl %s not found", __FUNCTION__, url); - else - RTMP_Log(RTMP_LOGERROR, "%s: couldn't contact swfurl %s (HTTP error %d)", - __FUNCTION__, url, http.status); - } else { - if (got && pos) - fseek(f, pos, SEEK_SET); - else { - char *q; - if (!f) - f = fopen(path, "w"); - if (!f) { - int err = errno; - RTMP_Log(RTMP_LOGERROR, - "%s: couldn't open %s for writing, errno %d (%s)", - __FUNCTION__, path, err, strerror(err)); - ret = -1; - goto out; - } - fseek(f, 0, SEEK_END); - q = strchr(url, '?'); - if (q) - i = q - url; - else - i = strlen(url); - - fprintf(f, "url: %.*s\n", i, url); - } - strtime(&cnow, cctim); - fprintf(f, "ctim: %s\n", cctim); - - if (!in.first) { - HMAC_finish(in.ctx, hash, hlen); - *size = in.size; - - fprintf(f, "date: %s\n", date); - fprintf(f, "size: %08x\n", in.size); - fprintf(f, "hash: "); - for (i = 0; i < SHA256_DIGEST_LENGTH; i++) - fprintf(f, "%02x", hash[i]); - fprintf(f, "\n"); - } - } - HMAC_close(in.ctx); -out: - free(path); - if (f) - fclose(f); - return ret; -} -#else -int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, - int age) { - return -1; -} -#endif diff --git a/LFLiveKit/Vendor/pili-librtmp/log.c b/LFLiveKit/Vendor/pili-librtmp/log.c deleted file mode 100644 index d3934366..00000000 --- a/LFLiveKit/Vendor/pili-librtmp/log.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include -#include - -#include "log.h" -#include "rtmp_sys.h" - -#define MAX_PRINT_LEN 2048 - -RTMP_LogLevel RTMP_debuglevel = RTMP_LOGERROR; - -static int neednl; - -static FILE *fmsg; - -static RTMP_LogCallback rtmp_log_default, *cb = rtmp_log_default; - -static const char *levels[] = { - "CRIT", "ERROR", "WARNING", "INFO", - "DEBUG", "DEBUG2"}; - -static void rtmp_log_default(int level, const char *format, va_list vl) { - char str[MAX_PRINT_LEN] = ""; - - vsnprintf(str, MAX_PRINT_LEN - 1, format, vl); - - /* Filter out 'no-name' */ - if (RTMP_debuglevel < RTMP_LOGALL && strstr(str, "no-name") != NULL) - return; - - if (!fmsg) fmsg = stderr; - - if (level <= RTMP_debuglevel) { - if (neednl) { - putc('\n', fmsg); - neednl = 0; - } - fprintf(fmsg, "%s: %s\n", levels[level], str); -#ifdef _DEBUG - fflush(fmsg); -#endif - } -} - -void RTMP_LogSetOutput(FILE *file) { - fmsg = file; -} - -void RTMP_LogSetLevel(RTMP_LogLevel level) { - RTMP_debuglevel = level; -} - -void RTMP_LogSetCallback(RTMP_LogCallback *cbp) { - cb = cbp; -} - -RTMP_LogLevel RTMP_LogGetLevel() { - return RTMP_debuglevel; -} - -void RTMP_Log(int level, const char *format, ...) { - va_list args; - va_start(args, format); - cb(level, format, args); - va_end(args); -} - -static const char hexdig[] = "0123456789abcdef"; - -void RTMP_LogHex(int level, const uint8_t *data, unsigned long len) { - unsigned long i; - char line[50], *ptr; - - if (level > RTMP_debuglevel) - return; - - ptr = line; - - for (i = 0; i < len; i++) { - *ptr++ = hexdig[0x0f & (data[i] >> 4)]; - *ptr++ = hexdig[0x0f & data[i]]; - if ((i & 0x0f) == 0x0f) { - *ptr = '\0'; - ptr = line; - RTMP_Log(level, "%s", line); - } else { - *ptr++ = ' '; - } - } - if (i & 0x0f) { - *ptr = '\0'; - RTMP_Log(level, "%s", line); - } -} - -void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len) { -#define BP_OFFSET 9 -#define BP_GRAPH 60 -#define BP_LEN 80 - char line[BP_LEN]; - unsigned long i; - - if (!data || level > RTMP_debuglevel) - return; - - /* in case len is zero */ - line[0] = '\0'; - - for (i = 0; i < len; i++) { - int n = i % 16; - unsigned off; - - if (!n) { - if (i) RTMP_Log(level, "%s", line); - memset(line, ' ', sizeof(line) - 2); - line[sizeof(line) - 2] = '\0'; - - off = i % 0x0ffffU; - - line[2] = hexdig[0x0f & (off >> 12)]; - line[3] = hexdig[0x0f & (off >> 8)]; - line[4] = hexdig[0x0f & (off >> 4)]; - line[5] = hexdig[0x0f & off]; - line[6] = ':'; - } - - off = BP_OFFSET + n * 3 + ((n >= 8) ? 1 : 0); - line[off] = hexdig[0x0f & (data[i] >> 4)]; - line[off + 1] = hexdig[0x0f & data[i]]; - - off = BP_GRAPH + n + ((n >= 8) ? 1 : 0); - - if (isprint(data[i])) { - line[BP_GRAPH + n] = data[i]; - } else { - line[BP_GRAPH + n] = '.'; - } - } - - RTMP_Log(level, "%s", line); -} - -/* These should only be used by apps, never by the library itself */ -void RTMP_LogPrintf(const char *format, ...) { - char str[MAX_PRINT_LEN] = ""; - int len; - va_list args; - va_start(args, format); - len = vsnprintf(str, MAX_PRINT_LEN - 1, format, args); - va_end(args); - - if (RTMP_debuglevel == RTMP_LOGCRIT) - return; - - if (!fmsg) fmsg = stderr; - - if (neednl) { - putc('\n', fmsg); - neednl = 0; - } - - if (len > MAX_PRINT_LEN - 1) - len = MAX_PRINT_LEN - 1; - fprintf(fmsg, "%s", str); - if (str[len - 1] == '\n') - fflush(fmsg); -} - -void RTMP_LogStatus(const char *format, ...) { - char str[MAX_PRINT_LEN] = ""; - va_list args; - va_start(args, format); - vsnprintf(str, MAX_PRINT_LEN - 1, format, args); - va_end(args); - - if (RTMP_debuglevel == RTMP_LOGCRIT) - return; - - if (!fmsg) fmsg = stderr; - - fprintf(fmsg, "%s", str); - fflush(fmsg); - neednl = 1; -} diff --git a/LFLiveKit/Vendor/pili-librtmp/parseurl.c b/LFLiveKit/Vendor/pili-librtmp/parseurl.c deleted file mode 100644 index 0e50352b..00000000 --- a/LFLiveKit/Vendor/pili-librtmp/parseurl.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (C) 2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * librtmp is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * librtmp is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with librtmp see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include - -#include -#include - -#include "log.h" -#include "rtmp_sys.h" - -int PILI_RTMP_ParseURL2(const char *url, int *protocol, AVal *host, unsigned int *port, - AVal *playpath, AVal *app, AVal *domainName) { - char *p, *end, *col, *ques, *slash; - - RTMP_Log(RTMP_LOGDEBUG, "Parsing..."); - - *protocol = RTMP_PROTOCOL_RTMP; - *port = 0; - playpath->av_len = 0; - playpath->av_val = NULL; - app->av_len = 0; - app->av_val = NULL; - - /* Old School Parsing */ - - /* look for usual :// pattern */ - p = strstr(url, "://"); - if (!p) { - RTMP_Log(RTMP_LOGERROR, "RTMP URL: No :// in url!"); - return FALSE; - } - { - int len = (int)(p - url); - - if (len == 4 && strncasecmp(url, "rtmp", 4) == 0) - *protocol = RTMP_PROTOCOL_RTMP; - else if (len == 5 && strncasecmp(url, "rtmpt", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMPT; - else if (len == 5 && strncasecmp(url, "rtmps", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMPS; - else if (len == 5 && strncasecmp(url, "rtmpe", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMPE; - else if (len == 5 && strncasecmp(url, "rtmfp", 5) == 0) - *protocol = RTMP_PROTOCOL_RTMFP; - else if (len == 6 && strncasecmp(url, "rtmpte", 6) == 0) - *protocol = RTMP_PROTOCOL_RTMPTE; - else if (len == 6 && strncasecmp(url, "rtmpts", 6) == 0) - *protocol = RTMP_PROTOCOL_RTMPTS; - else { - RTMP_Log(RTMP_LOGWARNING, "Unknown protocol!\n"); - goto parsehost; - } - } - - RTMP_Log(RTMP_LOGDEBUG, "Parsed protocol: %d", *protocol); - -parsehost: - /* let's get the hostname */ - p += 3; - - /* check for sudden death */ - if (*p == 0) { - RTMP_Log(RTMP_LOGWARNING, "No hostname in URL!"); - return FALSE; - } - - end = p + strlen(p); - col = strchr(p, ':'); - ques = strchr(p, '?'); - slash = strchr(p, '/'); - - { - int hostlen; - if (slash) - hostlen = slash - p; - else - hostlen = end - p; - if (col && col - p < hostlen) - hostlen = col - p; - - if (hostlen < 256) { - host->av_val = p; - host->av_len = hostlen; - RTMP_Log(RTMP_LOGDEBUG, "Parsed host : %.*s", hostlen, host->av_val); - } else { - RTMP_Log(RTMP_LOGWARNING, "Hostname exceeds 255 characters!"); - } - - p += hostlen; - } - - /* get the port number if available */ - if (*p == ':') { - unsigned int p2; - p++; - p2 = atoi(p); - if (p2 > 65535) { - RTMP_Log(RTMP_LOGWARNING, "Invalid port number!"); - } else { - *port = p2; - } - } - - if (!slash) { - RTMP_Log(RTMP_LOGWARNING, "No application or playpath in URL!"); - return TRUE; - } - p = slash + 1; - - /** parse domain - + * rtmp://host:[port]/app/...?domain=a.com - + * use domain to replace host - + */ - - if (domainName != NULL && ques != NULL) { - char *domain = strstr(ques, "domain="); - if (domain) { - end = domain - 1; - domain += 7; //skip "domain=" - char *domain_end = strchr(domain, '&'); - int host_len = 0; - if (domain_end) { - host_len = domain_end - domain; - } else { - host_len = strlen(domain); - } - if (host_len < 256) { - domainName->av_val = domain; - domainName->av_len = host_len; - RTMP_Log(RTMP_LOGDEBUG, "Parsed host and domain : %.*s", host_len, host->av_val); - } - } - } - - { - /* parse application - * - * rtmp://host[:port]/app[/appinstance][/...] - * application = app[/appinstance] - */ - - char *slash2, *slash3 = NULL; - int applen, appnamelen; - - slash2 = strchr(p, '/'); - if (slash2) - slash3 = strchr(slash2 + 1, '/'); - - applen = end - p; /* ondemand, pass all parameters as app */ - appnamelen = applen; /* ondemand length */ - - if (ques && strstr(p, "slist=")) { /* whatever it is, the '?' and slist= means we need to use everything as app and parse plapath from slist= */ - appnamelen = ques - p; - } else if (strncmp(p, "ondemand/", 9) == 0) { - /* app = ondemand/foobar, only pass app=ondemand */ - applen = 8; - appnamelen = 8; - } else { /* app!=ondemand, so app is app[/appinstance] */ - if (slash3) - appnamelen = slash3 - p; - else if (slash2) - appnamelen = slash2 - p; - - applen = appnamelen; - } - - app->av_val = p; - app->av_len = applen; - RTMP_Log(RTMP_LOGDEBUG, "Parsed app : %.*s", applen, p); - - p += appnamelen; - } - - if (*p == '/') - p++; - - if (end - p) { - AVal av = {p, end - p}; - PILI_RTMP_ParsePlaypath(&av, playpath); - } - - return TRUE; -} - -/* - * Extracts playpath from RTMP URL. playpath is the file part of the - * URL, i.e. the part that comes after rtmp://host:port/app/ - * - * Returns the stream name in a format understood by FMS. The name is - * the playpath part of the URL with formatting depending on the stream - * type: - * - * mp4 streams: prepend "mp4:", remove extension - * mp3 streams: prepend "mp3:", remove extension - * flv streams: remove extension - */ -void PILI_RTMP_ParsePlaypath(AVal *in, AVal *out) { - int addMP4 = 0; - int addMP3 = 0; - int subExt = 0; - const char *playpath = in->av_val; - const char *temp, *q, *ext = NULL; - const char *ppstart = playpath; - char *streamname, *destptr, *p; - - int pplen = in->av_len; - - out->av_val = NULL; - out->av_len = 0; - - if ((*ppstart == '?') && - (temp = strstr(ppstart, "slist=")) != 0) { - ppstart = temp + 6; - pplen = strlen(ppstart); - - temp = strchr(ppstart, '&'); - if (temp) { - pplen = temp - ppstart; - } - } - - q = strchr(ppstart, '?'); - if (pplen >= 4) { - if (q) - ext = q - 4; - else - ext = &ppstart[pplen - 4]; - if ((strncmp(ext, ".f4v", 4) == 0) || - (strncmp(ext, ".mp4", 4) == 0)) { - addMP4 = 1; - subExt = 1; - /* Only remove .flv from rtmp URL, not slist params */ - } else if ((ppstart == playpath) && - (strncmp(ext, ".flv", 4) == 0)) { - subExt = 1; - } else if (strncmp(ext, ".mp3", 4) == 0) { - addMP3 = 1; - subExt = 1; - } - } - - streamname = (char *)malloc((pplen + 4 + 1) * sizeof(char)); - if (!streamname) - return; - - destptr = streamname; - if (addMP4) { - if (strncmp(ppstart, "mp4:", 4)) { - strcpy(destptr, "mp4:"); - destptr += 4; - } else { - subExt = 0; - } - } else if (addMP3) { - if (strncmp(ppstart, "mp3:", 4)) { - strcpy(destptr, "mp3:"); - destptr += 4; - } else { - subExt = 0; - } - } - - for (p = (char *)ppstart; pplen > 0;) { - /* skip extension */ - if (subExt && p == ext) { - p += 4; - pplen -= 4; - continue; - } - if (*p == '%') { - unsigned int c; - sscanf(p + 1, "%02x", &c); - *destptr++ = c; - pplen -= 3; - p += 3; - } else { - *destptr++ = *p++; - pplen--; - } - } - *destptr = '\0'; - - out->av_val = streamname; - out->av_len = destptr - streamname; -} - -int PILI_RTMP_ParseURL(const char *url, int *protocol, AVal *host, - unsigned int *port, AVal *playpath, AVal *app) { - return PILI_RTMP_ParseURL2(url, protocol, host, port, playpath, app, NULL); -} diff --git a/LFLiveKit/Vendor/pili-librtmp/rtmp.c b/LFLiveKit/Vendor/pili-librtmp/rtmp.c deleted file mode 100644 index 5043885b..00000000 --- a/LFLiveKit/Vendor/pili-librtmp/rtmp.c +++ /dev/null @@ -1,4136 +0,0 @@ -/* - * Copyright (C) 2005-2008 Team XBMC - * http://www.xbmc.org - * Copyright (C) 2008-2009 Andrej Stepanchuk - * Copyright (C) 2009-2010 Howard Chu - * - * This file is part of librtmp. - * - * libPILI_RTMP is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1, - * or (at your option) any later version. - * - * libPILI_RTMP is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with libPILI_RTMP see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/lgpl.html - */ - -#include -#include -#include -#include - -#include "log.h" -#include "rtmp_sys.h" - -#ifdef CRYPTO -#ifdef USE_POLARSSL -#include -#elif defined(USE_GNUTLS) -#include -#else /* USE_OPENSSL */ -#include -#include -#endif -TLS_CTX RTMP_TLS_ctx; -#endif - -#define RTMP_SIG_SIZE 1536 -#define RTMP_LARGE_HEADER_SIZE 12 - -static const int packetSize[] = {12, 8, 4, 1}; - -int PILI_RTMP_ctrlC; - -const char PILI_RTMPProtocolStrings[][7] = { - "RTMP", - "RTMPT", - "RTMPE", - "RTMPTE", - "RTMPS", - "RTMPTS", - "", - "", - "RTMFP"}; - -const char PILI_RTMPProtocolStringsLower[][7] = { - "rtmp", - "rtmpt", - "rtmpe", - "rtmpte", - "rtmps", - "rtmpts", - "", - "", - "rtmfp"}; - -static const char *RTMPT_cmds[] = { - "open", - "send", - "idle", - "close"}; - -typedef enum { - RTMPT_OPEN = 0, - RTMPT_SEND, - RTMPT_IDLE, - RTMPT_CLOSE -} RTMPTCmd; - -static int DumpMetaData(AMFObject *obj); -static int HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error); -static int SocksNegotiate(PILI_RTMP *r, RTMPError *error); - -static int SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error); -static int SendCheckBW(PILI_RTMP *r, RTMPError *error); -static int SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error); -static int SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error); -static int SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error); -static int SendPlay(PILI_RTMP *r, RTMPError *error); -static int SendBytesReceived(PILI_RTMP *r, RTMPError *error); - -#if 0 /* unused */ -static int SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath); -#endif - -static int HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize); -static int HandleMetadata(PILI_RTMP *r, char *body, unsigned int len); -static void HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); -static void HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet); - -static int ReadN(PILI_RTMP *r, char *buffer, int n); -static int WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error); - -static void DecodeTEA(AVal *key, AVal *text); - -static int HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len); -static int HTTP_read(PILI_RTMP *r, int fill); - -#ifndef _WIN32 -static int clk_tck; -#endif - -#ifdef CRYPTO -#include "handshake.h" -#endif - -uint32_t - PILI_RTMP_GetTime() { -#ifdef _DEBUG - return 0; -#elif defined(_WIN32) - return timeGetTime(); -#else - struct tms t; - if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK); - return times(&t) * 1000 / clk_tck; -#endif -} - -void PILI_RTMP_UserInterrupt() { - PILI_RTMP_ctrlC = TRUE; -} - -void PILI_RTMPPacket_Reset(PILI_RTMPPacket *p) { - p->m_headerType = 0; - p->m_packetType = 0; - p->m_nChannel = 0; - p->m_nTimeStamp = 0; - p->m_nInfoField2 = 0; - p->m_hasAbsTimestamp = FALSE; - p->m_nBodySize = 0; - p->m_nBytesRead = 0; -} - -int PILI_RTMPPacket_Alloc(PILI_RTMPPacket *p, int nSize) { - char *ptr = calloc(1, nSize + RTMP_MAX_HEADER_SIZE); - if (!ptr) - return FALSE; - p->m_body = ptr + RTMP_MAX_HEADER_SIZE; - p->m_nBytesRead = 0; - return TRUE; -} - -void PILI_RTMPPacket_Free(PILI_RTMPPacket *p) { - if (p->m_body) { - free(p->m_body - RTMP_MAX_HEADER_SIZE); - p->m_body = NULL; - } -} - -void PILI_RTMPPacket_Dump(PILI_RTMPPacket *p) { - RTMP_Log(RTMP_LOGDEBUG, - "PILI_RTMP PACKET: packet type: 0x%02x. channel: 0x%02x. info 1: %d info 2: %d. Body size: %lu. body: 0x%02x", - p->m_packetType, p->m_nChannel, p->m_nTimeStamp, p->m_nInfoField2, - p->m_nBodySize, p->m_body ? (unsigned char)p->m_body[0] : 0); -} - -int PILI_RTMP_LibVersion() { - return RTMP_LIB_VERSION; -} - -void PILI_RTMP_TLS_Init() { -#ifdef CRYPTO -#ifdef USE_POLARSSL - /* Do this regardless of NO_SSL, we use havege for rtmpe too */ - RTMP_TLS_ctx = calloc(1, sizeof(struct tls_ctx)); - havege_init(&RTMP_TLS_ctx->hs); -#elif defined(USE_GNUTLS) && !defined(NO_SSL) - /* Technically we need to initialize libgcrypt ourselves if - * we're not going to call gnutls_global_init(). Ignoring this - * for now. - */ - gnutls_global_init(); - RTMP_TLS_ctx = malloc(sizeof(struct tls_ctx)); - gnutls_certificate_allocate_credentials(&RTMP_TLS_ctx->cred); - gnutls_priority_init(&RTMP_TLS_ctx->prios, "NORMAL", NULL); - gnutls_certificate_set_x509_trust_file(RTMP_TLS_ctx->cred, - "ca.pem", GNUTLS_X509_FMT_PEM); -#elif !defined(NO_SSL) /* USE_OPENSSL */ - /* libcrypto doesn't need anything special */ - SSL_load_error_strings(); - SSL_library_init(); - OpenSSL_add_all_digests(); - RTMP_TLS_ctx = SSL_CTX_new(SSLv23_method()); - SSL_CTX_set_options(RTMP_TLS_ctx, SSL_OP_ALL); - SSL_CTX_set_default_verify_paths(RTMP_TLS_ctx); -#endif -#endif -} - -PILI_RTMP * - PILI_RTMP_Alloc() { - return calloc(1, sizeof(PILI_RTMP)); -} - -void PILI_RTMP_Free(PILI_RTMP *r) { - r->m_errorCallback = NULL; - r->m_userData = NULL; - RTMPError_Free(r->m_error); - r->m_error = NULL; - - free(r); -} - -void PILI_RTMP_Init(PILI_RTMP *r) { -#ifdef CRYPTO - if (!RTMP_TLS_ctx) - RTMP_TLS_Init(); -#endif - - memset(r, 0, sizeof(PILI_RTMP)); - r->m_sb.sb_socket = -1; - r->m_inChunkSize = RTMP_DEFAULT_CHUNKSIZE; - r->m_outChunkSize = RTMP_DEFAULT_CHUNKSIZE; - r->m_nBufferMS = 30000; - r->m_nClientBW = 2500000; - r->m_nClientBW2 = 2; - r->m_nServerBW = 2500000; - r->m_fAudioCodecs = 3191.0; - r->m_fVideoCodecs = 252.0; - r->Link.timeout = 10; - r->Link.send_timeout = 10; - r->Link.swfAge = 30; - - r->m_errorCallback = NULL; - r->m_error = NULL; - r->m_userData = NULL; - r->m_is_closing = 0; - r->m_tcp_nodelay = 1; - - r->m_connCallback = NULL; - r->ip = 0; -} - -void PILI_RTMP_EnableWrite(PILI_RTMP *r) { - r->Link.protocol |= RTMP_FEATURE_WRITE; -} - -double - PILI_RTMP_GetDuration(PILI_RTMP *r) { - return r->m_fDuration; -} - -int PILI_RTMP_IsConnected(PILI_RTMP *r) { - return r->m_sb.sb_socket != -1; -} - -int PILI_RTMP_Socket(PILI_RTMP *r) { - return r->m_sb.sb_socket; -} - -int PILI_RTMP_IsTimedout(PILI_RTMP *r) { - return r->m_sb.sb_timedout; -} - -void PILI_RTMP_SetBufferMS(PILI_RTMP *r, int size) { - r->m_nBufferMS = size; -} - -void PILI_RTMP_UpdateBufferMS(PILI_RTMP *r, RTMPError *error) { - PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, error); -} - -#undef OSS -#ifdef _WIN32 -#define OSS "WIN" -#elif defined(__sun__) -#define OSS "SOL" -#elif defined(__APPLE__) -#define OSS "MAC" -#elif defined(__linux__) -#define OSS "LNX" -#else -#define OSS "GNU" -#endif -#define DEF_VERSTR OSS " 10,0,32,18" -static const char DEFAULT_FLASH_VER[] = DEF_VERSTR; -const AVal RTMP_DefaultFlashVer = - {(char *)DEFAULT_FLASH_VER, sizeof(DEFAULT_FLASH_VER) - 1}; - -void PILI_RTMP_SetupStream(PILI_RTMP *r, - int protocol, - AVal *host, - unsigned int port, - AVal *sockshost, - AVal *playpath, - AVal *tcUrl, - AVal *swfUrl, - AVal *pageUrl, - AVal *app, - AVal *auth, - AVal *swfSHA256Hash, - uint32_t swfSize, - AVal *flashVer, - AVal *subscribepath, - int dStart, - int dStop, int bLiveStream, long int timeout) { - RTMP_Log(RTMP_LOGDEBUG, "Protocol : %s", PILI_RTMPProtocolStrings[protocol & 7]); - RTMP_Log(RTMP_LOGDEBUG, "Hostname : %.*s", host->av_len, host->av_val); - RTMP_Log(RTMP_LOGDEBUG, "Port : %d", port); - RTMP_Log(RTMP_LOGDEBUG, "Playpath : %s", playpath->av_val); - - if (tcUrl && tcUrl->av_val) - RTMP_Log(RTMP_LOGDEBUG, "tcUrl : %s", tcUrl->av_val); - if (swfUrl && swfUrl->av_val) - RTMP_Log(RTMP_LOGDEBUG, "swfUrl : %s", swfUrl->av_val); - if (pageUrl && pageUrl->av_val) - RTMP_Log(RTMP_LOGDEBUG, "pageUrl : %s", pageUrl->av_val); - if (app && app->av_val) - RTMP_Log(RTMP_LOGDEBUG, "app : %.*s", app->av_len, app->av_val); - if (auth && auth->av_val) - RTMP_Log(RTMP_LOGDEBUG, "auth : %s", auth->av_val); - if (subscribepath && subscribepath->av_val) - RTMP_Log(RTMP_LOGDEBUG, "subscribepath : %s", subscribepath->av_val); - if (flashVer && flashVer->av_val) - RTMP_Log(RTMP_LOGDEBUG, "flashVer : %s", flashVer->av_val); - if (dStart > 0) - RTMP_Log(RTMP_LOGDEBUG, "StartTime : %d msec", dStart); - if (dStop > 0) - RTMP_Log(RTMP_LOGDEBUG, "StopTime : %d msec", dStop); - - RTMP_Log(RTMP_LOGDEBUG, "live : %s", bLiveStream ? "yes" : "no"); - RTMP_Log(RTMP_LOGDEBUG, "timeout : %d sec", timeout); - -#ifdef CRYPTO - if (swfSHA256Hash != NULL && swfSize > 0) { - memcpy(r->Link.SWFHash, swfSHA256Hash->av_val, sizeof(r->Link.SWFHash)); - r->Link.SWFSize = swfSize; - RTMP_Log(RTMP_LOGDEBUG, "SWFSHA256:"); - RTMP_LogHex(RTMP_LOGDEBUG, r->Link.SWFHash, sizeof(r->Link.SWFHash)); - RTMP_Log(RTMP_LOGDEBUG, "SWFSize : %lu", r->Link.SWFSize); - } else { - r->Link.SWFSize = 0; - } -#endif - - if (sockshost->av_len) { - const char *socksport = strchr(sockshost->av_val, ':'); - char *hostname = strdup(sockshost->av_val); - - if (socksport) - hostname[socksport - sockshost->av_val] = '\0'; - r->Link.sockshost.av_val = hostname; - r->Link.sockshost.av_len = strlen(hostname); - - r->Link.socksport = socksport ? atoi(socksport + 1) : 1080; - RTMP_Log(RTMP_LOGDEBUG, "Connecting via SOCKS proxy: %s:%d", r->Link.sockshost.av_val, - r->Link.socksport); - } else { - r->Link.sockshost.av_val = NULL; - r->Link.sockshost.av_len = 0; - r->Link.socksport = 0; - } - - if (tcUrl && tcUrl->av_len) - r->Link.tcUrl = *tcUrl; - if (swfUrl && swfUrl->av_len) - r->Link.swfUrl = *swfUrl; - if (pageUrl && pageUrl->av_len) - r->Link.pageUrl = *pageUrl; - if (app && app->av_len) - r->Link.app = *app; - if (auth && auth->av_len) { - r->Link.auth = *auth; - r->Link.lFlags |= RTMP_LF_AUTH; - } - if (flashVer && flashVer->av_len) - r->Link.flashVer = *flashVer; - else - r->Link.flashVer = RTMP_DefaultFlashVer; - if (subscribepath && subscribepath->av_len) - r->Link.subscribepath = *subscribepath; - r->Link.seekTime = dStart; - r->Link.stopTime = dStop; - if (bLiveStream) - r->Link.lFlags |= RTMP_LF_LIVE; - r->Link.timeout = timeout; - - r->Link.protocol = protocol; - r->Link.hostname = *host; - r->Link.port = port; - r->Link.playpath = *playpath; - - if (r->Link.port == 0) { - if (protocol & RTMP_FEATURE_SSL) - r->Link.port = 443; - else if (protocol & RTMP_FEATURE_HTTP) - r->Link.port = 80; - else - r->Link.port = 1935; - } -} - -enum { OPT_STR = 0, - OPT_INT, - OPT_BOOL, - OPT_CONN }; -static const char *optinfo[] = { - "string", "integer", "boolean", "AMF"}; - -#define OFF(x) offsetof(struct PILI_RTMP, x) - -static struct urlopt { - AVal name; - off_t off; - int otype; - int omisc; - char *use; -} options[] = { - {AVC("socks"), OFF(Link.sockshost), OPT_STR, 0, - "Use the specified SOCKS proxy"}, - {AVC("app"), OFF(Link.app), OPT_STR, 0, - "Name of target app on server"}, - {AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0, - "URL to played stream"}, - {AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0, - "URL of played media's web page"}, - {AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0, - "URL to player SWF file"}, - {AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0, - "Flash version string (default " DEF_VERSTR ")"}, - {AVC("conn"), OFF(Link.extras), OPT_CONN, 0, - "Append arbitrary AMF data to Connect message"}, - {AVC("playpath"), OFF(Link.playpath), OPT_STR, 0, - "Path to target media on server"}, - {AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST, - "Set playlist before play command"}, - {AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE, - "Stream is live, no seeking possible"}, - {AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0, - "Stream to subscribe to"}, - {AVC("token"), OFF(Link.token), OPT_STR, 0, - "Key for SecureToken response"}, - {AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV, - "Perform SWF Verification"}, - {AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0, - "Number of days to use cached SWF hash"}, - {AVC("start"), OFF(Link.seekTime), OPT_INT, 0, - "Stream start position in milliseconds"}, - {AVC("stop"), OFF(Link.stopTime), OPT_INT, 0, - "Stream stop position in milliseconds"}, - {AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0, - "Buffer time in milliseconds"}, - {AVC("timeout"), OFF(Link.timeout), OPT_INT, 0, - "Session timeout in seconds"}, - {{NULL, 0}, 0, 0}}; - -static const AVal truth[] = { - AVC("1"), - AVC("on"), - AVC("yes"), - AVC("true"), - {0, 0}}; - -static void RTMP_OptUsage() { - int i; - - RTMP_Log(RTMP_LOGERROR, "Valid PILI_RTMP options are:\n"); - for (i = 0; options[i].name.av_len; i++) { - RTMP_Log(RTMP_LOGERROR, "%10s %-7s %s\n", options[i].name.av_val, - optinfo[options[i].otype], options[i].use); - } -} - -static int - parseAMF(AMFObject *obj, AVal *av, int *depth) { - AMFObjectProperty prop = {{0, 0}}; - int i; - char *p, *arg = av->av_val; - - if (arg[1] == ':') { - p = (char *)arg + 2; - switch (arg[0]) { - case 'B': - prop.p_type = AMF_BOOLEAN; - prop.p_vu.p_number = atoi(p); - break; - case 'S': - prop.p_type = AMF_STRING; - prop.p_vu.p_aval.av_val = p; - prop.p_vu.p_aval.av_len = av->av_len - (p - arg); - break; - case 'N': - prop.p_type = AMF_NUMBER; - prop.p_vu.p_number = strtod(p, NULL); - break; - case 'Z': - prop.p_type = AMF_NULL; - break; - case 'O': - i = atoi(p); - if (i) { - prop.p_type = AMF_OBJECT; - } else { - (*depth)--; - return 0; - } - break; - default: - return -1; - } - } else if (arg[2] == ':' && arg[0] == 'N') { - p = strchr(arg + 3, ':'); - if (!p || !*depth) - return -1; - prop.p_name.av_val = (char *)arg + 3; - prop.p_name.av_len = p - (arg + 3); - - p++; - switch (arg[1]) { - case 'B': - prop.p_type = AMF_BOOLEAN; - prop.p_vu.p_number = atoi(p); - break; - case 'S': - prop.p_type = AMF_STRING; - prop.p_vu.p_aval.av_val = p; - prop.p_vu.p_aval.av_len = av->av_len - (p - arg); - break; - case 'N': - prop.p_type = AMF_NUMBER; - prop.p_vu.p_number = strtod(p, NULL); - break; - case 'O': - prop.p_type = AMF_OBJECT; - break; - default: - return -1; - } - } else - return -1; - - if (*depth) { - AMFObject *o2; - for (i = 0; i < *depth; i++) { - o2 = &obj->o_props[obj->o_num - 1].p_vu.p_object; - obj = o2; - } - } - AMF_AddProp(obj, &prop); - if (prop.p_type == AMF_OBJECT) - (*depth)++; - return 0; -} - -int RTMP_SetOpt(PILI_RTMP *r, const AVal *opt, AVal *arg, RTMPError *error) { - int i; - void *v; - - for (i = 0; options[i].name.av_len; i++) { - if (opt->av_len != options[i].name.av_len) continue; - if (strcasecmp(opt->av_val, options[i].name.av_val)) continue; - v = (char *)r + options[i].off; - switch (options[i].otype) { - case OPT_STR: { - AVal *aptr = v; - *aptr = *arg; - } break; - case OPT_INT: { - long l = strtol(arg->av_val, NULL, 0); - *(int *)v = l; - } break; - case OPT_BOOL: { - int j, fl; - fl = *(int *)v; - for (j = 0; truth[j].av_len; j++) { - if (arg->av_len != truth[j].av_len) continue; - if (strcasecmp(arg->av_val, truth[j].av_val)) continue; - fl |= options[i].omisc; - break; - } - *(int *)v = fl; - } break; - case OPT_CONN: - if (parseAMF(&r->Link.extras, arg, &r->Link.edepth)) - return FALSE; - break; - } - break; - } - if (!options[i].name.av_len) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Unknown option "); - strcat(msg, opt->av_val); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorUnknowOption; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "Unknown option %s", opt->av_val); - RTMP_OptUsage(); - return FALSE; - } - - return TRUE; -} - -int PILI_RTMP_SetupURL(PILI_RTMP *r, const char *url, RTMPError *error) { - AVal opt, arg; - char *p1, *p2, *ptr = strchr(url, ' '); - int ret, len; - unsigned int port = 0; - - if (ptr) - *ptr = '\0'; - - len = (int)strlen(url); - ret = PILI_RTMP_ParseURL2(url, &r->Link.protocol, &r->Link.hostname, - &port, &r->Link.playpath0, &r->Link.app, &r->Link.domain); - if (!ret) - return ret; - r->Link.port = port; - r->Link.playpath = r->Link.playpath0; - - while (ptr) { - *ptr++ = '\0'; - p1 = ptr; - p2 = strchr(p1, '='); - if (!p2) - break; - opt.av_val = p1; - opt.av_len = p2 - p1; - *p2++ = '\0'; - arg.av_val = p2; - ptr = strchr(p2, ' '); - if (ptr) { - *ptr = '\0'; - arg.av_len = ptr - p2; - /* skip repeated spaces */ - while (ptr[1] == ' ') - *ptr++ = '\0'; - } else { - arg.av_len = strlen(p2); - } - - /* unescape */ - port = arg.av_len; - for (p1 = p2; port > 0;) { - if (*p1 == '\\') { - unsigned int c; - if (port < 3) - return FALSE; - sscanf(p1 + 1, "%02x", &c); - *p2++ = c; - port -= 3; - p1 += 3; - } else { - *p2++ = *p1++; - port--; - } - } - arg.av_len = p2 - arg.av_val; - - ret = RTMP_SetOpt(r, &opt, &arg, error); - if (!ret) - return ret; - } - - if (!r->Link.tcUrl.av_len) { - r->Link.tcUrl.av_val = url; - if (r->Link.app.av_len) { - AVal *domain = &r->Link.domain; - if (domain->av_len == 0 && r->Link.app.av_val < url + len) { - /* if app is part of original url, just use it */ - r->Link.tcUrl.av_len = r->Link.app.av_len + (r->Link.app.av_val - url); - } else { - if (domain->av_len == 0) { - domain = &r->Link.hostname; - } - if (r->Link.port = 0) { - r->Link.port = 1935; - } - len = domain->av_len + r->Link.app.av_len + sizeof("rtmpte://:65535/"); - r->Link.tcUrl.av_val = malloc(len); - r->Link.tcUrl.av_len = snprintf(r->Link.tcUrl.av_val, len, - "%s://%.*s:%d/%.*s", - PILI_RTMPProtocolStringsLower[r->Link.protocol], - domain->av_len, domain->av_val, - r->Link.port, - r->Link.app.av_len, r->Link.app.av_val); - r->Link.lFlags |= RTMP_LF_FTCU; - } - } else { - r->Link.tcUrl.av_len = strlen(url); - } - } - -#ifdef CRYPTO - if ((r->Link.lFlags & RTMP_LF_SWFV) && r->Link.swfUrl.av_len) - RTMP_HashSWF(r->Link.swfUrl.av_val, &r->Link.SWFSize, - (unsigned char *)r->Link.SWFHash, r->Link.swfAge); -#endif - - if (r->Link.port == 0) { - if (r->Link.protocol & RTMP_FEATURE_SSL) - r->Link.port = 443; - else if (r->Link.protocol & RTMP_FEATURE_HTTP) - r->Link.port = 80; - else - r->Link.port = 1935; - } - return TRUE; -} - -static int add_addr_info(PILI_RTMP *r, struct addrinfo *hints, struct addrinfo **ai, AVal *host, int port, RTMPError *error) { - char *hostname; - int ret = TRUE; - if (host->av_val[host->av_len]) { - hostname = malloc(host->av_len + 1); - memcpy(hostname, host->av_val, host->av_len); - hostname[host->av_len] = '\0'; - } else { - hostname = host->av_val; - } - - struct addrinfo *cur_ai; - char portstr[10]; - snprintf(portstr, sizeof(portstr), "%d", port); - int addrret = getaddrinfo(hostname, portstr, hints, ai); - if (addrret != 0) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Problem accessing the DNS. addr: "); - strcat(msg, hostname); - - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorAccessDNSFailed; - strcpy(error->message, msg); - RTMP_Log(RTMP_LOGERROR, "Problem accessing the DNS. (addr: %s)", hostname); - ret = FALSE; - } - - if (hostname != host->av_val) { - free(hostname); - } - return ret; -} - -int PILI_RTMP_Connect0(PILI_RTMP *r, struct addrinfo *ai, unsigned short port, RTMPError *error) { - r->m_sb.sb_timedout = FALSE; - r->m_pausing = 0; - r->m_fDuration = 0.0; - - r->m_sb.sb_socket = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (ai->ai_family == AF_INET6) { - struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)ai->ai_addr; - in6->sin6_port = htons(port); - } - if (r->m_sb.sb_socket != -1) { - if (connect(r->m_sb.sb_socket, ai->ai_addr, ai->ai_addrlen) < 0) { - int err = GetSockError(); - - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Failed to connect socket. "); - strcat(msg, strerror(err)); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorFailedToConnectSocket; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, failed to connect socket. %d (%s)", - __FUNCTION__, err, strerror(err)); - - PILI_RTMP_Close(r, NULL); - return FALSE; - } - - if (r->Link.socksport) { - RTMP_Log(RTMP_LOGDEBUG, "%s ... SOCKS negotiation", __FUNCTION__); - if (!SocksNegotiate(r, error)) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Socks negotiation failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorSocksNegotiationFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, SOCKS negotiation failed.", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - } - } else { - int err = GetSockError(); - - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Failed to create socket. "); - strcat(msg, strerror(err)); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorFailedToCreateSocket; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, failed to create socket. Error: %d (%s)", __FUNCTION__, err, strerror(err)); - - return FALSE; - } - - /* set receive timeout */ - { - SET_RCVTIMEO(tv, r->Link.timeout); - if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv))) { - RTMP_Log(RTMP_LOGERROR, "%s, Setting socket recieve timeout to %ds failed!", - __FUNCTION__, r->Link.timeout); - } - } - - /* set send timeout*/ - { - struct timeval timeout; - timeout.tv_sec = r->Link.send_timeout; - timeout.tv_usec = 0; - - if (setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout))) { - RTMP_Log(RTMP_LOGERROR, "%s, Setting socket send timeout to %ds failed!", - __FUNCTION__, r->Link.timeout); - } - } - - /* ignore sigpipe */ - int kOne = 1; -#ifdef __linux - setsockopt(r->m_sb.sb_socket, SOL_SOCKET, MSG_NOSIGNAL, &kOne, sizeof(kOne)); -#else - setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_NOSIGPIPE, &kOne, sizeof(kOne)); -#endif - if (r->m_tcp_nodelay) { - int on = 1; - setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *)&on, sizeof(on)); - } - - return TRUE; -} - -int PILI_RTMP_Connect1(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { - if (r->Link.protocol & RTMP_FEATURE_SSL) { -#if defined(CRYPTO) && !defined(NO_SSL) - TLS_client(RTMP_TLS_ctx, r->m_sb.sb_ssl); - TLS_setfd(r->m_sb.sb_ssl, r->m_sb.sb_socket); - if (TLS_connect(r->m_sb.sb_ssl) < 0) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "TLS_Connect failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorTLSConnectFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, TLS_Connect failed", __FUNCTION__); - RTMP_Close(r, NULL); - return FALSE; - } -#else - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "No SSL/TLS support."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorNoSSLOrTLSSupport; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, no SSL/TLS support", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - -#endif - } - if (r->Link.protocol & RTMP_FEATURE_HTTP) { - r->m_msgCounter = 1; - r->m_clientID.av_val = NULL; - r->m_clientID.av_len = 0; - HTTP_Post(r, RTMPT_OPEN, "", 1); - HTTP_read(r, 1); - r->m_msgCounter = 0; - } - RTMP_Log(RTMP_LOGDEBUG, "%s, ... connected, handshaking", __FUNCTION__); - if (!HandShake(r, TRUE, error)) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "Handshake failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorHandshakeFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "%s, handshake failed.", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - RTMP_Log(RTMP_LOGDEBUG, "%s, handshaked", __FUNCTION__); - - if (!SendConnectPacket(r, cp, error)) { - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP connect failed."); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorRTMPConnectFailed; - strcpy(error->message, msg); - } - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP connect failed.", __FUNCTION__); - PILI_RTMP_Close(r, NULL); - return FALSE; - } - return TRUE; -} - -int PILI_RTMP_Connect(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { - struct PILI_CONNECTION_TIME conn_time; - if (!r->Link.hostname.av_len) - return FALSE; - - struct addrinfo hints = {0}, *ai, *cur_ai; - hints.ai_family = PF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_DEFAULT; - unsigned short port; - if (r->Link.socksport) { - port = r->Link.socksport; - /* Connect via SOCKS */ - if (!add_addr_info(r, &hints, &ai, &r->Link.sockshost, r->Link.socksport, error)) { - return FALSE; - } - } else { - port = r->Link.port; - /* Connect directly */ - if (!add_addr_info(r, &hints, &ai, &r->Link.hostname, r->Link.port, error)) { - return FALSE; - } - } - r->ip = 0; //useless for ipv6 - cur_ai = ai; - - int t1 = PILI_RTMP_GetTime(); - if (!PILI_RTMP_Connect0(r, cur_ai, port, error)) { - freeaddrinfo(ai); - return FALSE; - } - conn_time.connect_time = PILI_RTMP_GetTime() - t1; - r->m_bSendCounter = TRUE; - - int t2 = PILI_RTMP_GetTime(); - int ret = PILI_RTMP_Connect1(r, cp, error); - conn_time.handshake_time = PILI_RTMP_GetTime() - t2; - - if (r->m_connCallback != NULL) { - r->m_connCallback(&conn_time, r->m_userData); - } - freeaddrinfo(ai); - return ret; -} - -//useless -static int - SocksNegotiate(PILI_RTMP *r, RTMPError *error) { - // unsigned long addr; - // struct sockaddr_in service; - // memset(&service, 0, sizeof(struct sockaddr_in)); - // - // add_addr_info(r, &service, &r->Link.hostname, r->Link.port, error); - // addr = htonl(service.sin_addr.s_addr); - // - // { - // char packet[] = { - // 4, 1, /* SOCKS 4, connect */ - // (r->Link.port >> 8) & 0xFF, - // (r->Link.port) & 0xFF, - // (char)(addr >> 24) & 0xFF, (char)(addr >> 16) & 0xFF, - // (char)(addr >> 8) & 0xFF, (char)addr & 0xFF, - // 0 - // }; /* NULL terminate */ - // - // WriteN(r, packet, sizeof packet, error); - // - // if (ReadN(r, packet, 8) != 8) - // return FALSE; - // - // if (packet[0] == 0 && packet[1] == 90) - // { - // return TRUE; - // } - // else - // { - // RTMP_Log(RTMP_LOGERROR, "%s, SOCKS returned error code %d", packet[1]); - // return FALSE; - // } - // } - return 0; -} - -int PILI_RTMP_ConnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { - PILI_RTMPPacket packet = {0}; - - /* seekTime was already set by SetupStream / SetupURL. - * This is only needed by ReconnectStream. - */ - if (seekTime > 0) - r->Link.seekTime = seekTime; - - r->m_mediaChannel = 0; - - while (!r->m_bPlaying && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, &packet)) { - if (RTMPPacket_IsReady(&packet)) { - if (!packet.m_nBodySize) - continue; - if ((packet.m_packetType == RTMP_PACKET_TYPE_AUDIO) || - (packet.m_packetType == RTMP_PACKET_TYPE_VIDEO) || - (packet.m_packetType == RTMP_PACKET_TYPE_INFO)) { - RTMP_Log(RTMP_LOGWARNING, "Received FLV packet before play()! Ignoring."); - PILI_RTMPPacket_Free(&packet); - continue; - } - - PILI_RTMP_ClientPacket(r, &packet); - PILI_RTMPPacket_Free(&packet); - } - } - - if (!r->m_bPlaying && error) { - char *msg = "PILI_RTMP connect stream failed."; - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorRTMPConnectStreamFailed; - strcpy(error->message, msg); - } - - return r->m_bPlaying; -} - -int PILI_RTMP_ReconnectStream(PILI_RTMP *r, int seekTime, RTMPError *error) { - PILI_RTMP_DeleteStream(r, error); - - PILI_RTMP_SendCreateStream(r, error); - - return PILI_RTMP_ConnectStream(r, seekTime, error); -} - -int PILI_RTMP_ToggleStream(PILI_RTMP *r, RTMPError *error) { - int res; - - if (!r->m_pausing) { - res = PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, error); - if (!res) - return res; - - r->m_pausing = 1; - sleep(1); - } - res = PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, error); - r->m_pausing = 3; - return res; -} - -void PILI_RTMP_DeleteStream(PILI_RTMP *r, RTMPError *error) { - if (r->m_stream_id < 0) - return; - - r->m_bPlaying = FALSE; - - SendDeleteStream(r, r->m_stream_id, error); - r->m_stream_id = -1; -} - -int PILI_RTMP_GetNextMediaPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { - int bHasMediaPacket = 0; - - while (!bHasMediaPacket && PILI_RTMP_IsConnected(r) && PILI_RTMP_ReadPacket(r, packet)) { - if (!RTMPPacket_IsReady(packet)) { - continue; - } - - bHasMediaPacket = PILI_RTMP_ClientPacket(r, packet); - - if (!bHasMediaPacket) { - PILI_RTMPPacket_Free(packet); - } else if (r->m_pausing == 3) { - if (packet->m_nTimeStamp <= r->m_mediaStamp) { - bHasMediaPacket = 0; -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, - "Skipped type: %02X, size: %d, TS: %d ms, abs TS: %d, pause: %d ms", - packet->m_packetType, packet->m_nBodySize, - packet->m_nTimeStamp, packet->m_hasAbsTimestamp, - r->m_mediaStamp); -#endif - continue; - } - r->m_pausing = 0; - } - } - - if (bHasMediaPacket) - r->m_bPlaying = TRUE; - else if (r->m_sb.sb_timedout && !r->m_pausing) - r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; - - return bHasMediaPacket; -} - -int PILI_RTMP_ClientPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { - int bHasMediaPacket = 0; - switch (packet->m_packetType) { - case 0x01: - /* chunk size */ - HandleChangeChunkSize(r, packet); - break; - - case 0x03: - /* bytes read report */ - RTMP_Log(RTMP_LOGDEBUG, "%s, received: bytes read report", __FUNCTION__); - break; - - case 0x04: - /* ctrl */ - HandleCtrl(r, packet); - break; - - case 0x05: - /* server bw */ - HandleServerBW(r, packet); - break; - - case 0x06: - /* client bw */ - HandleClientBW(r, packet); - break; - - case 0x08: - /* audio data */ - /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: audio %lu bytes", __FUNCTION__, packet.m_nBodySize); */ - HandleAudio(r, packet); - bHasMediaPacket = 1; - if (!r->m_mediaChannel) - r->m_mediaChannel = packet->m_nChannel; - if (!r->m_pausing) - r->m_mediaStamp = packet->m_nTimeStamp; - break; - - case 0x09: - /* video data */ - /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: video %lu bytes", __FUNCTION__, packet.m_nBodySize); */ - HandleVideo(r, packet); - bHasMediaPacket = 1; - if (!r->m_mediaChannel) - r->m_mediaChannel = packet->m_nChannel; - if (!r->m_pausing) - r->m_mediaStamp = packet->m_nTimeStamp; - break; - - case 0x0F: /* flex stream send */ - RTMP_Log(RTMP_LOGDEBUG, - "%s, flex stream send, size %lu bytes, not supported, ignoring", - __FUNCTION__, packet->m_nBodySize); - break; - - case 0x10: /* flex shared object */ - RTMP_Log(RTMP_LOGDEBUG, - "%s, flex shared object, size %lu bytes, not supported, ignoring", - __FUNCTION__, packet->m_nBodySize); - break; - - case 0x11: /* flex message */ - { - RTMP_Log(RTMP_LOGDEBUG, - "%s, flex message, size %lu bytes, not fully supported", - __FUNCTION__, packet->m_nBodySize); -/*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - -/* some DEBUG code */ -#if 0 - RTMP_LIB_AMFObject obj; - int nRes = obj.Decode(packet.m_body+1, packet.m_nBodySize-1); - if(nRes < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, error decoding AMF3 packet", __FUNCTION__); - /*return; */ - } - - obj.Dump(); -#endif - - if (HandleInvoke(r, packet->m_body + 1, packet->m_nBodySize - 1) == 1) - bHasMediaPacket = 2; - break; - } - case 0x12: - /* metadata (notify) */ - RTMP_Log(RTMP_LOGDEBUG, "%s, received: notify %lu bytes", __FUNCTION__, - packet->m_nBodySize); - if (HandleMetadata(r, packet->m_body, packet->m_nBodySize)) - bHasMediaPacket = 1; - break; - - case 0x13: - RTMP_Log(RTMP_LOGDEBUG, "%s, shared object, not supported, ignoring", - __FUNCTION__); - break; - - case 0x14: - /* invoke */ - RTMP_Log(RTMP_LOGDEBUG, "%s, received: invoke %lu bytes", __FUNCTION__, - packet->m_nBodySize); - /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - - if (HandleInvoke(r, packet->m_body, packet->m_nBodySize) == 1) - bHasMediaPacket = 2; - break; - - case 0x16: { - /* go through FLV packets and handle metadata packets */ - unsigned int pos = 0; - uint32_t nTimeStamp = packet->m_nTimeStamp; - - while (pos + 11 < packet->m_nBodySize) { - uint32_t dataSize = AMF_DecodeInt24(packet->m_body + pos + 1); /* size without header (11) and prevTagSize (4) */ - - if (pos + 11 + dataSize + 4 > packet->m_nBodySize) { - RTMP_Log(RTMP_LOGWARNING, "Stream corrupt?!"); - break; - } - if (packet->m_body[pos] == 0x12) { - HandleMetadata(r, packet->m_body + pos + 11, dataSize); - } else if (packet->m_body[pos] == 8 || packet->m_body[pos] == 9) { - nTimeStamp = AMF_DecodeInt24(packet->m_body + pos + 4); - nTimeStamp |= (packet->m_body[pos + 7] << 24); - } - pos += (11 + dataSize + 4); - } - if (!r->m_pausing) - r->m_mediaStamp = nTimeStamp; - - /* FLV tag(s) */ - /*RTMP_Log(RTMP_LOGDEBUG, "%s, received: FLV tag(s) %lu bytes", __FUNCTION__, packet.m_nBodySize); */ - bHasMediaPacket = 1; - break; - } - default: - RTMP_Log(RTMP_LOGDEBUG, "%s, unknown packet type received: 0x%02x", __FUNCTION__, - packet->m_packetType); -#ifdef _DEBUG - RTMP_LogHex(RTMP_LOGDEBUG, packet->m_body, packet->m_nBodySize); -#endif - } - - return bHasMediaPacket; -} - -#ifdef _DEBUG -extern FILE *netstackdump; -extern FILE *netstackdump_read; -#endif - -static int - ReadN(PILI_RTMP *r, char *buffer, int n) { - int nOriginalSize = n; - int avail; - char *ptr; - - r->m_sb.sb_timedout = FALSE; - -#ifdef _DEBUG - memset(buffer, 0, n); -#endif - - ptr = buffer; - while (n > 0) { - int nBytes = 0, nRead; - if (r->Link.protocol & RTMP_FEATURE_HTTP) { - while (!r->m_resplen) { - if (r->m_sb.sb_size < 144) { - if (!r->m_unackd) - HTTP_Post(r, RTMPT_IDLE, "", 1); - if (PILI_RTMPSockBuf_Fill(&r->m_sb) < 1) { - if (!r->m_sb.sb_timedout) { - PILI_RTMP_Close(r, NULL); - } else { - RTMPError error = {0}; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP socket timeout"); - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorSocketTimeout; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - } - - return 0; - } - } - HTTP_read(r, 0); - } - if (r->m_resplen && !r->m_sb.sb_size) - PILI_RTMPSockBuf_Fill(&r->m_sb); - avail = r->m_sb.sb_size; - if (avail > r->m_resplen) - avail = r->m_resplen; - } else { - avail = r->m_sb.sb_size; - if (avail == 0) { - if (PILI_RTMPSockBuf_Fill(&r->m_sb) < 1) { - if (!r->m_sb.sb_timedout) { - PILI_RTMP_Close(r, NULL); - } else { - RTMPError error = {0}; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP socket timeout"); - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorSocketTimeout; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - } - - return 0; - } - avail = r->m_sb.sb_size; - } - } - nRead = ((n < avail) ? n : avail); - if (nRead > 0) { - memcpy(ptr, r->m_sb.sb_start, nRead); - r->m_sb.sb_start += nRead; - r->m_sb.sb_size -= nRead; - nBytes = nRead; - r->m_nBytesIn += nRead; - if (r->m_bSendCounter && r->m_nBytesIn > r->m_nBytesInSent + r->m_nClientBW / 2) - SendBytesReceived(r, NULL); - } -/*RTMP_Log(RTMP_LOGDEBUG, "%s: %d bytes\n", __FUNCTION__, nBytes); */ -#ifdef _DEBUG - fwrite(ptr, 1, nBytes, netstackdump_read); -#endif - - if (nBytes == 0) { - RTMP_Log(RTMP_LOGDEBUG, "%s, PILI_RTMP socket closed by peer", __FUNCTION__); - /*goto again; */ - RTMPError error = {0}; - - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP socket closed by peer. "); - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorSocketClosedByPeer; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - break; - } - - if (r->Link.protocol & RTMP_FEATURE_HTTP) - r->m_resplen -= nBytes; - -#ifdef CRYPTO - if (r->Link.rc4keyIn) { - RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr); - } -#endif - - n -= nBytes; - ptr += nBytes; - } - - return nOriginalSize - n; -} - -static int - WriteN(PILI_RTMP *r, const char *buffer, int n, RTMPError *error) { - const char *ptr = buffer; -#ifdef CRYPTO - char *encrypted = 0; - char buf[RTMP_BUFFER_CACHE_SIZE]; - - if (r->Link.rc4keyOut) { - if (n > sizeof(buf)) - encrypted = (char *)malloc(n); - else - encrypted = (char *)buf; - ptr = encrypted; - RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr); - } -#endif - - while (n > 0) { - int nBytes; - - if (r->Link.protocol & RTMP_FEATURE_HTTP) - nBytes = HTTP_Post(r, RTMPT_SEND, ptr, n); - else - nBytes = PILI_RTMPSockBuf_Send(&r->m_sb, ptr, n); - /*RTMP_Log(RTMP_LOGDEBUG, "%s: %d\n", __FUNCTION__, nBytes); */ - - if (nBytes < 0) { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGERROR, "%s, PILI_RTMP send error %d, %s, (%d bytes)", __FUNCTION__, - sockerr, strerror(sockerr), n); - - if (sockerr == EINTR && !PILI_RTMP_ctrlC) - continue; - - if (error) { - char msg[100]; - memset(msg, 0, 100); - strcat(msg, "PILI_RTMP send error. socket error: "); - strcat(msg, strerror(sockerr)); - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorSendFailed; - strcpy(error->message, msg); - } - - PILI_RTMP_Close(r, error); - - RTMPError_Free(error); - - n = 1; - break; - } - - if (nBytes == 0) - break; - - n -= nBytes; - ptr += nBytes; - } - -#ifdef CRYPTO - if (encrypted && encrypted != buf) - free(encrypted); -#endif - - return n == 0; -} - -#define SAVC(x) static const AVal av_##x = AVC(#x) - -SAVC(app); -SAVC(connect); -SAVC(flashVer); -SAVC(swfUrl); -SAVC(pageUrl); -SAVC(tcUrl); -SAVC(fpad); -SAVC(capabilities); -SAVC(audioCodecs); -SAVC(videoCodecs); -SAVC(videoFunction); -SAVC(objectEncoding); -SAVC(secureToken); -SAVC(secureTokenResponse); -SAVC(type); -SAVC(nonprivate); - -static int - SendConnectPacket(PILI_RTMP *r, PILI_RTMPPacket *cp, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[4096], *pend = pbuf + sizeof(pbuf); - char *enc; - - if (cp) - return PILI_RTMP_SendPacket(r, cp, TRUE, error); - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_connect); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_OBJECT; - - enc = AMF_EncodeNamedString(enc, pend, &av_app, &r->Link.app); - if (!enc) - return FALSE; - if (r->Link.protocol & RTMP_FEATURE_WRITE) { - enc = AMF_EncodeNamedString(enc, pend, &av_type, &av_nonprivate); - if (!enc) - return FALSE; - } - if (r->Link.flashVer.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_flashVer, &r->Link.flashVer); - if (!enc) - return FALSE; - } - if (r->Link.swfUrl.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_swfUrl, &r->Link.swfUrl); - if (!enc) - return FALSE; - } - if (r->Link.tcUrl.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_tcUrl, &r->Link.tcUrl); - if (!enc) - return FALSE; - } - if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { - enc = AMF_EncodeNamedBoolean(enc, pend, &av_fpad, FALSE); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_capabilities, 15.0); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_audioCodecs, r->m_fAudioCodecs); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_videoCodecs, r->m_fVideoCodecs); - if (!enc) - return FALSE; - enc = AMF_EncodeNamedNumber(enc, pend, &av_videoFunction, 1.0); - if (!enc) - return FALSE; - if (r->Link.pageUrl.av_len) { - enc = AMF_EncodeNamedString(enc, pend, &av_pageUrl, &r->Link.pageUrl); - if (!enc) - return FALSE; - } - } - if (r->m_fEncoding != 0.0 || r->m_bSendEncoding) { /* AMF0, AMF3 not fully supported yet */ - enc = AMF_EncodeNamedNumber(enc, pend, &av_objectEncoding, r->m_fEncoding); - if (!enc) - return FALSE; - } - if (enc + 3 >= pend) - return FALSE; - *enc++ = 0; - *enc++ = 0; /* end of object - 0x00 0x00 0x09 */ - *enc++ = AMF_OBJECT_END; - - /* add auth string */ - if (r->Link.auth.av_len) { - enc = AMF_EncodeBoolean(enc, pend, r->Link.lFlags & RTMP_LF_AUTH); - if (!enc) - return FALSE; - enc = AMF_EncodeString(enc, pend, &r->Link.auth); - if (!enc) - return FALSE; - } - if (r->Link.extras.o_num) { - int i; - for (i = 0; i < r->Link.extras.o_num; i++) { - enc = AMFProp_Encode(&r->Link.extras.o_props[i], enc, pend); - if (!enc) - return FALSE; - } - } - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -#if 0 /* unused */ -SAVC(bgHasStream); - -static int -SendBGHasStream(PILI_RTMP *r, double dId, AVal *playpath) -{ - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_bgHasStream); - enc = AMF_EncodeNumber(enc, pend, dId); - *enc++ = AMF_NULL; - - enc = AMF_EncodeString(enc, pend, playpath); - if (enc == NULL) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE); -} -#endif - -SAVC(createStream); - -int PILI_RTMP_SendCreateStream(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_createStream); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; /* NULL */ - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(FCSubscribe); - -static int - SendFCSubscribe(PILI_RTMP *r, AVal *subscribepath, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[512], *pend = pbuf + sizeof(pbuf); - char *enc; - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - RTMP_Log(RTMP_LOGDEBUG, "FCSubscribe: %s", subscribepath->av_val); - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_FCSubscribe); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, subscribepath); - - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(releaseStream); - -static int - SendReleaseStream(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_releaseStream); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(FCPublish); - -static int - SendFCPublish(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_FCPublish); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(FCUnpublish); - -static int - SendFCUnpublish(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_FCUnpublish); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(publish); -SAVC(live); -SAVC(record); - -static int - SendPublish(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x04; /* source channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = r->m_stream_id; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_publish); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - /* FIXME: should we choose live based on Link.lFlags & RTMP_LF_LIVE? */ - enc = AMF_EncodeString(enc, pend, &av_live); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(deleteStream); - -static int - SendDeleteStream(PILI_RTMP *r, double dStreamId, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_deleteStream); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeNumber(enc, pend, dStreamId); - - packet.m_nBodySize = enc - packet.m_body; - - /* no response expected */ - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(pause); - -int PILI_RTMP_SendPause(PILI_RTMP *r, int DoPause, int iTime, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* video channel */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* invoke */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_pause); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeBoolean(enc, pend, DoPause); - enc = AMF_EncodeNumber(enc, pend, (double)iTime); - - packet.m_nBodySize = enc - packet.m_body; - - RTMP_Log(RTMP_LOGDEBUG, "%s, %d, pauseTime=%d", __FUNCTION__, DoPause, iTime); - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error) { - if (DoPause) - r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; - return PILI_RTMP_SendPause(r, DoPause, r->m_pauseStamp, error); -} - -SAVC(seek); - -int PILI_RTMP_SendSeek(PILI_RTMP *r, int iTime, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* video channel */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* invoke */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_seek); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - enc = AMF_EncodeNumber(enc, pend, (double)iTime); - - packet.m_nBodySize = enc - packet.m_body; - - r->m_read.flags |= RTMP_READ_SEEKING; - r->m_read.nResumeTS = 0; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -int PILI_RTMP_SendServerBW(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - - packet.m_nChannel = 0x02; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x05; /* Server BW */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - packet.m_nBodySize = 4; - - AMF_EncodeInt32(packet.m_body, pend, r->m_nServerBW); - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -int PILI_RTMP_SendClientBW(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - - packet.m_nChannel = 0x02; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x06; /* Client BW */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - packet.m_nBodySize = 5; - - AMF_EncodeInt32(packet.m_body, pend, r->m_nClientBW); - packet.m_body[4] = r->m_nClientBW2; - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -static int - SendBytesReceived(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - - packet.m_nChannel = 0x02; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x03; /* bytes in */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - packet.m_nBodySize = 4; - - AMF_EncodeInt32(packet.m_body, pend, r->m_nBytesIn); /* hard coded for now */ - r->m_nBytesInSent = r->m_nBytesIn; - - /*RTMP_Log(RTMP_LOGDEBUG, "Send bytes report. 0x%x (%d bytes)", (unsigned int)m_nBytesIn, m_nBytesIn); */ - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(_checkbw); - -static int - SendCheckBW(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av__checkbw); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - - packet.m_nBodySize = enc - packet.m_body; - - /* triggers _onbwcheck and eventually results in _onbwdone */ - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(_result); - -static int - SendCheckBWResult(PILI_RTMP *r, double txn, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av__result); - enc = AMF_EncodeNumber(enc, pend, txn); - *enc++ = AMF_NULL; - enc = AMF_EncodeNumber(enc, pend, (double)r->m_nBWCheckCounter++); - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(ping); -SAVC(pong); - -static int - SendPong(PILI_RTMP *r, double txn, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0x16 * r->m_nBWCheckCounter; /* temp inc value. till we figure it out. */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_pong); - enc = AMF_EncodeNumber(enc, pend, txn); - *enc++ = AMF_NULL; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -SAVC(play); - -static int - SendPlay(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* we make 8 our stream channel */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_play); - enc = AMF_EncodeNumber(enc, pend, ++r->m_numInvokes); - *enc++ = AMF_NULL; - - RTMP_Log(RTMP_LOGDEBUG, "%s, seekTime=%d, stopTime=%d, sending play: %s", - __FUNCTION__, r->Link.seekTime, r->Link.stopTime, - r->Link.playpath.av_val); - enc = AMF_EncodeString(enc, pend, &r->Link.playpath); - if (!enc) - return FALSE; - - /* Optional parameters start and len. - * - * start: -2, -1, 0, positive number - * -2: looks for a live stream, then a recorded stream, - * if not found any open a live stream - * -1: plays a live stream - * >=0: plays a recorded streams from 'start' milliseconds - */ - if (r->Link.lFlags & RTMP_LF_LIVE) - enc = AMF_EncodeNumber(enc, pend, -1000.0); - else { - if (r->Link.seekTime > 0.0) - enc = AMF_EncodeNumber(enc, pend, r->Link.seekTime); /* resume from here */ - else - enc = AMF_EncodeNumber(enc, pend, 0.0); /*-2000.0);*/ /* recorded as default, -2000.0 is not reliable since that freezes the player if the stream is not found */ - } - if (!enc) - return FALSE; - - /* len: -1, 0, positive number - * -1: plays live or recorded stream to the end (default) - * 0: plays a frame 'start' ms away from the beginning - * >0: plays a live or recoded stream for 'len' milliseconds - */ - /*enc += EncodeNumber(enc, -1.0); */ /* len */ - if (r->Link.stopTime) { - enc = AMF_EncodeNumber(enc, pend, r->Link.stopTime - r->Link.seekTime); - if (!enc) - return FALSE; - } - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -SAVC(set_playlist); -SAVC(0); - -static int - SendPlaylist(PILI_RTMP *r, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x08; /* we make 8 our stream channel */ - packet.m_headerType = RTMP_PACKET_SIZE_LARGE; - packet.m_packetType = 0x14; /* INVOKE */ - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = r->m_stream_id; /*0x01000000; */ - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_set_playlist); - enc = AMF_EncodeNumber(enc, pend, 0); - *enc++ = AMF_NULL; - *enc++ = AMF_ECMA_ARRAY; - *enc++ = 0; - *enc++ = 0; - *enc++ = 0; - *enc++ = AMF_OBJECT; - enc = AMF_EncodeNamedString(enc, pend, &av_0, &r->Link.playpath); - if (!enc) - return FALSE; - if (enc + 3 >= pend) - return FALSE; - *enc++ = 0; - *enc++ = 0; - *enc++ = AMF_OBJECT_END; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, TRUE, error); -} - -static int - SendSecureTokenResponse(PILI_RTMP *r, AVal *resp, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[1024], *pend = pbuf + sizeof(pbuf); - char *enc; - - packet.m_nChannel = 0x03; /* control channel (invoke) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x14; - packet.m_nTimeStamp = 0; - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - enc = packet.m_body; - enc = AMF_EncodeString(enc, pend, &av_secureTokenResponse); - enc = AMF_EncodeNumber(enc, pend, 0.0); - *enc++ = AMF_NULL; - enc = AMF_EncodeString(enc, pend, resp); - if (!enc) - return FALSE; - - packet.m_nBodySize = enc - packet.m_body; - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -/* -from http://jira.red5.org/confluence/display/docs/Ping: - -Ping is the most mysterious message in PILI_RTMP and till now we haven't fully interpreted it yet. In summary, Ping message is used as a special command that are exchanged between client and server. This page aims to document all known Ping messages. Expect the list to grow. - -The type of Ping packet is 0x4 and contains two mandatory parameters and two optional parameters. The first parameter is the type of Ping and in short integer. The second parameter is the target of the ping. As Ping is always sent in Channel 2 (control channel) and the target object in PILI_RTMP header is always 0 which means the Connection object, it's necessary to put an extra parameter to indicate the exact target object the Ping is sent to. The second parameter takes this responsibility. The value has the same meaning as the target object field in PILI_RTMP header. (The second value could also be used as other purposes, like RTT Ping/Pong. It is used as the timestamp.) The third and fourth parameters are optional and could be looked upon as the parameter of the Ping packet. Below is an unexhausted list of Ping messages. - - * type 0: Clear the stream. No third and fourth parameters. The second parameter could be 0. After the connection is established, a Ping 0,0 will be sent from server to client. The message will also be sent to client on the start of Play and in response of a Seek or Pause/Resume request. This Ping tells client to re-calibrate the clock with the timestamp of the next packet server sends. - * type 1: Tell the stream to clear the playing buffer. - * type 3: Buffer time of the client. The third parameter is the buffer time in millisecond. - * type 4: Reset a stream. Used together with type 0 in the case of VOD. Often sent before type 0. - * type 6: Ping the client from server. The second parameter is the current time. - * type 7: Pong reply from client. The second parameter is the time the server sent with his ping request. - * type 26: SWFVerification request - * type 27: SWFVerification response -*/ -int PILI_RTMP_SendCtrl(PILI_RTMP *r, short nType, unsigned int nObject, unsigned int nTime, RTMPError *error) { - PILI_RTMPPacket packet; - char pbuf[256], *pend = pbuf + sizeof(pbuf); - int nSize; - char *buf; - - RTMP_Log(RTMP_LOGDEBUG, "sending ctrl. type: 0x%04x", (unsigned short)nType); - - packet.m_nChannel = 0x02; /* control channel (ping) */ - packet.m_headerType = RTMP_PACKET_SIZE_MEDIUM; - packet.m_packetType = 0x04; /* ctrl */ - packet.m_nTimeStamp = 0; /* RTMP_GetTime(); */ - packet.m_nInfoField2 = 0; - packet.m_hasAbsTimestamp = 0; - packet.m_body = pbuf + RTMP_MAX_HEADER_SIZE; - - switch (nType) { - case 0x03: - nSize = 10; - break; /* buffer time */ - case 0x1A: - nSize = 3; - break; /* SWF verify request */ - case 0x1B: - nSize = 44; - break; /* SWF verify response */ - default: - nSize = 6; - break; - } - - packet.m_nBodySize = nSize; - - buf = packet.m_body; - buf = AMF_EncodeInt16(buf, pend, nType); - - if (nType == 0x1B) { -#ifdef CRYPTO - memcpy(buf, r->Link.SWFVerificationResponse, 42); - RTMP_Log(RTMP_LOGDEBUG, "Sending SWFVerification response: "); - RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize); -#endif - } else if (nType == 0x1A) { - *buf = nObject & 0xff; - } else { - if (nSize > 2) - buf = AMF_EncodeInt32(buf, pend, nObject); - - if (nSize > 6) - buf = AMF_EncodeInt32(buf, pend, nTime); - } - - return PILI_RTMP_SendPacket(r, &packet, FALSE, error); -} - -static void - AV_erase(PILI_RTMP_METHOD *vals, int *num, int i, int freeit) { - if (freeit) - free(vals[i].name.av_val); - (*num)--; - for (; i < *num; i++) { - vals[i] = vals[i + 1]; - } - vals[i].name.av_val = NULL; - vals[i].name.av_len = 0; - vals[i].num = 0; -} - -void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, freeit); -} - -static void - AV_queue(PILI_RTMP_METHOD **vals, int *num, AVal *av, int txn) { - char *tmp; - if (!(*num & 0x0f)) - *vals = realloc(*vals, (*num + 16) * sizeof(PILI_RTMP_METHOD)); - tmp = malloc(av->av_len + 1); - memcpy(tmp, av->av_val, av->av_len); - tmp[av->av_len] = '\0'; - (*vals)[*num].num = txn; - (*vals)[*num].name.av_len = av->av_len; - (*vals)[(*num)++].name.av_val = tmp; -} - -static void - AV_clear(PILI_RTMP_METHOD *vals, int num) { - int i; - for (i = 0; i < num; i++) - free(vals[i].name.av_val); - free(vals); -} - -SAVC(onBWDone); -SAVC(onFCSubscribe); -SAVC(onFCUnsubscribe); -SAVC(_onbwcheck); -SAVC(_onbwdone); -SAVC(_error); -SAVC(close); -SAVC(code); -SAVC(level); -SAVC(onStatus); -SAVC(playlist_ready); -static const AVal av_NetStream_Failed = AVC("NetStream.Failed"); -static const AVal av_NetStream_Play_Failed = AVC("NetStream.Play.Failed"); -static const AVal av_NetStream_Play_StreamNotFound = - AVC("NetStream.Play.StreamNotFound"); -static const AVal av_NetConnection_Connect_InvalidApp = - AVC("NetConnection.Connect.InvalidApp"); -static const AVal av_NetStream_Play_Start = AVC("NetStream.Play.Start"); -static const AVal av_NetStream_Play_Complete = AVC("NetStream.Play.Complete"); -static const AVal av_NetStream_Play_Stop = AVC("NetStream.Play.Stop"); -static const AVal av_NetStream_Seek_Notify = AVC("NetStream.Seek.Notify"); -static const AVal av_NetStream_Pause_Notify = AVC("NetStream.Pause.Notify"); -static const AVal av_NetStream_Play_UnpublishNotify = - AVC("NetStream.Play.UnpublishNotify"); -static const AVal av_NetStream_Publish_Start = AVC("NetStream.Publish.Start"); - -/* Returns 0 for OK/Failed/error, 1 for 'Stop or Complete' */ -static int - HandleInvoke(PILI_RTMP *r, const char *body, unsigned int nBodySize) { - AMFObject obj; - AVal method; - int txn; - int ret = 0, nRes; - if (body[0] != 0x02) /* make sure it is a string method name we start with */ - { - RTMP_Log(RTMP_LOGWARNING, "%s, Sanity failed. no string method in invoke packet", - __FUNCTION__); - return 0; - } - - nRes = AMF_Decode(&obj, body, nBodySize, FALSE); - if (nRes < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, error decoding invoke packet", __FUNCTION__); - return 0; - } - - AMF_Dump(&obj); - AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &method); - txn = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 1)); - RTMP_Log(RTMP_LOGDEBUG, "%s, server invoking <%s>", __FUNCTION__, method.av_val); - - RTMPError error = {0}; - - if (AVMATCH(&method, &av__result)) { - AVal methodInvoked = {0}; - int i; - - for (i = 0; i < r->m_numCalls; i++) { - if (r->m_methodCalls[i].num == txn) { - methodInvoked = r->m_methodCalls[i].name; - AV_erase(r->m_methodCalls, &r->m_numCalls, i, FALSE); - break; - } - } - if (!methodInvoked.av_val) { - RTMP_Log(RTMP_LOGDEBUG, "%s, received result id %d without matching request", - __FUNCTION__, txn); - goto leave; - } - - RTMP_Log(RTMP_LOGDEBUG, "%s, received result for method call <%s>", __FUNCTION__, - methodInvoked.av_val); - - if (AVMATCH(&methodInvoked, &av_connect)) { - if (r->Link.token.av_len) { - AMFObjectProperty p; - if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_secureToken, &p)) { - DecodeTEA(&r->Link.token, &p.p_vu.p_aval); - SendSecureTokenResponse(r, &p.p_vu.p_aval, &error); - } - } - if (r->Link.protocol & RTMP_FEATURE_WRITE) { - SendReleaseStream(r, &error); - SendFCPublish(r, &error); - } else { - PILI_RTMP_SendServerBW(r, &error); - PILI_RTMP_SendCtrl(r, 3, 0, 300, &error); - } - PILI_RTMP_SendCreateStream(r, &error); - - if (!(r->Link.protocol & RTMP_FEATURE_WRITE)) { - /* Send the FCSubscribe if live stream or if subscribepath is set */ - if (r->Link.subscribepath.av_len) - SendFCSubscribe(r, &r->Link.subscribepath, &error); - else if (r->Link.lFlags & RTMP_LF_LIVE) - SendFCSubscribe(r, &r->Link.playpath, &error); - } - } else if (AVMATCH(&methodInvoked, &av_createStream)) { - r->m_stream_id = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 3)); - - if (r->Link.protocol & RTMP_FEATURE_WRITE) { - SendPublish(r, &error); - } else { - if (r->Link.lFlags & RTMP_LF_PLST) - SendPlaylist(r, &error); - SendPlay(r, &error); - PILI_RTMP_SendCtrl(r, 3, r->m_stream_id, r->m_nBufferMS, &error); - } - } else if (AVMATCH(&methodInvoked, &av_play) || - AVMATCH(&methodInvoked, &av_publish)) { - r->m_bPlaying = TRUE; - } - free(methodInvoked.av_val); - } else if (AVMATCH(&method, &av_onBWDone)) { - if (!r->m_nBWCheckCounter) - SendCheckBW(r, &error); - } else if (AVMATCH(&method, &av_onFCSubscribe)) { - /* SendOnFCSubscribe(); */ - } else if (AVMATCH(&method, &av_onFCUnsubscribe)) { - PILI_RTMP_Close(r, NULL); - ret = 1; - } else if (AVMATCH(&method, &av_ping)) { - SendPong(r, txn, &error); - } else if (AVMATCH(&method, &av__onbwcheck)) { - SendCheckBWResult(r, txn, &error); - } else if (AVMATCH(&method, &av__onbwdone)) { - int i; - for (i = 0; i < r->m_numCalls; i++) - if (AVMATCH(&r->m_methodCalls[i].name, &av__checkbw)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } else if (AVMATCH(&method, &av__error)) { - RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server sent error"); - } else if (AVMATCH(&method, &av_close)) { - RTMP_Log(RTMP_LOGERROR, "PILI_RTMP server requested close"); - RTMPError error = {0}; - char *msg = "PILI_RTMP server requested close."; - RTMPError_Alloc(&error, strlen(msg)); - error.code = RTMPErrorServerRequestedClose; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - } else if (AVMATCH(&method, &av_onStatus)) { - AMFObject obj2; - AVal code, level; - AMFProp_GetObject(AMF_GetProp(&obj, NULL, 3), &obj2); - AMFProp_GetString(AMF_GetProp(&obj2, &av_code, -1), &code); - AMFProp_GetString(AMF_GetProp(&obj2, &av_level, -1), &level); - - RTMP_Log(RTMP_LOGDEBUG, "%s, onStatus: %s", __FUNCTION__, code.av_val); - if (AVMATCH(&code, &av_NetStream_Failed) || AVMATCH(&code, &av_NetStream_Play_Failed) || AVMATCH(&code, &av_NetStream_Play_StreamNotFound) || AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { - r->m_stream_id = -1; - - int err_code; - char msg[100]; - memset(msg, 0, 100); - - if (AVMATCH(&code, &av_NetStream_Failed)) { - err_code = RTMPErrorNetStreamFailed; - strcpy(msg, "NetStream failed."); - } else if (AVMATCH(&code, &av_NetStream_Play_Failed)) { - err_code = RTMPErrorNetStreamPlayFailed; - strcpy(msg, "NetStream play failed."); - } else if (AVMATCH(&code, &av_NetStream_Play_StreamNotFound)) { - err_code = RTMPErrorNetStreamPlayStreamNotFound; - strcpy(msg, "NetStream play stream not found."); - } else if (AVMATCH(&code, &av_NetConnection_Connect_InvalidApp)) { - err_code = RTMPErrorNetConnectionConnectInvalidApp; - strcpy(msg, "NetConnection connect invalip app."); - } else { - err_code = RTMPErrorUnknow; - strcpy(msg, "Unknow error."); - } - - RTMPError_Alloc(&error, strlen(msg)); - error.code = err_code; - strcpy(error.message, msg); - - PILI_RTMP_Close(r, &error); - - RTMPError_Free(&error); - - RTMP_Log(RTMP_LOGERROR, "Closing connection: %s", code.av_val); - } - - else if (AVMATCH(&code, &av_NetStream_Play_Start)) { - int i; - r->m_bPlaying = TRUE; - for (i = 0; i < r->m_numCalls; i++) { - if (AVMATCH(&r->m_methodCalls[i].name, &av_play)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } - } - - else if (AVMATCH(&code, &av_NetStream_Publish_Start)) { - int i; - r->m_bPlaying = TRUE; - for (i = 0; i < r->m_numCalls; i++) { - if (AVMATCH(&r->m_methodCalls[i].name, &av_publish)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } - } - - /* Return 1 if this is a Play.Complete or Play.Stop */ - else if (AVMATCH(&code, &av_NetStream_Play_Complete) || AVMATCH(&code, &av_NetStream_Play_Stop) || AVMATCH(&code, &av_NetStream_Play_UnpublishNotify)) { - PILI_RTMP_Close(r, NULL); - ret = 1; - } - - else if (AVMATCH(&code, &av_NetStream_Seek_Notify)) { - r->m_read.flags &= ~RTMP_READ_SEEKING; - } - - else if (AVMATCH(&code, &av_NetStream_Pause_Notify)) { - if (r->m_pausing == 1 || r->m_pausing == 2) { - PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, &error); - r->m_pausing = 3; - } - } - } else if (AVMATCH(&method, &av_playlist_ready)) { - int i; - for (i = 0; i < r->m_numCalls; i++) { - if (AVMATCH(&r->m_methodCalls[i].name, &av_set_playlist)) { - AV_erase(r->m_methodCalls, &r->m_numCalls, i, TRUE); - break; - } - } - } else { - } -leave: - AMF_Reset(&obj); - return ret; -} - -int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, - AMFObjectProperty *p) { - int n; - /* this is a small object search to locate the "duration" property */ - for (n = 0; n < obj->o_num; n++) { - AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); - - if (AVMATCH(&prop->p_name, name)) { - *p = *prop; - return TRUE; - } - - if (prop->p_type == AMF_OBJECT) { - if (PILI_RTMP_FindFirstMatchingProperty(&prop->p_vu.p_object, name, p)) - return TRUE; - } - } - return FALSE; -} - -/* Like above, but only check if name is a prefix of property */ -int PILI_RTMP_FindPrefixProperty(AMFObject *obj, const AVal *name, - AMFObjectProperty *p) { - int n; - for (n = 0; n < obj->o_num; n++) { - AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n); - - if (prop->p_name.av_len > name->av_len && - !memcmp(prop->p_name.av_val, name->av_val, name->av_len)) { - *p = *prop; - return TRUE; - } - - if (prop->p_type == AMF_OBJECT) { - if (PILI_RTMP_FindPrefixProperty(&prop->p_vu.p_object, name, p)) - return TRUE; - } - } - return FALSE; -} - -static int - DumpMetaData(AMFObject *obj) { - AMFObjectProperty *prop; - int n; - for (n = 0; n < obj->o_num; n++) { - prop = AMF_GetProp(obj, NULL, n); - if (prop->p_type != AMF_OBJECT) { - char str[256] = ""; - switch (prop->p_type) { - case AMF_NUMBER: - snprintf(str, 255, "%.2f", prop->p_vu.p_number); - break; - case AMF_BOOLEAN: - snprintf(str, 255, "%s", - prop->p_vu.p_number != 0. ? "TRUE" : "FALSE"); - break; - case AMF_STRING: - snprintf(str, 255, "%.*s", prop->p_vu.p_aval.av_len, - prop->p_vu.p_aval.av_val); - break; - case AMF_DATE: - snprintf(str, 255, "timestamp:%.2f", prop->p_vu.p_number); - break; - default: - snprintf(str, 255, "INVALID TYPE 0x%02x", - (unsigned char)prop->p_type); - } - if (prop->p_name.av_len) { - /* chomp */ - if (strlen(str) >= 1 && str[strlen(str) - 1] == '\n') - str[strlen(str) - 1] = '\0'; - RTMP_Log(RTMP_LOGINFO, " %-22.*s%s", prop->p_name.av_len, - prop->p_name.av_val, str); - } - } else { - if (prop->p_name.av_len) - RTMP_Log(RTMP_LOGINFO, "%.*s:", prop->p_name.av_len, prop->p_name.av_val); - DumpMetaData(&prop->p_vu.p_object); - } - } - return FALSE; -} - -SAVC(onMetaData); -SAVC(duration); -SAVC(video); -SAVC(audio); - -static int - HandleMetadata(PILI_RTMP *r, char *body, unsigned int len) { - /* allright we get some info here, so parse it and print it */ - /* also keep duration or filesize to make a nice progress bar */ - - AMFObject obj; - AVal metastring; - int ret = FALSE; - - int nRes = AMF_Decode(&obj, body, len, FALSE); - if (nRes < 0) { - RTMP_Log(RTMP_LOGERROR, "%s, error decoding meta data packet", __FUNCTION__); - return FALSE; - } - - AMF_Dump(&obj); - AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &metastring); - - if (AVMATCH(&metastring, &av_onMetaData)) { - AMFObjectProperty prop; - /* Show metadata */ - RTMP_Log(RTMP_LOGINFO, "Metadata:"); - DumpMetaData(&obj); - if (PILI_RTMP_FindFirstMatchingProperty(&obj, &av_duration, &prop)) { - r->m_fDuration = prop.p_vu.p_number; - /*RTMP_Log(RTMP_LOGDEBUG, "Set duration: %.2f", m_fDuration); */ - } - /* Search for audio or video tags */ - if (PILI_RTMP_FindPrefixProperty(&obj, &av_video, &prop)) - r->m_read.dataType |= 1; - if (PILI_RTMP_FindPrefixProperty(&obj, &av_audio, &prop)) - r->m_read.dataType |= 4; - ret = TRUE; - } - AMF_Reset(&obj); - return ret; -} - -static void - HandleChangeChunkSize(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - if (packet->m_nBodySize >= 4) { - r->m_inChunkSize = AMF_DecodeInt32(packet->m_body); - RTMP_Log(RTMP_LOGDEBUG, "%s, received: chunk size change to %d", __FUNCTION__, - r->m_inChunkSize); - } -} - -static void - HandleAudio(PILI_RTMP *r, const PILI_RTMPPacket *packet) { -} - -static void - HandleVideo(PILI_RTMP *r, const PILI_RTMPPacket *packet) { -} - -static void - HandleCtrl(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - short nType = -1; - unsigned int tmp; - if (packet->m_body && packet->m_nBodySize >= 2) - nType = AMF_DecodeInt16(packet->m_body); - RTMP_Log(RTMP_LOGDEBUG, "%s, received ctrl. type: %d, len: %d", __FUNCTION__, nType, - packet->m_nBodySize); - /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - - if (packet->m_nBodySize >= 6) { - switch (nType) { - case 0: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Begin %d", __FUNCTION__, tmp); - break; - - case 1: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream EOF %d", __FUNCTION__, tmp); - if (r->m_pausing == 1) - r->m_pausing = 2; - break; - - case 2: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream Dry %d", __FUNCTION__, tmp); - break; - - case 4: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream IsRecorded %d", __FUNCTION__, tmp); - break; - - case 6: /* server ping. reply with pong. */ - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Ping %d", __FUNCTION__, tmp); - PILI_RTMP_SendCtrl(r, 0x07, tmp, 0, NULL); - break; - - /* FMS 3.5 servers send the following two controls to let the client - * know when the server has sent a complete buffer. I.e., when the - * server has sent an amount of data equal to m_nBufferMS in duration. - * The server meters its output so that data arrives at the client - * in realtime and no faster. - * - * The rtmpdump program tries to set m_nBufferMS as large as - * possible, to force the server to send data as fast as possible. - * In practice, the server appears to cap this at about 1 hour's - * worth of data. After the server has sent a complete buffer, and - * sends this BufferEmpty message, it will wait until the play - * duration of that buffer has passed before sending a new buffer. - * The BufferReady message will be sent when the new buffer starts. - * (There is no BufferReady message for the very first buffer; - * presumably the Stream Begin message is sufficient for that - * purpose.) - * - * If the network speed is much faster than the data bitrate, then - * there may be long delays between the end of one buffer and the - * start of the next. - * - * Since usually the network allows data to be sent at - * faster than realtime, and rtmpdump wants to download the data - * as fast as possible, we use this RTMP_LF_BUFX hack: when we - * get the BufferEmpty message, we send a Pause followed by an - * Unpause. This causes the server to send the next buffer immediately - * instead of waiting for the full duration to elapse. (That's - * also the purpose of the ToggleStream function, which rtmpdump - * calls if we get a read timeout.) - * - * Media player apps don't need this hack since they are just - * going to play the data in realtime anyway. It also doesn't work - * for live streams since they obviously can only be sent in - * realtime. And it's all moot if the network speed is actually - * slower than the media bitrate. - */ - case 31: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferEmpty %d", __FUNCTION__, tmp); - if (!(r->Link.lFlags & RTMP_LF_BUFX)) - break; - if (!r->m_pausing) { - r->m_pauseStamp = r->m_channelTimestamp[r->m_mediaChannel]; - PILI_RTMP_SendPause(r, TRUE, r->m_pauseStamp, NULL); - r->m_pausing = 1; - } else if (r->m_pausing == 2) { - PILI_RTMP_SendPause(r, FALSE, r->m_pauseStamp, NULL); - r->m_pausing = 3; - } - break; - - case 32: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream BufferReady %d", __FUNCTION__, tmp); - break; - - default: - tmp = AMF_DecodeInt32(packet->m_body + 2); - RTMP_Log(RTMP_LOGDEBUG, "%s, Stream xx %d", __FUNCTION__, tmp); - break; - } - } - - if (nType == 0x1A) { - RTMP_Log(RTMP_LOGDEBUG, "%s, SWFVerification ping received: ", __FUNCTION__); -#ifdef CRYPTO - /*RTMP_LogHex(packet.m_body, packet.m_nBodySize); */ - - /* respond with HMAC SHA256 of decompressed SWF, key is the 30byte player key, also the last 30 bytes of the server handshake are applied */ - if (r->Link.SWFSize) { - PILI_RTMP_SendCtrl(r, 0x1B, 0, 0); - } else { - RTMP_Log(RTMP_LOGERROR, - "%s: Ignoring SWFVerification request, use --swfVfy!", - __FUNCTION__); - } -#else - RTMP_Log(RTMP_LOGERROR, - "%s: Ignoring SWFVerification request, no CRYPTO support!", - __FUNCTION__); -#endif - } -} - -static void - HandleServerBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - r->m_nServerBW = AMF_DecodeInt32(packet->m_body); - RTMP_Log(RTMP_LOGDEBUG, "%s: server BW = %d", __FUNCTION__, r->m_nServerBW); -} - -static void - HandleClientBW(PILI_RTMP *r, const PILI_RTMPPacket *packet) { - r->m_nClientBW = AMF_DecodeInt32(packet->m_body); - if (packet->m_nBodySize > 4) - r->m_nClientBW2 = packet->m_body[4]; - else - r->m_nClientBW2 = -1; - RTMP_Log(RTMP_LOGDEBUG, "%s: client BW = %d %d", __FUNCTION__, r->m_nClientBW, - r->m_nClientBW2); -} - -static int - DecodeInt32LE(const char *data) { - unsigned char *c = (unsigned char *)data; - unsigned int val; - - val = (c[3] << 24) | (c[2] << 16) | (c[1] << 8) | c[0]; - return val; -} - -static int - EncodeInt32LE(char *output, int nVal) { - output[0] = nVal; - nVal >>= 8; - output[1] = nVal; - nVal >>= 8; - output[2] = nVal; - nVal >>= 8; - output[3] = nVal; - return 4; -} - -int PILI_RTMP_ReadPacket(PILI_RTMP *r, PILI_RTMPPacket *packet) { - uint8_t hbuf[RTMP_MAX_HEADER_SIZE] = {0}; - char *header = (char *)hbuf; - int nSize, hSize, nToRead, nChunk; - int didAlloc = FALSE; - - RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d", __FUNCTION__, r->m_sb.sb_socket); - - if (ReadN(r, (char *)hbuf, 1) == 0) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header", __FUNCTION__); - return FALSE; - } - - packet->m_headerType = (hbuf[0] & 0xc0) >> 6; - packet->m_nChannel = (hbuf[0] & 0x3f); - header++; - if (packet->m_nChannel == 0) { - if (ReadN(r, (char *)&hbuf[1], 1) != 1) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 2nd byte", - __FUNCTION__); - return FALSE; - } - packet->m_nChannel = hbuf[1]; - packet->m_nChannel += 64; - header++; - } else if (packet->m_nChannel == 1) { - int tmp; - if (ReadN(r, (char *)&hbuf[1], 2) != 2) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header 3nd byte", - __FUNCTION__); - return FALSE; - } - tmp = (hbuf[2] << 8) + hbuf[1]; - packet->m_nChannel = tmp + 64; - RTMP_Log(RTMP_LOGDEBUG, "%s, m_nChannel: %0x", __FUNCTION__, packet->m_nChannel); - header += 2; - } - - nSize = packetSize[packet->m_headerType]; - - if (nSize == RTMP_LARGE_HEADER_SIZE) /* if we get a full header the timestamp is absolute */ - packet->m_hasAbsTimestamp = TRUE; - - else if (nSize < RTMP_LARGE_HEADER_SIZE) { /* using values from the last message of this channel */ - if (r->m_vecChannelsIn[packet->m_nChannel]) - memcpy(packet, r->m_vecChannelsIn[packet->m_nChannel], - sizeof(PILI_RTMPPacket)); - } - - nSize--; - - if (nSize > 0 && ReadN(r, header, nSize) != nSize) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet header. type: %x", - __FUNCTION__, (unsigned int)hbuf[0]); - return FALSE; - } - - hSize = nSize + (header - (char *)hbuf); - - if (nSize >= 3) { - packet->m_nTimeStamp = AMF_DecodeInt24(header); - - /*RTMP_Log(RTMP_LOGDEBUG, "%s, reading PILI_RTMP packet chunk on channel %x, headersz %i, timestamp %i, abs timestamp %i", __FUNCTION__, packet.m_nChannel, nSize, packet.m_nTimeStamp, packet.m_hasAbsTimestamp); */ - - if (nSize >= 6) { - packet->m_nBodySize = AMF_DecodeInt24(header + 3); - packet->m_nBytesRead = 0; - PILI_RTMPPacket_Free(packet); - - if (nSize > 6) { - packet->m_packetType = header[6]; - - if (nSize == 11) - packet->m_nInfoField2 = DecodeInt32LE(header + 7); - } - } - if (packet->m_nTimeStamp == 0xffffff) { - if (ReadN(r, header + nSize, 4) != 4) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read extended timestamp", - __FUNCTION__); - return FALSE; - } - packet->m_nTimeStamp = AMF_DecodeInt32(header + nSize); - hSize += 4; - } - } - - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize); - - if (packet->m_nBodySize > 0 && packet->m_body == NULL) { - if (!PILI_RTMPPacket_Alloc(packet, packet->m_nBodySize)) { - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); - return FALSE; - } - didAlloc = TRUE; - packet->m_headerType = (hbuf[0] & 0xc0) >> 6; - } - - nToRead = packet->m_nBodySize - packet->m_nBytesRead; - nChunk = r->m_inChunkSize; - if (nToRead < nChunk) - nChunk = nToRead; - - /* Does the caller want the raw chunk? */ - if (packet->m_chunk) { - packet->m_chunk->c_headerSize = hSize; - memcpy(packet->m_chunk->c_header, hbuf, hSize); - packet->m_chunk->c_chunk = packet->m_body + packet->m_nBytesRead; - packet->m_chunk->c_chunkSize = nChunk; - } - - if (ReadN(r, packet->m_body + packet->m_nBytesRead, nChunk) != nChunk) { - RTMP_Log(RTMP_LOGERROR, "%s, failed to read PILI_RTMP packet body. len: %lu", - __FUNCTION__, packet->m_nBodySize); - return FALSE; - } - - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk); - - packet->m_nBytesRead += nChunk; - - /* keep the packet as ref for other packets on this channel */ - if (!r->m_vecChannelsIn[packet->m_nChannel]) - r->m_vecChannelsIn[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); - memcpy(r->m_vecChannelsIn[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); - - if (RTMPPacket_IsReady(packet)) { - /* make packet's timestamp absolute */ - if (!packet->m_hasAbsTimestamp) - packet->m_nTimeStamp += r->m_channelTimestamp[packet->m_nChannel]; /* timestamps seem to be always relative!! */ - - r->m_channelTimestamp[packet->m_nChannel] = packet->m_nTimeStamp; - - /* reset the data from the stored packet. we keep the header since we may use it later if a new packet for this channel */ - /* arrives and requests to re-use some info (small packet header) */ - r->m_vecChannelsIn[packet->m_nChannel]->m_body = NULL; - r->m_vecChannelsIn[packet->m_nChannel]->m_nBytesRead = 0; - r->m_vecChannelsIn[packet->m_nChannel]->m_hasAbsTimestamp = FALSE; /* can only be false if we reuse header */ - } else { - packet->m_body = NULL; /* so it won't be erased on free */ - } - - return TRUE; -} - -#ifndef CRYPTO -static int - HandShake(PILI_RTMP *r, int FP9HandShake, RTMPError *error) { - int i; - uint32_t uptime, suptime; - int bMatch; - char type; - char clientbuf[RTMP_SIG_SIZE + 1], *clientsig = clientbuf + 1; - char serversig[RTMP_SIG_SIZE]; - - clientbuf[0] = 0x03; /* not encrypted */ - - uptime = htonl(PILI_RTMP_GetTime()); - memcpy(clientsig, &uptime, 4); - - memset(&clientsig[4], 0, 4); - -#ifdef _DEBUG - for (i = 8; i < RTMP_SIG_SIZE; i++) - clientsig[i] = 0xff; -#else - for (i = 8; i < RTMP_SIG_SIZE; i++) - clientsig[i] = (char)(rand() % 256); -#endif - - if (!WriteN(r, clientbuf, RTMP_SIG_SIZE + 1, error)) - return FALSE; - - if (ReadN(r, &type, 1) != 1) /* 0x03 or 0x06 */ - return FALSE; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Type Answer : %02X", __FUNCTION__, type); - - if (type != clientbuf[0]) - RTMP_Log(RTMP_LOGWARNING, "%s: Type mismatch: client sent %d, server answered %d", - __FUNCTION__, clientbuf[0], type); - - if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - /* decode server response */ - - memcpy(&suptime, serversig, 4); - suptime = ntohl(suptime); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Server Uptime : %d", __FUNCTION__, suptime); - RTMP_Log(RTMP_LOGDEBUG, "%s: FMS Version : %d.%d.%d.%d", __FUNCTION__, - serversig[4], serversig[5], serversig[6], serversig[7]); - - /* 2nd part of handshake */ - if (!WriteN(r, serversig, RTMP_SIG_SIZE, error)) - return FALSE; - - if (ReadN(r, serversig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); - if (!bMatch) { - RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); - } - return TRUE; -} - -static int - SHandShake(PILI_RTMP *r, RTMPError *error) { - int i; - char serverbuf[RTMP_SIG_SIZE + 1], *serversig = serverbuf + 1; - char clientsig[RTMP_SIG_SIZE]; - uint32_t uptime; - int bMatch; - - if (ReadN(r, serverbuf, 1) != 1) /* 0x03 or 0x06 */ - return FALSE; - - RTMP_Log(RTMP_LOGDEBUG, "%s: Type Request : %02X", __FUNCTION__, serverbuf[0]); - - if (serverbuf[0] != 3) { - RTMP_Log(RTMP_LOGERROR, "%s: Type unknown: client sent %02X", - __FUNCTION__, serverbuf[0]); - return FALSE; - } - - uptime = htonl(PILI_RTMP_GetTime()); - memcpy(serversig, &uptime, 4); - - memset(&serversig[4], 0, 4); -#ifdef _DEBUG - for (i = 8; i < RTMP_SIG_SIZE; i++) - serversig[i] = 0xff; -#else - for (i = 8; i < RTMP_SIG_SIZE; i++) - serversig[i] = (char)(rand() % 256); -#endif - - if (!WriteN(r, serverbuf, RTMP_SIG_SIZE + 1, error)) - return FALSE; - - if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - /* decode client response */ - - memcpy(&uptime, clientsig, 4); - uptime = ntohl(uptime); - - RTMP_Log(RTMP_LOGDEBUG, "%s: Client Uptime : %d", __FUNCTION__, uptime); - RTMP_Log(RTMP_LOGDEBUG, "%s: Player Version: %d.%d.%d.%d", __FUNCTION__, - clientsig[4], clientsig[5], clientsig[6], clientsig[7]); - - /* 2nd part of handshake */ - if (!WriteN(r, clientsig, RTMP_SIG_SIZE, error)) - return FALSE; - - if (ReadN(r, clientsig, RTMP_SIG_SIZE) != RTMP_SIG_SIZE) - return FALSE; - - bMatch = (memcmp(serversig, clientsig, RTMP_SIG_SIZE) == 0); - if (!bMatch) { - RTMP_Log(RTMP_LOGWARNING, "%s, client signature does not match!", __FUNCTION__); - } - return TRUE; -} -#endif - -int PILI_RTMP_SendChunk(PILI_RTMP *r, PILI_RTMPChunk *chunk, RTMPError *error) { - int wrote; - char hbuf[RTMP_MAX_HEADER_SIZE]; - - RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, - chunk->c_chunkSize); - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize); - if (chunk->c_chunkSize) { - char *ptr = chunk->c_chunk - chunk->c_headerSize; - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize); - /* save header bytes we're about to overwrite */ - memcpy(hbuf, ptr, chunk->c_headerSize); - memcpy(ptr, chunk->c_header, chunk->c_headerSize); - wrote = WriteN(r, ptr, chunk->c_headerSize + chunk->c_chunkSize, error); - memcpy(ptr, hbuf, chunk->c_headerSize); - } else - wrote = WriteN(r, chunk->c_header, chunk->c_headerSize, error); - return wrote; -} - -int PILI_RTMP_SendPacket(PILI_RTMP *r, PILI_RTMPPacket *packet, int queue, RTMPError *error) { - const PILI_RTMPPacket *prevPacket = r->m_vecChannelsOut[packet->m_nChannel]; - uint32_t last = 0; - int nSize; - int hSize, cSize; - char *header, *hptr, *hend, hbuf[RTMP_MAX_HEADER_SIZE], c; - uint32_t t; - char *buffer, *tbuf = NULL, *toff = NULL; - int nChunkSize; - int tlen; - - if (prevPacket && packet->m_headerType != RTMP_PACKET_SIZE_LARGE) { - /* compress a bit by using the prev packet's attributes */ - if (prevPacket->m_nBodySize == packet->m_nBodySize && prevPacket->m_packetType == packet->m_packetType && packet->m_headerType == RTMP_PACKET_SIZE_MEDIUM) - packet->m_headerType = RTMP_PACKET_SIZE_SMALL; - - if (prevPacket->m_nTimeStamp == packet->m_nTimeStamp && packet->m_headerType == RTMP_PACKET_SIZE_SMALL) - packet->m_headerType = RTMP_PACKET_SIZE_MINIMUM; - last = prevPacket->m_nTimeStamp; - } - - if (packet->m_headerType > 3) /* sanity */ - { - if (error) { - char *msg = "Sanity failed."; - RTMPError_Alloc(error, strlen(msg)); - error->code = RTMPErrorSanityFailed; - strcpy(error->message, msg); - } - - RTMP_Log(RTMP_LOGERROR, "sanity failed!! trying to send header of type: 0x%02x.", - (unsigned char)packet->m_headerType); - - return FALSE; - } - - nSize = packetSize[packet->m_headerType]; - hSize = nSize; - cSize = 0; - t = packet->m_nTimeStamp - last; - - if (packet->m_body) { - header = packet->m_body - nSize; - hend = packet->m_body; - } else { - header = hbuf + 6; - hend = hbuf + sizeof(hbuf); - } - - if (packet->m_nChannel > 319) - cSize = 2; - else if (packet->m_nChannel > 63) - cSize = 1; - if (cSize) { - header -= cSize; - hSize += cSize; - } - - if (nSize > 1 && t >= 0xffffff) { - header -= 4; - hSize += 4; - } - - hptr = header; - c = packet->m_headerType << 6; - switch (cSize) { - case 0: - c |= packet->m_nChannel; - break; - case 1: - break; - case 2: - c |= 1; - break; - } - *hptr++ = c; - if (cSize) { - int tmp = packet->m_nChannel - 64; - *hptr++ = tmp & 0xff; - if (cSize == 2) - *hptr++ = tmp >> 8; - } - - if (nSize > 1) { - hptr = AMF_EncodeInt24(hptr, hend, t > 0xffffff ? 0xffffff : t); - } - - if (nSize > 4) { - hptr = AMF_EncodeInt24(hptr, hend, packet->m_nBodySize); - *hptr++ = packet->m_packetType; - } - - if (nSize > 8) - hptr += EncodeInt32LE(hptr, packet->m_nInfoField2); - - if (nSize > 1 && t >= 0xffffff) - hptr = AMF_EncodeInt32(hptr, hend, t); - - nSize = packet->m_nBodySize; - buffer = packet->m_body; - nChunkSize = r->m_outChunkSize; - - RTMP_Log(RTMP_LOGDEBUG2, "%s: fd=%d, size=%d", __FUNCTION__, r->m_sb.sb_socket, - nSize); - /* send all chunks in one HTTP request */ - if (r->Link.protocol & RTMP_FEATURE_HTTP) { - int chunks = (nSize + nChunkSize - 1) / nChunkSize; - if (chunks > 1) { - tlen = chunks * (cSize + 1) + nSize + hSize; - tbuf = malloc(tlen); - if (!tbuf) - return FALSE; - toff = tbuf; - } - } - while (nSize + hSize) { - int wrote; - - if (nSize < nChunkSize) - nChunkSize = nSize; - - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize); - RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize); - if (tbuf) { - memcpy(toff, header, nChunkSize + hSize); - toff += nChunkSize + hSize; - } else { - wrote = WriteN(r, header, nChunkSize + hSize, error); - if (!wrote) - return FALSE; - } - nSize -= nChunkSize; - buffer += nChunkSize; - hSize = 0; - - if (nSize > 0) { - header = buffer - 1; - hSize = 1; - if (cSize) { - header -= cSize; - hSize += cSize; - } - *header = (0xc0 | c); - if (cSize) { - int tmp = packet->m_nChannel - 64; - header[1] = tmp & 0xff; - if (cSize == 2) - header[2] = tmp >> 8; - } - } - } - if (tbuf) { - int wrote = WriteN(r, tbuf, toff - tbuf, error); - free(tbuf); - tbuf = NULL; - if (!wrote) - return FALSE; - } - - /* we invoked a remote method */ - if (packet->m_packetType == 0x14) { - AVal method; - char *ptr; - ptr = packet->m_body + 1; - AMF_DecodeString(ptr, &method); - RTMP_Log(RTMP_LOGDEBUG, "Invoking %s", method.av_val); - /* keep it in call queue till result arrives */ - if (queue) { - int txn; - ptr += 3 + method.av_len; - txn = (int)AMF_DecodeNumber(ptr); - AV_queue(&r->m_methodCalls, &r->m_numCalls, &method, txn); - } - } - - if (!r->m_vecChannelsOut[packet->m_nChannel]) - r->m_vecChannelsOut[packet->m_nChannel] = malloc(sizeof(PILI_RTMPPacket)); - memcpy(r->m_vecChannelsOut[packet->m_nChannel], packet, sizeof(PILI_RTMPPacket)); - return TRUE; -} - -int PILI_RTMP_Serve(PILI_RTMP *r, RTMPError *error) { - return SHandShake(r, error); -} - -void PILI_RTMP_Close(PILI_RTMP *r, RTMPError *error) { - if (r->m_is_closing) { - return; - } - r->m_is_closing = 1; - int i; - if (PILI_RTMP_IsConnected(r)) { - if (r->m_stream_id > 0) { - if ((r->Link.protocol & RTMP_FEATURE_WRITE)) - SendFCUnpublish(r, NULL); - i = r->m_stream_id; - r->m_stream_id = 0; - SendDeleteStream(r, i, NULL); - } - if (r->m_clientID.av_val) { - HTTP_Post(r, RTMPT_CLOSE, "", 1); - free(r->m_clientID.av_val); - r->m_clientID.av_val = NULL; - r->m_clientID.av_len = 0; - } - PILI_RTMPSockBuf_Close(&r->m_sb); - - if (error && r->m_errorCallback) { - r->m_errorCallback(error, r->m_userData); - } - } - - r->m_stream_id = -1; - r->m_sb.sb_socket = -1; - r->m_nBWCheckCounter = 0; - r->m_nBytesIn = 0; - r->m_nBytesInSent = 0; - - if (r->m_read.flags & RTMP_READ_HEADER) { - free(r->m_read.buf); - r->m_read.buf = NULL; - } - r->m_read.dataType = 0; - r->m_read.flags = 0; - r->m_read.status = 0; - r->m_read.nResumeTS = 0; - r->m_read.nIgnoredFrameCounter = 0; - r->m_read.nIgnoredFlvFrameCounter = 0; - - r->m_write.m_nBytesRead = 0; - PILI_RTMPPacket_Free(&r->m_write); - - for (i = 0; i < RTMP_CHANNELS; i++) { - if (r->m_vecChannelsIn[i]) { - PILI_RTMPPacket_Free(r->m_vecChannelsIn[i]); - free(r->m_vecChannelsIn[i]); - r->m_vecChannelsIn[i] = NULL; - } - if (r->m_vecChannelsOut[i]) { - free(r->m_vecChannelsOut[i]); - r->m_vecChannelsOut[i] = NULL; - } - } - AV_clear(r->m_methodCalls, r->m_numCalls); - r->m_methodCalls = NULL; - r->m_numCalls = 0; - r->m_numInvokes = 0; - - r->m_bPlaying = FALSE; - r->m_sb.sb_size = 0; - - r->m_msgCounter = 0; - r->m_resplen = 0; - r->m_unackd = 0; - - free(r->Link.playpath0.av_val); - r->Link.playpath0.av_val = NULL; - - if (r->Link.lFlags & RTMP_LF_FTCU) { - free(r->Link.tcUrl.av_val); - r->Link.tcUrl.av_val = NULL; - r->Link.lFlags ^= RTMP_LF_FTCU; - } - -#ifdef CRYPTO - if (r->Link.dh) { - MDH_free(r->Link.dh); - r->Link.dh = NULL; - } - if (r->Link.rc4keyIn) { - RC4_free(r->Link.rc4keyIn); - r->Link.rc4keyIn = NULL; - } - if (r->Link.rc4keyOut) { - RC4_free(r->Link.rc4keyOut); - r->Link.rc4keyOut = NULL; - } -#endif -} - -int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb) { - int nBytes; - - if (!sb->sb_size) - sb->sb_start = sb->sb_buf; - - while (1) { - nBytes = sizeof(sb->sb_buf) - sb->sb_size - (sb->sb_start - sb->sb_buf); -#if defined(CRYPTO) && !defined(NO_SSL) - if (sb->sb_ssl) { - nBytes = TLS_read(sb->sb_ssl, sb->sb_start + sb->sb_size, nBytes); - } else -#endif - { - nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, 0); - } - if (nBytes != -1) { - sb->sb_size += nBytes; - } else { - int sockerr = GetSockError(); - RTMP_Log(RTMP_LOGDEBUG, "%s, recv returned %d. GetSockError(): %d (%s)", - __FUNCTION__, nBytes, sockerr, strerror(sockerr)); - if (sockerr == EINTR && !PILI_RTMP_ctrlC) - continue; - - if (sockerr == EWOULDBLOCK || sockerr == EAGAIN) { - sb->sb_timedout = TRUE; - nBytes = 0; - } - } - break; - } - - return nBytes; -} - -int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len) { - int rc; - -#ifdef _DEBUG - fwrite(buf, 1, len, netstackdump); -#endif - -#if defined(CRYPTO) && !defined(NO_SSL) - if (sb->sb_ssl) { - rc = TLS_write(sb->sb_ssl, buf, len); - } else -#endif - { - rc = send(sb->sb_socket, buf, len, 0); - } - return rc; -} - -int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb) { -#if defined(CRYPTO) && !defined(NO_SSL) - if (sb->sb_ssl) { - TLS_shutdown(sb->sb_ssl); - TLS_close(sb->sb_ssl); - sb->sb_ssl = NULL; - } -#endif - return closesocket(sb->sb_socket); -} - -#define HEX2BIN(a) (((a)&0x40) ? ((a)&0xf) + 9 : ((a)&0xf)) - -static void - DecodeTEA(AVal *key, AVal *text) { - uint32_t *v, k[4] = {0}, u; - uint32_t z, y, sum = 0, e, DELTA = 0x9e3779b9; - int32_t p, q; - int i, n; - unsigned char *ptr, *out; - - /* prep key: pack 1st 16 chars into 4 LittleEndian ints */ - ptr = (unsigned char *)key->av_val; - u = 0; - n = 0; - v = k; - p = key->av_len > 16 ? 16 : key->av_len; - for (i = 0; i < p; i++) { - u |= ptr[i] << (n * 8); - if (n == 3) { - *v++ = u; - u = 0; - n = 0; - } else { - n++; - } - } - /* any trailing chars */ - if (u) - *v = u; - - /* prep text: hex2bin, multiples of 4 */ - n = (text->av_len + 7) / 8; - out = malloc(n * 8); - ptr = (unsigned char *)text->av_val; - v = (uint32_t *)out; - for (i = 0; i < n; i++) { - u = (HEX2BIN(ptr[0]) << 4) + HEX2BIN(ptr[1]); - u |= ((HEX2BIN(ptr[2]) << 4) + HEX2BIN(ptr[3])) << 8; - u |= ((HEX2BIN(ptr[4]) << 4) + HEX2BIN(ptr[5])) << 16; - u |= ((HEX2BIN(ptr[6]) << 4) + HEX2BIN(ptr[7])) << 24; - *v++ = u; - ptr += 8; - } - v = (uint32_t *)out; - -/* http://www.movable-type.co.uk/scripts/tea-block.html */ -#define MX (((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (k[(p & 3) ^ e] ^ z)); - z = v[n - 1]; - y = v[0]; - q = 6 + 52 / n; - sum = q * DELTA; - while (sum != 0) { - e = sum >> 2 & 3; - for (p = n - 1; p > 0; p--) - z = v[p - 1], y = v[p] -= MX; - z = v[n - 1]; - y = v[0] -= MX; - sum -= DELTA; - } - - text->av_len /= 2; - memcpy(text->av_val, out, text->av_len); - free(out); -} - -static int - HTTP_Post(PILI_RTMP *r, RTMPTCmd cmd, const char *buf, int len) { - char hbuf[512]; - int hlen = snprintf(hbuf, sizeof(hbuf), "POST /%s%s/%d HTTP/1.1\r\n" - "Host: %.*s:%d\r\n" - "Accept: */*\r\n" - "User-Agent: Shockwave Flash\n" - "Connection: Keep-Alive\n" - "Cache-Control: no-cache\r\n" - "Content-type: application/x-fcs\r\n" - "Content-length: %d\r\n\r\n", - RTMPT_cmds[cmd], - r->m_clientID.av_val ? r->m_clientID.av_val : "", - r->m_msgCounter, r->Link.hostname.av_len, r->Link.hostname.av_val, - r->Link.port, len); - PILI_RTMPSockBuf_Send(&r->m_sb, hbuf, hlen); - hlen = PILI_RTMPSockBuf_Send(&r->m_sb, buf, len); - r->m_msgCounter++; - r->m_unackd++; - return hlen; -} - -static int - HTTP_read(PILI_RTMP *r, int fill) { - char *ptr; - int hlen; - - if (fill) - PILI_RTMPSockBuf_Fill(&r->m_sb); - if (r->m_sb.sb_size < 144) - return -1; - if (strncmp(r->m_sb.sb_start, "HTTP/1.1 200 ", 13)) - return -1; - ptr = strstr(r->m_sb.sb_start, "Content-Length:"); - if (!ptr) - return -1; - hlen = atoi(ptr + 16); - ptr = strstr(ptr, "\r\n\r\n"); - if (!ptr) - return -1; - ptr += 4; - r->m_sb.sb_size -= ptr - r->m_sb.sb_start; - r->m_sb.sb_start = ptr; - r->m_unackd--; - - if (!r->m_clientID.av_val) { - r->m_clientID.av_len = hlen; - r->m_clientID.av_val = malloc(hlen + 1); - if (!r->m_clientID.av_val) - return -1; - r->m_clientID.av_val[0] = '/'; - memcpy(r->m_clientID.av_val + 1, ptr, hlen - 1); - r->m_clientID.av_val[hlen] = 0; - r->m_sb.sb_size = 0; - } else { - r->m_polling = *ptr++; - r->m_resplen = hlen - 1; - r->m_sb.sb_start++; - r->m_sb.sb_size--; - } - return 0; -} - -#define MAX_IGNORED_FRAMES 50 - -/* Read from the stream until we get a media packet. - * Returns -3 if Play.Close/Stop, -2 if fatal error, -1 if no more media - * packets, 0 if ignorable error, >0 if there is a media packet - */ -static int - Read_1_Packet(PILI_RTMP *r, char *buf, unsigned int buflen) { - uint32_t prevTagSize = 0; - int rtnGetNextMediaPacket = 0, ret = RTMP_READ_EOF; - PILI_RTMPPacket packet = {0}; - int recopy = FALSE; - unsigned int size; - char *ptr, *pend; - uint32_t nTimeStamp = 0; - unsigned int len; - - rtnGetNextMediaPacket = PILI_RTMP_GetNextMediaPacket(r, &packet); - while (rtnGetNextMediaPacket) { - char *packetBody = packet.m_body; - unsigned int nPacketLen = packet.m_nBodySize; - - /* Return -3 if this was completed nicely with invoke message - * Play.Stop or Play.Complete - */ - if (rtnGetNextMediaPacket == 2) { - RTMP_Log(RTMP_LOGDEBUG, - "Got Play.Complete or Play.Stop from server. " - "Assuming stream is complete"); - ret = RTMP_READ_COMPLETE; - break; - } - - r->m_read.dataType |= (((packet.m_packetType == 0x08) << 2) | - (packet.m_packetType == 0x09)); - - if (packet.m_packetType == 0x09 && nPacketLen <= 5) { - RTMP_Log(RTMP_LOGDEBUG, "ignoring too small video packet: size: %d", - nPacketLen); - ret = RTMP_READ_IGNORE; - break; - } - if (packet.m_packetType == 0x08 && nPacketLen <= 1) { - RTMP_Log(RTMP_LOGDEBUG, "ignoring too small audio packet: size: %d", - nPacketLen); - ret = RTMP_READ_IGNORE; - break; - } - - if (r->m_read.flags & RTMP_READ_SEEKING) { - ret = RTMP_READ_IGNORE; - break; - } -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, TS: %d ms, abs TS: %d", - packet.m_packetType, nPacketLen, packet.m_nTimeStamp, - packet.m_hasAbsTimestamp); - if (packet.m_packetType == 0x09) - RTMP_Log(RTMP_LOGDEBUG, "frametype: %02X", (*packetBody & 0xf0)); -#endif - - if (r->m_read.flags & RTMP_READ_RESUME) { - /* check the header if we get one */ - if (packet.m_nTimeStamp == 0) { - if (r->m_read.nMetaHeaderSize > 0 && packet.m_packetType == 0x12) { - AMFObject metaObj; - int nRes = - AMF_Decode(&metaObj, packetBody, nPacketLen, FALSE); - if (nRes >= 0) { - AVal metastring; - AMFProp_GetString(AMF_GetProp(&metaObj, NULL, 0), - &metastring); - - if (AVMATCH(&metastring, &av_onMetaData)) { - /* compare */ - if ((r->m_read.nMetaHeaderSize != nPacketLen) || - (memcmp(r->m_read.metaHeader, packetBody, - r->m_read.nMetaHeaderSize) != 0)) { - ret = RTMP_READ_ERROR; - } - } - AMF_Reset(&metaObj); - if (ret == RTMP_READ_ERROR) - break; - } - } - - /* check first keyframe to make sure we got the right position - * in the stream! (the first non ignored frame) - */ - if (r->m_read.nInitialFrameSize > 0) { - /* video or audio data */ - if (packet.m_packetType == r->m_read.initialFrameType && r->m_read.nInitialFrameSize == nPacketLen) { - /* we don't compare the sizes since the packet can - * contain several FLV packets, just make sure the - * first frame is our keyframe (which we are going - * to rewrite) - */ - if (memcmp(r->m_read.initialFrame, packetBody, - r->m_read.nInitialFrameSize) == 0) { - RTMP_Log(RTMP_LOGDEBUG, "Checked keyframe successfully!"); - r->m_read.flags |= RTMP_READ_GOTKF; - /* ignore it! (what about audio data after it? it is - * handled by ignoring all 0ms frames, see below) - */ - ret = RTMP_READ_IGNORE; - break; - } - } - - /* hande FLV streams, even though the server resends the - * keyframe as an extra video packet it is also included - * in the first FLV stream chunk and we have to compare - * it and filter it out !! - */ - if (packet.m_packetType == 0x16) { - /* basically we have to find the keyframe with the - * correct TS being nResumeTS - */ - unsigned int pos = 0; - uint32_t ts = 0; - - while (pos + 11 < nPacketLen) { - /* size without header (11) and prevTagSize (4) */ - uint32_t dataSize = - AMF_DecodeInt24(packetBody + pos + 1); - ts = AMF_DecodeInt24(packetBody + pos + 4); - ts |= (packetBody[pos + 7] << 24); - -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, - "keyframe search: FLV Packet: type %02X, dataSize: %d, timeStamp: %d ms", - packetBody[pos], dataSize, ts); -#endif - /* ok, is it a keyframe?: - * well doesn't work for audio! - */ - if (packetBody[pos /*6928, test 0 */] == - r->m_read.initialFrameType - /* && (packetBody[11]&0xf0) == 0x10 */) { - if (ts == r->m_read.nResumeTS) { - RTMP_Log(RTMP_LOGDEBUG, - "Found keyframe with resume-keyframe timestamp!"); - if (r->m_read.nInitialFrameSize != dataSize || memcmp(r->m_read.initialFrame, packetBody + pos + 11, r->m_read.nInitialFrameSize) != 0) { - RTMP_Log(RTMP_LOGERROR, - "FLV Stream: Keyframe doesn't match!"); - ret = RTMP_READ_ERROR; - break; - } - r->m_read.flags |= RTMP_READ_GOTFLVK; - - /* skip this packet? - * check whether skippable: - */ - if (pos + 11 + dataSize + 4 > nPacketLen) { - RTMP_Log(RTMP_LOGWARNING, - "Non skipable packet since it doesn't end with chunk, stream corrupt!"); - ret = RTMP_READ_ERROR; - break; - } - packetBody += (pos + 11 + dataSize + 4); - nPacketLen -= (pos + 11 + dataSize + 4); - - goto stopKeyframeSearch; - - } else if (r->m_read.nResumeTS < ts) { - /* the timestamp ts will only increase with - * further packets, wait for seek - */ - goto stopKeyframeSearch; - } - } - pos += (11 + dataSize + 4); - } - if (ts < r->m_read.nResumeTS) { - RTMP_Log(RTMP_LOGERROR, - "First packet does not contain keyframe, all " - "timestamps are smaller than the keyframe " - "timestamp; probably the resume seek failed?"); - } - stopKeyframeSearch:; - if (!(r->m_read.flags & RTMP_READ_GOTFLVK)) { - RTMP_Log(RTMP_LOGERROR, - "Couldn't find the seeked keyframe in this chunk!"); - ret = RTMP_READ_IGNORE; - break; - } - } - } - } - - if (packet.m_nTimeStamp > 0 && (r->m_read.flags & (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK))) { - /* another problem is that the server can actually change from - * 09/08 video/audio packets to an FLV stream or vice versa and - * our keyframe check will prevent us from going along with the - * new stream if we resumed. - * - * in this case set the 'found keyframe' variables to true. - * We assume that if we found one keyframe somewhere and were - * already beyond TS > 0 we have written data to the output - * which means we can accept all forthcoming data including the - * change between 08/09 <-> FLV packets - */ - r->m_read.flags |= (RTMP_READ_GOTKF | RTMP_READ_GOTFLVK); - } - - /* skip till we find our keyframe - * (seeking might put us somewhere before it) - */ - if (!(r->m_read.flags & RTMP_READ_GOTKF) && - packet.m_packetType != 0x16) { - RTMP_Log(RTMP_LOGWARNING, - "Stream does not start with requested frame, ignoring data... "); - r->m_read.nIgnoredFrameCounter++; - if (r->m_read.nIgnoredFrameCounter > MAX_IGNORED_FRAMES) - ret = RTMP_READ_ERROR; /* fatal error, couldn't continue stream */ - else - ret = RTMP_READ_IGNORE; - break; - } - /* ok, do the same for FLV streams */ - if (!(r->m_read.flags & RTMP_READ_GOTFLVK) && - packet.m_packetType == 0x16) { - RTMP_Log(RTMP_LOGWARNING, - "Stream does not start with requested FLV frame, ignoring data... "); - r->m_read.nIgnoredFlvFrameCounter++; - if (r->m_read.nIgnoredFlvFrameCounter > MAX_IGNORED_FRAMES) - ret = RTMP_READ_ERROR; - else - ret = RTMP_READ_IGNORE; - break; - } - - /* we have to ignore the 0ms frames since these are the first - * keyframes; we've got these so don't mess around with multiple - * copies sent by the server to us! (if the keyframe is found at a - * later position there is only one copy and it will be ignored by - * the preceding if clause) - */ - if (!(r->m_read.flags & RTMP_READ_NO_IGNORE) && - packet.m_packetType != 0x16) { /* exclude type 0x16 (FLV) since it can - * contain several FLV packets */ - if (packet.m_nTimeStamp == 0) { - ret = RTMP_READ_IGNORE; - break; - } else { - /* stop ignoring packets */ - r->m_read.flags |= RTMP_READ_NO_IGNORE; - } - } - } - - /* calculate packet size and allocate slop buffer if necessary */ - size = nPacketLen + - ((packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) ? 11 : 0) + - (packet.m_packetType != 0x16 ? 4 : 0); - - if (size + 4 > buflen) { - /* the extra 4 is for the case of an FLV stream without a last - * prevTagSize (we need extra 4 bytes to append it) */ - r->m_read.buf = malloc(size + 4); - if (r->m_read.buf == 0) { - RTMP_Log(RTMP_LOGERROR, "Couldn't allocate memory!"); - ret = RTMP_READ_ERROR; /* fatal error */ - break; - } - recopy = TRUE; - ptr = r->m_read.buf; - } else { - ptr = buf; - } - pend = ptr + size + 4; - - /* use to return timestamp of last processed packet */ - - /* audio (0x08), video (0x09) or metadata (0x12) packets : - * construct 11 byte header then add PILI_RTMP packet's data */ - if (packet.m_packetType == 0x08 || packet.m_packetType == 0x09 || packet.m_packetType == 0x12) { - nTimeStamp = r->m_read.nResumeTS + packet.m_nTimeStamp; - prevTagSize = 11 + nPacketLen; - - *ptr = packet.m_packetType; - ptr++; - ptr = AMF_EncodeInt24(ptr, pend, nPacketLen); - -#if 0 - if(packet.m_packetType == 0x09) { /* video */ - - /* H264 fix: */ - if((packetBody[0] & 0x0f) == 7) { /* CodecId = H264 */ - uint8_t packetType = *(packetBody+1); - - uint32_t ts = AMF_DecodeInt24(packetBody+2); /* composition time */ - int32_t cts = (ts+0xff800000)^0xff800000; - RTMP_Log(RTMP_LOGDEBUG, "cts : %d\n", cts); - - nTimeStamp -= cts; - /* get rid of the composition time */ - CRTMP::EncodeInt24(packetBody+2, 0); - } - RTMP_Log(RTMP_LOGDEBUG, "VIDEO: nTimeStamp: 0x%08X (%d)\n", nTimeStamp, nTimeStamp); - } -#endif - - ptr = AMF_EncodeInt24(ptr, pend, nTimeStamp); - *ptr = (char)((nTimeStamp & 0xFF000000) >> 24); - ptr++; - - /* stream id */ - ptr = AMF_EncodeInt24(ptr, pend, 0); - } - - memcpy(ptr, packetBody, nPacketLen); - len = nPacketLen; - - /* correct tagSize and obtain timestamp if we have an FLV stream */ - if (packet.m_packetType == 0x16) { - unsigned int pos = 0; - int delta; - - /* grab first timestamp and see if it needs fixing */ - nTimeStamp = AMF_DecodeInt24(packetBody + 4); - nTimeStamp |= (packetBody[7] << 24); - delta = packet.m_nTimeStamp - nTimeStamp; - - while (pos + 11 < nPacketLen) { - /* size without header (11) and without prevTagSize (4) */ - uint32_t dataSize = AMF_DecodeInt24(packetBody + pos + 1); - nTimeStamp = AMF_DecodeInt24(packetBody + pos + 4); - nTimeStamp |= (packetBody[pos + 7] << 24); - - if (delta) { - nTimeStamp += delta; - AMF_EncodeInt24(ptr + pos + 4, pend, nTimeStamp); - ptr[pos + 7] = nTimeStamp >> 24; - } - - /* set data type */ - r->m_read.dataType |= (((*(packetBody + pos) == 0x08) << 2) | - (*(packetBody + pos) == 0x09)); - - if (pos + 11 + dataSize + 4 > nPacketLen) { - if (pos + 11 + dataSize > nPacketLen) { - RTMP_Log(RTMP_LOGERROR, - "Wrong data size (%lu), stream corrupted, aborting!", - dataSize); - ret = RTMP_READ_ERROR; - break; - } - RTMP_Log(RTMP_LOGWARNING, "No tagSize found, appending!"); - - /* we have to append a last tagSize! */ - prevTagSize = dataSize + 11; - AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, - prevTagSize); - size += 4; - len += 4; - } else { - prevTagSize = - AMF_DecodeInt32(packetBody + pos + 11 + dataSize); - -#ifdef _DEBUG - RTMP_Log(RTMP_LOGDEBUG, - "FLV Packet: type %02X, dataSize: %lu, tagSize: %lu, timeStamp: %lu ms", - (unsigned char)packetBody[pos], dataSize, prevTagSize, - nTimeStamp); -#endif - - if (prevTagSize != (dataSize + 11)) { -#ifdef _DEBUG - RTMP_Log(RTMP_LOGWARNING, - "Tag and data size are not consitent, writing tag size according to dataSize+11: %d", - dataSize + 11); -#endif - - prevTagSize = dataSize + 11; - AMF_EncodeInt32(ptr + pos + 11 + dataSize, pend, - prevTagSize); - } - } - - pos += prevTagSize + 4; /*(11+dataSize+4); */ - } - } - ptr += len; - - if (packet.m_packetType != 0x16) { - /* FLV tag packets contain their own prevTagSize */ - AMF_EncodeInt32(ptr, pend, prevTagSize); - } - - /* In non-live this nTimeStamp can contain an absolute TS. - * Update ext timestamp with this absolute offset in non-live mode - * otherwise report the relative one - */ - /* RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, pktTS: %dms, TS: %dms, bLiveStream: %d", packet.m_packetType, nPacketLen, packet.m_nTimeStamp, nTimeStamp, r->Link.lFlags & RTMP_LF_LIVE); */ - r->m_read.timestamp = (r->Link.lFlags & RTMP_LF_LIVE) ? packet.m_nTimeStamp : nTimeStamp; - - ret = size; - break; - } - - if (rtnGetNextMediaPacket) - PILI_RTMPPacket_Free(&packet); - - if (recopy) { - len = ret > buflen ? buflen : ret; - memcpy(buf, r->m_read.buf, len); - r->m_read.bufpos = r->m_read.buf + len; - r->m_read.buflen = ret - len; - } - return ret; -} - -static const char flvHeader[] = {'F', 'L', 'V', 0x01, - 0x00, /* 0x04 == audio, 0x01 == video */ - 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x00}; - -#define HEADERBUF (128 * 1024) -int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size) { - int nRead = 0, total = 0; - -/* can't continue */ -fail: - switch (r->m_read.status) { - case RTMP_READ_EOF: - case RTMP_READ_COMPLETE: - return 0; - case RTMP_READ_ERROR: /* corrupted stream, resume failed */ - SetSockError(EINVAL); - return -1; - default: - break; - } - - if ((r->m_read.flags & RTMP_READ_SEEKING) && r->m_read.buf) { - /* drop whatever's here */ - free(r->m_read.buf); - r->m_read.buf = NULL; - r->m_read.bufpos = NULL; - r->m_read.buflen = 0; - } - - /* If there's leftover data buffered, use it up */ - if (r->m_read.buf) { - nRead = r->m_read.buflen; - if (nRead > size) - nRead = size; - memcpy(buf, r->m_read.bufpos, nRead); - r->m_read.buflen -= nRead; - if (!r->m_read.buflen) { - free(r->m_read.buf); - r->m_read.buf = NULL; - r->m_read.bufpos = NULL; - } else { - r->m_read.bufpos += nRead; - } - buf += nRead; - total += nRead; - size -= nRead; - } - - while (size > 0 && (nRead = Read_1_Packet(r, buf, size)) >= 0) { - if (!nRead) continue; - buf += nRead; - total += nRead; - size -= nRead; - break; - } - if (nRead < 0) - r->m_read.status = nRead; - - if (size < 0) - total += size; - return total; -} - -static const AVal av_setDataFrame = AVC("@setDataFrame"); - -int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error) { - PILI_RTMPPacket *pkt = &r->m_write; - char *pend, *enc; - int s2 = size, ret, num; - - pkt->m_nChannel = 0x04; /* source channel */ - pkt->m_nInfoField2 = r->m_stream_id; - - while (s2) { - if (!pkt->m_nBytesRead) { - if (size < 11) { - /* FLV pkt too small */ - return 0; - } - - if (buf[0] == 'F' && buf[1] == 'L' && buf[2] == 'V') { - buf += 13; - s2 -= 13; - } - - pkt->m_packetType = *buf++; - pkt->m_nBodySize = AMF_DecodeInt24(buf); - buf += 3; - pkt->m_nTimeStamp = AMF_DecodeInt24(buf); - buf += 3; - pkt->m_nTimeStamp |= *buf++ << 24; - buf += 3; - s2 -= 11; - - if (((pkt->m_packetType == 0x08 || pkt->m_packetType == 0x09) && - !pkt->m_nTimeStamp) || - pkt->m_packetType == 0x12) { - pkt->m_headerType = RTMP_PACKET_SIZE_LARGE; - if (pkt->m_packetType == 0x12) - pkt->m_nBodySize += 16; - } else { - pkt->m_headerType = RTMP_PACKET_SIZE_MEDIUM; - } - - if (!PILI_RTMPPacket_Alloc(pkt, pkt->m_nBodySize)) { - RTMP_Log(RTMP_LOGDEBUG, "%s, failed to allocate packet", __FUNCTION__); - return FALSE; - } - enc = pkt->m_body; - pend = enc + pkt->m_nBodySize; - if (pkt->m_packetType == 0x12) { - enc = AMF_EncodeString(enc, pend, &av_setDataFrame); - pkt->m_nBytesRead = enc - pkt->m_body; - } - } else { - enc = pkt->m_body + pkt->m_nBytesRead; - } - num = pkt->m_nBodySize - pkt->m_nBytesRead; - if (num > s2) - num = s2; - memcpy(enc, buf, num); - pkt->m_nBytesRead += num; - s2 -= num; - buf += num; - if (pkt->m_nBytesRead == pkt->m_nBodySize) { - ret = PILI_RTMP_SendPacket(r, pkt, FALSE, error); - PILI_RTMPPacket_Free(pkt); - pkt->m_nBytesRead = 0; - if (!ret) - return -1; - buf += 4; - s2 -= 4; - if (s2 < 0) - break; - } - } - return size + s2; -} diff --git a/LFLiveKit/coder/H264/LICENSE.markdown b/LFLiveKit/coder/H264/LICENSE.markdown deleted file mode 100755 index 253169c3..00000000 --- a/LFLiveKit/coder/H264/LICENSE.markdown +++ /dev/null @@ -1,15 +0,0 @@ -# GDCL Source Code License - -Last updated: 20th February 2013 - -**License Agreement for Source Code provided by GDCL** - -This software is supplied to you by Geraint Davies Consulting Ltd ('GDCL') in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this software. - -In consideration of your agreement to abide by the following terms, and subject to these terms, GDCL grants you a personal, non-exclusive license, to use, reproduce, modify and redistribute the software, with or without modifications, in source and/or binary forms; provided that if you redistribute the software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the software, and that in all cases attribution of GDCL as the original author of the source code shall be included in all such resulting software products or distributions. - -Neither the name, trademarks, service marks or logos of Geraint Davies or GDCL may be used to endorse or promote products derived from the software without specific prior written permission from GDCL. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by GDCL herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the software may be incorporated. - -The software is provided by GDCL on an "AS IS" basis. GDCL MAKE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - -IN NO EVENT SHALL GDCL BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF GDCL HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/LFLiveKitDemo/.gitignore b/LFLiveKitDemo/.gitignore deleted file mode 100644 index 382f8343..00000000 --- a/LFLiveKitDemo/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ - -#CocoaPods -Pods/ -Podfile.lock \ No newline at end of file diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index c8a1027c..c6c23b11 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -7,215 +7,213 @@ objects = { /* Begin PBXBuildFile section */ - 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */; }; - 84C7AFA71D52F75C00614703 /* ios-29x29.png in Resources */ = {isa = PBXBuildFile; fileRef = 84C7AFA61D52F75C00614703 /* ios-29x29.png */; }; - A9DB2F10F7A29BE365D7CA5A /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 91E73D3676F527F2A7BD7C6C /* libPods.a */; }; - B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E7E1D348F3D00B34CA8 /* main.m */; }; - B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E811D348F3D00B34CA8 /* AppDelegate.m */; }; - B2D23E851D348F3D00B34CA8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E841D348F3D00B34CA8 /* ViewController.m */; }; - B2D23E881D348F3D00B34CA8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E861D348F3D00B34CA8 /* Main.storyboard */; }; - B2D23E8D1D348F3D00B34CA8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E8B1D348F3D00B34CA8 /* LaunchScreen.storyboard */; }; - B2D23EAA1D348F7100B34CA8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E941D348F7100B34CA8 /* Assets.xcassets */; }; - B2D23EAB1D348F7100B34CA8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E961D348F7100B34CA8 /* LaunchScreen.storyboard */; }; - B2D23EAC1D348F7100B34CA8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2D23E981D348F7100B34CA8 /* Main.storyboard */; }; - B2D23EAD1D348F7100B34CA8 /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E9C1D348F7100B34CA8 /* UIControl+YYAdd.m */; }; - B2D23EAE1D348F7100B34CA8 /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23E9E1D348F7100B34CA8 /* UIView+YYAdd.m */; }; - B2D23EAF1D348F7100B34CA8 /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA01D348F7100B34CA8 /* camra_beauty@2x.png */; }; - B2D23EB01D348F7100B34CA8 /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA11D348F7100B34CA8 /* camra_beauty@3x.png */; }; - B2D23EB11D348F7100B34CA8 /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA21D348F7100B34CA8 /* camra_beauty_close@2x.png */; }; - B2D23EB21D348F7100B34CA8 /* camra_beauty_close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA31D348F7100B34CA8 /* camra_beauty_close@3x.png */; }; - B2D23EB31D348F7100B34CA8 /* camra_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA41D348F7100B34CA8 /* camra_preview@2x.png */; }; - B2D23EB41D348F7100B34CA8 /* camra_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */; }; - B2D23EB51D348F7100B34CA8 /* close_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */; }; - B2D23EB61D348F7100B34CA8 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */; }; - B2D23EB71D348F7100B34CA8 /* LFLivePreview.m in Sources */ = {isa = PBXBuildFile; fileRef = B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */; }; + 84D8B42B1D75778B00752B56 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B42A1D75778B00752B56 /* main.m */; }; + 84D8B42E1D75778B00752B56 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B42D1D75778B00752B56 /* AppDelegate.m */; }; + 84D8B4311D75778B00752B56 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B4301D75778B00752B56 /* ViewController.m */; }; + 84D8B4341D75778B00752B56 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4321D75778B00752B56 /* Main.storyboard */; }; + 84D8B4361D75778B00752B56 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4351D75778B00752B56 /* Assets.xcassets */; }; + 84D8B4391D75778B00752B56 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4371D75778B00752B56 /* LaunchScreen.storyboard */; }; + 84D8B44B1D75781200752B56 /* LFLivePreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B44A1D75781200752B56 /* LFLivePreview.m */; }; + 84D8B45B1D75782700752B56 /* UIControl+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B44E1D75782700752B56 /* UIControl+YYAdd.m */; }; + 84D8B45C1D75782700752B56 /* UIView+YYAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B4501D75782700752B56 /* UIView+YYAdd.m */; }; + 84D8B45D1D75782700752B56 /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4521D75782700752B56 /* camra_beauty@2x.png */; }; + 84D8B45E1D75782700752B56 /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4531D75782700752B56 /* camra_beauty@3x.png */; }; + 84D8B45F1D75782700752B56 /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4541D75782700752B56 /* camra_beauty_close@2x.png */; }; + 84D8B4601D75782700752B56 /* camra_beauty_close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4551D75782700752B56 /* camra_beauty_close@3x.png */; }; + 84D8B4611D75782700752B56 /* camra_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4561D75782700752B56 /* camra_preview@2x.png */; }; + 84D8B4621D75782700752B56 /* camra_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4571D75782700752B56 /* camra_preview@3x.png */; }; + 84D8B4631D75782700752B56 /* close_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4581D75782700752B56 /* close_preview@2x.png */; }; + 84D8B4641D75782700752B56 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4591D75782700752B56 /* close_preview@3x.png */; }; + 84D8B4651D75782700752B56 /* ios-29x29.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B45A1D75782700752B56 /* ios-29x29.png */; }; + 84D8B4681D75783F00752B56 /* GPUImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4661D75783F00752B56 /* GPUImage.framework */; }; + 84D8B4691D75783F00752B56 /* pili_librtmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4671D75783F00752B56 /* pili_librtmp.framework */; }; + 84D8B4791D757A5500752B56 /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4451D75779200752B56 /* LFLiveKit.framework */; }; + 84D8B4CF1D757F0700752B56 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4CE1D757F0700752B56 /* libstdc++.tbd */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 84D8B4441D75779200752B56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84D8B4401D75779200752B56 /* LFLiveKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 84D8B3901D7574D600752B56; + remoteInfo = LFLiveKit; + }; + 84D8B4761D757A3000752B56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84D8B4401D75779200752B56 /* LFLiveKit.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 84D8B38F1D7574D600752B56; + remoteInfo = LFLiveKit; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ - 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 84C7AFA61D52F75C00614703 /* ios-29x29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ios-29x29.png"; sourceTree = ""; }; - 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.release.xcconfig"; sourceTree = ""; }; - 91E73D3676F527F2A7BD7C6C /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitDemo/Pods-LFLiveKitDemo.debug.xcconfig"; sourceTree = ""; }; - B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - B2D23E7E1D348F3D00B34CA8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - B2D23E801D348F3D00B34CA8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - B2D23E811D348F3D00B34CA8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - B2D23E831D348F3D00B34CA8 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - B2D23E841D348F3D00B34CA8 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - B2D23E871D348F3D00B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - B2D23E8C1D348F3D00B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - B2D23E8E1D348F3D00B34CA8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B2D23E941D348F7100B34CA8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - B2D23E971D348F7100B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = LaunchScreen.storyboard; sourceTree = ""; }; - B2D23E991D348F7100B34CA8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = ""; }; - B2D23E9B1D348F7100B34CA8 /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = ""; }; - B2D23E9C1D348F7100B34CA8 /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = ""; }; - B2D23E9D1D348F7100B34CA8 /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = ""; }; - B2D23E9E1D348F7100B34CA8 /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = ""; }; - B2D23EA01D348F7100B34CA8 /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; - B2D23EA11D348F7100B34CA8 /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; - B2D23EA21D348F7100B34CA8 /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; - B2D23EA31D348F7100B34CA8 /* camra_beauty_close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@3x.png"; sourceTree = ""; }; - B2D23EA41D348F7100B34CA8 /* camra_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@2x.png"; sourceTree = ""; }; - B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@3x.png"; sourceTree = ""; }; - B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@2x.png"; sourceTree = ""; }; - B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; - B2D23EA81D348F7100B34CA8 /* LFLivePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLivePreview.h; sourceTree = ""; }; - B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLivePreview.m; sourceTree = ""; }; + 84D8B4261D75778B00752B56 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 84D8B42A1D75778B00752B56 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 84D8B42C1D75778B00752B56 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 84D8B42D1D75778B00752B56 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 84D8B42F1D75778B00752B56 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 84D8B4301D75778B00752B56 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 84D8B4331D75778B00752B56 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 84D8B4351D75778B00752B56 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 84D8B4381D75778B00752B56 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 84D8B43A1D75778B00752B56 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84D8B4401D75779200752B56 /* LFLiveKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LFLiveKit.xcodeproj; path = ../LFLiveKit/LFLiveKit.xcodeproj; sourceTree = ""; }; + 84D8B4491D75781200752B56 /* LFLivePreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFLivePreview.h; sourceTree = ""; }; + 84D8B44A1D75781200752B56 /* LFLivePreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFLivePreview.m; sourceTree = ""; }; + 84D8B44D1D75782700752B56 /* UIControl+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+YYAdd.h"; sourceTree = ""; }; + 84D8B44E1D75782700752B56 /* UIControl+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+YYAdd.m"; sourceTree = ""; }; + 84D8B44F1D75782700752B56 /* UIView+YYAdd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+YYAdd.h"; sourceTree = ""; }; + 84D8B4501D75782700752B56 /* UIView+YYAdd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+YYAdd.m"; sourceTree = ""; }; + 84D8B4521D75782700752B56 /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; + 84D8B4531D75782700752B56 /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; + 84D8B4541D75782700752B56 /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; + 84D8B4551D75782700752B56 /* camra_beauty_close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@3x.png"; sourceTree = ""; }; + 84D8B4561D75782700752B56 /* camra_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@2x.png"; sourceTree = ""; }; + 84D8B4571D75782700752B56 /* camra_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@3x.png"; sourceTree = ""; }; + 84D8B4581D75782700752B56 /* close_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@2x.png"; sourceTree = ""; }; + 84D8B4591D75782700752B56 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; + 84D8B45A1D75782700752B56 /* ios-29x29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ios-29x29.png"; sourceTree = ""; }; + 84D8B4661D75783F00752B56 /* GPUImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GPUImage.framework; path = ../Vendor/GPUImage.framework; sourceTree = ""; }; + 84D8B4671D75783F00752B56 /* pili_librtmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = pili_librtmp.framework; path = ../Vendor/pili_librtmp.framework; sourceTree = ""; }; + 84D8B4CE1D757F0700752B56 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B2D23E771D348F3D00B34CA8 /* Frameworks */ = { + 84D8B4231D75778B00752B56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 81E848D8BD2C446C2DD4876A /* libPods-LFLiveKitDemo.a in Frameworks */, - A9DB2F10F7A29BE365D7CA5A /* libPods.a in Frameworks */, + 84D8B4CF1D757F0700752B56 /* libstdc++.tbd in Frameworks */, + 84D8B4791D757A5500752B56 /* LFLiveKit.framework in Frameworks */, + 84D8B4681D75783F00752B56 /* GPUImage.framework in Frameworks */, + 84D8B4691D75783F00752B56 /* pili_librtmp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2A74A5AD65CD9450ED23C3E0 /* Pods */ = { + 84D8B41D1D75778B00752B56 = { isa = PBXGroup; children = ( - AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */, - 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */, + 84D8B4CE1D757F0700752B56 /* libstdc++.tbd */, + 84D8B4661D75783F00752B56 /* GPUImage.framework */, + 84D8B4671D75783F00752B56 /* pili_librtmp.framework */, + 84D8B4401D75779200752B56 /* LFLiveKit.xcodeproj */, + 84D8B4281D75778B00752B56 /* LFLiveKitDemo */, + 84D8B4271D75778B00752B56 /* Products */, ); - name = Pods; sourceTree = ""; }; - B2D23E711D348F3D00B34CA8 = { + 84D8B4271D75778B00752B56 /* Products */ = { isa = PBXGroup; children = ( - B2D23E7C1D348F3D00B34CA8 /* LFLiveKitDemo */, - B2D23E7B1D348F3D00B34CA8 /* Products */, - 2A74A5AD65CD9450ED23C3E0 /* Pods */, - E6AF2D0BFA2946745BB5F365 /* Frameworks */, - ); - sourceTree = ""; - }; - B2D23E7B1D348F3D00B34CA8 /* Products */ = { - isa = PBXGroup; - children = ( - B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */, + 84D8B4261D75778B00752B56 /* LFLiveKitDemo.app */, ); name = Products; sourceTree = ""; }; - B2D23E7C1D348F3D00B34CA8 /* LFLiveKitDemo */ = { + 84D8B4281D75778B00752B56 /* LFLiveKitDemo */ = { isa = PBXGroup; children = ( - B2D23E941D348F7100B34CA8 /* Assets.xcassets */, - B2D23E951D348F7100B34CA8 /* Base.lproj */, - B2D23E9A1D348F7100B34CA8 /* category */, - B2D23E9F1D348F7100B34CA8 /* images */, - B2D23EA81D348F7100B34CA8 /* LFLivePreview.h */, - B2D23EA91D348F7100B34CA8 /* LFLivePreview.m */, - B2D23E801D348F3D00B34CA8 /* AppDelegate.h */, - B2D23E811D348F3D00B34CA8 /* AppDelegate.m */, - B2D23E831D348F3D00B34CA8 /* ViewController.h */, - B2D23E841D348F3D00B34CA8 /* ViewController.m */, - B2D23E861D348F3D00B34CA8 /* Main.storyboard */, - B2D23E8B1D348F3D00B34CA8 /* LaunchScreen.storyboard */, - B2D23E8E1D348F3D00B34CA8 /* Info.plist */, - B2D23E7D1D348F3D00B34CA8 /* Supporting Files */, + 84D8B42C1D75778B00752B56 /* AppDelegate.h */, + 84D8B42D1D75778B00752B56 /* AppDelegate.m */, + 84D8B42F1D75778B00752B56 /* ViewController.h */, + 84D8B4301D75778B00752B56 /* ViewController.m */, + 84D8B4491D75781200752B56 /* LFLivePreview.h */, + 84D8B44A1D75781200752B56 /* LFLivePreview.m */, + 84D8B44C1D75782700752B56 /* category */, + 84D8B4511D75782700752B56 /* images */, + 84D8B4321D75778B00752B56 /* Main.storyboard */, + 84D8B4351D75778B00752B56 /* Assets.xcassets */, + 84D8B4371D75778B00752B56 /* LaunchScreen.storyboard */, + 84D8B43A1D75778B00752B56 /* Info.plist */, + 84D8B4291D75778B00752B56 /* Supporting Files */, ); path = LFLiveKitDemo; sourceTree = ""; }; - B2D23E7D1D348F3D00B34CA8 /* Supporting Files */ = { + 84D8B4291D75778B00752B56 /* Supporting Files */ = { isa = PBXGroup; children = ( - B2D23E7E1D348F3D00B34CA8 /* main.m */, + 84D8B42A1D75778B00752B56 /* main.m */, ); name = "Supporting Files"; sourceTree = ""; }; - B2D23E951D348F7100B34CA8 /* Base.lproj */ = { + 84D8B4411D75779200752B56 /* Products */ = { isa = PBXGroup; children = ( - B2D23E961D348F7100B34CA8 /* LaunchScreen.storyboard */, - B2D23E981D348F7100B34CA8 /* Main.storyboard */, + 84D8B4451D75779200752B56 /* LFLiveKit.framework */, ); - path = Base.lproj; + name = Products; sourceTree = ""; }; - B2D23E9A1D348F7100B34CA8 /* category */ = { + 84D8B44C1D75782700752B56 /* category */ = { isa = PBXGroup; children = ( - B2D23E9B1D348F7100B34CA8 /* UIControl+YYAdd.h */, - B2D23E9C1D348F7100B34CA8 /* UIControl+YYAdd.m */, - B2D23E9D1D348F7100B34CA8 /* UIView+YYAdd.h */, - B2D23E9E1D348F7100B34CA8 /* UIView+YYAdd.m */, + 84D8B44D1D75782700752B56 /* UIControl+YYAdd.h */, + 84D8B44E1D75782700752B56 /* UIControl+YYAdd.m */, + 84D8B44F1D75782700752B56 /* UIView+YYAdd.h */, + 84D8B4501D75782700752B56 /* UIView+YYAdd.m */, ); path = category; sourceTree = ""; }; - B2D23E9F1D348F7100B34CA8 /* images */ = { + 84D8B4511D75782700752B56 /* images */ = { isa = PBXGroup; children = ( - B2D23EA01D348F7100B34CA8 /* camra_beauty@2x.png */, - B2D23EA11D348F7100B34CA8 /* camra_beauty@3x.png */, - B2D23EA21D348F7100B34CA8 /* camra_beauty_close@2x.png */, - B2D23EA31D348F7100B34CA8 /* camra_beauty_close@3x.png */, - B2D23EA41D348F7100B34CA8 /* camra_preview@2x.png */, - B2D23EA51D348F7100B34CA8 /* camra_preview@3x.png */, - B2D23EA61D348F7100B34CA8 /* close_preview@2x.png */, - B2D23EA71D348F7100B34CA8 /* close_preview@3x.png */, - 84C7AFA61D52F75C00614703 /* ios-29x29.png */, + 84D8B4521D75782700752B56 /* camra_beauty@2x.png */, + 84D8B4531D75782700752B56 /* camra_beauty@3x.png */, + 84D8B4541D75782700752B56 /* camra_beauty_close@2x.png */, + 84D8B4551D75782700752B56 /* camra_beauty_close@3x.png */, + 84D8B4561D75782700752B56 /* camra_preview@2x.png */, + 84D8B4571D75782700752B56 /* camra_preview@3x.png */, + 84D8B4581D75782700752B56 /* close_preview@2x.png */, + 84D8B4591D75782700752B56 /* close_preview@3x.png */, + 84D8B45A1D75782700752B56 /* ios-29x29.png */, ); path = images; sourceTree = ""; }; - E6AF2D0BFA2946745BB5F365 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 6FD9F92833FE7856CDDD3CED /* libPods-LFLiveKitDemo.a */, - 91E73D3676F527F2A7BD7C6C /* libPods.a */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - B2D23E791D348F3D00B34CA8 /* LFLiveKitDemo */ = { + 84D8B4251D75778B00752B56 /* LFLiveKitDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; + buildConfigurationList = 84D8B43D1D75778B00752B56 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */; buildPhases = ( - D4A28B8E7B3F14FE7B5CE784 /* Check Pods Manifest.lock */, - B2D23E761D348F3D00B34CA8 /* Sources */, - B2D23E771D348F3D00B34CA8 /* Frameworks */, - B2D23E781D348F3D00B34CA8 /* Resources */, - 3E1A58B9B801624E131D1416 /* Copy Pods Resources */, + 84D8B4221D75778B00752B56 /* Sources */, + 84D8B4231D75778B00752B56 /* Frameworks */, + 84D8B4241D75778B00752B56 /* Resources */, ); buildRules = ( ); dependencies = ( + 84D8B4771D757A3000752B56 /* PBXTargetDependency */, ); name = LFLiveKitDemo; productName = LFLiveKitDemo; - productReference = B2D23E7A1D348F3D00B34CA8 /* LFLiveKitDemo.app */; + productReference = 84D8B4261D75778B00752B56 /* LFLiveKitDemo.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - B2D23E721D348F3D00B34CA8 /* Project object */ = { + 84D8B41E1D75778B00752B56 /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0730; - ORGANIZATIONNAME = zhanqi.tv; + ORGANIZATIONNAME = admin; TargetAttributes = { - B2D23E791D348F3D00B34CA8 = { - CreatedOnToolsVersion = 7.3; + 84D8B4251D75778B00752B56 = { + CreatedOnToolsVersion = 7.3.1; }; }; }; - buildConfigurationList = B2D23E751D348F3D00B34CA8 /* Build configuration list for PBXProject "LFLiveKitDemo" */; + buildConfigurationList = 84D8B4211D75778B00752B56 /* Build configuration list for PBXProject "LFLiveKitDemo" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -223,126 +221,99 @@ en, Base, ); - mainGroup = B2D23E711D348F3D00B34CA8; - productRefGroup = B2D23E7B1D348F3D00B34CA8 /* Products */; + mainGroup = 84D8B41D1D75778B00752B56; + productRefGroup = 84D8B4271D75778B00752B56 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 84D8B4411D75779200752B56 /* Products */; + ProjectRef = 84D8B4401D75779200752B56 /* LFLiveKit.xcodeproj */; + }, + ); projectRoot = ""; targets = ( - B2D23E791D348F3D00B34CA8 /* LFLiveKitDemo */, + 84D8B4251D75778B00752B56 /* LFLiveKitDemo */, ); }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 84D8B4451D75779200752B56 /* LFLiveKit.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = LFLiveKit.framework; + remoteRef = 84D8B4441D75779200752B56 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ - B2D23E781D348F3D00B34CA8 /* Resources */ = { + 84D8B4241D75778B00752B56 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B2D23E8D1D348F3D00B34CA8 /* LaunchScreen.storyboard in Resources */, - B2D23EAA1D348F7100B34CA8 /* Assets.xcassets in Resources */, - 84C7AFA71D52F75C00614703 /* ios-29x29.png in Resources */, - B2D23EAC1D348F7100B34CA8 /* Main.storyboard in Resources */, - B2D23EAB1D348F7100B34CA8 /* LaunchScreen.storyboard in Resources */, - B2D23EB21D348F7100B34CA8 /* camra_beauty_close@3x.png in Resources */, - B2D23EAF1D348F7100B34CA8 /* camra_beauty@2x.png in Resources */, - B2D23EB61D348F7100B34CA8 /* close_preview@3x.png in Resources */, - B2D23EB41D348F7100B34CA8 /* camra_preview@3x.png in Resources */, - B2D23EB51D348F7100B34CA8 /* close_preview@2x.png in Resources */, - B2D23EB11D348F7100B34CA8 /* camra_beauty_close@2x.png in Resources */, - B2D23EB01D348F7100B34CA8 /* camra_beauty@3x.png in Resources */, - B2D23EB31D348F7100B34CA8 /* camra_preview@2x.png in Resources */, - B2D23E881D348F3D00B34CA8 /* Main.storyboard in Resources */, + 84D8B45F1D75782700752B56 /* camra_beauty_close@2x.png in Resources */, + 84D8B4391D75778B00752B56 /* LaunchScreen.storyboard in Resources */, + 84D8B45D1D75782700752B56 /* camra_beauty@2x.png in Resources */, + 84D8B4361D75778B00752B56 /* Assets.xcassets in Resources */, + 84D8B4621D75782700752B56 /* camra_preview@3x.png in Resources */, + 84D8B4601D75782700752B56 /* camra_beauty_close@3x.png in Resources */, + 84D8B4651D75782700752B56 /* ios-29x29.png in Resources */, + 84D8B4641D75782700752B56 /* close_preview@3x.png in Resources */, + 84D8B4631D75782700752B56 /* close_preview@2x.png in Resources */, + 84D8B4341D75778B00752B56 /* Main.storyboard in Resources */, + 84D8B4611D75782700752B56 /* camra_preview@2x.png in Resources */, + 84D8B45E1D75782700752B56 /* camra_beauty@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 3E1A58B9B801624E131D1416 /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - D4A28B8E7B3F14FE7B5CE784 /* Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - B2D23E761D348F3D00B34CA8 /* Sources */ = { + 84D8B4221D75778B00752B56 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B2D23EB71D348F7100B34CA8 /* LFLivePreview.m in Sources */, - B2D23E851D348F3D00B34CA8 /* ViewController.m in Sources */, - B2D23EAD1D348F7100B34CA8 /* UIControl+YYAdd.m in Sources */, - B2D23E821D348F3D00B34CA8 /* AppDelegate.m in Sources */, - B2D23EAE1D348F7100B34CA8 /* UIView+YYAdd.m in Sources */, - B2D23E7F1D348F3D00B34CA8 /* main.m in Sources */, + 84D8B45B1D75782700752B56 /* UIControl+YYAdd.m in Sources */, + 84D8B4311D75778B00752B56 /* ViewController.m in Sources */, + 84D8B45C1D75782700752B56 /* UIView+YYAdd.m in Sources */, + 84D8B42E1D75778B00752B56 /* AppDelegate.m in Sources */, + 84D8B44B1D75781200752B56 /* LFLivePreview.m in Sources */, + 84D8B42B1D75778B00752B56 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 84D8B4771D757A3000752B56 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LFLiveKit; + targetProxy = 84D8B4761D757A3000752B56 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ - B2D23E861D348F3D00B34CA8 /* Main.storyboard */ = { + 84D8B4321D75778B00752B56 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - B2D23E871D348F3D00B34CA8 /* Base */, + 84D8B4331D75778B00752B56 /* Base */, ); name = Main.storyboard; sourceTree = ""; }; - B2D23E8B1D348F3D00B34CA8 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - B2D23E8C1D348F3D00B34CA8 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - B2D23E961D348F7100B34CA8 /* LaunchScreen.storyboard */ = { + 84D8B4371D75778B00752B56 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - B2D23E971D348F7100B34CA8 /* Base */, + 84D8B4381D75778B00752B56 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; - B2D23E981D348F7100B34CA8 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - B2D23E991D348F7100B34CA8 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - B2D23E8F1D348F3D00B34CA8 /* Debug */ = { + 84D8B43B1D75778B00752B56 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -365,7 +336,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -380,17 +350,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "$(inherited)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - LIBRARY_SEARCH_PATHS = "$(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_LDFLAGS = "$(inherited)"; SDKROOT = iphoneos; }; name = Debug; }; - B2D23E901D348F3D00B34CA8 /* Release */ = { + 84D8B43C1D75778B00752B56 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -413,7 +380,6 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -422,46 +388,47 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "$(inherited)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - LIBRARY_SEARCH_PATHS = "$(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = "$(inherited)"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; name = Release; }; - B2D23E921D348F3D00B34CA8 /* Debug */ = { + 84D8B43E1D75778B00752B56 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AFD491825C5DB2AD871189B5 /* Pods-LFLiveKitDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - HEADER_SEARCH_PATHS = "$(inherited)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../Vendor\"/**", + ); + HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.LFLiveKitDemo; + LIBRARY_SEARCH_PATHS = ""; + OTHER_LDFLAGS = "-all_load"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKitDemo; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; }; - B2D23E931D348F3D00B34CA8 /* Release */ = { + 84D8B43F1D75778B00752B56 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FAAEBE1A4F099C69588B394 /* Pods-LFLiveKitDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - HEADER_SEARCH_PATHS = "$(inherited)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../Vendor\"/**", + ); + HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = LFLiveKitDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.LFLiveKitDemo; + LIBRARY_SEARCH_PATHS = ""; + OTHER_LDFLAGS = "-all_load"; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKitDemo; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -469,25 +436,25 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B2D23E751D348F3D00B34CA8 /* Build configuration list for PBXProject "LFLiveKitDemo" */ = { + 84D8B4211D75778B00752B56 /* Build configuration list for PBXProject "LFLiveKitDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - B2D23E8F1D348F3D00B34CA8 /* Debug */, - B2D23E901D348F3D00B34CA8 /* Release */, + 84D8B43B1D75778B00752B56 /* Debug */, + 84D8B43C1D75778B00752B56 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B2D23E911D348F3D00B34CA8 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */ = { + 84D8B43D1D75778B00752B56 /* Build configuration list for PBXNativeTarget "LFLiveKitDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - B2D23E921D348F3D00B34CA8 /* Debug */, - B2D23E931D348F3D00B34CA8 /* Release */, + 84D8B43E1D75778B00752B56 /* Debug */, + 84D8B43F1D75778B00752B56 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = B2D23E721D348F3D00B34CA8 /* Project object */; + rootObject = 84D8B41E1D75778B00752B56 /* Project object */; } diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index a6cfc161d8328ac8deeb235b55b73fb359502d08..235ac1269cc49ec80604933dc2728c1bfe76b388 100644 GIT binary patch literal 43193 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

    TvslcOXsq=T&@q7$Jx1| z+;DCLSI$*%Ra`aa;(T0?YvQJJ_j31fz&*$<;8t^MxV79mZaeo3_bj)Idx6`-y~4f0 zy~Q2jj&i5C&$%<)SKL|d9Cx0(!2QJiZqk_arUaAGWHs4LolLiwvP}Ii_DA7OU=v8E6wZ8E#{5p&E{v#r_E<9Dhq4rYq{OxviK}BEwe25 zTOP2?w#>0SY*}GhWm#=mYguPmZ`ojJwH&k@w|r}rSy^kEHOrc7?PJZe+O5UbA=Y75 zhqcODZLP7^TPIt+R=;(sHAt_*XItl3=UL}l7h2a?AGbbXebRc?dfEC1k9fk%c_q*A z8s5V5d?MeO@4|QGllg9Zf4+z>=7;dZ_%ZxA-pRZ8I^N4S^Y`( @@ -28,31 +28,11 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - - - - - @@ -75,7 +55,7 @@ runnableDebuggingMode = "0"> @@ -94,7 +74,7 @@ runnableDebuggingMode = "0"> diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist index 4a9d18ef..654687fc 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,22 +12,7 @@ SuppressBuildableAutocreation - 840762EB1D07C7D0000FD0BF - - primary - - - 840763041D07C7D0000FD0BF - - primary - - - 8407630F1D07C7D0000FD0BF - - primary - - - B2D23E791D348F3D00B34CA8 + 84D8B4251D75778B00752B56 primary diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme deleted file mode 100644 index 86a692b7..00000000 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/LFLiveKitDemo.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index e7d74fb2..00000000 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - LFLiveKitDemo.xcscheme - - orderHint - 5 - - - SuppressBuildableAutocreation - - B2D23E791D348F3D00B34CA8 - - primary - - - - - diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/contents.xcworkspacedata b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3d8408a1..00000000 --- a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitDemo/LFLiveKitDemo.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 5e623d04633b0903c846b162d158152d3ff3e3fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147711 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 z 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%0A?6|yMR<@x*n%_4&{!NuZUym%DV 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 diff --git a/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.h b/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.h index d189e69e..1695b906 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.h +++ b/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.h @@ -2,7 +2,7 @@ // AppDelegate.h // LFLiveKitDemo // -// Created by admin on 16/6/8. +// Created by admin on 16/8/30. // Copyright © 2016年 admin. All rights reserved. // diff --git a/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m b/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m index 417d94a0..1b9c0098 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m +++ b/LFLiveKitDemo/LFLiveKitDemo/AppDelegate.m @@ -2,12 +2,11 @@ // AppDelegate.m // LFLiveKitDemo // -// Created by admin on 16/6/8. +// Created by admin on 16/8/30. // Copyright © 2016年 admin. All rights reserved. // #import "AppDelegate.h" -#import "ViewController.h" @interface AppDelegate () @@ -18,17 +17,9 @@ @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; -// UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]]; -// nav.navigationBarHidden = YES; - self.window.rootViewController = [[ViewController alloc] init]; - [self.window makeKeyAndVisible]; - return YES; } - - (void)applicationWillResignActive:(UIApplication *)application { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. diff --git a/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json index eeea76c2..118c98f7 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/LFLiveKitDemo/LFLiveKitDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -29,41 +29,6 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "83.5x83.5", - "scale" : "2x" } ], "info" : { diff --git a/LFLiveKitDemo/LFLiveKitDemo/Info.plist b/LFLiveKitDemo/LFLiveKitDemo/Info.plist index aee0eac8..6905cc67 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/Info.plist +++ b/LFLiveKitDemo/LFLiveKitDemo/Info.plist @@ -22,12 +22,10 @@ 1 LSRequiresIPhoneOS - UIBackgroundModes - - audio - UILaunchStoryboardName LaunchScreen + UIMainStoryboardFile + Main UIRequiredDeviceCapabilities armv7 @@ -38,12 +36,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - diff --git a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m index 3ce22628..cfc3ac46 100755 --- a/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m +++ b/LFLiveKitDemo/LFLiveKitDemo/LFLivePreview.m @@ -9,7 +9,7 @@ #import "LFLivePreview.h" #import "UIControl+YYAdd.h" #import "UIView+YYAdd.h" -#import "LFLiveSession.h" +#import inline static NSString *formatedSpeed(float bytes, float elapsed_milli) { if (elapsed_milli <= 0) { diff --git a/LFLiveKitDemo/LFLiveKitDemo/ViewController.h b/LFLiveKitDemo/LFLiveKitDemo/ViewController.h index 3f05eca3..17cbf1f5 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/ViewController.h +++ b/LFLiveKitDemo/LFLiveKitDemo/ViewController.h @@ -2,7 +2,7 @@ // ViewController.h // LFLiveKitDemo // -// Created by admin on 16/6/8. +// Created by admin on 16/8/30. // Copyright © 2016年 admin. All rights reserved. // diff --git a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m index 73359324..6da511b3 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/ViewController.m +++ b/LFLiveKitDemo/LFLiveKitDemo/ViewController.m @@ -2,7 +2,7 @@ // ViewController.m // LFLiveKitDemo // -// Created by admin on 16/6/8. +// Created by admin on 16/8/30. // Copyright © 2016年 admin. All rights reserved. // @@ -18,12 +18,7 @@ @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. - [self.view addSubview:[[LFLivePreview alloc] initWithFrame:self.view.bounds]]; -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. + [self.view addSubview:[[LFLivePreview alloc] initWithFrame:self.view.bounds]]; } - (UIInterfaceOrientationMask)supportedInterfaceOrientations { diff --git a/LFLiveKitDemo/LFLiveKitDemo/category/UIView+YYAdd.h b/LFLiveKitDemo/LFLiveKitDemo/category/UIView+YYAdd.h index 0870c11c..8b49be66 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/category/UIView+YYAdd.h +++ b/LFLiveKitDemo/LFLiveKitDemo/category/UIView+YYAdd.h @@ -17,13 +17,13 @@ Create a snapshot image of the complete view hierarchy. This method should be called in main thread. */ -- (UIImage *)snapshotImage; +- (nullable UIImage *)snapshotImage; /** Create a snapshot PDF of the complete view hierarchy. This method should be called in main thread. */ -- (NSData *)snapshotPDF; +- (nullable NSData *)snapshotPDF; /** Shortcut to set the view.layer's shadow @@ -32,13 +32,13 @@ @param offset Shadow offset @param radius Shadow radius */ -- (void)setLayerShadow:(UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius; +- (void)setLayerShadow:(nullable UIColor*)color offset:(CGSize)offset radius:(CGFloat)radius; /** * 设置阴影 郭liyuan+ */ - (void) makeInsetShadow; - (void) makeInsetShadowWithRadius:(float)radius Alpha:(float)alpha; -- (void) makeInsetShadowWithRadius:(float)radius Color:(UIColor *)color Directions:(NSArray *)directions; +- (void) makeInsetShadowWithRadius:(float)radius Color:(nullable UIColor *)color Directions:(nullable NSArray *)directions; /** Remove all subviews. @@ -50,7 +50,7 @@ /** Returns the view's view controller (may be nil). */ -@property (nonatomic, readonly) UIViewController *viewController; +@property (nonatomic, readonly,nullable) UIViewController *viewController; @property (nonatomic) CGFloat left; ///< Shortcut for frame.origin.x. @property (nonatomic) CGFloat top; ///< Shortcut for frame.origin.y @@ -78,7 +78,7 @@ If view is nil, this method instead converts to window base coordinates. @return The point converted to the coordinate system of view. */ -- (CGPoint)convertPoint:(CGPoint)point toViewOrWindow:(UIView *)view; +- (CGPoint)convertPoint:(CGPoint)point toViewOrWindow:(nullable UIView *)view; /** Converts a point from the coordinate system of a given view or window to that of the receiver. @@ -88,7 +88,7 @@ If view is nil, this method instead converts from window base coordinates. @return The point converted to the local coordinate system (bounds) of the receiver. */ -- (CGPoint)convertPoint:(CGPoint)point fromViewOrWindow:(UIView *)view; +- (CGPoint)convertPoint:(CGPoint)point fromViewOrWindow:(nullable UIView *)view; /** Converts a rectangle from the receiver's coordinate system to that of another view or window. @@ -97,7 +97,7 @@ @param view The view or window that is the target of the conversion operation. If view is nil, this method instead converts to window base coordinates. @return The converted rectangle. */ -- (CGRect)convertRect:(CGRect)rect toViewOrWindow:(UIView *)view; +- (CGRect)convertRect:(CGRect)rect toViewOrWindow:(nullable UIView *)view; /** Converts a rectangle from the coordinate system of another view or window to that of the receiver. @@ -107,7 +107,7 @@ If view is nil, this method instead converts from window base coordinates. @return The converted rectangle. */ -- (CGRect)convertRect:(CGRect)rect fromViewOrWindow:(UIView *)view; +- (CGRect)convertRect:(CGRect)rect fromViewOrWindow:(nullable UIView *)view; /** * 返回响应者链上的任意Objc @@ -128,5 +128,5 @@ - (void)removeAllGesturesWithSubViews; /// 在 block 内禁用动画 -+ (void)disableAnimationWithBlock:(void (^)(void))block; ++ (void)disableAnimationWithBlock:(nullable void (^)(void))block; @end diff --git a/LFLiveKitDemo/LFLiveKitDemo/main.m b/LFLiveKitDemo/LFLiveKitDemo/main.m index 9eec8c1c..fb381fac 100644 --- a/LFLiveKitDemo/LFLiveKitDemo/main.m +++ b/LFLiveKitDemo/LFLiveKitDemo/main.m @@ -2,7 +2,7 @@ // main.m // LFLiveKitDemo // -// Created by admin on 16/6/8. +// Created by admin on 16/8/30. // Copyright © 2016年 admin. All rights reserved. // diff --git a/LFLiveKitDemo/Podfile b/LFLiveKitDemo/Podfile deleted file mode 100755 index 6e0f1efa..00000000 --- a/LFLiveKitDemo/Podfile +++ /dev/null @@ -1,8 +0,0 @@ -source 'https://github.com/CocoaPods/Specs.git' -platform :ios,'7.0' - -target 'LFLiveKitDemo' do - -end - -pod 'LFLiveKit', path: '../' diff --git a/LFLiveKitSwiftDemo/.gitignore b/LFLiveKitSwiftDemo/.gitignore deleted file mode 100644 index 382f8343..00000000 --- a/LFLiveKitSwiftDemo/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ - -#CocoaPods -Pods/ -Podfile.lock \ No newline at end of file diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj index 627df507..b6defbd2 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj @@ -7,160 +7,175 @@ objects = { /* Begin PBXBuildFile section */ - 768D63AD7BD5B7D2959CC88D /* libPods-LFLiveKitSwiftDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 051291DCF26E653942D6929D /* libPods-LFLiveKitSwiftDemo.a */; }; - B289F1BE1D3DCD3000D9C7A5 /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B61D3DCD3000D9C7A5 /* camra_beauty@2x.png */; }; - B289F1BF1D3DCD3000D9C7A5 /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B71D3DCD3000D9C7A5 /* camra_beauty@3x.png */; }; - B289F1C01D3DCD3000D9C7A5 /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B81D3DCD3000D9C7A5 /* camra_beauty_close@2x.png */; }; - B289F1C11D3DCD3000D9C7A5 /* camra_beauty_close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1B91D3DCD3000D9C7A5 /* camra_beauty_close@3x.png */; }; - B289F1C21D3DCD3000D9C7A5 /* camra_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1BA1D3DCD3000D9C7A5 /* camra_preview@2x.png */; }; - B289F1C31D3DCD3000D9C7A5 /* camra_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1BB1D3DCD3000D9C7A5 /* camra_preview@3x.png */; }; - B289F1C41D3DCD3000D9C7A5 /* close_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1BC1D3DCD3000D9C7A5 /* close_preview@2x.png */; }; - B289F1C51D3DCD3000D9C7A5 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = B289F1BD1D3DCD3000D9C7A5 /* close_preview@3x.png */; }; - B2C8FAC51D3DB8B3008D44B5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C8FAC41D3DB8B3008D44B5 /* AppDelegate.swift */; }; - B2C8FAC71D3DB8B3008D44B5 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2C8FAC61D3DB8B3008D44B5 /* ViewController.swift */; }; - B2C8FACA1D3DB8B3008D44B5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2C8FAC81D3DB8B3008D44B5 /* Main.storyboard */; }; - B2C8FACC1D3DB8B3008D44B5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2C8FACB1D3DB8B3008D44B5 /* Assets.xcassets */; }; - B2C8FACF1D3DB8B4008D44B5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B2C8FACD1D3DB8B4008D44B5 /* LaunchScreen.storyboard */; }; + 84D8B48C1D757D4000752B56 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B48B1D757D4000752B56 /* AppDelegate.swift */; }; + 84D8B48E1D757D4000752B56 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B48D1D757D4000752B56 /* ViewController.swift */; }; + 84D8B4911D757D4000752B56 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B48F1D757D4000752B56 /* Main.storyboard */; }; + 84D8B4931D757D4000752B56 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4921D757D4000752B56 /* Assets.xcassets */; }; + 84D8B4961D757D4000752B56 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4941D757D4000752B56 /* LaunchScreen.storyboard */; }; + 84D8B4AC1D757DBB00752B56 /* camra_beauty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4A41D757DBB00752B56 /* camra_beauty@2x.png */; }; + 84D8B4AD1D757DBB00752B56 /* camra_beauty@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4A51D757DBB00752B56 /* camra_beauty@3x.png */; }; + 84D8B4AE1D757DBB00752B56 /* camra_beauty_close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4A61D757DBB00752B56 /* camra_beauty_close@2x.png */; }; + 84D8B4AF1D757DBB00752B56 /* camra_beauty_close@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4A71D757DBB00752B56 /* camra_beauty_close@3x.png */; }; + 84D8B4B01D757DBB00752B56 /* camra_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4A81D757DBB00752B56 /* camra_preview@2x.png */; }; + 84D8B4B11D757DBB00752B56 /* camra_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4A91D757DBB00752B56 /* camra_preview@3x.png */; }; + 84D8B4B21D757DBB00752B56 /* close_preview@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4AA1D757DBB00752B56 /* close_preview@2x.png */; }; + 84D8B4B31D757DBB00752B56 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4AB1D757DBB00752B56 /* close_preview@3x.png */; }; + 84D8B4B71D757DE600752B56 /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4A21D757D4B00752B56 /* LFLiveKit.framework */; }; + 84D8B4BA1D757DED00752B56 /* GPUImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4B81D757DED00752B56 /* GPUImage.framework */; }; + 84D8B4BB1D757DED00752B56 /* pili_librtmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4B91D757DED00752B56 /* pili_librtmp.framework */; }; + 84D8B4BD1D757E0E00752B56 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4BC1D757E0E00752B56 /* libstdc++.tbd */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 84D8B4A11D757D4B00752B56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84D8B49D1D757D4B00752B56 /* LFLiveKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 84D8B3901D7574D600752B56; + remoteInfo = LFLiveKit; + }; + 84D8B4B51D757DDC00752B56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 84D8B49D1D757D4B00752B56 /* LFLiveKit.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 84D8B38F1D7574D600752B56; + remoteInfo = LFLiveKit; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ - 051291DCF26E653942D6929D /* libPods-LFLiveKitSwiftDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-LFLiveKitSwiftDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 19A8327F404723C1C4B67B2C /* Pods-LFLiveKitSwiftDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitSwiftDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo.release.xcconfig"; sourceTree = ""; }; - B16B5A0921F8F93D139F7961 /* Pods-LFLiveKitSwiftDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LFLiveKitSwiftDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo.debug.xcconfig"; sourceTree = ""; }; - B289F1B61D3DCD3000D9C7A5 /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; - B289F1B71D3DCD3000D9C7A5 /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; - B289F1B81D3DCD3000D9C7A5 /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; - B289F1B91D3DCD3000D9C7A5 /* camra_beauty_close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@3x.png"; sourceTree = ""; }; - B289F1BA1D3DCD3000D9C7A5 /* camra_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@2x.png"; sourceTree = ""; }; - B289F1BB1D3DCD3000D9C7A5 /* camra_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@3x.png"; sourceTree = ""; }; - B289F1BC1D3DCD3000D9C7A5 /* close_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@2x.png"; sourceTree = ""; }; - B289F1BD1D3DCD3000D9C7A5 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; - B2C8FAC11D3DB8B3008D44B5 /* LFLiveKitSwiftDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitSwiftDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - B2C8FAC41D3DB8B3008D44B5 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - B2C8FAC61D3DB8B3008D44B5 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - B2C8FAC91D3DB8B3008D44B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - B2C8FACB1D3DB8B3008D44B5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - B2C8FACE1D3DB8B4008D44B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - B2C8FAD01D3DB8B4008D44B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B2C8FAD61D3DB9D6008D44B5 /* LFLiveKitSwiftDemo-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LFLiveKitSwiftDemo-Bridging-Header.h"; sourceTree = ""; }; + 84D8B4881D757D4000752B56 /* LFLiveKitSwiftDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitSwiftDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 84D8B48B1D757D4000752B56 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 84D8B48D1D757D4000752B56 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 84D8B4901D757D4000752B56 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 84D8B4921D757D4000752B56 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 84D8B4951D757D4000752B56 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 84D8B4971D757D4000752B56 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84D8B49D1D757D4B00752B56 /* LFLiveKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LFLiveKit.xcodeproj; path = ../LFLiveKit/LFLiveKit.xcodeproj; sourceTree = ""; }; + 84D8B4A41D757DBB00752B56 /* camra_beauty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@2x.png"; sourceTree = ""; }; + 84D8B4A51D757DBB00752B56 /* camra_beauty@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty@3x.png"; sourceTree = ""; }; + 84D8B4A61D757DBB00752B56 /* camra_beauty_close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@2x.png"; sourceTree = ""; }; + 84D8B4A71D757DBB00752B56 /* camra_beauty_close@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_beauty_close@3x.png"; sourceTree = ""; }; + 84D8B4A81D757DBB00752B56 /* camra_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@2x.png"; sourceTree = ""; }; + 84D8B4A91D757DBB00752B56 /* camra_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "camra_preview@3x.png"; sourceTree = ""; }; + 84D8B4AA1D757DBB00752B56 /* close_preview@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@2x.png"; sourceTree = ""; }; + 84D8B4AB1D757DBB00752B56 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; + 84D8B4B41D757DCC00752B56 /* LFLiveKitSwiftDemo-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "LFLiveKitSwiftDemo-Bridging-Header.h"; sourceTree = ""; }; + 84D8B4B81D757DED00752B56 /* GPUImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GPUImage.framework; path = ../Vendor/GPUImage.framework; sourceTree = ""; }; + 84D8B4B91D757DED00752B56 /* pili_librtmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = pili_librtmp.framework; path = ../Vendor/pili_librtmp.framework; sourceTree = ""; }; + 84D8B4BC1D757E0E00752B56 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - B2C8FABE1D3DB8B3008D44B5 /* Frameworks */ = { + 84D8B4851D757D4000752B56 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 768D63AD7BD5B7D2959CC88D /* libPods-LFLiveKitSwiftDemo.a in Frameworks */, + 84D8B4BD1D757E0E00752B56 /* libstdc++.tbd in Frameworks */, + 84D8B4BA1D757DED00752B56 /* GPUImage.framework in Frameworks */, + 84D8B4BB1D757DED00752B56 /* pili_librtmp.framework in Frameworks */, + 84D8B4B71D757DE600752B56 /* LFLiveKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0044BAB3BCE83EE63FB6F37C /* Pods */ = { + 84D8B47F1D757D4000752B56 = { isa = PBXGroup; children = ( - B16B5A0921F8F93D139F7961 /* Pods-LFLiveKitSwiftDemo.debug.xcconfig */, - 19A8327F404723C1C4B67B2C /* Pods-LFLiveKitSwiftDemo.release.xcconfig */, + 84D8B4BC1D757E0E00752B56 /* libstdc++.tbd */, + 84D8B4B81D757DED00752B56 /* GPUImage.framework */, + 84D8B4B91D757DED00752B56 /* pili_librtmp.framework */, + 84D8B49D1D757D4B00752B56 /* LFLiveKit.xcodeproj */, + 84D8B48A1D757D4000752B56 /* LFLiveKitSwiftDemo */, + 84D8B4891D757D4000752B56 /* Products */, ); - name = Pods; sourceTree = ""; }; - 656DB83DA3620FA72C6B7CF7 /* Frameworks */ = { + 84D8B4891D757D4000752B56 /* Products */ = { isa = PBXGroup; children = ( - 051291DCF26E653942D6929D /* libPods-LFLiveKitSwiftDemo.a */, + 84D8B4881D757D4000752B56 /* LFLiveKitSwiftDemo.app */, ); - name = Frameworks; - sourceTree = ""; - }; - B289F1B51D3DCD3000D9C7A5 /* images */ = { - isa = PBXGroup; - children = ( - B289F1B61D3DCD3000D9C7A5 /* camra_beauty@2x.png */, - B289F1B71D3DCD3000D9C7A5 /* camra_beauty@3x.png */, - B289F1B81D3DCD3000D9C7A5 /* camra_beauty_close@2x.png */, - B289F1B91D3DCD3000D9C7A5 /* camra_beauty_close@3x.png */, - B289F1BA1D3DCD3000D9C7A5 /* camra_preview@2x.png */, - B289F1BB1D3DCD3000D9C7A5 /* camra_preview@3x.png */, - B289F1BC1D3DCD3000D9C7A5 /* close_preview@2x.png */, - B289F1BD1D3DCD3000D9C7A5 /* close_preview@3x.png */, - ); - path = images; + name = Products; sourceTree = ""; }; - B2C8FAB81D3DB8B3008D44B5 = { + 84D8B48A1D757D4000752B56 /* LFLiveKitSwiftDemo */ = { isa = PBXGroup; children = ( - B2C8FAC31D3DB8B3008D44B5 /* LFLiveKitSwiftDemo */, - B2C8FAC21D3DB8B3008D44B5 /* Products */, - 0044BAB3BCE83EE63FB6F37C /* Pods */, - 656DB83DA3620FA72C6B7CF7 /* Frameworks */, + 84D8B48B1D757D4000752B56 /* AppDelegate.swift */, + 84D8B48D1D757D4000752B56 /* ViewController.swift */, + 84D8B4B41D757DCC00752B56 /* LFLiveKitSwiftDemo-Bridging-Header.h */, + 84D8B48F1D757D4000752B56 /* Main.storyboard */, + 84D8B4A31D757DBB00752B56 /* images */, + 84D8B4921D757D4000752B56 /* Assets.xcassets */, + 84D8B4941D757D4000752B56 /* LaunchScreen.storyboard */, + 84D8B4971D757D4000752B56 /* Info.plist */, ); + path = LFLiveKitSwiftDemo; sourceTree = ""; }; - B2C8FAC21D3DB8B3008D44B5 /* Products */ = { + 84D8B49E1D757D4B00752B56 /* Products */ = { isa = PBXGroup; children = ( - B2C8FAC11D3DB8B3008D44B5 /* LFLiveKitSwiftDemo.app */, + 84D8B4A21D757D4B00752B56 /* LFLiveKit.framework */, ); name = Products; sourceTree = ""; }; - B2C8FAC31D3DB8B3008D44B5 /* LFLiveKitSwiftDemo */ = { + 84D8B4A31D757DBB00752B56 /* images */ = { isa = PBXGroup; children = ( - B289F1B51D3DCD3000D9C7A5 /* images */, - B2C8FAC41D3DB8B3008D44B5 /* AppDelegate.swift */, - B2C8FAC61D3DB8B3008D44B5 /* ViewController.swift */, - B2C8FAC81D3DB8B3008D44B5 /* Main.storyboard */, - B2C8FAD61D3DB9D6008D44B5 /* LFLiveKitSwiftDemo-Bridging-Header.h */, - B2C8FACB1D3DB8B3008D44B5 /* Assets.xcassets */, - B2C8FACD1D3DB8B4008D44B5 /* LaunchScreen.storyboard */, - B2C8FAD01D3DB8B4008D44B5 /* Info.plist */, + 84D8B4A41D757DBB00752B56 /* camra_beauty@2x.png */, + 84D8B4A51D757DBB00752B56 /* camra_beauty@3x.png */, + 84D8B4A61D757DBB00752B56 /* camra_beauty_close@2x.png */, + 84D8B4A71D757DBB00752B56 /* camra_beauty_close@3x.png */, + 84D8B4A81D757DBB00752B56 /* camra_preview@2x.png */, + 84D8B4A91D757DBB00752B56 /* camra_preview@3x.png */, + 84D8B4AA1D757DBB00752B56 /* close_preview@2x.png */, + 84D8B4AB1D757DBB00752B56 /* close_preview@3x.png */, ); - path = LFLiveKitSwiftDemo; + path = images; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - B2C8FAC01D3DB8B3008D44B5 /* LFLiveKitSwiftDemo */ = { + 84D8B4871D757D4000752B56 /* LFLiveKitSwiftDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = B2C8FAD31D3DB8B4008D44B5 /* Build configuration list for PBXNativeTarget "LFLiveKitSwiftDemo" */; + buildConfigurationList = 84D8B49A1D757D4000752B56 /* Build configuration list for PBXNativeTarget "LFLiveKitSwiftDemo" */; buildPhases = ( - BAC96C6840291F2B616FE902 /* 📦 Check Pods Manifest.lock */, - B2C8FABD1D3DB8B3008D44B5 /* Sources */, - B2C8FABE1D3DB8B3008D44B5 /* Frameworks */, - B2C8FABF1D3DB8B3008D44B5 /* Resources */, - 7490D167BE18C3C7DC2FE381 /* 📦 Copy Pods Resources */, - 5683F74F0FF045A7193DAAD0 /* 📦 Embed Pods Frameworks */, + 84D8B4841D757D4000752B56 /* Sources */, + 84D8B4851D757D4000752B56 /* Frameworks */, + 84D8B4861D757D4000752B56 /* Resources */, ); buildRules = ( ); dependencies = ( + 84D8B4B61D757DDC00752B56 /* PBXTargetDependency */, ); name = LFLiveKitSwiftDemo; productName = LFLiveKitSwiftDemo; - productReference = B2C8FAC11D3DB8B3008D44B5 /* LFLiveKitSwiftDemo.app */; + productReference = 84D8B4881D757D4000752B56 /* LFLiveKitSwiftDemo.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - B2C8FAB91D3DB8B3008D44B5 /* Project object */ = { + 84D8B4801D757D4000752B56 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 0730; - ORGANIZATIONNAME = zhanqi.tv; + ORGANIZATIONNAME = admin; TargetAttributes = { - B2C8FAC01D3DB8B3008D44B5 = { - CreatedOnToolsVersion = 7.3; + 84D8B4871D757D4000752B56 = { + CreatedOnToolsVersion = 7.3.1; }; }; }; - buildConfigurationList = B2C8FABC1D3DB8B3008D44B5 /* Build configuration list for PBXProject "LFLiveKitSwiftDemo" */; + buildConfigurationList = 84D8B4831D757D4000752B56 /* Build configuration list for PBXProject "LFLiveKitSwiftDemo" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -168,110 +183,86 @@ en, Base, ); - mainGroup = B2C8FAB81D3DB8B3008D44B5; - productRefGroup = B2C8FAC21D3DB8B3008D44B5 /* Products */; + mainGroup = 84D8B47F1D757D4000752B56; + productRefGroup = 84D8B4891D757D4000752B56 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 84D8B49E1D757D4B00752B56 /* Products */; + ProjectRef = 84D8B49D1D757D4B00752B56 /* LFLiveKit.xcodeproj */; + }, + ); projectRoot = ""; targets = ( - B2C8FAC01D3DB8B3008D44B5 /* LFLiveKitSwiftDemo */, + 84D8B4871D757D4000752B56 /* LFLiveKitSwiftDemo */, ); }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 84D8B4A21D757D4B00752B56 /* LFLiveKit.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = LFLiveKit.framework; + remoteRef = 84D8B4A11D757D4B00752B56 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ - B2C8FABF1D3DB8B3008D44B5 /* Resources */ = { + 84D8B4861D757D4000752B56 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B289F1C01D3DCD3000D9C7A5 /* camra_beauty_close@2x.png in Resources */, - B2C8FACF1D3DB8B4008D44B5 /* LaunchScreen.storyboard in Resources */, - B289F1BE1D3DCD3000D9C7A5 /* camra_beauty@2x.png in Resources */, - B2C8FACC1D3DB8B3008D44B5 /* Assets.xcassets in Resources */, - B289F1C31D3DCD3000D9C7A5 /* camra_preview@3x.png in Resources */, - B289F1C11D3DCD3000D9C7A5 /* camra_beauty_close@3x.png in Resources */, - B289F1C51D3DCD3000D9C7A5 /* close_preview@3x.png in Resources */, - B289F1C41D3DCD3000D9C7A5 /* close_preview@2x.png in Resources */, - B2C8FACA1D3DB8B3008D44B5 /* Main.storyboard in Resources */, - B289F1C21D3DCD3000D9C7A5 /* camra_preview@2x.png in Resources */, - B289F1BF1D3DCD3000D9C7A5 /* camra_beauty@3x.png in Resources */, + 84D8B4AE1D757DBB00752B56 /* camra_beauty_close@2x.png in Resources */, + 84D8B4961D757D4000752B56 /* LaunchScreen.storyboard in Resources */, + 84D8B4AC1D757DBB00752B56 /* camra_beauty@2x.png in Resources */, + 84D8B4931D757D4000752B56 /* Assets.xcassets in Resources */, + 84D8B4B11D757DBB00752B56 /* camra_preview@3x.png in Resources */, + 84D8B4AF1D757DBB00752B56 /* camra_beauty_close@3x.png in Resources */, + 84D8B4B31D757DBB00752B56 /* close_preview@3x.png in Resources */, + 84D8B4B21D757DBB00752B56 /* close_preview@2x.png in Resources */, + 84D8B4911D757D4000752B56 /* Main.storyboard in Resources */, + 84D8B4B01D757DBB00752B56 /* camra_preview@2x.png in Resources */, + 84D8B4AD1D757DBB00752B56 /* camra_beauty@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 5683F74F0FF045A7193DAAD0 /* 📦 Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 7490D167BE18C3C7DC2FE381 /* 📦 Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-LFLiveKitSwiftDemo/Pods-LFLiveKitSwiftDemo-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - BAC96C6840291F2B616FE902 /* 📦 Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "📦 Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - B2C8FABD1D3DB8B3008D44B5 /* Sources */ = { + 84D8B4841D757D4000752B56 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B2C8FAC71D3DB8B3008D44B5 /* ViewController.swift in Sources */, - B2C8FAC51D3DB8B3008D44B5 /* AppDelegate.swift in Sources */, + 84D8B48E1D757D4000752B56 /* ViewController.swift in Sources */, + 84D8B48C1D757D4000752B56 /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 84D8B4B61D757DDC00752B56 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LFLiveKit; + targetProxy = 84D8B4B51D757DDC00752B56 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ - B2C8FAC81D3DB8B3008D44B5 /* Main.storyboard */ = { + 84D8B48F1D757D4000752B56 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - B2C8FAC91D3DB8B3008D44B5 /* Base */, + 84D8B4901D757D4000752B56 /* Base */, ); name = Main.storyboard; sourceTree = ""; }; - B2C8FACD1D3DB8B4008D44B5 /* LaunchScreen.storyboard */ = { + 84D8B4941D757D4000752B56 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - B2C8FACE1D3DB8B4008D44B5 /* Base */, + 84D8B4951D757D4000752B56 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; @@ -279,7 +270,7 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - B2C8FAD11D3DB8B4008D44B5 /* Debug */ = { + 84D8B4981D757D4000752B56 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -316,7 +307,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -324,7 +315,7 @@ }; name = Debug; }; - B2C8FAD21D3DB8B4008D44B5 /* Release */ = { + 84D8B4991D757D4000752B56 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -355,39 +346,36 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; name = Release; }; - B2C8FAD41D3DB8B4008D44B5 /* Debug */ = { + 84D8B49B1D757D4000752B56 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B16B5A0921F8F93D139F7961 /* Pods-LFLiveKitSwiftDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; + FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\"/**"; INFOPLIST_FILE = LFLiveKitSwiftDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.laifeng.LFLiveKitSwiftDemo.LFLiveKitSwiftDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKitSwiftDemo; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; - B2C8FAD51D3DB8B4008D44B5 /* Release */ = { + 84D8B49C1D757D4000752B56 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 19A8327F404723C1C4B67B2C /* Pods-LFLiveKitSwiftDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; + FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\"/**"; INFOPLIST_FILE = LFLiveKitSwiftDemo/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.gameabc.laifeng.LFLiveKitSwiftDemo.LFLiveKitSwiftDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.youku.LFLiveKitSwiftDemo; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h"; }; @@ -396,25 +384,24 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B2C8FABC1D3DB8B3008D44B5 /* Build configuration list for PBXProject "LFLiveKitSwiftDemo" */ = { + 84D8B4831D757D4000752B56 /* Build configuration list for PBXProject "LFLiveKitSwiftDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - B2C8FAD11D3DB8B4008D44B5 /* Debug */, - B2C8FAD21D3DB8B4008D44B5 /* Release */, + 84D8B4981D757D4000752B56 /* Debug */, + 84D8B4991D757D4000752B56 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B2C8FAD31D3DB8B4008D44B5 /* Build configuration list for PBXNativeTarget "LFLiveKitSwiftDemo" */ = { + 84D8B49A1D757D4000752B56 /* Build configuration list for PBXNativeTarget "LFLiveKitSwiftDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( - B2C8FAD41D3DB8B4008D44B5 /* Debug */, - B2C8FAD51D3DB8B4008D44B5 /* Release */, + 84D8B49B1D757D4000752B56 /* Debug */, + 84D8B49C1D757D4000752B56 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = B2C8FAB91D3DB8B3008D44B5 /* Project object */; + rootObject = 84D8B4801D757D4000752B56 /* Project object */; } diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index e60ce2c9ef7dc3b3080317dc402d60c3ffe547d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10675 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index f21fb069..00000000 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/xcuserdata/feng.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - LFLiveKitSwiftDemo.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - B2C8FAC01D3DB8B3008D44B5 - - primary - - - - - diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 2f09eb68..00000000 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 5335de2daf05f8f70f90dc324f2d610bcb5f889f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27053 zcmeHv30&0G_V~TuWq@ITVG$U>ao9#N*@w*qW@ASnSzJKJ0Y;bvhGqs8ak<|XE48vr z)5;WFTWsGfvoy`jdX=`9na^x7v-S0=*YZDiz6>x5J>UD;`@Q%3KmB}|nY)~O?z!il z?VfuZI$Es`XG+TJ2qOluh(kP*NJ1ndrp3*(*d10|`?NS)!)2C6r(=4Y+1}V!Fh;boid55zAaFXWAaQ3x7=Mx!w(0gXkMpm8V>C81=Lj&jhYXbP%A)u;y5qN!*a znvQ0mI#iElqFJa3Sg3x*A=JZbqxoEocqeingKcXa~9r-Hq-+ z52A+l`87jMRQ;k)r8_)+{AejGoAU&epJui#hlYxoF0ieJZX;FI_xdX_L~3u9$2W9*EBaWc!8YnW@9>zL)t3T7p9J+q#%e-ecZpjxk>|-!R`Y-!Xq- zzGwc*{J{Lk{K8_EXMI>dR?Y^pBUlAHidC`E>?Q0tHjzzYli3tj!y4Iqwty{Ui`Zhe zgq_UJU}v(k*+zB_Yh_zm8*67f*#+!k_Dc3D_G)$+dmsA{`!M@B`vkk2eVX0N?qi>4 z53+~Zm)KX?*Vs4MH`#aD_t@j?hwMk}DfTn=G<%l)lKqzbj{SlCk^P1Jm18)T^Wwa@ z5N-q)%7t;^oPvwsBDvAr7%qVu%Vly|TsD`(<#Pqx6t0S^=4Nwdu7PXkY+MI-Ik%Ww z!Y$=kuj} z89#-u;;Z=<-pXIb&*fYBHol#=@g4l-yq$OOPQH_0$`fATui%&SxA1HDwfwF8I(|KW z8^49$%5USh^AGY5@elKl@O$`Y_-Fb3{0scs{5$-+{CoWS{D=HW{v-Yr|1p1>|11AD z{x=Dda1vhPBauq{B>|G)nz;7P*4CrQ2T74HlA!<;G_|}cX|AQqF#|sPc6DuBW2@QW z=tX|WpD={&MRF8KIPw&UH_78tGYYcPvoo_34QZ){L`}NJkf_VdNKG`PW~8NLYtqv* zvNR@nNU<@0s?9#v(P3`17;TN6ZI*VYd*D!{MC$D*422^Fia?Pl3XLQ@kq|H9O?-%y z_-;p|kP1Zu1_~61;)#s-kpRHOi$s!Kk}!)xx3)Lg<`>w_Z5ER}8VV}xO%}VQsejaJ zbA!Rw?zG!lTS07@Opa5OdsJ7W!8_f1% zN3GRiZD@rVg%8x38}uGkk=@;CDXHn>REe6Dti|J0-KiNF@GB=Pd-38Uu9ZzeX+1~* z)bc-qG$;dQqO2L>qP7FMriouI4p@7g-EQvcg$CKv%Bw0|Qr*2u<550R-;E}qiD(ka zMR`bzbV!d3$VlWQkOYxn5<*6hP!dMMiQ;Zl04r65ictwFMP=~49957ASg$BDl8hx& zNIiTvk=Z1{BoEa&9H3*&?aurrtJ7w8l$pD1olcWn4zsRmvCS_x&$Bk0p{5QBV6Do` z4VG4uJdqN`%~c*tSmU&|TAf`wyTx1u`pa2swagd6^@E~y=PaTJ2&2VeZEp8~P*1@a zEe)N`&2&ZG*olK#Ee^_u0HeU#YN<3kTV}#faY7V|9QnXLpb!SQB*`(~I;Vdhn2;H% zd(dp6>_H7=6s1g{v9`K@0>w^Cn?qdDImp_Jno$c;5j7d(UZT0E9R>BGR@6qKNlY)Y zp$-yD;z;~V05g~u9QTm6nk+PL-XVzId@4 zO|pxOcoiI(**ri%k9r%>_d(05gL zbpT(CpamX$3=GlNwI3X93T0HAh^v17@Ig@5-@edp>+FCI=dDeK#;riUM}OT!CX3tl zNAwejhQ3{0WpQpsKcc^(?3(f__#sNCU;3JZRe=$*ZX#n`<(M5*E^&SDTSx4JechrD z%SaVT5IY1Q>t-y+fjEd%lc{7zzo^3_aQI*ugcUe~)R0=ru~aPg?+z+?W3?SxmsoO- zHVVghbdJSwWEz~M?237edXWl{0Ml0^2m=o1(owbPPo9AL^M&#|;O zCxg103qDtJ|K1z;*1rpfD*7FTgeT!b*b_Jx=V2|@VLdirBhJSK#7r7UBWWTQGKVyi z7Gk{%7vW-q58HBe9gk5`+ z+1^CgfKFRn2dXkfFH`(o)!EPnt!Ie8Tpi`X(8Fk%WA1DPSp&+Mk{@(JUr{CP?r?(i zn_}qzBEuIm)oOIxxOI8IiUsbWW4p^Kq}Opho{47xE1U3aY{m^B;OsV=Q?ya&RLUv( z@~~!0yS39HB1TobWr0(y3Gc95+dzq)S4A8Ik-22vo45&EV1PNe8MnY7COj9n;x<$_ z4ZP{rCcCA*w!;j6opp^AZo5;I2CAk$Lt5wZx~X#ToMN5LZgo!=Msko&IVP=dU>oj$ z(Jse!?7&Xk2_sVD$gLd8Y>h4g%^I*6s5Rqi(Pp-`4-``&1FCI7#T<9vfjVL%ZNv_v zwu@W23#Dx${=rLs6aO8>ivfitcqt}$cAa}7HB-u_JFRW76U=QLq=Q^ekV$Tu1M+cv za`GR=?Jlu~ufkV@H3D{#dn#@+^x|bGd*~{$=e77clY9*DpeS@;6{xBoZcTdeatiK( z+k5iHN?5D8s1DCYb;Jq8?Id8ZQ89ZHnE2QX%p{ulcnw}_l8*+YhPIDAnYS0;N^!c- z=Hj&1P`k;P=mX8Zt1u7}7{kXE--C6eGV95uu& zRp5lQH@m*}+p1vngI4xz+ozw;Eibg#+AL0cm$+U}(Dm9y2=R9#wHxmTFBm_K_uyyn zvv@Dwho2(?xq@6tt|C{HW#pRe_yB$$AH*->O`De*n%Z895;dt^x)cZm;0=6?|~ueBHeZQ3qTUl@ZZ3muXESIK879B(b>>y zZ4`Z+M2D@@-srX-@tgR46toq;h2O^S;CJzRWI0(uR+8(<4O{Us`~ix`AL0|_MsgEq zjho485{FtK7PH+9u7G`t zxxE=AclioiafRK@135;4ko5@J0qKPuB`;hT<<> z!3uEoU`1kePfveC=wLsn@7AQJz&z8^b5a*i@782y0$o!U52gEl=vP&1`qdL?wkB&+ zwYj6i(qw==VK?hLolaZ(7}I!=MMHY=Cb`MYD_$dArSm`%Bo56S~ zjkh(J9hN%yv|Cz1@y@e=T)&NUxMt083=fty?5AFaqmDDkdd3T62jfldApRg@1{|u? zlyn;Q(WLZyRE&%XMCvV!ALGviFmiGy*+@2#o-Ire6U>A#BS@J`uEu?$i-}^Q=`bT1B{PaqkinoYDqY=ecCh#yjdp7X zjT%89$)kx2Iu(X)JjXFfZZCsLCOi7P3?>bNDNH(}A$O5``#lUMiy1%I*k>j%6Up7= z9unVAt5_{j4fYQh9b@$9k`G;W(k|zdtb{28RG3ooKo2Sa@&H!_g3;)(wf1@Ml+tdz zFJ-2P&aAtjhM7ux*OG^Om}%q@SMQ-CMNB=N+)QQ`d6YacFgY{RPn#&nQf`tL=1k1t;7UTV^_$#h~1ndCYuf0n^1S zWV)F}WH))5>>`+kq%@Z*4JTOZAfIZhLNgii4X9H!!Q| zKDm)u#oWZ)O!kulM2yo}B@OB5%rzv-2B8$DvH>g=GS zCwY#M4ds z>5ZF0yO}+7m7XR?dYEU((chCC&r!*-pE*EYC+`eMju)82AUT*r%!}j=@@6md67w>7 zi@bdSF=jZH8K7#v$4z~u0Shu#YtecLo!6PSJcfIld5649-Xrl4v0na_N7E0OPmp>C zbDa5*Il=syImvv)oMJvE$H)idIQfvAAb%z&$wxbwPnpk{)6D108RiS-Eb}EfMLs5< zkWa~H3v`B*RAahPpRG?%Ny#>9H2Mr$r8DGY8ZxsrDQP*W1!;OX zEGo#)NlAmMEKN>|F*P$wpP!m-NH=5|4QU1W>Dj6M0QJV90J_G4KIe_q$8P7bmeJ~H zY_)+*qUO4z)Y6rflmfec?l7EK)kqJ$Dyh(fwgbo%oI9eMNq%Df=BaOfWq$K0U>TP6 zERe8Xo&{1CB6>6c>#|u`e^WekHnXGI zF>C_)3;CY>l_b=PGNV@9bS8Pspmp%vw1alLV%SDQ2GB(+rcw%}kstcKMmB?;2!|7F zCY!}(vpMW|b^`g4{6zjnekQ+=U$-$KY%UGTu{y9a?jyf}r4b=uBpMup@dW+SVX-^A zC`SQ%b+nqh#Ne93EwNNCHdOUBbUD6p!_L72MC_nu?r~fepJ%K7fVAgGT`B`8`DPl* z0wE~|^V40pc+!@lD^jU+Amq%JBkSF41zX8p%1&Xc*lMMGvhPEizVBPpPP=cDFFm77@78+&I_V z4Dxx=qT=#`ipsL$s%ld~aaq2*T?1`5dT_hSDaEzA>U>jCz79h5Ri=W9GWaxA>Z*&} zoh-Cdyl1BhV~wHOq^~JAmgSph*r~d>pg4buyGsl0GHR$Ulc6VcDc4QzM`|u@96nUz z!L8b9E44?f8hu%@;rB4Voc7V_I>4e*m6g>_R%IonsuESy0a6uO+QFluLD)r$3}w3V zLQ_R$b@All8M^A?igHuslnP2X59&E7xQVVvHo$1>fKZ2hC~#F%iwmkv75Wl`Nk667 zSXd0eMf$qwGoM1z|3i?9%d7LJfI4t5RUZk#D`mUbh5bwkyiIMib5;9hwwqlLO z>igwE?6vH5>~eMmyOO=0y@9=vUB%wS-psCMZ(-N4YuQ`bb?kZp2MRb?z#{}4CSZkt zBLzHCz@r2lE#O!I#|wD0fD;6KiGULYoGjo}0jE>ox3hP!8`wM9jqE12hwWuIvs>7$ z>^62gyMw)py_>yNL)be+{89pQ>QBqE&>v}<+VZx ztJB)3C$$X*`m6{v+!QE%{=B6!ncyhTkO%ow?ahfzmN{0yev&a?UsD*LZcL3& zOEFX!Ds+_<#wz+-Ew<}tkwl0Swm2pYKKF3*)c~Wq)*V>V4uPX48vPyOkT0>hq0QRV zF|TW$<+6sk9dqDNsR53{+PYdht(Ih$E=>lh)C9Q_bPvE0TB1m5o1+h>78kSrJ0Ju^ z`_~Y}btcfbV2C=G%2TF4^_HOYc3L)fqih% z08TEftSN2-Rd=x;Ex3yq_LJkcc`p zMhFr@nz*Get$N^`m3>7VQfZRgF5-~qQ#|p!g&IuF*F`K;Cb{!GSHU&63wP(v@rnN7 zg?&dvCB`Iwz)g^U-Yfi{JI4jKPDuWv5uqVGWY-PU&dVo z&;L`Awqs0k@WKDNWWphAppuyoe%z!y;wVfU??QDeLkt|4$RvHN%TZ zSBXehxa0Xp=V|vHQgA+;KV;ExQqGr?aee~M6mXV+vjv>9g$v;1D4q)v@OS}FAh`mb z=sM0nC&9BnVe|r1M95T5QOvpq`OVuo%(Vd!|ku^@0p6b5! z#6@v5d2Zc=26Ot#>G#N0;0Nn9h-mq}B z%vluAoE6}b$mfvv_qho5*t>Jzbf2elg&d^54Kv}%T)Ei2NWjGd{r4T&KkduuGVGm#O{;Y0|Mw3Ht z$E9ZEAH~T-dwA=HN!$)%iRi);oxtEfa@sadJ*!Us@HxqYGyYuOGYX{&P-1Sq_Z+o z(kX8aF#1Mr%dnuga@)k!nk8VjV}Pu?xxK@}-N!u#a1RLBBH%d`ZnFsY{aX^3 z{^VNxY)uB;EZG^Z1a3D$4|A^$3-dMZ2*7+@z*YfYMq$nsVLqo}e^rP~nvs9GjjFl5Ga$US~n>HS7vE6@K7;85Z!b z+;1qJ#{%vY@H`55z6ki)_jFz1060|xQVqCD;}S(w#AUeQ@?N|jB>W9?kAM#VxPg2S zxlzDf6!1a;!&MM5N8F}R4wEC^hch3}N5GLg4=3A;dw4k9Ug~kY%&SDjx5OmB&TUv< zxCc!y_&2t|m6X0?=)U|_NNIGsYmz%1_GE}5C%b}Q$?gL=F%X+P$j@}ui-90F>al!0 zMLkZyq=#1vSfE<4Ka=O&1O@RHV?aj4@*eDjtoq+wST{dR<}2WuG!F`F zWe;B|;OoV!t~A+8yf-mq&Y8P+4L=J7?ci(qsr)p4IzNN2_+|mG z7Vs?sUL)YOJ9ranBHZf?qebkOXSjC4y@Q@W+b6=AIv(@3U^A6etl+{B&7FNEwuem=i| z?-K9^0pBU$jhp#yei6S|z?%g8w1D@}RZaoM^vpr;%U6e>Syg8nyv1aF2j@2>4zBKOo>o`%{7W z75t49^_BefJY?zj3V5@Cw`}HD@i+0n5nBbkO@PaHfV%p;!8|Yp>m0KCoUlZf{C-0{ z4*uSu`tRiL*s8fAkeS^8`A@FLyfDLZ zykx?}3wy+Cr5Am%nuPT5*C$xl|P@Dbrk;+k0 zRdh@&lvi07T42aI1+C_02mGcYELN))DH-S|r*8(qmQJFo*diul)f7`;dbm4yL_K;; z!cZ^Y^bOcMX6(STH{%keNy#a2`D#j`9wz0&q>4UYRFJAlQKcZbN-YI|Y3Xh>d(+0k z?~F{(hf^|WVRjC1+#tdSQD!z8_E3)+TuqDSF1v;**5 z#vAai#R+)8;uQK7v+(9w7`%5DjmN@UXIXH&zZ97Kj39g7caTmS;--Nf} zC*T#cXGJ6$1O`NdfPMeCGS8bcy+W zF(BTR|2vHUC(s1+0<@=4^pI1uQI)fcKF9QTTG9Z6tK|{?7;M51_~Vr8>G6fj_*~R} z<5&SdB~t1H|7VdXmR|k@%C^Y^;2}I4YC>js>P`iJok&&gTU7+_HjPKAC`EpHNa^KD zeda$w)*j>s+fICOgZ~`TpYdV-3;rxWk^hRlk^hGOmj8}jOF$9t73g|hBjEk6tj*^I z{DOdAgk(*S@Pm%dMpCndd^xCy|5dbPp8MAw;7K6;l_ql@_-~qBUxMl%ocH&in(5(k zh7$jqX6MR22K)CSbITu}yYk;OJNj_ez|mqAJ?W<@mdU?+0(s7Uy`a>SAp!n3&F=3c zN?+tH;F+5C-!wb%TE<04XurtoG(@h?f79&#U?b%Jmoz(xw`koSG|6vp$C5AXX37O> z2X}tTpd69dhAyYY^#IPK^wjKesi|s+H&1FDug%wrtnPX`Xpq$}@e`3e^uL-zCkYa< zIQ$=St7`~XUJ@z^t8r1+<;^Ql47`R;ox41E;rax;YyCZk;T>x~ILr=&m#o9#73(O@ zz|G*Axp~|IZXve_UaBVC72H+aYHkg8E4Lors@}kDSCs9krNXAOWNs=Tfk~E1%k|`;bOqNtgE|pYC zY9v!7(jAGvy&m`4<+aD_S+9Lw`@N2Mo$~tF>r1a6ym@b_cbIpSx6)hX z9q&EbJHh)BZ;kgP?=tTy?|N^$cbE4v@9Vv9^uEb^wfAk_cX;3Fy~(@R`+)a5-aq@+KHvNN z=<_$9U!(!jC~34bRvIrID;+0IlBP)Wr6tl*X@k@zwM(7S`O+?FxAa=+3hDLIRnnWK zw@BAWd!<{Y+og9)@0H#seM-7p`n2>J>2c{9>2JQ+m-Xd+y?lLqeSQ6W1AGI0<9yY= zV|>T@j`L0OP4P|h)%a%mX8Tt8Hv4w_F8A&Aea!cW?yP|{{YUtR`78V*{YUzb@{jh9^^f<@_8;#*(LdK; z>#z4W`WN^Y`Iq>Y`A_xl@L%G;#($IlWB%{>e-VHJ0t3_m+JL%%nE|E%b3kLjqJXOd zRtBsKcq-svz@dP{0WSx<67X8U#{oaez2%YeEP0N6f_#!ZPp*@f$V=su<+bugxlP_B z@0Kr?FO{E=pAJNUd|+f?Twq0Db>Py#b%D19-Vu0b;HJR40`CpHFYtlDU4bV9KMe{B ziVV^P6$G^gbpY5rHEjM~n=;B6LOQhR`jcJ3}7}eJ=Fn&_9QM6#8-Kr=h1q&xHOZ zEHG?L*rj2!!sdk8!<=FB!WM)HVb_GM3|kYnF6_3jJHj3b+Z*;`*h^u53VSu|NZ5N} z$HI<>od`P_b}H;_xFkFeR7@KfQZ!_S1D4gV_q7X_o>6cUB6!cP&P2vkHUVihTh3`LeAN0F=0 zD)b7YqFhm@n5CGlXjE7f&5CZtwTkN$%M~jX>lJq>?o{+BHY>I&b}9BL4k`{Q4l7<( zysJ2_IH5SH_*8LPaYk`g@k0cT@Q(ltfIAsEe2xVTv$E zG)7n=nj_{#EQnYbu^65txH4i{#B~uXB6=g9iFhgEWMpXMm`FopW#sh8y2zQ4rbu(- zWs$9swn%$qXXO0I2P5B&{60z*l^B&0l@^r|l@*l}RS;DaRT5PewI%AosNGR}qMnV~ z7qvg?`KZ^Tjz+x^^;XooQOBZ=kCcwg9@#wd){)PTJUa5tk#CQDZ{)F&$47oU@@FMh zvPxd*r3_Ijl#$Aj${1ywQmq`L%v2UD+m!Q^S1PYnE?2Hp-lSZuT%){IxlY-myifUz za;#CZ$|lz8Z*i;YSyT(QQJqo zI_mRLKaBcu)K8;+R{5x;DqoeKDnb>hic%?6m#E+kcU7`#BD{N+tJ129RVAu2Rh4SC z%B*ToHL2QE9V)xZsk&Nqqv|HrYSkLmI@MRIAEPDFe$fHZfziRy5z$f6%4i6cM<+z5 zMAt-L9=$C3#^{@)Z;4(Ty*c`U=!c>oiGD2liRdSzcSj$JJ{s^L^JvUtF;B$ojd?TXotXDyj>r5t=2Xn5F`vhrjrls}yO{4|ev8Gi z;jz)Nv9a3N;@HyI&e$cfBz8yagRu|Cz7hLD?1!;`i{s)XamjJnapU8b#9b42UEB+C zuf-jW508(I*Tombx5O`rUlD&p{7vz<#NQgfK7LR93-KStf2|HzN2-a`pAFgpF~ z^j|ed!)SO-fu>4RqnWCiq1mN*Uh{(HMa|0@c^PFHhsQ?&a*lDa`xvO93MSC zX?)7~wDB1e%oExtbWE^M=$!b}#1|&MIPs;4ujB^js&Zp;<8nvmUYENzcVljE?$+EL zx%cEglKXh>lexQdpUK^u`+gpq7nqlmr_Y<5H!aVS*PeHIo-=QL-om^q^OogZm$xGC zhP+jI>+`nfJ(TxM-V1q$^Zu0gTHfn<$MQbRJDGPX@6)`~dEaW0R;mrtsUhRJE^V%1*FKUl!k7-Y9ztw)P{Zad~_BWlk&R6HJlk0+YBXmmLXkChKlCD5k ztSi%1=%(oEbhC73U88P}u0?mbj_6kE*6Vt8TXj2h_vr4^J+6CF_q6UA-9FuZ-OIZ7 zbRX-!)%~pdP0#3gy|+G4AEFP_EA&x%rGB(NL$A}9>!<2x=x6F@>l^j0dYj&^ck1Wq z7w8533jI2LkA91OyZ&zdPW@y0UHaYnJ^H=+=kzb>-_f7cf2IFX|Fix#17qL~{)Rw9 zh#}OVFhm;S42gy;gV8YAP-&<#)EcH68VnXgi{Uauo55ySV7S7t!m!TJW7uNYZn)d9 z)9{#KmtnVIk72LjIm1hacMKmHzBc@1_{E5ftWjbNFa{Y%7{iPa#wcUFG0iy1SYoU) z)*7c9>y0L3i*c^8-PmDt7(0zij4O<5jJ?L4#`}#A8Xq=3YJA+d&$!=s(0IuBlJOPe zYsPntpBTS3{+f^TxqPpDX}&C9ksp~qGGCQ{Z~m_Q-TBYt@5?`se=z@K{+awQ^S{ae zu7EF47N`nh3)BS(1&($O7@q$T=II!XC>d4{8EZa*-}ZVU#Yw_xHPmhyfnHrwltwMvvg9aw$xBs zP&&D^vb3tSwscylxwNUYt8`iE^`)yySC_6W-B7xzbaUyp(jBD_mOfFsxAahXVtGn= zPI+N@d3jBFL%FToUfx;0puD?$Nx4vdL-|eRtIOAxuP?v7d_(!h^8MwXRRmW|swk)^ zub5gfqoT3mvI<+ps*0N{wpTn*@o>eX6^~auTk%H4TNUqC9IN=S;$+3g6`xg{sra(u zn~Lu$aV1;HS9(>3REAcDS4LJYth}c3y2=%mH`Gn5v(z=$S?gNseyNw%%j*5>1M9D> jUsZo|{Vnyk&di-zIkRSFUElc|BYsN4J&xbd%$ffWeXJk^ diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index ed9a9b4d..00000000 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcworkspace/xcuserdata/feng.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift index 40f8b5fc..0918b4cc 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/AppDelegate.swift @@ -2,8 +2,8 @@ // AppDelegate.swift // LFLiveKitSwiftDemo // -// Created by feng on 16/7/19. -// Copyright © 2016年 zhanqi.tv. All rights reserved. +// Created by admin on 16/8/30. +// Copyright © 2016年 admin. All rights reserved. // import UIKit diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard index 3a2a49ba..4e86a016 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/Base.lproj/Main.storyboard @@ -1,13 +1,14 @@ - + - + + - + diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h index 64c6de1f..aa6a20b8 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo-Bridging-Header.h @@ -5,6 +5,6 @@ #ifndef LFLiveKitSwiftDemo_Bridging_H #define LFLiveKitSwiftDemo_Bridging_H -#import +#import #endif \ No newline at end of file diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift index 75aad934..f5b69dae 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo/ViewController.swift @@ -23,36 +23,36 @@ class ViewController: UIViewController, LFLiveSessionDelegate { containerView.addSubview(cameraButton) containerView.addSubview(startLiveButton) } - + override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } - + //MARK: AccessAuth func requestAccessForVideo() -> Void { let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) switch status { - // 许可对话没有出现,发起授权许可 - case AVAuthorizationStatus.NotDetermined: - AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted) in - if (granted) { - dispatch_async(dispatch_get_main_queue(), { - self.session.running = true; - }); - } - }) - break; - // 已经开启授权,可继续 - case AVAuthorizationStatus.Authorized: - session.running = true; - break; - // 用户明确地拒绝授权,或者相机设备无法访问 - case AVAuthorizationStatus.Denied: break - case AVAuthorizationStatus.Restricted:break; - default: - break; + // 许可对话没有出现,发起授权许可 + case AVAuthorizationStatus.NotDetermined: + AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted) in + if (granted) { + dispatch_async(dispatch_get_main_queue(), { + self.session.running = true; + }); + } + }) + break; + // 已经开启授权,可继续 + case AVAuthorizationStatus.Authorized: + session.running = true; + break; + // 用户明确地拒绝授权,或者相机设备无法访问 + case AVAuthorizationStatus.Denied: break + case AVAuthorizationStatus.Restricted:break; + default: + break; } } @@ -89,24 +89,24 @@ class ViewController: UIViewController, LFLiveSessionDelegate { func liveSession(session: LFLiveSession?, liveStateDidChange state: LFLiveState) { print("liveStateDidChange: \(state.rawValue)") switch state { - case LFLiveState.Ready: - stateLabel.text = "未连接" - break; - case LFLiveState.Pending: - stateLabel.text = "连接中" - break; - case LFLiveState.Start: - stateLabel.text = "已连接" - break; - case LFLiveState.Error: - stateLabel.text = "连接错误" - break; - case LFLiveState.Stop: - stateLabel.text = "未连接" - break; - default: - stateLabel.text = "未知" - break; + case LFLiveState.Ready: + stateLabel.text = "未连接" + break; + case LFLiveState.Pending: + stateLabel.text = "连接中" + break; + case LFLiveState.Start: + stateLabel.text = "已连接" + break; + case LFLiveState.Error: + stateLabel.text = "连接错误" + break; + case LFLiveState.Stop: + stateLabel.text = "未连接" + break; + default: + stateLabel.text = "未知" + break; } } @@ -180,7 +180,7 @@ class ViewController: UIViewController, LFLiveSessionDelegate { closeButton.addTarget(self, action: #selector(didTappedCloseButton(_:)), forControlEvents: UIControlEvents.TouchUpInside) return closeButton }() - + // 摄像头 lazy var cameraButton: UIButton = { let cameraButton = UIButton(frame: CGRect(x: self.view.frame.width - 54 * 2, y: 20, width: 44, height: 44)) diff --git a/LFLiveKitSwiftDemo/Podfile b/LFLiveKitSwiftDemo/Podfile deleted file mode 100755 index 0602d100..00000000 --- a/LFLiveKitSwiftDemo/Podfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://github.com/CocoaPods/Specs.git' -platform :ios,'7.0' - -target 'LFLiveKitSwiftDemo' do -pod 'LFLiveKit', path: '../' -end diff --git a/LFLiveKitTests/Info.plist b/LFLiveKitTests/Info.plist deleted file mode 100644 index ba72822e..00000000 --- a/LFLiveKitTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/LFLiveKitTests/LFLiveKitTests.m b/LFLiveKitTests/LFLiveKitTests.m deleted file mode 100644 index 2c9c54b4..00000000 --- a/LFLiveKitTests/LFLiveKitTests.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// LFLiveKitTests.m -// LFLiveKitTests -// -// Created by admin on 16/6/2. -// Copyright © 2016年 admin. All rights reserved. -// - -#import - -@interface LFLiveKitTests : XCTestCase - -@end - -@implementation LFLiveKitTests - -- (void)setUp { - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} - -- (void)tearDown { - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. -} - -- (void)testPerformanceExample { - // This is an example of a performance test case. - [self measureBlock:^{ - // Put the code you want to measure the time of here. - }]; -} - -@end diff --git a/Vendor/GPUImage.framework/GPUImage b/Vendor/GPUImage.framework/GPUImage new file mode 100644 index 0000000000000000000000000000000000000000..9eee6d4f0fc2fd6a4ed0af3006757377f62d41b9 GIT binary patch literal 9150832 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

    gKs>t9`{`#Q$An4ST+etYP1GkxiJ8 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

    $^Cdg%~$)D)NW z)bS*AplFo8d1s6Yp7&Gxc^NH06^STEG{)NxC?Zbvo7*&aWWj;e~n zx}}v1t1Aj?P* z9+id;vE<-GM=Z)T8550~8DQeK|9hVP!=vLy(Deq$S%v=PY~lwYOGrTulc#{^0dB{E z%>6-P+g0EoDK|;SIZZsA1Fo;%3Ftv}>-8H03d^7IjS-o`k0dJm65m~}((+;k=tCx@ zp|rf3U$R?R-6&)nkoBb}D?O_(9gIilG2-!|`vZf0%cNyYch!qhk}?j!9{E1YRnkz4 ziTAbAYka^{$e?TOse^gqWzVG-t-rpj%kPJ4TbvyiQuenistL`xO)z0@W-U-=vE@~O+ z?H|TdCcXW50-)+_??1FL9ll^^$F`+Q=?hTYU!|wCAFu|vb1yklL9traTQ@wAZgE?7 ze9(o_?m^xvp#y4ty2#IfySO8ca6YF?Ti=ze<6wmdsx-gGer z|2JH8c1#i$Iy*KsKt^j!Uy*Ke$G8)~U44=1X+n6VSNJ6tb(vZrQw5omYR@=Ip*_7O zAp>-!F0OB9=TFum!7cIYD)#Aq(ifEa$WAj2l zQ`y*s6@J2s7$Fk{D^xdg?CT5s-*Lg&amt~G4ix$u)0d_z8}X{8TWxkj;C1>&W`93P_2#W52UXsSKX=S!fuIl zzuy(s44EPCcLg`?buU{Sap`KmdFK*tAAHQ&u~O8%BVExam!%)+a_sltWcx8nzWGR3 zSd(?*k@ITMkuGH$%KyTh8G}wbJMR6C^6MafwR6pdz?N6r6z$cvOU|pE5A9Q4lc@;# z<>yYn>MyK*KhN;{>ijCduP(m6qb0q4SolzuFzf9wz))xV!2Y7vTHzZykUZ4nuDQyn z+)J4=1Khv^tm|_xrKSwn6!LkV{YY1S)0Ol=8-_*=MvXqwRdn)l`gMxR<3*E`J}XejhSj<$*sA+8De(!@#y0{nFaxas#=F<3O(8#OS%uoWN%R`|8Tnm9hc~8&uD7@y z871!gF8k2DF8j{{n~!$|??2uZcJg@FfTnHb$Ge8Mj9R?$tLQxcAKTbZwBVRs#u3!6 zaQwHQJksU2AGM}A^a<2}^Q;G}&s#D=H#j>KQD>bUaiVu(JwMi^v>=|~0C&jxJbYN- zYG;)QQE|Qrb_EN&8qte5GuVq1okwdHzWL|Xn1z2*$29&4CD3Bu_+eM1;&eBaD>1ci zAL)ukZ+SqrsWmCcfAq4?N3pco%QmLJjaUb`6?bs6v*VJZigisHfp&?<;!Vzub?g-_ zp-(PDZxJJ`iH0>F;#I1UpQdK$Rt^>P$n%IdEZe=lyt&v8`@)C|JCa)|pPCW;Q(fNg zyc2xfq&4QoKT&3UhHmY?V>ckbXs;seEfaQj_wJvab9UH9Fbz@erRgQ^DUfH187dBW zbS{k6J3A6R;Sh5?M}~kWo|==0Sl>LyGI;%*4blgNbm)_f>4_P7FZ9y6cyM1hXIOsn z6=z4i)cIiqbE4apZLnpT=)dhxE=?cezQ-N-RDkiHy1sP(u|(UsWvMP3r5&w>DKjr8?+x| z1URdS@uvN(P4xE{&f1U|DU^JPyV?pz9rDCQ?k6-OPaYhq0=J*-bm3PkAWG%&v zq0MQB zcRSm!q#!oTSR?1KUQgcBT{6j@G8iYQdOs59p~iUG9wlsFE$Wr2g|{o;V!O>_yCQAB ze44g@eVV1#ahkS&d0MxxpbxLt*Y3@Q?Pk?PF z?A%Sq62wF-?%?>##P9KF$HWGn@(?FpCMx<4b*-xsn^Z=iiHJ_8>ua&xs)nM<;`)h- zySR@2S>?-I6YKTU6LPoLYhR3CTStVD#0js7NJG7Ak*iief#S6{b}b!-Rc1|94LC

    ctoGWOR=8EEcpIqn-fUKMGf^D66?ICT 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 RWh4B4=U!?LKeuTH-?6hzL6!>Mp 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

  • $w~cV2 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

    t_ROFQek%siF|eTcp5Oo46+$WAwr^=!`TEt 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%0DNwH_nRchHNoUVAeqH}R|(&3!Q{SR@*R*O&dEaf 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

    93_9=gNIq<5X(I)m@4;BO7I8PRd|FGoLi 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

    kEJDc4=!{+jU*H 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 &eBo2rORfJiVAk8O7nWW40P-QPweKbT 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%0A^!(fG=-2{j9Px|rMQeV1XVt#dGgYS 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�f0rPA-p=1cF^l1dBx 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 z�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%0Aquo z#zd+HPsc3iX#v9;&TYSKHvuUM;F(_^UQ!=k(!UEY>G5}gmt2)!HJy$4e!a1+xjqhQXj0@NAgKV?WfI|u zN=g+9(A1L28k1*gX$fFg9Auq>7+@U%)G>H0?+Rb1c~c7@nK1jJv0n z2t`R)sbvivo0>b34*LLZEN~0~)5lcXNy&;v)+3{4Q|Q`t9R-e_SeoFX0Vyb(4eR2; zX9$H;;9Bwk2rh0{@lT=e0H!gv@8#$(kx*z4k$R5Z+8VM$a)|ts>(1yrO?Mj?Y$k&c7QoPTB}UQ4e@0 zMh6%dh>>|&mIe1BH71DZGD@urN4Cvj#l7>x`v|`#`qW|xNUuR`oRoY~EtZjCIe-s)|L&>yaSrap-xpqUx{|O`;r#Gm7Eu1@t{7GVNBzMV6K3%V^G=*y3cZewl!cF-PzWz(AyNERtFX^F51*tyRNyxU1JEDhfy<| zm9-m*&$`^~PivXIfoq(lh&7#_v2;&kMR!5D)rW7>hi}t|Z$ljG_dC8#^jIu0$W4q6 z)-$+onhNj6Wi59BL`*8@&T(1*91ZDb-k6Fd@QxvH%pV|o979WuZ9`4eK@s$U*$@zB z8m6ana_nPQXJ%kMz(D?AJ7|zS2LDf;5wzyx@1Qet>ec?>hG!Pz(V<^lmsktH(4Y#@`n9Zj^59eZocCI}H&_OEKX!A?L+)N;)tOmnRBy&@Vp%7}3IGb1~ z0JGr-pHW~oe?&qD%%%(p`9-G!vzcueg4t{Uvj(aHW^)x-510-Aeo=5W8q6jyn!UiV z8qDTmupac9E27ztMzf!fX7_jASFgO-^G zkpZ(Ic1;wR%}*g$%w{}-9x$7w(JU8Avx)*{b9pq&<;b4cyTPhFHJA;*URA6HvpH&5517qy z)C*uX{NUVx*^EIY1k8ruJa#~X*<6IMmHh|~iNS2HMZ5vC*^V&3r1p&pW#8e1GqXR3 zumQ8-s%004FR*+gJ3I?YcQK9!MR{IZ-C?Xyc*2rBshNe>jAU*7DNJO z!&3z?n;(G)n9Z|{)L=G$L{PwNc*P2sjgQ6*n9UF{S=mK6@S z3BhbG169B?3e0Ak;S`t+KP^yk3e4sf!znNu2fjvu*|2^}Q-Rs+GMo!$vk4*tX7ez@ zQD8QYL%=?xz-)+L!;Y!IY=~dO&-4|T%~{f0Tris_p$9M<5`x)04a(b&2D5qHa4wjQ z+Ozq!jF%B3U^dxMH()jzy2cA;Q;FD6mIr)hAq2d4yI?kNLLy)`{G3|AY=$9dz-$T; z7BHKe5sU(}`8Wi;9u%0(-C!2NIKgbbZo&Yw`JM>_%;u*Ed%$ddWmpYn^DJ04mw?&u z2B=sKX2V;YVm)9s{0cz8Y?>MDm(d9#U^aZJ7%-a@+?=ApYz8Zd2h7Gajtgc}4iy7t zvjySn;O~P!7Y|tjW^*^fl;00Zd0sh&BovStKEun*@-Wtr1;Uwxu-I!bnC49W7biLzX@rWzL<&O*c9YVygEbRjXf_80`;J-9K!~#=enb-1LMJSB*Z#0E%P@v zy*8LQ)&|?i=y0JQ7k~_;A{_0#9Vi>xq8os8q+BD$byy5@p&~bL9Rkm_KqKJCz>kIh zXF%D!TNoR*je-@#To3Hh3u>2M-i^plmqkp=dv-XsKZ$L>}B4j;W}1 zJ+$&c;rPI&$b(zMF(pMF+!{X1De~af@coCP2o6$I4%R91;MVW~Ns$M)hNC%(Jh(L+ z?^48JfY{!A`JC>su?Y36KbNcA{KqsRkg zqaH#K@c}7X9HCLm17*WO9z}foiI%ywQcUN){U(C4k;?*xq8;UQ(==gSqTF%evNVm0 zC%~W2dYz}leiI)>+Hg>Xw@>poyMVF$8-Q5UTGu`to3{hr-iKqe(1pA=crD&W>BF(< z!?D>c|DILLjtFj#>GdWF-Y#YS(@eHVtq;tmVWxq_!Ru`0%Ic;q4b5JWS(7858!Hr= zcM4_`{l5_KebkfJgJ?6UCqSF?1<>Z}!C?A8Oe+(_rYblVAU2gQh|R2rf`tNMW4(lj zXeqE*`1}PeKL&a}-lDoeF(j&bN>hb7gHQRIkAMeVa|m=2;ty(C&eu%Z;d7pLIPqQq zJJ*BG0Nn;kyBk6A5LehUpbC42cGf};s<3CMw+cK)Aqsm2RAJ9xP@%AAK+7u-&+?q7 zsluMYCj|<71|y=Xe8@q|BcK>eDC`+fg*}5YhQgi!RoF9lUF=6a*ix7tP&d0cZgzv1dks^6!bkpszp=ublmOz6wE)f{p<_40<-`K~S{6!k!rox(hto zqTfzXw6DUR!5C0s&x{1^f_wz%7Elba6!uI6v=KbZw-yvxE9@D(_A2ZdV$z@vsyra7 zUcU+{y_BB|?G5$}&SS5!XKWM>~0*7 z+b_X}au1wN_ z6=ZZ*Fdi2mUoh#WkVhN;f9!n=d{ou7_nFB|GLtt+fB+GOcTfl+1c*p95MI#%B8i9= z8bUIV)V$1thhmA!t?8|{SZ#~eT57dLKigupEqe79tGA`Mwnb|#wzeOrwP>xiYArr` z{r>;G*Pc0ZW+n+*wcl;_Z}wSxt-bcz`|PvloPEyO>woqL&sQOK{(s2Z`r|HXA7896 z5OJ3J_euF*Qy&AZ0(Kepiv2^9KUVlBgukEqskrwR{Xz#%|4FuggULr<+Iimiv3>%C zGF(f2+^p;cWyoQ^jsKD4^M;CH4|$Y7A?4}kMSb3BG4vv`K0csl@QXh0;u!u5l=}Z6 z`d5*MyF49f7nHqo6=A#l1p~Ik! z!~+#EdG8xqOmtIYAY&Za;e)t7@!~1RlB>Z0$q39$ybcH>$cT=kBZ^KER3;4jB6uZX zw3)bd4}dA7p<`zKe~KwXlo~?DsK24JUk1XGVc}UZg{4E75se{3_2L-yFlG$!VrI_` zM8d4nc_njZ&pN%NBoLTWj7^}Vn7Olxi|3Y>f}3^vJW2zB2wu#J_O^EQY5FL{7=1~L zhZ|Fj>%SGy`J+JA;(D4W{9=yIsb(1j!(&Rpc{*_+RTwO8%mKN$(H<^+)}%%1{)TTQ zdbK6Jt*dL{my7FLaMQw2S691aZLLmoYwSp~EFZ4vv}b}$2MkNx2|)YcE6E~p+Iv{q z^=&Dbr|yKp#iMLfIuH)cHksdS5EI13plQ!yb>At{2pI^6hL6G-F!fcT5I1SGR|X0l l%inqti18BEz;v9}}AKFs^&<*`e4rJX_9~ln7o;^5i8+(axX!^w75g8muWPk6+{!X^Kd-Bwj?~BP1mX_2Ew5^A@a?L{4ufpBPE-64zcL z9GW}$Uypj^Lpa!{f5wg))fW#(2T)9YfsqCBmV(bFwaEwr}I1m?Jps z^^Zei>|HGbaIp3g;n0-H{#8q(`er*?7qh>%_Qk=W=@WbAFdP}Ay+k-PcZ$8Q;>5}D z_8{#g!l79;L)$U!`!XJ?I)dYP^p8WcP3#>MBZpv*=a=rK;p?x%UjH~WWkuQ$KcvRc zhlj2Vx5Azr@+f;8UiuHM3$Qr(JE6Z9l*;^z1ef6%9ccOr*uu#Wk7CqP4iKwKB2OKw z5oPEjHTb}8C`4p^LpU@;I5h7ShvxP3AGrOsRj%9reyRKRzh7xxdo*j@2@G3cy;Qt$ zJjHs0X&2HMZ@U-a@#oPb>sk!G>+wAFjvB9ZkI^0O>b-Zv$9h!RJe&Tpq`W(*ul1-? zcz}AwUc7u$r?dDKqdLJ{gqiE0fue2Wh z`=yJp-wSVl{rrda9Zafwg7$pa2cPBp6ixsSxV+W_ZaXIQ4LH?SXJJR2wO4gS-+ ziG4F3`)=2JuXs68?ebR4aAz!>!S>#G!>F@1ZF=s^8*jMb%#O}bLvvSidt0ETeQQTx zQ%ie&H^6M_JGbNhNRVWJ;!+X;dui`%1T;){=!`&5Tl1#&&elLzeQQTcsIz1-o}0ki zwW_s#bEp<4cX+8rl$2#Cbcfoyn!C40G6Zd=1$TG~ZpNVR07|&Ir?o@D?gYYkHRp$# zH#c>&Z6^oFqxOz)G?5(v1PzRwG#-!Mk#K`xqOrX@4iZmTBiv-b-9(zv80xAg9FKy? zVIM>=d8SPd%ql95(r)kRM$Z~J9#tk#s7w@f1{MU0i{=E*3KW(U6$efY81bpV@Co;7 zQRlS4{6Hb>24)1bo-m?54JAbqU2GbfBUNpVU)5$5wU^o4e^tniTh-=iwyHM9uWF;C zs*U|uh3vRhZB$jUGZJ7H1zMZ8#W|+7!=T}o!s8j86a~gqudt26*_N$;tcX-_jv|7F zc8p4^_ENmPUlVG8e|Ty6CWOnTubjT7PG{l_A>okBKMcQ~lNwua=F4qISi_mm`Njtk z-UUull{s%HoFw%>h@@7B8s~5B429a}Z*1uaDLFcC_I#Y2x@hf6nde+V|ZjB#R2leI8w7qDvIZq#herX1;3@F zj9Hsz&D~T|ys4xVf>H_^k%!2n6{nn%H(QNSc@x^(LK8Mk=-%4SEr7|$ZNgUrCv3Vb zK}-4VwNM}!T(bh#u}(FOn1>I#6$c9OaI0T!h>bTSRvfGgMBQUJ!Zv|~=KHjr4|Q0{7|Z!x+x zDvg}kCD7fZaLqy;c+(`dmZ&rzEOs??Hg{m+f~W8sTiP2gvWtMP8S2~;YP4$bMFT6; zMy#7gOHZoghGA7lH*Q9{c+GQ2fPA@B4q`CW*3)X?HbVqkJL@}YEN*MnxifrE$3}0F8vM#o*a+zx4*5<};?BcSeye+aC+k4Ppt4ZC0STfx+4Hgz3 z4D4YCwl;Tl;V#8)xVye{bEw+}^RuwCvwpkzY@yZA-ouVpO0w%!ZH>(hp)TwbCjTN+ z?P{oRXbLs1sNdGy+S9s9-5V%5_O>A`SCV#|mphvqLsc}PB=s#VwYnwe*Zms>Ik(h3oiMfz8IbOE4!v4kq-b{OKM8+(OCTOq{&*ca9Pkg zx2L|d`x1VT_XBdQO5EN^Q*12`e|`ExZ(g`1w$}Z#!(K(MRQjqP;A4dKI0H0y+g4%4 zXki_eeq5knujI)=1oA4OzT=@nq_iVrfV!*9>1@8T5Mlc(7d{8t*O$e#RGlCDhvw=G zHCDE_cHqQ`sfBt(5@GqQB*NLwo17KthflMuw$RpSY%f`YgU8&}3GNBQu+c8-+zQcY z6bjL^lGJ!id|`I3NW!F8UZSlPnr`i`xX!bCA>yLzVjct-t)}p+x7`(CQ<88Eb4||7 z^(Fz{Voc_-o$0^dnKsOog97eSi?~^5rO!`0BaQFTlcp$~EKimq-UtxZb35^PEV%$; zf^4Pq?s8ejccLf@{&6SXeERHoS|w2SkAQMgCKd3$E*BLozzU_bNl2WTMwqR1kE<%T zHJzASS}CItc?B6*1)b}9ac4L~Rh{Li5#_VBO_e=Nw-k%Ybu<1|kic~R654FC*K(&u z*eRu!J2}EmMXrr4EW(h;aaE)?$`P8HUX@##j-i1Oa~KC$Kj(3RhP5C!0vcx4ow>OX z2Jdp=01VJDvpOs397sI;mw3O0O%!O@6A;|Y?4ZkKdHJkJfrdSZL?5CZH0-~?yZjn7 z>?bOHJGQ??1ZdcC5Cab`eo}Ta z@yLKwlv0ByYDsvSnC}BT)p{^j;%RlhA5dSHgBec73q7}wUO6`QHYw*?hTJ6Iekti% zPS*0?g?bde*msa%J%7euZw>0n1Byz@93;Mu$9W20Y^h<0FV+O652}JM#?RwkftaVD zs(ke1VH@%^zSy{Ew!*L)U+hA#0V>Z^?Y}gd-5t%|8qMAdRy9!Li~ShvFW4%LFZLU- zC5U+ol;!XaXne8fkyFmx3YA-kp6MdHkgVlBhz^Ou7yCH`tV`jGy=EBVi{(LjFLO>` zo3a3uA3aw1VvR`riOd;I0HKoN#1~rvCIt;u_+sA#!@d-Ju^C7P(3k!hs$Il1u(6xL zau)?(jB6on?Cxmx7O<+x8ei-l!)ko7M-40ZVqBm3JoXFtVlROJUyNTD&Ze6V@Wl>; zoX4cc^GlFnYq7C%9>nH2QfR8B{#2e3l0M?ONmjU+gRhhPy@tK}MX5jpgAu_0#i;7!-mpb{CR2K&0`-o&@(@ za_azRmj5?!kC0pMo|vBhcW}QV_fhx6Y|DQulHY>}_+sBe@*yOFFZL4<;EO#7$urEH z>u1~ljHKX;@y`u>F_un3#G(BI$S79-DKI1Ug_wZAs3#us~rIgB_&$o->XHNM#Eh827<4zE!--vD3iG>}#% zGt+uN1Ye97AmEEFg2bDGlas<1s|BYzXN;2A@Wo8$Xne7cL+?ze2)>wt{%Qc9mp7Uu zJ1;Z84OE?XvtTg4({S1DiJtr|hQqk@Yc01h~^F6RXK>R)8C3p!6tg@e@x>JrK zP5JYnl#ktk3qJ*9#`W5nD{YK5=99vig2XEGqFjM1HAfK_?H9N_0mXTBUNZAe`LvY1 z0aVpv1Y}Sqors!aiZH!nOUgi*0j#nslr6FBR$7mU)?;BUFG0luFr-3wj@|kU#2YcU zah>hr$=)@d`MWUF>_IbJ<1u=zPlCIIoHfCeGZS%FJKgU3Sbn|2Dr3pr)CE>qxZEUO zY|AP%h0Mgz z)xHjeH?pwb#eV6hu!s0P{(po1r`a5j=iiY`{VdZ-JV^e%*gOF?Z_H?t^t=&~e+15) zwtqx^)IVYr{t@tDty#F7yM&S|;y|cC8R5tXCq@AVhkBRF&OrYuIVx6b5vjw#vZRYk z%CnMY{j`d(Z?C+uf5#)$-8r8->y0NrR{DL{9VKHMFWp;w#VJ*vy#2G+mHp(ex1?V8 z)p19!<$LW%5T8PP5%F!rbTpy>aXR7xM9x>&A+{jyKvd%jdc3D$PzM$C9ySo+N;C*+ z)OoDuITqAmL~#`~&z`reM@RnQ>gk}IS5urR7BwM=JChW8pj>y5yfjc>*b%B-O8?~U5+2V2ZsxbLg%6#E;r}e0m9JH2WTuJ z&nS}+ryx#4u$er?(4g@7Gyru z({RzFMNP+sZ+G9k`L6GKj;;La!z2HgGJfre2QGYJ*cY$Z@gFNsqz67y{>J37kKMR? z&iY+Hy>7v`fBtIkdCye8KzthqCkw}70^%G*f+&9ku??{gk-o{_M0^nOal}6$y3n~}5Q`8OBGw{qM!W>^ z8pOSbcO(7~k(0m|5#K?~!IgG0A}3?#Abu3_V#HmDUqHMA@d3och|eItj+l*!#YDup zh*gN|5Ze(yiO6{g#}+3lxKU={WSAn(j77w`4Mm(0hywv<)f91}JqZ+nb0Ug(DikeF zDJkMSRYaU(p{$ywLBz?I)WZ8WD)Tl`M4S^*#Je~t&j}GloF|Eh^9_o4VGt2#h7@s{ zD7FrRXT>ieB9{|sQRWPmIh-s)#JR1M;k1Khcrzu+oSRX^DVvCRqd^hpUn2T1uoU$n ziimSXia33o1d71>GKzR3AT@GgM-gXvBI12CMK&-tPB1CrY*Vy&+fNZEl~N;TS`=~G zC0d+nQN+2Ihg z5L=v*qO5^B|v$fSgZ*NRBy0(-edKG#(Gu&f+u;ZANpWgPFb+YB6hz3TAGW zDBnz_%5i|Mb{$AMwUK8Twe*ydKwodR*Foc^I0m?GaYKh+}Mc!LR-rLMv z9;$D|+N;5?uxeiQLA}kh<9XF--=Pm1crea;uSoxKFh_Mf!aFAU9Pem=z~0Np<=DCv*Y2}%3(jje zX!-S^=YZ!mAGG{x(6w+M>;r`xeh{xgNz1o^)?mWkt?7E+yRSfglcwdopQjzpEoi3} zly<5?F^>o?*R;F>ly(+qy1o=Nh#%)Hpyks+S*{Q?6QW6)mZyWV-9AmrU&O@YLg*a< z{Rrq`P?mcb6ceW4K~2l~JOXp5-~mk)W*{as3NsM2{7%Tz!SBuTRtRU7*z40h$W=HciW0KvlnJTHXjsy>+0tr4J%aT3!q41J4;XX!&AL_DhAP z>q|i|K)LClm`()?H7%b6iiuS)plNwNDDKOHyiW&Jn1vJ2brs;(fEI%iLoXmajs>Ts z=vtjm3i}Fc@HEge@aKcF9NMU`2G0WxfFBLY^2|q@>8GmftQ1-W%5qad+1@Fj0no{y zY$w{T%1;DkdE}|`c&3nf7{|2|^dRV&p!-4Rg6;#I2HFR@2(%Y;At=XV1!xE8S)d$u z<)GD|3qY5HV!SA9!!tmO!OsUR1jYDN7>C$bg>eXX;Y=UoIKG)D&@Ref2Av0b92Cbh z^9U&VSYaOmCPiT%;uvKfgdFqx%mbjaLHC1}fbIjuGnCA|ptC^tfO5ZggJyyDfugT6 zdqLSh+dwlwJ3wcGHi5FgHh|)OM`0lrfmVaZm{9%6egRA0;Y@yc1G|uXx=@eMxBXiF zfY9#<4GLW>)GyQ}^v6D3?m?kACTvFxcH&;hS#Ph<4MHn~284nrJue0u^Ff@Zg*gkC#hoba<{v>*6nU;al89mS0n3s*B)&5x$eYPV=W$V-H$X8 z7gOAY(^K4Q*QL0(?SQ`fYPZ{ct9u`|``!1rJxTYw54s-)cgTGh+avC$us!a65jn59 zPq^O(w=1bH$?e{qbUn6vlWxWN!Yapp+p!rR=byxlXMJcqLnZTVJU<;p{(i|{C;UO- z`RvDTkI#yTRmjI33}=z|SeC((xf_3S<`+u-1GI49^uyw8wsB z;5~UJPB0s!zpkP^8?Uf5!8b|%V{AY8D}`@lec-Pb{w-<$6Jnq5_n7}>$^VP&&r!+m zCXf8DOa9Yn6Wf1S+Mgr(&x!tb*?#DMU-au_fBq)@PC-0%wy33t{W(0#y_sj7T;WLko`lp z;@NJ7N}P+bkk9iF13wT*-i%+)zi7{g$nZ7hqfYaGJ3`*pzURo>+W#QRvrZFsAm7ga z&XJF6VpM(>`p&NZwxj$kM?N2a+VzQzYv+jtYUc$@(}BAfGhMekb{d4Zg_XgDH8pjU z>YU)4aX}DcP3m>+f@V3XPC@wvt7>ZN5;?yO3aisuPn<$Tw_CNiCUHG_2h8pzY)%*} zFWeIeRb?-=$tW1kMD0z0+8LuBzpdgBl(>aPK_N7ChPvyU+Xgul!i#c^tAVa$pb=zS zSle$w-LN99Uaj4gt-6cQv$kE2=hXP2;C=qn0eIRvNjZsOb-4JE^t*;yuOaVeIk+sc z?neU)%po8j6up0YYL&WUo%wp)Teo(co&Y_vBvHn!*bEI%dAhP!7GqE6mc(WV zOl3GDE>vilvN|u3)p;sAAy{d`3|%gaQtE)|EYSd^aCsIO&$vxf*>yc_gcxkBYuKbA zAnS?@x~UTaR61ggZgL`YQw4jfP(HO{scC}~p>=jR$JzQ)T|+oOe(U?s);4A*tUR0( zu3UC+wyr!;{;Wh9vn_qzY3FEFfjIxDoWp!0?T^Lj~rYFKV;l}8(RiX_< z;8^4L#6X~|s`gk^R$a&J*bM23S-K|@4KXFP(|bd({5&DmK6^V_9*Tltbo=T1>%$Wrj|r+Ul%-B z^QO}9oKiAkdaA-;@nD}d6Ew_|F@3X6EL7jq-~+o}ZAotj!f!QpYH0-FS==YsgNVbT zf$&?o4ufHX+TtDn^Il9pt%H?#P$4oq83@01kJyu20c(%gdl~jj7ew1rvz3JSt$W2@ zwG`Sb_D;Z_sUwcPg!rv5JKFcM*ehEcZXYC(V8aWIi{E-e?3tZA5mh?&1+v)dN`&8f zLhh-`qzNZ*U&P~4f%b9SAv>xDv6m3P)jSh0g@}La93zpv4dcru#BZ&TLBanILj~;F zgVVOOuOShB>jts+vJ8$5u*dz~hW$O&ZdlT`;}I9XwOR(nR?)A1uEbw_a6v*Dvc5yv;`co=);S>#~tan!J0r@d3B z>eke1Vx5W?0gjNkeR1$xKQ8vnVfgqU?Ipr*y+!O9{MK6rX)h6e>k@e;W!kp{FHju8 zvA+#)Qmt?3#_W7+b6X?M2RO4uLWkHpDk9tksq@QP{DpYFM{wBdAHTI4FG?7`CWWi< z;)h{3?8!MI${vT8{zK~mEKYt8^m{?6%)dzfGWE{P+7^T@{HHm*s}UJ0C2~52Y`zmb z>A-F%L}YzK_^m_ut?w1T_4$eSx4wS93s|PWZ@o0>_P;-Lau}{%?=yz0JA3+AAFx@i zXRTE(MB=a}ow9EwhQGpubpbDxa<}AJ$TRr{vo#@(>qEqGt;D`B0*>p#+n=BKaLc>F za{WhRz77@}R@H06bj9f=f*kg^U_otG zJ8Dp070BqOX45koQPkEUS`fyOjSn#zDR0?|0&moqO@t*IXJge(;<$CmRI#`h99w{i@% z_hRmSFB?D&o_=cK{O!Hw>-lK>N@$iOTv8eq_Sx#2d&^r$#lkD%VsuZws|7QoXi1vtiJPAk>z_|yjA zbQhZPK&QpJ2>BR+0LoUjn=g7q)bt*x9TP1xsoYrKaM9*YK-KDdHcV(?Q+*NxsK5lt zbto(&F27T_h#$P4!lD*OInI^jAYj!RMMopx<38_}XRy*?tJPq_+7p{+;r1 zhIo*q_E~qNkm)~Lt`Q}ir$^lVtO+v~tL0~_f{W`GSJhN6tgT$mm1DK5_)@v1ym-Qg zjwu;wZNxe8gK5+dOliL;t}_!mln%j^8vna^@VEVRoB~U=jq}KQF6Y!PK1^wh7M>F< z4L?NCSfMuF1{NBxWR2}{gn}8h3kE0~sm1YdLK#Y!JAhSN1LB!YoZY|O@UueuI=h%2 z*%a=`{?Spx;HI5}hDi;d`XjH%%H)>0A4JsYVU=^ui>;=J=tW89$>Xy)h^UQ{MejR? z{t;1));)vL9>PXNhYla^nwk#JH!mPt0YaARGLWqKc2rjYLgc!h)xfN9cZ-0-!nbZL zpj$8Bk=eT=^NJmKk6+-ki0PUSYp0BLMP-c@Ug?dKa*7GWLnT$1q~kSwDKSdngA%Kz zlz{(21XQgw$%_WD34_2!jkOm6LoLTsS^W@6y9Q;4mz=bq-y&eBX35cwM7C$SpIfT8{wY0Bw(Q~puteT!17fJ&yywpPF;YZhRaQw0;#Kt*LiD#DQc$i8VvPOny4Pg zM71_yiki8-tNk|gL`DWooS)bP@l{$p3#US^4XVParlLo}{d_el{0~%^pBe#AjoaDQ zR8z>zLS5}YM&V~z*oM3szpzGLeFge?><*9TZ%C%*Go8c{;m<&aTmTlxt0Y8T4gdWV z@@n|+r;t}K#!jg}V>I$AoMVaXV4Ni|v`_*32Z+vzq@t8@vP~JT?TRwZx5cok07%KB zRSMdH$g7ifyfFQezy7V{6aH&+cDMg#!S8lVx$5X=?|32gnJ52x=QmE@^37>~{QhM- zFU;;NzI5%OoW^ghKHBy3Ew@;$kHf~Zh_4}fP%+2(B*aq0#fY_tjfmZdyAZEOycO{t z#Lsf*qTE3?3V}z7d=ndnuvGX@@NbOpchNTps5~&#zfJVjI0kR@)wlp}?5V#BcvIdW zx|;G|5_^A>`qaN0`lfwq*n&6tS0l~(ixC-qAnj8f3|{@anIZP<(0nWhbrqQAF=S|T z|DP+TgA%Ne|9Vw7%CpVfFV@ZdF>SWnWO=7e9%rM&1>G|d&BAbwjgvub#i&&)tLcb9 z8^aN4lO786(jj6iP+%0GAy>OjL7awIgm|*3t?Y;Q8@cuUL~VT&$B!RKC_)@UZN&gU zc%M;QDSq%W57(RF)*MD-MUQNc_j6Xo-2&5$VHOz9Hk^UBV^ z^>zp`^_xjnqWoLXIYYRvaD<+Dl5dmZy*iEHlAec;=621jZ^Q?1XPSi}GqGMkFaI}R z&K|;b4K+5`M_$QA`fmu=bxF;K)-Q?QJrj#}89v$E)ZEbZPujdS_;7Ojht@VbesV0X ztMjer5U%S7iR&8E`?0vLrG$0$o#`D-T-Q;8>pIej>za}rbWh5?{7P^7YZ}(oJqfRZ zQuDmo5nNZY!y@c7z`Ry!nAgfM%&Qao)sqkO*Q9+ruOPIm*Yb5mAYLubt??c@$m=<1 zIWY_2dK={RAGCZw=xVqa-U*5sQIL22pyfA#t^fw<9!=Np23>}H&MQF6`#@QaPYYOX zhoG~#6xK0K+UjZ%O0LpUfKyeqWFk(R!7A)Jvc@NuFCVHiyn8hkgSkUr( z@Z6s~P0RU2qZam#f&!aVVZhS(DD^ggdLdt@Y57`E+`|OXCerfdpzIH{nRI;_XbsBoX#{RM zgVQxFF9gLTEI3Ki@&eF&@Q9=e%az!z72vBuSspr>0pYVjF@MFO(D|gWudrNUTVc7L z3(9gUL0R7_&;Tf&4k#>E=KH`0K|!qLLMuU84sBEACV~dQPXJ~6#)Gnc$W(b^xPny} zvBzdUe?K&H@5PT_U02IepVY^c9178Aaf#P^7Y}a9+$I;%IphrQmuL|Q8 z`=l^lDL({x5$HkCEYJg>GeGx)vOo5LW`OP$`5sXA&u&oMS}2TH9P7+p@Z&+Zf#M;N z!g!^;348!_11OrNFkVjstp<;$Gpe82UtkqB?lAJtKwHt`8dt5hRdp`hSQ{2;wQ{3w|q_}tVLUg@*51?8J>56PXx*90gX94EwNqX5$ zFjqI=Tz3J)_3EVENuH!VNjD|!1$S%Go!H)!bO75&k`5=$^r2JHK_>i+e;OOVjy!Y> z4#_g|hz2L-c(Try2ZPpkadKh)T67k}V&;S2Cj7NHS!`gZ|)EIK^fXFl>DDbKF{L}BZR+4cs_Gr{k&c<{FM8H z6VtQ8^Sor|FP8l^{gF%_HuoShe3kWMpZ5yi20O$q^`T7+A7MVC!J&DF{R0~(ME?NW zW8=Ri{b!EH6xd;V_+=Z0C9EHjUxZ{(*smD#2KVJg)(3rlF_hsCQeUCyFBE>B@ENoZ zd&`8MF7_LRznu0UyFz#$D6wHHAZNIZ?YHqww1@rQAo({)e;EE}EDw7(i@jv(r{kOs z%J3Q5v+>)g4}PuWb3e#;3BQWvVb9<_{E6*HJ~4qAwvtC=zcM_J$oB1%_N7byeUg7W z_ZQ`FlJfj&63ag#`Cj4wukhairT)#LudrL8|DxpIBlQ_9(rw&79G|D;_;Boy|AX*z zxIf_iGCqF6_JJQRe4p4m3ONHm(M#;uLsI`_@;Hkc+?gM+y*Q!sog>2~K9Tl){8JbvM@3;A~b_l|t#+4D!DU+uid!JqEn*Q5XJ`j0v4OLp)AxC!*P zFo5Wwpj2Zf-FBzexM-ZQCAuO@Wg`fwu@J1zf)U-Sl{K{sS5_{mTeEO=)xt%=B@sN; zK@=k5ogIQTrbq%cd=_qG$2YNv7C#bJ)Ky^rn(K@gDbx zJ+r^Z#aS zh4S&R&N)URdpj^*>k%2Scvh-HA?(?M)3&rPJZNH$huAwPgQEiW*riuve<#@uOWJlk z;^MXLmqE)FS}K@^3Y(~XiSSwvi#;>e0Up`(4$ z%rF@Uuk}fXy=ep5>mRT6*N*)?HP)VEe>Hw&BD~h8jXgO}mBiYMIwS+(wZ0(b`P_qH zen1iXCa%3ic&#_*>7q$e>ZL*2ON7_@6|8t+_^n*4{xU)H_h7t87sPE}BD~g*2XuL} z{n>Pr3R8!@{_$Fky;>Q7gSD3kul2F(I_n$4Yc&g&EH3;|h%BZ<`{^gO0>iEs0ORP-RUM(W zWq1z9cW+jl{1y1hPYbeCew^bGS$#z%ghcIGx-!(gwY~Eqt)=w>U>xniEq_mEbNBXy zc5Dk@l&M7ZK`*Lpub=+_@Je04Y6V{Fl_!VQitp3igX=voLMz@F?&`gF!^e6~kk12; z_U~R~S=Sy*%DV#%QrN0KrBir-di~|o260$PEmy_g4eqLu6T8*O3{8m1dL=Pg7hxY4 z0+aQjeRe!ntEup9t779=+GX3EIH^fZO=^GG7VJZw(R=shn%<7CU-LX*H{QVTRUTn@R5|ocq|488}$zmaGi)!OZ(Q2 zfCAD9G~teNadTI9eOp5)qM+;28eJ{z9mv|!-rN{y#fPj4rv)yJG^RArKvY!&Hae@Q zc-k3~tBW@xE2h0g+XJTtl;OZ>jwXb66P6=IOBNT#?9cRAyVC-IcSWhfhQN$KBkE9% zn--WEC`8KwGaAu22S#ec8G*|zdoNh3T^80tsZOzK8>g?FzNRkB>uix~hKDO0oOq)R zX2L2O&V1Y^M+IlTTz;c;-Vf$o;FX$zqtQw^PBcy_A)4lIYVVZC;PVA!YQCk=MjbtA zSo6$Wb*W(@-Ch@`tNZPS1IWD}@gU+MMDyw*@(cw+gv${NC6a%)f!F#E>R82VV*o-= zybO`?`te@!dGChvUBY1UIR|201BG5F@E9E)NO6GtFdk@0X+`n;vPOJ?3z12y*=mee z_pM4xx@+6DC7>dTF{`=JQjbKi2{i!kk8|$`s$M0&w$TzI zFyJD5Lgpeo|7`B6$97Xo{pK!Q3A&N)48iMQ3()=Q>X!DjHB{r%HI*xBhoCx#pgJ!J zS@kU~dQ^6uU*Fap0mWQg-(7F@bYal09D?c`g6jORpgPUG)p5UIX0H8DV{LcbL!g@> z-Z{i~XBz_D90J{J3>D$Y{LIRBervhAYv$r`msGdZcjGp*wQFW`byIs=XjM&7hlp%i zC+Q}c7<4l-J(D#@>UK7=q{o(zg+Jk&V+C;;=4?xVqV;Rk{j&zv)VI=cEt}JheMykr z5Q`2HkkZ^6$%AgZWv(_NC*=(?15hI?R02p8LLoA@aIZx~k_r=(<&mc$Zfkc%I8zeS zCC{udkEb()BZPPQRQ_J(TS}$<2r1UGro&$ij^J!as3z@Pf9T3mt-=IW9!cFpc6b96R`DVRA8H(u@>6` z%YPcOFGVtWTpAZ;r+6}5*Mc6-&&p2zB8y@dm*P=QQZn99jRaOCm+C8K46q{41Ea7a zf$L?teIdgF*b8i@sJiBZP4W>!hb3KSkhQ$GqMieJ#o5WFd$W(loe%cYZxjlC1BYT)Ur?EPSW!B%na+`gZIEkVp%pxE#ZoT=ESkYmG& z9D|`n=%uW9wz?z$T%N~ zKan}3DWw?C@>KB!C|(981r7C=qc6V#hJEQjO|>h4WB?uLpP|?#(d>m_xr_dpD)*vj z_R47Xb6{1Svy}4J4NIUODujJV|ZqTPy zI^W7m+l3sj$8#10!(AhSAS2Gj#`18S`qv@(C1|8HjLc8DApce*Z-6M}Bd9F@5pdrn zx6VD$m;VAd!o;MkcTY^u=bETrk^887Vz%YK70EjwO3_%6-$gQYY#R64>+?T|%qN&R z*Uz>;jbz$b|4V2D|J*4-Rr+-*lzaXFg;6egV`S${z?SC}?)Yipw9oSApubl@kdZ%{ zq#z?ZzYg>=h%@-#&F?TA{<@z0OAMFG{pdAZ9{1xDh8vFk$fqZlvNFOwF)#ln!vTaW z-|`30Sh|9xXLznbOPc2!ea9@raZY)}F`RTazBt)67rX2(E_*A=+VI@7+ zL(emBA=19=uI%J_;9$Y>(y_{yogHcESrG8toSnla(4XkfkmP>F--0C9@a1grZv`2~ zxWuyqB=r<*T%N12_3p%`aJbFhCn4Z24IhR7>gT}l5<{%W+e~^)Q`YxPx}eGT1El%a z9Inr;KQ%0l5dKe3FozL`2<-0+i(>@#dBfr$@nXc`MVG1cEdOaB8<@;YYXb3j{QJ=m zUVywQo<)#&-^9i@qAokR773KMyvj3hL}qN~jL2r^d>neSa7G(B(Zh@6m@AR~G~!)| zOL090z9Y}9r`(A&<=+9NeC%>8X`q12xS*X`Wn-){=Lu&D65sJ&SS)a*{!kGG&R5{_ zJgzve&P!(ADHlrF5U8rh2*|)f`gk;8%$uU+!2%3s0N-&gFYjDu+3+2of#7}^ca2AFw%Ox(6v@=TFrCDH zvkVp;x?io7L5>P+sKLO)DO>Tn|eEy?Hf%x<4^ zH@m%?rM%Jq1j;hM7?HvBDP@dMS3&daMa$aw((@Nh2jxT&CqdOVwx2fHZnJN8TP)|a z#r`)sT+qi=CwWvvz^M`SCv%>NH<3KTx;@V0Nt>C7w8g-MvZOhnw8=EzwvI-mS8xDv z0^(G}QxRXD`Bdif7jOS+QPZ*E7tVcs*V=y@d-oqx#;;xZ)rUuxcf30H=dbpjH?8wG zkB#pLJpI6qId2vB_N5(vx$4XRvGPQE`Il>_Z+G9knb?0N+b&T3lAXTgo)ZsT_`(|< zpZ|DI!$ps-KVCCz^4Q02T;Tci=UTG1guh?_P|HV-_)r_@kYdZ5PyXDYs5bxvQu*rry$Z}GKg4**opXWh`inTKZu-! zJc{@%;@=Qcak)4Jk<-XZ#5IV#tnWbl4B{<_-$CRmXilTvMx^)Y1jIRr%Mm%N;~4rj z>`eki;EfMOysYw2A@E8>5vSQA;#~qoycx-*4z9MaM-eZ0qQ&bCMVv*8i1QroG^Z30 zaRwyi_d!Z!-q4ANGXRP>9T3s0U|F8mLzv=ZUMzFkMrF?XM05-+MYki$?r|DP5hrjW z;yjKbUVo*ax+jFF4^c$CholxSp3)XhoG9WfN<^ISQN-z=h}0ArBHjatE&fHRRf3IZ z@#s?YEfkyt%7DG5h|?M=$SF2OoNr4(PHiaSj7PM1=SWci8xir|g(6OtrC_EU98Mra z#K|qSI9Zm0oc>e9S&@i1DW-^XWf5`QQN%f?h&U0Wh_{X+;+%ydPGF=)&cG<*bWB8? z0#U^KLn+8P5Jj98N$2pkSc$L^5og{MaXK#rIWLD|9CS#|QJKSeE|fWYmHK%bK{LF& z5HrV+q=<9YNuUVo;s?sffoO4dN-a)T#TF;H6!C&ATISSBF@yc|n}S2mQ=`raZ+R6% zqhKpKP|i@M33n$dn5jmh{6=X*wk{P@-b@n`K8l&$&cHZZmMvT7KN!;1E+~Q)p4VwzwH1JvtTHXW-cPoXN z2dXghR^TRX9psp5gfa7i;Fn|8xLniq6`+fd&o_6V<$SS0yPQMNZXqb`@GhEm0-Bcd z&YE_zHC^umU5I>-rsXFr-5$y7kG z(F=gGUE@HhKNghwfGAS>$jdx{<5mW`4|FytvGuU83R`aiXa{&=={14Q1>FEj4866W z=o^KlHw&~3JhAd*94Rb4%JU(|J}68*j0c6KR|I+j?U)JrGANE`=21|}kAThqJq)@K z^dM*!=mAhXDNq=Cr-AMRkDbWeEAl;{)4=Zr%>eBKEd=ca<^FF2#q$e=p+|WWc=pEz zP|URzhTc@rYVeam^Fg`)AgVw6FbJ_L$-P3)5z4PPQ0@`>womg92>p)G%Y^m_#WCXX zj={+5g`D;_2(1tr5DKF5-{349dM@|%3ivKB-|Y@e@+4I(UhZ~R*Sg(JEpB(8>uLhv zx%OatlWQ-wce?fiAFptFihJ$46!*3rZue`h6Oiw6_W=xVw}9pCb>9j|ygLD!ry=t^ zNr&8zxDQ7`=bQ>9d-=7Pmy=yP8yA4pwF(Izm%OVdCd2dN8jzmpNZi$lqDuy z8RQIKgMc;)#JNW~`|AqCT{@1j5>pa>+{z1v- z6Bp*2dnrCCA#d)TJ}{kZfnNokW>~9|RaU$kZBZl>C z4{W-`{x_Kq{X)s-a}@G(guhGd@jV^Go8<9FGrsey**+V82lKIiFN;2}BX<4;)(`vZ zB!4CK@rO3P?h9zo#`9SW`2)~nSS;o1rTm{jng5XF^GzA;bDS{nyukX)P>z950hrG> zaSZGymj8*AKgRYTzgP0F75*CG=a7d!-wZMQx3uRAl3xWG>pLLzP3Ha}rXVu3P#@`R z;qmQG#Rr7va}4J5=^?{JMB1y6`ktXa&RWKo{}beK0yVz)<>a&V|B~gOqdi=Rj4%AB z$zu>3U)|fFlLgymeBO_7G!EnCuIOgEjIC$#X_4!2B&hsg)oqx{3k3n1Q`9+TWt;n?J$3b9o zV%Q1r+9ZCby}B+~RZ|;=K#NR12L&wGuR3vW?2vLc<@f+?F$%B{2I4br1~w(xkILY} znwq*OM7UU`h^a)1@!MoD;S`)(#K^kt(2 zFXX_78=xuTP*>N|vZb}Cp|!E4xh-UAF4Vd))YuqmENX3U>}i2iTMo5$bZ@U~sBdVZ zsIGD;mSoaNvRmWRRT2qgb!bzlGX!T+8M=;Lvvq~dwNH7Gw03Q-3AHs^!MeJhHX_C} z)-`MbI0n}F*FmWEre;ZSNoDP-)pe_vEM2mC2>=pn!g&rvW67%3_M? z+*#p_cpY3+rV7tf+k}W~2{UxLxu$BzVJa$dVzGsfgX|JZ#*T<0U2IN5vvYKF!wO-u zvdhdU!tg56ilqq+IdRy+hNOMrl5zV^m!55`hYRagl+4zxOq4$>QO0ZmgOoo_4MCeU z#9B#ARf2`~k3?W|?#4;uthH2DR~6U2XH>ORgp;c z9~|_Om=MNQgCi`16Ibo1l7@G~dKva)I;C>dO{(aS$jKl6gY`=4#Gx`17T)VJWMlrw z>DURhFJAYEy{<$!W7RSNGG#Z2y)rx?kSxsTBEg1h6&GiW&lVUsw`FL8J$qnZ+Jk9d zBAl^avB!IQhTYP>3bc>=jp=8+_BHV8$Obx(#~!hlr>yB!IFeK(LHiQog6$W3`^CsX zY2RA357W<>VC%oQxL_Nk0p@sg;C{p&616W8E?ASp-Zt1{zx5?NzWw8Zb%;ILZL8PO zK6_i49tanV_XrHe-sJ<@Q`47bV$%}a%K883bnNdHvGyF}rGH$oOT^waGLHW})}CnS z{TK)rECu&N3@w^iBe|?5I>fb?2p6nN?A*<<(WKeR4T zB>X|>2au*RuN_ChbBeG555x(6#A!k`A_IpwBgc0D(VTmc9CVlgP1SfzFCJC&|S_a=>1SXe$_VePw8r(H zf&cXbh5e;E0h?Ry`QDkIsVO~c#qe~#PO+{Ual@InEE#duFSk7pMBn!>C?`_f;#bkV zwF`)D3PY)qs9G!P@%Urg{Qm2Xa}T2mT#jv_#QrVxpUZQVoaf>y_Ck74BFMWA2FEAX z0GFPG0>R*#6@WkM>;j@lU|!K|;CU5dQr)(B#=K%MMYCs3vj(?tEc|^_`)yzAK!wAQ zEUVkQ>j`VJqP;O>U1Yj{WxJ6_WJ(eWhBkFOWvc<^W)m)LY3^7P>g;ZA0ES@LB&EyS zJDV?QZ?lWFRb?T5IfsInAUt8%v{so_R&1@TIgcZ6Gk{)N+5t1ygE6?dEz}4X=WYRG zS*j3QF4D*>im6*u-vacPDADrzu0^3x+v@h7Hat3v&Z}<6z;50Ws%qQB;l4dOcV%cZ zIy6yk70jtp=xlovssJz39BM>MdP1sEE9$#0vU#0H+Ewemn|hIp4Hgig9ckoA@%9Yr56BxLv0DNgrdncaox;-j z&|8)m(Z@C)4Cr^eayQnp$*RLUaSQMC^z5!H)S}K3;ky%g3WQrD^Ux-oWfHvmVgN!; znNC?1LLoXJ$s-Ywq{1XI*p0_kmD`%0l$n+`KkW=WIZ7(Dk}?bMB-k^;s>;>w0l#xWIEeAxbHLY8l>W`Ep&xlFIP+Vx7(Lotag+H2%k(c+i)c0ZW=M zOD#d+G=~mE=~=Lc^^&dUj_zTbave$9cnD zQ&D`lSD71;>oPkz(%uL>L{r7sa)2d7b^)ub#-at6@5t=kk$J@qyv_m?2X`bNjVl<7 zUA1MMBD~TYE9De3E*=EUv7KmGz-tk!rYg4-jCDF5OY;#Mx>4OFN6=_CL*~+1NSVXz zZlm}r>bp~tZUVKE_EVJfFt+ZbCn-q!Gq#?jWLWejO~p1j>1=FMEYEgitVhz7;pHOQ z6rcOskhm^E+T#f(eS%p@{Ish(={uAq{Q_HG(qFL6PV%EQ1(xRll$efW(m3xNkQ7g{ zYZ2(dQJ(CSUm=fx0KPSp)<@Rz@deF++~Vw%GmxMqezDaL{aj$e_;Zlpr;c-h3FDt=7+}JrE&+1} zRC5(3Oe!H_xE?N7!HcB6gd{7?RhTfT^!u~1GYqRRVN#cY{Tr1PCQK?l0&Ofk(QNFs z(d^g2ss<`dm{fjdnakjE6(&q7(YpPJxe5~|HM|1~6DIWu1+L?Krdk$m@sJzk=RS-j3z&q z7pmgGgz*zMKBk$ie@LP17vy5Mf!`7d55R3K{Dej zNV`0nk^CW2DHYzIfVf@hU65pYv2kT*T?tZxm`)6s>^az2!)W)5NTD|^WhwnOa5=8P zunnNU*Ez#Bfj+0wzG0o=bo#K%kS4$mP*8@w2+H-HL_Nv%vhTf~^jARgT*Kc18SX)* zmCix!q2umVka-$Lfaw!rH@jfJpD%K=DXei zlRYdQX`VLFmSMxgX`ki!FEH~E)AL7>6r^X5tO6~@F-s?a%*YE3M*x|TjfNwD%t$VI zRhk5l8Oa5%iX(u`NbaBFfK8G&@)L$r05Tq)uWBGl%Sf+4O};N7?MojW`4ij)0f%2Y zpgH{Xf#oPp2Y`(KI1-1L0{|KS-@tIBr4vBL!*NH)BKa1Q*-O&7x;rBU8&~>#Y<ti6F%RW4pbmBp7Wr08dOG3Oy>#F69OLupF0u# zVObTqr;NM+lqcj|97Stnli|j3)U_Bc;GP&5NuV;NIo>_7*z(+kLhB*Q%^O9Motvp_ zsndRzv8A|dj&<5n9R3GBWlM4B=5%ZHZOGh@NCcNAT>i&+lV5@Pf}bHxIbmEVKjmYX z+)zMfY@40A*v43+w+d$p!lJ(r<;HkZ=P2T${V`rorQ*CgFPV7-JEZJYpsF4tAcHdL zyP-9@0COa^WC|!V#&|Qh7h}9)*{!th6Rm?`E$>gD1&W&5LJaJCPYRdk_pjJzV@j%FJ8HF!l#I;LZlUiYyxx@ zBCi+(6r!IHS%qjPL`fkM3z1TM==(8Awj*AFNFcm#A#yx(>~Ne5LIbBE6md?%!;8QxIz^lkh!&?h z6mbe9BA)pu;sjAdJYQ186R6nYC7mK(;6-Ex@WT*`h;tEYaf%|gICG$gGZ7K-9)KcV zkwwJwKSjJ4h%HW1DdI#&M0>>+rz=vBHxkt1y~QL%1YTY#;x$;bc*{Z&rz4`pYY0U= zzls(w92D^?A~kaQMG+@HQjiluia19U5ih6|@#-oCIZL95lP59H=@dnrVM#$=t103o zT(o$VKn>~|0uiqtVv-XUDs%QCB92drc=0yn!BfPGr-(RBqsd-G*x)QlayW~nGS8(V z;w*;BoC!h1`HfV@*#wn2$q;2;9;wXEgoqbTQRZzNm3dz$B2H{5;w(o*FQYPwI6V-P zoE1^TiP9ucgsTu)3(t7Sc~Bl1dLPIcBXQ&S5MO-_ z^FwQ!eY{6-Ow^)_%GG$ija3C2O2e$_P~QdE)(s&}{&i;k2UuJ`^m-Aban?5awrBpp zLcx{6Ea=c?c?Q)fQ$W8QhYY%Pc<(p2w2rmmT0)Mi88o-KMg29w;96h`+uq)53zf?j z)pv0haLKM*wk*`%8tU%cu6cQn4+ite$~BAB3IlMswX0mCeE*_F)y>;NEp}13R_#Hk zn!GHCZ!&Gh`bQX2d#kl*tdh~zOt!sK zRW+8!Yw>Zj4kHxMNvgYWq&FXECaKBp#W~*eWM3sgP22?vjN~9xr{J=GC+JkrTR|s* z?g2%ID$EYh@^#>GXcguLsKUlTMZqBCpykV@+yYP>qag1YLCdFuPKG_$WIqH0nkuXf zbg;tO09EBNZ%~*S6G1uK84p?rIsugBaCj632J>+oEyyxKEMjz!V(qTV$LkE0522D{ zmZ7jDFbT=*g&yt$GdF-@cq+^YVsTW1rylPunGd4uy@-l1|44pTDBD9mAQVLL1?VKo zUGCsow_77QxZPz7-0ont8$b;j!ojkRqOvd*^nO2Jj6ctBSf7ob z%zRt@heV%mOBmJ(f06Lx$fK`}|IH!Vv+<*tkMdwlopm~&7Z z6Xt{zs~dKduUc7CyAZC!b@XDi`?T9mVq#gl2}k_HV>MtS#;e_~mDsI4j#k82lwZ4D z)A)FI<4e5a1KNpK)3~IF@Ak=iax3?xi1+n?j@Du4Pvux@+)Yo$quRDZ^4eWHHESPb zZjIA0(+&sSe%)-T|E`>7Rl%_DY}`7;f!5N#s{^^bD#zYpQ3hqhcqy^quR42fAQEPk z&MTQSd)DbCC4s=4Vr&8>#mt>mTs*fFj;gat%Zi=;s%msswP9giw_d+k)K1eX#PeI- zjsLwB(D|c44&c0$CnjKY7vXl`KWz zm#4k`Md_?sY~4;HHWc;woZlEs*9OF1E$m5_R*UILcdxy*sv?c-ETka*+YW%g%7gx_y(lFelc=b+IJ_~hiOMlu=Sr>I_wQ> zduqHS^s9Z^vA>^gSE#|!)7>-N1^mT?+Y1@OxD!4b?mRr?>CNLZKK$mBnI-P*evN} zTzmTYU2OaM#NJ1w^UDTlFOgsEGxFNjwC}pp25Mjbezm@UE-%D70DC;Yq{EL@hNNSE z`}eCY6ho6ZsX#a)?aNDGkB3YDp>=^G;R~QoIVwf{)J+M`+H!alXfQ>-^IK9%n*#@g;hcnNqEey$jH z%D47zd<^7deOVPw4LrFlKjw;*RJMkTOd?fx1xBxcO=PA%t&o8)l zmMq3i8eD(W14wZpIwP>9y}2>aio4LlX@N@vE$v&Cz0!z1_^$@a4O_CfFviAolNqUd z+8Ke(Ep>Qix>?=fpgh`GT39#>&Ym+O>M&i@xq0I>n+1xtqWER#9v!$c(;l9&Gw)-X zE6C4p?r!2+K>hDom-_hOE8M1%`ifdo3a!AH2OxycP;DkoM)6@d}GLvcGi^>a7xYOcYdt3KvWen37 ztD&b8mb+WFuMRbYnzul-qP-2CC(0)1LkPT?PxcW-1pg*D`OJLGsf+Q&h>utWh<;vX_9=qE0c66iz@NmuH zdRq{2y)~}3#w&NM-Su{y-Ssw*(DfDzfo-n0Tkv>c%$WdfN(_OJ^Zvj=K9A zFiV-`^7xa?`?{oaAn{aV|y#SKpOQ$K<+t~QLDH+4q=8VbMx-$430(ZtrY?Cth zZ4gh!rPz8iZo)P>qwDRDdn^J~X zTlCG$gL`gDm0{qX>$?a{2~_ixd#>+tu+tIql&7c9gQqXwC#&3ZeG{VDO2euS^sNWW zPmAO!_go)8Hg03Di)Ozb&E5}IHBhjfZ?}&g7^gs#r`>bC51~WW`lm&P!($MzE{*p3$&eS zxaVfkJAoc4{xh0VDm+pg?zt(;!O+vu5BFRj6YNXBa?kZ~QTu8rZkMqPq`rf9waLv zN}t}oE{F^q`{}LL(zhO#Hm1av)%01VDjB<^`Han*TTmJjemYg%fX`ki4AIy5h zjQr6g1sU1-?VwX}7&7Q_o8N0VdfevID?;Vb<2Ij;N{XY$ZT{yCM~~b5+YAS1&b<6P z4W~SA{XB7OhbTS6!>`PG>6qio7#$hczk+}xDgz$3Der*cc+7yuZ3-9IeV;k-xJ@|) z367-HUeZ(kGtn#?^@he-3#X-V_OARls)=bax{}Ndp zOlGES1MztL`_T|yD!eHky3lx2adM(JZSwzsQ=KzbNit(QM|sow3t?v=R7OtpaB zHAvSZ?m`^p$KZ1%&w$D){IWaceV~+&9fLUz1!TtY>pWp*f{n4p6bfew!lJ(c77JXd z+!c%^+AnZM;T`P)`2|w8s2Yw0jAydVcL7m+q8<2wkx<}N@CAWlG>ig+p_eNX9M zN`F-Pj?$Nu{;c#BrSB^JOQ*rFl)kR?Tcy7${Z#4qO5alYsM7D1eL(+I;L2%M!-#F3S|3V~-SMVyC;h>f6#Ge_=J1diSm zaa0p6b&f&AiIj+VsbiygRe|V15Gl_IH_LPOEh1h7DB=}CL>vZLomPHY#Tw;q?H;Q=C6D{*a`!M7p z;`EhToG(d1jt3O+8X_XjZz$q?NeXfXND(iLBI3M=B2Je?#2E!eoRWy>9ocsr0Y${i z7PS;M4=951G3FInDj_}#YQ-Q0c^PCuUKyoxxQ3yK%Nh}J@R@AmRi@w$GU)&2WM#%ABK6#A!r? zfEI#cYZbhZgO-IsVX1=a5YRHNbM8-YWF)Z@v_@p$sXBRmC#%zGV;clvOyb@8vVGT4Uk&EQ>U`fM8C z8Tv4A?ZY_>1N+m-a|-IzznwfPYVN%&A5nC)@pbt!%VS5-H zPfA_(37`G`7r`d)H-VaX>-ij)5Z^Rc~G&~Ao5lgDia;+u~(l3WgsjNzpre38$LlE3+6yrWm_9TxSlipb%pTz zq<$MfiA8Ao_geA}`!|wzY<~oJ{Gy@2#WT;D|DY@XfQ$bs>g&{Zf6tgpM`wNl2Tn7@ z!mp5@=S=YBVz=97zp*-r^JX%=nAc^@(X+p9a!1ajx-r9X?wtMg6T7?0D`z@0W-C@n zqrl5XO-Dq#gbwAsM&m^K-uy-f{Q_{J@3tCu(L^4WCXYM#y?wH`Ul$MA&2*OWHdPLr z=IgEER;v3g(KlDceN++c>p81mYvjYT#xc}5gr2lN=)C^lFU3snGWD$ueMmUGL2)DH zt>6CzLy$V{_=oF_bu#{--=|Ur&L59?*XfS`!OeqkS61^BFajCOjL;c*gs4|#8Xt5N+^9>li9Ev5tzpbl5Z7kSs+8^9ME8SW~tX*9o?_B33`OTZ~PIKVw3F&^=PWYo$QB znyr}9{rk|=FPT4R9xH=jDse>WSB?5{Q@9M8ETt#*lKO)diap+gW_WsN^-JmxS}yjE zYjf5ysb2%?hf8?B;OM`E{-C9}ZZk~M#5(FSBHb&wJpR-lYDZ7rWX!roX*7iTN%n zCm9TGf58s1cQMX0hDmXyl_+kP7<>3)k;-)2dxj505T4e=x&dG@u8`1PGJnu}`EUi{ zx6*+P<2CR2PiQZhKj`P=fzL+Hj}g{{6|r8x@q#HYLqdDW{6SxFweR+6+KA)dWzXSn z2_<*`8GHHC-l5v#QNwMz?PZ96= zDKZq#()1$OlU*KXkLvoA)CG!!Z-9OnX)1H9zXp5>=pAMHIT?@TN<;?s1tYE{77tH3 z^pP5Rm;u#7L~d``A9UCs^u79n;(EO&fbXaV?4J7qjg6)IZENn^mp^>qZGPi4iGOIH z_=P?U`u63I$ahV9HuQRHp28WbsPp@+$?V`5{;T+z!egVpNqwkOdzxv%?#;o9OJq;-ZpSC3B~Ti;L#ZnmdQIcz($&IEB7nzN)HO;pT39SFob3hy4J2vx5o~?nYSGu8Fa|S$1dJmHr8Tum)o`WwXTE;$79C# z5_s+Ky%z&REZYOULlTErB%#{&*(K%0XO?z+c2Hwzb1WT>EV{fDc1n zEY7$v$ucgSXpy+tN+h+C8%egP+{{n3CthwQH^znNW)0p15Ywa|2qu6;Q$4=--hXi% zUAM`tcHGyjwEBShwDqw zep_cDWsVfj^6l- zaQ#E3mBV!(QgFC_3B)*Dzl}5dm4%aUs*Wqw| zdO-UL8Hej{p=aV8uAhK_+fokKZy1IS*P|h=XAT^$&jO7)TyF(q9InsyNpU({uLMI6 zB;{~@7ZMJK>zQbP!^65do^1llCW^!LN8;H}#TRaMpw*ZlaMVzt9HKh~;Phr{(t zXcru=kAWD6>(kK)ak$>dWR-Tfz5r<}>oEQjJ6zLs%s5l(gEji_I&2JRO9IoF1NB10u!}Wa-iNp1` zk%Ytbe}ag^^{<(!9j^a~q&QsjG!%zxKaClO>+xVRvu5G{0J;T!u~}zE)8cS_5d?6! zCZWT1E2wg#Ru0!!7*07{f821&;hG+GN>e#p^IOo0Qx4a67*07{f7x&`hwGgX8Hej{ zAsy#%{S*W|qLjn+U%>FdR1Vi6Na;)#tzJ6s<(ti$1YEQTO)xNc)IBW(wWI9&5mVH~bgF*wCLT#r){hr_k$oS4IPIaG|p z^@otIMZ6j@4_8j(aQ!i)DgQ@M%Eynv8^{!pnK0hTOmr~T*r~#qg0MJbhwJH5c0Q=u zjuDWFI$S>{T2F~qVu$OC({z2?L0R1GaJ>o^8SIuaw2Izt_H^5xNKpx1rkRc+_QZMM z=7ZzcfbB{4hP6oB(<{JDva2>m8Edk!W~Qok+oxeweR*}Y%|pp9uq&f>3+(k#tJY*w z#>{H%Hh#0Ymo-{9SXoo%FzbzAw~R#PLafE(4b>P-%TdIQ0{$cP~i%K>VT#yqRhX7ywWC!)&5@oW9i-h0nm zPdtDAxU+Wske=pmmMvI%{<+^=mvQ9}#{SQT&zN7-wBZ{!K<`$>I}sm5d<^j!#Fr6I zAo2@G=8Lvn+;a$P()G5DC;9b|u`b2TM3}+0fW9pHUlx5+{x#wG@o5Itf1pNR9Ub6} zeYJ1E8-1tiB)0=|Dll#OW^U=4HPgX!s)d10+2ZzT!)(WChX&ks=$&qK=(RZm(X6-F z-|yA~o_6`77T>yMIv4a*M7}i}Mx2B=74dY$zm^C5P`uySXa83{;5pOc@#FA-?*mH_ zFLmOy%c}!LJViysnL9-e4|rZqDROwgm*cRb$l(Fcxd+N7@POwEh{_zP#DSPsWr`dg z@VqXu{9TAJhV0eW8|Gwv( z{4g9;`_7vv$EpP5Q zet!^?-fK1S7GKrh3tz7=u|ibeZpLf;Gj`)zI}@}A6qnbEU7D8d1jU86qD#{<7hs zC}SV!IM7=_^FjB3qOQvCe++03c&r37*bkV1Wwe7*-Uy0SVn!_}cCf+&$OEkep9zYz z+71Y(_!+OGqR>nEz0muFeog2{g?0-aDtfwAfzy5Jv;7P&3cpFS z)^yrO`7rD6XW)nAk|*QMnvKsnEt;{_*$vo zKcM}@Juv%=I0eK#F!sMs-m(3K;PHzFrk(sISN_?q{8wH1eJ(x?b#dDJcUS&pE?y7| zR-d)EP)$zg?63?VFQ+6^U333l!KwsrsMa50F89zr4tN zYP=$P7HRMa4c9PFmDQjSz=lYy^_{8ajv|eb!Eh*4VW?xep#!e7v{wLoQe~5)sNf1D{VsWc zg%QkLEFku#!(Mb7T1EYfz0PFcB_}W{gDJa7>@~;ghbeC?IB*ma;!xCzy?>A*wXo+5 zGG&O0O#PDKP#hI|VJSge28z05e_&dYsD4dwc2p(ccOLhh^8n@s45qySly=uiYv_Ne zUs7C)OtCjn3K8eQ8QivwJ@YYpcm2$qv0M(0QrKgAZ$f+Jp0Cq9j%S6-&=TotOo(f- z6CK1L?(Ei1!9mc{{%tq)OZJ`fTg0B}zgu9B^;@#T_z(;ac3u$D0Uy zG_mf)Lf91&+DnFOu}GdGc%{@LbKt~`CbX9f*WzqGdPOLbYs=YkqEz5`5m7>W$#5-N zT<0v+!`m3E59*O)^sL6l6U5&zpcj9IZ?2mUvpYaF z!d+&?wJ`jikujoGeD9xecUCcqa4{f2hO+RX0puJN>+xm;gK01UC-H7tF*_6x{g(ENP9&zY66Il!0+K;O1$2udL5=ARp+#Szw+oStjJH3&sj{t#=(ls#FjD*;hvt z_wN4;`p5Q?IYa|#m^IHrRKOrjRzo7Y?;9RS(%VGu1{frI@D3w{$Vcfl{Ktl-ZH-+k znw#2JwRJRoq^-59t~my)^1l}$B-ybQ9cKhB*$g|wP$9!mA(1WJTen7rp+bhCLb~9u zEz_e;`i67fW6_hls#ey3LZu%6eF=YWhe7uI;FlxbfGB zKX)N}zJ0ew)7Q7*cH{~qz zrIniKhd*k%9P{phW|lFC4r|hkW$Tulv$SSi#j=`ZtE(y(S1(;vQ@LSX^*TOkt12s= z^Z~ttoBYMQSZ!l(1%5D<8U_>@_{HDk`)n9cWP7B!tv%8)vufFz&Y4Y>jcu)XrF!s> zO(|Ft$8jEeil1y&Cf{RF*p5Tcj$5m4b}e0pP(C`YuxxVZj@HPI^XfQ&noul>0YEv- zZD-qBzeu#JqovlHhaz{yM3RaUlhrE{kF}>fnkk84d<}HO-z~nz>g)sv8~q_Ql+t7; zpa#)3QerS1Q~H-7@P;a9osRoR`gVgGdxI~}#;`Yz%OT^r35gZVvVC~nQto^>us04P zFAjU-B?vx`sIfQxli9@HcnXQ#h)(Q{pMkg2HTFgy(+Ydz6{LW@L1#6Cy)hDZHi*5! z4+~kLQvBPY3jBLQb@=y&_<XEz&G!*tLC>~$*7SIW19PBExi^*DkeibVYrh^}h<+c<| z$0NQCA zAqkicz6%4Gj!!|tdz*miVBOOZ1*U^%EMPiVI!uK!--95h+6(ZXnN@-R11QRde<+#; zOvi7*>_7xe2MJ+12*t4hyCI}tIzDSS1=B(B4V9;0Iu066!F1eZI0e)3u;CO;$9D`D zgXy>tBEWQP!Iu2LKspYl3ANj7ZETWX&?gAQH&&DI^F{Dv#AQEgCh_RCx4xi zIAA&mQNyuY!*tAp-l>Ry=~xVMIwD{?DnJ$@0;Xdn;nP70=D8aUNCrAp#}=`fw6VLGaycOg^^ zOvk5?z76p(;`zA90;XdVRK`7wH04J?DIb3!o}yDgWh15WA@eoP~_dqxXWT{ydjyMI+z?vQU-mPImXpA~go))}r z;o={kefzNoHvDMitrtFi1?O7VAaZhb2jabmhY_Ddyp5X&{WzMzaIx^Kg=f>4|G4n9 zLB1G~fs+$wzUooPjXkx8z#Dr8u7YJ4VO|Bz;{-%ln)XQbbWqNOuxC|S+B0=<+MvGM z2K&h9@Z~?g6p}+l1ls#+!D8^?+!#c@#2ZGOgg6!Pbj0@q7K8orX8Wf;)?I(e6Pu4# zoib(ok3YM}_lcXEN51sz|5aEF&TM$>aI#YXioh8?MZC1gyPq75DdN0TM4Ty8#96ky zyvNHIMI7`+i(@WDoJop^*LsvymsN;33y|_Wr>IZZJBF-d4 z#7PfDoC1kRO%oyFFe|n=r=k|8Sp}d7ykJwr>$qs~1g6LVQo(5^MVxbrd0yTr;#FS? za!Eu{7=I$-{GB3B7^NVunH2FNDkAnMMVv57K~8}w;>qKf`P{`eK1c2W;&rAhVd?j@h;xwt^Q%Wi<7{WF;6=Of7xvq_#)y& zxmbE$Wz)_`vr}Z=+tJUfHCDyD1-?l3R4M@i#w=UmTb$}C&h_V|yyEu<7WqeCyZ zQLYdaGo*?FP0PZdm|#@oYg)#oVkUS*(lVBVEF%mGTMB0bcPHTCsCiP@Q#c*4p>R6N zKv@p%X9}kSZV#&bNKo2kKKhRHA7y8bQ20M6oQynB>H&FC>A@XH>1BcPfy5c0g`j9l zMjq&7&`eM)M>CG09G0LNM?t57J`Oq+^a$u_puM2z|BSmpr-1GUMPFp>14Tb8ybsI? z72d}r&>qMqg6;&xgiGOlgh3m@vwpRp*tEj?fSZiM`xpm`HmLf5(61xorvasx@`TV& z3cXI~2BGH&#Xjc#Oeq9~{gklKau*L)<&WZQ5PBX@W{$^`ANF|{l`r#nDk?pm+6IrO zxqXDEpm2nzdXvXzve!a?Z7`}jI{vdM(T zQu3&)@wF@>kJu}-)mj{!%r|%&Z;(fRpXC1%jbr|C$QZbaqkZld20m0!J0Fzcm$Z-k zqnfostRHM07oNwjlYd;cXX^7Y^0Xz}JCi(OK=?M;CO!t2!3-z3eQd+{x*j5rKCTu0 zFR(rizK8ja{+KQGyG7bdka6l?CFL)oJ`ObFTMB%CmA^;w_sRA?FZ@~LgE%Ka8E)YA z9sCk*5A`>`ptnnV48Kh5Js|e7sgK3WPHFFU+H>%$CBH}V$B;+;d!_s@SYPO0FZn-4 zow$AW0|VvM|Gwz26#W}TKUMOHL(cGR)(`gh42a=oMA~~??A5S-=*!!sKmURHNZ%=Z zo#J=B>KhDzID*&(;;*GeS*AW`?r#J)Ne9WVImr)Am7QCBge@z?c~4h z(!blq|JKDnh_*S)_qg(ZicDv|ppC>JKMHEx2qy0h=c8E{FW_5Zl{FQstEy|vgd*8w zz>1bxy|$`)@!F-!YXHx(dhwEqfN~a8cqbS!57kBsWp_6uIzWT-{VOt3Ps#25T|MG2A}9YTOmjurINU zgxekxzRY_Ao|!erR4ri*hJ;HqYqqiB>ffOQ)|}9nN=jzUcjMeFZomu8P1_?e-y?PS7PY~?35jrSiZK_l!dink zH=A&6PZn;SuX8F{2Ep){{&3AeJV6zPigS~WYcB)sG5PXR?Kf`utRBiu0Ir1|OGHpp zQ@wl>7laawouA2t`y#c9GP&Azj2j&1#?1A@Qpn(poLJu97F7nrxiNEJOq*5Mg!vbz zOX(|Ia}CLt5j-i*jhP!)ihixw%Yi+!4arhO>?Osysg=2%DSMaLtB%zVl2{OX#8pX% zbJHmHdZoyrxYGUm(9|y(&JAB_VW`wZ;k2;-E<*jVG_a5zw*|4MaA`UsTRYu2GG;9h z7JEld(fi|0*psR!vX>M$$IQK@taTLj^Xzmwy~EC zH>X$Z@ty)hCT=jW{~kko`PBz^5PL~+bNKNZ2HYo6VU;{a61HF4P5qML=9F^qKrqMO zZrEe}u2~s9KV17`VBDN?v1jJ-dtCKX8*}^(hMTk4WpD4G_6Eky;U~`+OnX1s-=3?z z1LNkLBlZ@^aq`*z_Tmni!Eke~=1m=hyEU4SNhe>>%0YarSt) z>l1o}(qnbVr$e9jTdB-b?i%nP0)6sa+|Pk+9^RFR4CNBp#Td3N+)_E|FasqD5xKo# z+?-+DocD^GbG+uk18;1!flK2#@b=~218+ZS?d=;m;W!Rmg^6=?g!LxVqku=#=e71e z>m79vhu%%Vcs@8gO=IU+#HxYLXwYZ9qgB4qBOVU(a#i{4gU@<%4?YJx9NM6qW!+^c z&jS`tIEZZmb<8~>-Ii52*4o7J8 z!G|9uj?hxX2nlq`c&9vpyIx72Nmh->nYlwfLmTT?^01^4(0r-d&MJCS_0GiR8 zGhlq=o7g4G3j1wqy2*@rO;0Q8SQuvwzQ=XV(c3};+bc<6u%w^G=v~Hmq@lQK&j=S6 z70(6cP~6r}4tQu*Q85a9)S}@Hbq!73ovT~bGwx1{U_;osCLGb1FT+}om$Y4RsfPeJ>Q)1msHv`5Keq4G zutSlKmZnxCQzE#nySnAfL|s)>zjJ3z1Dw%2y6d~FEp0nlPMdyzI%NQ>jmR_45R%*% zQuCB+vHuF8%lKXb=PojjdM{=MEgOc$K!+UXbQqV^+$xdYH4w6I+7aJN7y!3uyWkg< zPcl1TiStmHlw`B-8?I53-H(@gW)A!sU<{b2zllW8Db`k1soVY0PvijAq0UlI87#FL zR(E5p=1A+du0|+*Xmx8>WE=1+n%i2pVZiTf+SVFrz&PI(J#-D;!?|q@kyv%swi$U$ zrm=%6B3rxMG6gvl6B2yrJYZ)uVX%&u3M7$JtgS{ti~5&yDg56;HR^v@s2k4Fy{E^% zl|T(?kIIITjfRnphLMfB>a1?!+^og@4ygx9O+nY*&C8`wN`z}Sh-YD|IZ z9c`6(mMrt~Do)waIGOsmlw49_Li5Bv z`X;B@55Oa8PykGkof>zkqHUW(VQRtFV-kUCVrHE|V)|c?CAVAYsS$MsT8tXQ19%hAK<0`Ip8gBvETvC(vKCyp+KGq!H4 z8mClU22#+CQ5tLj#%z3+rn|WT%X|zi9ANb-oU2u3Q6Zq!#5NgSp2ysLhH=LRavB-N z9UI0SYlsx#q1{Zp1lNVjbf@DR%$4$4<`}HlkiXQN9I!1p?pTs_6IQ-WU7OV$!|~~| zWXc%3V*`a556)EZV+rI#FxY=|alY=BtQv7Qy*68M?0|4)&E34sh8GWA6GGSL-Eg}v z;ag4CyMaS94B^%3T>fyE3lYm4R2$0v7Y~@Fv9g@lbVSO%Pt` zg{7QgCMH5TQy6FPS|A)6G0*V2-W+U;)>p%NLH{zU#1to*+G(0GWv2EoW3bfjL|gcH z7B@20p_Hj`CdhXp#<0}PD{r0~A?EX7+YY39&5LFZEVXYTFAhuXMF>8RsIk<3z-(fv zJ&D9_L?@Qo)8Osd8cXe$Oe-w4V@Lr@?av?vON~wg#8R8YI)~=r-wvIFe^00e|K3nH z{(Yev@b3?O1^+3b$MJ8l)ShQ9u+;ts)DC&jd{2n4iugi{@E-_Wfd9-;2mS?1?Per_ zrS^FcVyS%@v^~q4nL^+;;Ovapf`{ZOc;_i=1VGQa!F(8uJrh{~Px}G18&C0NrW_J& zdcUm0t>aUIt9&EIfjJ-Ar=)?IZgSFB`2y#FnarFN*zp92vc`{foT4DwEdQ^Njzb>% z0|Zo1$Ya^CuNWea%?9%zbAUW{A<{>fCi2+TV2+Ui@)-SQR0$%FHGl~sD&(>MM1sf% zf;?7%I2w1gEjXd@f!)oNQV}=#vv9F`1^b!H` zSO^5jV~;?Rxe{q0kKx-WRu_{2-_uB*vIA)=i$~c@U{M)C9;1IrwjIvmcXj6?A}4D< z=scAUWZfH0r)NEkbeWQ8W)-1PzgB4?kKKh7kjIvQ0C|jib96QSEFX7rDt&6chbYKn zk0W_2*$c6;JUV9GM@}J+jfUADkyFTH`QUy=P9u-~8`R7I$YTVTP?`#P>~6y;I>!-#JVrv~v3Edul4|5Je863E z8hPv#uzo}!kA*-4d8`CUAdm5NP=7W46!I7y+;}+o>y^ZTJa!2L9O)GDn2&ls>WsY_ zr*7CD2d~)eU|DwTXOt*^L}toSEgJC|48*Kn{zxMKAzLxoVEERVVsgPeVVFEHuY%zQ z^T%S``3o4HO!=wUf+sKu7Yo9RQ&+^Zcf_;bk7xe~Hi&n+$Le8=u4WE)dOW)(p1lMt>pWJ&P+l3wTK=D+;(cS# zg46I^7&QxQz;<|uj?wkJ7%cI-#^~Z71It#738+@w8qYpzSlwOE$Fn}PVk$&q(pc8= z{|`2OXmoLG5dRAVa8Bp(*p+4;T(aX`3A2JLPFbP|!P-8R#=0AaD4M(dXEs%*M zYdBgXU>3!*>kO+AFq^=#Cr4`p%bIlFWmk+YS1gm8$!Y}5)HTRXL$gNRmUoSo8w?C~{l zsHD6Rl=2CG76F;?J5I)f$tG2qW90{gGX-HW^PkF(R$a1!KyMYO&lTI1|c81iwpSoSEbHF!OcwOS9#;^S=p3TRD49aS(( z8N205h@XX)U21b4VozfJlbM)r;%v7kp;N7&g4;=M@-d|B@=qW=IS=m|+pE5aq*Y+7 znbnWo_7hm8m#KY$ZBJ?ziw9|AioHH+?=;Vz@?zS#fTN5x(Ud=qeav9DO+b+v+NrUr zVo&;Kh*`USwyde9l$jdaZ5N>Q%`83Jwz1*L#07l>u1dWcy1%4uz_%O8;B!p-ZbZ^= zp^AsbPsU|A-?7jXd$K zv+J@?dGYPmwK2BidqlZo|~mX$LC(?641w4&OANjhI741opif z2@so7ea}3W<#xG0Fvuv|l%eSsyd;zzB4Y6s7r-u9eDfUe2UZwy3gR?G>az_q5lavs zSbIGE#Y->y*WVq!=m6Wd_FoU@62WiNwd3z8YJ7Io1@qpxrscmz-9v=Ghjz{V^N(Kb z`OrUoe$5w%@E5+Y?9Dr#``&?He{O)TH`<^ZPLiO~NYo^ZrwEtK2E4x4X%u5%gK7X0# z^V`z*jQW?O$5ww~TF1|SOk}~b_E+cq=Z%Z*-ZOXeHJd(G`Gb41U+?p-m>GI$#KcV# z+r!V5>^$EpKxfTIJO{A>aR=gF#5)kbf%ttyg0^wl;zfs!Mx2JY2$9q9Er{KSyAeN! z`0t31AU=usTg0~zL)Zaf#My`|5YIh+~Wt9=#Q6 z@nTL9ukm7w3v!AMAQm7ZaFR?BXUt-Yix!Hw8j*rrwNS)Wkcc?xrik-!vBd=xMO;^j z7H8-bacCA17lah4=@%#hXCoA;>6wz~ffh+#Riq%-ht%R?QL4&C9YtJDNhLTDpont= z5pn8H5$Ez!kOMYF9KA)vi9bbL1&D}?R*JZe6dF109P_lt;2V2Ze|7W16&QKaVHpa`6$QKY7}N}^WY6mjV;1-p=>h%*-v znF|5M49<&=8@G`27StIPiVtQ!!$BVb#^Xbu7*CdOW+HMC>Q}xN?e$m>vb*d*1H1#X z6Iw*H2YD-RW>s5v2i)~%@`XV>BIWmuI%jUG#~X6*!{ZGnFrV^G`d~Jj{HaRpfoJTK zF2lHnC-FHPV&t70X=tiT)PEoNG1Yll=ghwoz{hp%k=B)fPx+hmOY(z$7}xMU;Tk4+ zcKLq`*3i6$rysYfmvRNCP(IL_td|;jRWh&Gp$L{`aqr_9(fbODC~p|*%E#AxpqCHh zHT%E87@r^ao_>6m>#4NP#Ckt^VfW4_79&6xM|p#<__Ms*@AuC-?k`RWbou=$5BNt1 zcKAmTq46qz_Eku|3h6n>e#k$Q(v(2AKm3}KrKG?JGE*M(k9`eLj-G-nh3gnhxmtrd zK7c2Qi*gmHV|L2@0C9ZCpALY>F)HodaKHZ)06OMiMiD^es}9cKRh+OBpL#c%~5dV`id2D%tL=SZMs`$5-3?-rqZ zgwoey1LV6vX{Q|&x2!6fH7#odWw~0(uLi|^wTenj%T|F_A-`PmOF=Q0tC*u{SurT4 z_Z8DMEh_}&cJhP3a$M1%slvTvy|C|8 z{VG5)L9JM&Y1uMR%z7)zH7%P1S_%C^Q0!`jcL`dS4<0uxDmX_4EyKRE48G*KYFDWC zDm=^S;7gIe7PJ_24Jhql+Zka{+*DCGmCO%-UkM6gEfHD{%KD*92GRvD?gzyRC1W4xY|vXkaWhBZWMVm)u^ap> z&>ql2(4C+oLEAym#*9YLsi3u>*tEjQoC#V9-n2*63w$}`OL6c*FJ+-nztFdXTKA4HV?)4nP|Kpw~@&B^tm}i9N zN&9K!9`Qcr^?082K8^oA?+f^U*?SECC%ipAYkdHXM+Hnc9gT4EpTWV+gMqg!7}A)J z6LY8V|B3oDzgT#W@TJ1vj+2b~J;Ez|Pw=~izY3J)%Z0y&+e18x$gqR;LtG{Kx#UrP zkMJvGdzHd-g-iWS!hZ*pe68^JN&AjSo3kaqQSz^r{65M5qu6hk{0)+ST=HLHz6WC= zA_I=mIDRkl9qkE|hYj;;$fK+;Y#R(Aj{n4?ybE%M&CExvMHz;-Szp*Nm_G1{j^p<+ zAMG{!>m2fq{k4Gohw?3AFT(mDb_&nO$;9`(1?3oiE!+E;%huB`SsuvcCe5Gki(fH%9b% zT+-fH(H|}P?V|s6)(36)At(d;f&8<=KMxt(cZ=ws&H7?gHW)q6u|631%EkUJ@)*Po zMovC?446wKpI@`fzyN44IBr0Fh%ai6zYk-36CC^he#tMD{qq3oMm$k-{EkCCM>@85 z26;z)J_CC&5e?NS@8lnH<>T5Amrq@%{&rV+;w3rrc{|j}FLv?UUHnJUFHZfDu6*L7 zI`jFqjFUg$;svYG0Bo+UT1-#pca2(#`Ly(|q0-#qZW>acsBoOX zm)u+R=aG%h2MU*(2rbg!JthLSG$b03UNToBo6a>oleqHH>||TfW}-l_(OOE!YYf;JP;4|``afDQ;pPp3 zth)(fe70^v6hStjjdukw>pT~0q{B+|)`%{uAi`S;U}K zn@HB_F%5SmR2}=H)k+iGXtoJ!0kB)#b3p*E?Ocsh8&+Y~ocSelXU|$t0^!_Z=9CmO zV^(qTyg75gmCRo-PifW$&Glq4-1UI^6GhfJS$x|*%+0MZA_DGXSOKg}l7&6EL7)QW zzYK=wRF;wVR2YVeZ_5`ZRDeAu_bjt4{J3!MAu&PlF_YrGHi{kIOJHckd>qq8>#h~* z9+i?g|HNKWyw^iw4@(;r4vD>EuqSg(%&=p@fd`rp@3mL#@eKrqUUe5or};10QGuyn zGQ8JbHV(nGw-@t!ijJdxSSnatJ}}<|v6mF@)vPu0q(CN0)849;nj)FVUQ)c*Laav^ zHSE}l;w{h`?713tgFZPIY&2WEzdvUwO*dxFf zgWFz~fD})Z24_uHYR6K6fe^BDD2586K8JG&k)|?Fk)5mYGA3wX9bTlwyopn(N<@Zb5@}%#qU(|m$>3oIR07l>~%xU{eJ!==^zWpHMc&5f;={(Y;tDJDQnhX-q|s#n7OIZ`!;8>dtxcVck%lFhZ(Y(48dU?Ku8zYT zONfmccNfr7hz@E)`VO!b5aJ=)8p()#F3M5y_pMJ88E%BI9dRe(_BqAnXBRh=UVe7j zrA@0Z{U~mWCF)or;Z8p?q^q+zJ} zoV%E{kJFgJckOWs-$go#?cm^!;raLwcyYK8H#J(f&6r;drfBx8X@kMG$_wH%hkE;La2(jB=Tr2gQ>v-m!^hz(W<)6C6P$$hPG~C@VW9T6|mZNAn$GEICoim$+eMfc$qy} z?rNA*rGNwLtiozy4MrN&qaRhnbL%=UvAO{wJG-Q&%lbcnDmx?~-ND8sbFes{-5Hrc zwno2snGn@i1DI8{w6%3LHeXg%U)LOwa!b~&tFUU8w6!%0%9#eN6tv3fw(7>FPL0uR z)pa*CwJmRjF9WVoA~Ur(w{3eKztLDu_Y3_>Md;} zmOLFM)O8PwWHzOyW~(}~i91|V(-G;6bZp0wTT`>5yS2U&_c!$6W^J!)?v4nf4mTh* zbWmzW#>$ZM+t_BtTk{EAPsRNNabCh1)sK7is}A)TZP4-hsL-}CUNm8{ zgEqxFNYzVy4zuChx}8le-7WeMRdTepK4Rob(uQ%kqp3jyg(?XqVEU-++=#De#-K!( z)%{HXT@%ex`c1;jeu`bB+>@21ZOu65jGi19{|f+Fqj=!`psEyl^frOs^JNytI>f$4IqgWqQg*Z*<^N1!qrmDg>M+MbQrVr{ea$F-(A@YLF`4KdSao|M{hNl2WkoMNR3XZBmjKM zXFCiPn&4i``dj3FORvxb@Tey1>8Of%RwQQdfJ?IIOvd1`_LQ5nxjP2gDxDkqH|6@G zd-#vhA0zh?Y{&q=9_sm*ReWY7cHu9lZi5qO|zZ6?oJa457H@ zOM@jalBRG?)h1QpbXOUughs+19=K(r=psB`9;p*bJyX{Wz#ZBSeEakkxc%&G`-Lmg zS=F3T_EeM{9M&u%2d0HOP*f znoej}Rdy;=g9hrgu)m_HO*3k6H#<#rBT!4tb6Yy0@e%9ka-dxf8pCciuZ4NGQ2aUk z`8*ZgehWyJY38aj$&qJc; z6mMpLTL!9H>TEnlf8K{B|f>iLGCu=ycrY%>>wL>L0+&L(Bx&YAPL#R1UyagJb#Ro;eD&Fi5AK>tHHV zgRQ2066sBWX_qPBiMVWtiV=-bn$Yq zJ@M=(!K!U4u+`ulhE-szK|-;rT!l<%rQODwrp(O@9z>!GF-4&eTD~ig{&z%wdgvOE zjC=8C`-tK4Q^XPF{$GN4><|r%%tN#6%*?MLy&TEVe;{$nDx|C|+Wj6P+GQzAAtJbD z+u^KEXJ zeVCaw0slNd*lxb@r_%w;_X?EGfgnBaRFeGk%-oAWH&aAl)?E6!DUQIbxjPI;VAkA^ z8V+!X>ACd&Q8`x(P2U{>E2RAnnfX`vA9r}3q{K>C>2IdB*P9&YLR zww?Mi66~^c00XA}8O-a<84o5XM^^d-+qQh)g!p@i8R1h&GBfgX`F0-9;f!%?3jwzj zr+`^~e*mk{UtjhA5=mb`)yoT;Y1tv-L8W1+wE`nMGXuFuz=D-FM@cecHC+S&$E}fB zs6vQ(p>q6{U#$c{&NTZqt`M{kU z5_S<-Hf@Z8F%7N(8^bLP?gYzSG$tKZJyu!|>>nCc92*}08GXR#?*HnYI!S~oO7G64#}?|nZ4cDjN~_w%vv706v>S5BW;IvA(=KEe}$tR2iZIb z*n6V^W13EHM7DJFn8x%iCOx(>z00KY8-rIM&9Qy7f-wzVXIKSe8oUuK&!N#cZ&6=j zT`5+?zE30jmx!lM4)G!xx((@* z8O@)CKE@<9ntO2AdM4*tq2EA=VVvWE`%jPRBcM6h_!%PZnQuP+EfOx?1RFY zg0PrcL__}ILPc!a&-eRQE6%U;QkXaH5h?o^sM?MZkU^RBPeE&J9p9I)0O z!L1=TDS!v~{z=T4bPAJ`IfJw&8*4roV6a=hPm5D*yPz5D1gcJ{p@k{`41THNxl^Wm z7wlTasvUirv5;ddwXybTsK6;HHcQy{RJ)SZBjyOw>!X#k3QeJcXyMHEAvl`lOKs$6k5*cqHWrv7TeCjMT zv)Df+*oo2OFf{#BFdEoFGch9@u!Cl9MmF6Ja(c#dglwiA&?q z)e9m-!u`ylQBRjmdu{Zry+1vdXt;kWF8J@7PhRl7`G0u(xv$?i`&TzW_g2I^5g$Z+ z4DlJnml01Oreh<&WWOPumX1FJ?jQ0W#|~xSP9^^x;kkdD`rpR!NB%_|^b9=0o%}z! z%JT?gzOm2am;Bjc-w94gxl~K(7)0C;|I5qArX!EbF!l|%O?#}PX@}DeRQlOrzZxCB zo6h&2&6{i3_t;(vR%d?LPg8vl5qP~lmc>i+JHce;pfOVnH<>=I3vNVY`T zCBiLHbcuLN)Lf$P5>1zgxJ2dM+nZlV#9kuk5`lMV+9TCOV2BZ-~H4 z#9boymSP{RLHsb{PQ>dGKaa=-)?vi|M*JP(+lZOy;K_(YGhK~%5n>zSRfsnu?nmT` z<-ZUKM)GGw0(VSAq=V2(#0wBP`R_rz5%Eii1Q>Y?@mGkiAaW8u1CcZ8D#Wdbmm%JO z_yxqf5xyRDx3zia28tEzZ3t;$%#;xa%n5`cwLdYf6f^ zP?dt5#!T%Dfkm9$i=x7>jiz`TqxKtDom%Q&W0S1TID?;&~)myi-OI=kT&kE=(xmdPPKB7gNNgasem;r;`+M zZYj3zk;?Mcg%sp^hgw_!iik@99tm6yz?=hdn74JP%sV}@72b@XGS~em&)XETFct1j8I~b( zMWh(VpO39Uz_H69oM!lMW@^du3#3Fjbg`*^_Af%)J=V=U-umJ2e&ArJe=w-4DD|ln2_-Fp+0At*aX1+p!ZP8wdJNdt+05 z=ilu3OJ2R$yDNW(mE(zf9$r{%`_;sq2pxmK zi#nK$!5XJ3{8vHZ*UQN(iaq?f!5SVmJ6F|EYk>%~LSDSNTWBpmiq_MmMYx zcgM%XYk-!UQsG|&@Lj)WdX|4|${YTrUxF=$ykDD@g8{~}P_7pvH$ zX;~%cM&z%O{BlrC`zjV`nh=YZ+X*8dGvA7QP0KPtaVk{s)(mJ_02JpvtHG{ne{!8E^YA|6ZYYg5qSY*sp2X9U{L46z8|X<^?Ug0X*&P z0_A?$sc9K!*|gUzv;h<+OGT}w3Y*sl9{Y~NQdu=9^;dyn?5bF%X;~>K@@7m2#V)HT z)U+%NiivqezNTd?2OWjIy8*Nq{5nwTSAvE?M}cBr6H7TG0J;Vg#6np`u}y`&I}NlP za+Fo}rh?MmX`r+h21Vp;8ilPp9+Y-b7iAZ>a+JM1k*^hbg~-nZMIKiHs@x<{9yh?D z&8P)k2+HGR4k(Y4(?NNh%m6I}Ed%B8un3g<{Y+2`6!?o7$6*)8cg9gr^j$_D=zP$p zL9xFRV)kOcDa_t1(0$OG4SEYG+pz}}x2!UDgO-5yfU?~?L9;>IL1%$Bf})QyYC%zz zILzKW@Q4~q7?k~-ldkkq(uMvAV`PZ9h46f8p}?PL39 z#khy<10N9mY{~Bv{WB$>x9u4C0b$n1tY3+3OWv$k!@`^O>0eks3>1xs3==?!Da%2N z;dhCH_mYSaY;cP9!cd-M3~#YKY+fk*IMxqwCu9s?C6E4nT=?_R4ku5iaO&@q{MppUId5== z_@0K74@>=8WqbQrKj`x~VpuJ_!6V_LaOT%aehZEbZa)w8X80#*&n~eyU-WrvmEl=w z-#?~&t?;{-8*&Gvso-cdguM<@~vpGG++&$N@D4^q=+_YrbZr4zSP9hHgp>$^Hi68an^-mpFx)k=JT z&WzJCZ{5edb!)m>+ARY*tZ|NO)>h%}MLl4T0d!nfe~Gvo^G-xf9Q?78XmsSiCYLgTWR}g#BsqT&TQ890eOy_^U>$4@8A9YD7`R zIB60z)01$_(2goY_fK&-atyuT`{kPwhkYF1OAhE`S4Ir}vU}xyHCF<0PSulXXB03^`%t zU6{wNQ?Y1v6z$kmyOQ@E4LQ0&-H)@QfX9vzps3`p3X>e&qy{ja9gmD`keS`E$qD=Q zq%o7Fl~FL|gjP%3kjkza6HFO6%Cj{ta#)4IaFplFnYTdWF2`_`S2f|u{t3l`NV;Ka)W6EwZ;$D*qL&Z&g z9CLLB+T)Zy=Tf``!HV_6O&0ezPQVdrYO0rS;!QaT#tx>}DzszGfvIvd$Z{ge4~EnG zwA5>}tb=y)-6uzoUn(oI4rMWU7=sCiW-sx>={U1 zC2`y9cIBlb*P ziYIG()vzaBkSUu|#DV*p5O?|(vG=y@)Kb`UhW`6QPr{PnPTzu?hYZIxu}Y`v`d!qc z?jKs%?TPA_6nA=$93OdNueea!d!?ojC$g6mcY43rq6z;!OI)CCKq z{L@3UmkihWBC)qrj+YZdvi-EaDm_PdY*XI>pA$k*FH#$;iKN{)33;~E-g&6s4aFu`RUhg=CQ5*oi@&2oI+D01Z!=5FUwHK$x9-OLs_dRMou^iLe zd%gJ%eVtCI@3o)6B`4>#GaUHRGj%$Ve&14iFZwv=wXqKU2?OXqsP4CILmQ4>VNb(c26)HT-lM>Pj;2RiZ}thUb>BwMfj+Oc)0YigYv3E>a+dSjWTPL$ z#7j{I~{Km#d_YAwMe z#3Aed3Hpd}`fLY}Yt`52k8o4t@w1x>kF&kZvyey1x|%*^o~bjQ+pB%b^8iQ#e>^pN z_hcGP7V`SMc`EI;<+f2DjA4yqim~TAX#cf2JsVySTYcU!$`0+R;|_J`ljEgN zu-(mhz+-~_=8^r!{bY_2$~jKWM_a9?9fw#C-N%<7H<<9XgY2h1b&kjP<3RhV590&I zfw+DjNT25kVx0ba-A`|z-`>xC^~KSN_to*}zR~AEUs^fabyMF+O`ZL~a|O2*_B^G= zgHZ>cld?+Zd-D%zUA>>2dEB3K)&87&D7NpZ=RB9Y4?T?U5xjl*a*SomFs3cV*tP^? z+~NZ#+Pgh40=f_^b z`Zu!1Ahv~bq}J10*5~ah!*`(fnsYhP_GH}5aeuR*F#oo-srYVz=~vO?xILfS;yB0a zXCuBhkUG(7G5yEy7qIS5oe7PF$0>Vp^8GEzuY>jzoClfhao-)qHQO9_N2|*3OPzT2 zh6#4+C1Jls1cyP#Q;zAn9@gGpd8|MFcNWJ}eO=`FYsNaaE$%xrCL0@UzZpxXOzhdf zW9E5p_Q4mT)jm@K1v)}ox41L}lU08nKw4ST}F6zI02=!;5u+8S24BPs8ZT7o4 z$INl@3!F0?Z+bnkYaIL0&F_O9%JqKH$B^3=^Kx-)@f#$#rR0! zR@m0pkAJNE#zxPm>n(qIixsFFZyi7X^Ur$qxPtd(4sN};^tj3QSUbm0M#LRue15!V zgAd2k6zr2k^)&mR*AI7J@OvK9aDE(B=T>YV8$Er_VXPUqf9=F^2iD>oRogH&smC^$ zv849mIgUA#9-}yh7<ji6_jp#w7?LKdo z8i#wWJ*u7hhXJTxI>UHV9hRsARIXVos%ce-t+ zO?n%;UUBuoH(}iM8OruQsO==_+qnIXZ`za|k-4(-++#l_y9U2F`8$p=SbalAjlZU! zJTe|TuP%#DM04w9E5yi8^3MhF+ zT|Kbjk<-@H5N^Q-unVV!FL!2z%anHEtpCT}yTDg`AOyN(#n;$A68#z{FR$-hVZN6iqH2Up#SiDEJsZIE@VaIfi>ALkJwF`R}#< zUudrsH%Txt!+H%3VyFbh(0;?;m-Z$Jm#O_-@0IrI)1j_WH<`*(R9K7>XMs;1Ke0p= z{N&>C&^)r5t>P~JezlB`3$+lsuB9Wa`fRvsjQ=Kt3ahCm233~k(s!1G_8!!GCXd@u9Q zux4#$^k@GjYx>gWHO(z|Hv6#R$~9*2r3;tL zpSy7Otm+vzSIsVj9f>=e+iPj_#gwa6b%V0Y6vGD%y*Z90nmdjBH+%T;KkeVod=QjK zqUG-hj~w^W{<18<;fnT`&v0@5hdMs`COW(pAa6W-L&QLmraCF*gW)7H|oM6LOl8fkJO%)?sS9@I7p9Gh%d zG0LaPLYvSQtc&B>stpdzX=w|OF=lMy2n#59d7>e_3lDVY9y9eV&2{KxIA#jkEk62| z#8A<)nwv;R8O*@qVCblmNe+A_#)HTVSXwow)WnEy05BiYF|W3{t`XLH>J`pGlY$mw zelxyF)VI`4#TQ7J=$VQJBRCZi2Nxb^nOGOpF-ltsdv&JQM5|Ei z72m904Z~EGTI%MsfK_OL5W23;Ni@Q)ZEbC7>u8@-+inc$EN#WxuFk3pYJ+=X3Z;F=8RK}vu+Gd&qvS`I(#@bb@kf*wmD4{Eq%S^ROcU2HJHo{y{PuOEK zYKpw6EzOM^Bno5)bGWu67#0i`jSw9xi`6WuFAmn$p{^+XYda+0wX!OpGM<6`)aTRQ zj*8RaGOotL$W+HCVr^}#wjHk&y=09gXG!go=07aYBkga9O%A+|+UoSXO)5?#n{>6E zssQU1p#Z%+tNVVxyxVr;e=9%6TNb`WSSNA5h?5iBT{ydO#_5n)BjEQxY3DEv^8RuB z*K)v*U{PJA2toMvVnwf+3}@h4hv>e+|D^w=;=h!?(JvE9#p)XH|M9G|XTp{KFWi?E z7tu~+1MNf_(~*LAYXfP4x;j`IB@+ygmJ&nuNAD;pQdUXn7|wkM)=RIOP)z0<#!tGV zxWrIxA6zwl5-xCohZd?WRf4n{@E2xSt27%vjNm`)dmaDJ>`yvxU)>gCi;hbSV5~K! zrC1!Sb3!kXX1{m82m5{Ko`d(_W$z_1rdCvAmqfoe(o%9`IcSaQ^o6 zu0lD?$QeHmj3S{u z2d&vlimla+_;EUOcKO^2D`b%Iy~&~vbo})>ac7N}-A)`8velscV zxT|?rZ5=Ykd@SrmP6_?3-U+0;p7Df5T8!l1B3n09*9RM0gKgr4|F&Q&#vHm19oIW-pMvOg%53v;XWBWw2F~;`3{^Ta$?@6yn!;V)_XKZzp;1%6 z%fl_itGVF#LCt({#4NG0xfx^f_|jt3*oL1A%(QYyR4=bS^8a1V@-MgEWq>}S?)_#D zH)0xHQILHxK6a=?$8hf>+KAcrXcMKnV}E_^njmJ)VU4tUWmBDnzpq>7|Figb1FP|< zTaJFJyKy;oN@MJyawk61@Db*wu`TUE{86TL!<@CvD=V?%&@BBF8e}{p+*hOT7_6=iGlANnKisH~7MLTNkMC@&@eQT11?y|r8$}{il?AFAXsV48&Cfiv zLe9_Kp`L2HGk@lnI~W@^x1BPxXj^q#YLEjgz9uydQA`? z5U(zWrPAEO(5pIP2sWX*olrNNkz1b=s#jb^;x*4 z4LNDQuq*y(z@tDAahcmnS=SMxEV$h+k5Nvj8_ey2WbI{JL46Z;748}*)Z(*p>vuve zHUc)wzf{r8?2_BFA*aezEw@7uT+`)SU8NwLG9?MEPExptHu4Y+PB=;}F-q-llv-kx z+Tv)i#3*$ks_Y?D;)c2Zwy zZl80Udex)&Cah^Fd4B&7q|)p$4Pv^rp<<6VAPrM(#=5n#9i3q8R3}E+oJN!83%3hR zJJm^!5p4J-YYWu)BeCNOmei1G>@<&KVH%qeYctvz(FV3N@wY_Ut&X;zofV}HMEBPb zDz&qXrRyB6BQ0ISqP1AM9;hu{V`oj;%!UnXW9fQuc#2@fD$LS#UMOQ=+A1IVK5$QZ z=RN7lVs(DVvh}bi%hrCO72j|Pr-%`~%}9%7>yg?pHLXwM>5Q~eeT4}XVcYu3a3+Sj zD#c!kS4u&N6>j2sbPDPPO(|V%q!?S*%F6XMG+(V_9TUwUMzmo>Dr5+|5ZjNJ^MV?uotq#0od8M{6DN@0vnXXQ+hO zC2vbbXC;4%SPfUi)EtZU&#k*r<#eA0e;vdTve>-_lr7yIENYOa&-DeC%Jo! z>m!cqf+V-GGnD4>y3=2P4>sY()lO%&xY7sW>P{bvtH;XtAU)>uKCvQwDbP;mhOMsj z&2&ruJg&ax zt2>>RusrG8aP_8t71xCH6SyYAO!yNJNb5#Puc!VA;PLgd@joN%OY6-{Sb&I_rpn(|HDVF;M=^?d`xB(f<}zP{%` zQYCH5*S84DQU`6yR~df|BR^_N^cO>~ZNG35w8Eg0bAd>t)k>oj$Do$mr-RDAT6{(E1 z`?xo;BE?vHEi|2jGr27FI)KaeC}VmL;@-|oxgYQ~-Y)QL24p{uikJ!LU&IkZX~o5H=(@IOP?8c!_%czr1?fHItklTxT|1#Z*wQ^p`gY)ld>ROlKq z1U#Pv46$jhFf(T>uKSTIOgG*2z0XSN0`X0p8M%3cyo}7j&j7DM8D-G^`ruy~3YMHb zgHIcZ_SXl$Vkp{QAAHVGw7)+1qM=~LIeTydKHj0Y_%a5E zsx@~tXNAgu{q@8JxM97_fc^Evn?Z0d>I~RlPprocD@z9LucvV9BUaf=f1ZNOyuksG z+z~sI_SXkI;d87V(R)HKAHo}T(Nz~f1wJqq=5N%Z_5czTzjCGrid&PlWhySOflkj#nT^}Ga64#ND!bM`d+0v_ zw&Og6bAAe%aXX;`OvC;S_jErDq`RNC4(UK*_@Z!PaTs9@T_%(X2#HA>Au-=h{+I%r z^7C!a=M;FgUjqGxEtjzMKoyU1Ab~KcuYhalJHnNS!45t0?X-(ZmPmFfu7}}EeIIqW zyjLLQBOpi}r;$rM>?RHr$D^-g-)^(%woxCklVKK&ThehPw`&>(>ONAV{uR_DQ1Et}9!Zmu47;2TBcF{7Yr^|5 zbK-plVY?XiRm6J>Vsb)`WZ%&VJL>D8o@cSY%2(g0S3&+-kt-0|8et@w`53!}V}l$l z6188ulvXB;Ghx$2`{b1j`&VeiPGLx^S)d%P3g4y*e`Tu2*^8Ave^vSv8Chn|#%?(T znV+Ui9`UkhyuH|sQ5HDZQyXtDQ8H~?3pK)=iIt`#Jk7tO&;$e-c~^v{G@RmSTFg!d z_V6KR2Xd_VZq)msA$oKLo_Zc;@?%0K5~ZGlB>Osgj7~-MFs}+Hq5EO*Dbb1d84Adj$TN4jezrCfSS4Xu+Cj!X7sYG+l$c zlaOJrWDea3m7TJTsGE~BP?VW?x2q~#%J(-YzO+mE_Llo8>>p(M6_e%pE__oyj0i@t z8Z7X96t~F*y!U(tw|O_?w#eS@Go3$sJKkTm&-DLD`fQ)+0+LL%ee4A)6XYN>Z67;= zS$sf1=Gs0gui9ade%t4iFUSHIU*+`6RNFHUkhcb`etY|1(*;wp4>p}J75U(gf@hgX z&m8>OFe=ybusw4#vXmyUoPno1HT5-s*XP*)7dJ;D7VY-%*a5wH>=a~AKh{zCF8PhA zT9l!BTj4QM2b9AcEs8@Sx&}Z-Nu6l^ob?%viv@j^AzbXwp!Utr!*B8@2WLNW*NgZ3=Jzi> z((hLPThIUI=De;Cl^q&W_QNShihTY1z5LFsca9dUc0ZWby6->l>ZqOetK}zt;C58*tD^90V*IM3sxJtEp5qTM0doSTKS3TGY84xF2D?!dVR=OLU& zah||=8s~YO9^`*EPB!Z$IA`Ik!dZv21LtO(>VZMNq@eJ5sJ9C64QT>6Re_)NLwe#+ zO%U*9DV%w%QlJgLdRKz3k?`te2>N3}^C4IA@WAs>Z7;A)95igN14d;h`wwQ!}-SxZSqgO5fN^`$metq`Cq3n93K{aP5d@0IsHv}srMde z6QAmXfo8Xu2j_Iik9|wj(IfIqeBX^K57jFHr^!$AOi~6vrbTN<|X5!jx1;9HPg>L{2@-0mhiYBrdM2i)(sDz?TI+ee{T^rbV}gV4%&tk z)h@tEwG-_3v8`ZNgw+I5TgV30RxmuL+Dx0l|I)I(;8wFb?KI}*O*J+6Z7xtvO=Zs4WJW@60+~}-v{vl^SHr?~lPiCgBJM{Jbf9X!xeAR^Et^Su@ zIeOc^-Cuh4%{N;=bzfoqsT}6F* z+a@mGJbLJsltAn2lV-owc5TzobG}~Gxg{laTh8Z}J(&OXm+#o{g`OvGdBuNg;LVTx z%XN?3nV0_b=(bCIaMFg= zEjT&j(uwmEIKPPVTR5M?`JXuX+JvD_Wp4`;;nuY{Z@|gfjyrMwGtST9Jc#pYod1E7 zGX=?bWpLPEgp;pG)?dCa(HG)DFFJ90K%6|#j!t}PMv(`JLL%|AH~|7ZIH$t8f`cPX zGIKa2PMkfZ6DJ?Ui6eeGariH>@cl|BcJ+jdqf|O^*eXt(IHeOiCgP-~q2R>9nmBPf zh+OO{i_`NU>9hr>IB^J0Cr(C+(^27S0g7H6ACrs2X5nHVfKKcdi~{1|n4C@=q)R}~ z9MOrBNy5bmB06!_Nn~+&PbZG`B_JoE=)_qp;o`Ik^P8PBIB~*7m^p4IGl%jL3+LkK z#ECiK;uHg&*kciqY?tW7PMmPDzeXo^-o%L$U3B97mjs+6;??vCyl}AYl8e*V60l4H zvN}pYw!Y-b2<2oW^q~`HafFLgHFV;=K=)|s}1gsTVYSuVmDr7ao&keoQ@JF&gj#Lll&sy zFXB1BC|sPoA{VFD#feisEMZRnKs643#D}x5WUd8@NX{6NnUizi>H>)3oJ1ls=aqz+ zQ`dB22S>R09fnT(aSE4th0vJ?Uk5x$C*l>t*Nk#77xu>>5yB%6GXruSKEq=8o7n^? z%7e*>IL!1xJbyE9z>4yjOT<5R5|4h!Nh5LF4IfhMDpF%@DE-O2tawUi4X9_1pjtQHSt%2KR`Y#&!!*VNEF&iprI9RB8`_ac}2G_GOMlJ_Y8`c8(~ z7X0s`c-uF$kNZ0*;@2NK!KS9^8QvdhXS(&W=N`QZ! zqn$POObhGzc2d;L#cP{8urZ5q(*K_Zg*RY4S@o1vy%x)dClptAfETZ#nb&iB6x`$G zV#3L;K5#^DW#-%&we4g;`_EPtchJGG>Oa@QjgldFQi&3bS2-z(2Gr_C)%buBT|yHW z{{U|au25USXbCgt&JDIS1v}a{fJS^`;S~f@HS@+9h7~>FnK!DxDn~k1HmnaehC4Yi zssHZjNSr+dG`VoetOo2Rga0q9SP@Zsu&K7S9`ytac=f3aD>eCrRUFO>+WoR+d%elN z-+2f7&bW#O;pa|w71`brSLr}+T7qkOmNzNEU9`YE*gfkB_Zrt2u)9xKPk8$$Z1g54 zRCrT;*LrQ=TCDh)=PI$i{gPdy`g;rDcvXV$wD$^EL6+A_aG$+zfw$QGEqj5tpZnGY z-YXJt^BPz-d9O_Hb$CbN1lOzJn&N&^aV=Zm9i_RH$42h}_ov};HQaKZ@b*h^k67?e zaJ%gZZw{Qm^ZWar@D6c544%R6ehb_!8==x~;a2GW9Nfl&Y2<6(L5R_EzjWVgaDF7( zxm!6u8sYpp*#G0cjov}-FTnjONEwvyZ6u=EwbQoYngw+#eCxn<63PeMd%-0NorJh? z?)}Q)32OKYa13!DfWu&|@(HEhSK#2NcO4`>f1htU^g9^s{!{J#wQ%=MRPZ^a;32ph z1#?_`?Edii(S68So$=#!oIkwJcK~X!C@l96q0xBv5!@GP-=ol|pK>Tf`SweoI!}j6 zMKe8(=&o@;g;4#JgYUP=?ymc6cbC0U-#lw?^kyX=LEYGZx)JbN$e@H|)Cq6G6JB?M z@5^2nZeZ>DPH%d$ugse?&pQqd=?UOVf=GP7#qzSEfvB0dd6E@$9jh6umUZ5nnvBur zlMMP5ulKLs+=SN<0-Bx&V>T-06Pm2>cG}7A!L9;U*@h<)UfYgdZ+*fRZ`ys{q6%-`X1OVcl5>%13%sL| z=TCU^5QasVx4>Jnz?;MZ_I<#6YXY*m)5c}c6W)QYQCWyQTrv~Hu< zwGoesJM9Ut-`%m%J06ac7kHN}@ZPY|>qkVCas-*OF5!M}(jxf7;R)}sgw5U{Tv522 zP+UnHy%SNfr@`~41>U8Q2(ASQN5a|bz<%!n??$pG+`Gs-aZ@xu)PB;dQiaSz;E|gF zES(AurhVMc+>0h*OtS5@UQ2ej+TJnl%qKjc+&{BWmy%y|6`^O&1-CC^YVHW|F|1lS ztTAv<-1h*#40kTj1qL<)_k!ja0T}2Inqvym6~G@sUK#KyEVh`gad{CCi~Yuq0Zv2s z0*!$@;CH~6t8sZY@HqHVftZjPdj|8IzW^Qu9zeJ*je#RT$~y@BGTaYn4D1D>4X)S& zWO%M`X87BH7|T{H(-^1%GW+ULpbW_HV}SdB1sVgRfRxvRLECqs?|F^Oxulx% zj{})6&uI*F0gr(1h{olIfiHmXAn?b)J;3LHyMR9da&Gshz)m3bS`WndtD-|=fD0U` zR~_(4$gR=1{5Bx@xrhSev5G2-c`1;5CBP4WuSjE{0Qm24_Y0;1zlU%> zjmtUr{A>7gH95nd240Ks-5LWgiu+N)Bftsp=VA_E;2@CUIVNQIJ-`6`cWVsn0^(P( z6PKUEzY+Kha2}BPJWJ#9>AU@1_t&5ng6>5cLK?`8HoKQD>^j>?g3)1q+-3sKr4{>S`Q?D9WWpMH5voA z0Wlw6u}ov23dnfo0e=N71>zfDMTy417$D`10#cqII0XKA8UwjNd^@Pf))>eHV$Q!J zRb!wB-86e?1TucwUnTz@Ak(v3V_+AM>Dj3< zumi|=wg8!)^+2YlLt~&3NO^TY%Buk~J-2BLECVt|F)#`^7BuIefPqxtN!)sX*TCJ<80cYd81#9KfwRD8!PgC>elG&A zhW|;8ffGR1`{Nn|M}d6ax-A@XK)DqA{>p+_{o&1l&6`23mmypc^#?>VS`d zuF)7M1+x4`0ajfgT|1^LdQ{es^K~r-4l82_Wn9agBkaK*~D;q`bpG*5^YS1N?@=`g}lR zU@wsMd5^}xZXo4v1wM)Tx<%vi&A@NMy%UIkO;+5aG0+NReDy%aR|gyj{~C>fDj>sE z0x`c_fu18VPzGc;{3$_&D*@)fzer|= z4WztG;1KwyY7F>*EN73#fCU@`nrlpe0oW~3@=pU<&fOZ9zX<#$)B_o= z2FP%?0a?z=GzR90dl?YlnkuGi3>1m`7+^oR7ibLR0a@O;8Uxut)(d`L1qOUT#=|d^ z_!d`TX$)|k2g~8C;EO=EYy3+GFhJYB)bkjS;g10E2v;1|7&s{Yd&Pe@ko9aAkaBkj zZU#OE_fCz0^+3vP1yXJu5Jgx~qcLzB5LLcnnZ`gBFdcNI#=txv!*bAe3!<+ z5uhq}je$czhCiq=uouYm?9mw50c7}X8UtH_EYB?(1Dk;i->EUM9?0+=8UuAehOf~W zxD81CmuU=C0U5qhV_+VT;b&V z=rW;;fGa`!h0X-lg0_S{2f5XtyMdH<9Jn0VCGE0EjRu-8TVqK`#Yn0#Wx=`j-Gf^2@q% ze?r{9E$)YbY&RbTvc3ElAlu2019t=O0qz9e59|c)2CfG_0;~ak4!8`s3&?g4d6HfR z+yN{FJ`7|#cL3-Y_gvs-L1zN@11;cAU=Ql)XMpE`Uj}vq>3$OUY2b0-W56!pr+|ln zp9CHReg(K2$ar@GKLOkZ+z0Fg&H%0lZU?pkSq^OP%7Hb&ZNO!~j{z%zGlBDfn}KD( zj{-}9lYvFRj{w=;vE2Q@Nx)p-R$wOZAt2kk5}*bAXJ8M?;lsdlz+&JT;Df+!;1=LX z;5guM;D><6fd2&S0u}-f1Id37*b3YW91YwJq@Kttr~X|98Zwo8CvX|)^}s8D2y1Nu z)&n;JYk*Ku)xQUTm7rN)bAc>>0PQcQbG`?B37qdC9#7MFOz;ze4+*vk)(b8aoFn*J zst*5(;O7KCDL7xSTrf@0EBN&k9sV)FI|W+=rwL9FyqK){|0?*D;5P+#3T_i@5UdrP zBY3T#PtX$lWRjNu5y3fv*9!8>x)=HOD)N)~bHS$suN5o+GJpMo-5^MJ3GNo`6s!>} z6Z8vOg54sgOK`Vfr(lg>nV??~KoJT35;eM9v*x*69qV0~EZ%FoTqo?4xOUs8aXsmJ z(dBY&b#HUKTsz&n+=(vyJ;JrcwbhmA+U44f>t5FZT$kOJ=-Og$wG&;3?IXCJvCraq z)^!ekHFb%uZT1e(UG`C2&)Mg3J@4vq*{*E~I}>czg~ZK1+jY!$9M?T52U2X;`IHMO z(8sga<8mGH9LDvy=LD{u-pyWU<$V#?&V)wO|xE@L9!u4dri@0t{+?wce z9Zo!w=y7)^o=!Xq>Ox|t&*j?e+k)#c-*dPg_npA?tnVDIT}eliAT@b&vdeWa`4Fz% z$)}S&?ky=>Q+80Bl)bnfNI8h>`IH`9FQjy)B41K>;d&w7qFaVM0$r zqH9m$-o!-LiNuq*?n>UBoalNk`8ci@k~>r2i@(w)x{jxu!2P+@^Qnohlb#nn$VKlF z{E>L8ZyS6Mr5uKDx92q6&-;4dvO9GT;@XnFH61#ppT_lU`Z-*;WNggj1#z?%y<#k^BFz3c4ltQbh&nC?!om~=5x5dnAwf%wthSMA=mmH>F04D z>-Sv0ws+ob|9u*19szjc)$@{cMse%5cdO*;MzU#^gxtW?$+FG zxhTQhL%AOJk=(A_qo7XYo&?pMdph?lsPnl!^c&PQ=;$EmJm~l!kNfh7NnYSx%cOJO%4&*^XURU1HJmh#*PZr84`*60; zb#%b70g0{`v%2B3D|>e~YJLBs{S#fCIh&D^b9v_xx^w8}q0oKk9$XI(Ju;L}B<4mi zxJ$=_X^!jAzJ=4Ar%FegvvaWKP=8MJU`{Ms)0~Ir8o$Fr{{~2Una~?Cm?OPj=uhGK zr~Dp?a{xPIXuvX|2M>Ry=HDs&Kf$1n@n;Uv{(q!CXd|}?J$az^-!1y>XZ+ybEA)KE z5Bi|czt7P0VWAh`{X>5awt3vi^nmUX|GzSSKpzwOc9DNv=uAo9NzwO9BLAfL^ScAn z-y{AfMP9e~FQz>B=jQ16ufU*~>Dwv#Y!P{9gg=4tAT-mrD2?yw4bZw}jsW zcj|vm!av6R1x*8*Jkl5+%S*!73BOOmzr*^#@)Q43=0D2Ltkqj6v{{>%2HEs?*5Zl& zxgzgI@vlHV;4x70+b{l{M`ri~;{PGZuLAKOCi!0^^joCS=R2-?7MOb^e;A#Dyr4Wk z^yKj=q0L&of0O!ED)PpQzGXr`Df*bTdp*owxXly)pvc=L^6N$4O7Sle|Fh!%6QMac zQHP{wnecy_`XIk|N`4QbKA;Z^{qGWgjquNx`09l|#qxygR-xBR`qm5mmelu7p`Q?W zTZI0Yq?h0Icnp&Epi}6v;=fJk?=e2q$CE-IM3`{;GxB_tBAq;LrapMyyG{D2Kf-?s z>E!XRBCiVdlt(4`;hzQM!T-mQ=E7edlUbiJz$=3s9{dk0mL6L5`I`PU`B9g)i9i28 z!NJTo{+Gpn9_uT@-zNTlkn|i8{}$F)@V_DSB<45x*9rd@ zMV=ZEK>oEN?|$(=54{*Zp92OQ9~b>53eEp3(Z53I(<~p*w+MZmW2Wr-gom>4E>VLRU-u*dXBpOdtIJL;O$Sp85YN z@&B=;_lrV5%K8hQ*MxtQj61{$3RQa)o||`2qRA5dMd#FX+=kV_OFm z{%YZ$M13KzSZK~~GXDzlwEP4qpTA0YuA3l#K=?l;`g`U5+93LWK>UYNU&KF5{GStj z%f)}2=sQ9Dmx;b}gdQjLrA}zK&;bx)lr96bWMQD!O(-HTv8+CkNg#3)K_WGM} z9)>dQlKOZx+Ug9@hlOqeFX@9qpMBeSd2DxuBZQxo7ve|`kv@vQjwpxk)4#NWKnmQ(+*{8&ReEWfTtc&OkUtXARl zLOieG^wubPHR22R|7#Sz4(Si~|8-P&epe0m|3DP~eNpnh92NdMQQ_A_`A>~X&zPw6 zzK;9|kKg>K$7IMz)X#ALeo^875EZ^KO8;x3!ly;~pNrD(fhc)Pqx`o<`BS%W{bok# zw=&BAZ&7qklzv~q^Bpda-?hW(hA90Xiz**}cMRwMX_UWJy}EIBbM1=8ptdcgtx%M= zwbgF0s+9?XnHA+rmQ;_bHcMcQsZQ;C{p_l8!(mnzQ|7F;+B=n$c2YE;sMgeiQbOn7 zSiU$+X7plZZfguvn_~4UeCOec>OyR5etA-2nJt7eGaG}oZOVQIRSQpcWee6Cb8}>^ zE?Dpy-tV@0(wrmDq9)g4(m z9=0dDUI`w%j>u~GRSj+J+FWPY+HqC~RXMPow(O&CEV8z=Rd+PCl3@lcsnyNCW34hh z)@K|Iv6B@z)_(g9O6GnA=RWXc>^J!r4D;IB3#*W09Hi*&HHVWV-Y+A+p; z*{0<}K`z&}TquNNkIl&_)0F6^U7P9A|8xk`?J_Oyh2n9bAAbOExsGtVg!DtZi@Hu&7!6NhM^| z=Z3XG^2KU}ooAyFjbLx@j(uC1M z>|L*(a2Nwt|MQqx+se)CV~3P9G&I$&4hrKE^B<1bA)=M9k1$G9-PpLUsc>ae9c?^Y znhG|p2-ejF>k6A%>ee>G74J$|Y{UzgxB6Ag_UC`VEQrdgU{hIuL zQc+#Kwz(Pq(y6Onxe70E6iu~Np=%TjE6ko*wPFH;3XjvK__tRujs_w&F1g*OCWtSq#oJ4%X9TXJT zLP}pTygNG?VQ)jW9eoPcmcIL9X*Y&e`eYLO*XE5EW|Aa+cEmA<5<-qcon!pjtC+o~`LPoXqh2zINUeOuR+rv~RN4%CkDPEp99x?STrFV>io!ob@Nqu`y zbiAX|Q{s5U)Mi58-o=x2Mmk)MbjcK0!S3T#TNv_o0_uu0zK8*1WP^@yqLJzZlV`KH zhn81L4^;~$$77ik&tszF5i^TQ9B)S%9p{929>o)NuEp~oKR&KcZx2)Z=%W&-g_rco zA$cMlkC=%mrFV>MpWJt_Nqu`ybiAXosDvK+;pAP6h+$csjq&(+62^yoVkRi$?L=*I zEKZC%!U?_dPik0i52<1F&^0U`%cOW76X_8n@g+`xxbH)9s91|9=!|lLIO)~;jUOM^ zC$2}4BYi?-$9&0J*!wG15f;bGD90maxs>+pJ-Ki1N%YpW-MK5_U5ree(6^{!os97g zSFe0?d}1afe!!wQ3Q2_V@@;%C52;}BJSNBUnB;iG)O=#!-X-+b&!)o|l{dxXb)D<& zFVEQc-ae)__DZFBES+ez@FJ^mX65|J)kVDmXh~BXkC=&s>Gi%|K$H9Sp5%B(rF>#M zj}pftraBY)_AW+h+1fc=QPGYM`NR|-@^%86Y%Q{qaf}>4Zo(vg=onuzxp?A)@l%S6 z{r-tXxcG~U=sUisXi`ZDaPpLin!hHw*NpDmU~{mo7PCQxE%=n6j-S5uhri*oqMG*S zg`c9j@r}#!t}YZBLU2w?9;WJUML*%vdz0ek1)gCR6|25-b!p?)Dl(!4=SWj>m z)fFM~u#ZYTr*5EcWcl*HY&^cCLG3*&w+f=uZ1f8@QahGUWO?+6JiiF(5&iZ+KYHQQ zRV@7)*44JD5Yh5-5rBt?wQ}*@HCiXlp|7IfN=}9`!O`jEe-e2N(O~64Uic9$+sHGO zCR#uK7m~+04OS`Su{@3j*0kZi3URJPM@J%BOjY-{!-Qc=|EDjhMKM)^DE3 zbLtD^QNJVgt!b#+C>jn{`Xs1$ip*R0AY{X(4j4$qrRofEz#*+9F^Y1z2!yKzdGzXw7MFNmQoP%ZYp0q$4SO5BCkmb^OoN7 zB8r4In<)=pRbtBfA-)Ck_!kY<4`mI7kc61>YFDgi3$9boTZDc=S<}HaaXf;41>u*N z@|bsIicasXvIe3>-YvI|(4tCEU!)Gjl-E|fFm z<+BTMapfHoF_$ZkwT3~W)BAD17F4Fe`uG^R2|;}QT5DHE%X`7E1CEmLFI=WPy&Yd~ z{oW9H4@f)n#%0RGOI?YK*6+?MBlWwpSQHIGRC-soG$EZG7!cgq&|HW1U{;6~Ymh}= znK zGneT-2O2+XYZ=zfA}`sMs>I2IRgxzqFgh#+eb>iWgebtt_{KVW6v7O2Tk!f|U4!l% z&@VP$`P#aMma3MP#uY8=!J+y5z*zF;&zc`k4&zg@D1!&%^W%(?vvmG-4XP6q$DeZe z-7;Q0H>|B~>$rQg7MOIJ-*F1QbrtoLc4I1 z2}c~hnR6BfJML_0Tcf!&pC3e&K1+ft*S0luY=|od={FlgDpB#`17C!0=NElv-#d5P z``(#pZST$))`PZpo6jzL^Gu@kChu+BLzitc@E1iqZ`;tgZSQvT?~2xr*WK3s32y6< z3FEUnzg2U4y^;|gj=Y+O{so7PTBiaZ?!TYB2G2u2;?B;tI$tnu-R|uD zPtCNRf9LMJ<&8j`i>j$F_NK+{T$9jSUL~+uWD?m?eNzJ8&=nMz_q2J&fkQU z90jBOcl%d2R-3Qo{y>-ty~M$n@f5^Xrf~fje^KGY(bFUvaE~u6@{fg?b}S^}6BVIb z;f87cdo81XJrrxbWGXaQWLnlXH>_%DYx1{qwG}3mX6g9UlP8f*^BbndmOE7}CH@sy z|FOEQWo>hvT1pk2Cx&r?e`QN!OWVx)+UDk9V>{9$xl%k!XG3^AV~l60ghm&(tzI$B zZ^V^I-c$wKJ9KWA6ts5)TMKl_jERhG^cdzKG883*RRF7%rU=&5u)ZKl|1n{L!|w~* z{MUqe6|RmXS3vl^R+KE%%ZTHcypN3IMROw|fjpNj1;J7z>y8Z5Y(x*AIony0S7;+3hjjji>y zitk1|%TrM+m+HDXwN2$weRvCyXC$UEYS?&eqJ%I-1aQR@0?qSk9ud-l4;* zs;;Kk1J=1&wBq*Q$_@+5ZY;I(MeRpht;YQpmiMjhs0a7b`B)3OnyW#vf(;EI7r_PV z&^UJV6)~Hc(8C}xno4JuMqJM^vZMXN7ULdrQ!c@Z;Ht35wA*67fkKRP8XH=f*aj@p ziFBRU($;VncB2h*4wDc&Toi+dV7JK8RUL{Q7*Ty=ZDT`Sq|?0G z_8EB27xR4)jPld(&UL~0&8zr$Z-@-JFt{2^E#vvJX;Gn&pW!OZ$GfZ{SO-nk29<`_ z*S4>*%#Ouqn8HfaluqwjA!ox2$Uj-h@6P zYGH?BuWHefu$)bVS;%TNt$_0Ixo??;G#lJsJui2thQ#>4~2R%D1#eFw=@01tMY=p+_>4&aRpmj zR@RIEY<181j`o#p4Xv2HM%*j7nl#+W(Mv6V460S?NbK5IEoegzpI%dwD!_J~r*RqzY`gG64l5UStPe^NS1uLc1)X>i5is6EFfw!Y2x_)g3 z*9YoF`LdO@wGxjKGG5mT-8aO;(6ACSAL0E)rI%X$S9g8w`i7>pO}dIIccgY@(6}p? z7BuT^4Rv@Hk;lpfYyWhuY`+Q11+T}lQZ6oS3eMuJb>C|&WzChY=QD2%+f*A%4I?++ z)((2dZQf&vqU_RbwPNlHy^F^R8monpN3Tw{kB3%*QIzxgVI>V`YqDP|L8R9l6jt+O3>@GQ25g zH`j$46;lNIc~aFx)j9QU!1HLb1B=8vf{W2rZ^0KT(*%Xp=+K7gsO4dVnxXBr05`_M z^j_&Q`4KiA9x-;7T6VmsVpjF6`AaIxt7gvQA3LfR@vGdDK+%Zz-2_BP+mJDV_eLqp znG|`yZJZcI!g65tl49)lj~^$KW|z;cu)?N}-fw+Fs)T9GDJwl?_kOGAXcDHKp16Cz zHB(xIX%%D5t}_Vmvu$3kTIg7dvqOBBIksH>E(W2EcnjhClZ9{mx`Wk@|68nNSEVh8 zIgh5+mS((#EH!=&ksQc|C^e!Dkx`8>do390LS%^rVHPG0t&Vyw(O(5~N6rAORPJnN z(%JDcH|C3hZQWpI*l%+}-LOY)kA|E~K!e8XtT<#^+sZ!S*;bBo2F{r@BN%zu{p>5! z`+MCmCO;(o)cvWyy+5U&orU46tHg4r&+q?%)Tt@cQe2o1cVB7E?~jpdh5~PY+nt`0 zLeJmbkD2s@JUDaL>BLUVdz`r+LFxDE{g`O?r72OQOOt8&GHC#q-RX3|RC|B;av$@Q zQMkD_B?WG&9(#WOrc@IHzM~evFE0&$GVX7mz2EUrQD;QOi13+OrtL%j#?N$65RLKH@pU6x!Yd2?0j{Qf8s>|_iB4hbv` zZtp&#H=AM_38rMjG)faxf`xWPi4tH)YYjf_>8TBFILFT=S4*{M2HMW7$60Z8eH1ry z=w-W;+-8A<`#QLI_zA_!ISij?PG$nXD8j~b;%|Wb!0D;5ZOi+8db=iO`hJ3&EjV41 zz~r)$K7soeaN0{fI|0cjd7rco*H>`5(^CEdNc6c9p{9;MJIQ^HUzc#CG6H)tynNoo zG;TF&rPbhSr}6LnuCx#1>Q1BSSWntFaP_AB64!*Zw{T6gQYQiIG^Ev&Sdm7f_jVe$ zRduCt6IM^!DqMYO+~74cjoZHFSxMyx@f2(d z`*Z@Tj#s77dkzeTvx_nlD2X{!2+u2UX3w(iMDAP7|8i%~#+KL*8e&d`&-Wz|H{s#Q zE~XsclOXw_JiA1ZWtfX(EZGwk`N2r?enYBU_I(EApU6B}F+UMW{xp*OO(e;U#+8Co zR9GKU_jzhHO_75^+Th5Zu1F^V*DA6AzNz#rQzZA4nnALhq~*Pc3|W>mI#g%4K>_1R znvBfA*9%RQR`@cOfY?HxDa#V?2JYbfRCs&=H%CZJt53WKjhhNS9lp?vs>zX4XRBSJi#4m7Q`NK3;&tXIegpn{mV1k~R!YX402IaphBne=s34BQJLt@C7;zWm>rP zx}x%-y_H1kzE|K(e?4U^z~fVT(d1}qf6sYSYDWKf=gyd(}&=| zMl~~wDincFSpj}DiNHPcv(_ce0W8PaZ?@+;Kym{vw&zA%z0cxOkP{~F=Wt+>at7g9 zJq3bqjGV#s8GknSL+Uf!XcLrsUcHZdIPuZUK>?xF8)Qh75XccAnO!+3B9PofM3E>X zkP{7wLgKrH)oU5tQZtg?LUadso1StA;PE8=0E+O<;Z5{#uS)M6G)}$&)tL#jI*ag@ z_ZH=Xevx^lnamlG$;`PPeD{K7;7AV{hU~*VKezr8C#_TD*$IomGV}%9)BV>#y5~2e z|3L>5!`i}$wPA!cXT-(YL&=0h) z;~NcBdH--~#)xogW|2c((TLbTKyvX2$h17%sW&MLx91sSwr3!2lez7i?WVd(+yQM7 z__MPI6Ed^Yb8i8v_h<$xNbUy>mC3ebg`v>S_;R^@t>Q#AhDc*t7aFS-sc=#UR6tII zOzV=SnO!_FTqS8ud2r`FZMS}}xa;Zb?);RsX!(d;V}A7ZcR%{Udibr!xdkV?O?z=3 z#(5{z2hK!B^7x+6n}lXBj{ZgT#KB$_>4S=r!o$4@uL=XS32)NDFg&Bv0Viwz^^2|> z17ybtKP4+xc=ASvXWC61*g%Op7}KhNI+!Qnmh9;DQ^gsT@^soK&_0FZVI!}xCv~W+$^~LLN zw)VXA%syJGUw&puKU%A&HTuldb%$upp4R7Sv7XlJX`Oy}tN$fhv3JiImqrWqfk&#w z9DZo_h4aXeL}dD4oMUm8;aq}~UD-~YpTPM=oZrIv9M1p5`5MktWa5=Lr{Ju>S&g#| z=Yu$R;(QF}cW^$B^EA%C;^aG=hNX*ea(A2?aW>#&FYIGDKaZ1d#bY>sjq{HFN#j=Sd9YW;5(2`d^HLe zyAX6@zeJq)N=3reYZ*>_*-9*|w`6AfAWrPU(}`VtapL=sPVC5wNWK&4L@#mTD~C>O z3dD(>13Iy%AhOump)TzBz?Xd~VP+?WKI|{RiMSO zPV84mjC|SBiEm!v;@g%^eEo_O`-61idt3sl*9x47;>2Dmx!8FXC)J|Ei7y&);;4;W z?5l|rhpcqs_*G(LFO*K~wF(!jIi1*h9R zaSfIAm_1yyWC~VdwAZZ}7vI!$tnUmVgUWwzCbPrMu>YOdqmD7F9?HM>#2|Heru@TD z_vKW2mYG>b8~W_<9v55uXOimuf5MKq^ReZ>Wl9|T4sq!NEMlYC4>uu>_r6|d0x!IP zxTFPlX#35g3%zauZg^#cSqR6wAk0EIsE~zl^bAbku!R*`f@6&w@2?1J;h_I6tc4rR zd#_5;3BaJmc`>@D*viuLFq#X`rxj(GuFiwSVr3cpcVhkdtKPz7carVB9tMQHuenk& zCvRD2@MbN=Yy312Nw4VE7&rl(fYJSNjmwV#F*>W@yBQcb0L0%o$8r>jzpIVi2Be(z zKoo+qTLla>f@ZjSjmnM{`D#F;m@D|13K&=hL=~v0(x~iLG5%Sgfy)twc0$J%0a0_5 z{VHIf05p0x6{9o;{6OSO1xISY07q~b%~fP-3{(O!qDwCWP6ARMMttdhp~;7lAP0fU z-v>lIibg!jP7=1ORrZl40~x*qNIfP3{Xoc2_K)b#@Wns?M~Diq0p^0nh*I(4Uh$zj zrTo#KQucYS03HM12w)cw|2tH6caT3*3>v%H9s*QucO+1MA^Vxivr(bNVu% zA6N;*2v)^Uc_8`!mGrF$48DZTf)#?Z1iu45f(1bG`=bz~a!*3x)8FOFgcXfE zzsEgmUWLn5wan$JZ=_+DMAxW-MAvOKG~NQ!7WOgQ<34VO%)C$#4vzM?KfgI>_b;42 zg+gZLng5P*bjr^Gob>1MHVY5;dxg#-4SqFE0=QfJISR;^e^*E#o_?NoyhX zfj{k1^2j2MIL~TQ%@BmsKNtB%pO2Hqc}C*ne?S$#q;VrOqaolpm&YGO-lxT%BYMhz zO6Y$jjmbju-`M_9^jyfH{!AwiejyI0IW%0;@MJ)?DZh^*y%}Nod071Y2*=|}q%Q;a=F{X~$q(Apk0AZS;%_G%rr%8P zI|7`DfYz(#IzmSb8T5RkMaziS}-n*e3xm1AI zI?GyC?HLjlN|a$xi-Y^xceZ!x3!@gQm{oN;vZ(!cbv%WuB34(%*dx`+ff#G^`(j7e zEo=#%KZSuT4~RG<40 zs?AXP-m$Ll{pZY1Y-&@LzPBPX8;dE{iM{eqZ#HB0)>2Hpx1^H2RxYuzlnNYo&!x-S za!HAB_9coeeacx`j+ zV8mb%IERYl&`0!s9LC)@O5af)UPo5VvzXsRKLj1tPVJ+w)zyvsD@AQ1I_x~6KlN43m>S82rI$it3&Jfh|KMV?>zBAt*I zE<<(Z#g8ESg~Z)orcC7RmN1>7pZ|Ai3?r@~5P5O;m+2OHCcSB zTHaMs2-wRt;^?hk-}@0QE7HL`Mas^A*01Ia#v>7uH6iJZyZ_BekvB`i=3?*`ty8#I zk*EF##~pgGze2=*Nq*E19%br^`UiQcd_($0<)7+%D0#8=(_#JPA=zl{=HN2yh}PBU z7jHkEZ6fcS^xcn(e%;XT-@@dYTam~8jbiSn(<#sObrPU!wh5`Rw|;%^4|QDR9TYK{ zbM*7O?2md+iAd?r^Q-bN*8V)5Qr}FbcR`-2&yXj&880Oof3fOwf1Yh3&-CAqLtbCU zrS|999wqPjOUhIAMg99D*8V&n7kTDcc%iqvsPy)|KhI}H-eip5c>Jojyoe&c)c!or zS7|v*xnuxGzZDw8t}*4s+n?vk+jYoaN&B+u&M-;(Hm1CI`}3&JcnJ3$zYbh>kH#+4 zmyhV%nDXN7&+{D)c5xhJrNi;JT^hr#QS$oUpQrf~I^mS|DYKA^SmMQi)TDDr5srL9W`|DtV#v$Irw%VJNhvr84^Bya*_MdT;ZAiM; zw*Y*P3Cf6q9_02910ir*douy@Cw`0nJJdi8o@ z*_&vFvtM_svfqZZY-f6mf46(c{--wC*w<+e>i2Ba^I53xGg0qn?7PrXzVGFcKWx-{ zJ?ZkZP-fwKKUvu8iFEjWR)}jq^C=toWS)=u+dFz{ZZA>!W%iJQ9@*q$UH;!DCsuwi zoi#4sLpJIc%fO`lQf}lA=MB%lp6VkgGaF^+Lfhot_YT^ci%(n6ccTr^VbB)gdFQ>Y z>bBlftb0>vFR@P~>-LE4meTPu_Y%tnKi=)zEIh-Mp99+LEp`ge6w_#)8?1QSPd+QN z5zlqbemigX!f=1KaoWE*rvG20PB9ICxoGVJKc3HQv;&dPC%);RP1bRDqn%(J-NIw? zfOY>RXmtI>7$a?HVVXUdp$P1mIyw3jT;87RAQl;_hi%QDmkhMo=6 z7Bb%`FZvl_8Jc`SAATDKOxsQUrcNebjlSXKqU*HIXU1)KLVEY#AFXq&HY&O2ngcoP==RHuzOg?Ec7LsQ4}`zI6^!*eV^><=vST8G#!k{%-Nd4kDy**oly zv)}$w)cc>~gH!T8@!{P+I`7ei-EQ30v z$zGq|-`z8r@|m|LFF0PRajnSbn8wDws?qH`)8SU{6z0*8UTL}CW!-_X$qi@Uxma~R z>|JlhI7WA^qi!>jke7~rh#$|zJO1JI`S^EFm6h3??;l;0-``rFfB)aycbs)uYK#+4 zXVotox;LUK~{47{#ire0Al*4u5HZt487rqp9>S(9&1X~4L$Hs311*@d%g zMZR4&Jl`7LknexapI_r*y~~TJcltfe@n#O3_f5dex13XUeJ@bxu92 z7>5$yz&M$Gib1OUjjTcYpL&{OueoRo=AccOjkaMH+K8DLd(FVutGwyeYmPM{eD=#D zk2FR1^Iyl@L$}*jI-B>iE(5)vuWnC5{S4-f=?^58ugK?n+|*I+r^8wB^AGpucmMK{ z!QuVZmq#8|W5GX7`$p3rCfLx;g?7!2cFhBwz0f@YX-Gs`d}!B_u(z>GjYX*2V3gl2 zr~^Eo*fap+K;6z=fS>c6qAt7?RR*TbW;@4x^_y+e zOK>y#QXeCOb>$57+Up+B16u-BU;k6dzC-Tpp24CA-&cD#<)}TH2jQMF*sc@P@yuen zb=%vhPu)nru5XcbobA=&O-p-v*K<7&a+j))dHY{?!fSVh{tRDZ{wO?iqd-3ZzTv*6{Bk^hr@*@c zSmtle|L)MQEIfce3(oV`#%rhnMSLBH}dTN{x@W z*an!rvvs(=n{Mox=k`5&%(fnhGyVd zDsTGJv>&PGoN-@Pe*tm_pw9dP`NZ=Z?p)`YihgGJ{Czgr`t$9`TfV!0hII3}+3U{g zIg>cF7;|dWI!ge||Q}su~#e91c*=!Q!4Fk6PQejD!xGveh%8 z<$Pj#3hG?wIo16gQ~n&=oB6oi?oUrIP<2>8w>_#KpxZMuwm0GQ^R3(5-R@6K5AS=t zg!xGmUwFAkhWX@l{k-V<`1!=Uzg&j8I^5%1_yzaRr`LFLo2?V47C!3!*>w9tZF8-A z*oEO`cJm561GSrmT`0%1G86Bg6}c<&NAlUqt;w(bkbR-7v?hP=rm7xm!{iIq?%Y@T z4jkTdu?l(n=2zS|^gMERp(>v*Z(7{*%tYVAyWPj9`)%tTtITTlf5f`*0Wb0!<@y-j z>yLWN-gyOex9q{P3y(cuZ9nTy-@oF4>I*aQ{MOpl7s~M*u0%Uii|4QwGVXt1SWg+= zi!MJ-zs|dxFT9L8^5IEI508G-dVbW0%bG^Q zeKX`ffM=cZhC?28>4dzEch{?Qb>3ZY0pD`|?1Q|~wMu3c>(ahWH#qfZ5bDtf;PwdG z&FgHdYVUBg<#-3Yf<9j7hsrM450+oB5D#@54LJ=LFFvm8oNhPyyhiuy_`Fgc^Mt&t zZ{`_iJ5YxAj~}v4Ju-E~%p2+XVqK@YWsYbE>U0(J#J#u&X~MfD^xT=}f3JI4&oP(p zS&SR-++&X5GT-Z}&fWdgzITuh7oWC5<0SU~)Hul%8Ygk=gt&ds;SA>Y7?yMS-FS}l zy?#eN1zGRh{arOLaanDNj6I_BmNLzlhhw9hhK|EEJGU)1?i?#Uj=xq6$9TzqQW`#5v4s*yD4`7` zCTW|t*hZi=wy3$5T2yWuZ*w)R*h^ciDWw{1tf``=8Wk0M$55e!aaGCw1 zLNW`LuABSECx_y5RQ%rl@k!Q3UcYkh1lFgy{xJP;oSplWZo}MX^6$vKw;R7O|UVJ4AwnXIf>ro~=!vm||sP4%KsK zj92vRqMg*E`}SaZawGKkp=TFtnEw2&z3ICaXB(Zg>m@$-QFZq}Z`*Wx{5|Q8b!oVL z)~;LrOZ7JFJ=9xd{fF0^vTay@+x)0cKWu(!k~MGGaO=_s|LXmN-Sd{}n=j$_f*wo1eQM{*rt5WpmVmk=zPRgy% zmSII(`3~#K^@Z3w10VUvC#y?#EV>!Stf;NofeltF_UQeZq~##E$l|*wsszxAuV+_Z zah+nDnm_|{UkPQXwmCfUjn#U+VQ3=)`I>}PxJ%fy~Z;ZV8MC-9JN{w{NZKgM3yIkQ}*jHrxjw;%yw)~*o zcm<#|4;xk7q;{=AiPbJ3+Ln-bp5iXjn=|Oh0sCCsxQ82}u*)qi;SM-@4+#{0CzfC$ ztFmqQ5P8^#EtYR9Dchm;Be~+bmCLRee4~`>cGQ%Vg(X7UasP%zeA5cs%gOd6iz@b% z-y&N~pqiLHc5(?T{h;e$}#wp51R!2=B-G6YgQ7zi$=cup7=HocLF!rI!;S{>Vu)vo|bU4M>z zi9Xz5t-hbw|AiCAKW*$+1J`ZCNv||eQxV`i8IZGJ;AV`804LN%7v&Cl{@a*4MLuUU zCFA0ZwHa6S>r!DSEz>>qv}+Aa*YDIg@XR(#|KV6aLWT?G7(X|o;DjV1+_!`beb6(bOwJYoJ zwOZs&JL&!_2g@AuUs3RXG;IKON4<^hs9y6v>Y!5Z6wm(UA2g+A{=MSaZ+&l*&%2Gn zJ~qnU%y*k$2)Vy!zr=m=e;)s=fqpd*0EJIy4SDdi@OI^x)z&6!<(0d4Wd^E_kJ3}ns+>( zMwBBkgq|>VQCN6D@V(|YK!Nq&w!d}6g$F*N`VJdphc;XeB^~TTSbxV|t=DeQ_r`Wr zSM0(4yc^4F@FmnMs&E?y_s^uLfBg@E&l8%EL~+L5bD4xwmtN?3~S=P0jU} z*&y_v8(@cTR{cM{0XA<^S={bCJG3!&3GObUb@i=D+>T$q@s`RRmg2HOWpCrH>I=Se z7hsd;;Fj9h6}t)~q!iyYy}20g_xmO6{)615kbRBKuS2<25c+jE#JvP_dtGN9ev{qg z9~wsLLv_I}DZd1anEuM}{|C1A{^z#d|4rL^|DE^q{^t(f|J=bFo6bk>yS;wL|6g|S z=2YMBp4Yp&t=8`}(l2?9xySQ2JfvAwcq1QBtFu=&PHO*K9@>O9?y&y3o%xRPipm{T zb2j7+-23F8+nMjU>20d#ZMKH_=XU0QW5q>oXTJ4{4I6IWR*9=={JiGVIcxdKAY<9C zof|9iE2?X-a$_eRfkTE*ws`?wZE@zQ#?uP*%PaI@U-P&xY>h;45scm%ohn31ubvo~ zxZiXcy6WB%wyV0y=WSNZsO{6&54D_TkX-vcGaM?jenN|M9{qWPSQ+_?U0cZ}=wD_Y-)kvteI#=b?fn)nZHZXR6spLGA1&(nuWs`&or4KU zmr&iIUnhy|Aa9cxg$e6(i{4$1T+Y)kom$^BbcxX0bk&K)x(55R-X`bB8>gY!|xS(mI{F>dMqIXwwn*;V zE7242K%)lXzr7+ghBA7QnY)M3!G?Z7tbdYT;}0YP+qiU}4p51@HUuG+|Y3yIEhERB|ot zdaMAnN_g#1Z7Ig`iW_k!Pz9?obzZj(cZ}7kR!eE0mn!Px-YO+2Owq`Iekn3pzXR(Y ztFaVRe;je!_UelA8*6sRHV;)h%GEMTA-8X_SNl~iNVBW^@PiCTcVp>jvbuIqN; z=5rY@vnqKna_xq-YMrLKeW~wgn!AUDMS0L7-ed2dHLMCTu`(Jr>_q?zS*^-# z)z$cNXDI?TW!81_H~|zt>4^{HOD%uk#vN6+ph9)k7g4rsTXo*9D%Ck|QH<-*ka|zM zhz4W?n`KwEY3u5mZTR$MRVh}PmNJGC)WPu98>`AC*R7^;x0aOe;?iLL_=eRt;YJ9P zs2(|6pK@_hEved7$*ziTTC20LeA$2N+#n|;wDo3OAoJ{8x~safq8eiY;gvV;DJiO{ zvhd&nE2M*@UM{S!Kk$r8^=>)u2@`AAWlUMnhr*R$SXAu69cZjG7MbgIRaMvMRj`U< zam{czjZPo7QZ}SnOIK9w+Nnd4#hYhsv$k8cbFJEWR(0u8YY%+2kC4ux^=WVFQ99`16BxWNK|b<#FoL<5#V^w{}`p77N8Cw`Qep*pgeW z;n#huGWZi@NZTq6ibVtpgCgsSC0G_>)kv^D#5yOz40(QNTkEnVh*zZ5 z0oF+go(i$J%{7lWS?~m@4hbgkVKNS|bYP&LAuQWkZ-Qop2MQc1-yjTQtc?ndIE)BB zXRHp0m|#NC=<6a9sZ~?tb%}@v-$*uLQ$X7)iA-h+m>MkT0FyH%DmNrzf~7%LNu*+v ziu-@_K=qhlS&%g#uUd(!4~dxI(IBftYYh1&)uEusdJ{YrWDUrxRiZjVA|{Ae-_$Wk zg_%@mf+Fip5HIvgssVZVWx+&>AbN%g<^)+KI(f)9snUWX>rF5>$QqEBi86b?Aukhb z3Z@#6SF=Q&4T=mv6dc4tqo^*JYP|^_2(kuLkWt9p5qY5IP4IY- zRbqmC5m%&iAmkfGWkHbv(~l9^6ckx+f}4Y^0T!N>s0$$x6Aa+n20YN`O)x#k8d8xj zC^Eo8lUG_$gsi86~kIqS=M&um#oHOM?-QYDD!Af3>NzOYRT~s3GQp-GtHcCP3d>`C+@CsJE6o=quT{dQ z!+8C=69|*z;h_3;jS@T>Vj1mbt0`2zQGQC4gOwUDHVA@MC&7auR+|KSL##~f%*Z28 z5DE86@JNW2ouH)}1RWi{Z_xDhCRi6_4QNhNk8MMXR7xpp1bz5S&Aom@nY!>R zZo|@hWwrGJ6-C{G9#nz}nBru^5Q{)wLw;?3DyN!12Qv;YJwu`nk0B8#7Y>c4M-Ej z7|4}iU5M2u!Fqg>kq4wsO0YM?O2-H7cq+ zW3XQRZe%hfeO^etsJAbkV)Cj=gb=&KImU z37!eDlKCbEjtoIabHQQ@hKsg4qwaTHr3|Jn{uS)~%Wm<_8AI91M%q z!Bf&A=LFHW2J{I_%t#5Ev#C&m_=ul6Y->}b>a++EXwHk2DHE9*L67y3ND<3ac=OQh z+%8cULLw&Ej4$u<800k5B~gBC2(LwoOfVVkXR%U{i=yBRMw(Ef~=Aj0L`+?)4^UEU~Q}#sZ@dES-PIH;SyFq75b( zQdBxn(SZJGjBO1XU1Wk60y@7zn#80!6HGOrs7B;uP-MLc9ttWRV2(9e=b0dgDa8cq zf~)}zYf_~IMFyB-L{fty>rF5aWDOYe2PEoHNW=tvQ--V^lj=w?)c|vhNMlfBy$Lo2 zSp&@ROP(pgyo*e*KFAtSJ0?{iC^EntBa#*rS#N^rLDm3s4ocLKkcbJ!O&zj!Osb|} zssZL0k>;StdJ{YvWDPKG5KZ7kc4Cr!?hYfats7}rPSD__2s@EFSzDsYGfEp{S)+A9Eo+P} z14L6l0F+t6W=(4Qoj^&ABVX{!t8JaMuX2#lA;s#bmmJ%`CSy@(U zOi1rV zwg;X%%zoUSdqA#)v+e7KdCe}m-ZkL(IN3Un!}I%ACPY;r;F)Sg{{;9ToUhQfE$3-Q zdoD@vw;@mu=UD(Dk2UNN!tHSOc-!|WV9a+(#6AMQ3(h+{?iE0^fB5$S_M7nhPMaOi zhckD?Pla#A&xLPWu|G$61%lqVxGMmTe+09)HzDkgijLn6wBkPm-;Tczz9;?>_}=(d z_`dib!*}9);YY=fN9m)j5gS3+vk~_B3*#37?fA>#d*XMI7yn`S{`h}~pAi2H{8TFz zAJn$G5R9G__Y%RE;424fSS`FifidhqJhA%`{tLs^akdv4Y~RPhaYis46C0|&FrB7+(e6dBZ+sK}t! zk%|oJO(JRe8lcv>4GR6k6GBGr2ZIebd?YF$?rWeN&q(_R6tgFI6Qb}HZT7RI8r%_P zVJ0|bNq3rXR9Vtt6OJxRdc=hNW&SpVU&1{$`yQnB`pLWS${EsnTvWV&q4CrK-e&Jgp0a73xahyVx}@=Gfw46uzbWUMPhf9a1tNJ zS4A8#N5y`sKlxaH@>!57&$&wYhlZT5$n%C&jb_C@2|K33;`rRSbb!b9eI1C|e0*cEEoGrn10$f?>ZE z8;6!{03#`7A|W*?A@$#YH-nwTX)E;!Lt)nPrLrHXI80jp)MpKq%yO__skl)nM=G~P zR@7+E)a2A(7;21XYKj%hlgd%BMh^FV7&$qALfD@)F4UW2U^|COQYyyzOc3mjNfSUU z0>POo37e=!uLi*$lr#ymW9(_ji~wg;U?L%5RBGyI;G1BNn!vK88EPV|w_=}z6{%n) zzoraYhTzB~Uka2vd>HE=UY!udSs6*K*h|2k08J^Mjpc+f8^JL*#jZhc34)_n_=*sW zS%a|cy9Pn$iwLHV3!BQn3SrEKz7&opg=?5k}zAWk2CY)O4??ISDZJa(~ z{Kb&!gyHugh7~amm5(_t&XA~mkYfyq>c@PcI?f{SMvjPm3-B=p_Z%v3|fTeeG6bC;5&2`Ow%s)IYjZa|BuSYcY#jsMR`Y7PrjBxBu zczh~3a-=%l`w^TtY0_c9LvYW*T@#BRGj>!J1SfwDVe-EPB!9{lT;P#GV(PYVqBM-K zCS5O-NeGR@nxQdZ$9zeFP5lAe_pAa($3-!2a)qS56{zwt3=&8a$1~rg5%?KNOU42j z5wM3}1TtWYW{;BkqDVavlycTUDs4G_u}w;_e}Ve7?Td;?C6chxuHMxqZYawn*1`x)GB7Uy*5@lCtSumz4dXvss*)L2&XO6BY2t2 z!>*w5bDAK-#<}D%cq(@z7+i~`bB|*>|YD* zb-})7Wt&97g;={kg2d-_V%whnO_(-l(o5e&ObN1N4%Pyb-mJf}D}D$)F7D~rW8TpS zljxW!!R~k%uvI695%ZD7;70Jrj=7w-7MS#{Mo-1n&~uo2Qr^)Blc?7u-hD3;pVWzA z1om4R!iXOt#{7t|7MS#A#g<+13+Q=+dd9w^5hjsYxMlB7LBiAol^90E!nna}Vku(G zPZulOq&Mrd?A^uC^FHdCjG1ft%|q$2(oGVx?#bT$0FvItqz}mK^+id&i~VVO2dH3= z${365qD36YpI03t-Ka5(l|^h4LU}g0hP#{|EaryNJIAfa?@mt`Reu^59 zlkBtO!GAx)^K^I@!z-1{%pR0$sWpO}RrXgwEUUw?;1NK-;IZUMo*F1nWb-7SdppAg zTGfXcUaP_|FaV20*)XjvfXSCfv*41?z}`eAij_pm%#tRv0%yrzA)*YrNb5+$w8f)F za7h*nN~4ZxMu%DOWR}q^xf&u$$0b_FX-S(Vga(j* zgLclVNTT{o-~LIUXC&fM?;)De$7`t>t3dvHkX&|Ls?U$E$|Iuz@tUs;QJo`zg* z2Wh`W3b*7;rsm1Iz58Q$H2yjb*k-G?vZo)1icnv96I8ITto#HzuIek>RL5G<4*HAC zphP8J@(Sq3NMC1vANehbM~gf``UX2SfL48$;Tk2otW9h-OJSr<_o%wGmSw>x9;a|q zm4`&%q@rhbp%dhOi`s5cRh#==hHq8jna9{?=OJr#-BhPj)R9>R=2t0sm(AZ@OBz9c zjr2ZEw}DpGd#9$mL95z7py@cYu(~d*SF|#0g{e&QVBOyRD=ZY?;t=~mQ>l4K7^>8t zfC^P=KDvvl)CYB?-VRz-;%DvI0T_84^bcs{=k58VPlHxh;LWO1m)wd@aE9?e4Xfmz z>q^d+B@1Rv#!_2#*hh7pB;aJ0`wJ$0OxNNs8Gc-cf6ed{DvSZ!jQLs}nDu#xqHifh z%Z^Fx1;HhKu<@r66rGksiUn`rh&}z277lsQry6X!ZdGBe*hT<8>!!wW4=k!!SfpqdpFl7 zahA7Ne+|j>G;ikxz?@mfYW*`y|5tk}y4lQJGE~2^J^WRg8^^Kk)!}%C9TkS+0+YjO zlT$?oR$-`fM4V^fNut2WnUw~1#b(H>lSG)jwaUbs=l%BXJ0bTvOEJ=e!oMC~`02SA zoS`22bx;X3bEM}9lyD_>gtf+oXls>GYE4EFaM-(l3FTFoTkOSDz7Yw6H9P%oP$A`C z1f{zFVvo9rT4j`&XYcmzIXH=anaT>N>{tDijYSDU%5p$u(6RziW|a7+7|ZrTSv-b? zy@ATAkRW7Pb3bL@Hp(`LGNZ&i_qKOG4`myuY%`VFurZ`;A*hgLSA$ZPZ5CxlNy1cP z*=Tf`BUHA7${PA9d#<0dmyEIFF z6pZBw&O0VHiE@L9Uqs?OCXRZ?#3oTuF!4k*UKJBZzf@ie1pI_ne)tYuB7=`gzH;KS(eI_io(4zzvX)w z^Twztm;?R@zHb@=F>fGb`{p6&L}T9aPafn6-{gGUkmQ}3YaupyEpChXN)Wo-%L`rK zlQ;+Zs;Phr#nPuFhHjttRX5vq=4Xk&M7sv9X%ZcAK*>dYujs=nV8!P5c1m58v&|Jbx2ogi2Eid z`YS;w_3Hkm|27kc`^UJuc>pA@)Tg8<@}q_vOVaZF45f5_gyQ;R(i5WiWD)%6Ux3kq zaLi)Z^%4j^gpA1n@fQ$$su$yeh(alOzbEE05Mx2`sySu}h$$d=Qi;h0F(1Uw(NHl< zLAW3uA+Zd^6(D%$K4v+HEg+u3PmmZsu(}%rF9%~*fVd9?uY_V&g7_>5)>+Id5MKcC zeQINmY5~C;tud=Xd%f#DBrW6|nn4miP6y9AvoVAjNVnud_jl z<>!S=fvGPdT%<1T$MFJQd6w^WW~UyC*nJ_(nO(?o=4P#9g}sSb#Jo>SA{AcwBNoeRQsUg?5jf64?4lVDpdcVQ|zlk4FH-g z(865R8&tV4kcYWfcv9##K^+_N`y`kk@h1H-q5szOL*-}kfz|5Bj>tD;nGXGT%b$`A zI|VNY8vD}3zD_}j4nk!5E{QoOIF!B%L+C4(bgh_rcytJM32JW0ug6b39u0z}xYFlg zUJ=n$$nO(5tgTar`LW(AbVyQ%BK0>(`l0mm(vnAwpm}HF7%tuhJ0j)JNjmeML1daj zi9aTI{GH@+)xl%4V5LEvy$3sTFlKpF3f2nl6|561#{@grVba$`q^}u5K7Yf~e0GI2 zxO_ONUW+^%`xd-~13}CwI8ETd1qz>^S-7UK*wpx$VDXnbs{v;$3)eLkrhO{_HwEru zxM^@R;by_jhRcMT50?eE0FHWjWFx!?ZZTXAoC~)EZW-KixRr31p3L+=Gk@Q|PhbDW z54L~mgQXW=JY(lqe)Reczeyi;UsFbMYTSx19q3!J>*(~y8(H`1YrI9-33~Ded8U-|X7CO-9%mOqU9vj6HiSG_W7;i~hG1!lVOOrm zOK0ACfeaVZd@vlEo_n()1 zc)#a|Ke%(mzgB$d{@>*Ms)yqgjm6*c0k}-KT(}~*Vz^4UI=BY7Mz~{et#BQ1U2r~} zd6VJzf^`;L9^6K_Qn(tp18|4nn&6JZwZV15orSvq=fhboou_NKe7H?;WpK4{^>Byb zn&J5F^C`G4xE?rkH7fxw0GA1u3s(eJ19t!pyL4MkaD3~z4em5tH(W2AADuDzp#Oxc3LckXyfc2Y(CT+9=n+ESgD~ScCU_)>eQ6w6IMkC<;4>U_ zIMibdV6M!w>ZdDcqhCF%0DYUp^GPqN$ofDmE;QlRVu0TV_Z(c3%(+~fMH`-xIpdpR zgSkDpELq3zz_lF@^>7OKs!1>MFNn?RPC4RD9jn{(pp8DR|6+c;C&EKLt^;O>KJ{b( zw9&_(o|HFrd?(6A+T_o>=E{C)(|oa~TI}JkPZclueGYumrjGc`n{{+G>gTg?3sE<> z!#xdW&R2IzJ3cJ!#>Y+6VfxKvv1yl-;m4B4x1=4^V=Ty<*JJ+`=Od;!ujqV7^qYR8 zZbOB|^9~M&b_$SJ_B^Onn4M!e|{@0WTv`qiU4#G7%>2f5T| z+Ckk#0&V(RkLWk^hB;>&;Z?2RQiyztE4Oa9U`edL_LHSQa3a%q^WT2s>9xIapLy{EBYxO(b;6~oU+>(~ zy&>^?uhm`o!Q7p9u6?L&%*%gzt7gTYt1f#5_}Eu{FP;M?#NBlKnc*|zpGf*+*X*(v zN3kz#x^vo8R5D`a$=> zjTvuLe)9IZlSPky>ZM2K-r{*+=dV8%+gTI!6{ly;nfSPdQUCgK+vbPAb8pV$yMH+9 ziOH3LUw-knAO0mU{@llVpSk*F@5(vDKec}U-p99Y&&u(A?7sI`JU0C1)c9vlqqDvO z_gAR8`#l^V!;XUE zigEUP-T+Ah;^2)UvUt}>W=XCyC5yLYI2v(u!IAYKoUk}n$>O~|NysIrWbuZBNb!at zS-g8FQd}`e78eqV)GHv#dIV1F;(|G{xQA8ATRF=Ycvbbndq%uY2cS2HJ*-DjMM2du5 z^D4r;W5)EneI_g}!6&N$DTKwlQ)Ka0m9V(nmMXdQ)`v^HP$lwC5QSFg|iQytr3Ug_x zq`yea<8o$^dKwaxs(=$IuHq((OS*;iCP?P;7#w1GcTdvuW+a7qXHtZ@s+cS;F%}k= z`;x`m{gRL`%aHYbIAgJ7%q8b(VB_E&LuSlH)zHPeh@z59jTys-7)XCQlo{WCp=RDQ z7B!sy$l}Uq$&72g$>L&hVe!T;S-f#93HdG$SwDvp7MCEC#g)mDkSl!2;@b_v;u|+) z@f93l@#Pq@PQw#jT;EF;+e*sCD+{vt&_Y-fBuBo1A-c?U0wsBbUrR*eI)UeR9Ya3> zIZwhp%n(P1$mfBJ93HIBeg|hE9z(@*%=6%t7c3c|->e!ODt+xcq(Al!`M179db3t< zsQk@xyrJyRl@gT=Q9iSlj(2d;Mgz*vX_5!OKnPO@#G55<$00LVyjinWjQGLo*Q`2g z9wNP2O2(OcF#To~Sp5+C%}TGDA>z&IF7!(t1Nx6y&NWoLS;v)!nwf-K`dUrMH!Ft@ zg5@2g|C(Rh#VFjQ5d+hkbt*lKA4I=d9)$u=Hl-!cgTiD;0){H!Bp{ zP;=3Pl+P?O;FE^I`d4t>0PG*Ef0(5J2Zo3@Pxpt4HxKNGicgrTD{iRq6?ljE%y)>- zeTR7SJiKLy@;#29Paf-|oMi34U}YAbk)xVeRrWjVzBgxs`k1gahZ_R!DpB7iuAZ~0 zq@r}k>}{2mbNF3mexr6yUU0vSB783QI&9=qJ!e-@8MdIgV#Dl8VTDNzwrR_44 z?AlXOeq-s5IoN8gnR(wg21q%~e&~D$912RR1qE@2Xv; zJ1YLiYzyyF{9^dFnv$~rf!(w|YB`>X5rV-cbG6^sr^t%1V>#o~Tr8O*HwG7)CAdDNd%U7-1QGsvpSKT7? zRm+Sde%dX+YW41IJ9qSF7453sQ6A0;W~BBv)p@KcEUK#5iBq^Hv9H6flA2u=dvLx7 z2bEF1V>f03oUK6OCb7{G*^0Wz+|w1i;z1O3b;Snm4WYIN1_Srfm#++G;3m4>MMCGJ zHhj=Q+@%iwQt+nPPF##9E6Ew=NlS7@9&o1km-{9;qr5x(N1cnK3YRp2B>d2c=83}^DGA9Pkno!1&x zLou}3NaUTekI4#rle|~@bHHYX7e#rWv%rEOC+;{;rZZ}vwqb&U;hB>9X_QvElU2^WMp%6JwBx_f5;Q$#zD@_-}Fo zp3E`G=)B{=;0gPp3Y~>f`iqh zfU-hoA`3V>3bIZV>n_UwMTU+#(}JOkgQ3_c|D#Ua0mp`V%afk$Oo>6l$x)uHkxrZ^ zb0kcwaqK93bO7v>m2*!xvJ8OR6a&KZfE zy)gx-w3|HH=(sVjA$b4o>=)iw?SfUX%6sqa`<#iS5dOsN1!Lc8!yMIU+z|c-@3L8_N!Qf+-SDu+Om} zKJ2710I^$~l>JV|ofuL3oQ!?Wyr|Vq#u`vakJyKuOOQG($~*i7dbrNvCPWlC8BzPu zpZ7V#3!Ldu2UPOuI{9=-o)hJ-Qlco$29(5mS%I@2DKk-PFylsNmN!A=vd@{tVdSkY za01LDE6RT>aw~AIDR2r3ocsc3Vgbg_T~1=YGwZ`NtA=H(43!OoBYB@=d(uXs?jN|r zlVzjrJ!#3F%p_-w|1oD6TGM;R^5?{OAN(L=$9sR}K~AHnDhU$|2D5XQGt&Q(D#*xv z81hG*5g6nJXuLXSVym+ZWrZ2&zBfVT&CVn*MllMX?{)i}F&z7d|9~@gEl2)Y zXhuQCqaaW-7nL--2<=(m;h*|fs<3c~?QT^kw2yO><-PlZ7|Y(zcu|Zou-pOK zG#x`eImY|qUd{qzy`N?LNR<6`PkIu{{M)CUoda~8La1lrRH4q;b5~J>R za_(>zLwh1BZo*Se;uXlT_Jp%G-*FLKe}%y1-hB`#guogIz=|nolx1ri7aSP**V~YZ5?KsJVvy&0_ba{of_kI!3o)lb zjZ)nQ)$6}>Af3VPR-~cIFI3EHZsP0;WpcQ(1*F7 zflv7MIq@-!#Q9|yPrFf`w9(Ei817&;RQ@=0_iH%Z>TDEuEPB)!PufT)CTgwY+>Vh4 zq4Q1@8jQmg)8Xh7-W&Eg=$E`c8X5Hr2Htrm=e)BH+RtMQ`EU`oAG6MR$9EoMWWVE6 z`6{mONyk~sA>*K%jK_%Zd2dCsB4<2K#y;;Y46nJsixi#N)6P_m7F@1iBC;^Sj*Y>| z8>0nN0(v3j5@Ey$*o_f}9y%VUZK}qVP9`Fg5Sa*_s+q>AIEdmRX%5QF=^;TyCa?y1 zzVF8Q{et5~eiQfMgv9Hr0%tU81Y=>Yz{RHJ{iuDOms*}?8}}&jpdbyaSZr(7 zg{gQ3WLt$j8r^On`DcKM;Gfp$b_%~8I0F1Ojc%*(j{`@6e@vr$RQQd+Wblt@bPo&v zAP^rKEv(n*9uR&l5Ua%tYc#r*!Y>8JgI}!CEd&tW{vJ9AoDK*QeQrh z`R8eLbAU{j0c5?TYjo3qlurdRe|}Pz`TK-_VY1G@N27ZVNIhqO>^G-1x}8Age+o!_ zZ9wMVs?lu$GF>x}_1~n?Z3I&OFp&8l(&*L+zY@sumuqy(fYh@I$o{rbqgw=I{`o-a z%LOw39F1-kkm=HZZ0CSRHx)?vWFYfT(CGFBH2*A+`FCk_&j6|C6mSIev}<(RfXx3S zkot}SDc1;Odmqv09v1#VAm!?Wt^_7Ru3V#A2Bf}XAmxgH)Rzln`{ihKvn4)5;!}Za zmlTa|GLU-WfYf6FSucHf%nfue0IByZa3s=oX>|Ga4dqV(i-2uF)(^jr&Hix!cp3P$ zzCIZYcvYT`8~_^2Hk6O~4i4=K~9X>A*~+OVhX|Abblr8~i>zAO~*g1+Iqt zIbaIx>(=O=1ug~uG;j>~of_Q^U@rLWK&EQ}&Vs(<8n+w+G95o%PCFZcWw7&zMz;Yt z7xD)+Zm9=SUmb86uok!+SPq;HxiXDgHUnpX-lTC$A#f(>e2rUjfEl2(HE!Y8)R})K za3}K5(CDTBvmlqOaZ3V_a&f@xAm`WU^7R0=TkiyEKj3_%>(aR843O>K31s?{z#T~6 zqR~Ar{AOS&_)Qw!!@_R>mVkdyqk8~IeS0Oo7PuYpH5%PYU=C=0IG*{H0k?rJ)#z@L z_>I6hu(L?x7Jj82>D+uE(`5kJZ_+iosX(?zipDJoKvf^Wt&sC;bkATd1M8y`$o|>{ zTm{@H{B$7Gr2<(FzPd@e59>^rt_w)I6Ug{eLbpi#L80p;zEA_o0$zjo zLX9rJB!b&}g?Sp?Od#`319JWhXmk^V?*lSFF56^&Jy?80`7R*mr!yMeQ^M!soaNBp zs?lu$a{f84(QO9Oz9xo0<(lp1#&zl06FgC zG`c<@?X-X{?CHZo8=%_@%mK}<7Jx2ay1W8%$ABAwO+faSBf$4V?yyF;0k{eDL5=QS zU^e<;t;Q{7z(q(`3S0x^_XMan09*{YRE=Bw!nc65?;O_Nu>HAd2kFzmLi~4XbUT2! zy<5oldx35{@G8)48r|bSrauZ~`X=B?#B;L}pnC*}yU~UGngh_~s(;$$2U5NdD~p-_ z0+94sAmclQZkPC0p^r*D-^ieRgT&Vh%{Q?&BENEt?k3JPH$~?n%OSX$G=Bn>22z1+w02fUNf{Annf(3<#zGsn-W&dHb-?iSz|v z0rKzB=$-?zzPmNL9YE&CFQfps90gK;6Ht{ONPXNrh;$t=mg%u_n{uat~;xaGjL(8tyMK(`b~`-(NXn}L|}3O8wV`9=flyHKN>0c5`11BrG7 zfb1Ws8r@_d`$vLCm#>`B?hA=pz8lE&T|##N*FpZ2MzHfl;d|}$ZrNxu2JX) zAmrSGK(<%CM)v@44d^1>kGL_N56E zo?lj@e7?{*K-!a~(ai*|2A!eNO$XARG>vWokotT;=6_+h)^`p_`i#(>Lbn6+k)9tF z0=mbA-vp$dBSO~$X;+=lwLsd%UFm>s8IbauB)$+x`8=VsfUKuXjV|BvV7;bmbkl$= zM?j;S3}k;y(CEeiIZpfK&JwEzE08T`hj`i zUqGeteA}bZ?FLf+Sym?WcWHFb0C~RUevUlf^21kaA$JtG82o09ZX*y6N1KSX;2#m1 z2--aaq1%1p|U9K-wP%#82Hq zzed*rvYvZmbbJqR2I9|Ybi0An*9BzyPT*w3cW89mflS{j@h!mVh(E5;JqBd@W{E!n z#80w9emocG^6O?yUoY`>z;wj#)#%m&nZ8ouOM&>wR9LLh-2`O%B8e{qPD6aYMmJaZ z*}#jz=NH+4Zl>@vfER(EuF*{c;#N^%K%<)ir2Yh;sz2a-#QQb6KHxmimPWT5gNF8U zFID0xAk(!17eMZ$M)x?7dXEAr*9fE>-*TJ-xkDP=2H6pg2*gjn!VZn@DIk7Q6}D@1PXgy)o@&v!rBquT&PQ#KJfZypqy$a%94$o9a1zQD=1KAFIO@it820LzH6duy(9+db4 z5?=$vR9sjt{8Hg>6n>%b^Ms!T(J=71KDmwwj1C0CrxC# zH32t358u9vgY?m}3`$ww8 zbK`i(xqV(O&-WQfbJKdtb31yQ{PF!qd=CwS)>pt2Ll^5koD^MI7g0a7jlNV!xX?M~6?CIcxK z2c%rDt*;9&XjGpqXSxp1j6Vt_-6V7akm>7%E(5Y(<6feY=a+3Tbrl9Qx^X~cRfw_^ zT^|tgt_8#?xv;Zlq*bV#|unX7j~f{(2oO)fR6$5fygU97x*8* zY~UAxnZUb%>A*XI0U-KbdU{)s zKxpc@9W+46GyjW`j&i7Tl|RO!lAj7>{_Gb_hc`)8{%9kW{vsf+AJ7)@yk2-6dU;*Y z4QvIT0rI-wKY@+Fw}3qV{}ssd{+qyhU>~p!_!nR;@Xx?X;2Xd)U@x!;_#iMJ_$Od4 zFdq443O^nAN3a4w^cCy_qUHTS%nk7ta3uIW7_8L8^Z#qWE?_eFJl~Vg^Zj{XD-idU zxj_1;kj0=lQw@bT{x5z%Jl#fjnPV19_e%pXcY_09%1o zz!u>j1O6IxGw=hzM&Ta@o(0_iyb)LrYyj2)KMt$~Rst)5hk#{3_V;371#pw_i-7F^ z`M^EET;XQ}IUX{ByMgJ#4*(wrodVniOc1^w_$$yB@LC|x=f4E<{j?W>-N5$&yMVOw zG?4Qa&+AtL+kqbgwgNeyv;eOF@;py|Gm!I0BXAk;u<#pzocHR17#s0*KQ-OZrTR_fN zy*LSu0rHDZY~OAm$Nw=P#~I%Re;8N?Yy?&UKLacS)&q-y_W*g`ZwBT9KM%|Xeh!!k z{C8kFun8CdJ_O|X|KETKz|R7EG4FDm^Z+?Ob^|dd$DbB{2k?II+kvaOhzk;p={Q$5Gi1V~MkC0yk`Uo%|i1W2Ne~bd137YMZ z4*WC_a~Zz~qRtxSGt_6+;RstcT&L13a#h}sj>iofe zQv{mln-m~)DE(grQvVhp^=}4JUmKA6E(aC^7owh+{#nqOK&DFvE&&FBmjMC1-dFQ` z`1L^Uc=Zxs6rTs8%A&l2e;KFg=LEkZ_z}Sm3G(?J)A6|-@hxORd|gmJZxHo}&^rXT z2=Y^{l;?9Y;JRB*E(pHneCpHmSh3XT?h3!Rw!*9EHuZxCEAxLEK{ z=-iZlRqzGD=LPxYL&o!C*2Iqr-YHlvSSrYEODVThkY7+FeL*l^FjsK0;8?-)7(A4J zS@1c*uL#~PxKHpRLHR;c)K3$1`tJ+w6|51QC3unG4>0(c-?s(%+=BF8!PSCG1#Q7M zFajvoCU{bCuOPR6VEhung@UgS*ZkiLo)COouuAZH!Ak^Z2?hjH1cwRQf?aW1|7pR0 z6a2K`J%alMYXr*$uMylJ$oI@yjvT>n#A^B(!AAu@CwRZ$#|3W}yh(7U;8sEIL80nN zkejHH{)!;x8qS+hoPWp<2zKE-Pr6mGQLs+1STI*GAZQ78VX{=|1setH1d9c81p|VX zU>DABD!pK%V4YyGV6I?5&=TxIVwGO7QLs+1STI*GAZQ78Nj9a1%Vn&4mX_If>@!@eUvkEh*t3VyGz4}PIW?1JipSNe&g<-v*>S7Kc=1|OG_>D15@Q=kDCnxrBtjE(Cdm4Us z>^b;-v2}6K7k4Nw+H-o?nPJhM`j~?;wx@e|&v1|D;P3|chld{-?(?<`KRLV=RQvE# z@XrkIg5N#-9Q>Z)7vT2|uZxGK_(SlUw5KldKqA^Hu`dy|oY)J$ zFR^YU$~5xuNZWIIWEaAxN1lP-HS#R{gGmiZ9?!|7)}(09p`^n}wx=$+J{h%^+?ztm7~MHK+H-bvH~gN_7e>RjFPZJCMSG5pJq8WOC$~&S zoliYA)%G-`9Z5sJXLVJh;N+77=V z?NAy@p4JHeR9Xl8(`jemccq<$-!tvPG~07(M&}IMb9heU9ON|T)Eu9;X?pYYqtkuf zBbkkvO_>-4)7z%Q-Wkm^pk+n}{LUGt;UAuJWDd$VrwM-Boc1|>Pj6;lX0+$v+=jW) zp2KsG%tc?A+Xufb>r@tU%IbvQnRO-$H8Hn$F4}Ew-8|@@-!>l_vf9BvmDK^iGwU?` zGg)2m56)|VOw;^k$Q+;F0{_hXF8Fm>2N2ts)datO(ZNMN@8Ly97BwzHT`xKcs$)^- zqBEe*F6xGVVNoyqgNqv$L)YSF_$`Z1F7|o57N1?*4XQrpV2;mwDCcm_5zH({bB=*( z$vK(R3T)3gmD2${opUCq3)r1=E~f{0&~0!Jxu{>a(e-(cyDjcXP@V2+_}%U~@cP`k z%MM(I8ojLfvZI%w-Y+`~>cVBcm-T^aUDCD$yd`Jh_bsW*MUCbjfqyc$75=&09{5L= zHZDc4T6zk8*V41_8ebc4`K zas3gGG=aHV{!6%ir~F}wzl`~TZWj7UTz`^o6#7wIZ!>+mq%R8S_+t`(g7(BTl#PdD_ zkB3=a=;!qXk7A*lg??xf;!(a9vA^vi(6GNYQ_Ft?zY7@OD)HaI?l=Ae7JlCyKA8$(Vct7n2?HBrel7E8Go29%dLSHTR1cc^hbgKQR6UVLi{lNTl zCI4Zx2XW~lACUYqg?4CP4C-6zZ>r>%E%En={GN>i#N%hFI=)EapOpA>5?_el395g@YWZv+>2{&tL_gt8(ynYB|24_KSoHmh;|KN? ziGAGBh2`HQ@w|?wK3Yxz2fKPmN5DKy{LpuT#cYs`Eh^nGT25c-p5J`nmInGZHe z`FF=cAM7>Xt@^x_Cq>G4wUozvw`wBek$aR%Z?>^>-`8Q7VuV;B-Z>#9r!S+UZ z&3CYhSwEo7cdtf>J?1-CZ%)?f+abpbeDN^63g}zAoQ8nPeABz$^4xubg!A;g{~92Na!co{to6R zX}|l}-q6`KU+d={d+``EoL6{!kL??cd;dbuq`olvThbope0wwG82?9+?_~R9ZpoDT z_$m5MIL-Sj;pfMX1a$g7NxzQ$FBbhLQ<-Cpq5ing`T7Bt2l;u>Zaf~RJ)on6u3~!7 zV}yPm#|P*sLN6eVG8NC&>3M%5oSq&4jrwVj_%BO+8TwlGSEQ+w_#4EYxuV}?JleD_ zTkH2we;B=&^$mMg8hcsah`&eV?~w9rl=u&_J`sPf#Ai$S$|e4ieH}v2qkWL?GV)R%r=|QW#NG=MpDXr$PVDIepXrG_ zzAg4POZ;2tE3EI1c{-k(X|lg;l>YN8jz7@lLi4>R()S7dGRGt6CZS*F`4)7W(0-N& z^bdvpE6=x}Ul%%-_JfX|rSm_7Fzq=k<0Do2bGpRmvA!^-JH-CqdbNDE(2vkwl-G}T z;?XMh<wSCH@)FceT(hqOVx!pGbR_NctaAKiVVVQk{Q?^vB&I|7XrO z(bz&<=q)l|9TB=BpyMAF`hbjwuL^xw^nFX{O(-|@{Y+?A?ERh4d1CJyLT{Jx6q~N? zJ1gxwTIfGX`%V)&QSzTHbc)p9N}(@i{UQG?LO&+@b_)G<(YIIVpG$u^CiGe9FKt45 zMBnp5-!J-J5c(sc??*y^LG-;U^rO^=Ij&0PgG3)_jGy!@UEarezD4}q68}AEZ)duW zzd`!rNTEw5|1_c3v44)hGgcX2SBX6vC4Q&$*Ih#My)V|!exYxY{(DI1+ob%T7kYnk{waw+LVJ<_HzfagV($wQ&-axX|4oUXDC6yy5AKaioLNjbp0$7dq)eMEA~wnx>)KnPw2O#e_ti^@1=iUFZ5g~Z~X$T|BV3b8-{1y zb2R-j`!DD^q5sVO2>KzR9oh@}Nuh_)UeG@i+E05y|4wKx?FF4E=kpBO3wox|QDRTe zLY@CL950E;U&iyA6wnyM4MJbb@dzFNBJ}&&f8jnM^eB!`)OlHx)^}wLo?AMh>!16P zAL$0v6OZ#YXk2fc6MNc(?iPBZN5`KPdXmsxLe~j>MreFgM(H!xFIa0~O@jVp>HlNV zw@CYhJ_8#_CkWjgrD;A~=kZZVA1CyOBz>RchqYQNeTu}dmUzF=s45lTEAoHxYx;uF zkHTK&-y?Lj)K{6*&ofeAEkZxc@*+<@&*#w!dq*UM&W9~%+Yw>y^Bn20_WL~Kkvw?Z zj!-zg#MhrLi-`X@>E*c`tkOqDg#B&=eIcSeFQWg2+t(gJe-~=QG5q?E7>C z{riaY$0GU*b%pD*BFg{S|Ht0jz{gdU`QvxqlF4h+w52J1o4!EP(x#a-eWk&q>02Oe zLz9-O)af*tCIgd9n3?niVX26UEUQ(~#dlP81$5o2xc`cvsI20OE3C?*q80=#3N9i) zEeiVke$RQ%ojW&o(f}^_`Tcu8IeE_WJm);;<(_-)IcLuOo=BnogzJ9uv<_$d`(1i< zKrhlT*JoV$Tj>gK#fVuL>rdo>`Zt`&wy`@rKQ%bMcf4jeCMS6J2ppGB>~$2fjbGDKXTOIG7vB zXm))fmB=M*NoTAfo69g zj_#gf4L={WV{3O$+t&6CF+3<8ZR-Hs`y%3?^={s_zIY6sAJe|ggW-bM^mr1Ag_Htn zgWI5(BkwrGQ!*x!s9VV|l#RT^o{JBE_PiT94>Y84H3*F2uc zcKz{=3GgfHC7VO8W4!~H#`eXNDJy0`jbk?YYb=}WABsa|DlvurEE7+mcGG*6d}}xQ zsb17jVv`cBV_hSBUf#`AMBJZ3e!Jqtj)$Ej?~)Wd3TA6}XS!eNJd6930Qhfu2$D-j zH~CDwe-KFf-2()l*C4^;t2ucWuzMP31iQZ+XZTTF=6K^tuPHSUA7K@sTgxW4C(r>7 z?Tq7PRL~^b@dL)}Vv~5TMaH9qFCbHS& zQ2&J^3Fc@FySkZo@jZy=Nq5L2x$(r2hTWb{XZn&uaST9IZ>}P%;f#JN9aUggjjA*6 zY@O;kVvB486!L!aj-g;(a;Q(T<84*Cvk}(GR=llLkG3(LQSi*|@nOEcykp9vnIw+0 z1nf4@%T_Fv+CSLPJJ^>>4k5nc66oFf`VxH&gXzAJRKj%SUT-z&%<@6Tc$*au>wb%w zklt^FLaoOYO0;~RvOb=RzZhF>so?=ch{bx-!-rx6i4-OxQr(o|?TpUe zt>}!!Muvv)w&;uX?n3|+H)eI}5_E6q+|b^$ZF_9{hK(DxZ@?(6+t#Te-qyA)8)9ue zJ=<+D+cJl8v7XmW66BuV$Q#kju#Vd^c^3^jNuOJ2a z%TGHzgBDCooFUxxS)_v)<6fHXV2mKyL{5zi3#N8!#>xg_@Ll|(B5W@<_dHcfc-&uH zLYvkV4{vU=UFQ6qDaeN-oGR(5gB6r-9Kj3jc|qFln~ok7qsgAMybd@K&RH&a7&xgFQms8>-#QAM=5Sd^lQ=rTs(3QB|W zseyqjy=c>DvpSDZu#%&zi@v@aqEO1)+BPc%v=v^j@rG#Q*m|AxDr4N!#%iin;qW`W zb%Asr^$}v(mINEs1AUY2#*xtO>^%_>MDAGPw*$Q`6L|57>JIDGNFRF;Hu%mcZLSF5% z7+pSg#8arF&31H`;k?2#L(ye+M0fG?8t<4*c1%~2P^k7$OdpLF)z}K}Bpb)p>vWf! z{(Uul>g83eU9GZ1xCL3U%X) z>7!9wQ~16b^S(tJ?O2}q(TOfIHe7jHT}-jcR=CR_T}hS4^P}X2&yT#SR@lZovzS-A zau;20M|5e5Dx%GH6wkEsYL~_6GCQKX#CeT7PLmzSrGY}-Yg_M`nP~JBdRy%>A8jnA zSys3}**$`l!6ucLCes8wv$A?@^(tHKuAJyfs?;;3e1#3bjPC8|u7a!>t&lde+}3#J z_Y~@AvmM=)VqW2CH@eJ@=q_nq;~lffj_FDg3e^~j>7&u28e8F=WaHR+N!LoXcXc#1 z$D*bMxbnBUm;&E?xo4bmLs!}w&y3~Oc2cG*up<^5UaYV~*l{J%<;65b718EmQKHL6 zYjhSp6q0^Zu_#ce8*J-6D1Rie^u)HirVOgzoTv&?v+;%NkxJL;Lm z)nlty*=lz_Ru`)^Y4v zv?6f0ron}==djq-(Igre;bnMi1GMO{Jz8C{7#EF&0g1(WHtg!j^Tv1BZ1#gaY%R1p z&r^8C*brGWPV+^kc8Vw^br@68^R~l+72|ZEqL$HS)stM0M?&sO?Q|E!^)YYLr*~3W{H9 z<4WYVw@2)CNrXLOZwBm{G>k1$v6tllBa_&db=y1Y%HL73cQNeAEkX_CFR_QcECc+F za@74jCiebKq8x)g=Qa9%sPbkLDdvv(ExaGYQt9<#gy&E2e)P2}TuuwgdF2m36J%5j zw>{z$@-mTbggtkjbO`-l%G=8yoLOLZ`@2Q#&5}sBz@GDR+cx%0qjBf&Ua@z#RQ|nE z-s@Wxja8wLQThB%t$38Q={aw_yeWP8BJH*~W>8I`(ZLi>#7<<@s zA@li7vH-#li07Gw*q^_IpYP4)ElGbk^Nj{=&+*@7FFrh+O2qi=!dy{%IJ-ez zV|(P5L|-y)3>FF3 zHqw_&_oUOQy=mrJoxNa1K)vjBtnc9248_t@wxCuQ!$sg+c6M}Jkjyba5k2$G9R|hH zxe%MSa+fm{jo=z1KkDah9cs*QYU8FeTm+0O-`j>0Lz}S0y;#1tU>kIbHj3nDBey?e zM*{Xu>#In(_KjN;Idume;Ue(6^3$E@9myo|u}U#JsG&`n`0zlomrr-me6c1A^7i|S z?z;8aZN6Jyc%%Q;7v5~W>-dD(C-Eve685z|ccRpKj(#8f$j^~=_^j}FfbgZ(4ZjOm zx4kE5-EP88@g4r+o=Zkl+{upcj|3*)#_&2E!_*&RIAhOCZ_)%X@wVfENp^hZ!>SpY zWn_jvi@dG1}hFHB$aBYLNMBpV;Z>nPK-K9c0Fe$|%wU|_fG zxe*Ln4`I7sWB`-6;mH0(Z&QS`Dd_TBaL$bwQ>pZU;mE#JI-ZMUu_ZixAnU24F*PfM zTFq4=*jktz8B_@@i=;*dvDFy6C@)HI>d53iz z8kNOSnXoH6pAV#k$SOPVE^%iGX)Up1W$j$8(wTC_P#JT_K%9ciEkPueMdZ%hrDYL( zOf-_pAzN~9br2nnHIc6?a8j4&sFtW257R)Y7e*E#X#UPX>S1r;QinAi4|(ZN#jr`d zUwtg1^U++dbEWUGSdAm-m6qHoD_=FXsHbo7*2Ozx9w9{Ih{G;YUH8iS-|$O0X>nX` zy(_ro*1wc@x+A%9d(9Rx)?EJMkByo1V7J;DyvCC5paa|Z4z97VPpn&a2FkzLe)tu; zk-fzld~zdSpsX3rr28?rSYt6AyM`SVD77r%9k;_s?E4UN#2R<;c(wuY&#k-R?u8q3 zEerZL!PSccdC3>Ya54mb$u?e2#0Vk>$1s5R+{@CldE;GH^fG#mZJE}ouEPkxdv*V* z0-i$O8eP%axMr2Lzp0tD58EZ+lqksqo=0D8oWDgl%STtEK2eLTY*>a)wH_V)Q2&yZ zjbIvyuw2|j!N|NYI?8~`j+xf1~3pb{c!+O^*M!U92N;ju7$;;FH z9?lkPtIC3RJXZiQ!GW~PMijqPv~TH24kk9H;{93cQU?>;8BZnq3Pqda*>(8Ha61Rx z_)Mc9xc=U1f1+b(AN#UHh1#u&ezkAdTg$#v#X@~Lv(SODS~AgxoQ&ukZi#0vwMK9= zmNmt4=y^Tvj=NFlPex5^)Q!x(mHHzp^ts4A7Tc%p9NT9shPQbF-x%Tpn%KsX zq24a6f$8eB_N(vsG^45$FPz+pW>lhT=jtDAr$@ z0A^y{7XSA!kBJPP6IAG69JQy3T9efY;SD~BrNMppXvx0+PFa?DYu}`@cp%w_-k^Px zdS6?8=@Deu8c+jtOGeoy!@^pdI@vC*!KC_1(P>!U@GLr)0_1|N-5RT)7f%x^UbhN8 z+raa{{r@NvrYKS!DqrfetiCPrgUP{>LES`^9Hs3|7`c+9(N|}ZeRv#ULP_vRm2Q>U zi|`%S7JOgHuPg@>+jChWhfIin#^)c~Z?p zwK@A$HlnA^_?|k4FM|1jw0iZaF38cM*C+A)D&A6=Lulm=MlI`)`o`4boA1Bk*w?Y_ zGIz;(^-J}(&h@eN9o=1RJ?)zb#n7{jdlc4Op>W%8!iD zHnU6DqtT{_V6wC;70@Ms?3_4qr`LyH?VPDxIC7Q$h}Cn{7Ga0J8*f2OjZYQSG4I}8 zFbN+=L_2YQUI#-C{?zH}$-eV@N;|r9UXx$R$uf=9K78an*k@r=iXQYqgh3yWWQGz4 z^Z?Dw#G1w9vwz<(8k=%L&dXvbT*jDNt1k!T~*1HCQm>GO_}0bfDD`wQbn6O$)^j3->sZE$Ce)zjk&^6qxlNJ zxx%xMy*FJ^efWy%t9d@sjIhPR)uFy-&O${wRI`Lv;bu!b#Y7r#GirUU<$Y2&3o1J% z;g;Zd(~#va;oWEkGk0__6=)s;m772~6qzxY3Es4`M#rHs70>!1es$9e8axV)Ki(}O z!F3s&&tB^|Y?={&=HT!1K3}jbV7BW7E`TK1g@2(h<6k(qv8IH-Z~Nz2rH_Mt1TNU= z^I4&9Qte+}6XwduwQ&9w2;{fQ-UI*l;e55h8$rr{M1R?>`2QqapsL~zAf@3-n)2Z& zJu4h4t(wJLRW;$iuWBRy`>S4$|ADH@@IP2}E&hk9ZpHtSs{8Q2)T)et_@w9KA&PXBGD_rT#H9HZy%1}QD#ltwe=V3&WVEaWb@??gtjn@e_mzXMEL%j+#CG!YOJ!G;r%x4EGhd} zYTzxORq->BP`K=?ko8{uKHR09D)v-JOIw1!1exaJNvk!r?fB0= zg#~BEwLff?)uO(KAgHQ4lVnC!P2FM8DYk_0Oxb%Ge!U2T^5J@E?#;==<=8tIo`~>k|;LMODqf6VF3% z*)XeSf|(5uQ8v*B`brzXuq{>1Mju=DQ*ciq;)KYVBsCLe)DaJpy~l)^EK3;zC~g*V zZk)9|eR z8yLP~rkpu2;Ty(3ePF^v#y?{q{B!vEXimWmLcjJK!{QEs{R1_0xJ6+9Vp!ZGu;u7m zlomIMFC#XuC6HB4C_4v)=(&~E6>kR#2Fs2jBYXjcN`vbl2~9`m6h0$XQ^LLz@vYEO zCBdl5yaP?;oKeHd`8$N$jv!O#1sPyEH}!o9?x%2BypL!2O5ThhGx=_&{83QKXN_R= zLIIiChn&n64#t{(wQwdPES7x{7H9a%zoCea_GkEl-&Z80btTlze4E65H>gU-2*@B# zpECi<{#W*^LO`*>ZYk3ovt zvd%J*4%?AGfyfJx%evZAMGkV{Q+6N1?`Elj!3W?ikJBGuy;+;P+cwiKs$V%|NnMor zEY<-|A;*Q*t|%qsQJEIw(~oAL=-TC7`yZI`r)y^aeCEI2ymr|OtKV|t75_PT|L@Kl z{=vJBp8V3u2mk&xA0O!dr{(Wk@zV)6BMx_1-UG)m-D7ai!Ud5qP8YZ4!!^ULhf{YA zI&PWaB`0)RIpI0pL@=w7N?f1k?Ey96-z2;VuWldof0Fndn=$-476=!IXXLLE{(mIC z3D2r`>dj{WCcddthN1JS(_`PgW%Xj{I8a2lsLI0pG7Z`>X*+Ep*eF}9e-nlqO_#t; zW2T7_lc`xxiE1R6=&=xOjkXC+740zJA^7GeS0H~|45+a~; z;TFIxf_r-D!_`k*cIXog1CLC3-HP8|v+FIhKL6{|IlH!g;-0B3!@pbc-QOMFu`u)F z|C%!#dGxL;mj9{o@U;~z|B0tNKKiAtCo5Y%+OznO|0DgCN2YwZ>ELUvn#%pRpS&=gT>(oqe*!n=PjEbeXbxO6+$Ol!!R6rI2FJnt?Qq|O`w`qzaIDlxaA(7wM)IF3Tf@c_+);~0Y@jGb^vxGUh^3HNchFTmXk$6?g-a1+ol z=E5z9+YHB19orKJdhh zt#DF24kIbz08T`FU?^h8CaG{}M-gAiVvAi0Mc2ZK=$j(q`&1%wEX7b9Sc!=Dha!#$ zMWjZ}5b>=ewm8IOD2_VkgW}@&g(41XBov3(6mh&Qwm7t*h$9{e#hD{T5&RPo=Pnd+ zuq+WdUZ98r2obSaQN-b+MC9_P%_fJza^tn)!}sh1xp2L}?0qf>_Ba8+z^fJ+fy$P&tQtrYWe zcIBn$TG?G{js5>=_>d{sD!eG?wMr8fr{FR}jbi#el7|`{YgBwQOem&*FK&n5^7H2S z{)B^5e7Il=&Nseo9n|7 zZQZX>Ih@rO)88z-+CLI_{CttGzgOhfI%lP14`rABja1C&pUGa~dMV!MdC$zY`26oX ze^c30Un9I~d2==?^Yiy9Hd{6fvbWvZy-jTgY8c=vO>ynpv0()Jbc{%Ea07?;h}m$Y ze!f1KgAi|)nAtG}7Vj~=3kZI^xY%XF2h%2|-cjgnZ2%q0loS ztK_bb-=R4Nnhn$h>!1sK{;E4d3(I{W>m-T42Crefgmd`Ug2@Em;h-&jpyz?#qiM^< zpci0rw+j@N*~xF~KwCI<--yv9XUU+u*Mj1+>Q4Tm2ime2ly*6`pk24BCl!i$T$1I_ouUnGcGV&>7LRr4Dp5csSA)+T*cgt)LyCji3lq9TC0; z6f@^)5Tz%D{p!u2b3s>uo)5}+n?RW^bSgduojhJp>BFEKz=K$ALh;R;3O5Us`I-sJ z@H0Re9{2((JVvV3$8eukfZhTc1-%h;5$F-n2q@bXJ|nCi07YF?vt2C%WqWD@Z3SHl z%65aiRyTs8y;Mg;UI*F$p6vwpzuE#tT~?n&KCt3Y{WK`R?xda zt3Z!|)`K1eT?l#$XeH=PBEJ!I0r(@J6`h>UP0hlO4sv|VUW=<{J6?k=HU5PGH15uvCHw!4ygP}+?M zJuGyO&{m-lp&%;!1UwXs=l4&p^ZO(7gMrrdoBjT-9>0Geg`@6$*Zchb8+HId*`){@ln*n!oLkNC;vOxb(V+usD=$r4tXsi5C0zFd1fBZ5N<`Dcs;`MAdJC$ zxQ;y1JSO3P%ldNg-P9wlsn2&v{*EF|Uf*PTko`#FW5mOB;nsd9%1&1{wqj>=^cTL*JoKC)c4n=z8e`H{I`YwCG!LR zN5UTwp84YS4mjGYlk{qtA9RGb2>(giL+@lT8_p+>7mAI!K)wbmeiHsR+Q$pYeA6Ap z{oyL1X`k%(W}^?g8S!|bZ&dtE!tY03CqVxp;nxap+ShKe$Dgx#{e*gy#XJwwP#+T< z`CCBVk^kQ!KK|_M^N8={SyxV;ekadg-<^Dmi{~nn;99|1VxH;dBaCqd%XniF%gK4Jn0Gt} zAgbdeu(85A>vqhcxG9Z>d@MMX#oK;LXC|M(IO2HcUvG}~XbdL9CIBZ>_y(i+!Cjs? zZOG~^gk}f0&cwJ{)_~ne#*D1Da1#;)AV5hu%J*82RcS)*nc*Ry4U?_7#mF81H)TeHSpVl4d=SO4aFg$ z4VWTYfCrLY9?@C#%cIP?0f^mYT@JGf(9?w*Jjzf}KwHV*%R#0cg`n!r<;y@owN2@K zj>6~kyvGWp)1$Tx$Yv3MKQ}a_owhVALOZI;)&Xr)KUcU>K!M(QY_x#)*R(2E(K`b;l$9%?syq=2U{BdE47strz!ZruyuM+l58lq7|>=niN z>k@k=ZkO2W%;ygy_x$C+mGi{;+a>niDp7WE8;0W=eLvKzwJ6Ttaj_Q>8^duoSrHGVQeU0sf^B0ym7I8Cqh2>XR&5gEg>=ncLi-^5e zX&e#Qs;l%ZnQmD zdB?{2d$-v8CFak(-aXo0!7Vuz&fg(v6i2i<>(E^BH}lc?8x%vA%X?{Xoc8d&qcZ6( z?=KhXf|>mN@~?#Rw@2#B;QZxUbw2~KtNzBu`5RuO4P7Sv>M(v_;B|eg-A5GIWAm(G z0C`a~2!BJX`prWn&h_|*!LI{-e!XQqgu2A?nEg)XP>GI7u7Z=M58wE&B?wv%$IP9^ z`Ln-3<`4SntA10HW7N}WoIeK!;j`Pm42(bE{I$P0jKA;s^B8|&h4Gii#Y5Xvn1Hw! zH{i7f%s`FrNB@h)>T4%fUmLLczV=tb>C^an#QzL+WukO`-BN=h5;~=?t*a03|^b!0{vNX;TWZA)=0xO&1ta7;FuD0p_*> z;7RAIkAnqp@UoG3U-aCFA`OR-HjJb*_4>bUYGGt)WEJ4xOu&P7Kt~Xu-WfBCB(z<` zCY1szh#{IB2?2>CRqrt3OsA=V>9|8kGBo0m45|*$Kq!%TlnKe#K}2Y5z!^})0&Hwp zzI1sM;Ck@a1N;!;$Pxt`sH8-`liQ$cFN4Axo2(~CSzofve%N$Wkv5M?5>Gzwtckx$ z-gVWhyz2^lS$Q{bgUu0qMy{$UikgvX^J=|K3K)_%2qhmKyJ?)Un>=G9@?i2{y`7cC zcCL^t&@Os&j)n#cE`UPDm8`3xEGE=pvu#d;7CHko99Xy*m;v&1!{C*`4iL`a6O_Wd z%Dm%9-8h5q3p%x<_4s-06}h;`%p+~F!^(kUGbRpUhbjAbpa=7{Vf*ag6l}>jN*cz5 zko!K&ZzIk%GDd$B9LHO9FX!Uekn`cc))j%Ff&r?_Fm>?;J&oOW8oMuJWlv-GVTPi1UjzS8P22@_4cLnS*UV_-KkTb^Y@$Am z-ABy2JSg93>^|pidF#bs_a*S-T%Yc<9VnZ6!wHU5fU-x=pkEXiViN}KK(91lgiRU_ zQnhko)?zC^E$8`xc(yx{+nCH`4QQqXkp`Dc^eMRt?3C)Ihq?$d8|GpU2obj|6C)#w`@cMK3VL)3}8;BBfXLjDfRwp?%0p z{yQkgi8g$ru^@hg@dJm3loLSPG4hdnD-Sc7@i0X0|<$L=%6#tk%+O7lC@ z7;u5+HzZ&K;xh+z^$3ONhq5_<>HZv2Z1X zYbEldp)~+54-IJc8u_nwVPEH!GB*Bv1a^L9rz!pis65- zYCryms{RrGORDa`e*+Ep9clp$_(M=%)sy(|uL`3Qf>meZf4FKr{?}ApjQ;`+con>W z2D}!8(17m+t@BL-HXtDg0R~liHI^Lz6}xq&MSv!EJ(#cJ_s?k>4)DXG^Ie3H0c!$} zYYO}7LNz5sD}gNB8^$+Xh+S6-&adDE8NaSfu^)q0vE_=r6YNi^tx)W@!M=b+u)0dc z{-}`s71(ZStCjYJLUs~z=Fl!GWLpZ^3k^F#nMxM0R_LoJi-IwXW7Q2IO8Si>0p zeIa{OA$xlv`z^34Pa4MXhhVQ_t~89{ufej;1;)@WfQB)A4w@&ZZB;e13Y9z?&cGPn zkD4ifG5i?>OiRHS22ov#0gPeId@u=W0Aom4n#<@1jA2a<3~^QnW4HxW#UPB~4ltib zO)D6~FN0xS3XCDXakcIvt6>cH7P1GxvWNm>$nQlQ>`jI2=fJ8oHH_gshSe~J{Dw+t z1;+3V$OjKi1B~IHK>%ZT2_zF&p%8#EBwkK}-eB-e@YW8%Z%tx%a06IWp`~FAKLT#D zFEZ&p(En6xCcPhiegOqUyGcZr(f-OwN8$g4lGjX{4f+n`h}e5mDn14cU<`i^;TgWE z{OWBg9~Udgc3KujxI5q}?X3fh;k2*9y8$8vV>s;zaI7>1V>pc;)*U2A7{h5*;NDD5 z!x(nK`%T(eQpQ6hzXva141Wv)7{ftGaAX`|44L1*z$-9@?1%tk$k>yh0gT~$;62l~ z7);Hi*WmxH$SSI2(q`KaD8DZw5NoumZaN8I45zVD7vgRz7{h7*U^v1UPWwm05yo)Z zhYd#)%F`V{A!{uQN-wF|63|Awi(Eaciz!*LT0h^G5F|0%$*)SE1 z;dFSuN)2HQ7lC1G(J+SBLHq=`36bd}fH9o*G$=b$1!FiZgy4$PFot(P@p}XSjNzX_ z1jZ1^xP&o$0Ll<=pn@^{IXE__P>+&0UaB1BV>sg$^!uNOdl2qYj2&kBN(gK;>jC&F z{}CwVvj?#&hypT^%bZNk!B{gc7tTb4#j*q}&h(XM6!FpiOka?@FK7BfT315dEW%PV zjq5;FIz~VSfh)g*P%~y@TQoy01f^o8uj)}{ODy|UsJkT8*X>YvbS-NR45`bEuYH63 z)R@?VzKebApnY?x|271VLE)Q=7H8cL?g?_%JQMGPvI0?>z;GjspYr+U`??tOFAO{1 zccC5ctQ3NCRN+gp@mpt`=w=+|OMe^MTM>6!#K$1TZCM&Z@L7ca0h0{|pM$sjhx7-S zXB$EgEkteHLKUbB-4lwSF_H{U5_&IgJXW|#%o!m92Y>bMx81#c-<@aoTpxY?znp*f zeOoi-TWZG&}W!f-DsH_%OH zKwPxv1?5LM>k%!|V$sl)`Juh~;vM_tE$$(w4Q{fgO+xtLLwbvwnj>&$!JQ4a0B#W+ z^FW9^LhljAkI;UE%Ojkgg3`P7^$!r@kFa}$<|E`Eq5BB6N4P)2{t>#55PgL9BkUfb z`v}iRSUy4l5-N~&Mc6(<`Vj_@uz!TVd z`7R?8ZyOw6Ed4^+rufE@J@6dWP{bjQi1?DCh@H3WT;}kIB955mgW}@LjUqnN5{hF3 zia6j95#N=FtKPQ|@hvK;aC*VOoSKM;V{?i)-w+YscNB4iE++Z1qloW75%FC@5l7V` z;#;304gtg#M={LHZ{VQiAV~sqbV3aW0uXWBB60Xip&1U8B{1K+6!CQ|A`T)c;=5Hu zUjs`KAAb>X96%9=2J=C2am-B-2YHerU)mJ$4K5djtYi^!cuo-q#*zxhG8A#%C!si)p@`!f3B`2;iuj3_ z*hRz^J z-vthUzRxOvz8V4OTLc)sb_K&XjWB#iH4LA@-+L18;wIp}@!bsC@)+oOm_-~1#rUi9 zVNF}^2VD(Zx%)KTeGlj|=?w)BD0 z&K^x$E(T?|U7#55boOYf@aTfzJHdmtw1P4}{Lv3|cOxi1cU@8sim_4Wd`(*-ps2sj z8Jf0mN>~FPj;#;V?y2;c7vNLw61+alT-?ntN>LfpQ-*rmzZc4%5}@ z6NtYM^nTCR;i^odtRec+^GpO`xb}g)fJ(u)>#{3wjvxIiLqYG4N9O zauLu0@XX&HP$aGJ$NE$9zlv4e|(c4Domo zK%M#%Xw1AWp*`py68(13KP~#}#r{zp+K=$^1C@XC=R;K0Yb=d#9vVM;_rX zm-Kk(QZ??iS{DQ1w+GZ;EBeX8zfX7~`xB4Nd>hZ7beud7gkt_9u)&MJPCEHx3=iGs z#opT(z7oq&sAFEdH%|U8(GQ58zkD$MF^PYn=(D2d?2PFRNcw+~{Bxz6*O$m6y*Enu zD@Ff3(XSRgaTIxd1CI81EEumpuzkV3AL;V?Bl8RX6T*K4GKOcT%vUic^wPc10<`!4m4`^n#n8NOc1 zw-|XPUYcotG4hV|2gy6~*9H4b!(4voo%{$CPQJm#zt0u^%`X0!i*H0;o%Swt>Awc0 zQ!fx%F6gR)*E2DM^~ZM}cv=SQSfE}cghu?DA2Y*=!l8hNnIZuN5NtjV0Pczv;HNpW zXn@A%$Hst7J4FP7(m2u53W9rsjClls6&rWXl&K(?l*j`T%_~^mTmceVK~MwpRUE?1 z8N9*1nf7)@FN8Y*$kDq&%~{$xbQ(5b6KlqK-MM9DB^<`ElZXxk7Lk zS{^y9K=lLGv$hgdjV1DaS5VH`uzapaFbF=8m;l|O~|M2l`buU3qU zc(MKQYDH|?+q}abZn^CB0wgs#)UQG_e?1#^A#HPU?9S`wnpndHu}3ewp9;Th7sq|L z_Nf1u1K{^l=I>xWf1=UE;2!}2K?&UDJtp=fn-=lV-1op~Q0x`O%eqtS2`rFxCx72{ zTyEROUNO9^hs55~V&fqx?=2{=tLdl^Vh_hX40z&Y-790@d1CM0T1V#KEtbDxcv)u7 zXr7O!VUPEtZfCLQV{E)EGsiUJ+mo*R73P-h4ad2sl0ykm#A2PDJGbORJtyTg_MSVX zJ=MRck8r&3vi>OcOnLt}+Fn5mH~3a~NK~fW_(J?~mRFofv{wu->yubuQ(k|N^44tD{BXX%DzJAJ)cS$e4{C$(2NC`#{0xjW zQmg(V{MZiq(8YKcqakzoqYIAL2661l&xdop5+FJCwFE)x;h5fOysXoBS%ZlK7}Be+ z$jkv?su7LRP8=UPV$H7qOShhk`ELFFMSfsX1%RCuy!C~E?_Ga+v-QC51HRjiS6I)X z83XgG^|=!hw0{cx$APc)NMOosNbCmeD7kIY1dX3%LC5euP_$7SH|vGKOcfSuvbQyd zEFRHv9~{;_i^$W*5Us$VQA+o0UvP8)}zg|qwTCi8*01tkNy9yFwJ}jtMA+4 zFXC8L?57b)GUNhJv(|fuF`NOYpmXp3_irqZH^E1r4ku@ zfK0kEo=gE%tYc^kM#<^EHF$R?dUI>AP?lK3q2$()!M%yhn!ZG~HCIUwg@LUscBe-&y=MITzf#$M1*1B@vA8Tn zGz??Lcnahib1J7=i)-GuQHp%ds2!2Cjms2W(b~9XmDM`e)J|8jm)L=Giy7lqsYHacMc|udvUtiPD;t0c7^%nPeyD%R z%0@5^%c2Wkb~`;qJIBY?>N(z)NusM#U51Bf$FPTRJzBqqxHGXY=ONw>oJBABj^QoI zOa{oKeIAjR#29KOHHKOxY3sLkcVHR4A04p`o+D+)6PCOjt4LeYeF>8Zr>qB0xR)IL zd?MF7kXI3OWt1Iy^^DS%IuJjU#f|7^&pSqt9-Oa|isuq?sOQF1ygzGQ zs!#Y-Ol)U7mFz1NZH{NxB@#p1)95fz*9E}=1&BAme!P_S@g;MpP`fqJk31LCcEFs9 zl_-qWfjlM?eaOj3LS<@8JbS5S4kfil0LIxrgdP#UZJ?;!ddb_9*%$9kbo3?DgPy`2 zL)qa(Z*m_Dd+NIe(pZe~GS?ONj?uHzGkAME)0K)Ja_hPQIn>V8sG^E7a%e|x*OSho zHnu1FM^aca+|dDCpWZ}IdZc#%$UgDC$rNvnw^&|BMYZw$71Hqym z3;UP5t!X3AgS%;{GWFow;j~OY^|o+hDmlC}k--yy23{cDoX#XKPqW?IVuuCqc&-3q zA~)IwLDaT(?k z0iP`^F{Ckh(jz$_2nqPmHZ_LM^1itw7~tv~iw%m2p^-srFy1eM1DW`6x5fWG7x2||(B6@K`|xTp4aq6P%LS$0q_TJ**_T5RH*HL%VXH4a!Uu97 zq27&xYHBhpEHcMV(;7@>vv{{S4d>#S{zNW|roCk($D+4!bPrb3UUc<2O9zsoqq9z8 zGJrDWD@f(5H{Lst=-U!Mm>e7#)JyyenWrNiaLnvybdW@uA$7 z^bqbM#FZ6Tpk>P`&ChX;_h zWzO)9*~dwv={goRP9r#-MsRw`o6w8z-#?Auw113tH3syR!jZ~PP7*uBR0X49#WTtY8qA+C6E9Auoc z0b%!IlNPO-;PhwlE*VS!gi4kO@brBKyrOQ_3p#v~TrT9L0aO1FM zq+r6qarFota~E^42Fas)Zg>0=!NWx({+S4k~z8lUXz^<;&)< zk{QqR;SJhH4MWfd{V_B&Ni}BLMywYz!66J(a89a>*Lrz0LN|VTy(>mN4h~*F zJeU&OO;wK})iaf~`bIKni)i*+yNM0Sy2|Xw@V_@c+%be*Z=9xW=A~imP5>11tnt6RL6Hn%lV?NzXdPhf(OM-Pk_gt1E z2TUjRpcf63Qyt7xI0n&k1`Mjyq$n>@BQN*VPnEkZi_#!n)sbjsALdnAjE&TEt0&Ew zSZ5q-g*knXna@}ZZ3U^sc(-CP87ASDqR#ALt8?3+Ep+X@HKQqsdKzjrj#VG^?4i?D zUVY@QT2pzYpl0{RdoS(B{B)>KJxrT2Sn9D{!gW}Qam(6L!vk^iLxsMhY=U~|t>)Kk zJ96quH`WIe+wmhnT0eH{I306LKh|T>6T#!?Yg9wUngtg@^8;uNmUv`Q!Wp43o?HZEg$2Ewl@$5(z%)WjylD9>XhDg?(07h)rJK2*9yh*dQK z_OOjjV>#lR3kRrUjm{f3OBi&=TAe7^MCS>^MV!91XDJOee78EGMwzY%lahh1nQ!0z1xWRw$3GPnLUbGiuy0^D1xy zdAsJ1w$)szY@OxAe>~e+ouOY76lsA=gi5b>iYlJCs`}SgLAvm4+}}lKtI9t|RYo3b z)4CYDQ}ho%Zm`Hp5GxNBX*SyWhbX=d|HA&Mfe(XPfzMGC_!j>A1IH-{@YAqhU<%3? z3J}DxB+!ljrB?6|6j^wEm7y!C4QqREg+J_H5cmKn>@k3)HAEr_`x^p}Dh;#h3(UiR zzvX`tVSO9n4+c8}+m$9kP2f$G1wM-Z;lN$^UlaHN{?D+2{8H*9yn)#vAAXrC4eB)b z0aiFPD=-iAsz5t`vkL6Se_vn(|NQ}eAQzDQ+yZ~NWLn^>pjO~<{PzVyL6sj>GiSjc zF0Bi!1+@aN!+&3ZNN&jQEiBfDs1KJ0KCATquJk{oKJXj-4+Mg^VZi_qX+nXu_+Ju; z;Xi8b^N5{+*H;y~l9F&qsqdZe3{S1B3I7C2|2(Vg_1NZAg8dIu6*#0-{?7<7FgaKg zZbqpQprRB3uvfyGT)sJ2aRwM4LQk#$bC%ImZVr|a59`~AJGlgr{ACw_-N9H2&C)8r z1FBt>3v0qe=%LwPLcjo(D?7s#1fo$4@DD2&gXyPc^{$E@__Oo_|FH53FvR|=Ja?dC z2R2)&7{EWQ*bRoLb(Jlh;j(XlSq9^k=ctTqz;B7nSEa%~EW4zTy$bB#QM*(HK2pfu zQpnx`R;8)%56kW|tinGmd&009|FHa9FdHskUQ_m8@Vo}uE>{4RR`7iIAB3zdRJ9G> z>WAU?1^2+qnyqLJ@pkxqRVhd&w8HPJsks9FL3pd)1kc1__^evmy#Xw8ZYfJu9|1SX z7peUq^n^NvruJj-|5Swv*Zzy`udL;#fozLF{HtAnDkEAT!4gBaLJfH!i=W7O2Q@aWO+2~nr!h&jl*b3f-Kp6(9n?^FDre^9jp!KN1nu*N$dksgd#Hk-O z9I+Co{*&Q|l{ocNh9g$u)H@7Eti-7Vt5G%;R$`F7%{w5PP*t@GDV0A2f4Jt%{4?+* z1Z;gZGkm^^$!I@p#5FU)%mZ^bHNZ-&Xp)vyGu!90f^UcTw}@C9nMP7mJ7ele(9b|z zJCkLpLU6??ti<3Kq4+ZbO#EG_1e#!2<%_UH6DC#N4`ull_`{R3HQ`6W!GcwOv69r} zbJ_<1JEKXp$U+svRaM{yl@H=EKR6|1_ZDSWLck(TQO|wZJER+!5{6xW*-c>2N4zNt z#nuY$fd31SoiVS9{lc050sjx+PQv{IUgOitN?wN`Gkym@<4Q=07}L5vZ^Z7_VhBb>{p?FCZQg;Lxl)Ig-|5;6kT6Ec*J=521g(!*j-tvkNux7 z0;%;~2zU>D5!@u}``{|b&3P@jUo-FoB5BRNx)$E4ufc|qc?Y54Wd@gXt^kvve)7F2 z76ub0N%OY$rJq95@29np&*wYK*Tqy{hj%{w7usoBRbN7Ls9~cegkaS)c&dK_pRZ~@ zyyd@zS0Ox0e_v_Zy1%Qf;yEY@zUaTOt)`+9`Q!#Se@|OYWj)ea3$1@=Tjgr_*^d1e zwN<=^>7%;+dk|xL*{M+eIw^jZ<{2!rzxUKR=BR|+y`DyqGBRsNc*RQ8Lp@UWABNFwVA#3)uW7S_Pa!`(XzD7fo`JWT8TM5XIJunJt(i8hpe_~8cC$KVd`Aa_ds0BSJhNgowbeVhOFR6pjgQ8b<;>{Y9~*Pf~szS zfT2^D84ev)*s8i0;mcbg3!hnS7p1~H!9F2!{8q8N@q^X6Agpig$x~1`qknD}28CPZ`bMeICAmui`EcRi?v; z_Z`E$ch1DJAA(W!fct}v@-d^sn*{7rVA(uo)+zS)hMh*%s$!p4{tgs3JY!?Np5F@r z`|KH;k*^Pd`5J=F*veb`P52g8eTUIL%V@JaqRk>wd)03lhFBos+4VKy@1bN!vSKy_ z&%;0aT$o4gGFS-DuEKW+aR1%72J&g z1MtqBIE^GScf!;WP(HqMYf#}+4>`E-)W36ZHB;Z>;Oea4VOZzn$iE=?0eBTIV?)&! zkwW=@AY^!6tzF8>hao6M1DH3vt@3}w%)Gg6mCwUpOZi!Cl{M%XmA}5NaxVNcDL)6D z(s;Q8=!MpIf>wFDu{*C9%He!c^-s@6k%&O0Hl@tqT>31`8w zO-(sN7x)~Y=aluz?|X+3&G&n8W-C_WCB&gum>y zVBg7DYUWY)Fj&@I{c@%KV<9^o^`^9HHd3}6>=Fi6aQS6jg>0gbJygh=IbOYj%P)He zv>f`?E4ci!o4~Tp>({Dm*abLGv7dpqo!VB#9tX>TVSO7}y#G*~|3+mj_*n1|yeHs2 zdw=j6c=>tWSsSX}4sUe`Me|kN0B?Cey!8tmBi73xVC^jg8h7QDVEC{vJaeG(AB=zc zK;=h`f5t%BZSZrVxR5U|f7urdtI)X1z6_QF@`acLK>H2DDm3o02MnuvZ%a*Jo`r0} zgdjVq%_!Z3>fj}KG}L6iv}!YoUVb0M;WJ}3VZM!F)>_2DosGkchlrp;=KE>9P*GY- z<1oXkFn&2+B=+)$|J3pApFgno@<|h)c%cijJ#fQthv9BO4j6Yk#&x{jFZ_3eH<-#s z|5caXiKt0C=myng@?2-x;4_-SM4x$!9~q1r9Z%F5Ey>=71GK zUEmHXUYDIZ7J+q!3RLyM5VVgbp+2HQV^Q#-Ok*niGvN5W;v6_sxW)7qz)^n=Xaign zt_f~A+)B9BaBJYWtjli)*TJoa+X%NAj&X@$Osr+%DHA98e;%m#IPr}y`pNzWiFe!^ zdG8gUi|uVDPBQC?n99UF{=w6)tC=$#d6d}5#7QO&^EbYI%{qh8OpIk>F+YCwq<{YK z{EKfT_HuUJTTT#TnfS`YcuuB&vHM@%_=7(Y#j`Oo0?Cmvfp z<7)~pn)uPgf+l`6aiAYeKJ~(D)1R$sXnpu1Vn`GBdC!&yzkbsvzx^C>pNS!zEBSJW zSkc6DCayGbp@|bs9O&k^KKanSG5-_wxPj-wZH0@&@py~3!F>$wb~pmX{s`_VI6epj zKt3Ce;6t5oF}MueTi|Yl`xG2k#~y;?Ne@H>u0wllf+N`MF1SnK*hjq!?o)7IhI;_+ zF}Od#m7@Cxzh1&+V7j6XZop2wA;}=l(!u=TTH*h{Q?#XZq;Fvz2I}W7g zgW_WLD0&k_=yG_m=cI_Q61+%xas7=VF5*ZiPH-sVOiV(tcjDvAo(f)e-=g72hJiU{ z5fRs1DB=o?nB?e)A`X=#dmI~4#BrdAIPai{-JV2bzd;cvl_KI28AV(=lN8ydQpER{ zh&TeHh+|GM&t)ZwxGp83xR^vyJTKyk6GdEzl2GiXDdPK3M4ZM_#5t|xi;FI-BQ_(1 z;&O~=I7ne&j%Y-rmR}*_uv1Ka0i|XrHZKuz6h)I9Q6W1Vk%@+rKWaF^gox8ZvFt+} zn&BvVJ{&F%?WVh06;RanK+UIo6NXb;V9tiVXz7!3I(+te9wTL+I zX5dATBOu4>k|iz$P{U;dh`2}~akzL&GhC6Cz+4feh@%`4ao9x>M`I%5N+Ly^nutiP zNI}FI*nCi2YW@Lw7!E0LQAPrDHGuKCG$485jEA}8G7dsbaoI^iaW#e_F3pH& ztkIPx-Z>ZiP(4Ve@G=X5GW24_6kNYUntn^Q@=C|K!^g`U(tZY_{xNF zl~wuRZ{zYg}p!%6mZ6I?;=!}!0>XPtdp-{sjweY=JL+*bm zWCi;Ct-jF2a-V;)g&#lqP)V=Dgo7vHZp6yVE=^k+K`(+lBD79uCFm~5gP=P=PonVy zE1;9ddV#h)4a#^YK&gKibSm@@Y1(o>D1Ojhau-6w#)#Wl;0I|82et_MYj(|N6?E!TjeZ|Xd(X$yA}pn-NC)U+i9%J_YtjK2pI9Z2WJ znzkTKcDd>d1W$1_EeHEA%@NuNf3gr?XMhmU_?`;OA@FvKe#*s&Ex(4=BT3 z2+DBVK_j5kL2E#%4}+c$3Sw;%x&d?#_$E;1D+<~L3R~)Igr%UZ;2S`h&Js|ja}Fre zSp*sZT?kqSx&V~vodwGDkXM!7EKr8u0vZ9m0F>c7K^cB4D8p|91>t^Sl@G*G>34%N z-LpX>pyU~EE+~lN9|C<1_8A;7yo%eg5Up`?*#te=>L%4kGMDE|55+#_pzMA*9VTk z>dk>$@c(GwcKkmUxD)>$3OtPe&jwBgO3|y{>?`$OyrkkDVMk~hU z52G@WadW*FjoHahCyxig;IQr|j|Zn!N4FBFAL@@o&Z~ra*yM6GuSXD;;d%HkueUxqlYefGUP{uzf@t2TCm@d(OThe=4;{QVIofMv1`WXL4iQh*(WV^#@m*RQ$fZ5@Ech^+@FUeKP%;a8U8k=kMQ3U{XI;t62B%O9bPMG z-@%_F`Q@1$yuQuyLVv%6eBAf_(#RwL!#&VjNx~g@JzqTvYry`KC8{BSM&&zK){;sz&nH+j6U436d9h%*8A&a~H?;OAKt=Kee``Xh3Gc{D1| zrZD#7I1K75|ei{ZyB|2VLP0xOnsXgvl`R zZ=LBcaE0eD6;6G?rT>vj?>fA~05RB@?DokHX8s1e_6B^^>56BD^95hy$+-_>o={OZ zb@DjWf>8I)Gb&sWbVl80Z+HgEA1skSq{9_Za_n(Zg?GTb$%3;gT!9Poh$>cJHR7`~ z1G85cz|^IlJ!uG+(f7kM6sOhrVpSiDp%{Mo#t)zIg|F+D*`G(7(<>N@a8LN?mgiXX zZBO7+xFP-Nt_dS2TqwkTccmMwidZVOf3TrfV5T*f0776NK%5!|(|ser4-wdHphD#i z#d?Y4;mV!)_*@sf zj+|-Wc}{^jn852u1*0oGhrvj7#i)ZFjK~gHAXNd?2`}3>Y}~MY!`Ai<-Ld(x;$QUZ zum1CAW)xOL#Pz{HPfQqnYKA^AVcBSfK8d2Km?CN`ie$TCwK`#9m3NsNmf4D8@tf=r zUUl9OrP|{>3D@Bsc2!G3SDO5I8f~)Gc04(eg9`R^4J%c#MxXwn!!0YOXwnCNMN%R&EQrvYC&XAxp~!X0iM)`T=G(U(k&~CX)`Q( z+2^yIwNXrAEX>RB7;dR;by#yz*GoO0r5=kh_~ShBureh7#T-lxMqOg>MW4@d682==h|zfda-5Ixs-DlnMKnw+xQ6DHKZRZQV$Nq7fIXRl zxa^JZe3suz6}{Z^Sq4xbUVGGk++QrRa;kM>K7XRoMD9nj*!e8?iaku()O9cHVG2<6 z5__utc!S;N(cCBYO#8nN_MDg7wy{_2e3lbp?`bh|LdttD%BvRBoW|jIv_FMk=gyy* zht89D57ibLD3-rs=d-AX9VYB&3ybBvAFHq!>-~I;eLhQ=9SAOoi!Tc`U+n*>&Sxoe z*(*DxJvGox5**I!e3o*tXUbbX+MetA(C0;P3dqZSo=UCQTZa5zLUzdp-N4x zNmxve3#sdu1fL}&_9luE_$7}IN$u%Zd=l$-nbGCvs1ze|djt3^ z#&f>HCs7L-rUmeB!|3-DKL;GUo<2k=>>EqWCO%m6;i06vRcU_NFda42+f zT^G`85+4MkC2>jPa4;UZL~FtGMH%Ot!@%cS?hv0JKevm||C|(V22Hu% zgIUx7UW;j+j}5OSp$Fmx&jH950fbpT0NFAC*^=N*cL1_QkYENNTd)q7Z~=Ahc;;Nnc==fu=S=^`3 zuJ^YRZuLOdNCMoFs22AsR}72K&<3zuG}OxgcFO>Ei+;b;8o+LGa7YKRTZn9^ka^_m zRi^PyuyBB-!sv&HIY5FX{H=i#Y1s@AoltnALe4RufC~Hrh(R5lfY$+npzC8}LG%L> z-+Da4i+4 z8Zv+_z)dpA0qm9m?3PeOcTm+gVF!t@b1BXp7$yI3wF!fNCLaXhc}K4 zcFSO-iQPiCT^D*6WEiXU0wY~h%74=c|-7?kW5W8g=nBSnR zV7HtMmR|4-cFP`Q#bCF*3IP=qc1u1?Du&oCWnc_;3y~EZ?3Rnb80;2)v8qZCyQL8f z-P|ecmWRQ(uv<>VYgnw8V7Ii#vX_FT6Gp*q`ARH%M=ZMstlFl=Zh6eG8oT8mh866V z-@~lJZsA9#@z^cIYcbd@^q6QX?3Q%wAh27AWMi;f79%a#EuBbe?3Rs4S^2b^9J}Qf z;F2=qGa_T3%zf{0m$IIfdOq zw3aA#%P4Sh*ey@cj>c}`2kO9Xp*vK;Zn2>+*ey9o3U-S+cQtm)I4T(ImU&?E@=wA) zy)nWMaz4GN>a<|DY@$lx2ohqqTn<`{7Sz}+HyBP~w>W4m3cJNYYf;!O-#3~HyJe5z z;Iz45_^%8X#csJ4B7@!X|B#NsZh0L7_CAH(G7|lVomgSF(6=j38HL?aE*OMpAp|hyawNA8|;>YNK@{? z3zd|Q{xT92kQwteH$$`*lVgqihH$1JEcP3_<=ayB2cT*@MnDFJGkjePFj-!2G_kTfRYS zg5AQc8tfKln=b5@7m%;9TV6y;uv-ox8H3$o`Z}>&{CKa09)lHjOCcBsyJa@siZ$3R zi;!kNCU(n-Nb|m=xq20K0{R*ew;H>N23PTZrVNI9#X$yH!EX7B zVTj%GqERDu%Ra*pyTt<^2Fe<-ThhTe*e%QP`nJj;c1w+6h~09QVTj$*U>IVzY%mP5 zTRv?VVz=}dhS)7%0K=Z6uv=~d<6yV^$mCpbFH*p6c?iV8ZXsNYVu;=H0vJ_4<^4Zn zpUKnMEeFB6uvlx#=&lR7>tA6auAGz-9oq)2fJk$7#LONCJKzEDLtaa2zOu-7*_CFu^7UBu2eIr!vFy{a>^{S4?3MubN?BH{mH8{|RSb5^lMp!AEk*bUjM@sj zWx8RA-Le9V3%ex*)`i`&7c84Xuv^j!V%W)sovT1ds=&IiTh5AQKNZVf8q1nFo?y3J zk6aG@1iR&SurBNtX9qNP%iYLzVYj>jmIFgKcFSMU7=qohA4$P(Azq8YZW)ZUV7GK4 z8H3$IxE8ja!fv??3{Q4qw|vc{f!*>QlLmIne<96@qF}fD+^`zE<=0?2AQ$YG#|*2n zTmE8Lb@jFsb_*Q|3U*5^lN!54P38r=6?h%!jTM>UDz#LbD_wE-NMlkMK0_Xj*TdCVYhJJL6Hl)h1U&= zT-YrN(ikEab_*}5)Z*PuYRnNBMK0_XE-O*Qbt%!}ViHAMoDvaNoG5Z(x9~Dekqf(p z(^!gJ*ezUiVH@#Q2U{-e77kLV?80tQ%dZe|*eM(S36=q<<-%^^D2gWEMdZ*4?IX&Z z{4pmHyM?RKG{aH!L_`D*?VHRCZyva4nc37j_FLz7)BzTR1(V$c5d)RVs>H*ezU4=7tloTh#L= zX_kUtDL(}4dAxa99=T2 zq_gRqKHjfqm-&=WzaUkytA<)GAG0Sdx*hW~$y z-*S;&L-{|4-!d8p(2du!6H78~p12vgSQ0RJA6JmajK30#BMdz_shHmjIfKG`fz4*f z7zhzg{iULR3*^){_$`DLCw|8k$$toxoob7eXE~NP_$_~v?HT+QzFI?j2EXNb@+iMu z%3lb|@&>(S{Fa-jkEI^t7kDJD=fvOGigFAynU69CzvX7y!?yNt zc?hAK_FR0qY|k9ed$~W5RZ9IT$-`zU{FYwmv3hCqGx#k**}lPVIZEsicZ8u? z^bLN?M%Ewkza{@OQr_UVjA41?8T^(RNRv1CEn)IF_a1~E17DtGzQJ!HggtqK-%=;` z41UWnmPa)BEw@T}gWvKkDR1yw_&zc5SB#(BwQ+m{_YcQsuheI;952KFg4;)V;tnx9 z!|ma@pYdy3O?xhWvDDY#xBQLuMSd^p#qcFWZm(4Mi0scE*kL#%_V!9X+&e1$W~0yT zV}X%3M~1&ZPW%?*$Cl4%h~HxT(7wg`;Noxm$ZjG(3i~U5E`JFdZv2)XpdS*y#T=i% zOTNKx2{GSgzmvRc`(H)-;pc>S{FWuqcjq(h=FNJjG4L)j-T7aSEC1uTeEPX^>%SbQ ze_0%#gZ6gok4C$?`J?0XpNZSv(760~yqP%IjE@|@C1L*54+xjUGRXl@Qt83JyaP*P zyrd-Rwz!SPz_X;(jT%0TzT5P~x&cI&|23jZ!Xf!j26ai;S#b&w#dS&4h;ab0MgcB3 zcq|Uy!T_|33rDA90NP~$+J$&n0`gST-5%=D;4FP3vdnU_ofB&S+9f$U&&*PeqcRcR zFTTsH($bk_3JxZU?@|+4*R`l6w7vlVUGV@fzklo1cQMRWLnr>>byTYq0xO7!FamKk z#+9kU=dc*Tu##mE49{UMqrd{dNdV!@si8wW-h`2x`5EnDh-N)SKk3X&z;|g0!}(N0 zOSvu?Z_n7lG(m+e7)#4gUGW&c#{|K{NQoC?=54aO)>g51pdMrR7)zQFdnxf^wn_y| z*z#<%oe16De+>=Jg8Fa?G}4`U{Bg0&R*YmG23NcHB0vQ0PMK~`;I#R z|6?7nHRzKX!;HW{=o2?U#p_Y*@bsQ9r42Tz}~sFNSXtGDumgP+r>6(!~G6;l(@@XK%z| z?e&cp^Xs_%9hqn^Zh!m6i+N1!9pD8VVSJ*!m_u?nyqI6hfjywjStCm&5hY3OrNWE3 zZ=x<}@M7|3Mh!_Ssl8NqF`1KfsmtYUsWWD2{t@&S=|f5FrNWE379i#B@cd#or_you z`o@bf_O^9Ub zFBM+Q+(mlFO#ME0a&$)}6}P{ABAZN~kUmg-D>^pof-Q_y@Ta`%q6*4sM{)OmKid75{} z{uRC*htBiwIJCgN`n~(DNB4W}oxMY>gSaMd4FHQ}?{J+ShIH@6*458?hwX%!Yv1r% zJKq>(-Gz1Gt-YQ~r9Tup=%-uf3)fqjo;$9qGsl?4BPtZ|FKu zzhU-)UT?sWb01Av)3$iFqW0^pEbHJ%QWCord|H(waVh<119o0lj@UuiGoy);iDBg_M2dJ+F1pw72Pp z`(69Z^6Wc$zoW;1Wp$pm%QSUZwpY%nUax5n)7Nxg?v;J-&C+dvbD^NX>UqrA=*9N# zU0^?Y=)6TZpBLi1UV!s^KF;&19q&YbxqXkf?#cZteuneh#(8dC&2yLg6F@uGdjeP3 zu*JHNy5)z?tAf4zwj;0Lm6Lamx%B0qACL6ECD3u8c4xO7Xq-*+EIk=KE!@?7O6}ru z?dx)$@mFX7lG|j`9EY#RFZ(X=0G_NJx7Fym76!wmJ zO`*=lj&OSy0O;pg4J|E^M&+)Mn@~QpA#7^W>n|!<+t9H-)HSc6s}_SE*sqQ>Ht51| zOxPIe?9_l|ouRJz*!-%7rf_%XvbL4sO`(=fw*k1V?K&yE38IdUhRxjE3ROWUA!nKP zn5eg_MYSNkT6WdEKvwRZpjBp)I893L#wJ>Ec`Ilhwz zT-Eh>Z%Id_yWLSAKs>4qw}z~Z3gu|QNn}nPKs<7K3>UxFcGJVV)d>gd)`BGih)1m< zTzo!y#G{$cIV+MjO2>cf zz%bF;M!(YhXeu>;g5=;^y-(z-0Td(y4E8=7F3ypF3k4~01|@Gis@1OOYmZ6vV%B`t z#4Q0G76)l2MrHb;n@pL2~g0 zp@4K}a?PUFsg6|>YK*is$u7UIhAG4IBUg3HTu?-6BI`mRQaq*vHKDG>1k{qvSrBRD ztq`6(L9XD6+)`aTEmlxmDtTH%r*f!)2S}`ZtSqYbzXwEG-_YIJ8E$Cf6E5crT;dWY zp0g`)!prW}G_*5QpnD~W19l>BIR%~>o0YfdPg`4oKaNRmQ zB{ZjEg3i)VczttMtWwl|U#601B{P<=MOUp9#2a_d*^b+SYd@WQcj3cSz^XHwj%mEQ zXt5Z1m#c+O>Tc-@qvv6zWNpHuS(m7)6CF+sYh~81s@Io--an$N;9hm4*>UGC^|3mEBov?5lRh!pnU>C&_0LPG4&JRfI1iQtRtnPwSh)K z(9D-A9wq)F@(6-<3w6E!MNRK-@$d0IPl5Lx{QJBkVA1a_$A6mlH2ez)+PO#q1nslT z6%e$`ktPV*O`xzx1pyU%ROOU-|E6+$sH*LqjDG`yb^_7_K|59Dgqh>Llrrx(@gMO1 z9RGRVKjB|M(B453AZUI(x;7wa`A8E4Z8GSE-X-|Aybbuby_@mx@ovSx0YSSRX@a2r z0@U)ph=1Fgfz#B0piM!VAZY4K9PioSY;TXwr|(>Q8}k8z_Crw1OaB(O_b<%%zK(yd zH-K};hx)PQ=zSs0+lYSwLEDHVK+rx*2|>`VL1NSJoV)^~r&g2F^AfJwy=6Kyt_jm$ZEb=Fx(U&Qo0WLyGfJDFpev)15c zV^xBfXdy5^M->$&+V8;3hw<#G+@Xw<@NNR@C75U(vFzu;eu23&l=5}4?5l*9O3xiJ5|&{2fTY zszePjR=?I7|B?4dmJL$mN_<*-Be=>6i? z&=5?tN0F?7NMoY$y->OV(U@q%VfAz5)_5jl52ss$tI3^>E#e=^Khn;0A02Z16-i*C zy$k|OwDTbGLLZoDtok4%1rtr3%GIj$1S(YI+ydP~`&ck}`77{GFUQ>P)lM3iXb(f_ z(^M%OK|)NlD?#aML}Q}eXgGz5_HDx{OtkMBPGO?mX*h+6cAwz@hEOp4A;U#6(Y^u^ zFwvG^OPTyKOJSm!b6`IN?0pIotqA>xomgR_O$9@jy9yI+p7bn@iFO^t2T>51Xe7i$ zU0jfqCRoRK(InHzDMD@-)GT4a0<0`8JvqJ32^1A>XR1MKN2XE4#4kp3BDz(nJg zM*a=y*ANRZqS%25OtdgmiUwh5KzSi3<)gnN0y1O1=VpjtMpfomBXOE5^kBKZccClfIqIQj8h@$p2!w^O7HZbft z3Pp{;X|r%xN1t!o#gCYr3!Xv>C~D7vsD0`|xz`Ot6t#E3s14)zV4RbI-k}sVidsHc z1)El=az`0fP}Kg2*37&UO{7rNOgrBV0k853MeXNcyl4!Kq831EN)G)B2xe6&|RnMGhQ1W^vA z#x4dk0}Ky`LQy*!OdCxTMQt${Hi$w|I};2WT%)L!z_vnBGp#Te0v^Y)xwdWPlp}Q{ zci4YCZLePKv6pv$=ph$HHz97Q6ZqH z@m5X*0idW6X5b4*0!594C~DV(^7PdxYB#yK!0>OnxV+&zU7Vn(adssrYMf31MeQwY zA@d*5R48h)m)SNhdP~s(h@w`2G&e{TwQ)$-P(GDCnVY4QuK>$Y@R8Yyy*`%R36>p5 zP}F`J%l;vjeJPeb6w40AZYWcFb~Yu3wKDf&uM~=!nVtO$f?LsjirK|0aL;97g`&3H zFho&n2g7|YE>rdAjGmX8Vl`LE$iOG_Yzje9BW#+BU20f0f5})2wvEb1DN~<`Wxo{5 z-WJQ6S)rh){RFujEDDO+Z^5$7i;q>7ogL69YJW!VCCsf+>ZRCXo;}^07kEOpcq6`VA2FrPV_ z6D#Kw9Q>*Gp-J=X8K{7{p8Z)Gc}4~fz%yXDy&0-D){z|dTLzvES0alM9aIGzHH+|c z?;%h?irKnVanozZ5iajy>)489aCscIvn*k47>E{3z5%lj2F^g-{0njVrapT6iS?n4 zmyS)pY#JyRqF5)|HrsQTr*5+SF*?P_KN%6HfC}iGYM;IE;NnwXlWY5I7hD&Vg!a%s z)%WDMUa0TT**2q)E<)tToI%9#h&Y?9BM_$`vcA(1XCRg$&P1GzI2W-T@n}T4RX7fD zKH>tzMTkogmm!{r$n8{vu8{QVOUK;#V4dg1!8crV{?SGEJ)U3r#}Q}Dee)9U;u$$N zJo~9Zjn}+z{LAU%R=<2!#$U6y4!v>B-kQM`?QhIo^j61lzrE(zAH49jtjE85-V<+^ zG(S7^_r0s9{;1*pS4(@gWCcgPa#irmii6?E-_~sQ+_Zj5$DbeToPX)wuC$-|eXCx4 zzT)QEX)Q|Cy5r18XMgUMr&zp;0)SvX^{o~q$&y{UD-O6m9 zJdu!rtxpWSv%B$}M}K<$oVU|1nLO)rr@sC>`ebcH_YrJ;`NAkA^r-H zSNm5HiJ!&wkLie&h&71o5H}-UgLoU_j}ae6dR*NA^X+=uAJq;44E6vSf@S0JuM z>_*&zcmpC=et5p}-h^u!1E*{hasGx&69bnbDdIgqv^Y)V3Ct-aM4Uj1@)sdx4o?-d zCa2?4hT|2Q;Wbv2d6%Pz7dO%3_?IHy`6hxQaCl7-=MPel3q=(1t}g|74X21VA<^PW zAVoaPBI0sBMXw-ALC#?);)F)DxaLI>7q>*j2LKfP3sLH&AnC#K#v-;jh^H238luJ9 zH$}X4i56!>6mfba<~itPvkAT$hsmPMHCQTh_9G_wD1@TTh$7;09z~oMh)9jyA-WzB z*13iuCb{@XWp;1b{x)cE`x_ufl0z?1=CGg2oCAomdLjc+8=`1&{Lb=6>hc`^OAgn* zS)M~HDbE#Nin#DATEpZZaQR2H)HDQIJ%~``+Kec3V#M-X0TB_`$tmK}`9x3zE+A9H zDWHfr5~PR&L@9U(HYnoinTWWgP7&AFr7m1+=I-5%2yid>+M zoT*X7g(oSlAUqAqDRf^Bnez7N>oz9@ny<#R;M0aEXoO zxwtDLj@KyS_)tWA&_fZQ3yFve?G*7+DI4arl_E~prN#z>j%zhiP(5^l7Ke{gkZaSd z9>@0(an)Lsxo}UDd>SCioZC^viJoY2{zef8M1geo5nkCGX$!5WDQOpxOY41p+OeWN)V8F0QBCwK zrcVqIp4$V|C$M_Sz5x4(+in1-?|t_6PdrXv;&)R2`9OV1_IUuQ@85;gXWqocrzd>9 zSHEgoqS`wy3-2DQZwzAIaF5kYd`&(!KmK)Jooo3rtPGCFRT$~d&-6?z@K5zleBGb# zJ?n1&@B?_0$}=(FKRoSXqyk-jf7;5l*Zrf?JlpJ{{*g)&IM!cyk$+m+8~&-t@~8d8 zpBA_S^aOueTA)HDW~S};mm)JCnf^Bd-TvwOQQ&od9{E7U8*lhWdD~z2=AQtQcl-T! zYlGg%>)s(Jz$!$v`i2-qnY0s7p;7z&nQ5Nle3&>Esf+#Df#dx4PyCj5xu?nY56*nu zQ;Lx-)*UhO-GH^3iJ&!@vj#P-C=_`%Xf5ZmnpSWvY(4b%2;D7omr%Yz$NX(VuM>JD zXfx!OfQCRffd*l>OVf&WP?l?!{IftYZm(XgX~jy=F!Gm5{;{A~U#%|Jv|=_Wd_Gr~ zYFaT3l-ns1nkUo}`U(y$^Pd;`G$^JZ)lX?!@i-{!^8hIKe~+dW_kgn8E}`2&F=eT~ zRnv-XA}5{@^?HQ13vB_#ubTK-_*FFF4{OEM^_o_!24%UGLh1Jx>&ev%HLa)=d8yDK zD11s)7in5iDDpf|%uB1YHLdW8{2d%~+TRa~M;6ulG_Bw~o$}{F@jRirSJR58ME)=+ zW^dIGYFe>J0`Tj6y#Q{)E^{e-5TCoq5+j$<8{rPcF%tEUl(X`@0P}(?F98i8zeiJr6X^%v1)h2>pww#uO^3W* z(~7e|F^R8Ut!YIqD9f$Xv|=IXI+QC1^+7&c(~4=J6Tug2TCo&#KAM7h*hX$CXagwo z*MbH?CxGUGGCu%%Iw**BiqKV{o516FMs7Q31!yzqv7q&!aDkl5dg7Uf!fQMll-tEN zb1OlQ0_FDSf^z$)tJ?l7&>;9S&_Yn;sd|)vvL4tMRgWV;S$+*D%dZA420a5b2zn+c z%cIRy`LjV;z77<`st0AgXM!SaHG-}LodH@YJnc>g9~3?h^hod^O8)?8HTb=tOF?@< zD?y(ET>!cp^aRjdpm@HMyB!qAEcZH*Zv|ZjehVnh8`YlUK-{-RshMwkw%faG z+q2((2mcRx9`V?oUf*7y?b(&KJI&)Mp62n)F86p=pXGt(?Y76W%f1W$`|Shxf5-0e zcs$p7uEYO>o`>=Oi05(q_j;bk|9;N_{9lQ;;ZfGR3;z##AI5*L_j&y9^X|w0mALLP4yBu%Kx19sVn+ia3voQ{u`hyUn%8Z z#KnZ=dnBLOg4E~Bk__iVk9?u<*U>)W7LyOk{GjmbWqZZKFQ%TUjJ z5$rJkcaq=A^56rA4AruI$`};>CHhP~>@tj{J>-p+{C7af7YqN0*jpsLdOa5DRl;8= z<-@}N6_n-q{FPyjls{kiky4*83cpUu-y%F8ViMod;EY_zr0aq|n= z9?-v7_U{I^Uk;8p$}xm#&&B^5+hu+EjF@2tdE{>seU2|^{}HkGW!azmM4!*9slQ$H z?_&Ls_k`qMD&+%`e>e9RcZog1my;iar+~uW!20J|mcjKHN*)6-gUj(b*v&1%@ms{& z;&~_HAXoo?2K5}|I=)`v`Fxatc(T;zGj)ca;MzIJwY`VPyXx~T=;P;vSL1k$C1Uc| z#_>18p1VBLZl2>_H%}Z~H~)GZPpnaQKE~29d;t6A&VMFO|H!!f7t#K1{j1{i=fv^n z#PRdv_zxMcGjVPmw*fO1=UqGHFYsyok^-7yBjrqxB|)R9KTKx*U|$hpe^uxRHxvB zLapsxo9h}I8k-?fPTKU5npkK2G1bBO$YMOc=(Y*E77$|zPD?^?Y0`*t%94Qh zS=DuQ-E9P%YH|Rw>L66MYZg^6T2Q-URh;#%u1C}Hdj|CRsKw7sKccd=a?@Il30q zN<7m_qDZ2t4yZ0a+f**;MrQY&J z8D*u+ompBsclK=1qvp<`G#HHHuCAazp03UElqZ4_Gu|Ifg16d>d6N}nu3Fo+%$!9_ zV*g*ADm>;!42H*W+G4~MMTP$2tsW44F7{$bZSBLNWRS81yw$$(IE|fgGN?Zw^`j{U z+IEM-;c*6~K&2E4V(x}1gtf0c$xBU;!=8bs}gfnit156PH8bcPFBCv_^4vfv{gOq#n(wTrHIr| z;man)M-_YWCZ5#{d+rc#+t@RmCceM)h`mbb96hqXJ=kBf4Yz&Q@kok~x<}^yc=o5l zo|x83+;>yIRQRa9V$ZZ+FYK|(rFhsNRgT$0U0vV!sC&hpluf`7mTEiXaQLWPFJ&pj2 zi0LxM9#Neb;_cmrwIYVCnpn5tp>149YA+Q&>fC%?+AF2z;-PR{NNO(?KI+j0x^#)G zcO4znd^!4yh?3e%g^#*EZvWO#iK|^)mxiCt_I7yal+{SIO2Pp{G!JeYg>s5@sNyyZv zq%Ke*{5I$>MViWmh<|+k+cJjb%Z2)Z{B}QJ1*K1jQk5u#>O7 zg*wU>!k;}n;3{9s@o5dr-Lv4o37$>zLriNVqB3+7NClo)SC{Pdq3d5EyEKaaL&16RFHRYJ#`j$GpA-`VvCq{YNEOzP-nj`Lt8(j2MmP4)OSRwi!r?QhdH#R^2B4EonODr}I&^Mk`*ChhzSxP{-nq zNUL6Ko@dE1T-MeU0wyJV%gQuZr5Dqy^E|vqFFr@-0RwgrQZ!fDgd35F=?Lh^EP3Sy!w(Z)=S z0yS>d;ue7PS?9Qzx>Flk!cDQFPcn#~IXb2@Bn1I*l)Afc8?v-7=9<<>q^r4Qb4_DI zOGq%)=C4>$ZPm?>L|Q~?+4?rXFKINU&e}+AbGTEm1RA=V!jVO7jS)D=UoSGVos%LP z!=ckU!d>W4T?!t!Hli&7hDwZCXl2zC@kd}4b$$pG6f7=?@YYEv73Ibr6C-xuy1I4h zh!J|Fu8vqK9UDWyQmI?q-PX7gb7Xxa2e8q)wTpc55pRwQ?sfy%Xj}^I?nD<`j)9wM zk$7yh0n7{zhImG<*W)4qy;vFP4D*bPf?+JF=9#!oU36q%8y#;()wDt~5P>*g3^!)R zhk=|C?p)N?6uqeY8;~?&5TBC6Y9z(3i|C=g87d|W5u+alS_43Kp%x-+%}Dm0-T;uD z^J#Cg=9y8mxw9+On(X`N0U)~%9mp^`gty~i`$Be!m6k9+p8&qytXVo>f zHd%N&tOrsMVIURhu-ZcBViXHBAroYg5>GMAnxe^Zs9A6Y_QkOx#PNOA$7d6f!h;1)?-78Oz*KRNBK|lyi8KQ|ksb#kftAxh zJQhWU8`UCn2sU&q9+qT9;VrV`0Woq6AVzK?=Eb16En=ZIPuo;L7lU<8@iCOH2GKEw z46&cTFq=Rc1$>$}bf`TU6&U7MyEc4?ZE!dW-8IJ}bXANn8hGtC+5q_8Yz+3{v*+jb zoS%Eq`FI`*-{EYwLbTWDF~Hq$WsMPD>5Y|giV2qBVC37CnN5QDF*$qL5Ws}Mzo_5x zr15CX1~WcUO({))Ql?Rws7tUCJZO^=%g~rA2Zx(xfgqsf_fa^BFxn;xCviZ!jOQ{W z_`J)u0~y|WSzGX)2#JrK*?$NA0=~t0X%Qqm6Rh+nKyO0yRb#Qq|08C5=HvzTAh89} zqa0aU8P_2F0HU4YyACAt*DAdO|4$=&bF%&iBt4K#Q}#jp1^nqb>eG;%@u<0-GZ+7! zoD=cy&1t~DFNYt^`E$O8|FoQY@SkpF2SM!L#(UczhM zh00f8V4dXIWZ@p~yC}T7pfoRy)>!yu6r2kE0yqs#pNYizSac~^R2@j4Zx}cY4bVIL z8mJa1r=fvQgFOwgKsgN!972*CEtmt7p1>%q+qqb};Zm$>>%ggC|4C)#G&FE-EK6Vf zuH0?0><_`J3LdRC^b4@tS*v3d`$w>Jv0k8@h6bD+P)kT~x~kXmShf)?cQHeuQsBeo81~9o_9n1u zn+la8u*M_kmOCopPiTSEs&F$4ET0}46enW zmA?mn^s*cGB7TUq^b7lIP{qqt%a8 zx)2Z|UqFuE=PQ66O>LXN#+~4v zfZm|sNRqrkMTIQJ%g&(D+?Ur3r;sKx_~p)X5aqs+^%96Lpz1XU((EC=w?Ozws(Bp@3LvG2aLXuty^EYNxgV2fA;6=WZK{AiP zpY0=7jDHLMiif)FeF*}d9z#dqT)hbl?;Ar$HV?YPq(?Om+GEm1&4J$_%~NwI4iK(u zPa0Nv^$pOQBb#d|4iR$y$FRz)Z-9OtRj&5xtGd@vTyL@gq5~3UGB@i}AUwv8t4%lWcUOh6-Gsn{xsr^h-De* ze0Cb0OpfN4OO)RNO8FRmQb+-ru^gW`%rP#;8dW8nDF}-hUxdXXJM#ubY}zlfeLEEK z>%27Pjb1EePX<-nF#<9ull>;NM*U5+_K8-Jos)%%p_gjQ9;I~&#y_m$<)AEHWcz1= z4Z@HLX5eYJwm>`*gBJTpn-^$%9P_V&AP2?lap-Z@wczr}S>sK)y~+wik?km7!SeHL zdxE`^C5x#$!9Lk3H?alk-%(0D6|707xEZk6k^L~!293fDn<}YoS-vuyx*4Ofjjz#S zz&9Sr%o~~Zvd)gnU$hpx5Z`W80mZNj=x+#gHH*FFt7|Gvo;fX^wO?tf-+Sj#Z(aAp zcSn7>ovwffj~RFC-NB8Mx{!Yf;;xNZ6Qje| z-uOC10TmHwk8SC8CCqwI&UR$GbJy{ep2hJyZ87l8CQ^)e)vI(&7a~0pk*}`?5yvA= zMm!RcZg;sKbeBsvzI6Xfx4?A!OSiam_e&SMbm2>PxO9C>7r%71OP9EGx*-O{Ibl*!?zjP%` zm%wy8OqauZ(GYJV@)PNCh_exwAfAEPiuifN>k&D~{1xJVBfg5r#v6io1me+%)rfV7 z9f%w%T!;7_#GfHPiugR@zYsHV=NOGxinsugchNB7`G~wDegpA`hz}z2X7dgrZ!zN$ z=OFSD$&n3@9|t=VK@r$(DB|hH!-c>>K1ICS$cvD?KvTrQsED{<6mj4!1-Utjc%>Ju zd2$ADa48~IobA9{CPW+bwagB&LyrJkT(Si?vrDzMH*y4PNBHmM^F881SMI2m+h~prNm?a`L za)gLiUa`et7PUC?nh1(uJPY&IE?OLBQj23wvBldvMZD{a7N z5r-rq;xK?BPKu-;#{m@a`XY_P9ifO*KoRlEP7#N+QjlX)C|Vq+LV8OyhvPKnaI6Pq zj^Jeb97@v+N7!P9gEWdbZkq^-pl(8-yg`Z zf_ExEWM7JIr+a(~`Vnn5^=feRc|$TUiT!H28Q~Q*AJKleo3Bp4oBGilx6}>Tr@PUQ zyiav*?ws)nX_x`$pda)JO<#^CKbr3DKF`c!%oH!B;msvn(3jV&P_J{8H1kfRxCN`a z+q%N7AtTZ+CV|5}$-J1L9Mx{>f)ICvx^6sFo>f*y7WWwaN(a)o1@Tge6il0v`o$H< zu<<&Sn>$;T!)<_^SOK@bMO`MKh#R&k?0O$UTUfAUenTf~iaX$fB}+n))=*c+X3gUR z{*I0YGN|~1Q|EWD!>8!rFnL{Ys(Q6ERbw5qk z8|nM7+m8+*3N-Ka9Q&;b*YmBDfknQM($1 zcS9@ieZN1m0L~FF@)x94`-|cB@ObzueBD>*2deOicl)Pg+MYbjUvaN}1+fg{c;0_O zE1m~E4)ds9P&8;Yhtr@HkAULSqLzm>UGo6wEadOeRQXq<9p2|@hfD93uyYA$73le( zwA&7f<6YgNX+;w#?bK_k{HIZGHF)%q>RL@JR)YG#S8G~P3Cj8$tLd6jP`qM4y%-dS zv3jDW6+uw6UUiYC6`UOAfkz~*U^&QggP^db{E*>r`(%2d!|Q0z-C z{pL*o%>%^*Ghe1iBqO+9G!wDB3x9D=5wZ z<tpqoH(HYvYmLC|LKtY1ASHm&@c;oC6f*9@Q5sQqAlkgfKM{cp<*S6AAQZ=#$1|;1+fNG$t&HQrs`6a^5zR%cm+gO(Jao)=phsZa^nbJoa)uD|(Wd6R&T-_?0rp7w>8y{7 ze^Kgd+T-g|zqh18bI3#gIVt}O>Z7C8gEDZI#(X|~VaO2v9pS%C{Y=zX^hd_=-=Tff zzen$sM!cQg-2dCu|)#k1L2H^^b=`TF2V{!a= zUNHOu0xWks$MaptsJ~U}$3-MQ4>JAl6!Na^HwgFGSRZ(#lmU zR@Nyu9ZB!_QN=!7G{w{+NeQ|&Sg|nb(kWIy)-O-;S|sjJay{{|r1v_;yHe~n`}V{X ztDC%j@_|I^iWvotB=G`q7rwFS&oPYX*Y%v&^ps5=gxd@kYF!&@Y6>-#v__h`TOdv1N$Df@xJ_}%))0sbAt>~e<@Y?KB!?mJ_zLJa}j;#O6D)62jc)MsPjjFY{z{w zRY*HS=WJsc1jA$KpdL_-QBq8L>-agJFd%hxwTo7BaugTn*OP(vaEr6HuhWl2tOS24 zE&Ph3p`~1@C)hK7QZZyuVIL+bG89m}3?n3$_37LHO1;#JPq$T&6=q|Ab#;fs`Cr*B z73-Bkt1&5I{kF7XT;nz*>BIS7A-ontz52JTN;Ew8@c`_ZDod6ka+yx)e?3j4%fJM780#T+V?FZQs^(VW!(%4)IqM``#2 zrlX1d#N(lEtauf*BebrQ$9rK_ZIvj4l%jtyY|+GeWSrjLO{gE67Q?S(^-Jl0Ww+QX z6nm@3>;5ck0+Ibq>3`)BvB&d~p&jw==m_t$X( z6mKse=R>(vWV_faggwmX6N2mbCiUl1DHS_UO7_Y)-x%s^e_O(xUGeqXBlb-HtDmIz zb9;NL{@1rZmj}h3^j)hN_WBBk^XKwVoW1a2?Wz8(KI};5&*j%~`@130UR;0H{v|q7 z_;Yzo?7c15nT|wzF^A-E{#<^GMIZ)(J2JE$rK#&bsl8PGT%N|_6vJCm>ipw0@A^+_ zFO@%+Cui%DKg1l6VWV6tcA>vWS4?Uzl|Pp&7HT`YG_j_hEQu(IvxjGUefV=ZW|1y< zmX!K)Kkc#Cuq4ip7=JxqU83!+*2Fq0@!p)eeo6ef{6p-S)Ap)<+DqlnWe69L5cp;t z!=3%Km&%_@({gRc)XxVnhqw^8zkU02*&_COe{?3 zxn9NC@aJMat+)8ZOg)M*?b$~=of>Wm$>xxb`&9E>q>7gaw2a zZY#xhqEFSSgpfjS!Q$niF2Yu7t(5ht2{m@(v+B($?O^|xbl`zexDkV|KDGzFn7X}r z+D~`vUt#Y!be?C&p^L4n-}Bm!_KwoNT<9BR@7P4YE;#SD;v#o-@BLB#F0<02{#}MD z|1RCize|D3AI!7f0xpxr_;{(`(0u@Hul&U%%g1;EK4W@*-0TTl0igE?2D68(O5joZ ztwTCb`<~gG?kU@Qp=XMgSy%5JWcC5+6`mcG)0fP16Hsrj_90{Fey_C?bx8Cjb1{9% z%t!lF?RfLF`?u2%%%St{-EjzhZQetkl?UH3Vs~i(^~kagR$6;1dc8dr&q0U#iua4I zK6KvCRav+1oc9)3kG_HJ>iTMbIFwP;8)cH~8G}JvE$2NdEdr)Wl(fwZU&VPD6JI%J0e;w4b(qqlmb-_Nx z`RBRU>%sPx!qyVlTnyWbu#JT~-ia*O@#2K}*mhOxtFs>B`5=CCDi0PZ8|NRmaKo_& z*bcbNZZ-CUI1b##T9*$X>X>}l{_bbJW6SRAxoDNw>RE;9>8cmJLtXvHsb>;BcR$m5 zd(ozDpF_{0k8_)N`B095*6Tt)yWCTGsB-j9-f>Kw4q1iGV}@Fvy6K9v%0u;|zoYUf z3qW?SC-Cx)vMtw}`tzK5akzDGS&ntrP^;%LM?S=g9#^M->VD(s$noZ}XPadrVp)Id zFtk@W;^~OZh@VD1v*8yhkhgYBMqbI7oV*QV*oQAKschZmX}rlUZW&{Z-mdCdHKKmZ zk(Hq_^`Kd#8_qxQ>{$3!lKr!=t!Ia5{*ZUHYU8)jE_=PUI#-?@r1PFr{HUGJW>p?! z`!t{(cx-6Llxv3VdK~j!Z$R1U^^Q_hZ8Kflv7Wb9*oYp)38QzYI`(?=IgPot^17|c zUhtmJu6ouxT*_`#$C&x`8#e9UHe$mV`f}3zX7J}Y{5I6*Iqw*}@Tu#iwmV91m&f{q z8CL5L({N1~UU`tm?cz7ztKI9ZRDHv=Nq_r$)W4MOJ7b%R4^S3+p4&LjJv;Y%ZKt2@ zx@_Jp@ez&c78;zOs zooh9QqFaB7`;32R&#LFeRjN6frc>!R_G?md4JuD`{owB6W#OX1%F^0_HLM? z?zirJqFf)7%7bCrM7dx%#?RTc&5&o$No8y;)ZmAKs~m539f66 zg-yzbo8PWH)L0lAGavkX&~c#SKrQCuUK}1@dGJNtkDGG$R6LLSv4y;6z33bE@lW1+ zKkuIlaE{E!xl)Du*#qkS9K`(``&q#IIw`MhY(Ed{0G?^Dq|r8VU1uJ~CM<{WkE7pu zcYev6c+~`Gih@<5aoPmea`w4i2m>%rHZGT%ov`(wWk^M`4({#cKxz1oyh z`NOqwf6TipA8Y+HR(nUNF|53xX;+AR+1kuXD_-Cx> zDWjA6e6%*sF0DMiv~s-jdW7oka}jI4uVf;}ZoTKtsdHOrPPU$n4p{^_-gO013L*mbLsPeY~BQHM;6@eIGS zIn<Z>7ZU8t*(u4Rq0Jvf-F34b~? zPi%?WyhvNi=2~rjo`v1RQ_ilCtC)qSM5rPC)SgnixLm(DKhHQZTiVdp1n0t5v!aU| z!Y!!gvNkM9Hb2;X!&L(B z5Ad*A;s!4wRb(}^v(8Yb*^}t_u~Qucbxk)8LFYAKtf{=`mNahKREJG>b#ym&_3KiA zqoFRdeP1!u(UFm`c{L0554Gsat`W7VeP6MzrVFoSbXpw^=c+Yg^@4sUyw~BXsIqvB z;8Up|SE>)?-1snz?1qth5FbH&5V03=4`RLZrGWdKu}(%-pW#wm4|q*E+;yc-Bgo`4 zkig-T{tx5_QAc?cmbA9K&0w7*WjI_uZ$o{xQ-AXH^Qh!iFy*O}>{5RTgzQ6mlNax| z)bXb*PLwy!Dx)*yj8nR7oy4g(_OyT(72$D5+sB{O*|j2?TWb>4y{ zJT)uEpUWxl_@?pAYJxky=`&WPo?$1cCqKFSxA<#zpHT0|U9;AEwV{ z=cUuwjpE+oy4}iVUCxhV-5&oR^@MD0KmQqis+UxEuie}gviMD0d0iJqE1lu>ZK0-M zBgP}RPj}%vHRX-oYKnBP#f!maisA02ju5j0`eZgb`s2C(0DsT}zMwg^!!Q#wJ4;XS zEcL#Z9-g|#l;+sGWt|-O=!>kSuCbQB!kWRa8P{@b$gwawC3{|LxRZXA-Ilbs?@nCH zPU`MzKz~%7<5D;nwa}-BXnuyVvN* zl_Y`}ZaeTaUyVMM1Ver8lDzXY;0K=+X^S*A1KT0AaKQPqv*6rmATByFCsN;_T4+Z> z!WeM=+zC&r$_a#8n{f5$g<;IpB5hb(N4It{>K(xa4edNbYRp%=micPB&iRlR7xDf~ zG1NRpt?`>_%ttb_alI8X;CFh!?{q^K?y1KIR=+{$;T6Jr=^aV!=8zbk0TwhYfXv)Ib8fOJ9g~j)|T(stW zuP>$8E|!XtFFPrZ+R3w0?JI^PeXTRDu@0kv_kHKgNm0+k6kQX0F!&)#`{uglPzxU0 zN*1iEMYKq~JjE9Kahq{}KNoY<`?&z8+SoP8bgjU~tnJTB)#5QrgKMl9R)(Y}HK23$ z|n#)wl09p4nMjVuj!)nMpa9d5;nD_-uzS=1F> zjD#omm=0_PYEfwns(TvSd~& z6rS)U(;+4cFI1_JWLrjMsiTt8%2}e~u{xYBm_&=@^*Cl$n&ciw)M&H~HKlHMR1!A+ zfMmVnsH`-}QhAJKTa7Cv8N@3(3=ru=^xqirIi*g{mgK~!$QarZ71eW@65$=8XlI{n zCePVi%6cDg>b=S&&1P*YWHwjo*beE9MgL8`_dAAaOfqVy$r!@>Kq}Z)Q`Ce`(R&2L ztbEr_5XdcSV zG0u%$cB) z#2C>)D~UKP`7Rt5V6JH7l!7P@%TNc0WtfIw8LlB%3ZoD#BVr*~0J{R@7Hw#h8-k@M z4uWNL6oSP-t{8Ndv2F;Kpc{f^Tr!*#g^~hy#!(2C3B<-R*eVlE87-QuQB~lzhWc8G zuq{Wp1^B|ul!}7AsO=Qbc9nypuq^u&Tw9LJQqVAPFa|3Q$jda%n2JoFZ50hNn}pw@ z_$?^=Ggw9g$&|(`5N}36VP+=gNluxm0lbox;D}=Deg~*#wqG}lpP(~yq?Hsicc?{( z9qaq}s#K3M0_xTt1)FI`t}O!)xOp>|t1S>OW|r;E@S1P^U0^dmKwb>k%%32*8Bv4H z{Dj#An|S~U+A?4>*CPEOqCL*`eGN48cVx2o3VSc2Hz)gLko17(5QwfoQHFQ>U~mXI z2k~c5!7ljHs&nUn+PNG|dUBg6%e@Hyf!uBQ&&#EQq9QBH2ST_R|Jdy3LDGFWtfl=L z(t-5!+%)cb?nwOGxh44b`*Pdy@6Wv&|7p2*;XfTNn^vG?)*1Mto9~SL ztPqmFM=~%ro4x@8b~e2#`+Zp#Amc?OGvCO54a677v-xG$-Vy%1w0DsQY=gnPiaw0{ z(1^U|0I!y3Go6kcPk?VzyVw`NvgRW)R4y-tC&0*vEX8_p+)B`6M`SCOev4_=J_#(` zx#wWKuzM(=ZwirsD7_rIHzN)u^vwlG(BJq_Lf>3v7((BC9}L|h57p2&zXD5Kh@rF9 zR!+bcSi_+j`ldOSz09y0`sSNp=~sNHhQ4_qmi<#K`)Vxf!Op4*YUrDMu-w_98v14; z*z;&vL*F<%prLQdko!62R;oIG3hX^(1^T844YE4h1${FW0&Xjt&^H`HDhALugWJIr zF$d5$blYCcG@x$=?*X%t44`km45~^H`sPM3^c9{>=$kYo*p}HE`iB1M!q|yy4SjP% zEV~OVcQIQ--~2q5{ZlMU93!<&4SjRSup0V?F2q%?I%rnbP*iFWYMfP>eF6xeZ^l8A ze+kldUe+w6zt3cmuN=uCcOh*RJb=Fw!J-K*b=vw)0XNhR7CeLeWx6vLynr-kS-@~9 zc-2W~7aTyE?E?Ikg7u*AxQTS3<+~otFnjp7L59<>x8-C1%u>)eVAC243)4;?k%1(= z$E6YSW(4tY2E#xaA#X;k05_Q&A#X;oQn*lBX$tZt>pie^v6ePHD-+UDNal>mo&e$x zWEDYj3^V6uvCd17%mp3}D#6Q3TD2;DCKW1t^PxM^?gEon@Ok|6YK6KKY<1EBE2|Ys zKY(CR;V6=#L3tw{0Ht&AL4>>+@r2PdqLd9w%%JLDij-f+x*Haf>3Lf$lj zVJ{g($eXOAA*L_>yx=HB@`^^3gY87i;&s{x2wr3y|i^5b%07m;g6fJE6A-vEY_0e2iwDia2Cr7RUGN5%U-MegTr%i9g%- z2>$&~;IDX?%N`MFxC6rga5MO2Fek$Ju#wG!-!|z{&4Y7r<|{b>ZVHj+2{=px+)Oa6 z2Dq69mW?wE2Lu=6*@o2sH^&=R1Kg<2v=*|AL0MfO|HWi(_Rm0kzN{>?8gDo0>Aou< z@vp=sC@>rVH#dS)jnkwgE`S@;IKv5Wll3d;eI6=>8sNtFDERkt?hQs+bMEnSsLs7% zNZ{P#A&vjjr{YmiI9#VMItn+M`G_IJw-86$X+&WgQ;*k%DG!5EKK30EkO|U%FLM>+ zbum^^hH$1JEM|NG7DwBe{G1g1mi9;6zU_+mbzU0t#?aj(&5i(7rj39M%4Gi&T19t= z)^5=nZRcbn-?8jbTGbde(bg(Z79VZ{cI!`S#hiJ*frx`>A^N6c#(;D)5DvK-y>X zT6qKqUt<-k4%K91!7Sg{t?!^xWwaKu?eR}SofZ0ts!%qLxKkl(vME!E^O3=BB@)sZ zEZdHN(PZt%oUisD7%z*M~u+TN{(4jDSiyw+2B|z{wLUo z!{TOP_S39b*pXs%gvYqQH{149d!@6tQ|*(TcA93d`US1r%z?%s{xTa{#9^ZGZpY zfBnun&wkhYu6Mobve({w?X}ke`2@-5*j40z4dk;Vf2c^_5&oRy4;0CM_aw=Fl2=X! zNoU4s@_&g;EFgc+bqv39Pz1~8OY1XZba)7qO6_~;qi8fAWx4nkb z?^%}0kL~GpHE&0N*DJINjM%uaIJOtHUW^sD3JrT|SZqGT-h|lLTwC2sCv6;7k%?3u zj(j&F=i{71Xl-FrcEdNqo zrRBJc_W`*+C1iOxxjBO^^q;AIoM#da)BlCXo&p?RoPy?^Z{OlIcXu{!s4UxSZtzHY zZLhhD`R@S7>v@@~{($2}_G1x~AB!~^WVFd3#pJcjHb^nK zNl2I+K5N1C+1~JJ3o_sK^1S6)%ed&uJ?jy1hV5wuT zlWwD+rXv4l^BeSjYCjyDmC7+MW{)X&d6Z-eya>#eb)};=@h+R9%T`vK7(Kz=V?Pbm_^#lHjV*06`!jias@+v z9x@glTP0XrzrzPV5q=W<74TQWUj;u6z7W0`{*l+7DB}Ki+_#Q<)-m7Q^NxGwb)|gY zd3oC#qq%1t_r~L1cHA?Md);y0yi-$#PxoE?=HGB{Jnoyveebv*9{1Vf-gkYE|Kwfn zqsM*uUjM^~UEFi;4IuZ><34@dPmlZbai2Zzp~pS)xL+Ul$>aWd+^3KG@^L>u?(aAF z%*S5mUV7Yrk9+TNPe1Pe$9?|3`10*J+^3KG`<0{4u7l^^&$q)r0RLt9Z^Ivk=g`{g z@Mqz3QSg)CXTUFp=bN)Ocy1Z+5d0qar{VuEJeD}Huyl)B>Yw8rrSJ>kKL+0d-vj?S z_{ZR%fe6^Q0f;bW& zQg=%#d=?ieUNISwx2z(?@k<7AKvRM^T*)BbJxGum3_=i}Z6wHrLrU@LCqYL*GH4sT z1o3&8K^!5JAdU(%s1081;>an3IG`$0ys9&Z7y8LSI6fdVh)>KCk;6C);>eCjakPd( z90C$ueAZ?VAG{?ZM}!!}tENbCj01M4aS{Y^^h1Q%>?q7ZUP*-`VhmElV?a1Q?=y(^ zC!&&fPz>Vjl;~o!V-QE4M2a^p4B{P(NO5S6L24`m2*=S|2650>q&RZLpkWbR93fy3 zM>j=1$4(f;Ar%SYxCw(eh$6bwJs^Vkgep>ez@$_)gW=&gfWx4kNJNf1G3a>22(zJJ zGs303c#nq+SR6!yE)FXIc>5=sIdDWZYPbamHvrEd-tvn{91>y>M~Wnfqv{OeK)WP% zv6#f6Kat|FlF}6w5j5+YBQp@>Go1)?M3lm#5Ih+O$H6=bbKDG49Oe_lIle<-4*7^M zhm#q^$6Jwl10;i`~Urg?EQDnO%eanHkC|Xxn>#AKU>u%H;pB1R{Z?4nHRlH;9tuc7`;;>E;Zqu5^=FMpZP_0Rz#n!yDg6(YEJ7%lqq zJA~mv5Vgx9E*4R{EP^ufQJ)0rNHLo!B8k7K%@kwmLFExo&f!a^`vr@eDSEGQE^?KR zamK3M6uX=;Tbzrro8m>-HPLy?$=l*Mphl-0bf%@egJaj!;ZA0Xx5Ba2R*V1Yq^Cda zq)|A<`>JC->!d;BX~zy=h70y+%uaWek95*cLj;>OrnpK+J7b{BNqHLj5NV4uP5ob- zatMKMA!%>7B?po4)6S?L9=gs+Tkec+Dekc>n=OtF zb(U-DNVSpW2o#u&$X39an(oC+1NX1)c9q)5>|-{Pw%wDLAnayu7t8*eDc%zY52m0}S08kSVWZEHxYyHzN8iA>O9f75+~Wr3 zX!Mr?aVtNKZvz?5`%IueAGjOglO^0I;d#Kv5uOX&13Z9p9s@mr{Tls!KX(3&I}Xf;+>09h$AEYO3Gmeg(9a1sUxOS6 zbMHYo2X}$~UBJ6Q@6_n;1wIbBZGt^O>gPkw6_9J!=x+vI2AZ>efc~3-dm&c~qETw7Lf4<9i6|^8vTcWDu2Mg1)l>|OurY1Eq?;rHTt&#$ARwA=x+x;gm%@earHc4 zFK9jo0$1k(zYaazFOm2X@Jm1rm^}(SB*;ObKG1!@F93G{9|3L$ei678xC_`0q@D&K z?Y&tr0A#t$6F$eCC^u5VGlk~M54LY!zuCUe;5n0W1HdPN9HwEr-UsXfJ_)=RxLb$& z`*gT}mk#&u1U`WL?$Ee;JCNtyHjVxsAO>p#d|n3nyMSz0oD~N2Hv%y{5a3H1puZZ3 zml*-Rmq;nZy@)Q z#?{AxUxC~K;AardX^Ozr`y{*=SO$8hMt?7GC*-yQ??HHvM*qz~>YWG7KzM~l|41P1wSa8@gO-+i6NmwM zwSP0vKL9!n^h+B3F9N-wk7@Mx19@H?(ztpzknO5ZquRH*2lNimKtIkEWzRNXD#EvF z^lt>-3%X0Aza2=s8-X~L0}UGeYk&^un>DI^oLL_M(7@FdK$cfI&;z+rjcQ+JG@Zay z&_I7a5Jj!_bq4y!fo6H;X;k}DUypI|e$WpC_W_p!`-EmbmV)jPn)c2Cy+-J2;4IJ; zLKgyyLHmTx1x^PIQ2Hrf19}ngN{KfGNINTlKHxP#FA(`s@sJNCeJvW$nXJ?>lf@3>=9fe zSRv>W1gQ8KsTy6bym2mUS?+NMs%u@Yo7cEpT^n7l9rjM_Q{IP}R(iK`uj`QAZ>PGr zi+QTr#XQwDwJ_Dy(3tAlYHveWX}QbQ?>g*qxq94N-7eQo_b&YJcJIOe8F!Dz+AsTcMdp*fG;@%&I!lmI^~=OwKZj1 z%64qM-j}i)|3_1f;r~R+N&KHmIgS4_DLtt!*S6H{sUG)^)San&K=pXHdXWduX{6Pk zemMO|y4Uq)`l<9(S5L;)j8xb5jNS~}wLA04OxtxTa}fW7Sv}dd>u~l_{2$GEF~{XP zoiUh!ykzdlbh)0)+=u^DnWynTn0W^OJF<3Wxm-uGj^ckX>kR&TvbSctpy3Gqk7ggk z|H=NS+k`gnqgtdq%=@P*DG&3$X`%4V`z1fqM}F2w{!hX5XnMW0Pt%@1L;F#F zePZ7smLK95G0$*+Py12kyve5fC2Zxs_JdvD35;0?^%`?(tlF;^-><3Tu667(tld`Ug|^q z5s;&6k^H?Q{I{tO{ErKNDfL0-XOiFFFn`ct_DAKUfoQs$e8~Ts$UiFS=Zw_py+<0p zf;U2N96yStpQnA`FB1NLN_k-7NIYv>)DB>&ZTD5v{{*n2?aGsWJ|i~QAM@Ba~g zht&VS2>k=G_Ysl*wb=Kj@Gm9}o4zRgD%uPC-WPrg?S=o6@ORK&@YAI}o)LQv2!EQ` zpC{+{_gEjO|2m{Y_ZIC1eZSC-$Pb8oA=85m{i3g$=|R@)C%cL1p-r3pV4tBroJ(du z*AJNgOYls!OsDtP(4Q04|I9>RIsr0A#D0uATREWnh35Su>7zpT2z^-Sm9U-sLqc=h zg|z8kI6lDi^5y*gDbmY98hcI=O_#>;`{LqTLB2!`t`Bu#ae1s@g)J*}2-cM{ zA;DIxqS)2e(p0b3y0U`pZFg9~<#U%*1*-y;H8sJ>LGwOQ-eL-O>HOMCBeASzxmxMo z3a)RShn3ycI-{K;xcJ7(6;WDZ-t)z+0*~k`LUj$Yq>;AbT+z)^P_m|cAXtEPlW0U$ zbEvLEt%zkcYc-RD)hm`)2Lp?1YQq_dHYFmrcv($t<+7^zLD;>xa&BOL&4orlkt|w1 zFNt{KGL11oi$oW!Df$>O$&oJn70Z*9t;tYCU2;*Bm|hCIQtgmc-G)`HutITSlV$nh zjTE!iXu>$*EOQZQwJw<~ zjAm9SJ%22m`|GhU2Fhhw4NmHM+Szk`M9 zdUcDb>}HnHC3S`xR)nxLZ7WuF@5U|{9o?-pn_9Ula%)?6XY;1zt!h7H)DIS8=Bm!u zcZVpay5qPLC8iyio!RvHiyiJRAdX}&veI5uWHDZu%=1WZ$|5lsFt@3-Axt(mZ)ho~ zZ)xBbC#Y#sA#8Ng&=6`UXlZNc#)9ZL1wYCvm=OOTTf$N0CDhX1wJE4pv$lfkuy7qM zs#<{7-`R!5sdf9PYQ{QyD?;l+SpTmc5-Mg(=lU9KQ)30OJRY~MK|C(oH)K)BB&$LO zg2C?AR%}Ak5UgK^s}m|UXa#hQ*31vguc}?XBDiAyg83`v@w(a|I^KJxOYN%UOs!kkIspKlpbs~Oj)SwrelReHgUWQ;O0cnefeI#fip zgMyMUBT?fkC_Xp4D9ny+UInw1!R12?)``v-%FsC}3o{a0QyOL`X}1L>VTm|{ip!Nn zMalSzG4#wV(9vcl%SbXtSu#c`841!U2}ekn^WvG>{Buhck*(@mi_b7-$8{bBGsB#4 zF-cQO#wa5rf!(DHS4ox(jjC(Ac!st;86P{!oTL9M(6P&mOq{_phccv%C1aG4p-+mi zNWwBNIXAnwOlRxdQbl2Q*l=y1j$Jw=Tbes_C_^eJ83RjgovRc}!|XUaN|G_K9}qj8 zqGWua$(2;sP=-`jm=SeJE+}JYqN0nH9(r9aC<#l1%T-%YtPLzm##f94NlLUK`I6cy z8p4p;3NvEz#ZY}}h4~3P!=Bx4lAN}fnzenP!qTa${W7nl1YuBdcoaal>xtl|=%udJ{b zjN(FaiwX;8l$QE@CFL^p3kGZFuc|dv1e+x- z>cbG5wQW6Kq0ump)f17TK3O5WT!+T%YZpBjvQ{n^u#W>ul>pN}Iy4xZS6N#bkr{FUBCTjaOLZ2y9VJQ%O zo$L@hLhCx?^_g*Y6L*d1I{Nng7sRf26<>bsoCpZFSc8>2MGgewZ8i3>KAM|4yW;KZ7k%OO2YoEJT%1yg z+uz!zuKKoykfaw31_C!Ojo5HR^hsQ+G0wh-q&~v=D}x?}j@9?$IDJj$)u-CC+QX=+ zbzNJ0e*aHges3MBFRr~bgw}Si526!P214J;$`uR3+4!00yJwgV>KLjorb@W;1@&KKU>pL{|WWgtzC=#fQRZEBaN&|^!+_2g2lRo`dD@pi?{D%WjgXT zQcCYtYB~??C0`#V)Ynnh$}MY$=-WA8M=I1{m9LP42*l~D<9?Vy_AO91MBfq7H&S9X zUZ6g<8YUT^-n zU!0qE*FzU>H48hl8DiF8F;#>@~#UDItYCP@@pVTVP1>! zH)7Ed;PLw`t73#++{n~k*n-(Xlko%YinNH21BU>-UpvZ-{N_T6+cOON*AIkmqgDEi?72rE^tZsw3}ns z$w@odUovRuJ@@Hj8{s(rdePZE*!P_E0utTvw%dB*yQvmGX;X1W+dWUM zxpjkzJBqpxJ{R&YyGK1ic_Zgla`^`+dp?;_(D6N2#k=oJu--kH>MA~Yk9UgJV?B8C z3hUkQ@p6Y#GJ9#~E5EfK9B_|NX=2{nyWWZeD^A|yip0x_iZ{Y~H!O?%yz_I{-hoN{ zB*)q@AawmqZ-qOempbCg2YpRf4-UA!N)Pi&*+$4%;2Av(!~D6KYa}l7nM}@?Va-ew-=t4l;TfM@rz)Fs z$-e`6_zRZDJe?=tW8_WQsJtWJzNW^(Yn$>1nFsPLjdyG1c*A=g$K7DSu4db%h`#kc0+3=nfCq&nPd#u!h);HiDEwnzr z64lR0*luioIja8BpuY@xwVKKfnDR{~H$%zI2+J`a=h8bx$xjK(C)4}CCCBrCd2+?I zQJv5311xuayy3vJRW{Du`8dbs;asc2IX4&QUgh31ZO`w4+(;kJT_Vq6VtoI}bCKmS z3VB|0YqvTl5|s^k(d7``Ur_Jq<=@9Sj()icZ3s5K?RMcji1f=RFQ6ZTo*e_|zZ%og z$DnUq<3b;E-+gn!{h9P(&!P`GySWm1{-Nq`27`x?cN;XW37g$}&pyX~i#AwK@SLu& zbsx|3`lQ=d=j6$nil@>py>Gt-QMNlKxqBjB9Dr#EN%c!}YW-yWjsZuBR{KI%?V1{^Hr^*v6~S zrstwmgDGi(wyh&-o@p80QvhF^F?GF6K>8c>Vns9 zpsk|4BUInii5XbF#-{a+?Y?!*ZFOB&`?_13xWBBgv#teCrya%fuzM*cKdD<=nd5P_ z4`WW7Fn2*>ZV1&E`}7Hxwv2bQ_(G(OyTT_Ft1@p!7r}#EU7q~B6 z7HaIi4pU8_tf8$dzY7l~*tfcPUjC2@m>P){J?AS@>Qf3j)~}uFTZxpTDp$u+S^MaT zoufpOq!upxkCa$A)yNWcJ#O>@OpR#}C>3Sh2 z>iLs6cT|SaEG(#YFQCS5G>fSibpM|LskSZ@&vOWMqo24^t{{L+7!6w(qhE%S?6k zbvD*DggSg2y~K{dVZNR!7B)1r*0r_~FQrAWB zbu~71`qnjZ611Tk15CVIrbdw;`w8vnK+K;p>{#JNm2H7 zH{Z-O*0nY?hZdl-#e>4)R=g5uY-^Z}7l5JquG#1gL$f&vU+)b++kEbVlA3MRsZV?G zX@HbE%2m(m*A}37_)Q4p8XCgcm~F*8<1KGzp?6xSEX+aZ3aMIJ+r17G=2dA}F;l`X zp!b9gky?*bP)rxg7Qo`w*Bmi3HcYNLVY6enL#{!I#iDO;%$GFL2`Ate$EPFL`b5!T zg}MA2_D8v5{CCgLKW)4<;iX3-wQAW#NsSl)=Op}_@TcHU!*js<47`QDi#rXl&pcnh zN%3>JJTT=I^SQ+S3oyFTx229rD`hz2f*XHPJfK6 zD4J1GIJ?~1U=a7;prdZLE3P%H;!?6mTev|FNPjaC>rYi&o7@I2Egtf5_76sdI@A!` z%z~1FLSH^6f3>ckHnR{!K}pdR>yNn$KTljM{4w2PeVK}!h3KiHF2(xVg5`h12g~*6 zyG@;Smih=vtv(!76W6TfQ0w}xMo8bV7#G#`=~L;HsD%@&+hn&I!4*D(E2)D zp^|WU{Zp|*v9T88uA(W_086?<%EF~}owr%t$X-ctunYGrQTa6wN#+C5rJPh2F8*b0 zCOi_RLP8t?jSo}LzLCHM%}wpRA8D$`%l@!RhAwLBX!-=c){Y9+T9t;x@!|wT1?Lfj zRcn!=@NCX>E>;1P@j5gLbWXx zY4y7gcN+tv|%T0|1LipC+YN=Z<0e5uNwbxkuuceKl z4m3*?CZ5hMJe?EN3{ag=^nIeKljyL{rcWT(3zdm?G&P{JY19KHxIgBAxUok_wo{f^ zOOyIWHd>Re-A;5?OS`+6SG5v>S?JuVM_&TVbQ93J(Hk`3V_Re*QXdJ5wntD8`s%vLfE%`!GH|nYz)lvv^)h#wYOtq?RRKn2#kz;(&dZVT|2D~BE+O+~7 zu7>zjVaa1e^QIM{`cTsb1VyY;c3X+Rpj$a);K` zx}ohhegJjBvcY0VCtP>}H-K17C4NDQq$cR$%bKA>mfHTL?5H&&qB4%Ao_y?f^?8PN zvB*bJLOai`HMR^BDmd@8CVIV!sO((OfaGdis4isOGNENLL!_(YMojS~8`h=4M@1IC z8P$&?2*S`VZtm|0)!kM@e!-BNd~@F~Urz>$OO9jnG&4`PGDGr?&J1gt!E9nMh;Oy<^cuu%7rvhhr()7AvAWvu^r;7^m#>qR zzU1yyQ5GLT)flxNK<50ITE?;P=!Z2}@T|}fsWHtl12c={z*f6Qn$Q^JSRkEkU2hJ# zthf$p&K(us3-QOsuZ3$dKaW zHX?KbVUZz~U_|zXMXoo8xia!=b1C>(XJS1mu~;wW*hF(#_r*p6HBwY^pA4V5WH@czYhB|aMm$8p^gTmS!PN-pz97fU}lGBYM!s(QBE__#H zjw70GGMcz6g%Q(7k^iG{sk!hCK!mH0%!0(+xQGq~WDXm{LG_v!`L~DJmt~J|+}XJ) z7iYhGPv)!lWDK*1<9u+HTJG${Bd*PyopE)B3vavKms^YRos%a=fiuE(XJ=%P`MZ1Y zt~+HMg3BS6+Jh0~llLGhd2ifMNsH}|{Ve5?HL$7Gd@eRLnW1gZr41YxVM6c%AA zh>5HiYG-XsGI4a!6`4wYvX<9EjB{CZ0QNn~P$^-9r&6WZXv;U+j0H;D6huzfXSgK2H8sm&&a=ki-_Dwbe^=IA{JXPO;op~$W+CBHkKSPq*rl2h$SyU$HGMI z+rV{O*cuPl(6LT#%Kc*1H^HodADi3gT_HdOnHAr=I@-seEv z3O}k?sr_dhvYiu^<@`9(vj2I%Ed)u$*tQwjefmV6_Y{4kc}{Cj2K zEERV$Nak+T)ry<}(gi|QNy{lffvn1$5;>jx2w+;7 zGf^084N)HO=57J;HF9RHN__&y-{SFXFn$K&mn5!kOnn@vqR&BeO1y?{A=8ht%)~B$TpCtNKRAa-^P+Z1j#IBPFLKY$C7Wvl4n7xG>eol7sys*i6XgYoFY}FS!ugq z6xZ3#sK~e(;Ich?5Hjpx9NW2R2XXuy4<~q@#o=(Za=?fmp{4x{Botbz`|xnbw~@AQ z#P1=y2n`RM5%}WGx=kH>M|>DQ&K$wr>v_xUnv^?Y6OIq7<2=iQOP4ju9*sWU8eM`v z%ft4Wb`1`>!&^%In7ovm^0dDW|+&3>tnB#b{ay55s;I25n)_TZr(3|K@@+^Fk1d^h8pgg z=_^67LFQZnVjT`%C1*T{ZV+rGITLUdN$W>&6+&`-7b(acmxoP4 ztqzn-?j_7iwV}qtdTm83g3?BK-k}wIyzma|%uPwfi41wmc~phuM(lbV0qnqr4QGNy zkXwnEBfpY12ZxO~9I+v7Ar3d;aQJ*r0Eg-K3)iWGDkFyqk-Z8=46!v3?Z#f%O z2=21YHQf}>m|PalGO!6q zDjgF*0&y}2A$2kLYhijn5UFu?Ru)K{np(3sj6y{(NG8`o!!DsTI_qE={b-}(>((Wx_m3{a_Ek_ zHD1AQXMay!pS})9SByix-X*zRk=KH>hrxe_e*9zl8<4n)#dVd1NO&(%0JT zAueZ!OlO8lrhgsURN?2_s`M{sw@qh8N~Uv|OG!-85=G<|TGvwRER_oAVv`pyP7gY} z?HaUaRb}(-p>A}F2V*2wS{0

    h7|5M}X4;;5*2#B~y3f8RVkcyx>;&b_`vqin zo5b>7iK1`;Vt?Rf_C2iQ^08>5i*Q=a3K#HYHuEzpT*9Qi_N;Iblg_kfv5ZxYNaxzK zSjZ|%r1R`q;rb@+vuA}fMLOS}#j~BKI?{GcDuhvHY|%_QHKT^RaM?}d7S&WTFY2Vi zXo!WrMmdJrGUJxrD0?!hz~#e2U#8@ceT+e3kF}pX*12x~noo@w_S)HB-jne{e!=s< zy5BP`uPgVbV?BTK!9Oh+n>wTLxf$zb-M{nB84G%TdH+kji$8yV_rHGOJ3qML*1Ni1 zxXr(M`}dYV{EgoP&b-R8i8tYqxRndM@@=m|JI>1H7Vlo=FSb+n*OoKNDI{6cs-b+6dP3k3;H@K=oI1e>P@FEg}?!!+5bfAR~HfRjlTaB{(ebcUE9Go z`q(@f-|*S*u?)TldzMQa3Q%SrJe_G145LrfCLZh`mp>Iej+3ybXL_`W<;JpLdZrAb z^+9xqz7OGy43{e`gO_0>jCs(86pnpho^*yqSp=y$(`=KZc^zS=%_2tjES!uMzXxJ_ zrXGG<#OQ{bPwI_-;xxT#qr=Oeioo_$uc{%&% z&wOI_$(mvR_;$|?FK>He^sA3#yjZ;PCTsUAKi>QFvcXLEg6UcQM{B2^nlgO)9M5MS z%FW!c|GOjJ8A#cBMaiY@zE@s9eDmJE$A9wfyX_C(UC{XQsMr7SVb{r1iywUhIP8mC z?tByYu^E5Z+MM&o%WtG!x~jYWwikNKR&Skh$+irC``a_-zt?e1%Ri0!Zeh>1jLhCq zUs`ql`0ug~Ub}tM*9M>Y*z3NJ```WRFJJfQ9pkc}o6_;?pPiciQuea19Uk+=mv7Ix zZ2Zr@@XVcM@0X*lu7ke?{&x5W;JHx3x8V=N{}TRn__Of2DELY6GvF7)^TEFjo-zB{~Y{d@K3=Xh5uLhx8NOAVjlce@HOy! z#M}hG9iC5s-+})J_~YSd6X1*C=fkrnXB%a=&iaPq11*F2bSps|Ph=2>7$;MP zmqUFbJdb18!65Y)h; z_nfHb?YBsA=z>!0$tCC~AQ`j`UV`|z$RG}&NznI2stqVcaDbCi9QPC{J}febPmdzS zAq@s`lw&dwjy1&~4u?oYK6f&R51|r~^~)d*uZR?%_mQX?GeA&(q(C^zN?{JXN-7*3 zVi1RlL?xen8N{(ZQOWxi2Jz-aq;8Ug`QR*4yoaC^Zzx2H!&D4X&-Fk!UYi-jo=~JF zh!h7=C5Qt%l;Z8TsOJMTgE;snK^$6O5N};2h{FmD;uwSIQa51;;zN{3aSWbP)$k(4 z*3BRecu3HI7{Rd{iO3OZN^!(#G7ye8S@>BTV?snebp!YS4B%~;Xyfn-qpCp(M%2AE zgLuCvQojYsAl~6in!I&q5QkVKh{NIx;z+reF%32_h+}3V#qk&hah%vh1dX^Bhcpm@ zqpreXk3wONE{aNyf>D?QPLSgGm{`ey5ejpxM1(mG%ODN_iqwCAWYAuCkuuj62Gd1f z%TjS&G1n8##W)fKp%8||I)>BD(J+K>9%{EEGOjN}_~tdZf93&6%6|yoJp5E3 zaw7Y=kEY8S$!1``j}1xjK*Sn>x6kuQ&GeeKZcO+7(@buh-rdYQHJfNv+lODRmpjCj3f zsn&PeCVfk<;GsQi5iDN(QSnidsLfc7Cf7(f7loao)j&;aMOLt8k;rP7Q zIL#^EC!GlgolBtGN^yU1_Y$Yb{Uv*eljaUBaV|leG(5ABvBk-DZv|r_!m?9NJ6S+5 z-n;vtGs3+MjNv+9@b0&q%iW(wz-0)y_$_Bx%6+io9TmJiKKN}F{F#{Gw;_HC=?!!D zB76e03`=?1$#U(oM}YGmcf-^x-4B5^MW^@%L(){p6)9V2)Eme~iTh!Q6l;;!kxZHj zDAW?KLt?7?^N_eoOT4C)Fl34rc?}}d+&d94Rg0WdN*HjZmN*HCE8SmEQB-04PDwC8 z4EY@-u5y1-MNty3DhUSULq}Rl06F?Cgrv}QLcc|sPI5mAAyyjl^D-nRx%$_Z~w&S?J?()uYZ1<&5 z?GCc&(!JkG@t!z%Foi{|j+p2#?*eH%m%6{_TH+MCH*9gPg~{`gWmbwicZrkb?%3kY zJEZDi9F1M-qTbzmMwu7++ zfCmTef3Xfa!_wb!72+Nf&jaX8u%P3#RltYvuBBF^KOo^1zy}e|xsgDBKJWnKIWEX> z-uE(m9Pm2`&y(v`*^j0)7i}i-6w+&I4k+ zEKs4*UkKcTA$8U}nC{g_f{VTdk}r_rAa{5Isypwr!r_#8(Dt{wn> z4fIPISHB3Py+;KP1F8Q2uoU|CYxM5}UJCk2js8C1-$QOEkn%f#KJa@r`nLn|+!WZR z(Z3bQbT$H6E{(wP;5TUW-wdR_S|IgR1F?otfN%YQ{zX8H^#$f>^j82c2F)jTpg#}D zc)37~_XRRF`gze|x`Vhb5&6EKawmW#kQ>nGe+kI^9oOhT3Zy-Uft2Sc2=jMHqyGSq z`P;A2zYj?LyMfH#4j}W_tI@v=NPRs(>bn!j{B6|e?*cM^?Hc{fK<1Cn?#$mjAmhye zGJoY7{k-0){NZAJ5d4>bO#emTbjTgk=syB10L_^vQ=H_#6DXuza+jpNv{|+GABgZ!=zYWOty;Y;X2gvq)r$+xqAnUUk$ok}H58L-Djs9vN z^(_KY-#j4OcZEj(93b0wxki5}knOurqkk%p`tyK~qg{^FxH=bzp{!|{K#cbXyc+#y zaD&A3P6L@92ehzeS%BjqK>q-c@m>PvA^f;T|4|_0aeSQd`hjD>KcvyW56E~=0!Jf! zk4FD4AmeeNf5z(tjskzXM*p1>z7dFb6oD>{{zeIJ0FFTT8jb#139kkYM|eP^zXHf| z;MhJfANUaXlQsIs0cpobAnnKn4g)_^qu&d}m`%W=(SOEP?}3^JHLm8nG{!#(Wc(9A z45S7IH2Plx^87n4{1<_|&hT9v(0^3;M>P8R{S5Wo3B*`XfM4YR{Q)5DpCecZWV^`+ zvY*NmIunR{jAC@&2pa!q`nzI z>R~v`^-5p`a0-y+76AHyOMqS=&IhFr<*wx0fGqdF1v34;K*oCl=mS;)X$Sd?|0ob( zJtEi(>;v5l+zD&~BFt(8ZUe3Z_5jxcY4;jnJMb1DWUQNk2(vy0Tm^(z`MD9e2=ooW z3Lx5!va<$Q2>NXb5?&3w7xW?^uD{vk5?%=G0i6%r3Cxr5T;ScHy}%v7LFE4~ z;3?ppz>`4qo7u;Kvw+8dp8y^KZUXiL%Yg@g8-e?PcL4VQX9N3yUBI2d4ZvRDG~hO1 zH?RlD@<&|0YgYA5`9{#J$2CBhrs}&BSPlAiU>=a=4d6y5**1V1=Mh5TN2;nyS&`&Ku`*x$>vFT&3k6ckQa1U9N^kkNeIZd#mliQ~7RtkL_~3 zWDnS>uEX{b{2#Ml#Qzz)$Cc{Z=Gu<`=Jr%que}4Ib1J;9efECD7<8R+*{*#l2U2X; znUt-mF4r;li*A=|zHFX>Q`%-t~|IO4>_&@AD;&r)B zrJYW5xwd(?<9MHUKmG^2C-A>5Z9BsErR~T6@wAuHQeAtTC!JK+apxucZ%f&pg5#8z z@ZXp7e|-}Fo08u>Lbpr(4NCl#jE^+-3IBJjAC{NY z-#qFAT`u%0Q~yFgO#R?*6#7Su4}AwjA7A~meVF&%9B(0Q-fz$LYPte#fbKG}zhC0N zB7E~c`ypv>=Kb{~mM7v?Nc&mK^5eY-Y@nM*`=aPsv>&`9qW^BOf2Y|0Ey@1@p)Zm0 zIVSQWS)Xj{qMsiFkT&nbTg6`U{`)bZIqpX{T4?irJC*67em4sLU!W_Rwxzz!`S~i- zM}EzBon^Ei@ozym-Al9wWn}h+{x!nzdfdwAg8|$NEHBhSzm(S-EDzXZ_Gx~e^%F(E z0lQdUg_8f*X%EtS4R+K0l=eX09`jGKnr0xBXG~^Eof4HRg zywKkk{U?OJU-Z8w^b^#N{7#bd^LL`}wD7&u2Y$KmcZ$B0F*^Ot)Cc}5;r~?Pj~4z1 z(muW;eBQUw-l@W`lk)z7@Ha_$UoHG+5KjHS7CvV^Gk&-57f>JgCxpLJ^t~^18})&o z1-s~WQy=2rFY#AMd+-T=n%MUx;a@|2kpG6zA<=ia$bW(QpubM&Sz=$m$WLPV!v9Lz z2fsg1?OE!NH&@X#H+Z7_zl(ebdYS%V){&vYvI`a#C(?xy;^8@+E zMLr<;sSW%*t<<=&IcxckI=73d;YP|zZ84_P3Yf?Jt4?SztE4L@XxkCS)*t1jmTaG*DMD^bszb0+Iljk^nPE>wZkd7*k z9?0|ZV;sldqUlf^T>yKd`IjKAXqw~e(e#(&;(s+R{%GVkTK-5Jy*y4nHIBY7PXFa` z`S}mzH(LL%`3c39-xNfS zj{m7Rd;Tg;-U_M}YO&lcR!79-8?1ZW98`-1PUZ@M)xp5xn%bb50uY&q5s_NFtfsbd zS=IdDjg>1FSI!O0uemVsrSoeSEuWWASQ}6ksH~|8PEMpv3qV8VIfNu1T4KfW#F|7X zqAHo7E+?$gWy&eoiWM`v+FF|G)f#G6aDDT9wH7W{S`Ka0tA*;dViV^_=A2kVGh^nr z2x~D)Hp=>#c^Gl)W5S3Pm`f*XUIk~c_y(l94EM}2FH@Z-fMT`Ao9czQKrQrlU@dqn7+y?Vt)#09A8QQjvrDhzt0#FyiC)+u^%2#P zY-1|c(ADg9p+=g!Nl*2Uag98tb;K=GtNRY!o-4bV$>tEIku|IcVSVOSy@GeJqr0_c zQ!5vBZf)!CY~HlIRZYo56<{rCuJ3$(cL?hOC#>j5K4Mz-(8X;(N^G1LTs}I{0>~yq zDjQa?xp_lNL48XD_lXfI)Ur0zfHn3DTG|@Au>d(v^$T8?lEVK3t2hR=m7$jQu1&%E zy81?CMb!c{nP zTq9+bLxv_^C^HZYcDJ@-er`jseqE>9gC}SOblGDS#`#sX%U1+f%wI5n#e7^iYr;Hr z!Ch9lbbhe1wsu80m{&?(U4vY$Hyo;)rII$f!-6rPN>E+KqmrB)OuYD}UUl?BmYGZ_ z6IsJM;cB1><20Xd5$8W{VaAlWd)^SkrEyaZAJyf;i!pPQbAFe9jAGg%2c_@RG6zxpEZ=B4Jr>a zV)7IYO=!dnvJ==|mL$A1tS(7gEhwRcD#YS)m64)wlyFY8!HSU}Z5?gqko@advxYLH zPG|BoAF`||+DF06p>edb8DuD9%fd&cJW60zNmxn3k}RI7b9-*7qHr==d`7ZdCS#P( zNZOed%nV0LXyFX96J)IH+|f$OR%KKY7L2RO;u$*c$@th#=Nx@%fsS2fWa5<18p@Cg zFH79p7t9DM`jCF4aYpj9)}Xf>x@dl_V>hWQ_7;jG1JpwlE`^NEsQ4 zOi2=65>}M39*RqJ&d)7XM7BQNVsCM3x^Y8OtW;qA=0rEPN$xEZJcMuo=nKEg!|LO5 z`o>lAtf34!HOWX&ax=pb5|+@6B+<$kuF9k|d{h!v6=zhjE~BDke8os$n?xIuRk`dI zC1I44p=_HuR7AR+ut-^0Bw_wb&&@75H@mn5he}+XNy2A@6(!7OS(qJXKxr~YNis$;@`NjVQJ9}FL9p@OrD%G|3}3_*mCh_K zD=C^)T;lVU6&8b0Tu5$FVd0F@QlGD+u&A(HiLXgFLo79I*r-fBYEB>Hz!@6Dj+}4EIk3tFgBa21 z5&{qm*3Ms58==k7E{q@2Q6GjPtrInB9uOxJ_AuPIU{IE4$5omxUSFT+!O*gD6&O>; zP-WO*SU$$#0ZczgNoc%2&I70Wx(t3+%Xq&I9r^(<^vRQ%mIwytRn}G-X}k|(;lQm? z|9C%+7Y7(>wi;GpGLD2r10N7uJ0k@cudiS9wM(Qmc)!d1?tngFMXN)3sRvPPN>-=B zC=nLpF zlyy?x?-{e=Z8i3pMi`&pM$zY!h+e#3WBKiZeT7D86h_sr+I217KF(92JFLOVm-kIV z4k=4xUo-Y{Xm0B4inp&?PIyy(r=XAajl<+!Ii*cisU+}B*3`w1h$X>bkUM3X)N%fb zK8b4$#@QE<)JHgfW&Fy}vHEU`)A#Oq^{Mu(cF<~SUDp<$-;c%R_r0O|;_}-NTHC!o zh)z%$2z@InS1br;W3A{LhIe;#E_olSDIFAbjPpzD)4Kj=PuMG)yMBH=q^+rTMgyo^ZUaxhN`*P3fIn6 z5dD|jzV^EMczxsbW!WrCVtxMt_37mjhT1n*^ySLM@s$hIhno(iGTy!wb9B}wOAg;! z6rELd9GBmEY~hYw#BmRPM^kG9`h$7VF*b_60qGF(7VG{ca5LU-Yr!~ua(-|~8!q0y zRh-ZZ_l9&>gG)4h82TiM7=3J$`h?b3dp3X4Mt^*Hko85Lb zJYBPR-tKk7$6Znpa(*`rBKh!4Z(4W_32e*L5n38*XsRAEqwbVegJxT0VuVtd; zd?4cTZx+HxmanCFx5?^EW_M&eJPN@jvwOj^P}d!89k*$zq~(aw_-<@gyD6z2BWGX zpI=xz-gaA0yzQ~}8`)8I&r@q|?N)I|M#;bI9{B|2wH#&g4^YnNOT;&_jV|v4I9Gao zc0a$%I%`!}t+-J<8?mWp#ejQ+(r@rI?1Ju*BdwmFnXm!a@a%oo3uiaaMP4iS{$b^F zd-~nMUz}e4edHT?ud*Ke@Hy)R=E>-$&1+oNOl^ylMa6*?C+~4h(P7quCv$Z9;2V$! zPmZwO4W~B-$CGq94UDOHm%5&`=gC&oV9e~0rlaG$Ol!(-X9ts(su6XwdQXt8{2$NN0> z1Qg4Y1T7qh*{P%#xB(do#(t$ z?IqDUhjhc?J;UR4|`N%dunyvl*s}SAt)*Jsa=61VJbCW zcV}q+Mmz!{LA9$fl5cBj@U>vFPyQ6&W^I^?9=4&mt;6RxCKb=iACm4=!;H*Um~ypm zeRGiWI@Hh_;!|h7GO3_r{o1KWabtdT5(RZreMJR@zG*{DoC0Nc={=6I*LJM=)`s$m zYYT;0yBULeH>%wgOa1HM?wY!6>Wvs1LJo$;teva4Lo`O!+L5@yp{wQQ(ulqyL`O!q8<2XA$s(d1qe@qxB9<0P(ld27ZIU4Chts#3Frmq0I&!{t zDxE6D*~v~dbskAtLry0X9vpH$$@%xkw6FiExCfx<5Io1t`r(Z`$GZR}axeaQj-B^B zGYXR+pE3FT`2SVsL&k6~n$+Rm{*U5Qaa`9IlNR-}kEQ4F`CJbK*d|^)pWu1;6-6^D z3TKyF8%m0a9k;A2nt?yO7nhLDRSS7~`x_eW!YdgGM6BDRMB=Yq6f7;LzJ{V14aKDm zCB+SRo3^32kYRJd9&))8Gr&{kG+}XwXqkyv&T-Ee!s<`(*XS17Z zo`euE$ioE!1cbbJE31LZ`G}En06cRoYU; z7A^L2TW*W3ZL!zh;-kG(ZA+E*Qj7Kf{m%Sm_w3oTNx-W8{4ev#oZtL@GxM9rnLTG_ zGUxllgVbuq!B@<(I-54MMjJ4>>WX3SEr+#YB4;k;j(6;2?6Ni^kIR%K8i}s&a?6%u za_0~(Xl`oPPh;#v#8gtcsI8;vLpa>-5NoYUgLghx0#U(Dj+knlqyqo;)d-9Wn(H@o zT30!k+RI>zxgk-ssJ?S9-aX6PHn!q8X=0o{-?|B=opIonyBi70mPI$9&r-$my{K}b zKb=)rjJa)7v;j5Q7*#b~THkqz_`r6wg+{Eb<*|FQIPsU?9(YCR< zVMR+@TUTTAH7nNDH%BFA?!^~JtlGKQaFaxfH^5|d^wM_xV=&sevTbE!Q>T8fTlL(U zo8OB6iC|(aGE?l*woOgZ%dr83LDp5@fv-JQwrNe6gNQN}eR;ezHi=xS)&xE4Lq7*#*uF1;`_6&4n#o*biAOOrY) z?o_OAcqbk-OE-4aLzDg}MX*IN)dF&=85LSLejA*lp-u4)QeCG`Q8z5D-`v!)u|*G2 zB}Z%5MU7lZ+VHIIXllSu6DpJhC#m(Q?7SR@ub1MKJI}heMCb8e+#7koeHltu6-OVc zMP+q;JJ+DNfB3O>$e6Ca%z<)>gWHKns9G>rP0AUrtu?Tz$+LSg5#M~x^60u~(YLx%5PytV(&_paqy|P4`&Ydj@Nh95fUiut zqRXTFB1FCT)I-NHhUYb5VT5;7$2Az&4o3aMRmRPVXiI&2BOaHQffTNdLEGYKq81Z; z6w7+u!ra8d%*0aj68wTUdMw%B-U`IAbv}CXJayXc;>f((d5c%n%vo8zh+o{TyqHJB zR)ot(zvpP)@!H05q2HZKS+W10yw||&rXr3Wn7^XZ+R%(YJg%(ya~4J{$A6jL>-xs4 z;;3=_zkBa>^>s)eIg@y|x$v;EldybvGtYt#eZ@fnR*!c*J=S!3RH z{oXUFt(`Hm_qv{H736D&rq)euSMgw%=a*03A3ou2t5%uwKe(~Jd1ae=ymw+=Q(^I1 z*+*ZgSw#F*A^TcuQtfy3-s;{qyw+H~#r9E4vn_Vs8g3%0x8!;K%;LF|7FXjLjTYIx>flXyG()ReRt{-lt#h08q5Jv!QA zEaqMJt6D%6f05HT?^YIX~4>yj!FHVB32umn%WMG}e;6GgZ}I+SIC264+KK4+pc zxd?Vhhq6Kv+#DC_xcJpX5t5Y-Wtkw+Y_%w14k6g!Nxh^S@)I{{v zxh^pZ8sj1z7r&Y);ttcH(kA#)Or%Z_>3DrLxpu~qTw+qc8W$0RnT{CEbm&GMh+mDO zt+8CoP4L#3$ebUFWiz?DV@Xz+pefViuGUF44#cXHq}U{Bmn1%GTUD%72^^KU6RFkM z1MRVSg92%=Cq69i`Rj9jbA9$ey8y$&H`PkZTRiB(ob$5J&-P{E2-i4k@gVHz4p1a8 z$WF`4&SvCqugA%$^x+WCM6!(TEw**^dSqqXE7#+{WWijeiu}y1N+ix4g2ZWg5Fj>d z5MpQJjC*!WiX=J3kY13TjbN_dUOcEJ#}o$;m=eSd&&6r7LH4WH$0Afc@?FIv|3F=U ziZ0OA2Eeke6Kh;J$bRYi9F{bg$J2%kw#TD3X9ZL{iw4=cl{o+JYz9!+R5sQM@YM0% zz&YBHsNN0N=5=42cjL75+c$F?B`4ls%6nCb;uF7iA9hE&k zXYnB1A3$^mEMGcr%~UXBl9Q=K#YmK;dN`XmZLCSAMdNc+qH$UiE2p)MH_1$)Dp?72 z=>!u>QGebxsZ9uNp9sSVO2&d<%Q0T+q!CudAhu#v_7zAt*;yQ*<#iRc;xc#1EMTgx zX8B-?H^dr^zSPeUBDr$ke038`)_r^K3p=!|2N=!LTp0&Q%qegWweOW!7ZHu1{n?432N==UE5DQL#U z8nhpmzaa#Lmin3b187a59UAmmNarJrm_hd-yg-G6gC2;5a|Z23n1(%JT6@qK&_Ani zku^ByONa^h{mUU3VxLtDa#jN_mY?G^yA8qbAVtQyqN0o|hO*)hL6mVN3LE-+aQ{JW zH7t4$%|?i}Y%|utp7+p!2)#`1{V3AP{uY8iq@Kyyya~TRFneUquR#LA>}MdMdGL(s z*{pjSe9p-1KcW)+xo1RF?z14x2>agvIoqbKi2Om-xbi8(hSR!)4hOC5vFPts2y%;t zkqpnxAKDGN4dUE^tT~OMDz3mc#y|8f!wq6P?lW8=+wm2{4MsbLe$#M6d}9iSK5n?P zV4>W~<^$^E5CwDn{KhQ6W(9N4j*n~3KRASPhvOHYj{pZ|?g%jFAW(vlm^%^--UMp2 z+ygocsi4;Vg_$Z126dcX*_B@+o0Hxji+EfB#@%6mP>hZuiQ)oVP0 z!9jl7J_#&lIKMMLeF->dumUte63ow!*R&1-KCSZ$SOr>G;pzH8_hnxX!V(HLWq%xm zwucAK_umeZbpbB6|4v*3J-Cz%cIbN$0{%P(55;fwn_&3X8GLqQ{`XCISY!TS6CU0e zd=X*(Gza4b;ZaL$G{xc$f&E{w?5@GMMPT1DEbbB5EIeCOEN&8>FKT#AhAcQB`|Bu{ zFQ7n%zZ#N2E*?d}A+`DG1OrBDD=VGaZUX*ja-Vv8jKA?PsG$*syA*3T52L zFG}98fvR$hfD97nuwlciF^^%@mVz>3gq?enQX-mtD%JCn>VIOX0uLb7C@50SEZXdr zmmt0xlN)=y%}2XEn(?m=u&jTla5Qd^^(Sx#$ysAeKC^tYTZlEw??dewwmrI8^1h(* ze!-cy*j^sQISG5l{~)f|UNJDnSYwU0J$U}n*)8W_Zf##++vB)wEoRaSG+6w2lV+bu z+jbvna6Qv6uuJS3K9)f*QPdi5l9`pG-F67cw$*I+^1PSIVOHT z9=669HD*zT_Tz3Hq`IYOKf!s~ce?%az{UFR+>fypOQ~|wv#7#wltdR2YF}cFF=(OpO2xF{R^c33v2B66URC0 z4TjVBtM|W(OBx@j{=XnJY&!bB#J(VCW<56Nn0C-ie8>jvpqcxS&9Q@={#?P|1=xH$ z$Qe+butjz-HY5-mvMoOmrOR!96lB;U6c@5D7;5Gks<@$MwxLQJdKJ=q*=QenwSy}{ z^H5gyHxc_F zeCn|eO#QB1u>OC4J|^enJ=Z_I=GdXSuZ{Y~#h>}=N1kmOvwnBo%>y3$>)rDz!vj{m z_45luUyiOnTDRt*RkwWnkDt5kM?Wt8diAt7o__I)dsjX6;9Ym#92j3*JBxdKtamwl z6?_eR9eg`{H~cpE9{Anx2jFRS=~eiX@OIP~pg}esPCffUFUM1o?k+w{Ko3d!7la>#UnZUUO@V$~@~g)ec#~c| zox$6ZpTA~Q%X%34`JSZX^PjSXNV7-M@gYIkO-T2!q*HG?$ZV+_SFWtvQYrg(#=)1v zD<^IHnB>1y>TcT3A1u?Gy7SlX)TiFeh&O%rN9jvbzIx;!-t?VM^qaP-=P=?;UzxGV zGU%n+D$KD-cjSLK~x2d~RH}$x6)7rgBGZgVt;0u`$ zjt@kZk5#+nSKmSEzNehO6XxY(lJ(*3K{I2&5q=rT59X

    G(19aQG1XDEKk(-J2KfpGJhP`_GvM=sG>vO+*uwu6Vwtrdm(UFgoHas;3{ncG};5{CfALpS<^?&o>Wv<@wN+;lJ+r#Qc-@zwjRq{N{7n z&kVfl#%r%0p7*^8BerJ$wf!?6DevBzeb@6J95DZljth>JJ(o9jp#TczwbG6+Aa%8sM*n|2X{p@ZW;} z0sODvkHM#*Q;DoR0iNsMi{aP8Z-n0p{{{GOz#oABFZe&e+qemZ@Z;gngXhAQZ~jjB zkHHfO`4RZJ(Ti2)=YkOVxqg+z zeE%>pUq&M0Y@H&mSwzI;9YtLBNR>FFp@?rz5pfHOBJOlaMy^*W;$m1*aZN`NmwF<4 z1uR7m!b^?0h@^-sO3}qdJw;sWOGd8hDdH}Hh`1=Fh^t7^#g!9V&uIoyaZM#Ex%I%r z+>wy{T-#E_d76m0l|m6`8Y1Fyl_GAiiAYT^AmZXdMBG_ns-vJ%BDX^*;zop2k2{4F zar00_Trg9_6|`jJMh-=sv`Z>(Y*EB{x}@Tc2SwZjkyPvminz*_dU4wWd8|LeBO!NH zB!-)?Oxy-9D!GQGhznW~ap!@e9#m6A+%chu-6taMvrxp;qMmDG7R+@rq}vK$A zhxW=A;gc|YJJHw24P`5E=5bxLtm)zv??Ly~YHX4Bx&u9qsKxt_AEPws&*nPIRuO-w z6gV(tfRygS!H&+ddC^VLX4+9Gt7)$9;vw+PvZk6w9Q(L(U!7E)7lQ4Z!J?tkBRZnS(bbn@m;Q(bGUb2(^>XUbk7WYMf?okyWBUa zZySe{LJfJ(>gK#}<}fstwl$ZkbM_vGvr1d|tTl!xN*nnES6uaSd@g{mG>k}p>I4pN zF{4lY95#1Bi1$*h`E~{@UK;v?5QOn)-_Wdn@?bDY;L{T!lw;KB4-6nfO=@wPYWmb# z>cpFY9KQ(BoJsFEqpvenFPsaQeT1<_tX{YYeEt9i6*u1qfWuO<`ZCok z`Xd4(a(r~4MX^%VQGCcy%h^*z zFxXdqR-iEbwLl=)6)3nd5K6x&a8CM?K;X5&h#LdG^hh8Zky+`l2XcZJ1ngiqU3;)(bl>cPfSsO}xdg`|u7--ttl+-}D$;KZSm|kVZVXhUUAQEW33g=q-auV? z@S#BMlEC%B*?}$glE4UGaY0}hFU+2v_TB4m3}mJ~VJ!&^Lk%)tGqS9-Cn3v(42iyT z{iA^)Y5O4`VEf7o1J-dQ^OY0^M)^vH1crA9GPeY>7BO|&^Y)`E@#m2kZP&?z zUkemw6$ZwmLbH|xmMsbRShL5`pL@|GO9J_i1`1Fo{5K9gdlAA*0)s#Yf=*6f%1)cf zPFsp9&kAH^J*Jul>7+pc>(Q*V+tG$Uu?-9yS8XT^oP|D|jk~cLjSjr#FJf1G23;{J z%Z8ebfzmA7myd~!TK2VKql|MR&@flSE#Nta0u8r=-h>_eX3(*aH)!-qjX zigbrSw}S2mW&XXOqmXWorr}+nA@H2vgNE-0#aErpJ2YL>1ATeK#yrgOP5GZi6nt4_Mbj@DSYryZ( zbPe~Tx1gN+L9s&=>CrU21GE(Uc1^=uLD}Awpf`a|1!aABQjq;M36%9I(KK8L%5w8H zUBe$f%RT8+bj=A+mdl+N%#S0lY8rkCl;s}LG`t^_{je95<=+k34Z0ol2GA{_?9XmZ z!~Dm}O^|niVizsau4%XdlzLVRod^0M)Tc_*HM2o)M*LJz<{u7JsI@%uqB&yVcWG`try5Bwg9=PoifIU~C?4flX@ zT;HwfnjN4_&(olw;RaCE9?)B$zXp{3GY>Qu>8dmh&jiKlF)~%ta4{&yV@T6AMWC!- zAt)Zkk$g?VM=Y)XASm_j2W7fFpm>u+c552G9~4~^>CrU21C;k;yQbk=LHT>cZ-z9C zd#?0wO^TOT1Z^Y@H-lm;A=0R6xB-;qtp>%5F|tb2@Ji5h@HLu-=Yc{;bCsrRrh=l3 z$&)|>NLQk1xERzAKBQ^52(%P@p{8N#n})8f0{sYRIVg5R^FqSsgHBLgujA{$UkIM{ z8UxDwqd}REa+Zt5yvjcq6fEnbY{f4IoeBPWP^SMdDAS`)RQk!FERXR)(5pc~loo_o2DA!v5h&pLRQtl9EPpmA%Re8K<(~%{0-Xg~ z1Udth^_ULIdQ1TY;V!Gu2s8@H-$4T?$NxIeJ)mnr zInL`qcYxM{ZUe>m$?FCM44|?(zXr4&d@E=j=#`+WKruG*YCzjTt3*B%^nKvVLEAt> zpyNS{K+z|8`Jk7B@}%N8Pz&@j&=Y9arJ%<^F;V7T*Z3Mp* zv<@^4bQNd>6uPV>phckUUl27O?#NLa1L>a-dYRB=LI(<^tz0xY{bl^vNna59n9xUr z-Y)cJp~Hn5Tky}KvdsUq(5HkxF0@f-olv(;c-q)xejZ>ZeJoScM}*!gbc@hBp{s;u z3H1s6K~U#^QYgkce{bm}pwu4{x(^Kb9--Yr>x5Pb4GFb`9x?fa_6Y43S|_whXh3!CP??Y^L|$9F%h&+qo_!F8W+zt5j`cUn){PFR`Wm9`t#eQEn~eJ%}vXg*q; zhrM(E-F|=CKL39ILD-i+=0A>WcYu?~o$0$^Oa4gUrI@YxlY#E^Es*U@e<(fZ+m^l^ zSK6JoeJ3)yVL^U-#tyMK?@!y4u{UEMxR)}H;(8+EWJb_;Fyj!e-N7wL`%LgKuE&DM zgF)Yp%)4PL{-MlWxbDf^n+biH-LMjWBJ*S>(r0Z!cwg3jTn}a)%JQcj&U!A3w&ZC) z-sd}>bpqF0v$thi1sL%>PGVebE_gh9dT_JpiWu+UtMIaLrvEpjQ?|A-?&$6$?~h}h z^JI{+oh|W;s2}m0asTMO9}#{s!sL&dcq#vw@M)s&gz#6f z{iw?x)PwE@;r9vOf_gFD?Bx!S{^4YSj=x)$7Zkoi(wn{A_4qw9K40R$F69>qAC&a- z&@XghJfE08B=KLAc(d1guk@eU+g*Zou>UxTpyP9k^)-9DuQMLJ*~>j5`l^@*?hjJG z5-G1i?w{Gay+wGlSNkyQhX?X5$&Ytt0v}*J>S(a@l`Uta-G_4Nlr3!NG}!giQ8(J+ zt%9d3V11FcTiWvh_AkN)OFoMO z;XjHv#v5DgheRKr_jIeJztg1uc8b0(iI1|ske?u@bS#Iwu?Nx2`htH-;$N2f{g?1x zkn{x6r28GqN18<_hwcRKos%EUc=$$%=RDlWFGX1_uSo94dX|Se7_9ggsL#Q#kot{~ z^gE~@vTdMrPfPwU2wyDxw}js${jpT?|C0TI{7*@Ih44p&zlH5Z{BhxbCiT5s@=qm? z__rkfJcQYvH4@L$AB;Z>o^B^R+rLZtV-M?x^sSOUTk3m`q+cWT{jkJ80m}4u2+w|_ z{!x;?UGC49Bz`Z_GJcGSm-4rv9J(K}e=(jjWxSlt^xy{wA3{FzlZ5Agv&n~rp939i zPZ2!b6Rht5%;BWGQu6uueGAW%h_sDuuRW|&(p9pp&|#i8L-8!4Eo)Oho>Um% zsDC~5K}F0l?Bt&TfHoP3K*|4lA^Uvcr=UvcIa`%&6ZVBBuA>;_9LjPt~dHk<8bv2_%; zDV=P2+GB?_p1cM-}8h7E=#$xt>32LmmGWcw4kj@#;4kz z78fl+7kFQ^qpcq{qP^Of0N>K@o^gMuZoqOp73ikBjV`A!pxh5MInP3*4;6HdAo!?{ z(~V(XTF&mx((s(l{+Jr>uSsG7P;)@4nR=X(f#7!<$l@Ogq#y=u-j;P?FLQfdqt*k_ zGzBcj|0f2CJvu=kS9-^+4wo%IWffUPc$(yk8%K8KJ5965%3!fq zJ>nLNJ?o*&6?^4NvR>?&J#O6CGrD(E#>(b!V%gHEF(bmR&N)>Z#IEeh`fy@_+CpV2 zW5l{TaRb3IeNsM1@^|UzIyQ$!5(~>M(N=22aU{55Z(o;3* z8|wqzb;_8pvj5q;_1?HGU6%rw(8VljU6RrI(*B#!_3px$ga3q0+^mdEYGCRIIVX4O^F+p*~C*|+bY zUDwLWsWk5j7q{zLO?=b(i=x-ak^ujci#ad5uI1dv3F#y_Phj!?J*nLH@Q*pV8rl0X zJhyV_vF)Nn%F!!#03bSgm17@Q>qe%8iTJb)BgtZo81jL=U!El&ivC5w;0p z4qFZh4$mmyYyo;zq;7qxGKl+wC^36cMhWZcbkNtUUDspS6QS!?SM23tzly5o&5v!P zON=IbhW2LHwO#g(WedvMC;GNPU&7vqXq9C{O1rL`MIZmyNq0c>-I}s~3bQ$-UDpGy z`VsJl?L8Q;pSe}4Jcr#+PrI&%MBglFTnPG{F8O}w`lYh#nlBwE!^xsuT-NUy)Q{sh zppK5jOOX1dwClP^^zm#1-3|oYb<#2VD*95|VO=fy_&;a5hm2y)Ch0c%%%FkYzy!O( zL>r(xA^mqi+MBaLe~qSN<5$Q1P*~FL-$y(4N9oEnvGxs-fDm`vP5n~YVeJupQcdd^ z^znYIUKktCuJO{l9oC(q&-@lnxayZ!TbzUF!w%~ME`5LPQ=b}t3KrPQ4(o%i_P&v< z&(+@E?XW&9`uJ5Roeu{dTrT037`v&d?679=MF97LCf4O+B@ic``cm0p{hjC=CAnse ziz||lr@mBnShI%fTz5&k-&dmf28wwNvUn)DSUvkyw&y`w<Lp6;hU{jEfD{k|mn_`htrKlf7~ zu#A;TcYDW`YCWcYoA^)PMCWSnx?b(D)`-4+qN4};_(tk%cJb zIpmka%g{%t|86ppmcX;TGj>=BuBxn<@=FPI_}=tnFa31J4l7Xl6*xXR%WWU>RP3-m zlK#%vVeOBdR%1ibva8-S_D}J1Q#NBsz2tU&=}7A(>tY|g$z$ko*u%tcs$ce7sXqw& ziawXUMJ&6v!3N`rQQA&w%-*8aSaQ;7gVLRkc}(4LOa1}*8c))Wqp2tCIx3#OjXOU_ z_w0q5e%oQ!QQL4-CTUL9u%pTpqWJ?@q=7-2D2&~}f(|U}xNSIgDqA&Jw#6f0U2#fC zZNRT=TOP%?ZtJ4)$bOlO>?Kj9+ejpBImT^1o~C_B-QE@$__+e+A#7&zyeR^`-1{GIPF?CvU+}iWCc}>`v?7XU)1}w`I{!OYm@RMG$MwQjlM~2LPAVJ0}^6l)pu1rArUJcue7Ve2`O3K zcuH8IY1KBC&_q3$@Xcd;iPzYJZBLI8iH?sA!bu@~)7Dkrx-MFRaZy=P-7zUty>`MR zTKudm(cMpTpSTTcC(xFsmtoL^+A8~?36gr;f_SZ!Jy5S|S+PoK`y#P>tgMQ-e^%DY z24w-X4^5IPu9{B(?GDJi$MBt;OgWr89?Q)H=Z<%8Il1HW5^}$D%xT#3TU_!ru2de%lhCj^-4B*UdL^vAjl5>y_H7 zjir0LcVsUV?1SfA_yGJNcyoHiwV#O?^&OI$$CfDW^e>!q%l!ZJmAnHvL(nNpDNpU3 zzq|J|oeAG=Jb%u3|EF{&o@*GE)tBo=0^ZxheI@K8K4x#SQrU-uwaN9B<;vV-$P@H2KDQ$GI8V^Pk!8CD<7I%CuE zj7`T5W%cNcO-FUc^NdZ$Gd3OHd7F-&v*Y;W_}!R*#{rnEGd3Ot49N@T=!}iW7*>>5 z_w<4Sb;ib{0ogjmj!SLhF+TBEXg=Qd9o>n{aoJRx331DQsZuzO)OslQ+|W=;J!5)T zwj#C(qBO+WUb1;TO`Ru?lj>~B=-rZE|83zVKCd|w$L0)70#9+->W!J%GwV$AUr(50 zGa@%NI~K62RwZ#}nFLg!(7%|xx1Bsnm4c87o49Qe6+B<%^9RLzpw%QV_{ ziMzj-H1Dx(G<(|K$>z`oB%4FacbG#PXw0D%#Lb}%ikU+z zrAS|CSx=|I5rdqV8X4r9BpJ9_sqB#tc zS)WC_^-d7KkK}*1Cz8Nj1s}IaW={P1J^}FpM%n3^Y34jz+C`A`Vv+1#M)z)!><%R1 z7NT9?-vOcxl4U-C;1T$=-0W9CGJ-i&Wek$#DuZOX${<;;GDw!I43gz4gJikaqD6sR zWsod)AHo?{P6)&pB+FF>$#RuJvRon|_;V-W8q6gIc7ColNS1jnau7&2{hVwf|`d-Ar9ze#W*o7;`4rNge>{-#ejA9C4&#DW|bZo;H1(41c z{CFb!4?2`>d?N~#xPga)5))-dXC;I@{N;F#RlUf}`(*nKtL>9LZ&+=gEc2(R?O)Nz z%&P3ab2Qj~;#TL+#Kq3f{1Zr&!F2y$Kn6DAVioMiB@^{W7h399=N|-akR2+x1Mw?# zOu^?6CfFJbTNDs#TZeNBb|HMFlIItk1Db{!(Wq8o_I-$feX=?T2irqhK!$YSV);2v zGp|FCu-_T$&Vqfiq9+i16e4Axtmt>(enF1*$%--%;&;u;K3P#NLMO<*pZ3WzpF;58 zsb_K~vF6wT*(0+FI3EaRz5vPVjGUgy`o4u=&dAI^pb`Y?&WNboY%T1Q1yS*#HgV+g z3ogW!4;^$#!J=3=Xk|`8q7OijTXZ%F?2{E;3rY-nWuL6*lZK;xvZBu#j`qol?lBzg zlNEi@aI{ZW^swP*pRDNHhEw**GWonBJU;A`eGMfA*w6&~WG_L$5vA;tlCqYKQ z7i`Mh0a6MN`(*ckWSxhL?ca%O;BH(J?2~;N0yc^E$p$#2}9?30VlmDq5ZfE^W5u5sl+x{073Fx?V#*O$l z$@?g%D#r+v>fv?{;TeWqoUKcsjZ{Vqw{z!14x4#evrnb^y`*|QmMU-+QiV`Q<;)b> zZsBY2CgKk)u=zN)M=}1t0W>ii)v!lld|5Aon?ueTZSt8(v)%Rr^6zB+D{Xs>UBjG& z?LhdFSUwnxs(J$v_LY2p(R@?}{#_m8<_?K*W1CT4G1)b%p~V_)3NkZryKMy;9iTE; zy-HQ!xI2+ILN#mo+p<3Xko!xdP)GVi(re4&12T7HhCZ%S)$^KkS&2ORR7N{x8 zv6&>bE^EBWWaf8v+ZZ(Q+ss_hS7!e_l$aSo`lGCKy8jXcvtDI5jW;TD11?k0;KE^N zljIZ*DY^hu%@^=|vx?>#u87af1%?~Sr%uca67*U0xSz_gna0!%!+0X8f4Z_yF=Q3w zKVko&LWR*8DlcXCKlSyRx{tKlpQ-!Ca+*bIEt+`px}X1M@%N^!_`>(1fsfVs?8U!) zYSYc{TX5jhZ+>dhzJUen-rzsE55hkO|0?`R_#6~G9DWk~Z1@QLYWQaOYvDhEG$65q z_UfjB|1c{9rv^7ED+%{SG>+*FuLdvp?@2tTkc@vz@_(3}4BqIQCHz#0S7Q&dcB{hj)# z$gPj}%B10$_)>Ut7zGamRi@L_59>j>83QO*9kiuhG*uni1-1);N-cm)#?1W;M|dPW z!B&dl$HI?;p8(G~(CiM)@X(YG&F|1e56$P$D4 zp*bO%`Jwq9nh2sfADRiGIiPRBoX~M}NCxi1+3=I$tKe6_uZQo3zXSfu@ZW|%2+!#; zXODx>iR0jB!E-WP3*Q0%QFsE~eifbuUTFLFC3qT($-)nC1bjI>O|D%A-vrO;(e3bG zfd2;k0r>xd{{uXyT%4ek!q0){Y+-{?-b+p+c(33%Ri%jYRuOULK@s1`@&yLxycBU3 zSPTls84E>x1WGDS_$cBmQbe2pA+MT5LBy$%l)}{&6Ys@EM4Yiu#5I=W=X8Z4&SFGl z%=qv*CnC<Abt#bxDW>AgT|}ITQN(GPh`2JQh>K;>#Tg+* zoE}Q5BVZ}wEKn-J$r44JIY}zcmMG%%Nkp8zQ^ZNVWK@e8h&VkEkuq8c5tkYwQtu^* zI8hLhF^Us{LJ>WT6jaa6KPi#Jh$5~rBo!AH6!BITgTirvK@k@$lIj((6g>bhskpG9 zh+|&Vb4pJUR}YerQ%Llp#pxtsx$>15u5p-{izE?ofkhFQHpQTDoQ+b%mAj-eMv%B+ zA*mii3Z~-6rBWBZnOQKWHps|#w#1kRFf-6OAJWOTb(n%PF;oq;N_3Rdm1x4^5*%Nh zbTc(ciZ?T*RPhHTe}0Pm&-D@iZ|F3i^%oB8GxlRn#l%Sb-f7wkKfC=H*Z%>}*p7+L-MD^z zw4+qa$-JYsW89seY&Yg9OB;?Urs0?|VmM~hje()Ca8d*dComi{gyvo@f_)an4Z9Jx zS0XS`5`fQv?G$Z9=68X~SwjLB(VWSnfs2rmHdHr$ho5K*3s?J5knE z7?UqCQxFr08$$U!453V*A(Rs&K4k~x2;S+7u}a~)9aPzoSOT7N0njjU^jBf^vmX>o zKV?q>G`t)93ar$3X}V@7Xas-!H!5g&2PpM&&OyD~K&j_eQ0m#LY4}=D>LETg=$dxW zrHJPi0BE=ll=b16)3K7a@MCrr{#c_aUDj6nOrV zx&1&rM?tZ)jl863_=w04gJKRAc}COlAyCZRA_p}M9{^?keV~|VMfPeM-UFHqez&IK zhd^16oti5970h=x_$unQk>` z5ORb`mE8(V$CTX)P-VA5^$+6N&-`aS>?SC?6_~I^O2C6EyA_yDM?&C1mEDSA;JIx8 z8g2(2gFWmz(91w;Ku3dC311FMy9FWP^Fc8m#_U+9Cq+5RKEx!@nc!(3f%#T~vL3XH z5CT0Ll=&HtHYs}tAl5SQq>DhA4|!C+@t`5_<3Ni*$AU6HX6-6J;#5B1v?zNKb3r-& z!=Q&ir-5?3PXy(7o&(wgS_QfT^g>XM;|oAHgPsq{@j4r{5ftNG*@>XM2K;%Ti$F1M z^Ee)7fR=;K0xbc>eO7iND9;CvzEE}|a9@>u2+EJ4{?kE^f?^ygyAZe+$}Yqd&;yX; zUgqrs9R#`ul=5Am_>5oKg(v{+0bc>S1C;%;4HSKow^iibpzNp3py(uJ7or@r5j^{| z4%8323bYKg26QrL5h(i$MBR@d1~rb6|NONEOeUCgF&5sztCHS zZV`&U=eSI=v(N)M%jp(cC$vgvNGOO(M|^Llw_*NZuWkDd+RwlULNB%wcG?fcY$fcq z_aS`HK7{Kt_F-IKvX3TMPss4?uf1lUbD;6o1IGq^tIJA&)0zGH|v;XCQ; zhRuYnX}99KJ#7cB_owYl^QY~Cb%j0Pw0(txX@?M|l?65c?$hWG;>;U2fxHivrA4;G z#g_?xLgMH0W;*isK(WHjM>@JskVhJW-II_0VtkRr7f>JKX>OQqIe*mP%Z29_4fz`3 zpJjUF4@v&lMPG^Ve`0>b^Isfv{Er;#$LBZQ6p5cH@i$96-wSlNvpnRllK96Yp6?&J z0^#{yqgyLH-+Oe#G9WHDALev;<|Oc?j7J{RA75vEP^LM%L37J_@H`YicOmo=$Grr< z1G-$sLx;fzdW!W$T@Oim+ShXO?b4onY0oX7tX~)8bT_j;kQp5P5YwZqMUtM|N=$!? zr1uMdhw!vtrXGsWL)T9I@I!@f75(Fdzn%FJzexC3B!7eOKVg2n_zZRr{{!vhn;4J& z*bGY7B>iJ}S|+Fd8${o$pu|NtSUcQGa`NA%KE!X9{;d)I7U6%&{E&T2^eq#8+a>;K zY0q5}|2XQz`t3s=x;BablEe=pkMi!8{0jFSX?gmBZj;pi7sBK8kShPE@I6w$dnNx2 z^6-C`_*e@pnO!v9qGZ?S%e|CR9XM;_`kKp7jD9#82W zDWCthCC_|Kz%o#}_T;(z8UPe8t1Fx~ETMT##^4Furn zfV#ViFi_~lwY>nk_nn6*f=)1ZcMc7x?FMr9P6b`DhMD~?cS?a|_W*EDkut6{0leLv z+Pj_!$m(%T$5vMhJDgdGdj@IjTmnvlF+KsKmW^9N-UDlTN4hdbUk(g5gHLD1P zuiHChbEO7KRxrxyf#6-o(?VIU)Ii4y_}IKt^w`xMlM)fxHT2(Ifa9dXlktZ&4DUM$ zT%1&iQ~<^Q7zEYBynwaKu;`aVrbj*uRxP+;&C$?HNMO3QJ2E-PzHMcI_;3b$8ZDyGh;oHnImR^^mXXj*wCgq7utsVFa>PJrLaigHOG z$N9ayv8gLMx4xMGG;XM0FPz_Q&V@sIHb^)|W3Nj~60g&-fkM~AJaC4`6i*$E8mXkj z0VG#Nv2)c$YOi<&B4Zv zQ;~#E6*m|kz$kskpijCYL95`l_8T|Y;QXF|K3Udy>FYOcaHG_3=G<8Q%&k&-9XPeU z;s$?BYS9jTPM3T?)Lg1F6>e}he*kbLnph!hMDl)Ap?+L;!h6*(C2sIe(PuI(ffyh;l6N#pK$4` z?^B-|e<^W;pLDf%ZL&TylvGs>&M&~ug`ao%oaGBtn3o@jzLnV5q5D9xzJyz1^rgZL z9(k75vs)AEJ7XjeC!YFJ;RgRi^rcCzj^sh-sV^07@XrK?_*c^IjpKC1wqd+T7kKJR zg&X{^t9{GM;|-ONOJDD}!A9Ro8G!xO$5F%b+&H@FV|6VeQkgH~A0RH5x_%zG!OKOT zxec%NQ(r3F;7y|MN<28}hTtDIF6UXlRJg%UPt>_h{XU3)Ai11NU+=iVCq!S5DA@sh zX$YUdc#$f*^!1J#yyIN0=w5lQ&YY?F(7f35DnTE+NB^L8hEm~6kbWn^Ow9j39RhzD zX!#P%t&kMk(6LXDQB~Th=l@Xo|2DH7ictUEWF+M~kL8`g4K@eQtTVX59npmy_3e#K z>pIn7>Sdh7Pxv9_+rka@zcaYOm_zi6|4Zy&gZFFbsp9_Hz#Fzg^&^j7{`s@bo{}IIw@6 z@lCB==L26C7F9w@41m@tp{wgVTJ*XZV6c>wl$Xw$GKrwOQ+X{1+N#cjO|PbnE$x7E z?V1u=zHn|=+ZBs1K_>FZR5@#w$~AKa2~c?zH*5N&&}2l;01G;$vXbJ;3J|c=NDD9V&lQCiOIv!+37dFk}Zib)|QQYC1W!0R=_iqeYmX=G-US3>`$wx$MD zwyCvbLg>S>9+(>HY}?qeE{Y-qa<+0_i8Ae}wzXH{9g7YH46Y7Tx3zUNG_}@uMWNC3 zi0a5|nmz~}v3{8-dP{+3dwvL!r34g)sgsuW63v|(>cSnF$X=+N4uZz0E~!+FqYy>J zZxr-EL99n6Ql~S%y`ybiw6inXfK=)}hDwkH=)<$oRntNjhDs_+%Ymb-g%ce&zO-XP z=)6z~dJ-_fI*~9c?F3{JK0a8GX96&ORS_G!ir9c$j^rD9D*};TMQn%{vDT}IwTVTn z?X3tzdKE!LV)U{XBymgAX0~opDAutY1hJnO8m|XVX+0ENXE~xQ-q!?yK^l%{*J+HL z=^c(=j5-~^m2f(DJm)!1=Z^O~Bj3UB>EH&(yF>v5uS8dnW`JY$v-XkL6Zh+@Jk^b#C&S_(0N)g{*aU5T_pK!X?JBFv5Jj6}~Qa2&D*Z*ag ztyrNAz{RY=H+9xq)!b;Z)E(aJ{XdK*kS(}l^Wg6Z#5?$ZrmMw4E(C82@Xl`o1EZWi4w64B6o|Mu> zZ5>S?YHM|hU7)$i`CJJ^MOU(pikanB_0pA1Ezt$d^&2`Zv9zt2+RN&jn;H^Di|RY) zMx(9E+h7_b>WZsrQ`Q`!i(A+8DS1s|&SlXJuqCo7MXbZLcS02wx3o7mMKzMYs?<_| z>{}agGp1D5c3GZxCt*aWf4j$SoE&a2_wfvrt{&uPpmfhb>9%fIhUxzqC|$LD{bz#G zT^LaoTP%HDTfgqA4IO;^szW6UJMc8NT*A4{8>4R7oaXk%daJ2(errRGUPaL+>bi{` zus+|VAB!uRJ`}aovM}}@lhyo+cL7+}F?Ur{SI1=5OmO>{>^k zc^bIZA#ecCrpS$Hq-0~L_w)A zKtsSj!?1#Y{VhU(fc+DQfq+dzU4wy)+#=RFcM`64ZWXS++)Hsy%e@L$f9{RA26DfM zYkKbYaWxRI&oVY6lKUG_JC~o9`Em=<3I5zlT!XnaxaQ|J;yT5D>8Z7$XCK zulIo-D$2-Dzl&MX#P?%cC@r0kYXbPHm;nG=Z9~jp?2i^@BAqXIVI8222Jjni)o45|WdBnR%|N$V>!7=*!H>id~b)c7SCQ zGs{%$O^NJXiR{0ERb^^~*Y6ruBfLImSV4Gw7&SePb_J`liSPu3S0ZucPr(HUuZKYD z81(yp1~PCRE>;15Vn-1|Wh{;G`Wm=FKzO|kv=S{tOu=@9r>JnSpeGj2DInU{c}kvN za5m@*DoljeyAcC~SE8i?;WYv>6xti8wh4=gjfE! zf$+-Q{O}P7um1xw)Epb*teN z!t19Erx0Fu7)~L)-fK98@cOTY19)g*(Qd=V5ngYAC@0tdNt6`$A;Jj=ufK+XBT6B> za!}GMgjWEXTZ1tY6~gOSFdR!7;q|}4@k3M~ypj;%^%YP)lr+LCx9Jt95nlNL=%0`P z2(Nzy5ro%~NR%_kKNgXJDufln>kM!lPJxS+#DVa7IRt#nYlPQ&q|1N@!fP`~5j+rH ziJUe89tf}3f@Dp@#rEHfYv8lEBp|%r2LYR;5MKWk%tcU6gxAMS7znRFHen#V{t{vS zGzH=HH-^;+uYX_+J#G;m#6){itVVdX@oZ5nZW3OHYIqexmNOvpT#(HS=4E$-`27m= zl`kM*zRratz;B8b=Icsus&mFEi39W1bdJV+{Rq-6MiPVhdLP0M!T%V(0qhuZ-im(I8m z{4$k=-UO=3F#&BXXdze+fR|di}_b8yi?}< z1=9laHI}cq8CotvjJ=wJ-x_VQ-;J9|XSeZu$HP>!t`{}ikW{Hzr__u!*&m9jSr0WY zKn);RnIyF?Ypls+=2v#x7m+y!wJaLYS7tvk1~U&Ly+Q!>`=3TIE6f(AvEO1Ks_1@o zx(roPjukb)odmihPl}#b6b}LQpFH*wI#!)NJMg=keoWBR{hRN-_S>HtllRJ1d%pZg z-I&Wi@SjiQ-+4*;_&YCZ`uj(BO@8Z{mKUeok375K_rr4@_Yyqs8Bt6M;fvv?!q0=} zd=exEmfFVd2T!PcIs<-sJsSk~1&QA+@#=O#{x{({7i0dplKxpqZ{pP`LA=SYMjd!l z9=o3TO?kYJPJK>XJjxNR9K)thpLp`acTED%i6S10N;k`69at};+o_96+`4#AOd1~Y zoeW>dgmAo9EYA&uiXvn84!>umGY^!y=mts{A0;R-RLXc@mxpY50zCvj8h$+dM0f(9 z5~!3QrvyDE7%Bly33M86e|?mzCCDiORtb@aSWGb#Or7oN}QN&r4h&bV+h|@n2)roq(Vni3`lT5`a zW-%xnCo2?j4kM}7Nh(gRMHlBWOvUMqq~bD>q7W`3;zETY&Wt4^CkGU9wjd(TWGUjz zSTb_1PZ6g;BI478B0lvcBPYcaakeX|Za|PC&Rj*ri5Nv(I*N#M7K%855nY^tQN-z( zh&TnJh|5LE$T<*2oEAxcZI^mE@LxIeW-13ZD(B@$X#D{mv7GjcO3qOk!+9=5oV`l< zTt-k0R~M3)6I6;gXDtSWGw|1(97rn8PMM0+Rnf%>E=7DHODgkdrI^n7`1OD|6i-VRZ|D-fnU-3EwI zygL#PJVA!HS1tZcHGOJr7dX5N$ni*(<~B5|@3_F=m2Wbu-|$)kJPHlf3+L8%Mv(~b z(CUQ?qirqGu8wOozih>vj*faVc>7gfmWWrXj-4lp-cbnCJeK zbf5}jbOrKF0v|xS5=|Axs2_X?JZKWeXbt3}(REdz2rGpG8n4*jif{%cLDC|noYDqU1v28r-B{>#eK{>0!sN|&`Qulptx^&`#=jp_kfmx?gA|b-3f}x zd|r>pcYv0H-v(L$x)pRXXg4U^zZrA@XuHT8LD?U5pm>rgOi?ys9)&GpicL=&~FI6PUuFV7eFt@TM`CnH{>j*PH2_TkWdg6pNYZC zbhdB10_p4p^>e$u11O$%+da5GWbaDA__Tf7e0KxM^SFHivAclv=}+71Bi1L8J`dr# z#kUpLZNBZk45aMw*}j*2$00ck3{YT(`i|my+;;-`y3@9#Z3V*TwzTcI-ksKi>qEc* zWtFWDp}tP6PX4EnJ2Lyw2)b=9-iIHRGkpth5*`>_a?-6Lj~|S|*9fCC8NXHH2T>p5 z%OR(`2VwFx!UI8CrDwTxdzc>icL+~Ctlt5tU%Bvyg#SLvLmiF?f6&EmlKLOl>aF99 zhyEVX&vsD%Vab27r04I7ZmjTpFVOv(?M2wE|E{Dyq&X(>OOVFNzbWlC{j-}q^0dR# zts##(80^FAp@-OzH5kWq=P({))nI+nTo18H4@v(2V0|1sHyxb!=Ywn?WCx*#?oQSh z=?&KB*BOr56T_8m74swBV13eT46!14AL+iy`Z@UD zvwXDgu*9<;o%{__KN?M;`w)5j`VHPi5A`{Cni5i2l&mA%e@T7Mm;77EBmGw;ev-s5 zlz5H{mLEbN(;b!e(UK|MgXEF_5y{VS$@bPt{7m7m5}xJ_nf@D+p8HiyzgglHHYm#L zk@9X~dr-!&P%k>}gpmK8@Q<>-;7cQZb@v3U;0%PwgThdue-!jDA!0LOTG znfbv#B=O5dUys!PCZCo{#nX(XGyT_G<^2kg&UkOAMvn=y{(ww_8Uh(BhEf^(iY8J^L^sjrM!S>`Et0dx z78Clz48gW6u2mRgk;N-k)|wQ_b?O&>XTP!$>dOh?>5<7B9W!M@XBYL|0uL-t56#j! zan%WMo*o$tq-1JL&g4v`38$*PU^u<<#E)5;!`YtjmwFhKu2(l3=gv0(P{FE=0cs{_ z_WE|qG^ja>h2|*?-FWq^+UDj>Ev4&P8k(D0p+a%dmbK9ae7{uM($=uC8B$#ia&=u( zyRLp+BSp2<3vfKPv#Y+fOMgJ7J{emch24!PfY>aZr=@elifC&CKoyfw6MI8iG;uC$ zJtO7-eS5%~34N>jUww<+$JtdkoTitSc<1(^j0bdiu(lt`;yRJKxvQl;8TL|x@AV0L z$;=AH(i7ydcl1kxa;bF8NV*q-BbX|}g>C7&v!zMkmWlVcRH0rb528|yi8;;GCQ0o- z3fHo7s)jY3YD#j~FBaj6cc^nG!&B-`dq?0Y2^3jTn+!%NFpZVEJ+XMtYF9AYqt_*~ zrOQZ#DOq`1n3I*YK#){**R&kGfU?H=T)M5lP?OfF;!IY|oH9$}QpRy6BO76MjUbcD z>svRtkS4uwCd)BzwnFf5JPEK$=5R{jx;!#j3u>4L&hVUe(PK)dTz_#UPfB{~!<5JJ zW3yp2Wqzxh#JCtPI)aLTq;u~Il3`-rl=5`Ebh87NuRioqR+H@54-e!v{(Kk9#5?DtNz1(0vbJWA%n86GPsbdu(oqLciT<< zQsF|Dh(6PQo1u^OTZzp`sd7RO)YkTn3t2Au%x|IFRX=B48SV=gvcjeBhCcPF{!57q zS?Ox;jmi34?bSGSsc<3B6Mf_4IrZ^meF?XuFI>nvY_`&E)5O|kZnW?qp88VZLLL)+ z1{bm_6jvl6PkpIyAzvS?bCt@ws(Q5MS7W@0$Wvb`T*y(b_I>c&zUtRIE~L@-lBnsg zK8_k@apOV;LR!&0O{_~NNgz&K?RC`80~c~}NM|gT{GaQmzErr7EuzohLO$M4eW`FE z4~$K$Us0u0G)`RY?Hw2LnCPpM{8iAWo_`oGq;M{Mz2idGjMJIc$$nFh)NgP6d6l4# z#p@rm&QL1+ex$FF!izu)!|MMg7N6Y>_)TL=D~1b+|CjK8CTgCAX_7jb3vx=1)3*|M zR_+Wg3y!m1Kfj6tIPaPR>&I!D~w*~F0 zzaGu7{>m`$6M49G+guCrY1XHZW&7)C)`PG6;+T*@U@F#qpi$*@re|8MkMSjYj6PBe z*oy|!(a@CGj@8!FZ+>{r1II6Za_7FZ+MgSpR%6M@)5B`iIE(D4DayTg;U=7p0un>0 z5pY251huP7hT%IuBsdJcqbiz24m?El)><=-2KzX85PJjiJ~zQbicaoReZ8AD(aCKAp_iSxT; zPL_4S^G?k@TtiGH>&BIRbU<;ZfB7fEq4T=Mr-DT1%J236j5Ant2F~vP2o{}dOq@ZZ z1JavEg9yt})H7&wQGLGF>LeCd^+E;7b#+q%fGMjNE@*D6@3I=&Hm=3L zEF0Bq4G6pnyZPdFbu!$r*1`xO60Me|&Q46|90zx;uKJD*(XLM5TrS<%RS!+-m@ZgN z*8y1!xV|dUO065vj7{sJof;WTWU5~3AEgaT>o+&GY;4g`ib@XHrFBswSCY0((T)zB z&tBZxzOhS5>YJNa>Y7}R|F14>Yi(QC*n#uI^Xj|mt&Obo88o_1z+0X{qubc^9-z^A zP8$=2y-zV6Yuz(gbZ4;W&S24Tvq+)9S!M6>w@j(A=)5Lt-e`25DRJCIEe_pFS_Mq! z8RI~l^VFF5#L=tQQ$&_4m!+8<+YL@ytC_8QV8&rnS-F)$A=)m%-EonGV#Gx47l{|L z+!@q3bk6^6)VPWG|C-*C(1#@AsB!J+8#}gJancN`C96xNb za?5eGbLZje%e?~EwA?ma{kb2*HIVxiT+?%ZfU7}`PbcRN_d z3lv-db|6`(K*8~Y2M5dZ^@`O{a6ESYXC~HAaJMG1_a(C5NMwHiR#i|#!Tl2KPS)yt z)!0|TX21&+T&w{a3hoWWu%ZG5Hw!(ph^#=tJ&g`YfPy;$0n1WQZ~+7qLnyehU~Xd! zpx~B*-pMeb;5H&a%nCxmEyGrt%0Vc&%fLJbub|+*ivaslpx`b*@Xus56dX^>JJ`)& z*+hYYyCspmFOhu&tSVDO!98VI4F>VFe2AX4LczG!js7JhBcbxH}-ppM?vc;JyU1 zoxL5`J-8_yE`rFb_aQ_Z&kR4L+Zy9JAVhY$HK@|=bd^r}*Dfl|V1C%_! zAO!j?6($ti7Z3v|xIzd31vd(0$T(aqKgVfi1%i(ug+Rfvi(4VmP;f7U`vf@!1;=9V zBd4I?_!+`OD6|N5;JsZ9_76ud?0Yk2W2NWC$q2R6qU5?wJq2O*aoPvTQ_?wDT zP;dl)Q=Ec=<0mqTQ&4b^7*0XKJ!-f(6x_`a0Say{N(wxUZ~_$EZy?}^Qc!TY2ykF3 zD7fKZUS`Zl+s-%_0gfdN1;>%~GSUGGj)YKf1j68BM?=A-BcwPD1@|J@|3v~o!Mz0{ zP;kYN0t$}slYs@eC@8obJPSCS0+%X@0}75mk~kFHbfn9L2Nc{Kkdg3!f{TEZ!2=48 z(2rT?<6`?);~KaJmjo!duRy>iDJZx{!0^36D7f#LFreUmX2O7iJAyEOivk7rieWVr z9KXwAcL@|6fio1Vq2Tx+QmjD1ad`2|H9*1fzwX3t0~8#AFa-*ZZxuknodrpt2oEO( z1vdel>YPbR;(&rPoui@PRv_KQNMfMizJ%~Dc;cBg;w1|xxK&6p;ztNmPEa$-M-u&w z0y5{cI++hT7;D(o!kLWFn0XsC0t$}kod9g3en7!Jph!T+r892CwUYN{P*si*kU^fD zzaZ7H;W(ebnv4Tw1fbxu!NxTERH{cM)xKD&Km}5Tph!70@w8i-A?8s~d#cUnkv)p> zHqJEVLb*K(BMvWSj3IK?Xp`?%r3Iq4oyh+o=AWl<*O;?}X#oWn%cr2=Mj*zX$H8xn zHQCLC#cn$eH3y-lD9dJ&)VeGU!!`nCWK*NxKN`WT0Su?H&M_D^^p-lf0jXO>C4H$adP6!uX+@6lV9B-@Fu?#ONaT~ zZG^~r@rLFdlR!BWVmq0a`b-_2I+)(AgHUBA4G%0%hA(77IO^*S4vl@!rsA&fqu>}E zT7iUlHjO%22LFMF53Vtfv#b#OX!!B)6X8?Ap|Nf66eQX^35V8#dtuKWsY~EBjzP>2pV_j15nM)C8k|N@$q{soU z#n(Ti>P?GO4kR(ISD2WK7b%4=MvC~B6cJwy%)bjBs`zS=!Z@2@Vorxd#FYv~55P-{ zIlH2W^BNIR4@G<}Nk+B)foLndh@L`_soLPBE}TzL#L0z-I1i$Tvmz0xnIlAe@`^4_ zvzUrAuVPR*zQZZvt6frYnn@AooT7`bcZ&GdmsDI5Q53>OM4Z1<#0jHheLMY;tL`0kh zP{c)%WaK=6B0krpbGY84$N`7O*(XJu(n?0oO_9*Rq1_jc;XI8ooa-SmXK+$Jr_xlz z8Mdh5B#k1@+loQq)Jq7IFGxwn85&b@$|kxv$)kwxHc4e3trXKaAHN=OXzF!?v{01j z_!^>{sR`SX;9eCjU(=*`e(ww+d)EFNJ~+1FkQCl7yRWJrbA(sIwJBF4N#-b03X^k{!bfbt+(_ z_$~$w9|f(#is~g$to9>EGz~ukiqFHE4{5sQ04T7XBKtKB^V}fy?AA1VH|SjG*$P?> z+6`I-x)~Jj^hlSc;dW5WxgyP)Dy%N*tpg7lUJY7>e5*h)5s0kRG+YCUNlYZ7X}AiM z^_#8fnsU%N$X5c2nN6fv({KnB6P3ttO~ZwtSo%fsH4QT#ra^fjP~bEv>?|x5)sb8B z5K~{?BG8eboZDOo%6uqWVRhlN4V53C)v5f9M;jG(7Kp;eBAo(x5h#|JDjmMJRq24j zt;#{&6t)(Yw|OO)^f_WL6!P%x zQvRQ*A8p(${2J&cmeM|?q5C@H(f3@p(shu>Jv<~lm+4M^8RH%OF^T<$G_SHx;qGDi z$WMbbbmdHs2Tum~j>pe&DY>vVU(Q(v9vTgdvs|4sVydZq`T4^Ouap6R)Wq`Qv#@hdgo*v=w9 z0R1ld|Hl0JmSw(i<$rjH-DJK|-Ao>X%6vmd>~~@*nej3PWt@Zi$A5UxWuaaJ9QU(S z()URHx)_f-nDO^-Q z`&{YYM5Hrb0BwNz&+eNuPu%tBYD33YrPJO#1WH{@s+%^#M3WcwqoU+W!3Wu zLbG_zT)-0dTD(U_LRmO5mORVzMp^15sk5`pTHZ6cfG2q%E%lZ>u08>4$uo<0-TRAt zWuT2xV>NjdTAFy5V}}sEaGUx7UvjDU`dq=(QQ(*Uk0L3#I!a?Hxq*^A6D8g(bAD^` zmAwtzQ0il3-nd8_DQ1=eyEz?rBR8N>MPK+v3LR;B5@L0^?AMBo?a>Ym734-6inU4lr7xTz!d9h%8B!5M z+bh+0Lvh$3)rw^FAStsP^Yen|?QBxZu6KD>UdyKC|9APW3eH;HjETp+-1(YbMfc&v#o zq^_8=VhjBLvG*TFXJ_V|^ZUv)Ma8Jai=>g9$u3Zx=o`UG!5O<2n$vYPVbU|% z1?rYQZIDcbScr0(^mLP2>q=~#oXIZGQPGF#q;lP&&)4jlvq-wwWl3un=$Po^nvZU) z=*xvZQ-)5_N70woE>Jn)wG5z$v0uODWDaVPp{hbE<6pbF8~BIn~M^f{eG$D&OA zBJDkqmR@CNBf(D2E*Zbwl4B+YKF`M*)Q@8YQ^QpCOKTS>fO$L}*JN~iq0e0>ouZG) z=XcG5b!*}hV?|$Bq8>k^K4pg{t(~D}(Z@XrIv<~XJDj_&(tl~~4E2dV)oIWZgg*A) z*VbOXJf35dOW&YiJS|m7+MCwSP>-vkF zq4$WsFJXO1HzKHr^N=uP&SYn3!Z@AvW4N&BzFn!Q2b# ze2~#?7s%){YyY#=m(I@6_^_^ByHxU9wGxPv^z}<&XXqngopG$>uXc=eiAt$2ot>et zi9WM8vi2CgfCNj*7q$_2r=`qMm{Rj3RJd-KH`hp z9vZ4_4{cU?iyXF!p79plOL<*}wm;Nx)#lUae`U)kRXQ%OoujSrYyGfu^egZ1DwCh} z_!Z)eogzc=UemqMS5##6{lLWaqufVsp}nHHXz!eTudaPe*(|zXX0UYQ%(Bw`Gsl)% z<)cfjFnsX^rE|*1l#WJtbn*Doo6E2xEcB9?TaT+l-6!3O9F7a?41JvgTX^g7>!hT@9SaJh9TOgh;j)Cue_ z9S((ytv9W()fq0a-lScnuoVWsp|k-y!#)Z75DrK2^izQr) zaEXLbmvB(RL4?Ojcr3!@5@sDIOBnSGS4g-5;Tj3oAUspTGZCIG;n~(9w&8UBLG-ze zzQ;Jb*1PY`$1v6&v!6QU_1sIlRah7A{HiDXn)0`lsBy#d%X1wpZYT|${MxD$%d7|4 z4>r!lGb^n_&!3-F_55nLT^nfj2#=VCja(q*!9Y>UhDH54)uHcLe4S0_m(S9@AU+}djgOYkKkH+^V)gn z!@20oIr~o6Kd#0w>*KT+_LkRvihWA`ta~fkhG#U>4IlLcZYv8nmd-`L&P9K+f4!il zJ{HEcT{yLr{qQSXH@=eHE5?<4dIifdI-0I(J)pz7f0`Zr)0dBS6!eAqvO&@ReHoyc zpefq-h|7jpLOUMwsdj_|$Umts6!w9R2em-Q^o91$^E}n>_1wXF@!s%h@B`f+1}w|# zL0N&=IXwY=M(+vq1H)&^e?rD`7W#bx`aSB&x{dYWz2_O|rVi7`zxL{J!2UJyJXZtt zYyT*;8~xgUJ}CONe;6qGwSNexYupT6*TnI$;i~ePzw%kcnpfk6m? za((ZJN9b^4G}_a)VRJM>TXi+T?ylZ8ZCcKi&_+`qVl8A|S65FnEQ?1YaZ7d`jnSH5 z)NCv+Z-myZuGFrcXe$vTx?9_tjDRthm(EaLqG`H~?e%q1L70AXl?JdtW-d#qPfmbU z_|~qTHC^4ck(Q_tON@+<6o%Y(==fr@)49`SnH&>wr~fr;iI}pt5ioY_E|2u!e6Mb8 zY>xCSgk>5H0Wu434R7p-01?EUU~IL(T25rEvSQ~r7vN#fXJyO6xhpNTqh<{C#K%(a z!mb`;=wy}!gb|dxrb{lMwQbQ>R)}_ZW+e^7-dV8C!|i#os556n*XHPo$TiCB&m2H- zbVO#svQlI7N?uU>nhna}03g6IRivy-|rFn70nsgqRf*`$XD$j>AUw*lQi>D&ve7$7&(`{22U zHBdW{d{(XxQoLpk3{B_#TPkO?RMoUp&1|WzYN?*lQd7}VQ)6wZ zu2QLI`U$U`@$PGJwaJ}%YfXsU<@ovT>Zu8}z+L}WL|hN#pDnt2*S;gPscp%o>nmq$ zs;Mxw!jy!!ZA>T-Z*7@T!>XpAr$A<)L}s?ORMv==fu}4iud0Gs<|?&kl2*zgs%V>) z*jHs;oslwU|EP$TGVD*4;n>;}iGa4?YoM~0>s9R83#-g$Ew0KqTj}fZZgh$cEo&@m zF53X#1kbH_$n1&t>UXye6@&*|1j{i6>fAWx!U`}`t1Bm1 zXZL|t?9(mR&&=B~(HhI@oZjiF9ZVp`0xLIMg=@-c>ut2=@qwTfe->)BM>;oR6Me<% z%a(LTBO4<<+GyqG&R$FbBF$J4M6KRUn;Y>3hs@YujZqn+w)BxxLG{QoQA#E)wPF`@ zVSD4oUh8UYBvUcU}$RIW&3t|cAa?QM}}WwcXOYI$St)fR0{5<4DqU`HpIS%I0=F7IlFHWRy|%f!dy zR7^yzFk*5#ZWSl0alwV{ZQZ(eu}K{hW$favp0@XNbvmOR8dB$T35bd`25L?HV51`W-FUMi(u);9 zYg@0L*ISL7o7=h;bT)NiExl3VOtH(mwzNgoVh0`LF{-V1c4lbeBY^nqP zryil_Y`Sias`ZxGZ#Cz|8OIC%oK08NBN&wGY1X{P?&#*8h*|HdfosjXysm9)q+Nea z1-wl}C}C$rJPe%9%Qa_p_uzxO&gd$&c*cmf@JtCS>1g}5RgtDh+ZIH{EzK%hv{p-7 zPcK%N*sF4$sg?x1(nYlfxs>tNIyD>80YM>?=Oh&?Q;xvjUm zG1}Bx-)o}qbL8GFOWInq8m$fZ>Y>?+Znf|O88zFH*waXuL0OnU!B@do!`E1tIKhJl zu4MiwvJ>Twbh2w$hIb*ixjM<(uX8XUvn5}Dqigig_biLkVjemgP7J8ez#DHpko7>9i ziymkbdHuj!%;}X5w41zs;JxPbN>l7;D-*v-+uQ@HaBpNQ74ArffnfKka{ahDF}B^J zsBkQ*dOiTQT@eG60!h7$a6Bc_3X-D-RwL_M{RBy?NQ@dFdo=#TJWxB6eq{#|PWS;H z*r;-cdOC@fKOTLlM<$kjWMbiw2?kMPkA+7jR!@Dq6|LW3wbXZ7y#^$Rw_eQaNHX8%(2(DdO#TpSp=Dc{+ zq~>0FDyt^9ipLe9R_{>U(T%BB&o-%?*}%bzJ<1JWFq#jU>0lkYPKT_hP(&S2#?KMw{%)?yi=ZqlBFY$7Zw>4mpmJ7LLozbEN8^q}9b`OgF?t zizST@P3Th9d2F)G94#F`ZWoz52hh{X-FCR`LUArkkl!rR*;W&6Skc`VkJ1tGqfxXw zrs&eeA{|$BsZn%mOwpxA=aG0+T&oTl-M5NvkJV$Duu<-TsX?RNsAQbm8C|nu#jQ@R z=W3%VUa6#)Zud%M9*9+HXV_hs$$mUmSe*&>$)f}GZn|7F%SDG_ZKTcj_bEoYNiv@} z<4l_1iI}1$6MQ2UWv(k-7LG>I(U?fmRb@n;77?Bhw=*Tsx*c7LtK5hb$3&7!nk`9d zVj^`W_-rgHsRvE2_LxXo#dRXWCYZ3v=CQU~CcHH!w@J6haWrYy#boeWy~~}Dv^RvJ zJ4|plK2)c}P}n2EC*x5%Eq*kLf-#XxO|JXmQE_=4GP!7YfX=p7=|KGWPii-RD(W@Z z4rezH@#fFUxj1Kh?lU*yweP$d%bUMs2xC0i`0&YZc`_JLgEV}(PljnrhTuV6jpfOX zvxC4oQU_C!5glUN%uzJjS~BE9yl_5rEE02aE1|#g^$TEQ;C2sBBu>Sglr9Z(J!<-*jDm-*x#nUx)9)E(lmm zD2BH2r6}H!R4%-dn;`iVGcmdMmkd$;4?E86RNdi|HADTZ?G!(XHq6viDr)pew0?=E z>iegDJ0NbT|7s3WxwTrB`PR~N8=@C7$@XS>&6kAUWr)#+`u8K0V5tAci1-wfYwVE>fJxCksf0AKksQ(uT!BGG6ATZQ#em=~d-R|IfwO65k?T^@Y z-k-r-jh|clQ(0c~9bDdMM5xI7vb^)<&4PSd{P-dsA%7J;VCVl3-2LG0Ay-g|cF!I} zmABw-QE)xjg^E3jp1}{khQYi1d>lXI z8kAA=VH^UM_d1ZQ_v4Ta@6XQ}4C3<*<;)|HdEU1`Y|cJ_Coqf%1op7CIC_TlGH%!% zI0lA&3CF@=6a}8Z4?ung4?KZaKr(&jvCnOu+dv?5*icYw*aRHyVIdqn!&c$w9md}D z4Z9IX|1eG*GKM{dW2WU}{fg}$fjM9g2PVPy5b^+4;AXs(_;2vTfk}}06$End2IBA> zFu4f)1V2Z^^TCuFW)Lt2CWBeTJQ})SULw05>|5}|GoarS_ymGfV;6(<2EJ(6;fgiI z+cduI4IDx$D`3M!x&;)3mssDTio%TF;`bg=nUit1-Hy&zCQ++rA_Abb|g zL-2xv@O1yEYb`MxKF`F8tT&Mo;l!kn#m#uS#+qO2m+$TOzcD$V&%qyPnB6B0++ z!5ct=ys=n5j?=6UBgjBz)9B*NE6QF%@VkgoC7 zI>*>ofGI3#$8jH&p-W0O$HG8Cm=B?kAtJAMED2B$%JzYN3DF7#p^W$iiX#d_+2e+T zjr~B`cML}qgfdQal_XIR%6@4$T;oM$zcHLfLE!C*c(dQwiAUKu;CH<0RwxK<;5eN8H>ns03IZWNc#|$1j336Vk3f!91q#Ba z5TrdRpdirb{<{za3c?o=%-)Ew?RyYG|F;oLKtcE~M6gLjK^Xo^F#J&l3c~Q;oACLq z!);_$@jyYyMVObSpdiq;v0`zCa4iPGvbzKYq1><<1)@iSoS#w7bv5Bf0I^N#;+g@S6p_V;Rboe1k1kU;L5G6^YBaZFrr2bA4}3VVo=$W zA~Aw}Qbs%U)I}~(_Oyd5EIa1lip!204&ysm*6-lT%bs;`6=f$J+|05U4ToM1mz{KQ zi_1$aa0yaHBnADy*!_k?AHx6%~yoDJ;rYy40^>fzhQnoHd`) zr8u06fYPNn+%0mgao>T0AHtu8{}A+EU}t;`Wc({QF#Zit#+Tooqa(;n_=uDFsDrV_ z-7TES2#s0aL!Jxl?4K%PQ~w3F?}Q?LotDA0@t>Bw_kpT%OavL^$(@dbadWU*VAYm^ zGT{O{Zz+N&Ql!o{LHOyCF3ZinQa^17~-99?_dITeVAV{sh~Y;_4ae$1%^e z^Knm!&sgytuH@Te@^}3f`9IG56}COeu8YleC)t6X=?CzoIM8i*Kzg@u)mG5lRY~ZycpvOJv$ekBv(bf;1-=CS1nxKX>v8> z1_g28MQTr1Ea$$wO6?hB2fsnVi{4McRvbK>Twll(E7!E!tPkw2-=c?ya$V3fVEZ|V zwR;{ypH8+{tIp_o1Wcj5+E4Y@v1hDYv)nKnFLuX5bnPQl|2^Bz{~d&49h@J;k8rGu zr@W79zQ^ArE7xQ<8!vXphoHv86Z$i#xf~heYVL8WDWFBik5bjoIRCaL8Wm=%#qKx` zRST%9-=>J2|CgQCC*Omf z0(%c@_B`kDR<6-_6u&!kc1I61f1a9u56v_s8P`mdtXQoIqTrO~-}9Hu$~7to$wOy% z9fGQtsp>BSo>isfFG|T&lbOGFT1h4pRAMX*&#~3=A?@{HO*NTHVww3V{5odNx2ZpU zHLR&7lUY66T{j`~dzpFAnKJuIFs8EZh5P}Idav(G2xcEtVcr3JthtXpK7?0*EG)Br zhNRUv8Q$ES^&tL03|$5tXN`o%WuY7|8zQ365!Hkp&XJ|gAt>b;4=u{n6T@_TJ)gAZ zrS~=GkN&}pdxyVtG}?IaPgi`@1MQ5uHdJGZVT^PY_F@CG~@l&@^Np5QEBenH^6tp_rdRk-wnSX{xJMe_;LzJ|+-PF?h%p=`uE}KZi6RZK?aUvnY^jLx=_KJ`aTD}OgHu8g+u<=(jM-v zkbf4QPTkEwJEcCAQeVR_m-d_X+$H+AOZ(Mt9`YN0l$7@=DNkMfNH@H?frB^o;pN5p znEq3@MDV76oG=!YOLaYbbjLS-JQ-=+0AVxs!?Ql@1J;}8j_sjNo(J|7>%%&*A5GcL zvY;ZVEM7-OW;oKT;fp8;hoOgdWPtiDpQSrTh9r1>4f5*c^~!k&idA{>`MCvC(aId# z`JgO=*L^8`8T=Udaqtu1nZ|ZbgRg@B`ij%J&u`lHZ@+u|%6)4VuevLE{)@M>FNj<; z+xOwS*1fm%{;93c3@vH+T;n@uyn1WL4~O2rx#{Ys4qZ3>&)V^@C2557XDB0gV5Py;V*<=3cntnre{A0|4I1$@Q=ZBiGLE_ixa?=`2_gc z@GIf@8_5;&cKA=ge-Zv0@O(z|61z+mqLLK;NKg%b zH^x#_4|+!N2S}v2!e@T2P?4W&e@Wq5j>25rNfg(?jNOJ=QI+<6+fl82_U6#xkHs)HbIIDAyLVF9SU>1NAh#yfKgnbNfh^~ z7{&R7M6stC#obGZQu6>ragSP}xNSu#?qNxZ+-qVKcX_0G++1c9C(fqEQVDKPNJj3G zQHmR9BE?-pMzIwl#qA_UJrh^Yy$VKg3q$I~JtcMs_m_}?TUL_72LKfAf)|zCAYc@C z3nYr$I*j5Tk3?M|QN!a=oTE~Tdt0KOrLtgdLLhY&R7whW$0^L68j0dvol$l0QVKWE z8O8ndv7m6AO)-jl|B{h=FO1?wjART;UAP}7Qrr)r6!(rLirX5D;?}H0amS8P-13ts zwK0h(F8d_P{76ue4!=Rlkx#;2LL`(Tv&%{5Jvy4*l;F$~>Tw;Llx~(*4bX$8CFwV7 zq$9`=k)(99_-Rj*ZdNqmH0fr=a$lNsv+g*NCfzJ1#v&aqseNXhzzJ@ubh8w|{32z# zneC@b=WW4b9pb1shg;PutVz+Ujk1VX9+VZQBOEsx(c#$3$~d zz0=|^CI7>4m(o|xnAiG;Rm}+r^-lr^H6TvbKQqqQKM|xB`*4xAh|>EH8(Zmz{XZ#g z)jt{`?oxaW8hsBtC&fAAXBz7Brr0aG`pcQW3QuceyRv^dwUs}#_2#=wu$V{a5A_hn zWWZjB-mKS2C85Fz{onq>WrBI5ANU5~d-XVlbF7V{Kx{Nz(}M&9uamCiJ8 z(cH$~2*Q{P&s(%8(gl0WJ=-+DV)dM!o<=g5mzZz3z~Kim;e#&|<@hK}N5x82Uuz)_ zwOnMr)zYl<%OS*|pxF08V6l8o`XmU^sH;)!J}0V-ginJYuclpDv6+K+r0w659k|3l zIO8Gzs0>1Hl`811sK4Z9e;J^+MgwBY|FVD7&HiElZe?c#X8Ut9kiiaw{8r$3|8T%@ z4O_O%fBrJ)Sn40M)IS`#T)~Wt<M#1Ud7>tr^4Fs;w=VTxvDAORz0`jfeAZI`MH!y4 zL;deUQr63UJHu0hmHMCj#mtfoZZP6_#!mSw8HH0g+wZ^GZ)N-ufNDTjD?&zp#;g9S zz-IrY3~MDQ_!I>$!P&nVb*%MIss(w7#Z4aKEUwsJb`mKsLuFvU--A&x2suWgH#`|P z`-UUh`@tJt_D{>kE<)fM{{^IfB=HntHfdQwT-104w3c&F&=A-Dz2G@#1q}s2KZqB@ zPUDV%7r1LV*98ro1icOMCqRRUe^%2_KPdAb*EIArDD`s=P5pd7lKBpRVq>ZH0Zl{u zC4Mg`_QGoUW+Z56r^GjdVsomtLDSG0(3|kuM4hJV7lU4dbnY;KhQgpMrvwyBq1s|i zLxrGQ!1HxV&=Bu*tS?{bWP6_mWxlSbf9pWme`_=im4m`2!juwF<|_h)IrG{=O+$R$m+{9zaSCdWX&U0D5cTo3 zh#Nt#1EpLYDC=9RDeMI5`f`&A^6`F>)1ZKWMQ1(x*rXg-pv439F6gKtb zd}RP^z1RC;za-3P3hGZ94MjmI z*A9vyQ`@Sk!aKyNtZe`f8d?K-6UwX8bp3o#=$p;;ag&%k^=wk4*K*OLHfwDY!Ro;c5<=|(4 z20^ET7K2uUvfL_AmOBj;#F`As@pLul3D6Co97mUf@}W-{ln;Tf0^JMR2Fme;I_7g+ zZ3Nv3+5*aP6#?x7Z3f*6+63AF+6cN1v;njZ6z4cU3|bF56LdLf1?XnbAn1C~V$gSk z7J_12=35ef8sqay@O+qs>ma`$^j)CGK;H>^6cpEa{$Wt`UH$>kD?s;yVm#*WmiS$u zYr*dX-3r>83eY;x za?ndbgP?fmpl~S}UkIM(IRJ`>68RSBO3>3dFFa2tL5G8$09^sv56XTz23iby6touf z2Jsj-S1td7!&Nmw@g9T@1PtGzWA$=pxWQP>!>$pxL0^pbJ4; zK{?JEKv6|C9v6Vtfu9G8x>#XQ5ZXV_Zz)i68SfT4LFj0qFG3P}GM*Ls??UepdZo}c zLOnuXMR56bhp9e+M^T>hXDtic37e z?DTjlYJA>00(TP3bL({;&o29JfOQ_Q5846G9(%8y>6tk@)6?3X>Dg}YK+1id{T`2J zhj*vf_8jw{^838o{X6_S{mALR8^>e*<2au3pT@B-3K5aXhx>z*^Cp2IiA^{36RjtlQ`}O>^rkPo~N^q;dnCp6pq_-cI5cHcjoNMxjV<>*^{#u$2W5Na-l1CCyu*v@5b@* z+#|VwCCz<0_ZYbT+-Gszleaeyu%&qia6Fp#G>*sf`f+?V?*xvg@=oKpBY$VU$8&f7 zZj2|o8$g|Sq$_b!o&3*z;Ik~tVA~ua56_1sbR`&1Oy3Pk$MMK?z7R&YmlqNE{lc#T zrTkuze~R+Br&Zv5((Pb<96aZbsy;Z`bi;(-BmAu*AC~+pCA}3o=*HoCV|n|fyic$^ z@CSr{6N8-mVc|c(`hqtPp}CV!d{Fawz`sK$dGifHHDoD&RPxtT9(6N&-fyvfNIxd& ze27iHUwF2g@@5bGo6`Sg&-=$xzY`+=VUag`-c3^9lal_HwBPJ`=SlreOZxjI{U|71 zztoR6N4k?z{wYc4yqNVfd)!^Zn?3Dpw#SQmJnBXFG`y3ag>s$arJe18j-#j--6O0& z$}(6{2T>OBOJ^49^ubJrZiD^AamOETgWbe8d7b=0q_Ka^c-_qQp?=pPp6(Z{55jHG zOBbX(!Uk)piS>j04v~Ld%DYD7_fQ`G{lfE;Am@1CeVgfbNcuOWJibIo$2b3&{vX0W zBl>?MJdIK_Jpehn*`jZz@ShcZ>x7>u`kICRhUmLV_#V-Bm++TSA9OU!`M!Yt=iu+; z`GoJ2^xw$&F#H&)4_`v0dzke>T%VjTu5X6c3S71G{kB>h`RWBO)E&laBVfzi#A`h7$AUe*sf z{vi23EA@F&(oeHKNcTdHu2SmvilpBz^&2Ybv!wryNPqrJ>W6n(l?#(co&GHOzsUL_ zj@J#{A6P%|YlNRD^?g(1--&ppZMQs2i1>-@iz`o2ffi>1C#NctA3?*}CPQK`=# zB|SsxAHX=LdyV&hTp#y9jt(EMDV{H5(%s4WBmEb`|Csd!|2yFeg)c$5bYa#X=~IR8 zVg11`68@X4FZj!Z{~7Xde4dp0yh?e54K~+2@)%nNTkB@#M_(Cite-+pKH6rmt@sU6 zJ|?6Fd#4@kEpXhA)**@b#H=?RKaV0`B>YRbH<9P(hIHSM^q}xT#1YT9SoqCo3;A5( zFB0C|fBr?v=j4-)>veoJ8M|MuK>rsw+H)m&M|)pI`A`va3_JN@(C6d{+~DLNaHW6H zmCi5Vobo$d`uPf|GyNAXegE!CCmy&{o-fZhdCseyJUk2IQg(EogaZa)2;f1 zt=lEdunk7Ti1i(jj;3zVR4BUcE#PFc&}Wy=Z4O$M6^9!hTfbuUN^O^~ejuwQQxmO5 z0)>^hpmF%+WSnPL1LC3sKs=v058+Ln=+5pOslky`OF4TX&Ca{2bqY9Vw@v|mjw?+- za&}9nuBUzkBPTYlDGtG%AmD=Mb`>!-m2L1;BTb(BBw9-|5X|XeqTR*048ynv{UVr0 zPsA5+2`q2CI+7%js=DrSqsB;!HYj3@rT>)|)qvThr&iU+( zwsxyNW*RhBSDIciX8pz7Yh0=hre0wst!wkfRy@gaSo1TI%6eu`LO`GeRT5$Elu3^1_V@`#-Y|>mv&nB9evO-^0sKF*yUug=E z*+j(zb!>X`M%va?`gE7=o%Dil&!SJ_xE{#(Pi(AK&mTx^V4GCwt3A*Se4z4RZ7Ia% z!S1?PrcRHg#4ZDkvR#v$pkd6b(2%#)6)&l8L^aDZS@$Ko-Uy#IY9HC;C#U3w)G z6imGqtVvthSW2w2(&y}byOP}_nl!zEG5<& z>H2gDunOyLjdXo-f^>bgZb!Ow*rj!Al>SMaJFMQ^9qFl3x~fc$r1r#8V(pQ$lP&?4 zZr!CzdtwPGI~EpndC!Gm-GRDaB`42#rb=d$H>nwwCMDJkIW5Tvy0$Rd>u!d0V!8yF z0agu2mkzVRaz$vt3afoy-ID5hO)EjAz@*B@QrwkKPLRsS5>j?`^}xwhs1eV^z*0ya zQ#q|_W-#t5Yc8ysUR`-nRdp~py`l;URTWIFtf-h#Qv>e8i)L#1hHSI8o7dANh)`3z z%x1;+U;lr9G0SO+JTgond(K(+s;m=uQ(F4U2`nFr4B+?u8@Wh7jEJzsd! zVa=~uunrG9-L6mez^M=02-ajg@KlxcS$$4f;Iiu(xJ1_1C+ahLN~r`cI7Cx(lxV}E zer8Iqqk!8zXU&{gvb9_G()uJSjE=%Ki?s(2tR*Qfj1cs7b@s*^?A8~Qy)~2fu;_ah z`V#g|M62M&1D&8z#klpAi@rLMKO*{GOj|#-wCUx2sVCCX>(;l`Rlnl%bbBY`!L`&+ zc9V61Qa`+B*vb_W+V46aqE8v5K$al%IbHJk(DjS7vv%yy#PiXBJx96*b;JRiRy-dy zs2_(Sw(nBauMI$kDu-L&VbLeU*lK`2cb!y5IV7Lo#P&WZ`hp_genx$&y$Yo+)%iFn z`b?vCN_+1_d!?QxNtGz)L+RrQai0&>Nsu&`#ct?xI(OTRJ~OD@{Z}jP^*bqhwG&0(PQ1wFbm{6x*qHXV-l)5NLD{>GU2k~tf#c=bb?L_Q zhPEgmKO$0SeLWF%;x#B2eNsK^2=oo)FkU*E+krVLLT-J0SAovx`}P_2sqvz$@)L#7 z-QJ0=_I@W>pKH8mTzlM9RXw0@?VMF|b4N^-=(|wp50dpIoRa!_tq+hUDfP9<55uo; zq0(hd($sNGsjqRv2B1x-`$0nemW|apUzc1jR5�U`l=LJ0`o^yI{P|^zSmRpR3mV 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 z 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%0AflBGPWyxcNG z3s*3n!wXe#Iu2ikIQrOQ85E5^dhFK_s`UcKH)rfOj5H=VDR=BvBaH(| zub=?;6mJrQru=6`9x3+Jy@+%p(+=}rC+V{#zp>A|#ZFiMe8_LwZ>|ON(EG0iRL+7c zK6u{@gk0nETCgnbvkhz~>o(_a+hbY3JzhVPhp3KO@Me1xul3tO?nT(&IQa4K{F2^e z_$lxwz)yoOhhO-&{?lLY`|?LueSG{q`(`~;{JZN$K6Ov&U-rE8=mlH9zV-Yk&YSnz zl^2gIeq^Ba!Y9f*o;zw|@TT^=9?E@g`E8FL^YVxZtM)%|-b+W`aK)wnwtRn4Ah#r3PGSc)pn+rrAkwJ%kya56$T zu3V_%P$;>$@S}>WNl|ejgp*f`DX6$al3Mue$jp3V6&1URDn3k#ii;Vl`1mCzxssuZ z3mj4LahNI&fudqpP{s9~*y0iu84bx7SHO~)OHZb7l?N3UrBa3~2%6zjkYwhfN~zrX z`Gi0f7fzB(y-R>HowOA4xo8mM@4iHgq_%*DGyRBC>LiVFr& z@l^$LMQ{)m2YRabdPZvGLj_fQT990Pz@UoH9MU;_(4dMBE|QBcVW`>)FS+=DK@}f2 z#5|YwRPjkc3UVpQE6imjQuzcdDSXypW;alJ0Ja8*hbpWr1IU%pUPjf3R+ z0Ys{L;iWB{p;Ex0NI^)=(S$;B?e`{!}rgXoRy8K$h`;uDcil#&J z^Xe>{imOFq{od^#S_$!bclpUObEl>L2<%>3?)U6$Ra-jZvsPiVTC5z9(YKk_&AwiT z5p`OYpX@F1lcoE)_>fSPwRfri`SK1vJaUU9Vwh^o&)9maCUlrAT4Y-zB+RaqxN%WS zCcoOYqch{j`x<58&Yj5A`r-LXXfMlCOIs_pNOQo#IJclH9cM+p+1lurbUlAG)={PMNdqt=) zuOWW`83#f|`Tr6MpHBy79s6&Z9=bJw2-zO4f!Ll^2x+GoAr@*44LYpmnv8a8bhvsx z!lg)`qr>Vk2+u>gT!iN%mbSVf7x-KaCLgV#8B9tlo_fi@SzhI;`G_ zkmYwE#D7Tx*USj3waQbYxvwHDg#KC`R$qm%0e_oySbZfz z=DQSO0rVSmSlxw?{nMet>NbSTcLBnD=n-dF-HZ_b#|>P=Bdo4RsQO2TtLGp*7v*Lk z#G<>QOo!Ez5n>VD5Yb`v7=)m2Xc(=->OO>%@CJMh!m|<5{zQZ|B3B^9ON8Qx$R!A| zipFadou475rX!inD_g1guI_?5#EBZ2H~{` z-;a>@@#zRRAUqWz@7L21b|A!kUc5^5jR;SHyci+w+v52ML5omaf$(I6We6J(juCwc zLi9y(K0;jI;{9kh^Y24A58+;fxQ~jTMu=-syc^+cggX)9S{Cm>Sc-7F=(i!Pf_w+U zQ3!8ASc&jjgzT3s2ul!d7X2oK?57O~(MiR92rCeFAY^~8L70nh6~b8v8xhV#I0hm6 z3jz5Fil4L? zA??U{6vtgTyK#IbhtKrN1<)ThXXCZ`kb{o14<|*(9~x}=CQ08f>DTgNN}T!s2ZqU+ zxC!~_o}r99Yw*uX$Cn#S-z@2u(;m_{N&3SGDc>UUaU$;!c`@4qzeUQgWqHVKH{BYs ze~ZY=ago_Rj^A{*(jM~PA?g1m?dQBeM=o%t^Se!S5h>64hptufb6%t4dlK5`yhk?? z<;YpdL7a}`sV(2g_MwdFj|gSdu}992KfIB%(r{`0GwhNB@)q3Jbo|+#9G3Ip>E=*I zoi!paV|y%_FGqMj=6dXx_B{_h-D|8Ly0udN^UROBwnImE4AXHwf0g`k)(1I&knZ1^ zA9?$v{Ij$V|0$7w&GL}HBJ%%9d$)^xp2$y$T#L3AW8&L|GIac)k}W??`{)nDMfFSR zA0zXX5$ogT2fFi_KaBpA{+mpDmR!dAAn%j(ha`UhZJ=8~8J_(__W(lXFOqcjJJUzP z)4fmHGaq*8ek131l%!ul8RbVy`BNnQL`nahw4dLhqWhA_t3*CR+IzH=za4tk-y`YI zp$z+Hx6~iz`Qmz&pdPw1=7-FkEp*&qLb+Dt6GUDr@?FS7dmE&Ge#Uf+(uQk`zdMt2 zG$QT!E6Q=QoFMWIl(A5oC~_0!acBo75xO(cUq?V^?)NIR<#^P!Q_cs;N`6#izGOcF z={rPTBl7(szfWXy|8iYO`}}p9j{8>lYTEq24N$h)`!UMa`Lv=8+hE+UVBeNEBf*wy zee#{KXQyB1lYioqc`fby{IS56!@l~3Uv$aYwJTd(%Fwir7a8Et3Mk;xgHCQ)-n2qv z+8SEQK}VQ@!PNV7BbjV7=^uj};Vzv_I6`Af!;+@v7LzkwtKIxdmNzxmF0WhIf>T{m zyP#oV(}5O5>lUx5AEH=`>W{jH+NP!O_Wf zW2D+mghfEl{c}g6-=I>zY@rY+1Q*(ZZDr@qf{jOjG|^%WIb{ zY^iN-UYS($_UAuO3o$@Rt-c*qZeu%{QEP_)2&B7vhTM`*Y{QV5l6Tb5IWsU?45y$A zJ{V5!L9rC8ovuW8-^uCw5tKO@5-Kw#oUH84&rqx?nUL;gD6eF4>J3yrUl~0qlhKn@ za%HA;mB4ACTxXn@Vn^Lw3;$pqC#opFw_ zyt7CR*g7iS8?t#>F=>aCF z3#>C%NJSMX6={33GbL1^B(HNaJ^fkY1x6v!MM)iT~5n`y+!QxNRchDXS>wvp_ncJlEc zFBW?>a&s(}^Su`5i+9v1&bl7_X$?VOH|@*BgMEkC zGyQi5?D2Xm#tUj`vZn{Y0n(Y^kIPbNOG`t;*~{D(Y!iFte_@-ieQr)28;S?}E}y-- zhP0>dKSfqRE@%J!cen3+?@qPnJKw>1uO{JeOoB9_*X&LY;1l4xF3J zg%%k>T6>vzu*>n{o~~3%l}D6lAJW>(#DiTcH*HAX@zhS#rW$d-$aIs|UM3#wMZWed znqfCh#eMb$=fO7iUJx_Gwa2@LMf|+b(=*-}$xz2OVuqU}bl4XHOf(1JhNiScTYI zBStD4%`e^25M zYzq)XaQHL&l1r&Z>ftKI)53gsx%CknzT;&ngJjRJmCodLCl}8ofueYBZh>lS6GU{`F-rOex-VFY9JnkJ5cM!a~ z%Q`i`?xMlDZ`ld($v53;Iwj2+a!&{McbJ#m{&xwc$mNJ|UZQ_1j&rEY=WoSKvTOt~ zj-{C#({eKe7i0#D53|n`GBBZ>yvn>IF*)!CX z=d|?>fGE-Fh~Y~fAgJ}y#fpd>)dSe;jTumJKhku2lQEL0YN9R`6=Vs^;X? zw!vxN3DR9nBPnYt)vnfPYe%eYS#(1uSXTATtMp*2Z%yizrgwd;zrV9Brsye^Cfe1d zIf3KnM0*m;dV9d3i|=8^>Z6IMGeCmh<)~dX9F)L%N4I9t1dA9*_WOlVxbAFghxy9b zI`1xYt1ap5fu1_ED^6xme#DT&(F<*Vcn}mK-(K)r+5oXEoI?O+g`M$x$)zX6~L@ znQ?sXXW}e6*Cg=p5MeJfH!s-|t9AOzc<(kiQ?4Tx$gKU|tD<=Po>$*CSfaQkn;oj3w*} z;lVuBD_&qk&4Wo=OwwBl4<_LwmUyRE+~F0;Goc!&c`$zm@iMkb^I-lJBKur;Fq0>s zc`!rhi?2lE;9%&G#52lHhpSXTjgFiX%~N+1s=|DDKwSO6Z(RfvFgBgWz4}PaCAP?qa5ZIRmng^5QD`e;^&^(wuUh!iPd5Q&^ z2lE=Qc&Ar<5TdG6^I+~aqUOPT#fZX#N#-GfCh}`W79s!-=7*p;vL12pU|x#&MU3X= zUXJLf1maHV4{^8#BD&DgJeW5@8Xbs~-i-9$=#14*(}H~DBaf2sU_OrMLZ~zk=3gMKrE~$f z(8iXc)CNk52a|L&>_OqdB)8*#(9X<)^AUX((ZcZ~NvjDS%x-AjWa7L6wtXbM=E3AZ z1RhM5J|0@|U|x;r`vRnJDk)ux<5n~kT~gYdjDrW0S7SXC;K5`-9?Z=Mr{QX99!%aU zN>V(Sw;4(CU~V;%;=%m3krWT+gGN$3m_IO*%Y*qvsEWe5C!?m&Gl=JhEgsB$Q1FgY zJeXt9M&6i;2XiVSMCmCWOma=}UeY|6pN9G`kidhGV3I0)+kMh%h=fg1*asGNy z$>V>FIQ35 zKzAL~%fh%DW(7Dv2PQK8At+uzLSQ29IOkDFFH&+QnR0uT6{vbILqeS8YZNOaOTNjx zV8%?Ao6?2szfzfa^E)S);$|Hd=>0Lu+>9J!3j)lN*_M+_slGKhka|d^x^N0G5f$NT(aMf=Ldnc3H@#-y` zM}G8^pY0m+gG(MrApJ`CYv8{Q&$Z#B@K3>C1yB1G@N{2ca}cg!gWyyTAvAK2q(>y3 zOD^XBCy~_^fo#&*HFmm9mqmTLbNt5YH>S=&8W(sNu$3*=Z|bmZAUVZ`pE8lVj7Bpf z9PPc`l!+18oC1FW{8aeq@NC1oNtwt#T)nsH$m+g7&HL<4OK&bIT7PfX5idXYz@>Bl zw`j{zH+KK$QTI&i|J9Qd`XbL)Y}!0BXVI+i4bNS4MD@+hGq@BVfxagqb0&NZd=vaS z_)YLv!`}}7J@{Sl&%*x^z6hOr0{qGF4e%}SD?Dkte+B<4JQz%zW8ur;YvDbf zA}X%Usp9j7s5swI#TB}knIHgK1PNP(DUKJG=dQ@?OmV#>C z3l--LQE~anTwIlkN{!M`aRw0;MV=oK3^qFZ2@yFfqd02yIx}0(*J_@J$L$rV zM29KqakMb#jAnbYe1$2$6b$kz-2Jh|eXZ+~+GY6)%V(Fz+b$fW1Jk^$cl+XP zxh#iRBbdV0#tT?Q^Zy~Z3jM#Y=~Kf)XmY~LDJMQA;itl(51ubHiWdZMu*iG zAY{H(2yp{7H0!Xs5n(Rm1|3${AY^;^n;+X#f$;q(SB4NbXTxM2R!0z`?;6JGu$oVm zC6M76RcPea>_*z9)XZ{nU20w z+;9jK*Be9NU=;V-7|C~x z5eX3}c>)?oeK1%uIv5-m$;~;fral;KXbc9|v;~7*eItUC%SHs7R|SLH0{4Q&ZAakI zKyD8C-bfPnOkfX=djo%f4dr&>=CZleKE;b{5|QJtxM|cyL?h{*r;I!X56ySBOwX6} zPtYFH`LhIFkEEAK`ZvWsuM6EDDWm)tN$-^Oy*k<9*S5$7w_oHl5ZW@IobC1$Q-&?` z!yB=P^E~YSc!c$#eLse$n?o7- z@0RlXxB|J*A}B|9x7gny>3n;@{5wS^Hxs$g$|Qe{Pkxg2(SEj*?pty`Mt+L6Qy!ucVjo6dAg{)MD(k@Rm;M){YdJfA(8{{~6_J8ZE2EmA+VzVaithpQ3EFZ#itT4&(Ud%9i6uu;m#(`EFnSn|(4r3SyUUz`5CS zw=bQXf_8d(uCJ8oxrO`RG)oW&H);))m03y&b%x|Hsb&e|+Y6p*CPT(SXubRm92TY5 zFba`P#HRB~DWV(iKf?^!?5;BBn37e_Qk(Sfab?QtnjJj5A(+Zc-Q};L9G5u>AWFy5 zB?Keh9l$PCmSry;Jj68Uz0G)Kb&~!xx7sf@ZEEY-XXJ&j!20eSUYg3(T4W< zZ86J%@(%40dkNU{%==QG@V*S2cWAHJyA<}YtWR-bZ`iy;hR5iBw|!W>xz6Ib8I*TO zmUm7K)?&8v_n~QDCf=d#vd%N-)&YA|Ju2l^Ie&0&!aKCJ|w}V^Yh4jQ|w)a zXCAuqJf)S&b4we0UA?U;(Qj`WUbfJks{`j3c&XuYY3*g=3A#e;Jt7yRYP`>y@0Ky` z%fu73kT0s>&QyajwtC^^3tjGfy?X@FwC&5p6ZB=@`7N5J%-IK@y}@~cjJ|A?PcN#`jFT&JVEcnOE{lP+kbd7u1xyxzZWLy z(x!da%<@@FxxRz*1m%mNh?v<9dmR5};C_)?($~Jhd4kHsUM&|Ea8FD7=47xp1$p$p zq%Ke{@@dFVJu4pr-vGG`;V!&99fJmP8Pf<)$F&PR<`O3YZ^jNphwWw}C+)MoEKg9D zC&=PSGCvrqdufpS#QjAbIS-a6=pJm^Gh9Ez<@h;Vxp^`X?|?h#Ez#|?Rt{di%A&h5 zd_7ej!k*rNMBhL{@k9%c&pML9M4~XbxkBO zuJ4R1_8=CCCt`hN(HW77@(Sd&>L@3_P#FyO!=h_nNvYLLn-#TedkwXVp>~fUB^{Wd zwPI+k$B>c^%n-XQdTPYSUu2#9sgaMU{~Uer^8|g(GrL$B-{$DhJV6Svn5@;jUQBr= zmmHTP=k4yhnoZ-t!wegPe;-qvPwhPP}d}EQ5{78UZINhty zEHln~j2XwiA+ppsE&Z{0tbcv14G+AF26|c>@%XDZ%{c3$T>~I~S=NmGH)pH3e8DqI zjT6gK<7BCE@HUzhD{)7tBjX_QQJ;==KrxhP>WG3G$XSOu$3)d=)7Tpa8BcFdZ9>X} zAc_1)`jp3z@gEI)vOO^&FOM}xEE64lhS!yqFPa;0c{TzE^ zS2O_{xo#H|QQjviD_1&tr9t-mXQshPS)STFIQS|DnB!Wz+Z_B-uQoKdKox6E^y(ii z_)u0MPi6;3Sz~@a1!ax@$u7%1^Zz^djI#_s;^_Ayey*5qTy2*t#@q$L&qBS3NrBR| zTruB4nujaq*HGL9ueo9#Vlug6b|SJF-sXzg1v&6R%@y+`;{{uBd;uO@G5?LgaK!}h zs)AfGNAs0Mcsh=O@aZ@P!%aBmggbG}4R69R6#g2HdErNKG+Z%1XDYa2ev2>=ehtT9 zcoaGzH(Y^Zet0>KC1C#>^+FuDISSe%mWP;uW8U zs2ZpVVD>^}n}q=8ZxGq%LI9II0Zjmtk4}D&sWqxzeuwwZ6l*CuA)=H$1Te2c!MYRy z40p^bfdnwKA@K9XB!D>|@kNZ20On&5xEGrQFc%lS%)$QD1Tfqz z`ZbE00OlgE$gSQyMInIsidX!$S9}p1p0ERtu4F6r6T;8Vzzee;&hzJ49ZbaXQ zqM86^Kctf=DFPU7WnM-}5x|Utw2IOPgOf^}f+>jpjCN)gR3Q31q9B0bE^M$!EPy76 z{2+i~+l%3a0EVLr2w+%xA~RIyb|Ct`z^M>QN|)of6-`B#l%A7}g8+sA+>KCx0EPhx zU_OJ8A0pQTFkdy2B7nKwNQwaFP9rG-7;b1+3DiFZ%e>+6X zu7?2TPf+lVQUoyES_<=y4+5CKBPd*gLm)RF|Jb2_M$|(9^RHB()rtUy`2M9ZP68O> z$Wf4`ZaP* zfFb3&Bn)(qfvwZRxEsz6aDWa>WJ)U(bCD33h&#^dfOHBaAzxXDcsGlb=6(Rt!iyMB z@~&W*P`eyZvvRmzNW~4HLe1$>`!C}jAiv5HA3o*}_0TuNx52B1Ap8s3O7}r!*_A&F z9qpL~y^WHmK3$zQE{rkDoRZ^P;nBGTDZDqW-hly#ic1#TyBes!#!18po&S3^;B^R z5EX|~s<@~WmHC&jh&VV8G8ZRBG0%CO&3hFdsa!TldCu2N;nWC~MWw+(mS(tgl+2uo zsNw`ADlV(2;%p7I!#n+?1YMA zs;Ky&#as~_MD-nrRBRa|08F0RU`;zDgQLO8C@sN!l*a`6$8s;%&ni>orK zxJDE6Tn|yjC6pB8Y|AUW4IZg{Y>*T#5Sf`POi^)lN)^|IlM%vkDyNE%J(7!aIaQqA zB^RHKsp^H7whT5p`}t40baB+`b=9aL=p4=Zviv3PySkHyq~CDglBXj}7<`+-tft-p zd|+Z$=ZdC7#QAOWDzxamqVG1Pcb2~-5$m4S(7CoBpSGK&e$wHG1>>`_{3Qqby8>^i z!B3pJW$WO-A4XDfdj$Nv#Dm|)|v zZhTr3Hv>dGC>k4H+_Elg(o!#tstRw6IJGO6^Pk`YB!x*4DNF+S)xmL?G?Bz7vlFmw zy9VJ@gnaUvg0KuBS~Do82hLh?dLXPWL4K?h_%P&5k`Uz;hsTi!u?3y00mb1l0U_;A zL>NJcWs>6XU^a@cbhLeKlVRJZ4W;*U` zgY~)yZMHcm$Tv<-2ZP-r7XvvLZjtkQfHJP?*F@e%85jCik#D1n$8Lko_y+9T91D+& zyhhr;7VWn=6t1Ui*}sFbRsSTEhbrk7`(&os=}$ngmIYJya|LSx_>_HYxV<~Ljbnw((R z`)EzEcbGz;p#|S5C*ZWLrFESK1h;_XLLtx7q1R2C7jA8|x&swZ-Kdfowbljqr}UKk zFi!}%f$%eKL+&;Bz0!w)XRg_ff}YQIbiZ}S+nezDx26Gns;NpP>0_k?I(J5_xk|3k znJ{S`6pnme)x7x;x;2I7##6Y4^e}Sgt>Vc4IztZ|21jmW43}>Uj{FWxvKYEKv29{t z+;DN^6*7jtRUEk)t0U3?;$%78?nC=9+@-joaO69rU6`hn>l1qA7{+Z2hf?aJH_5&w|&sK&cZ>b#gRwE-c%{F z+fzEV4^8_r;m8;J+P7cY*C_2nvZn^Imk~$aDE7vhQ^EqzcK&N@>}A4{_ldo2Vk824 zykAzKeOSt*III8C;>aUX$Xt)z!)#wyG#*cfBQNvWds^DJIpg&m97kRu_RPJz$Jajp z2@i!Muk_h_Zb*BBUJJajltf5 z@my`ri3v_yL;K&~wroBu!@+bHc5S+o0Up_(0TX4U~t)8}hnQ-J2 zeeHR2y0&K>ef9>&ksEsnF)&aOAfS(_SVVdEXS>Fw?$Be9Kq{+uOgX$B^D%0Tk^j3Pwn4w+f9c`v|FN-Cj>h(m1_PD&5#6W*fq^&nm);dG!%PPue6NWwa zWF9LkrvZ-rk%(2StFy1Qx2w0`Z^}~>fX%F})r~cSSc2!&D{?10T+wtt(5muDrjU2!82ZyR!1=G!hi( zj`Sp;$PCp{9xJ%y(<7dI;5Be_MA=1LsQ$CmWT^0pv6YzP5{ob%E$;2_yab;{!15*e z5?5!boL?cZ?nPbE_PBGQ#&|2C1xWACHm_=NG`=7f>si@5(9;(4rD-_p`q+}5b^H(7 z=q~3v;e{>^6 z9k$~C3szMoS=iz~q_Y(WbG1MaooZKWw6!DFwk*1#vwNU>g(4wRdYo-*Qm-_ed;2@v z@DGahu+l`kx|(%M&WZLUmi6}Zws!RQcE{?Yi7co;3+hkA`qgcs?m2^jHyj5|fW*gE z#^L~+Ds21$yq3Jsx})6<9JsA5p|d;M9;=J?alzYUHg!1W!$1JB%07>lguvO=?P~w? zX!-*Uo0tED17b-9wNAn5-}RPd2KD<_r?PcGF~wyu{Z3Bt=_5zt1$t3#U`c6rQBLv5k*AD26^d{f z(#D0ci>Wm5hs&4{V#4n)L)sCg0gqg=>B@k!_p;(8rOfg&vm9B9;-?j3<$EVESJ{U@-k}B2G;IXui`3^CM${@M$;(!)M}{6K=;bH~di? zL*bio%nN@XM}z6-2aAd6e-2?F%#Th7!zFlwo*OR5F+bdZV@bFTN5S;-Q@gK8A+RQe>0fIE zV)}{QvM~MEL(IYNV1nsC4p9r!f2vo!z=#^tzaFB6>HmsXBp}90-Qg7pJW>tRnEu~E zv@rdDg=k^=lP91t{ULO+h3T({Xk+^MfoTt>pPMXMm%{Y(mpmm9(_aC>VER`fPN0** z^lyUDLjjona}lZ%#PmlY5Fe&6{rm!&h3Q`cJ%Pi5>F@E1AA@LN`mgbdcX~yBj$75K zG5x!Zs4@Mo7}3J?6K4oaKR4_eOn*J%g6UTuw;rJ}{X}&+r9Z?WJ*NL=q#I2CHxM_N z{=1U#qSE^jH<A%fL3e&&UND9;cZ6hg6|AR(SnEoFa$;I@45h{b}=jYu$ znEriGBr*NmmBkxVVfv>clEn1SgTQ;q#q{$F^}zHqAg2Efgf6E4NM!e6`h!pb)6b8& z3#NY-q6X7{CgNU9{~D#SF#Sa3c`^O`$h~0try(kser}yHnEpkG3#OmnhxcIm@1_E+ zR+#<=A#jc(rvE1<4ov?Z69=aMWyCE^|7%9nnEp2*TA2P37=4teG5w>AXkq&2LMNF1 zPcd3NlHWlWOh0EpgX!nz=)IVJevLl=XbaPCI>*KIpNA|4)Bib)``5wW4}T_ho*PX6 zcM+$42SVzPZ^Ful3JQ^PY=HoOlj4k9Ba$fyi^InB$E0i@LRF7ZP)K6>Lq)p2BM>qn zJ*NLQ$+b0^YcNdz$yg!=+AU0f3luJE8? zVDc0`oeJXAiRb_B+ULGEWy!e5>Y;0fZ-YONRuLN9y=s^xUxhf+E8yu&ow^R(Dq5}b z7#@M~SNz`{Goa_<#kOsiWifx*w+qvcQ&P|oZd4<#pBu!usp}Z{vG7D~jECpOqRH@6 z;7@>`4u3G1{zHZ5XTNs;=TY}e>;Ki06Z#_0S8UomGH21O@D0yhbVT*d%`>>X9DzRP zmmz1u*T6TylQL=({MGQc!xOi@3!XS_B0h?61Dyc>ZejX4zVbe?F#QIqZDIO3Ml%F3x^m4)f&)JTE~2|6HkNb=jxi7ElfX`rc_y&eh&9kS(tu~^;B7y zeh#HnS(tuKdQ@2eeoo?S%d7B6wE+B_oSDLT5NB)w_&K7|j0NE5v_q8z;O82ODo!oZ zV~;_kYBRj)MCmaLz|SQob6Eg>&RJAh0DeBBP-Ox5Id@WJ0r;PXNEPQxsgaWiRThAs zvj|ldfS>Cesw@D%TJ}L@0rNt=|?GrfrAO0f!FaNE9i`7ompIe z7T13WIZD&KXq~kBNsQUu?5cf;dMtmVAE#&~Onb{tC zm^SZl#`XK((`RA*hYPGf<;tX@`hTAm)z2rh6R?1Eskl{}U{4l-(ia z6=of_cZ&QP><|BQ_f{x|4Oa2#_jz@Kaqx(5!JYpLh9G{qo z={GpGt(1Z3H#oGfQU<2q;AFlI`^5B{{`#@VeEmna8to^h-}LV_lr8(WQnu=!gfdVi z-D022G&}vr5Nvt7PksRHwbMW0OKNC0`DicnC)gMSp}q@2GE}= zt83PS=TFIQaQQwszm+fD{#jG%9~RAToxj>ID!<4deqjDdm9wfeE}z)^NThPkNmX-a zSDsuoClZ-kQ3Xv^h0<44%$oyUNPC0h_et7JCzr+f zTdFdztY2&k=wGXYl)9n5^Zm;(n1Ot><6FoNp%lewD91&(GBMtfSA~;P`!GFChko zYcCUi|8{8~PEWbB2>|!H%rhW$WlW-@)XUNKVOTPe_rrX|+B?cOZN46|}AAP`o#|S+8DU08Czh9rl?-RS>LM~2?4Cia{ z0NoD*nm?>eS^Rz$zkjIk`!)waJeu&cJ17DOO(XHPus8^d0ErQLl8gn~es^b^u3d|* zV2c3Cp1c)FMVn6%-QZ<4h+EtipoM@%)I&pr<|7f*5Un7WFv?^D6fp*n{=N=KW1K7y zq<%P^+!CzKR;+au?J9>-Xc7vZ9SAQJ_XQ7N!H9zq04ne!RFqe+EwQe6Oi@cvrwgO+pd(lqD^ORTlNAYTe3^U6&IhQg6zM=uB3-l_@kxn_@GRDgOy*L!J(B z&&M`1viC%eofJt#{NNEWd^K-J#=Lj#hHrEX(qPZu37duZ6eE z4usVrSu))_`Q=SbKqvRK16jLb?T7HuR|j8!cIx<|M}G=dz2kDaVmk@vQBAjrQq@Fk%-#_ncwTUMz zLJC{0ttKfeQp@==ytgpYVM zHGTcP?Ray+Xf%;!w8%1AGIiA2sdo4=G)Nf zbu6i(=S1V0TQeTR?_h0Sotv$$Bi4FhJr*gTx@i+$50%%O;BrJb6KB>dCjS);^)2;F zni^}H>lU{(u3XW)qWRp$g-z8J6A#hO)66?8-PXGMD-TVhvWym4MvFsC-;$Zp!n-!j z@>w{Anri|-BuxgtM3&E@`0`7Oueh|>aVC@pjtqP1WzBj(K5z^vLj8@PkO?v-mZ_KzJXH!Eg~eAvZi7$NcbO981D$ za1=g^k0A;^i>nZj&*D0SK0XWXr}gq#bmnUw0^zgR1kvKN_$MQ3K8x=|wD>HZfN1eq z?D2~GAQBBHd=@#lf|fYeD^_^LI%iC;78S1m*TS^q*DpxvzQLS@L8-x zJjrKq2?WDu(S)L^1o^M%kYyDk79R=q)}ABJ(WqBM>bG>?KL%QL! zxEXQ7XYtR;cv0zh5I1}lQ_u@8pT$2RWpF-=9mpYk7XOZ@%V+W5kX$~CFwDAq7G$?r zh0`AK!QiA4r+^4bl3@s+#V-&ApT%h%ROaqwCE(!{}M@jJx% zzjzcb5GafG8Bz0DybjUgvj|{(vG^>CjA-#$%z{q%EI!6)@yO305IzgefQHZFI1El+ zK8s4FvG^=Z=eT?p&B$W-EH-1@zZ(8K@JoT3FnktwAx`~$2&q4Q8TRW?K_POcEi_w# zGmh*QcEJPTvuKgBA3~_=F$xMvK8rUcR{<6=Oi0gXaU)XM4)R*)T!Zmh%*N)zz+)Dl z#W_&8d=?i#^7C0lSw#3OVvHxbB``Lq9ayMYIgAQOP35!Ly#CAI`{hO3cGn}l8NLmE zrLyGmS$tZRb@?k)L!mQ#7d9sa>+#nKl@s{ZU7wwSkc$`QNmrKn{AJ$>J_~L}<_1n~ z!sIVf0Mxh@1d*IT!|68=>s2l$g`7AiT@;fI)d4(#A z;(`+kRTjksmp)VxnkNO-N)RfG;(`k@=Hg?GM z`6rDmpT)ucut2(v!XR>}Y_)eiWxP}{7}heM+(#Mp8BFR}o}VTEn(3%-t+eNVDdTm9!JLlr$%e~f zx8&!lpIjCOQ~D#ycw=BNp?6TmPe2CKc>`r|Sr|;_=P2Wm+hE3SMW2w%!t~d_i(Df0 zHKG0FvM~L-nX+a7%apD9C!su4Nw?T1GtEwa2!bu&>65>W_S)(ES;v<7RA|eGA(w@B zJ4C)pxv%KXFfS0vB=@Mf=Y z9Pn4no=1WTaYOT0RL&-=MI_?#S2RU|J(KSZ#jxKo=I5`{B77DmRf z=+Ga_M7Wj~Y`RP6xR#q2uHtJ_pEGj>?P0iZUN{xMm@&^`%40DDI9RsR?+%v7;xyRv zjDceKV0kR+VNZsCPZJGK#6TauZx&k@_wz8AIn|UkJQi2F?JKbjT09KzDv!lg(mqUs z>Do6WkHvU7skh2wu|+y=o7k%vt$#%zPXv}MDbDJ@v^*AOjbN?^c_(b=zX!#hI^V9& zc*1{u%^JhlBku&3Vm8j)*MEcaSTw4CQtRGL<#n)|i}7G^9t*>lVEz{ZL)sgh$HMSV znDb4;JK;Ou!Fepslk@#N)=PASsqOPz62t3&55B4VxE|-!u3V(zJiI7x6Ah2WbrX|G zCX&`(CLW6gJ|2rd4%1#H9*fXe-3)VG{#9Oel1BjlYjkPbmx;&XY+rlw%C!;e=(9IC zkA<<95Cg-tmx;&XF=-!8Pq|ADq#$Vq$}$HIvq@U|cr&?~(oco99->F%$+3*QoSdeke_1_P=OwC3eq?h3c&#*-oQAxVIX*F#Bd+dI2LIf3!J>`+8W>% zw@yLQ;>5;DJv|;}0+&v?z{KHHG)}@L000)eDhQ5695@9AAwVqRs{H-pSR{Ohh`Hfy zh@3ym^c<--7ygFvEE0CznZR1O6(o9NpGLRn{QE+;a1V+!$VD3DA`Nnp2DxYp-;@Tq z=nYwG8=G!e*A?mQXjT)$d2OAojX-=_)X`kq6=@1}cM}S#sTV(fbpX_%Ee&#!2DxaB zbc9yam3Fo@_OwL0+RGNc+3y)P=YKg--1ut>dElUn^k#LHd#=1yjUD)0zyhU&f;6C0y ztP6f(nE>nJE{OSCdorwxZzC@b>*9F`=s@MGv2DO7Fq>ExPa?4m(TR2OGCf4XZAQ)$ z*cz;hpEDO&7cYX^Ie)^|lf$L8eL1tS4dh&jZC*|Xwt{tW7m~ob_$LrzU3>}Dg>~_7 zN>u32%b@cee4PXD3uuf2!MgZ3Sb91YW+_ML{f5<87e4{(z`A$=EStZ)pFZR7a!6pQzAn5?NxHO)w;_V#bI5%1_9erSQlgQ>$hTv zb@3iB2J2!S(ow97kAN{)7p_ysOT^xv}v-7`)w86Sy2ga~2_9G`X*2RCJgkW7fizGb}Gp|LTjPyZK z4C`V%xER(2JHv%_@f`I`&7uqCZ;%Am#Va6!b-@qp1?yrIl7e-?tBYV=l(ImTkA9S+ z>`TDpEe6GXxw_IYqeOpN}2kz*JZlGm(g5T`U5_?u%hv z&@~rW7bL{Gh@xAJ=274hnJ%o0p%4M*D)hmO(kOE`Daxz`FRYNdxQR zHKchi3f6_67bCJ7>w?}54y=oF42xp~V2p8wbzogAgiNq5b}*SccqfQpUGNTQur4Zb zaf-*fSga%ttP9gQF{}$>F&V6jf5vrx7vlF2*T5^oU|l?pH03`4rF`sKeA7b#nP7{P z2|F08C?cGxcqUjEJyQ2pP}PnRkcnbl6u{YomW%;qMq;dsuS=$Q z0X29OoO9uLTjhuh9jc{R{y?xUewq8V?@mEoPF|?X=yuknZuFE2EMu@aOc{O%$*;c( zR0;hR8q0X`-J(x@@1=F)5~;q-#Sl|poa0DZFxkpQ9ENx{ur9d&ryjoMS3^I&Wpf(q z!m|Dwm$u&^+PG|99S3TWOJZc@J_^14)_aBt0>~# zModyqLTm+5M7%SylmqL6vrvj0SQosFQRKk7;A0C#4y+5_PAPI=UHlp>MZASdi@dK; z|@pU0C|;PDg%Gd;!Z5^Ewl z#ff`yGiFgvK1d#ON`rebm^|tnfIbGB^&#WjhM@@2$)9wU{}Fl2fR0H0$H`-AXK)<+ zFp{_vr_d(DgUrX2+4$%_Kpu4s?nTJOe}%lmUQY0xxECv3{O8D{J>$bVL)tey_tlAe zF@-!HmyM6=MXc}O4erHZu|JdL@yNaeuR<938k)El#)tH$Td<~x<58Mmm!}$n# z;9eLXGtP{ixEKE=yurO#5Br_C7hfmu(0_ouqx}h}4^cEMaq-M^=Km6mlmD@cKLUH5 z`S-f=!!G_^hGUO#~O&k#7JDnz+AYXG2Dd{eQ#^3 z{>>s}xI5up4wP}mI2kji^~1@i>BXw9k?wHMrukR}@a@IP7&=v7P7F?l;d#kte5*Ja z2WRWImTwj(qgrRG~QHc9A zgQg+9@vK|PQT#j zzl1m$L8)Yp$CCrJkIR52!pSIc={qd;-JA6IrpC!A7ky^z9&y>{-r>{XWK_8H9X+kS z)HoTHuKj(kzdqM^NsW^+SM(X2j9>NF7dK>1hm-Li^1kzG>8MSF8jlYN^(Di}7%x8y zJtha_hXd4?3@77x!2vOI*N>0W#@&zcB11i)eaUb#X1eToVRHP=f^+Fhjgw*Ysgn_v z2dXa_PR4y=pTWtv=7KY@F9A-*3!<-B)O=!q`jX*f3<_#R1}Ed80qRSJld<(Ytw<{vr!-DR8Yd%-lhH=71p!)kyAcx7I2nl$ zILtAE^vB1?8RM?b`1eL*J6oS zcO)ow8zScijBh3U4dVbL?7B0-0dOmbJ9L8Fo5lh7JHr8R4~jGnKpF=ijRTOz0Z8Kj zbj@!|;{aUI5vDJDC8l$jbgzu`C>;1ot0mmk-Gj+rdr0~HcZcwXzB$IXHg?yAfQx`a zGDo){S{Z5zh1ZAh%b2O`l-9*`IMiR&*sVT&vK&oBWicxjw1%2)SQzeZT-yft3P;)a zjF@M=HGb;C74t7$(6FLrVZ*|ub+z;A7c6P0UAdxuMg7&ai|VS%$DeiA=$N&!kJ8>5 zqb%co|IRd*;?q21h@%J6H~?=RTH>z}2O!}THH`z1#sN6HH~{9;0`D@su<+Glq5+%>Jgg}-8cYlzyG^Xh96s%BQh92eaaZk2dJ9YpN~EJ?O*?D z3i6C=^4Y=x7z!Ks0UAH@qAx9ft%4(hH5!p0E(H9rZ9O`Cljojw zUwg!Nbomz!j(9P1+$w_szxVQB!1_>I1dDW*)h%3>#sNs<0Gxeq_Wp15-&KzG zX&itQ*NfinuCj1PQ(JFysH{2M-PzdF)CxSAR3CSxaRA;eH~kMP@pDo+tWbZ~#=6B?dO(l`KmuAv?+(JvWq6$ilh*cluE;{!QR8~{_^-~gB( zCJYXM@mVxD0Eh8DiNW9i7#~D~17Lgz4Gw_e4Gw^@*WdscpFV>FV0eQAV0`op4uIhe z4gf*47z_@8@xe1V0EWL2Wr!=VPs$q{0OMn4Z~%;toWTJwK5hmF!1$;c9021(V{iaW ze;FKr6EdqbH~^-94Gw_Oe*lAlH~^;oG!8%m-07FBSXkGP@(z&%2O#0)Dgm}ZYTe0k z021q$@=0(264x=#{4N{-ci}|e+nTC>vp4|mPWW5H0hlqXygbOTW>9n>hC4!yUGsap zI^KR9fF0t$X>b4xPd5O@w~7O>WaeAL0eFxT1%$VX15hGfi$SH$vJT_AO25YKurJP` zQSwiR1F%FY;q|!+r$paQ=o6DAM-%ZAPl^LjEBg4ezY4&Ep?$lc&$J;qiWoopWHLz4be z`#sPT9wZGT* z*XP>b)Hnc-iavt_(A8gG+#xv~4#4I7DF)$cO)Q%~!NiAz`jX)Q+$Z`B4!|`7)Rzng zpj~hZ3=Y6(@oO)~c#-LELi>{80DPMuVvf*J;$U>rr7txOfYE1MyauW-84f_D^q0W_ zcOMnB=A^M7CH^)pG*#0KN0r;rsGdKYA2dFO@4nXz94Uw)JAXb6pf{3ni@Ez#w0`OK+Jr01^sGdaa zp?7X%`^cXJk1_=XR^Jbe?1;DEzDE{VPrY&Tyxk{PJi6;MK*khl(rPpPDTh^xU|MgaSUG{dzz&pdwEdMI~u@g;E)Bf0Lf9$j9kL}Cy znxA;zPJir*v_E#*A3N=jjb9x98vU_-KCaq2j7zwt*JbD8v*~r&)9bQx<@NNs?D*|& zv_0q&MQooUzAF^*&s8LYd1K5n>}P3R_DN^%kL~kanq^so2DUD{@u1_cslWQ_%o6%z z&wk%a-&hF#FX@jx)Vu6I&$d4{KOlN1*JbBEC-TYuYw*YR;|@9&aSmb)Vgq6q;vI-P z5WkH0ZN#S#k0Jg6aS-k|qY=3>)B;4_io=MT5kG?XdBkrZ@@xC_y6jO;=LGArCvcH| zo0e)Hn2UDWAKSR0r`KiY=M3hP1}De|~D13Td_Ow6tJOA=N!JF21*zefsJlnmg zyR1QfY+5$2v$O3i{;JXcjs82_FLj%`dqVAHHQ}{g_yVp>p$PMvzi#}nlU|oSC4Pf* zNG0&cPV}Na?T`Jg@yAYhc>4Qemn3k@~jF#;?lwVjJH0VjDjx zu{cC)&jeg^cZQ7rJJ~i`J_U{rG@0`~%|L#|qQp3%=A zyEYQ;?v5mI#>RR6gV+A=Pk4@1mj-T#%vjC`+aMysNW@imp_(kLUZ8Vo^lzo`Y-Vu9WU*np4No^;)kWkN)+9FK}_01orRX-yg_)$6{#)pLZlKG1lP0*E>ORYBXuXU(Qs4tnn z`1N$aMKIUthblC`1mi`zBB8!y{^IkceyvtxeY8pvG2+sf+F$&mqVJ&e-*W@hm&{-M z%4ymVoUST-@ja4=k>vIz@E5;N^c73}*9NFBnZNjdioTEILd-CxS`p_ap?%5x#hc(S z&0y?%V3Fn>TbI7n{^Hw2-w{!882Wg9c@pD=^A-e`zSREWt#frHgRH$zPQ}1g(d$*5 zJ`PuXLhIH_h0jCzAjSv_^A=gY%CfeCcCN83-cvXYF=O&tq!~FqYeozro@q$tcZ?U0 zm%-7s(dbK3ZeDM5I8q;pw5^S7R7I2cC##pwOBXIp<)5r{Iok_@VLv$hq0{TeO9v%6 z9t-|j{l&Yz)?VD}m2Y{#?t5^}^{vX+-05GAUB6qGVSdRzrkQW$wT&@;9e{uSe|NudVa!KGope{mNB7 z__q7uKcBJtjoawBa7ee_)GRqpf2 z3$?Gk^1FXe%`+>wX-4c{E?^dBZze$zDS}rE`du2a0wspH%d@<;T4? za0k%VU@d=6@uTiLnhAdNuI1xK?_Tb;`c_h}(e(%K@cVx6J?Fkx&>s6DAN{`V`tDPG z*H1fj#2ZlU9r2D*v=8!^Raw>>^j+V&-^t(R;FM|7TOH^jxQSVr#W6fL9k!dL%uJ)DgNBg#{WPjpueC6|U zyqx9!>H5}v$&UT=u$%T#2m9CP;XbF*;mkwdp&#^EN~Lcn?0e2T2B`Y_*x#Ha|{6@T))9KXSVb42s1#PZ!~QU5N8`0nXp~yI+sY+x^Q4|K3Ji3f+F+gH~(n z>n{G3llQciC?0M8Fj~h7d=UFr(AgDg3U`Mi9Z|@KmbOS^PYliizzZqiE>wP7sKu-& zx*!tiY7Tca_JmwIy29&PPg|%b(pitG798r5>RB7<>4~(Tu2d8a!dOGR48ie8ZnC>j zVw>Hi5*h6-lf-Hidm8~kjHdo3vR}(z(+?XNgiRnRRgt`;}M`~~n z2gZi!RX~M6$F!i{y#eV+(i4*i^dZ_foCc&T;ka{ZQU`EAsuCY+r!E}k0clD!9AbLn z`uk0yskpoR^lFlHdS%S6X~Af(pI%+UeveZY>-f`aOWgHw>P+9CURk2vk5kniYV0t_ zvBWuUFNpO3Kxkq+Ktvij^pk>R!Re*tGEAGpEiFcq<0KNqnrJ&xI?8h&oDEl^0Y~3E zn`V}2yD~}RROe{j0OrJ+llIqjH8vY-OQN}GAi5isIGfkCHQ+msb*3OM5GA;VlsH=8 z{!Ix+)lG?Sy)ii1bYJx5pK@gblO4V7OL0xo4#igeEZR>2NMNzP7ie1$UChrq+?6;`CT2LM-M z!HUivOg6f$mJn7ba8!cII@B;mNwK++jQQ3~gGu^I)*fG>jB#pE1Fj+E;QEV=j^v7q@vfyDu>^58q6r4exc_fw`sa^3 zSOb%SWhm!dVkuSu29cWjs&Ck+G5=ex7G7ivi~ZpCrpF|KwT z+ayI(imNMTR+rD6ZLP1IPTE{C(^@~RlF6?3wp7f-rgFNqUJ4;s6}~*a5?Cv2RgX7g z%W-y$#|ym66C1#1}JSYmY>FTH7|&H8r+{BxnAL6*X4Fe7u>KLQB_m z;GOmro%jVk)QuZ;Yq-0_r_wQ-L)iGiT3bk@exwRY2AZby+>Cczr}` z!i`jvS>a|&{kVrs2=_yE!eM5Bdw(}HE{G6-l6T|z_;Kw9{BjrWZp5~wt#Ms9?x#IS zcZG1~t`9XMxwyBZsTM!#Ex4>c+#a&lH@5YLgt=0sQDf%xh90Xe0;o*2p^hFD?&khW zS=ATRKCKdEbz7m%NK>oiFH&j#>et=W74GbbbfN9FG|(xE+Qm7873yeQ+Xf>OPBhSC zuBivELguK|gmB-t+8fQm-q6+9S!Z!uPa8vBX@svd!dDvMD~<5=w}S4P}`Ca-_Po_5}W5HN3IdIHg>PToUbd~+#Kpyipyt+*Wtx@KEvg@|MUBsdS=g{}X^6}Q$_ST76TN<6&zB5Ky z#!={Dy?;G_~%!ai{@QYV_n|c*wu3re|SIZ_Qp(cSRD07JL~2} zEpb?#>-h8cgy$Hj{sx4MSQ+u;jx2Q%x5w<23hXh-JwBah)@gGFsSfMx4gMa^WT#_ckqRS zJ%jKi+C*z5Tf0DxQbm6D zph^_ZItPWlxfB4CA|JUI;Zy9v#YkK{crawyK6`0?d$wu8vT{n0SCoUbCiCrI-^vVs zwCN$rlo+4qvH<#q>Nb?6!?fi=^KpnQYrNm`Wbo)r2Q#66F;%D-g$9{I=jj?Wf(LQpVEYRE zNOJykt0+ew2TDu&Yhn{h+ob+^k~7(~gN}O|9ifMIK#jsYYqAWr4p3W0J-#Bus9^AX z7#n_-Xxjh_H2wz;u)uxD3-}i2Wkgtdf|dDm(0dSlHMVW}zr$?LjJ&{ik=TalnTbLk zE9+xO|0kl|sKEkxF|o7g!1e;7H)rtgKr#c_RAqZ%YrvnGQ%IY0cp^E{cHQ`mZP3b3cXoJwp1IrNsx%W1{7 z$jZ6^*&jqQW9;C&K{9>0HoX9=?NPqG44$Uk$3l$Am3RR^D!V3-Sp@YE1SW%N z#;fX48Qjgl46r}JaU2y;>}68VZUXBKtdyE|Gg)iMel%2KkM!nc&^*X8AHi3eY-l7K z`mSMe(9n;;u%VHDrTKU~8?BeAa-%gh`$rUh1((H<$|`Hf|Dv^kUFgrt_?2!quoIeT zccHHEuVC3&VU|+&KZYHoSbiFI8*>LMHURBAF?`SJJYQ^><`6$_WWO0t*_mWjvlVay= z5d>^2YZf|Vo?&L!1o9fe1aL63=B<MZ3a&qc=9z+6P;!q&`xL{(M&B2@n9;l{}1U8D0yD~b?5~yckG!^Xbm6yKgjX>d>=;U zIrfN8gN)$mV)-~uv%ZWZfuJ&*3JWu@9{DFEk3*DsEzB4>5heUklzE+JLSW=VaOaX+ z?U|50@=|aU$-UPzAY5jtm=(mS7!0*{uo5r zIlgDnlAp&kkTWVauE#;Z5tUPfGkz%;4$Pd%dTT&RE>CvZg{j5t1Rn zb4l`s6pfq;%FFPO(cG8$h8qLxt*q6^ml0(R$~#LCfRFv3q$cSQAY3=mS=J7;4s1%^kKqe!G~U6peq}X~KEL zQTPE>-SK@ibKYHG4@cRFC~BQ=zevHIJasU%O&iBBq#5kUGid7w+8UK@)12gXTP3E_ z$!O&fXw?J#qw;Juzf8K*)+AHOrwn1swWwUGD<^Mtvc1yG3$00}u9;NZk-MRzlRMaG zC)Z*5@FB95^)SlrWm%u^Q6vZLW7^9j>-!-#Ud|}2g(%5jo}8P7Zxh-lv;>nPhABeL z6ReiTwoB^fEnyY3r6LBZ3Y6KhHZaq;J*h7@*gM3<#F?+YOrcHWF)%G0DdmBLVQk@u zS&#ku?T-;N^Og^N=uf|U-;y^zwtd^+t$$iwFzbjv(>v}Lk3L-U_`kgN)Gw}nc>7Ow z{cp`v)AEP@@{Lao9e3xrc?&P#W5O}SlZZYTP=HvBI31CFP>;xc??K#(csJs`hBKw+F^D)0kr#~f5lav+K%@=-w0!*3MXz;T{A%YX-nZ(GF%O(5 zdp7s^PYr(hf&AYe`PISecHg`E+NZ9W`O4M}MY)glHr?=4Y3tG9n>_cdV}G1&ywTTj zu!f*x#v{%^C%dy5MWga^O&UGl_wXB@zGaAoO)5jhec7zc^5^Tj){oV8j5)R z6%i+(6md2xx_Dwy#7nt|ILC(6`VAtC=M-M*bMDL>PE#S`tXk@D!b3HDjFZBg6;i~> zqKNp2LlKXXi2f5SMcWWX#91muoVXT)B5>$X#3u%0rKsopQbc?q!cu%kA{BYeDdId= zO1%JrkKHbGjPL@S_e@81z}Nqpqyd0Cft#@V5WqJVfa|Pe|`)i*P> zWcg+?mMq^)wB(M{Pyg@GMILJjJIwxLZVtA1pisMN59~9@cj#9~CqSX{kG^@z55%$$Fp1Onum({r-GU z`3V28jFC{X8IT_xeTl{`+WXo3kaFGSA-VIy)#n9%@fd0!eKH#r`s*;R5 z{9(`!+YkBAe+ad{<)8d0D%|+e690@E@Ry?K9Vm)C=*aMHfNF2nrT&t@zn~&Ceb^54 z_|JdIe_r5z7CCPVx49X&qwY%?Tm3VjA?H&6C?rd7`o#1oXqzkgTGi-c2vnF7r=#+1~)kKf?U?LRE%$ z<3qJIC$Y0@Us7GlVc*kw=jq+RGpTEyjZ2Kn-!jsV}{wX9c4f1x{{wdzPhkW3? zPg$4xhYqqm1(@Psg2UhhkVZ4 zK&$QreINAP4SF-^R?u5OTSdMK^hUh2tk-lkpUqgFGy6`+XKT88IwXV>s?>H!)VQP*EPrTPY$PWtL3(DiiPf~dNc7kp} z{ti&q-z>CQXg%l_$oZuV^Q%E`1?AhnanQrJfuL1IlAkBkC-fu+5AFFiD4sTIj%!+V z1QeK$HP32V^)x8v+%->XT6G8%&mA=fHLcnYIt=_iO{?~R4h4U|rd7K@F{iKLn>x^{ zouGJ`Rl~OkpjF#JX+PiS;muG@pQcrtLAgJzpm@7j)2wOLb)e(GuhO)t7L@gufa1ZY zW}&84vq8Ck(?Q$tU#{uuDOz523g-^%@ogjCPSu>ywCWfr%OBBn^1AXj-~3qJWZ=u?>uyU z5VRMRa+JlP&^#&hlTAl4e8z^2OG2!1AL zC+G~&R?z97C}T|n<$eQfB)1l{0+j8dt=wwRGElZ(3d;7Ug0lT7ph3{dpoO55K=VM6 zr|g&r3f7t+6n&n19OK{$(8Hi;EB6rSC7=gD(MB%E^M#-suQ&#|J3#9|IbK(SZUem> zv=ej%Xe;P)&^4gAzUFdVUIw}Z6vr&L8uU6)j>Bc3C7_pr20HZ2Xq1GE>J*X=I#WY z54r<%9_V&Zya>+S23if;2g-ik2pRzG1bq)^D`*Mm8c>*~j?=}UwcsxTg)OSzK!`z> zdkaoJl*{N9I!9=Q(AUu@^G^zWMCiW?trNOTXtq$F&?mBV{ewbb3(t=X*r@adg&q*P zQ)r*iHA1U}28DvC`d8qjrF|YxUV+C`6!dv7s$S^v)YN)BYnnZtwoZ?y&)#ZhdWuUj zJ@uleX>ojQ3uz?YY-`zt`v8wROV1M91z~_BBa5(U60DF~nI16@W9mn=$)+uba4Z0Ht z0%07^tXy=I2{X}ePX2aWFn_i>Lvd}%(fOw!XSfl~Fuz*z zFT?RBzeM=2NqYx%aqAx1gZx^_&qSK`ye|2_XZz53K=Q9*dnmI?`1NAX8sYgN7xP<% zFO~K?h2IFud{TxA(bp$De^O-rHsPm;zU{&f5q&#^zZ#U~cM3mD^z9P9K=zmOHikQd z=e&;LC&Hf;{%YaP`?C*GA8rWd2h00W$H}kD2JbjN572(-DukS&kUVZoLE$fku3V(I z=jnX@RG*7JHh94&xqq->qm=(S``^LeAp38|M9rl-^4s9^uFcMC_3jOKiKLp)Q{#w}QWu7_dBk9KBPG9t#j?)CRh6aSBxufemjF&6{fh_ll3*0UO8`NLu|Q> z1TPphT#WKYTu?KwuFg?6J;^J^B>omn+>`H~e2Q&!T)#(m@x7}ftE zo_-Is+LbFDV8s zz2A+iDkIV|E4JvxUexK}GG7#}ZEU(>U00;HLqn5Y(iIAI40sP5e#Hs9NZM#oKpx82 zdW|h<{FqN)OMtX^c1fj*uQhJbq6 zp?&dE+2!i7`Gny}RbKCXZKOL)s1JQ{=d zS>u>V4GQLmJDQ_xTig2fQn)e#p#}S(xKR7r5FF8)OWPyOy={={E)KPK_H1fsQeb2a z4GjwxZ`Mk>(HO#B8Ul|qi zy2oo~1HIv+Qhha2rH$@r!8oZZs4miuCW{+Vdz_x$16KR}rgY+Uxvi!w8+Q*py+iF~ zK+!vWsdyjT)096$58~BUTTgrEoWy-!Iz3s&v}75T$ucUEWz10)%8L)V+x&k*UHWEs<<8Hqb* zrZy*aDFCjeINM9Ljv1y*{8?K%y?=(bd0PJr-K&)|v{A|OE0SgCdei$EB7M|9L$^0A znvuAVrfYLjm#Rpet#wQ@rn#<+r8A;A?%s=LIIfSS)1p#W@yco1)@1n=$ug$J-%{$h zpjD;PRhjsH;ktc>`Qy1k*&JAvq!XRWq`ef)iSD)>+Gs|?BRDN}cBS6Yiqxf4cK`ce zsZ>sCbA`!q+uT1xhGVjf$_jmOljT=1gU?!}x?p*dmS-f(m>$hY+>NQTE6cTcsY_Lq z^MMxY@m0Jt1~o{LW;3kRp_oIUbh$?$lU$loK?m-Z|%&~^BZu`mMl z;gyKhGe`Z-%O73(C^rG?WZ}4Bo+kqLI($aYPvoV--FTni4Akum(3f%@z5`MrD3v<# zUJ9=utk+?mTNjH!AE%>In*73f_4A^vbwnzeuH7#Bvhm}m^F4^EA(P&u>+tb+e}-C3 zEWYQbeFe~G+K?QfJRVS<%$tv2`me%-ad zYy0bqlbChsaFJ0)L0{ZDcMpla|HFHChU?>MD^c8#G5V6NbN3~D+`_=`N*Jyhqp4$? zP+zij?p~CE{43G->9Gz?I+;*kvUTqMYq+lTkPO~C#%X>(#tX0W2nqEiTj%a0E_>c{ zfmY(!y7Z-9=g#Q6Ula^fA4d(VxR39JL9M7-6YIq@u`j_ocQ=c^V$pZO6iLKL!u?IQ z&fRB4AMp?vRt!)dUXUr3?)@D(QR^}G{YQo79b1=usn@xy7Jb#C-~{yX`f?KEMHIR8 zrC#T*PxLL6!B&oscNl#5ct(bJoWAprr%y>;p;Y*6l;<}jEKFJqz6`VgA9mag138VU zMP%R*Wn>q#Uzm5MfzzWBM7HNxPcHf~ztNYZTzZ|muF#d?=1|1hPeCxQ{xryhYMs9X z`Im)y8r!HNNk7NDQ&)4qHrA2zU>!N@u0JoZo_ZPU z$eqMGa`-*-zUs|-EwJh}eJdLg(QS7_uGV=AV2!rpvUZz|^bxOx_2LS!UYuTQ&D4G5 zb_?rZ%||=)unyK^yST2ES;wgrh^3uee<t0g;}-&*KZKe};Qx~#W{>tCpEioj~xgl{T<=B}3p z(enVTFvfMifW#bIj!W64ej{(btZ`!)i#_PUtK{(6Yzi5dq{mup(KrMZF*^v z?yKb!9kKCQ);p1&y8DRdXZNi=8aEvNjA9`uS=F zG5joVEx1w@b_!x?{G5NK<}55=x*qrGm1?0gzVB`7?ZOYWJ#Cv-hMGd*^$^9ZQg&M{ z;jZo;m2`Hf{`JIs@Nr3vN%8(2ZcHx%kzNGiZ*LI@$75}JiG@&G1i#Ui)h%2Wb5s`> z{`3+HxX32&o)icN=_MB4WXC06Vj(s!O}w;%Bma!QSUSTBSgIlU(gLYg6fh5g<&rqF z#RSxwI@APGzfokU$+|P9*d&icMIlq#P*dwO(IQC|Z;KXLX_5z`qGppk78UWWS6nb{ zZ51g1`Aza*RMcdW$D*RTI4xk(u>F6_u>HXHH%R@~H}RtyUufg!cJ*2&2C3h|aiFu1 zGK0nQelUxfMM(W4lJ9`j--*09Nd13@;2uN`slS`qgw+2!5*+1DNd0eux0foo>OuRN zR*?Gti4-99e+ptC^A)#-3f5_ zp%0A)p(h#vL;-r?Wo6)(9t}d@2KE#9JxD<4KW11BLjP5;4=`7Q&_4|Jhd!_xg#L+m z_F1qc%+(z`iIDdP4JIr!s$s-=h?|JVEGZ zVei4- z1EGHk0=A_<=wC4mLFmsx-_2zXKF}xK?Wf7?*UcS2||Afm~H531wzlS z8`zfuLSF{?=g4Xh`ucb_43@hnAoTo&*1>)>p1l{WYEy&If77rUg#Jf{6%hJqu;WGS z7eMGwfB=M^HV>VQod5{^O6b%QIggZXzL{{fwo z|3Reps&pX#lhJf`KH(F;rQ~_}LqVHhkp`jv7;*qYe*i*&(0?Cf1Wy;s$8nnVGbHav zLO|#V917SO0ipkIaKy#eAoQ<-yNsLyp(ms$q16S19*de-4?+YG`f?=y4M~8|e;)*( z+4CWJo|!YVX#4Mw6cBn|T>wJQ+J58!guWHYQT7-xdHEIC?uM!8l6;N|odyv5$57}x z2mnG)LJ)cm4k9^f5c*pUr$FdGU^oRr{}IC}5c-cBPJz(hYd8f$|7F9)KTUf#JYZAoPR_{RDFeLQh0hjwKC3-vIG{g98XX2|?(e1KkR- z2BH6h;WP;SN04zGB7o4J01*)S;m`>X`Y$5W&qJm_==Xu+aPlu!5(jAfatL^z(IE8C zp&a`TAoTx-o;qd@5I1+xsw2|~Zu zqya+zxJd(q{wbt+Y6=KFVN?~XLFk_c%kB~odK#rz4MI=D6e}R~9A4+bEP&A84?=8v zfY5IM5fFOb0Rck)7$p8IT$~gL{eOW|or48|AaQ`uo6gZ7^nXUVY7{Xb^gX!l--`Ho z#98pJ1qi(l*<=10Y0AF{O8HnqTu?wJSmk7@9gJ19SU6J=8nfm?BS7dcQ3Rb%&d0kX zkl}S+2J^-&le$-es&rHN)YooJKkS$9rC$9 zn-T9s9{OVF(kG61bb~;)<<$iMznv#6YsJ8y3F~9f~*%u>g@@ zpHb&X#3Dp~mJ>ug4{;*m`G}JdX~UZV?S4A|yV-Y>MsFLu`gq;Ys?L{Ze(0WMpUul& zzqf73i$@>cJmZhq+lT*i`+p68U{cqA|8QJq@VWB7ZG*jw%W^(_^u{4opRJ!lsH{wM zI_JMr5vvjF5L*!Y5I=_aMZ^aY3G4N9#Fr2W4K@*R4q^>r17a5tMl45MfXMj*CkdMoc^~^c;x`ZvA@c6=8$_VOS?40s6@4Ber#)Qvgf{^m zOWqaat3%E_D56>s@kT-sFRr5oa~UN}_H+6!9)4rFj3Qh?4>l(IV7U_e6+z zr;}EU8$F*1M8x?s>+_jFM7$?a#96ecpew0(M7~NGex{ji!RPIXv=R9 zk;{pU6y^+qIlNgz#JPpk;bos{IGL5gyf;$BTc(IO(W8j>KM{QsEJfQ8MZ|kGMZA3% zgCcNVOc5ty(jsrH6!9)AqRmpu0maQ5JWKIzFQxe0M-gx8(jxD46!EqvrFg5Oi1$7b zaWX~`Z=zCB%}pWVwOvGXuSL6cy1Xurk|OTDl;U$PMY|ED6sL|9aUv<|IccMa<4G#M2o|OpbZ$P| zNDgPQEX--Jh&Y9&h?7@oh4T%H_-rPnIN_j(a}X&-vnb+cabk0y;ygK(o=hinH z6h*`Fp-tG0ps=oAel?8ns9}`GzwZA#LW&pVv7cgM>*~hvo74E$1Hw|iEYuusOw@mA z{Od(^XRTk-_}7hp8T{+mFFk48>vs$8wd0s5d}}Qs!tLMk zl;mCJx0fk6WzfC~GQ^}zB0F!y3i2T?9#rqDm3LGr|cBZW%`Coui6I)jiiA4JjN=mhcx zgOgyJ0LQd<0a|m9z1RK+b_xoZz=tv?e+qfrS>u!V3-YLQKn6yKly4IS3#kv~cY-pk zC66-4G^-wPo%}53BN}~NZ-`ilM@0Wm$zuQ+A5iKc_Fy&2Fz{iKPb|i#^KtUn=W1!c z%EhxC=l(?4KFZThhKHDsJ~uv-lU+P9rWN*~l+R*+z@7ub4;FnN6`re05i4+;*jvE* z4*mt<_W$j-VbxD|v_h_2eDxPe2)nqG5@PXPz^EFBm8PITz1w<(>I= zy7*7J_zAGvS^gSVKA*Il`GQ{n_xpJoL!r1K3UFqy$rO~0$xZV4tj4=>s!39?KR_5= z|D8x*v8%2a=We=Rfke$Z3Q3b%O&p?E|3WcU$qG6_pB!LOR2BD)xhbb0p#kPkBF;F}NIS4-=k6kJECg58SD>LF*PuT0l-j2lVVdS zYoiDez<&@thoB0l!+)rpHhreXi-_Sr)P}kMtF=55?hd(OAgmv}_J4oEB~)DoxZw-e zBe(`zK|}<;c;za!$-?7vBnL_u43FCe=NRgqM)^Q-Ah_;;3ed;op+)+O2i(y6bcWuZ z4hO>MAwD!iy_!AfG`FT1BRL%o#9`dG8T!-~__dfQ@wRa467-MAoaA&k5UZq5P2E-K zcoPblJkN#B*r=ZVmlg`mwC(Z(Q*o{My$8!h)(+d^y_$!7ZxOE$S20X-V zU%BY3mWt)j$NfEk{jGH9HA%Gp2+>_x- z82o61TkSCeC$@`mhvam)62CuJS8S8|zdt{wNKy&)CBv0y1aG88#14ADn;^;!3jsOs8p^NC^kj;DO5;iZmbsCr!RV}CPT1f6%2hUS7=ZO~vv>C!k6Cve z88Y@1?&I6tSPmF-+vj5`<|Dv#K-Ifn1{OqqrnT3U9d7qMxaRs^Rkr}x52pN4;6Jdu zF2^z@`&jO+%C9J&SF$Ukl$O3t#WAIXKg^lPzWWIOwuI0uCjY|PM3dn3k52DF8 zx=v!>U|&Ij)%QaqJA(aqHx7)77sA z&^O-JR@FDkZs<1U0#@LInCLu=4=o<{WLXb;bF7DP>DWFAbv&(MPMwjiewDnpHGGQv zIPmrds;63Z^~2b&zlbiYwROL9-;|yH>ZzWbc~eu#;kwxr?#B2EYK)GSwn$^og~5Tr zd-QgMxu$4PRSI@DHMWH=3>u+=-DrxmMY`(X0t=n}GZw?Iv%3|o5upRf(Ur63l&JJZ zf_HQ&H16QW;8Zpc=_=U>kc*Ov((+(g5G6~?73zgbT^PJYD}nP^JCL>eYZ2`wB^xJC zn~tg%K+mMf8wq+L03nT=VCvG2^>sIP_2~Lt4l623XU(acJ-u>H#q{#>iWzfYRC(#_ z8PjG>1IT0f9KbwIhjm?|t}@ut*sQDoEQ&)*&t(3UsQ;OzK6^QHv_o;w;soO0|?aN^u{|Au=?KgMC3T zyvek;j+(U5;n)G6&f`UtlS&-_soc|`w7ibZG_LI~SqDWtDl<$@kJ6-u4wPQNEHt9@ zV>30_vr(z246Z9LhYof)l$36qvTjo;M}|5A>nfaio0uo2vR;Lw-c8KADOS&!w}E*Z z%r18Dq^Sz_^c!*|#DIY{Q)tqpDGCw>jgYM{Yz1>GqPZ2!t*DqZiMxjVm|PX4`cmv0 z%`@yKu-FsB;z*)Wl*LihW3NN?MAQn^B`xfdU<>;MZAdxQE2}K;&JJ`GRBA2i7|ZTxrK}7!++7mxjTB`oay_anorYnEd~_+U9dUR=rgLCO ziJZn!z#Rhsgv#nl$x+Wi&8t~yxeR7?y<8Y>;fbr#`Vxu3>b#O-ho)5%oAGnNm7ylAkubfg1>u${%cook+*ET} zkE@ufwCL6i*S9D&n!znm2RGi(EAo7kEZ>!Fx$C>IB?Sw<|#a+lw&|;icZIX zh?8hDjHp5DbB+z2mLvb>dwL(L?ngX;co6Xr;$cMdOI5#j=E!5X4Y5Qb`8ON*tSFD3 zZ&t-SS}%y!05%idA<&TOz$(<6E#8 zcH;0C!{_RE3gKg>veX|u#$dXfmE$1W(x_cPN9P0&Lq`krT>a* zm(&odO~Z)QyP;QOYp3Y~3VuvVnOSUtmBlWpQIB<&-nt6t)$&|IwIG~JrWYLxcQ5K_ z2C5k_;E2m+fYS73QGvOIoomjR?!f%NC$uueLd2aVZsWI*CMKxgLkf(=>D26h_+Nwd4&?IYu>4(Y?p6k;ua|E zr$2TX9Y8tVCT(bIvAEcZh3`5o^D&ir>lS?uoGqyoC|y&cMJ`_`$<~-CC|^e`5t;zF z>#r8gYA|7%Ubq!6^oI0pwXNf~<}S^r=tYY1@-1)fMcFEQXuj>u9Sq^H90-@@6TK=w z-#&J0HiZTF;M^KM+&&*4G@j$PmcngwM7}*(X~!o6x(fBO+DKJRYa6B2G7J9KW1#xB z&AEM>bGK~9r;J4biy4K`HhK)2cVvwbUX>dw^%N5<#laY6R}X5=*C15qXD`h^dMgYY z=eIlnrdpam9nARt#Z;jQC^X0vD%K2*;4Z<@Him08vA+UpR!XezVK@0Q2A^E0K@-Eg zYKJU_d1XG}^n3{7#mpk+mHBMay9^Q^KdkV76Pq~9tDix@Px&?G6+hxvm{)wmw++#W zdG!Q%J4<6;{ZOTMV|xq{m{-3AF_>32Y$fK^IkY)vGPZWk#n^fj+LbpajI=MO4_ki@ zKikj9;fF&8^NNd+5%Y=;B6iLz*m`n?p%Z*L<=6&tmSdZjLw|q4yrM5OFt0ueLd>hr zf*vpQ=4Cw2s(^yJHegv_#p}bu01%6|8YTgNP`8P>il?iiD5N5)mpI2SXiS|-5$^Gh-c|U?I`>mu*yJ< zPW2R6I&%v;)i1!VMig|a=niOfs^1}}mATcbSIf~e_mCBIszd0IICQF?K)|*XI@Rlj z0Xo%?B1nnMKy)fP2c2LV=u|`6kSN6KRH9QY0#((CPIVcWN*JopslEw@eJSWvGmu<{ zz7%w-YvS1mSni^rQ}xBOJL1{Fip4)|A6GzQ6jTxL}BLD zg>=n72vO#>Fr)A&xTEB*^Gpa75|4^VNeZ2+kYE%ZG$QC!KLGm(^-Rrr2FdRs33RF- zfdHNA*O0u(%$ZrVov<5%PQ~j0(5YB^Fe1>YhC$~@yBJK~uvysh@&j9jRY%i6r>a7s zwGiYKjv@g%Rbdb4E{GL6RpA|mBRW+faXeHW(WwfFN2NHTQx$&Na73pnyw7k%rz)hI zlqwlRr+ObmK&RS=mi&j1jzgz<76Ohag-+!|f&){bQ{^L3jghF(sm6ohSkmZJL{noY z4+)MU0XkLTanMqT6*^Vn8-~;9RCAC)5E7tMy#gZWRD>e|I#n$){p=luPPG;shm*fX zNgU`@L@ePQL8DXMiE=(fpi_MkWH=(wsXh-f5fSKAUji9aiH+_1I=241v57;cx(5R8 z649xK+y{ntBcM|adB~*CZ5{H2NdujVfFnFL1)YjuABxrJR4;;McL_Sx%ZAnHRDUw8 zpi^;pjl=Z@=v2JW_cEC~nAm)RPQ`l_(5c!X@ejepNug8S3Ql#-1SN5xQ<=`u=v2E= zZZV1oI#t$#;9I~K6pSLtE66Rp5ma4DiCb9MYq&g)y-kK2%CUE=;V>?&V5KYQxO`ocsVYz2URIzQ-6`| zTc$X_&dXrl=trdPcR^JZ zAE8tbid2YBkK5@!`7xBTAG3L}x5qL6Cpoy)!VG&HMz8fOxCh8t<4wKIIHC-8>-O;!DmXK-k1G`uP1WM4igRIj6I2uqwrOZ`J=R21>7r=mRjB-a zRu0%|mXfqLtcj+QnNix2kE8NeSvl);m3{P)%=$LUALY*ae2*bH=y|5SJY-QIFwXKB z(W@%3uMH3w(*&q80S8|3IFZ$Fs^}&4EimhvGMM9A`yO7s;RDaioJ_E=YaR~=zcp=6 z@A(tIvH3^0RZiUdue~2B+w;GbU%7Mc8y|Y*s=Sr!2Q?4=-9I;e<2Q%D{BNTdKmIi8 zA45Ee=z{@-X)Q*aj<^u99tka8$})Ao_V6nLl0fIVi~gLGsl&15fxh1~s@rO}-kb;7$EH zsc*`w69)OFJvA)B-ze=lA#~U-j{^hK<`|Ce{>(j7z;i0jQ-b?OecWfZLtEH>BAqDS zPbZJFX?FzjOA+BxrUJ(Y+x5bW$)~;`$F&YT`k}@uRw&(1D%LC32`bSLDRTzuXcXoeXH&m^T3I+XLFzb)ZnKd$p8J3Umd(| z_cb$L*}9=9_p#ol8=fj{Jvw}o=bm+M2WZ+`0ZiNX!9}m1#KB1hnzjj@b+$p%0+@0n z0!`!GgyV{n6+AaHa7a<)0KVcJnIax?DMe)zaiSmqQJid3#QAqIOAB5bDCbjBiZe}? z;`CKSoOy9T34RslWYP*B>sXi%nj+#H$-K6@6qAhxGgX_eC2TJ)m`PZTmiEgxGpuC!X8OeMmk|2Z zH!~!DSC%N>OoEc-KZIWKSg +kXUzhK&F{i1ul|*(s~TFL+HMtLz=e;!?hL?@Y7F zf4hkNte6OgEA{72(sgCw6?JE!`x>+_;MwlL=#t2Z`tKbdQ{9`o%ibj&W7al4YyFaZ z(DRsG(uJS?!%f}qQuCCT-&wP*x4Ww>+|kt5+Z-x0pGKtkxHt{-_D;gQ_51O+v_GQT zqc$Pk0vG#-6Vt6A<0Zd8(BmJr#Xl;e#y>LSQosKt|A;OAb2FAfqPW5>et$+y;9^g4 zzCSzgg2sXK6p!%x2Nn3UGq(6AqUMDe53#0|@vsu-gPojl(!bD%1MgAt0`M0=zF5h9 zg{a{D?E3;2`AY`DN$|J+sU(43Qcof7)tD7wMsOKijCr32tttUs4xaM@(5gbv72r9K z0Ii}Q|7tt}`ap9b=ZpfhiqBQ6026yc)78g8F>S0lrfJm^plpZp6}EE_lzR4oQV-uB zP|q$<>ft*D(AA#-g-dkJ4o$22K$nB(ya=>vBPjLsfMOa})2V4yGbr_}(RB4H(3Qxq z*R-kzl>4(9c|y~wLn5bd0OpM~ z`!ucE1Im85U(>2xpsc?W6jP^~&uCh;9hCcdr>0fgKv}L26qBo(&6-wqf^t9FG_7g{ zWw|w=m^0U0r)d@Tos-R)dQGdAfU-XpYPxzh=zCGG929frnkkxAm4M=qDojAosv_`s zA5c@MscL^54%Hg)*Mef-tRQH$@YFXNJY*_A4;1efaA-A8iuM#{;ABwR0h<+O;MJgP z{~FLBDB4t*fy@tphwr=6Qzx_rl24*{XL)@=YW35<@koKT#n;KpvOVcXSqi}7l0lHoe%mX=seIvpw*yzK&wD^fnE%{ z6BOe-ce}{9fnEf@4|F+bC+LNst)O#3*MMR?=GKDF0$l<+2ecZr7PMUCC7|fD+#o2% zOKzUX1E4d(Tc8*pxhJr{c(0Rt9CRA!5l}p1ZdD3{SCv`Xj(*p?Hur(~jJ*>XhdfVsJf5dLhdn+l+;z-z z9NY=dNo-&D^m#p=9p2A)ecpS$yS(><+w0wj?IG_I*dFs9N6rcFN$)9eeZH+ekLPaR z4s7rB?ZS4yT8d{j`o)P&Nl|mHldr-$H%huM>VZ%cIP3sn6fw$iE~!k^ITqqK|J`$n&>3hOpRQ zD*RQ{hqS@D;@1jJ{vW9y{b6vc+NFOCzg_IPRP+sD`E1MTl>YNjpM&RncJdn~pIEQt zZx{YHv44f=dxQ2P{~nVs`*Vfl2POZDlK*AdzcrHoAoiK|Z$xC^TR!$jo8%v*{m}ny zslP$?XOrY}oUr@{h5wn@caQL`V*meV?_1#OD9ZMCPtHkBnluefft04@v`yRemL}d(!{R zQ=Y)3F1dK_s@lR@->+JW<36ob;I1*$(?s}J2e7qj)rzXx$|cn`{-!M_@sj1$HFKBG zUq}GaC3ELhF04MOTtw=0W5Om(-+Z89{nEJ`=(}S~?UMk-Cfb#j#tg^d#U`fL0J&Z$ zTltR7A3fJ3P%rZWIiRkowZDfs_6o82C`A|3Xa7(c^*hBUnKSMSj-;jO_7tzz-`&W! zIZ0C{>_X|cx?(QmU3bD{pN+l&AYOG+^tqqRm+Ef_p;sNymd*{;fa!h15WVV@Tt0W% z!rHktHLGghJmg;YK2?V*66;N=Uq~k;KP>wlk=O7wutERQ${YH9Ca$h0 zc7lN$uGF2>v&W04pPjJN)$u4U^NT3;i#S`M0M9n|5=wGncyWvYGZ&XR5y{Y;i%S`u zhyYz|u#^27c9yA#Q=Bx+FQSwY#Q?i3K1;P^mNAgf5+}xMT4OllBY3G)@&++FNrMak zwB+^Jo<7qUbs}mmty)-HT&A(20U4bdQb;A?mrQwWFM^z^*F$d4vS!XygPJ3maCq_uo4v@FhIeB|a ztdqw1o;iJX0?v2Srf4(1&q_r3#&iB8INv24%SZGG6KjLc+*XIg|3|pM0#_yDf1_hq z&-G8P6)M+XobO#2ztYhjhR#;|g&6xYAZYba7*|`{+|(8AsB50BL%cZ4#txlTzCRkM9n%A$#Wscw7D(A&*K7=_2-CFgJ`3@HISVa3W zEG|iyTl9q+K3g)$w9MKj_IAOZdwyVSx^SSA;&NArJ(9N5ZHGO#OKh+Clq@+eH$S_e zTdak31g~1Ky}MCAPPMQ*;`XT2&llIcSL{`Zy%H=!)7~-IGy6cIln{HqxaNEXn9k(w z5ql-eo&A@re!jTjv&E3fv<>#W`%IUp|D}HQ#L-TM8@^cVaXpo8C+xYM*S4|eha0|D z>~Wo(ZjZEgHrk8z%6z&-avqUaaf~6q`uX98oB6ys9;@-p!VIKiu%Wa$~qfas?;3 zEa}ap_WW?e&x+_wFG#!JJw@w>&|k2eM3>Z_A8zwGL_zvQcC25J}YDe65O@jhGc1I^zn5&M3B}x6Fbw_djy|~7o zH4`dH;f?o90~2tQWw`Fxe*^f%i@du=H%y@t&yDpdr7IY=Rc(McL$5feu1ipm>l&`= z?(A|U2K*SlU5J6F&Fvy!TFivfoa_Ml@yAA1_{V;Gw;u<{JYI7pH9@t0W@}xEon8BH zy|E9qdjx(z`~i690c`x*rF9eHio`>_VaKtxELpr^8*j&q5mef{_UUd1=K=pnJlAM& z@AGvgo^u_R)tBo*0``rAeI@K8-ry@&l+7SQGE{4$fG7*j^2*X#*WfXXL0z7I0nhRB zhK6@A=?sO+e7!sH8a&L{sI4_13A{irHzcnLKUs-JDl0Eu27ZAKMT2ry@pN!Y6k*Y? zb;H!NN}v=^FP+#I7_#{~$mbL}DKup{yKphYRdhoOK;7c_X_r?!u*xgeU4^@|1@2jE zJ{RpYbeLMNv_K=fp{o&akQXfhFx-Y{hen$1ZtZN^&>C&PV4=%7q0Pm2SzALi2J5`M z&4kCoR7kWky1vUBwu(^4u|R?zUkvEZCOnLd4_(~W(R3Y0AF*Ix1rOz+NIP2c(2fQ&yDVXx;Sw`%#fnO+c3xXsvm{!w0Zbv$i`ucEAMLDZ zt7&ZNtf}kR5bd(+x*M9>7Pi*6HQ-^1gqd=dwQX#QUeduQJr;<4ki4c%TUrDb0&UE~ zepYL%_+t;nJ+Z}g=bqojAuDh93dj@-Y3#zawd>U}W6!Lu?TB_pJ2v8&)Yg&>xvHx} z4y?6N;V0|8s&?c6mNH>paj|HLuIpaE9>=8sq2YINCNu%<7RLy^ zvqp#UDsI)+)i*{Pmep-)YUys#T~vjuQJx7`A#J!ecQiHNM1%a1=e>n=x0s^aLBYDzS}uDz=p;J3nBt^4`>i`B_BPwll;(e>8+ zi&bKGKy16VcK*d$13EEKHe0(^;U%D`dZ1X}-2uy8&6`(6>!X+mwQh*jO4S>n#2uX& z+oB2X9UA{a)diIp-jcopyQ`_I3D>LZa0U;WA-@`Zu$1t^5r@Cl5d;zXb@u zE4xAGcO5?~j(xJLNIjQD8=C6=Ngv0j{@z*D#8o>5TKq4sSqkXn_!)JCSN}EY9^eKu zPLk-7rmjZZPF%NxMYs>@2?Ab$q@9#WQkYLze_3NC1f|H1^%r%sGnZdyVMjqOCyz>D zF8SKe8oxCm+^W@Fap5)Hb*-yt8&GP1YS?ylKbf1hMz4)K#Aaxz*7h)5T;iUS za;ym}Em3ut+L{|wR;9p>k$R}lv0ZaijoPa5$Q+t8vyaGD3WRL)f)22+xnMka{t} zozLXj?<7fRC%?a;JMJW@GMh7GJ;=5a44YhrWj;xx%!^E`9V=C4^9d&?!LZ4-)k(7Q zF4=q}7Gw+@js@vf#QvKl%H$4P+b{f3c>B^1B`k({QwCMam?gbsipuAL8C<~HUZFNz ze4Ssz zlDw8|BA{#Fb9@kgb3&Bv_vWy=FvQT`ug2l9O-HwO znQr`E1oQ1Gh5l|{es!V0??qf3`uooia5ub0e}9zGftk7CC$X^&-k`tl!1lM{?Q%PK z2jn0wJlk2H!~d`0(*|e11d$OQOk4Kf@dx<#9HL49YXJXt&K&#)a#rF$EoTG%gE=?g zKa_Jf{?l_F$A5-3cr=9l9R2|Rp7SdzIj`bBpzsNTImKvjIHwZ-xj7B^FR-$BJ%2Yg z)6dM_4v`TYVt*X+AmQH$q5;g^j7xB_QLucI0SR6&N2^R3N~2ID>!8@NypP}V!9JEkGR_k)BQrD5YxRG%6pJh zFx~m-@h$Lz=^jFLSO>v$9~-YOFsjCMzY;2e-UQQ~5P2?jN4&Z_UVRj*s-VVne+KHa ztkt<_N+A48sMFyE)7@!+#&mxPG3PP1LM5JpJ<~;1Fx`1$h{JUMAp%&I!gN1w6kxjN z@xt=J0r@1if$5&xh>icH0!(*)ovyMI(|rjP!bK`f_XnVGUkavsDK1Y{Z^4^E-8EQM6 zN0>joot<|Nw$D}Jxp_o}|Bc$tw@%IeFk*n|UV(tq?9&N>fBGu?SwZ&GEMmof0Vy)- z^MUC;{L9$96F~~oeK?^pzeWqlf(57W-ntUcKL z7B&Zs$|i0?D4g{;LjH%5v$9xUwkvCtVu;|$ol&WBXCMZc?!+@c!;auTH;;|xHH8hI z<7|hmEJCCc+;DLI2nt}j4{wLO0l^B>efUjABc}Us!WXDGV!98%-Dt#gAO2CJ5z~G6 zXN*Qn_u=;&O<}rc@p5z>f`IA%ev}j<;$j@8JNE~Bl)`l9%lhn?3e%k*OP_|Gs4(3} zL1E`nnC@A>g!Xe}91-elB7TpcoL916W=vSs3pZh6 zx)WP8bT+mXraQ0r>`tM@D#V59UWEW&n-!*e);gr)_Y`@b%xZx+1%BwptW6MOs4fh? z17Z+SQSIP1{D-#VFAmfFP6V(?#B|U743wp?2u%0fubAx-jkyQRHZa|Ph;5#lg6aMX zqiRg||AETgC7AC2XH<>pPMk#*t1;bG_Zo@oP4z zykCY?<(L2}$df$=6)3n6;|7*c1IdVy_TaOij|}#r*Rn|D|#HIdyaL zkNt0G3t-KjzZ6?mp)q5oQFhx{G%0{VuD!~($Jte^$ah)vID4gI#ws-F%`C}oxg7cC zGT)W9J?02(J2}UU!l~}$9dEC?lohy=cfj#>^;JswA&RgHjWshxvRl3ctJ`U{0aoY2 zPR#1HZmSb+rI`j^FRY@UAj6PzY@0U@+n)H6Rv9<(mDsjbXo@itAG;-jBTtwJ`zjQ7 zXIyay3aS?;igGZ7(}{b95?vmiod+kA zdf^?7AxIU0tq3-zfXo9ot(*Gos*KtT-ftHX2>(dQVJvHyEy z>+pN*ybH^#YWLsplcuq2g56(@j4J-dj!(U^;qIqaH6E@0^>;6y@WqSXxwq`QWfQOX z@yG6bcj#T?CVl4w>}R7A1@Jr}Ih?PAzXHA)ehd6<@OQ!A2frVl-LV(`7(6S_Wr_%V z348^76+Dj!qt9mJ;T{wHWppJvb=80*`x4zJcol&pj|QFUZjij((y7Y=WDuQ}?pm>D z;@^uf<}YC++%%p^kS0Cn3e-1Bebk8!{exnU=Pjyj)uX(vQsyKn!+-&Cia{HuP3n>Z zeU8{rXD@VrjDwkBEM;a8@HMDO4h#~Z+vac z6vT1z#AdNx|v3`a8e5#6(*4cfLr;m)1tW1L)3*z>kI>4?h9E2!1j=>p<}SuJp%3$-w&~BaVLH z9|iE|KK$M*Js17%n$4d|-#TIXoZ$OEeB{`YyUR9RYTfher|$hnK>SZ&rwqZd83R8P zela{jdRpOcg5LrE1^92kKMVgq@PC0Hj2%1yelC0s{08{z;5n_}<&F0r-qL>pe-!@j z@Ix`m90xxeeknXh+}FTwh3Dv*JV=kiAB5+$gD~-#xG)vK&w^h9e+7IS{LSzjjPjUr zbjsrf#|t2XctetRVL2&c5NAk|iep>`aqK6lIJ;sH>s<&5$FVVkcvY8FoLVr5<8uk( zwU$A={7OcSzF|&{;E{^saw(WodnV@9OoDhFW)LU%Vv=KJ25|^2K^%%Qh_i4B;-rB= zoI!{!PJ&qQ|G^`cb1X^BUCkKIBM`)CkL2Nqlx8^3mc$&kGl-*k3E~`-K^&S((6^y7 zXdAo)aT>uO&MXQc;W%Yy5a)heO3A2Z(g{-*i6hBx&(1{&mhjL3nAe+6=D#VjU*N4LJZ>cNK$ca zk3ntlQWy7)0ikgh?&N^}9NNPO%8qvor#l3X3MRy}!_YNr!Pdq(GgjwuNM_%Ry8YtK zF!>(lPfIM{j8*;0H>1wkx>gDG>p`RFav3CikEsoaVov+URz7agY7r?hdlI_0%zJP_*|FZq!-{}YV z0%8p6)eDv;UN8FK3y6P@Vt_5+pUM{C+4+fF0kcUJ@CZQvzobF`!yBQ$8k!I&Ivt?@ znmM4*%M~yPYyjCvX@@~11-gJtumqeLm@+I>f*i9h3}s#zIuld73!$BLA@Kj-1!90# z!@mvLcqsR3-1dk;$R2_junq)=gvO;kV_z7wLkrR#yy0u2e+~K|=rFrAWWS06H>1E) zL0#}Q7BnV(YbY}<6Z`_9TS8-Q3JqHsnhjEe+BmL)p`b7rhDuLC%ms|mv;=>=;cKCZ zgKQLFrHy$xGzp9Zxfm1d!1w}hn^bZf0a?BkvKl(a9gyW)AnUP0xd{?Oyvi;u%NrrD zz_6-8%Qc)tVJue3_ZlF}DhS&(b?L)N35eUO-VRqoZYd>14z8JfA!2)Sk(WCPOm zKw?l@xkbzJF37Ra+qEpe0+RMuYq_QnlJ*NAX+K}f@?ns)mko(!vC6QPxV*L=@>NLMISPphLgf)H%b$nDGDu~wmgO90^Ef}NW%)r! z<~sn1m72;Yv@G8T$>X?JOU28;bi1KrNLqQ1mgT!3F;$4;Wnh1}4dLt$J&@cln;@|( zE4#ET=XiQ7^hPbqD2}T9#KqPQWg&fUJWofh>fK zh|cs_;^7LAil>AT-sa;8G&2`nG1P7B>N$3Dqe*PA$xJ$ zmp~qZTnu>-@&ZWqw*`>wZwn!JL*l&6*(u@MA?HKi28r`AXA|UH$actikd2TvkgFxU z3bF$FVo3CZoY|1Tu2Z}U<&Z_t&x4FWVjtz?Loz%Uat>q|5)es>U*TNH<7hAU<1xrn zA&)>ZycZJtO7ScVg**uT9LNKZJTChovF{Ym!r72}pz}EGhQ#V+&Mrvod&RTBY3yG>Ko`so^RnVtHqD^YQLnz*e8(|db(ytXc zPvkiw|2jy=zao;4>X`oHB5xP@9+B-L8$}Kh84&rgOr8HjA{UA*7dcpDNaSN-o&GB# zZxFdrB#srY3kkdpJbtVv|0sKrj&i@qT_Sr#t`%7!G9nT}y#@5cWV_5nMXc3)sm zU@zDl4h0SedWFp)m_{~-t>9_6FKrM0_oY38f6e1?BCQ8(4cmgZ;eTiFt{`#-4+ndp z9SgpS{}aKU5SSlA`$FNsU7=l}VA|nOZ|Hf1ZA-rm_1=|!PdZ9X-;=%<+9T=v@qZxw zY5X5bKa7~?(~qPdh4yOtas2mWY|RJ+wrB8_8M@Iper`U9MZtLeSzdgQ*5LQ?Z4dGt z82rNhIG)6V--U3xX|(6kzl?)O`#4vXyBEio_I646_cA~19Y;F4A0nK3J~}_$3p@!B z#&>$?-Y4}l>ns~t9^&>${7VwQ6J^pVz5>llWVu{QaVXb4k_jh@{_(aN09C26)p> z#hZ1PZ%KU)O8yDb-rdrEu6D7#hp`Xns-%90Bz?8SbDTo=HK}ip=<7u{>nuyTe-O7v z;tP<+t$&N{K^}8FmQqI*_X6vS^q&{~D$z;QN|!16H$>-o%Je@Hy-@W3 z75xj+zSE^X3#cRgpC$e*NVb2P#NUiE*uLG;z9*$U=SuuasjrQFLiY^ogZ!77c+p!# zKL*M2(j@)$)RF#O62BZaSl%w!r8|aW&*Oi+9REQ~5B=SulVg|qouW??{Q=R(!UpXX zN&EiJ`e1Zo@FH)aj)AVhdmKX@H)Mm?ct6X-fZ5K!l(B?QI2~Q4<>TarQzD@UjDz8(y8|Ig? z*=;bM62eomq>LF&nc8hO#_b`W?)z8IB+y?mT^8+V^I?yOuUv5)$c#4cp+nG?i<|f% zviUYkFvC;QRCo$z(NSru_|2R{Z}+LJ@xy+3)N zx|>XK-v#zjiuF|K}2I$O&`OL>tZXtCq~F1xW^EDWngxhZB+XOe^az z$p*&2;MtflBNB6^GtMfTIlc7kG6c>nDMLhA31dr3N@g+P^wN@2hDIW52PNEVG@27I zwbUr0xXl^8|KofccP-Jz4Bv*)Io+ZkDP{GSZ{q~!t8|8M<0uwSZ)ZTz>Y*^MFTM>f z*3n@qqg)l{SeObpPKt5#zW6qB#oh~IWG(Eu9i|m=t}nig<1+u+CAk)3QJ1E>@Nh<^ zl3sg;Izfed@%neld{)d_N5tL}u;-o+8KW-#grs~MW`6ur$$Sj<+%B=b3iGNn+MJwk zqetfB?PBC07Pr~nr%^vH=41DoL#0wk{e1a0j)}c0u~&fwXWE;ChXZCGNR->2FW*K5 z=J0eT?{=}b1@>eYB&(k<-^OCG7g1KR9s_&ceI`*#7=8>tzKuqYy?tC@cR8*)^N4{*sh$V?Wji=}5`(ck& zJ%NXJ$&W{BzKu;{&zuVfJoR%`Rc-dgx3Sq{@2NiRsq@2^Z{s>od%vA%Pg3Zb8h#9L z`bd4_`5kVS)HQOQ`az<-xI<#>HMi9#wfCdZy4+RLU&a?}-SwZ;o*&;v(Kwy+i;`a$-aFDK03u|*f?fLO-EE9VV ziZEkJ@!)bZ5*r6 zHMvhNSQX2(ejDsb5pnj$AzGiJ93^30U-TVF&u7X^%u9T*4&PZr?r6e$0Jz5TwpRsD z$8j7zyZjcB5GUoPB6Sfw%NyX^AP~>BZ5>xDNH2wkXm)0b{d6(l8F?6#W4Z{uXMe6} zkG5U_LSa6WPZqxnEV<2yQt?TSN9=7}CW7;;&!XkgF4Y2^%&)xaC_o#D>*{9*2xo6= zzKza|w}x+H?N!~!acmWT$gk3deGa>M2TpnLX7oI?_NtXeMz`@?%Yb)9=2Y6M>jZi=sC%DR0b_CH?9e7y+g&$_D`IW1P_hw1w~ zuMob^-QIdvIv#7o1A{!mIn(pdo6S>V>K+yzn`B%jDBpU!@R@XLK-frg+qLb$f3Gi# zwDZXY(6HwN$~W4PoD#*PSyk82)ZLka6-CgL=eMkt}D{e)Y*l?DC%14qeZ6Px@}VunN(Eu zV5Dh%q)26+mwVQYw>Vq!~C{pMR_BKGdXWe!m(ET zG5uqZi9c+XQS}jdi}+>gRrj}Qz^zc#26RR;E-3CAiRe&W->}q(#xq|#^PZN`hs%7= z=-zm|3m)gZ@v_Y2r18dc?ab}^itqCQ8F2WU@F1*3p;an^8NcUng!0rUluD+LiXSCS zB7CZOdYJIY(ULul1n#GWesHHq=1+FhL28|7gF2Gupjl2~th^H{PvFlHDDiVN`mE1m z)VO{p$KNNZd9v@iQkfv#Mx$vnM)QAi?=oc7O4+rtyWG9t?Z3SbO?U);Kl~H$2jCCF z_rf27@8cQAo65`MJ;zY|fcppcKm_?Qrt)>1KYO3ixD&tC@w{xOs^6Ot&-EYrRPA)P zIn{O#B6-dnOO>b}amjdz{K$r;myuz}@D#v@elk5gOv`W!k&_ERNq2jPV)$4D{==>eXj_Ww|xBd1%aNA=Ea zPCvPK)B(OD&FIzK*17?&*nxHjtXG}&b#~?c^2unjHMsP)^1|SbOJ?DAgRop zWnEqU)f+lUC8t&eR^dFkpi(WySo+_S;DQcN&smW@ry6D@(DNNZ(%@u7KR)K1wLZg(eUj`;9L=OmU)ihFQoGJ5+x^Js zvlg55!w*koUCXQeNv?0}{Yk0s_G>UqSBoCY>aLDr0lIm;Ra@WEVBuwP%@~UyFvemo zf;J@bN_FWOhcAtkA9<7-u9=g;MK%R~DPLYG_qw_Bj+uUQg)1*f*r3dU%rMyiB~p=W zns4osuq2tN9w%3oY&pUt;TukLuyUK;vi68X5bivJr7M~>h zgo&VgK9;6J1-SmQW!<$vBpP8hw>Uxdt_*6^PNU-9GuHs3sCdSiRO^T);Sxm3TO|EUQ$qDuylV3xm!3ummRJV~a_0Vst{r_^{09JAn@&coC!QU}l>6I3137j0Ps<@qL@?+5_z&fL5&!8qKfu4?!}={_!H4w+NINHp z%V9v_O9gYz!*)353jF8h5HU^ous(`S@L}zOARpHKkjKb}^)d_uz*E(RCrXzAK*F96 zIwewIQ6V2z25I?ziZ_Atv!Q&(#0&vx6}hmQ854qqK=|o+^_TJLOY!Pop{nwhAa7cD z7+$zi>V--jZPZGoPK3%T*h{J65TN#oWs4AW2+GJpW$%YqEL$tF@i#;$mMwy-D1|Ir zTcHrqTUfU4g!&VBVc8;NGMghTTZH*=saF_PvutgIdMy*5h4KU8kH)L_#jE?{RZ_U9 zI%$@z-$EsJhp=qD2K7Dg!m{NwK(lOt8p0ybiLh)DYvbEgg=On7_Dmeh){6*WS&C&V z7aK|;%NAev&&6$kEL()u;0;ExZ1q4{Km{yYmqMx>WZ9~NawT@3V%hpO6z)r5*&@FC zwP=K}Y_-O#w?JhRg=K3;yn0`}`WRGIre@hXXjILz^^#GAWh)c)2%*Mc*%|}^maS6} za>@d1gJo+1wy)u4FgOL9Ly3`S z551k8_XxI09|fwYyvdM+HV=#?%hvsf0n64$5D1p7PeGi%8-G@i{WR-AY!aVbShk+Q z<}n0mmaRWR8w^95WsBrp;3^cBt>Ms$scDw2ze4>X?M%%|N9ZrH36?E_kAr0^A0fo+ z2g?@gn?9ShkvwXd?o^vPD6b zt!&PEWCHk$QlANwaLtMDQPx5iDC2WZB|fffpXlvULiQ zD^0U(MG+A|5LmVbK?uv%G;D%pYYQSnE3vIuw%*UAV-d1eg}7L@8WF&|hi2K@hjaw& z0?XDnAtu6uW$U{T=fHzyi=0@47U9nhk`F7i8-H;uTMr}o@!!qoI0XtDqG32@;dk!oLa+R<1!vG3qjWw#sl4v@rb4KS=n_DAAXJk(BP?cCz#>?=mMLM=K3KUfS0be2(iu03FiXsv2dT<20aTDDo48U1 zyCu~Fl4_(q_)%p`EC*DoMHn#A7O^pzeWV@w4N{GUA?3_O)NUDt*uzL=ue5nVx5qGk zcdljKh+&dF20hfeAKF%GF;*@!O|)CCME*=hUM~4BjmyuOu9IJ}ay)EL^Peovepq;c|+ckbVlnT4}P# zUiA}}-Fi2YO(cEjpQ*MpZW6KVjvug0GtIQy9*5Ogczesf z#kQx~RgTT6_DaX1HQuB*b5Fa4o%J2e_W{&~NTN>8F^ix%c_*C7x_p2;!y0e0o2jSW zHW%GZ(JXz~zj(#UHIZgM%rkBxS-Hxnew3;;-dHo!PP^@+usRW6g4y?{uu4`gW%Yh- z#$-2BQ@e$9EX_2t7j1klu8mo^@WtB5p{c!>Bg5i_tk_q%X^l6Q_Mscn*=;2_BR)-w z52vVDF>G^uYd@?iHqB%|;F#G0Grxct(1kIHzb$K;$wampU5AH|c{qFM{5~_AOh=u} ze?sQP$ef>TtAVh8pP6Pd@y@18o{m1)!OTPYD!Jq?BpZ@%>q5ryVhfFJ9mh+pY?rRW z&K`1xN@Qtnvk#z%2iUk^a0fOAeTCa;yyj$m4u3B|1-IET2p6{*_N3xxLfe$%`D(b$ za4Zx*6MGs@Saf^!F(LC{!szfkk;BP2ew0W~v+1MqKK8*^=KZDl_nXF$?~Gh#Sd^M*2VpRFm)`}&qu7ksmQ z!=Vq6?~L4OlfJom@l%0!KTGa2@}>RtXWu{TmecNdgq&zKKYH~gPTdGN*9^Y}{xv(EU*KQ)H*AYX!o8#vKTEr^J6<(g$&Ln4j}8I!^tlua^A0q_fCj$UjqT zaIVNSAC@#cCER(`B>?f8qzrXZK_3EJbnJ^vZ*+AUL;r!;V@GGa(baVl`lqCPPT(0| z0#EmpwBZ4E6ga~lXZDG@pCSBQiC6bW=%&pDyq-c|Cibt8_L%ysD+l7uK2>)ESNg9? zezT9S7TwfWo%Kj>_LsW0K{v->xzyj(&+yBc_P8l|SWnqas?O$oIsL;w9zF$eoYW2YuVdR{Wv++nuomjt2IZePbqJIW!AV+Ke+RKpICbLGas7sz;Ex!diK#R zGyhuL_^VUN&BlFL(z7k=*tEkr+h?xXN}jgd?2UVmKYH2kHwQkk;gpZvyoEe&U;29R zSLAOaH(Yo9)!!$-+v<0YdN6W%`JX3t{Okv37d-y#WwZXYHEq$f!5{n8HA5cE`(rOT z=F0D`nL@s~mgi1=aQUa6IQ`m!oNsarG6KFBelC0s{08{z;CaL4HQ+(`C*gkre-!@j z@I$eq$HC8rUkZOEJSVza;XexhIrvB655oTj{!j26mT^!x4Sosy74V$Xy$Aj-c+Str zsdX6sPw<%-?32HZ6P|hS7r}GDPC!yJm+gkp)}siwdx zuikK+!7_*wIZ34!&k(c?UV=CqU@ES0ND$``4C16hY|VxZ25~|wL7Zqai1TmB$Z0Wy zIL($Iu8J{eH2x&$38)OJf)`s{RACTj@e;&IH-k8vmW(`744Q(!LP$8y9T~(MsHEZ& zAcH;!FR3_QWDu8=Bo${)4B|9OO5};nAQz_^mm3(wiN4t45(tBMs3nLKNCt5>DYm#O zz#z`%q(sAA#uWw0$hj#~amp&G*fSW!Il0*4+6#j?C6!cM?PL&Vy%NO52QE-@M50J2@K-;f&_70gh5!8UcV^PL0FgNO3Grr@cMtO?;a@XTt#-yI$!{i2&AM2&FV30C z5zo|Q`OU1yFTa_;%+^*D?3;;6myi7(X|Z2^Gk?Hwrc1DIrU-uVW){F(WU~BbpzoKT zD+d89ot<%jUoMd^%Aaa0_SRuC9x!|?+|fC$t^qGmPctt)Ps3Xg8lGcXbz3*yqM0_p zFE_w1*R-yqu4D5wyaJ{BM&~qxwUVq~{Zn}N{5$;szucR{FBkvb)&S4kzl3Mba}W~w z<_=nKgmCV(^rfLw!QB>mIh1#EC|&~@UAQ~k4Fm2W5jmfb`jg1qloQDc$c>1WzyY&LGOG@#dXJ7U?-k$a7+VP z&WXk~&^ZQzEPooZ9XiKMkmZj+0$s3@V=Tz>y^!w&^wb{65eUCe%ko{2H(+pnmzHaG zKwgXZ?OK+TzMSQ9EXQ)UK+;Y#)Ux~vNZMJg<(ewUZp2q=S-u#O`S{!%OBt0F zT9%hU-iUltv|JN`WV;HqEDu96Ul5Y@wzMpN6$5IPcTCGQM<6i{t>jB%kmZLUxj#6D z<^JF_pLU*xq@4p=mh)LP?d;QX%^t{&h`&$E@|}>}k2|z1-wrt(`fXa4H$(OyKgZIL zYib}_P9@|iNVix^#Uc1EgwKJFC85gMS}G1fEY(y_feu;Di307Nz-XBE2v|jXuR>ya zQpx2_$Z}4(neLF5Yq$)`{m3~17-$6^9_6i8b>X6XY6lBhg+jWG>Pj z)>3f`(jJ$AxgQ>ZWc&7Mxn>LGyOFOEavSRd$?|F-b65{8%PS>(4kX(*Tg&np63)ek z5W;vGQ2?gqG#|AldKsYN&Jyb08}q z&xM=~c@8A)1FkZs2ohnc9CF{W9kU==9^gO~_aM@$a@9$#ovo0xa}y-(+zc6k zoC?YOj1NQN!*!K^lgKv65>&nkG6K04G8eK2G7LEn@(2z>BV;e+21uT->md(9Mj;PC zHbCx&tcTnOxejs`!mA*!fW8>A z9dfpWmq1$&1yWH`^$OCS$G zqF*ZxMuzW!ei7tu$c>OYAqye5Lsmg5BjgxJp5IKr8geCM z7365h#S&ftxdQrZ$OvQ!Mo9M0wUDT)Iu9;@tb)D}G9PjtBm`H%a`FeObm_Swf0nKF zABy~h$d8Du6M3n~Geiy*c>otVl$*X^GX$1-Y4=Nkr#_xE^?m8 zb3~37Ib7t!xG1vx2SqLr$(K7A9u#>ZtaV%?cs)N18z>pjKK5Yl*|Zh4QvB1B)K2=gZ=Sf+OzmSoYsr~9l@Q!a6mIb9t=JU z*2lw&0rF_@n8N^hTWCADAMXq83GIbE6gmtRNN_}kUWIld)RVpy?H~&zYLWg3{>cFu zOe6Q>F=#t7c7pfuzKlH?s6oaf8T+9f$aot6&t@FL|MM9~5OXZ!)r{lNdcs@7;Jgg) z!vFs86Zn5Rd@zhs!-vDY(2j(ULc1@#C%g|@Pv+K4a7t$G$PA|4mANbP9%%Pv?!o`Q z%t!ElAoFSbAIdz8|D&15GXD!_0yz?mdlx!`TOURp$EFAUm5$HY6h|cb58WSe-jHLG zorrD^?YVTWZPOmE>B^mh^Mv-ciM?MiKWyfsU()SIKc+rg^d3m+t3_YJivaXZqJN$F zVQ;(G8zJ_0ivCI3L;NmN9xoQC&rWG`9ql8YuSwC3rG4moOnyl}hi!tpL(1DH@qdJ5 zdYpw#b>qzBfk zisv|;ZlUPe*hh5NNqu`I{f{77-y@=*F6nzD{d%cC=RI@*(K#=oJ0$&s^Cr44h<;S` zB9@1`7|saXd*XCH4(9PQ91vSsAK2I_$MeVBUnp~z=8kins7!HH$SwEzoE9rT?rOr3- z=#DTw^eaT~p?%mpDE59M_K%9bj`k4$n&@F^FS&c^zDIkACzmJPTCvA=(|uFyEf9U4 z*jp<45!hw^%S9)rFZB-5FA#el5dCvv?_Sa8v46p);aph5{qNE@Ge7be4uu1hq-7+sFO@zh92W1+?eV*C8GC0}}r|)*m`wGoj;~`P5$&{o`y8^goOKBI^U)&eiFQ zML$jSI>a%4wCJ}>d%q*~dzAG>{8L|@GM;&{yxeUsF8f#~-@vc5H9?={vB>DNeniRf2} z{&A^Khv=_KeJ+;#`%wqQ;fZ?CmGJnWKVOY>bXPGw^lL@m$NECQRrJ5IzR>w57hSRF z-w^#u)*tZ)M8B2whyE+kf6n?s=Xpf;K6uurM2;_Cr6H%N;lvn59dU-!;&R$UTQ*C3 z?xa0Tpbe*lO&tSPgLyv-{dEY+GS>@^@5v#01?agDIsqh&~PR zbsZYM>lW}bvf@5H=hdZge+V>giuJ-f31QU+? z8x*(xFv@r9H+#~rfjxITUlnod+;;2V^Q3>oqyNF94?}-&=jW>gZk_i@x1NfVG$|#c zffb8-mShb?q!5{&TweWkbBxk71^a1yv9T=uVL|OPFKOVCvY~o%>el(Pq9#oZ+Yark zdCcguGfk^>0m*q!J!SNhE!C4Nc{>C-N=GKEwn@-$*3|f7{|W4=o&xnZ@diKWr23}r znr|qp>l6Psl-~zkAf+vRXo}aL1c$3 zesD7>Ic;YqGSq6e&KZ6YNmy`&YBMp1jwoeBG3d*RJ+!yZX{d{wIopS9b4Fr>&N1DI zNY28UI=Yn6wcV{`MQo_8Uym9#wQi^__R!=ywbZSd=|^@uBQZj1nHV8^tUtWEYR9D} z(w*r?q&veeB1XNNe8;_+1iW4v$FL_wqL{yzliC65oOc$0q~12 z^^2HpX{z{^&JESk)`sft_GpJD4lXmbPH2x4<84o3gg$sPoQR|cVS4K5vNw~+IH576 zrkUQxBt}SM5+n5CobDG<_GXbHCsf{HMfO%cF+wWuL?k~FsiWOA%SkTer6pV_0KanC z>`2V@#jjjCd$#Z~yZDvcny;=~(AFj6`!?GB-d|q&8Ly0l*K;nVVS`y!h^~&3=3L46vp+*rz{H;vP5N7VNCHaE4R>Pj#v94~{7oW0uR!||CR%88(rf1_ptG8}U0(*uUSLN{X z<1WVf6P;=APO-Nd_N3}Mf&BNyS6n6bswDj`v9}iXOc`#2V$YYac$cSs$Hd;QSp8%* zP+N8J_a^0g=4VE9w`yS>hdsATJRYg}o@Zk{mM)_Hu~v=;+B_b+<#?dDWcBmqQ(i6h z%)Z(Ud)_)pQA$XA>;3qY*NQznmsf5N?75xSwy|eAjkmvS5_=WWISxpB51_rLxed#< z>v$yPQ{Kmu9qvpmtne_|5aCxpKR)F{V$bZqBG}{c*o24QQf1HaNX@6*EB4H}P~xdy zd~MbF*3!`2)EbqD+Si4f`ILX{X>VDgJx_ZzzpEdg^6$kS*Y@eo zNwgPtNc!Sa&gYE*Zo3v%<7nB4iKO=Y_>^~xy)?;nyr1^`_>?~{C&txyc0%{pv0C<^ zzerHh`uXuGpXRC0`l;HU>)&H9HJ`Gv_q-VBuRT9L<-bV%7KptIi(NI-oBs7n!l!)R z7@et5%)Gy!_Wbyi*NMIBV#iWkn*4ylW+Y73}f) zasd5>63$~UHJ|d@BAuyQ&bvKQzuwsOD$d?GB-baj&cNM6{Rq-mK{7Gldzy_G19^-$ z&BuKg*K9r#WIWw;@w9;Vtt>pkI%&sl&8oA!0X}8(QO*FL@|(e@+&kn<#g7^WXX=p* zOK}L38yI~}@e%i?S+}Fx?RW*ez^?>i{KsL%O&sG^HR+ia;{k`enA@~RX}P$Gd%>~F zw6FT{4bQi}Z#Y=vc~Of_SQYC=nKA;6@jR|+jj=kxzKgrH@dWK4%zEZ&x})cB#7ACO zhjVjq3LbKdry|B#+F94q-i#%J1;9gZ@9t8hAVOFXOVrr3p|L%p2}2W>y45mm^0cm{ z_v8s0+PcU;gX*SWNYzz*doqaXJ*QY>6Ar>Zi|AFAt})r84b|#+<1vC^nALk10g72R zru{>VvZRt-)X~;rN&{tzn`AbjGAVdw745F>di9Ob`m4cQQ$@BRlt4iKrdBK~z; zv|aJhCMg<>xygHNWD*H-Cql$JBB*T*)9(y@PV|es)!A{#?;(A~{-05#&MsxCxMRaQ zl<3=-DXvnB>tOC3R;+gJ&6)e$yYw;KC&E#=nt!xUqFIvd@P#iM*;f z#B!O?G^=DTCP%3}OZKplx^_rx(|PP13+iX3_aof_c;~H$xV0?x9fKOj6!p`dUowul zJcr0HX}`iFNX4<0pJQCmFB0Lb3+_j1Y-lG**MqSA@CV`l5odT5H1cDHbCBFg1pi^f&nEMUVc!nMkIoE$mZTykZd`^ zL_HxP|Au@{c#JV94}>;z@R~+TMRC@v{a9YSB-_YrKwkZ~0m@^CQGTU&KO;Az}&&3*KJiL=i|N-z}dLFWDBSGr#^^FuvmCZ$sNX2~qXNuP{U ztS!UjuDN5)2YMQ>Dzjfb#Sr09*-7=`pkH$u4+4`GGg=)+KVzze-mK5EMv z3%${-c=Zya&O(8K@HJ4&m{`*reK21AY`pq#ym}C-s-UJf;_Dc{Wv#et0^ygTE`S$$ zBc}nH-iQleD;Qg$5}yzCom7S1=*QS0ar8znAb@2ldLxnpC#;#7VA30r=|<%sy%8~h6R0Uy2E!FuMA`+t(LspZ^YLfrX8sz25KVyH zCxGuM{G8Dm`Z)gnf-USqOPyvx!b|1Zk)d}YbOE*zGjtcW7pm>>(EFV2?4e)9Heszm zZ!~l~F`;jGXEEq;OU-GsdArzP|zFw8Dh9S9sjvQ7vY~*88&={vmLfFaTT?$ zLBQbrGbliBlz$5(522zr$|qu&(nxQV{|Td!-YEYbqmkYy|8qtoy;1%{Mguj?u>Ac- zQ}jleygNN?Qpf@@Tk)cX# zD|(|P(Ab?qm#YvLy-_^^c(qpaMwy*Rmq-7}%o`vI;fHR_d=JD-c+eZYA7ap4{Mo@f z@E`gV{^ID32vp1_k=|&?Lr{3r0lm?Xr_A<<#vwm5+n_gk0oyzmh2H27M%DC2e}T%~ zCG5T>(6$c47NY%Yc5SBe8vm9b8H*>OXg9rvQdC%i53G_xa2nq4wv7$Fx z4^8cyG8N*YH!?d%(HmuMN4krUMCgr1{2bf-usREOX96k|*y$fel9A~chcKKUDl>f4 ze@Ot9Ge6^2hzr1^jIl<1Q8beg7BjyCiv{)|zGPQm+q7R`2VYPkq~p>VH*&A!{W_#7 z#{?+T1$Opy6f>d*<0+PRB_tyX?7@qnI+g<})ytCVxRWZ>ic}HQQ8_bewOj5*FtG{j za+?=udo<(8*Ki?>+oRFr)aUdos99r7zN5+tg4%wI{P!{ca@!tjS21UlX~)_t`5C^- zSJ;f?Y8rh)Nx2oNPN)p=>9q9UmFO%_pcv%@AM;w*OR>D_Rs(A zfp@NZ;eWc2b}Rf2_p;Q= zl1q@_fy59bjUb@|$sb7aKoSR%K#)X&BoQQsAh`ocC`cSZ(g>1LkQ{>K6C{=(`NZRm zuZAjIH!@mYUD2NLPJkc)a!(R;F1iuCT1MvR^|7CcN0DcDlzwp5Sv_`-a5q~ax z4g3ap-eB0Lc*o(fg5#)$K^)>p5N}cp;V z-Yd~?b-zUr@1jx)2jWc3LA(U<=Efin$0a}SYz*QJPl9;kU=WAU62x0PgLuCeTO6{m zU=Cjp%MpklVuR^y%NMTgh9NKO3;%~8MF;vf_T$s z5XS+9kZ>GeGl(NPDUo+*2Jv<+L7XBnh_fci$O#XFI9ZZZ96T_HBMAxOB#%KHFi0hM z7iAD{sgjDfQ3mn8DnT6RF^J$qmqhaPzHSiL4}ZT9E&oDJzG-og2y1=g5$BGImaAn#Jm;VR>lD^^fWKgX zzo5N++WfZGE_@c>IV}d&Ue){-EZ7qZf7t+k!2o|jRbyLgbVYS>yYwqKt@X{_4bf@l*{k16b_28p{}S2)`C3=e6_|IGs^XqT6(>>| z%+X8+X9P-44-HR$ITQ-d37vj(2z&(KBG@Qg1Yc4x{ig^_|75`QFH|u77+|KSedWfl zIY9il7axP4fx$oT&yeLuAS*D5cpefns>)t1%b$e=rg8H@E!P}?oQe1+v{abiw6hmF z?c4=94|cXe&WG%Qtbp7EiJQNJ<=qY)Bf!dLEz27qX?Lxb&3lJ#2)iJ_;$avlv? z1s$_#)ehDNs%qD1$c!qc6YrCfSelgI68Qm$RW9|52MyjFkH^53W%V!taq4hOUJD+@nXiGhFHMy^F#)HQycof;u`}82RYP zA*e7=(Rt}^r#*xfN&IGsUo7$Wiv7JhxuSMt{wj&zD)Bsj>8_?dgqiQ!+0WfNCz83h zAFd40olhOdmHk0Z3b+0R#-sk`yJ((A zZv7C`qx_)czlP~?!tayza&^S5AC>t168~lD$e$_sH%UBKTj_e>S>Aq$A1~>LiT-Q0 z2j%@x((@?;?TwfCwG#iF#4i(jxuOqY{or3fI=azJ5B(3Kk3|^EUoGj+WcfHtxeQFl z<3J40UeP~J9Ty|>9rUHtaUnC`F>^_U7@q2-e26c>4?$f`e>ofdU14}i{U5;o<_fhr zoDI>sEXJS_O{bG5#xL!9uw@~@F=()6RJCpLJ2ZK zPC^~(!mKm9R3il@AR)#_#|~p0WLQ>i;p(kf`cwEm!usb1}=fdL^?HE{65oJ1Nbsnm%`S_2In_Ex}d zsaiRZSl(JOBC*RB3r3bk0rLZ*DrJO%Vbh3IC06tNswE}0kVJ2Dz@NNjmhirI(zs5u z%4U`+7^oPo)8e}3^<7w#kjqLN?Iy!@>c#lSiZE6`wAgmKcl)=#0+WKRs{l zbhWkoqE>Hfy=LL+nwW03wwevt!>!RecoxP73=3L46vp+1>$FW0V(6nBpGsmF<2VdE z;#^<2PTM8*49U1%+G~uku5Q;Cu9M+hh)AXb7^AR$6|;4_-L|;h7p~J0sh4T*5wTYV zdvW6lF)SDFhPtjg72?JH;d3pzDlHUMJL|U^_DmTPrG(h?#dWHX@tMh6fiWQM?TpnA zHI6wKj!;ruCo{gAFIg7Dp4%lJkJPwM+ogV{65FMIyX1Hv+C-^hq<+3QOlCgAr_Xf6 z#d15J`Z?fT-s7=P>bFOX?34QKLH%TC>^5(1&Mncd#-un*d<02njz?oZaiaWinA$z| z+65=7*Z26Q#$ht^E7Ny3dFrQYAN$AokrIb#v((Sn+uWzU)HqDndD?qjqCHQ4NsYsF zv)H>^t}8bu+KcNlec>>TmS=IzvWrGzQN`nu+VjIFP=A=ZC}e+Q|6Uy*4pkhvu=D8i&c)GqkP%BN02@r+bo=NHuR~GVI1hy zs33<@Rq%8?W$4+zS$v9N6=IV++Ae};c>_3112{~Y9A4p2UC@D#Bb(|wRmVxuPh8(D z;sxy$kKOzF_4d85&$n(r862igTjMaj8MsQU@b$yKaKW#x+xoV}LsA2`7>d*M$R!%G zXL?adaan2E%qhUGIjeN$49b$T%1VJ0v$3tIA<}{+qoRqC>tk8VA{w1$079u1YjMSI z0NLpO0|+HFVY>8#hLb}yicBPA(Yex}G!#>8oeG_@w74WPl@Llrx}RzLQzDlbETz8T zo3x2H6T~SQ2ov`~kuUJl#3^iv0$frTJo)qDB=J?be}?NDCkg9-Kt@Q)nqe__@>-g8 z@%XiyHy6jq%!!iKpa+5b#Y4PdXK;fO4ZLOeK=HfmWblEUoXHl}2k?RZ!|;Ke-Y|d< zR9j0hzmAR31}rcw>Ta#C>gurOFRN*4iCP=$n!BT-T&%W%BRFdYa51fXNhu%oXj#9qA-AoF}BEsa2ljT~HZq?QXGvIU)hqVo+Ue@xO+3 zjCO$X2%v^7b*QQqYI#i;q>yg}3&>o!-C+axKm+(dodz&*03S%<0GZwKw!#N;O`!*1 ze+FQG-h!_PR(98QbX~_6zhm!wt5qKLX@ND3qvoc1bp~}#TV3DQ5G}@n_P_EY2kW9G zOEHW2SJzC{!nMz0?{>tGYEPGpkJY;n>Li;LcD2WE(M+v&c|~emf}LZaj8VS zQECkFCIdk(#2c4N#2c4N#2c4-5UQ$E4Dse`tW^y0W;iX+A;?6Sh&L*64DqIru@x$o zh&Pu}O@(;F><;3MQVinFF2)Gr4MANT#G7ZS2;z;(VGwWlEw+Pr!+q&OyvaaSU5Ga> zm54WNq6_iHr4sSRr9K2zl^H|4QECkFMyY~$a|de5=YlcBn@>YCh&M#1QD6QBgO6a- zg?RHlsO*Uv@#ZJc@&xf_IGTtUg?Pi4l>yzN5O4IhM!exm(gyM7DYflFycv%GAl`5x z^0e9bvx4lWnf%n!1(~8aHh&OD~ zNg>|wTy!DcC^d$7!`BH# zRYf2#hgrH?;c@$RfMae@CB@?1umDVlXyv$V%6#v{(alq!8yo~<+ntx0ym?tqljdXq zUvMbZD{wq$*!%o6PrYu+xApi2)-ZU!sYILjtWMFC@)eE<{5bgW@Dt!C!Ltrtz!$dX zUk&>5j{?4IMn^~n`0_Hsv(b6}9ROc=!Id}E4B!jz@Del$S2XrAUb_Uz!T`Q-z)*-N zIMe4`*c-guGb8T;l96{y2JsdwK?VbccOV4uz9I!13>Xe;CCFgFaDXcL4F(Kv0TN^| zU^q^cAcFzJJD}L|V8C#UAc=X8=K0I}AcA;qIM1ujt8<+&8z<}YLKvEeD7~WeY=ocu0mG}g_RKj4u z@FpXv3R(XB^lL75J9|>N|3>T;W$l#)U^|-cukd{lf!`F5KA%|3>Xg7 z3Skq@V8C#+C#imiU{>{BcuB>soqX+PX(*}v*0Fn7Q!jvEb_`?2N zh$uMT%9)B28%bpVUwC_$R1YBqQ}Ocwsf)StGMLVNb@l?j=oAW#49QV=yqkl925?(I z13&E~F(P71(y_&_X^W$E4bhIyzL;^QRkw9_)JLZ^t*HJdt>3xvBx?0LssHMQ!vWlu zu4v1&$^qP#{~X+w_!aR1+?IbE+!oJ)NyKe=91w^@2R#xRMBo-dY6%ozQMnnn)5(Hw zf{D~rKCGAsxfl{dvdRTomRCUHHebo_5g-*#2_`Z9!Z*PrN#UD7mggcrMn>ury$K>Q zB2joIm^djslOjkyJ{bpzZG{&Sfy6LD;gm2QHaNggb`Yl|CR!>SlQE^^vwejtG90o8 z=`s4qSqq85jlvJX`}Ybz1Y;M4AHsMtD+i;Y12Q7| zyTtEACFwZX%7M-8T2uxF_U@*R18u(Rdl`0!YY{;h-3J+uu~&tZ z#}PVrzWL5>sYibobyxi-vAsxtmE`YX{2&aQMW5}_tC$|;oA262u>CImNh$ALl7B4I zqr;f**2Xa2rFWtY%+JnDcbxI)pys=@uTw{FFyECuKph>*d>8g<>gdeoyRMzoM<9Qp zws#K%aVgCHdrI_tsULA9hG5(5?^~(6?C+%RDt|2UBgk<}JUZjt@!x>r*1zD0F8OL%Qs}SgUC0J+7&XDct#HsN_~o-3S|a{3=u?5D ziC`%KwZW56icbP9kvw6{!QhQQeK{mHuL1zT0;`_fLv7 z(7%uSRYej$>F0O*(`Tvg@bzEmjI+vSPA@&XY(^w9vxHyhmz6N4w4`L#41|@H%{bfp z-9At|>N-4hl*OEW!zKHEzXaDsE5ca){r+lPr~TZ=X6cwJ=7BRhZUyT5ee+pmf4|?K zgX<0*?Q!$yJYdQ);3U7_uMj)9r6{)@*G}9594EImNAK(VeG<0NJtuOf8X4#?{!6eE z(AW3-5xMTKl^pHzJ@zm(R&GI#EpGJn{eF+wGwnSn_7=dN`#Nrn_VxY#HnCSF84iiP zO4u`H7+aKmeZPOmQ@BbZG%0x^V&A{ zh^51H-ufB*twYi|c1wE?qrDT{hGpAzJd)x8l*l#WBa*&HzRxzM{Oae22XH{_nZA~f zK{=1dunV02Y<8_G0kALy`yP9v`?QxD z58wx$_Kr!k=V@4n zvE-^Br*+qVQhR=Q08JQc)BOf>2D*o&6BnSrU>Hr8)Se$6K;?Ly$^73{X0{yZv6mVT zz}UM@_FsSP`QZT^lJ-?eb&6&<^)eg&^-F>WP*kL|$#liq)K7bUcmS1R?_pdx>F(;M zJwH5vjACua)bEmWwC?)%v^O;#K#ADfF9v#GPhIcPU*uNcv6mVT;F#F^e1GjNk#hQ#^oIH{84Tl~uq4xX82jjVs?8Ccw)+ zjR_F2t6v*!_kVlSxqU|icx06i9^-T8BEZu=>CL|lL-jh!14^g#0QCmTr>+}kz%JU2 zUzE1PJS*5x`+C zZJ()4ve{+ZP=bcKQ8mywOS@-=qWg`^(D6i>n6n_HEpe;$kaB8nhnZ+2%C;$k$Ay|A zJ*7~L%iAt_JwU5)<%N!q-`Ng)`=YO-E2R2tK)=>U&gcolShU(uxjF=F@d*n;E*tfY7n z7p1rw^$SqRS{{?NkzTb5>Ey;4YWQMnPAL)#F|`QPe9*trMs0OCQ!`w`7@-$c*qkZoO#SSpeH z+YR(7->b3mR@xYXviq5wvpjzu?`&NzIo; z)h1og*4*0)X=@l4kzQsc3hx@uMxr7AR?s$FN%&C1vWNTY^Lw6fIPpem{*GIIarMSdtV^$kLCpMqk z#8-NJb-IOjq^r9lP2nE6PAxT&j;{7FVJH?6zyeQo+j<(Y)u>(XRvKT?wpl=VL zjS++mI$FFWSdH!NdQ|po0K)!?NGEVox+5Lo#l&&$;}9D`*cd_B08)*^Gk*^eHpKOp zdn{|4wSB;ynDNe|PPq{zaMxpVnynF-jS-lQ5txlg_j&*HFdK~kC@YUVR6$7(RZ5=-U0;P6Fo`Gj(C%zY-}9|#JP){N z`Vo~%4+c%r8NMK{KP-7%rk=xCE7#THA!!So)hP5D3TR|D=kphZIVHG zB4Aqs44YDB9z}u{+wU(b3tqs+P+6Qk=H%HgTo%nx=rBPSC=AMv%7gkTnJPP1gUMiewML2|j!b@@{fEmkS<`5~j2|=F zo{srlWBm$!rXbHY)fPIzWw2sa6=SQg7CMGeg9XsVsPFQNv-<^Y1&gBD?gC6=DK56- zvL*_D#l_i{6_Rp_DJjE|$+fG~n+3jRdS-1NP;>BsNx$Vu@n+ZN%>^@gpqf&e0;P0~ zdsB;gr)pN0!B_QSInxQg!{$+~bf7gBQ5I*Eq3KZcM;n5Lr&_|I$BP|58SD4xRy{1; zz%l$i+Rk4$+&H`B#wCKo)J;srYpT{HfVR z{FP-_U~6YD#@3VlL2SL*5o~?gAHmk2eJi#p*+0TI)ygUXv44w=FSRcFSu)wju=QjY zU{`(F^RNwM*JB&ZZpXIB%9x4lYmiKtn914LslFVWv$PKt06B&~Tka#L^>eLkL7*;> zdI6Y6@pCCiuL}e&2Q!8_KInM@{646I)|uk4TuU-W+@U}KB*vOC{+w0WjLGsV`zau%3K5XN<@K_;UY@5K_F$g+|t3WF|0Z+ zf%CwYQ29jFelEmxus6rEcg3?m0;}4jA!U9Imi;1-GB1FggD8+P(H+o`GOr`&ROVKz zdQU>n^pX`wnMcqe8`EaQM%f_t{;GBWy*c!>-k zWme*$uqr`Fne|`-XsCjexepBcQXpkcMY05aDUdQv@$5FR+(m(uVL1nTb3A(oSXHNn zl;L`9#cD{IrwpqhWiswSOJB!M2C6f;D8pm>?t^61N!ZxIj7LDWFqz_e3?#P=8!L~$ zv1gG&7h38^<-_}AE8h;~T?fk5yvWJB9%+703Xn2+Ux}tO^KM6)-z5d4OkN1|X_YRp zMrYoF9KX+34Z#?D>9H$v)Bl(}uNNp-8Nc~{p14v#Ek%E*dd=A{V$eo4i z3Ij;}gd8Dd3b}CPadHY$CgaOUK14gSGWH`$^q=(N%qKwnfs6+r!Ao^3bzX-078cly z;*39`5&Utd)~V9@kOESMiy_9@v#<^3vCTZEaK~$->424yhyFeff~^~6mmJdvI4Y{{KC5pryylAcslwhM44H> zPoXCNBS;6b#>K|qSaz2{ z%BaQVWHqFW0yrRxgM{m$8eYfYe3O}zF%#rcCbKg?0^;*!+>VCu0_0Ei)j;Aez{x2v zrXiSe1~}C@GnEARdFCQ$I%iCfopTxVRzYR#WFHkWt^t1@_#BKqkYG-JVGpP}LTq1Q zpW)EFfK^1ax9=c6iMSQ7bSKy;cfv&R6G&733@GIjx8dqe0h!RnPUbQPV-@DD;WvAF{e})|UJYK4%*z2BF%t0tx zlZ`cc0StEJL$LY;t)6e&Q|;AJn^WyIQH#^)AK2&fM{P|uMe}juWUxDKgoy%HvJDM; z5TdA&Nd#7ineoCAwYSlGn4Zbx#Y|eI#!{)V7|31@R9{P;mU~>elH#75f5DZuY3jt06 z>)`mPz@ugWf7n?B&cRSp?}yQ9wLXC|j762lGy}^od;GuGRL(f-mjok9@qGEEN#Cj1 z`jKyxzxu&>m)+^vy5#Y-m;C6=nfsf*wmkp2qwUXan{@cWuN=Q1YI$ z2$4?aDTsB5XCbyDUW`a@8zc&5^Z+U+{|vf^fuKv|zbrhDGkG&lorjKm7J7w2)}Kc6 z)lUd=Q(lct@J3(#M8KQ+)W`&XDaI6o8tkA8gs+kMOn$oXCf^(jwuuqVS3&dab<3(= z{fRHm1f`cv3ERf{X@hpTZ>D`tdo1g=$Kz#mIA@^(F`tSEJk~t^aI|sEd6adVSO$Ys z)y-}jg-981mpI*=YbVGvU~RBUhd@gZryx#4oQ`-L;_--Oh~{_iC(k~-Zd6s*%k!od|Lpot-gNpG ze{$_9-ynDs0hG#GpB$ZX)$}L(gsZ+|)Aa z3s+qH?D^aO{r3BOPgZXGp!MAM&)VD9blxNX{c`^q?AwhWF1{mlX4Pvmx_|StlZqaA z^h5Jry~?|^JnIWjo}Y6^-d_*(rhLa=^~L&`1d;0a#ppX${`>dGUQm?%y#S8Kc*HWq zg^0XMYC*gZ@so(V5${0cn%Q3=zJN$qH5VOCCwxBQ>4@hbo{xAH;^z==L%bL9AmY=A zuOg=502Cq4L!_J5gt!&)V~95(ejSl6;1h_iBBtRCLx-pwaSH)t@xF*6I^rUt-%JtRX(`D2 zSc-VonF5MH_m3i;d_{}*+Z5e~C|dM`DB>-kXwmthh@Ozt$lC*o=$K1EjsuE#7b7A% zd=%09lY%_;Qp6)G=IQQJ#5({fNMDj7x|pIxx0xayYO%$8C5q@miq>;rDWaDuBHk=O z(c+B*Z17%0a@5@vr1UOKdE`==7dVLMWlLrBX=$0Rt|-%ErikvdXz_$b5iemPqK{1x zJyR*ja}Pyy%BO%L(Ai|gbUcwuS45QQE;5G~c8KUmie)}KpqU%65fL3)ig>p#<>}E< zL?>4&<4qGqyb}{GUQa2a+asa}!BRy3Rm}4@M-gukM8sPgig^Dc1$lGD7V|y^BHnh1 zGH(~C%qIb&Y);)2GdNH02@#!mO~nC29r1y3hE0etHXxtZT!w13RSncB*|HZIwjm}e zZ@ezKwr~gIf^n>p<==|_M-VR> z;vW}y#_vY~JLP4+^$JA!{@j$i{WDUo@-G5KQ7h%IN;3y+4a7yzo(XN8?E|1riuV(j zp}raESRfTR)nA%!d-8E%wr1i&U59^O(?P5F=IC@J=>vdP@ip&2eOPWM zXb$98Yg*M0%K9$W^z2^HmB{bXv}zM5_v0*0tBA!zJJq0Y^y*I0v}(S{D?s50*72?Z zw5k;JOz4L|;h5DGX)Eeq)jpB$21VD^ z-JogJE>PU^*IlP+)zzTvw;h^RT?I;e7lXnbuA`3zTGbB9{cY8>su`4eXbT;!x{aDv zp^td4U&q@h(5l6t?6+!7&z=j){hSF3Z&fWx2CbR`-UmLUX;lFz_d8$HD%zWbhw9a! zs7qmw;dw!JNcbQq{M>91l}`%03bSk$=zQ=W1g!vF4_XSk0W<_U4wU7YkA3C3U1evL z(9=MxA)f(CJ1DE{Ob4Z%X`ms{si15(_C?v73`%>*Q}*zzBl{qZBl;x!e$Wqq?gu>) zbPp(=Z)EQPtpV)^T?D!fbRlRLXf^0YP~e9_T}$CxG4$id&291E4sD+517c z-+MsOciFo^=YZ}4<^Jyk#ZD`1w@T1{@a&Impc$ZDptC_+LD_GcK)s+FK`TI4gO-67 zfU;jexUM>T3>m^*XMn~d&K(+xMSXapU->0_xs+5z#a5HitTm2T|SRz zk8dA-ch+CA|4uABE-EGVT{R-Z-(7qO3OV(^&Vz?OK7=1V1K)%46=VoMLWWDwAIv{2 z`Ipch@~b8PE0B}lB>VwT>K_sPMM#rBD*Wf9{$tv_bq?(zpC==RbELk2@W(`-=VykG zvOeesC7%yHxIZ^Y{^zBBelmukNa_y>zf|=H7H7+k-w>F8x;o8&3WUu;c8X ziR4jdzwH0LY#-td;a8zu#Kt=ey9~>ik1__s=P|Yyd51(lgY9wf7cw9FV2;lV(!L); zkKtw3519vc83?b=-&iT+41CPN_OqWD_>hMBLDAnV_49cW!_R3Safa}muRy*=_%}ew zpC&w?*^u8Ne685)7oN|ni3MmdcaCy=IrxWBmi=QebS{D~8g>wz; zGCW0l4*pchpD+1$v;D|lDme{~grH_U?uq z1|E0n?-TtB(f_RIdqJ6hx8z^X_96aQ_^IS!f0yWUG70m4Zt|tQUzPk1qfXX8A36*_ z=Kdq{K@|hv3zPr7@GFErD*O{{AM!n*4DhLxz5B)9&siVN+6FU-A6Ftaqj{I|D(wX^ zo}@iI&e?F(4CW3W*k$8KV=zJZ{FE~DdzcJC zycy3Sj1St|FYW&x^N}{czd6{q97p>Wl6SQKc9h3|G?)(!7{Q-h`9F2>EbA`4Nk$%GA&9Zv!` znXpLWw#za(of$J1gYJw|a2-pXR~EmJ!~j)la7)!;u40LrSEeUJN7s1_yWGGfB8iGh zOSh;sf>>(D73Nk$6nWFtqC~4pbq@_^PaI3hO<(+<0PR%2xs?l7ENNI+U%$4&pmx4< zEKgVOIuSjGn3Mn3XUGp>FzM=mA!p&EWQ|5O7>;Ue>A=|v^Yf&{y;)W{Fhd=Ivf0Tp z4E||d^e4N#foE77A!+8Wm<8rsljDuPO=Pu0uZSdfVG3}*5KI&?KW{6=gcv-U5%<70v~twz=HZ% z3O#p9&s=YF7U2u_3Vic^7?7VgocK8F0gNGpRXki4fRVl z)|*_*x?k+@Sr0=H_YH7oqd{&tqWn;}z>kZ)k4wQ)_4FuO+=6Qy7ly(GHu&_Lq|^aC zfM)x;7U2O;oF&Z+g$w+U6p~vdi%Vo^Z#V44`Rrm_a9)9I(5NJC+}ML+kI&2)LSk(^3*xVz5a zaWY7o_J!Nox`8;k0clvNl-r00mh8VHXdiFq5EHd8DK2n@*fWLtVb9$rsY(%PUlVb1 zxx?=LtrmNQQfMdaIfL7_v6l=Nc$3&Ozmxs4zXdhXc_vQtrvEy^y{!pxfkU`2X5f4~ zhAx>PqPcOiyJaS;Q~J|xWJEV zbJl_>l8BLn_LAWOe@{-#xl$@`YRr(N6530K3;YYbaA9~sp8ZUnuK8+=7wLk8_LAWO zf7i8tqwr$E6SX{9*PfcggNiX;HY{AbG}?sG({!>5-#$!x$#8)`EcVXi$rIrh!?c$S7x)lf*f5y(RmgQ;OV!r3zk}lf2WIM$yT!mp z*yH(S55|i$*=28VT;M&%o?PdSO8XANo*eQxdmQfi2dxW~3I90scOgyX0>rK*>RqR` z|1`X(fGQqOM{$9xk!IwOuSI0uTMe^NpcIkyjo<>0-~zv&xWGSu4{?Dp+!e+xactpZ z?6iQLYw&pu#U$@xV*=AgfVO~ z^qmvh0JK@Csxh|-0RjzTXU$R5zw?VLKnp$>9+S_ z?rvje6A@>dBfX_>4NrDPS$E6knV}7+qCIkfLbRQW_O(a4>m!TXdb-*h35$!i%`F91 z@Js>*$2KU`wk1>=Yr!eZuV4!)Cu*;>CI&hT2;Sod!rBu0cR)YR2%Q2PVbg82nz&); zB-K;0K@*6Ni$8bc(5oj5)wo&jU*k@Adp!r-L+lt2BN)VOcwWD?vAqunbt~$@tXFBE7SEg8(5q4AqEK_a$nR-tY&W_Jj~Te6 zy>lv|tMQJ*T|loDTT4`$Pb+(xy4$*XBi(p3wwWNwPEiyaS%Kk(I~zB*hXJ^(0HEc& z5UaWfuiV26j!S}D0sWrLT2>eC?CY@b%vJ;!bT@Xbv$(Bi8^hh5jqLz+Ciw6O1~Fdz zv^9qn(%=XNF%i96Ixt&gU29`=xVtXWV#!x6m~8CDJcP}CKovKjyFDh`+8XYbLdu3N zZ^^W!NKYGw?Lt!?Llomsa%CLH?h|8by0|(vqGg=9&5cdxwRA`NI-6^F$GR53lVx@4 zZX3ToIFpu3VOe)L-02oB;*Z^>xUjvewb5$pS<=}Y12(ss`tW+NvseF~)G&#kI@YJZ z)U%G?{a73B!S7prHAKOn_W-MMMPDy}%!}Ka*bj}}+aYr>>itShV;4Wtvo74x*wqRE zcdHpU;e58x&|^e6w+wV*V?OMFJkwiI6(bnj7mh7{9RViZIs!~Q0!;jW0hrkB%OwUS z9-zh9fdlT)H5Tvyu>%%3ksX}V^<&PHRrwe@Sh*&5EzU`b18Rw$$XG-B7OSDDquIi2 zCH++ji11Yk_*PLQV16>7J*?+6>L;|(d$qZedfRBgkBWh#QA2B@#$8!+qwmsoR=ah$ zERBK792q>;&V@P^+crxcms&DFr&=W(oA(*V7jN-mIKDCH-b^=iZL{ao?T*C4Z+(0 zmh;;Lg10}O{Y*T&H=g|tSk*uc!TVFNKWD2JsIE8!wh~bwc%wU@A$VUxP8D;jmGUg~ zOb=Os;C&Ds5(mNiCCD_OBYm>c3FZ=)=_!>iu<|oLiyT1k zegJ~e_Lw@5F>A1~d>p4~XCcYut*K380l{1FO(Z`Lk%HhY_#L=!k|P9f!7*?TlOqIg zfd{Eyl2Z`8X+*NUhjwPA5pnGyB-4vCxTpR=+IJ!0uBFaPV|$5NmQkGc5*ooDcWRv~ zO@v=S@cs`-q0JSz!Cb1NS==%n6Mn0R(RWkuQ0MQV_fauNzK5 z@TPI$?DG(1znt+hh%cbp1r!QG@J>ah|74^U1n-I9IGp@ka2g0YAamD1z;m;L;7x0U zo{gAyb6Pt{F5}j;3qU3#0)qEqko0nFY#-Ma`#+6M90czdAmA<$f;Z<@FucS7f;Z<| zCOy72=f6xE5WJ5f&7Y<~@c!Pg8iJP#so7lu!OL~hiq#Oje>bd#;8nw`80VYJoV4RX zx|z(*xDdqWOWTiz@B#z~-bIiA{{vk?2;O>ds&hh0;(*{aoueRl(=LTx4O9ezcl(s8viNbOhH&o`!*~V+37z} z#HRfs+xMsp+y zUq-e3XF)3jLn=hQ;*QTj+>(jWaK6nGv|YmdM$B&fF^t+Ta!#V4TXpR0I%QswB5%O*4gzyJbhdfx-(|IAf^7zDm@X z_8aJ*$GuAN9YQia!nBv&7zLxn(NGiWuxBc;p$3eWz@p@F5G?izhJ*qcMgJ;FI~W;O z&&2Il5PQ zrSBv1hUgE7uORwR5k0smh;tDaBNE{j#7bvH2nGa}jugXvl7FZ0S3^eq3T7gx!v$)} zv)`G&M(oi$BmXJk)t~`y?9r8T>Z?JCd{aLUg|oa9C6Mw&eOi}yN99c9(Qm|AQrTjC zY$Mxc+TyeYwE?zxY>W=)JkLVRry>H6S0X@JRH^DT$CB;i`VQJ+;G_Z4T+q>ooC{rm z$T`OZVF)2kLY$6x93p{V3GhlVSc10_(3L>41ZpL4EP-AL?n;nZg2oaomLRbNoF%X; zL1GCwOK?~N97|AIg2b|)2tZ5lSpw4%kd}b51fnGvEP-GNKuh3R0~$+!S^~!saF$@R z1hQ2CvjDp#h%CWt597f69gzSXC5Uqommz)#u@{l<{q=}2$#p&vyNohlKPh=|^xh?K_+EnacN z7Trr0q{lf06oI}AMRaLIi|#c=^tHv-WYMCxBU=2qQ;Vl%(c(y>D1?n@@m7W+`p%+7 z_kkk%6C$FoOA&o%DagA4is&SXh(0n!be%;+?~)=qq#~kUMiK8MMMM{dBKk8@BONk| z=$(m(9uY;ndz6B7i729%B>ly^WF^8zM0CU{qIWL^>83-`qRS2`?*b%;E-Q2B_CiEw zR_fk-TL=K__rggCAt!Er6V!e0m^*8+{?I)+HDb%DM(B-ga` z(f)D3XH7fJKM4@6Y2LKJDSrQz{-VqM`D^@@D7j9sT<=v7ufdcn{P`(${^O8S!yFCc zdiYWxzY@juuOyxz?*8|~!B~X530}uRt9FAf1kdX}sKQi*t3B&F@VHg0+o@^QRiLK< z8?;~3v$ugRMt-lRRjr`3OaFp)H-Xa5S)jDDQPZkAP}*6p>DkqwHON0jQ-!U%5d0MI zpj9DI_(D;P)no8WPDgqAIiP1h0lF6TJOsK9^nOs*djJ&vQ5|m|K&$qH;?YChK259k zfKqQas0Z>JG*y_Z>EN#e52`R%xt}}0gDT8bmb(}{d_0A@3aT(yxgV{NgDT8b>YW8X z0Qp8u73L~jB!#&OS_PY`KdLoVn5%e8t1wsL9oCgX4q7z@6pmzFNK=KmS^%E6;Gha~ zbt1aD8vIJo3eY0ZknllJc%L{FI-eAFvzLQT1Dy}L3Y6vQKw0k!&=4qY%N0f{^RX{n z6RGSh5n2sOy-A>Gi&X;3`XE#Kz^YLCxUJ7Vfa7^G=pImFmF@y91LZiwJ}T@~Vx4k4 zp-tHwN5ov^_?ZXF@iGT=KImM~3Q&xpGk3qUJDgP;pREl})}!cd(JdIar4pJyKe zrTlTwa?pdIIBwbZgW|D-!cLtDx*t3qb;Mz(QoalF<3V?V=78=1Jr1-Vv;=e;XclOf z$Xh`};5UK#KsSQU09_3_9kc+H`wwDOgMJQ!3QbSBMkqh9MSiW&JfRsv@5O;({#`6CcK{1@r}sK+ zZ}9HMmiVb`qIC<}=fpT&OCCS$`_X8I{VtwZlgxie^7+`rS)PwqveCB&zv4>r&@uQT ze9g)HAo`bK0qr4w2jmPtL1&ZSBm8Xg&@T}E$EgpVx7!SRq&)|vJ$t1+M|HMUB>JVI zf0^W)`#Ij0Ix$g?7v9{jDGW#K!{cHf=LU@-Df}n6KPY4NZx(s9`5|flAJ~4R4Sq=) z$`ObWn-k61s-pC;vh!~MYt z+2DUnVLtTvfP|q>>N6Oke9Of0ol?G^_Q78){3GOXL8yj|;Yqg7!Ea|i_HUEq^AWL= zzg^nLb~Es?1Tj5BXd{Ed=ydS))CXTG`599FCMka>+mHM?l7E)$563OTRfw#AkFSIWY{G9AB5*;AgNy^`h4O-eSX=H0q1&EU#T45JJ~;o zMbKlILw)dN!av9MfL|v3wZg9velp6i{rkn42~x;N6mQpn(%Wa|94`~ zU>IM9@_bBceh)?1S7MHu_8mvw(f%gb!+$hPL3tJx&=~LIKzYg}De6@?`H+`M? zPoXcIJdcf&zZr~^PXMa9a^0%U=VH2=V06V0K^3Z79D=CZ6^`i+f*v}ILIg2ewKxVi zI-p2mP^`&4;c?L7dd7K~%%eB(pTnxivA8jY7wTwE+)V#<3Sm%&sS7LAQAVv2 zDoZqbJW-QYsg)}lWmV?ytGV+d;G)D+a(Amt*p1QW{hUaKp6aJ{TL zJcLlLuFvY1EJcRGt2B0g0AG;dPHCU!^vgq&CLIc|G6X-3A*8mJ)ej#Ru9|ff+Q)Xf z!%%pY)nd`j+)dtlEQ+-($lSm=-#53D^cR(RF1;KVabgx|PL>~VZCJU+bkDU=)PyYT{dioN~JL^vYt`x4qGSvo_u(!Qj4 zpVexR>FEnBvKw<Dfkq{4Zr`R)Pk8tjcBP2N<3jeabt*6($zq?%a zj!OIT@nIqvFRtUUxviJ)iKNbkhPt}-D`E}UE%u^g4G$d$3q#>S^4k~;#-2T-y}|Jy z`J9Ns^q*&-J=gvYjt6<0*!v#tr5Uiq#2w-e$xwKZ9WszVC{}(Fa+`}kEf{;r@F0I6 z_U@1loK`YCd&%%1w{wmb!ntxE|Eo!wFT!|{Q)0sXO@;^gbV!#s+nSjs6{RkFgX2LO zd%aS8xb~9aL2i)#Iz{Y#>#eje0UqSFVsDDrdwH1llHoyqOYCueKf~BrnmV=#`!5+D zWZiUK(zI_M9;Um3%iiF4kX>RgBt{Ox9?yS^W9Ju_y}|JycZ$6;<#%^P+ES2<;VMjtgOHc?)rbt^B(jU~jwO2TKyuiDhouye^^M>` zj^IJQQ#{C5R()sh8yDGo->9)Zjd8rw21X*r*3Lzi^=S;T>s|)N;vH~Lhr(QZsb%&eUda(RIgpWG3^>uWG6jA{I{(uL7b*hBgs~iYH=gMynZ|NO?nBdas zZfj{BQmHr6HIyBw)D5FLsI47NjhiFAy^)TgD%D!UsaIPWtY$oh?M>`#TK5Vm&GK00Y{jD^W%7YnGKY?Ml zF!2v&z-|xQp5EiZ+K0n8Y-`XR%v38z;4J9GAL?15%Cd^kaiO@1fN&|l)mY`nJ4UEe zs*CGAampP>Gb%Qtcq^Nt6%w~5{ury~#4DQCs9$x|e&~4F8`oh4oTz($OjGbvMq>a7 zO03Ct^}8?S3AVI#W@zh-8R!}3DFLXVE{sTpdy37RQdk0*ra+70zF&EfVX@JAMhd-47k z4xxU@7geagAhH_YQ*lXMtbVs<^|VI%+MCyPL?XSd?b{U$o#ZT9wW`i)SQLr0i&AY% zC*}j6(S?U;;hy?PeQR4!ePee^xYugzYi^4y>BMs3jH@{kB^(yuH zh_(a-IWcCn0i|y9xlMep$2Z#QR}n+cs)^9c;*KgjEIbr!>uJPR!{oIA2&|zY3Vqkm zu(YqUX?1V6Am@!h^7ZvDd0*G*#dbfH3amK+cRVZl9kv_nV zS*>CE=T@)wQw@foumDc$<3Z?X>mgi@)383^4gj---QA7EF4MFL_-nALM}@Xs+u7XK z1bjH<2#eRE+SSz9)EaJH(YURxqpw2`Q6&ceVN+DDBoRQ#jX?6n0Qm508iC~dXNKhK z3FCc7vmVpVUyqjS^ES?g>dUQhvH`G&&fEbme+(AUsaDGySJ5>yNruR;1a=l%ENzlf zNw5oXk_fk}j~DRt5pG|uPbE(0S!XC6(*lR85jjg3S!-j@D*bD34tJ`%Z=L~`HYyOW z*pjUg6hgC1Xx-w0tKKZL0?8_WpVu3ihQ!wMSWDJbS}pDP$K}CVvT#|QwWhDJyZ1sa zO?uzk8*7TA#cbIMJfLfQ-=HIRBv5yPx&h0NAjNSUMV z*#TxLv+UF~ubH0VJslE_S+@_VILx}ALqM1XjahdWvx!;v9VBSWiCOmmc)LNtYo$NL zw8E_WHB!K=dj`Z{*8L4>V%BA{%~>IA?JQ1d_hi*#>&vvn(;v+gsXN5-WFQ93a3ubxy+58MHj_j7S+J^s8cpvt zuv`EmXnGmwiiaT*G`;8!Xf(Y-FtSU?~iAH23FOn(e$`hMzI=AkB}FN6*N6!))5#GXnOp7naB2Rge15T zX`tzyi!||F>{MR_$x%CywsQI7zXB|pYN?;Qk05Y)b}07_V0r_l7+XUb*_P46oZ0Znf@YVsdJIu1?G zhh}j^DKx#AU^p-pn%)8=zRsLtTq8~c!_lJA^f7=0R-G7g{Jp2FueE?P46j_2AbY0CJi*b zH<9K~Q_%F%VO6mjO)n2DyGzjY#v4|n=}j}Npy_dV)j|d|y$3;VWHLMB%OHZL$4ev7 z^qzpkek zpM>&EP|AzHC;~DQ|J})a#lcwP_X%eT!eZJwSOl8hCPi%82bvyRQDpmdUJCOj+%9GB z0af)F0U0P~{wK7?ugTO+I}?-{K+`*@Y>8!$()yEV{WYrPe-&CG7*fHwJ9fux?B<6t z8_wPU&jh4|`L{x_5*c<0Mx3<|+&XfWhK)N1>DyT()z^e%`dv&%5#w;0P*a9bvkEvX zAQuBbQH>z>^yKm1{OiVVpG8!-#gMZ(&4@chrvj8gH4KzX4;gMzHN|)*3=iu`ROb_) zx#P8&$fH+79b?N`7UBVAiF9UkIE$_vF`tSE+{Z)+YLs(NF&x#jBOFP!Mi?v26qpdp z6G4dfIHh_#VliR}u>^4%;&jAP#N!d!1|pLY^^E9gL{uY68BxrLU`A9mBApQt?fJ9P zo+i>7QPZwmf8h^_az>;zBCZ|1_e0OIABd1fbTy)$5jl+=$?2(AJ3Hb_^Y!gMOccNH15^5qBfk|*gR#CbgHAfAO7L8N!V^DM^;PrNcqloxl3 zc%>H+&(#$13@6x7^b#oIb#DqN0?+Xj@j@V4yhKvO>#m5{8tlBf>_EheiPU12AF>Zc z#B)5$(<_zoJi$}M^S+4aLsLY*T?+D)szfm@Ui>KHl~A>~DdJ^Uw0LJm5wEUNBQH4=@%kfLyyj5E zi;#%u6;Z^inG{q`B1AmNiio}%wdlf$NS#(8;^|gIyg8#*2pbXY14|KSJW7pp(kP<$ zC0caYDB{4DeWc^23dXdafd)l;5k-pwmm<1vVxF!NMf9M=JTJs(n!)hn9fjo3cce0% zPZ7~^rHC%0)WWMgMZ6;tEnem+;+0>tct1^11X0>zPRbNBI8XX+>@{9kpod!H!v@sg zv3Nr^f_pab3GfK+S)?o6UH-0NXsO4+vB#a|%ftLQR?mC%7}g0=)w8{)yg^S^f4`pr z4}94F9`{Rfu)h)9vly^kqBln6&LK4r_ssbWe+2XFy~I3=oB30w0ME>Pk7TokTw2bx zq5}cb9#ep6_W%s-cE25{@)Y25YE|P>I~B_&c+)ivl-M=6n$O}~LAU`50}Hf@>pI{- z)baWas(5$|KpDXegHY%x9`2CBY=R4r-H&{f$=(EtYrDc`!ZJ98%>c+$sgdjaPOE6vh?y74zZ7S&*svN`zu9N%mM&j(SpZgq{jLI1~f0nIKkr zr)n=I#pB5grh4)VUc$~fv5Hz;d?tDLRc5W_-?&rQ@epJT|HXVn`Z5d(3&_FW!+eMS z*U6)S=Hoe*<|({huX|eK2b^Pj&GG?PX_~wU<-bUI+hi=A*BwVT0i@ z@~Hn@*`KS(!Nw_cn_w8 zJ`^h#u2?cqQA-DXN3TIVxSg*6Jq$<&B^tS6u9DBzWR7Mui2^w&JPw_c43R+tG5}uz zc4y-R4}63<^9Xk!VMu(06D#H^zyt?ALVYVHkG4iI3)Xq@;|-`~y;Gco4ZH{;7@P#d z^VGx0wTldI7boEW)j&=D7aS{%Qz3Ec20QQ{0-A1vO6er=3t9{kdzJRn3mp`~B zu^{%;I{!pC35UfV9}Y7tA71+~3$Le_`fl8SfEpC~VGZ+JrF}uPPpYCg8l-(maT17E z$FN!xs{oD}k4H7^nPVhbia3r(LY#zv6f$L7q$J#YqUd>~%@|`eWn8bvy>g zNiaB&W~^;KE(4lY=_?Df)*xNp&J$0^E-*x6%fA{en=i1*32ikM(@8CEIlf>S1 zztFx73)e1HX>Mxe37^49*jp0KGKqxtlHnxWBK8bUf@hL3 z6Qv35CBsQLgEuD#yWj^h+(jo2VF$(we!C0_?IpuWc+s_gD`sgUj;+hy;5Z4!p89da z$Z+j()UZzX@o1F(!tSZ?-M7-d1ULydiap%tsqn@y?IpuW_^#L^&L%@inWm0y!v4do zP-W7+zkQ{;q-ozT<~S_rq|4smI0?JOUdWi4tIvP?W9Ju_y}@x3?iYKXlk;i__81N% zu{RZY`UkBGuzSeg4}Jc0SviOFL*S=_&i?=~9B_i>3(3`p4D>Y^*~KF`2^a92+@YO^k_#-KUYeF>!~jmIQ2qcT=kk~qpH3H`73}k*-jft z+T)n|POYSRHA`29dsRy^*JAy4q6}jDXwkrE>1!#RxOR7Bw$e< zR_wVT9%75EIsO4YP!oxC52C5oQzuaE6O@EOkr0ehd*lK+9HCxw(-i|#&q94 z5UqpmV5UZ37qFx>dT8Qd7lsA6pb;AI!LF{-=-Ff@e)%mp2{_RkkbcYP3~pS81+JUs zw~Nb=@L3bCn3p5cuV8#9VL12sV6mJEn!EGRJnXTYqk03Vuiy=0+ z2ZaJWk1o28<_-qmko2{Tc?lEumN#m91mB?}yuPu$FAVH}-g$Eydad>dK+)6&605hZ zBiz%}h?g%lE9#L}SQpftQwd#-B@yn5Gy(iTTc`mjdbIw%4R(9I?pMJ z;!Y^&fpBLd;1U34p@8e<>Tlo@aQIvjK*5-!Ru}H<>#%UC62S%d?A|(y+j_P!+}+vO z4#13#Ml@9u^;}g~W*}T)rxy-OIvpj+#f8ycOI!N>U?1q`!B0ADf%02jqNy&%@!8C_lCEP;5z_3q`4;2 z9_e1#-qkvS?-2f1!*}R4j}WYA%HTpco-s|DwOG9pUsbobVR7xc)eGxumN(#|2=%M@ zJ%)8v6_ehhX_(2U8^&52nKr@gVT@ov5VPK!eF`R=WlTZh)Qk+g)XDVOwRs(x-t3HwlQR}TkX4GjqAbjG%d=m& zESmAh%aE7Tf0b<=zAU>okGjuO6x23V_NY9YcCex<3pQ%==3}m2UY`Aj%Q7j<=UTS^ zTNn`6;iayA8|TJ=I3N3B>nx<|tSpS2E^}~3k-T zEdO)RR)`UYMSC|60<{%l#8(YN#E5ShhKLd02SYo881Yy<`)oY>23W4eGl&rxc*Cg> zBbrb}a8X}@Tp6vtcM|p!7QG%)! zV#Fm#uy-0zZ83~1#E370VM7&S#5WB?#0XAuWeWu{;w2>6LP3l;A4#@Q5F@UMXZf*7 zm8%gWegyU~l}|+dp1||*EME&da`WTa8DLcdHDbg`V86gtEl{So!tHfhK1H$79ngpo zA4D#@LJ%W%A-RC;LMmJS3Uo*uV#Eg^U|k9^qS-J+jJOKS<;($M#6F}y$@Iy{cofWC zWPlh!H~>|gh!GV2H(p>X#0ahiWM2wm#EoD%k4g|D9*Adu36{Gkh!Kb5Sx$;_+M@}I|bb$LJ zIgJ?6jwB%^fEaNBl3d#g#E1nTK#cepBY z1{2KvBDQ zm{R2wVg$c(t2l)i!G2O)3^C%5C=A4iGfUnOhZw;H$J`}_7?BI+bQmXM#3YjjVgzj~IS?agoIg!LjNlnhu^KUA z9awgkAV%=pA&S+A5nBu^h!GrKAA<~t5ic`~$?S}0Km;*@7g8Wbr1La&0X7OTq6i7q zIiFAx2V#Wj9E}*U6xm-xG>8!=;5x^T;5H#1MFe65&yEw$fonv03n=BquZw`p#D6#$ z8?GBwnPZJl70wid#k9*|5r`3=QpBcxAV%Dvh+pTWFmFPplpPDI>M;Uk8i*0kLTmg! z(fX!n0Wsnq%9dF6D6P}rE3#FqL0KH&6jN}G3!#lF80X0DXn^<-wCuBOo}ld#=4W7{ z;Kj(WOEBWBAh^rP31Y<6NRNgL=e$oNnO?~Bun{A0F}EJLd(rhoiwHjT_~^yp*_>uX z)ez8AV3r|8S&s2^<#7D@@pu)Si-##kpQymJL8*8)^V7{U!P5t#+}L)OWg&N2Ct?I& zys^%FDk9))tL%F*-O7h)Sk$GQ6rHFh;c`4+p0tv2z9kVNCLnTh7WG0xOF$`pErQ4pM1UZo1d%3)C_&^1qD>Gnf~XWkq97s#Q6-34L9_`XL=dgQphFO$ zf+!Ye9=-V}ks^q4K_m$xRuIu5fW9A(ScbR|u^y2Nr!GYNB;szwI}m?>_$$O05D7(< zi;kX(I3MwJL|%Z;N2F`rTrM@z!J&w*g%sp5r|80%h?gvic>R)s^g}4(^+U|lVWEgVjM(DUkRo0rMT-}H zis%K1EqZ$t@ggW%FMy?p*I5zK-9cv<01bLmlB4`Vlh+dg0 z7~3!Uh1?0cU@%XQQIzTFP?`5;Qt@EtbvK{{N;2^B11qQ{K3of{9;*Y}5nPE8TnWtS zFUJZ#eAubCr#!ZVegs$Iz3dn>cRKc5egs#dGrVfuNo8}&27ffq*B5Gb`uo;(gX2mh zd_gb*F!6s1U?O@96U=~$hoXpTI$sBA6}a%c*sI`u;$H!iVhL_5;D4l42|X424re4O zCdGyHNRV$ZDNcYZ=ftG=GWyTSpGF>@(ji0!0?!d+VyEyymWPaf5JM57llL;;q5mq& zqk;RS{IlfYl$mw7*SPqn$vf)*EqUyNSr>b;i~l8g+!O?$!>|TB>*OC{KKjb6Tb;o6 zq5fY>dx(=qObW9Ob&HGtBy7^&YO!A;_6gd|uz>dPkjJb$9YY?^2h6(BH1c?6V%B{g zqkTN8FzYt|L>~A1yGymb2SJEQaY*d{S$Na_e?$E_j{f{9d58Tc$UEwvjPejg!+ICb zJZHWi?Q!yd0psMSyYlaM<$u`4CxDPxxo(yIx>H?48Q=<%KtM!)^$E@o35=TAZi5yR zh=?f-wJX=vF9aAugBzP7THJZA8LEW|bYt)mQyK;|Elxih<>bsIQ)vlWehBZ z3&_H)oM_&%Df%yhXyNV>H49Is9uR8cBn3F}-a=bg=?K8LsGM)WEkK8XZ!veS(%+PB z2H=v8%@Ol8xH1iE@s4pVI%erpi@~)pJWpSYZxz?#s5Yl?GH|M~4$jw)Msbnrmn=nw z!YMFz_|%GFBhHC96H~#O`6>^_yWo>^TGX-5E^#!tHF`K%56+6EX1dGs6*S-)^*z`;ALpqV~1nlhI1w zy}x_J9xgR11aOUUw@I=Tk@h9Uwb&>2MoXbg*mDNAZDTJPuEj%QFC?@S_PC!1u)p%a z$7vojwl!u>xVJSS4#i<<03W+EEXOt483wkmNki?3QbR-il8weGg3QmxAQ0%8Av~l# z)xM;-79p``#$P||QMCHxWaDpeT#Hh%C*5c5aJ5f0+OZi5*J6gt-p7Wtr}j4~uElY# z{r&hrd#>?3IIcyd*t}?VQ2VsvtnOzt!^3!qI8ywf-pxC=n?qe!uYs33v z=c_n-RM$T#U7$?(1JDm4O=Vu&9tS@MG=K|d7cNe?^@`$JOhcN{kH}Y|=3I&7u){29 zmLjq~2mV8BLa$g#qPLJAz^%upayLh|DNX8y5EI#}U0gdDj)JnKj9`<*j{b^U@_e?N zYmJiC6Pvv(6(!j(+8M#MXzXfjYl8D7{hef-#AfkB&xvbsC}-kPjLDq=yZSY}+kA~_ z8|gz{>(fxZ4imm^TW4E$8o3qhEI#DTyN!80ostVeX6{ol4)OOM&Xu3|gTSX@%Qx!8kPQ(aPQm2N7w zkbW}9p7my)_3fv}TK66vpH_Kzy!Gv;CR+EtIT`dy-z?LvrzY$6-Us_{T=ZR4U#yPS zW2_%-epiC}%6(5bwqE>Xe1o(X?^?D-+WYur=+m)6F5G^yS}WJtL#UDlE}PTIY~kb88~Ke&liA4%GnP-5n}b)rh2OX)luh}%NFP249nFcm{p}d4baXVV zjr2BhV6BKWhpi|G=*ozZ$7D(pt^=}#Tc)rxV#1~EZC&fJc&`nsP~)Y`Bi(HmMzF*) zCe~J!g~a7t3Sxq|K+)D}mD%$v@Wt&jYVmVu!3V(Ag4jO%Fj_jp&3MMqE9+gCwl}u) zSm)`*uZn5Fa@w}$c+v94o<-qs=UOhl!&<~R_0{To#9OhzaSMO1+v9UrhFj2~$#U`C z@31O`&UQAT7N34^3pcBUy{b_w8hg&O_`PwpY&UK{%vf+9@#yiKvu%#!bYYg=u0BIu z-jFFvbJsPpLVU$Me&M!@)!%AHuddRMH2FRH8iKXz&)BQmISZJgeE=2hh(vl@+qbLb z#!_z4s#SGX!y@<#qEy?`i7V|HUBF)q_tZz~TibeMNopfKizS^+5n%JQh|KKgipbWs z@CM*A;i$?-)FavwR=J8X3kOi$a$ys0!s226Ot7jH-&p6z+G`@%-7v@bBCc$Pf6ZNK zXwb`{IXD^`qD!0`8kY8THm%09TYZGAt!lZoW=57?M~9koLGQ@Y>y`f>FTIY!d$fl; zTY6jh>uTx1?2p*u>@NM?_PR)m)z}M==FNThg$HZm@v6AR-)f>^EADeG-yP`ZBtZ2j$--e5e6#)`B1nY4M zj&#qlfVrm@Er%^fIjwDK!x0wm)!{Zd?lC5ftZQypU+qb>aCc-~^T@j9=5X12IqfX@ zx@M<4D(@84?Q9HCKTad=F86HS=GK~1!O2#VGSQO-_1m{t4fy(ig^vJe*AF6f-myBv z7ic#P35PSRPdw4vK;G{%*wH6!ns;o?<44c*&jgs6J6G0x*TQZ*0Zr3uxM^m7dL3IK$r4lqZCeJpD)5kg+g$KH-m|k;U z7;7Hh8W&>$`sEjA_g|cS#l?72Gd^Ik-2|I2D#jvpN7e-4m0q!wQ_RFN^nR{go!%_n zIX$yB561uxWc`*Wg)7|Wf+-oOrj#Z@DcvYd)+N{o?$VUG%79^~4m3gA%FMKBsuQd- z940;l#=%n0VS<)<1JDXtY%Tgxr32kgig!@olj^;ZQt#~)c^|~qpqs;PNkFCf1P0GBFVjJ*sx=+x{ zmrzBP?_QLcg`{_)e;!DxFU76_J%qL3sV^fB%jg0@%vG9&xm4p)>H=xwgzuD8)GmPbF45is1==p)`tb7&lY^p{ zNKw6>JMEfyHd;^{UiwH7!nA3MgK%R52kR>rej=%{kl0`4>} z8|b96TELz5sd)C^9*bf$c}kQwzA$qC21#aHkzZ z&L@~#ts2QSMc*Z>7jUO@Zs5kij9}`Q&;jh3pFzO70w~~;LaEe=`+kZX=8xP zy#LHJ7I0_q1HNN%S_~{`4OD}w;#j~PSPo`38XBlVU)~OeeHl1jHG~UoPD5V?W-0cJ zc=lYd+{Hk-%H?nTp6 z)B&=5T(9+A$owgpKS46>e%L^H-d0qzhv zuJ#_wM)L#7KCbp2YawN$5}#V_?fWU%yJ=^Z?^j6jL(FN#{-1*Q13rGt_K(b*=VN>S zf@FHJuOE$2C!IP~It4kts?1TaSzu2D6C72EEzeeH%P6kH(&>QZI|WL#lvz+nQj{4S z%Vk!#LYz5@E$=rRS9_2BxZ$|kd+bibakcl@&l--ay~lppa9r&@cAw$YYHuG;liMN6 z$jankNoPj|GRMV!1iyrU<1MoYrw1$!$ zs|d40g(Si3qOnhd^6Zv9f%|gQaB8);kEfkyA@1=i>n36#1fI z)oSmwSEJ5#MizY98n(Mw~y_#Ftii=*qfiyVS8Q7$9L zw;hBhzKm@D4iKNu#~0)~5Iw1x`~Y1#XW(*0cq%^+r#i4qNwQCreLU6j-CEvpg(Oq*rjGp`XbwfwU~ue>v_IbOyGaqh&P!ol(J?8T3KvqmOV=AWO!uMss?58@qYg_5ScxJZxg~IgWb^x@j+<$Q*B;t>=2~Z z@+|Zynq!CXi?CLJDx<&Nh)5P|6dA5UP z*k?SBXtL7h!qBmZoPAY-NF4@_CekUOQxT^lmLkqTq?~OpN90MS;FGs}maFicEAY90 zT!r8K(bvy+uEh7<{iVl-yBhynpICD2t**!)YBfGr;wM^#AH;E(j7Yz~7V#{^2;vop zpF#XOB0snJ3q($x{5v9-eQ>4lT*PIFA42Rv>_@y7@hgbmM&u=gjsh`lGI0Rt2G9vu zg18a!Jj6>8iI?+L#0L={N95W4ABc1wjz>HdaSdWKA{TBGU*$%`{fIw8_YZ`>%NKO+Ts^`wZG zQYlCmUul7g=m%np&Yl$HD4-T^2&W(-&^e)qr#R8#eI`Y8;6#g8V2XI<5-nc$DB?9( zYUK3~HK;2mw5TCDbZeDE+U1jR()pm9c6v>@a7+w5?kA-ayI5eG|Sx&xd_)x+XbD zYjpZ%q6N*vnnmI(|W^G?5 zKh;py%CoDP>V&sdcq88nAx_N=X8IRcTz&NXBcyRwH~P*uYGoa~KQeQ*v|XM;b;^{` zQ?nq0F5kHG3liXPDI&+oW}0hhSLZe`xEPqiju}7NLd~*8_!KzOaB6CnEeiwozqfn4 z=2xy;*xlVo26sB<69VAioW^}`z=#~*B+#O0t!jD*WN32qQvsSa6H~yUl9lTgw>9zl z)Tr73Nl&-~vzjsI3<|h0Hx`r4gOfU9v*jFb5B1czc#XL3SM9TWe#fHy0)KA$J^pl0 z=~#be;8edIsPbEZ+x`CZ2mHa5EBxgtEBsSZu1GoEKgXMPg}*fAG=FhQoj*M#@CU!0 z^0IH7-|}v}+dm`S_5^V$#)bF=#Oan*$Lly~)#ISJF`IP|6undTu%=b?ji`5(rd69j zanm@f4zv<IMCgo*#GREpcvZOJ3tFS`$2I7oV^VcKcnm}P`F^( zt)Q%b6DX?8-Uy1deA%l(ReL~LFNno<{~nzIy_8=H{ix8(gf0{M0imTRNBxk{Y8MYy zi7Oh&8E2yYN5estft%6#4NCmD|MXie7 zs`xV~UaO+F7Z59o{=eUuHT&$d&psys6}|p5pEG;ywPwxQvuDqlJ$vt2-@*2n?>QLa z=LILO!9%!6PM&`3d|zw)CJCxao+Dz0qoU7xV7L<(pXvJ~{r!@DOeb3>Ge2Y}gr5dI zUetY%F`Qt2#C4J%bLSN4;@9Q zE8}eIuylByM=XYIbG>;QGac9CMM;mz`TYcx zI1R@Baq^DicY_yIAoG)&zjXr8c7U-ie__HwQP(9EUmG*IljKJ$p%1hT1)ELSPVGy`V}kVYZ}Lz!42M! zVqX_=ReVKbV}=vTf+CS(DKkQYms+w?Qh*s!RK3gQIWaxGrX9EFw41MG;2Jd2gPQN% zk4Zlmf>_O6T|2w0+Pd2@tKD#k?rn*7Oy95S?rk6Hf>h^EboUKj)!f$F)&Y?+(mk-F z5o;P*aa|tFC|a|sY15YGEo;`U*|G*m8jZ~+OkfYUeVOF#TN5oHM4bbwG~^c zuaD9;`E5ll9etuxMvczFOEb-rN|{V`sRDIao>l-=(kcV_Ag7*Myeb0);ZD_gmnzFk z(k!b}t6HK`7pJA_yo*(8o!Zva86~fpuhL43wCWMH4?)Jxe&q=Q|rO-9dS zh>|`=jZt+SqedlHYo%(VPd`2f^^Tb#k1qJ`7Oa+|0)i?&;w6|2Ohm zRY`DPhdp>5VbC5NUW8U3A}Q?ONt-&x}iOOH|<)?j`8r?SR`^N`Sw9R(yheQZC|F zG8~6JXHaEz2w-o!)1VtKVwu!wi{#mjif8!_uF)T_9H!JR>=|eW;a9I{T9MScUF_NC zEB21To)kT)j6LbO;5XCiX>Xs{<9Lx z>R}I0e;uB9AScA$|C3DXQ6a9@r2#~kEqy_H@;R2>^Xzmwy|d#jl2C-ioHY9ICjbT zw%~j#oQ7pz?D2Yd!mM;^2#~)nfIj>IJb8KDqFlW9i(aitu0F>O{oSBcE<@Z8ehcW~4Tw->x4jvW;Vg-~6{6VYmV>>q zhXqirMC9?t@jHwwyfu#B(VsX6Ybd{J{En9{dIXpnzI$GIv;Uq~Zm@32gyDhqws)n4 zbYNnj=_xFaMInvlLA;N!Z}{`qURJp*3_bFbz_(mBr0_sW!JGWg0Lz2zIoPh*KB?If{9KJb2qubhnqm)klONJK~Hj*h;V@>)G323WhR z;MEQUiMHAppVY9#bJ8=`mEHx!hNe+;`eA)krNQ35(d22#B9PI5L zo7Py4tL@@<;f$D3a$FCBOK2Zf@8m(VfUkG*6+^A~ z5_q+mSP|!k*nu-*>gh42kAaK4D0We-o>zNOWp!0;P3_|OvFfU&HH+&=tC!Z+%*8eD z?QD;Aw|4ea&W*j9x^>BxfyJYde^57q+SQe5=QZCXCR-6qs@4|MmB#8_Z_aZxW63OO z*KTfAzcGx)qAtal&6*6O7=2Ym&D3HY<#e=~F&EX5CtGQ|UQMl1Ih!%{CmwSNm3B6B z`V_`&PpfA$h^ij5HRxtD)qxhcKrUU<=7Lx)fOO`?QVz6$tgD@!=GmxElkDyjH`=L2 zOe@~WqUbEC4bPM&^%|?m$|+fa|`J=0v2s=8|N+}J{oL{kjA zziUbi4B`MaxF`!^ICfv9oira^)eaPFM^`f@6#$<_cTw!NDm}}It7^JYnsszoEN?4J zy(PImx|LpXN1~uK+4j7&MaRPqZvDx?F}^b_aPjVRj{Tj%onGQh{2T7mG5eyQ~(PX*Vq;UQ1Ms)3*bbr>7I!?$ZVMgMek7 zgN|$9QL*;*FwhX`Iwqyr*0q|`wO&QNJq6vPh$D!{5Y5-8{*b6(7wseg&uYPXh_(Kv_$L zTmwYJ|3%cdWc#sut4!0`Yz1#vw{hUMUOYp00%D32F$daOF-1VP76oF5Tb2gj(;#t) zzTUPDNnfM(`4WDht-rGmSVwr{yN$?lPLT~L*N8EfmFQ{R)&&5n-l0J}RLbCXQ=ghn z&kN;}0QAvZwRoausN2GLNd#BoO;4l6Z4=7~M9|hQAmMcb&x-e45cSPRAILFfGua&Y z;%wW{_U!=F8wYOtX9jNDo^s0|I@>rzj`~Pup%iSnYyaTY{KAuTF;O3UHYD0RTVE%~rOd_i@V&A$Z2jNcD=afoTXG1A z(GRB)x^UVY>6l5_WIy;Tl(r=6n0=U<1DDM8M*DP?)kE%W!|tD)GaMbqNbj!32nc7M z^vv{tEZA>++-CsLTZ7ucLg+#v8j;~^N4#k1&S23f1K2;g;g z0fD;wm`M@PU|d0sa~4WMjwwX690RA8>w-qZ3kl5Mp(z^DaB2}JOk18oOv_K=wH3G# z-U$w zX3fT2t4PIM%LcM$ZAOLY*Clj_;nah9(#*DlCehW*bWH!hK#Zwja2m>u1k7Z^z9PogV@=P=+{6|k@sT%3y8i6!P`Od zp5T7u9&Epd7%0qt1|&CJKvTXKunC893ssp5%TaP)VKuh?LN0|KD10Nf!NPuQLxu0f zHm8tSZMjxK48->pY=XJ*!tatPJcg~mFo;SB7S6^tT-bnZw2&wW8+oE>7CxNf=qh5@cy_^o1C{K?-5HCL|Awdio+t6DqOelqExoYu&OnL343rGl@+dA_}!`OU8yWr z_;e_L9jq##!gUM(2&{rqQn+s6{{edsVyVJ)3)?54aNWYMAmst3HsHMd;WJS)za*=1 z-9k^HX0}G=CfoK;A>gqhz;(+Fqq-CWT(@Gn$I$gCvV3dqX6&EIec-wk?*c<8vd9@7 zx#xqb9KdzUy%@|}QGF5Mx`iJD!@7(pT(|HF?B0gDj3`{U@b*-eKyEz6h{AOX?@49v zN@YI_RvlB}x`huLR^hsZe`Z*9(X0r)eO|#yh8yzzD7fDjTntI{Oziujk#n%$$=%#w z9J>>`uy2*{pWO@=RcNXIa=V@vcw;5> z4Z9d6BJNXZ{>PCL3I;z5;UwQ=;!R9GjExm!JB@q?yI;UgZrhZy+>6WTh7?8CTtc;# z{Tkc?a)fFt%ZKVJa)fFtn*eSjIR(`gnTFl3(awU%DcJol?B>nL|1n4?93i5_@0hqG z!m)R$&IVrMD5G1555VyC;8Y0q9v=aWmkr>l(44se%OlK45c0j3d^RF zlov+JhCyG1xR6k7Ww#iPP;F%&G#sJY%I-8Aq1wtmVK_pym9dtT6+*R@Jz_Wo)fQnd z_;!d23WGtko6u9(4;M~Nw(DaMutlM3_2se}*)R(M)s{OGJA0S{sJ7fHFl$&$7}z*|C;P;HT;&?7d<#5*HD1tBI#$utO>pV zl6Mw1z93=KLi@0(oaC@~F9bZLNq}lA{wx^Y*(OcxDE^Y!pVm>#!zg)qN0`UqUvrXz zY76sNid9f;;opH}bxl%GZQ(x~RzbCe^U$}bR1MXpnis$G6%W zTu7(oFm3vuByR)*ICUH&AcH&ww?k{%hmp#n?H8?bU*W$wE&G+$nV5o3t(Bn6UhWHh z2U;;0Qo#(Lecg1-{5G_FeLi;3zFAEF6s8F;LUDYv(BiDmg5#*sXU#VG%+T7`doJ=T z)UTU-zLR~MnR6p`PxhT}=d0*~m9HbkcM}`GHQQt##J`Zi*Lw@hR8V727BhRHs?6+B zX6BgeH`-=?1T!5lb5fy?Dw%Crb4(^Ptn>9wMY(q~^Muhd2WxS}$SUYR#4_gw*I_sB zQSJv=Z#MoKE|QvxiV9YN1tp#s1NU)XQ5az8P!+`$P@gcVf$K$ge(Q7FYTk9lqH8T; zvwb?Z;O_hH{_VT=Ts`sngI~ELcICwP?|RE=b?IAfAdi50Pb9^K$=L#Dd#;(~SF%FMPU)=l8Ss=RZa4wO>AQ$vtma^3si0mKQxv zthTC-XC__c|L~4aJsNywp`DdK3c0u+I5kRtXKl9Bg%ir650)anJdh)D%uNy7 zsAzHgO%aFWa*k~M6meWHTF-!`=pIDT;{Spoj>g42AFC;VGx#z5SyChbbSc zzxT`a7&CxH;aqJ9aXWEh#Nke7W5i)d!G2PkHaTtVHyqr7{f6G(f&B(9 ziT#FwhRN)hNCc~}U}L}GNg@UN4SW*&4F&(JV87vjPV6^TeaZP3x`ynD6=3mbV@jTB zdYnEDqvg0d>h$pRY~M};|AXOpN#2WC`K5YFXm-wnp_72qR+jU8C=?zHO}-wY^Fp%# z-xhj4H1m1@xW&Um4#c-#0P(F90!2b_knK2u%-(XLy~xhruCPAuE&GIR!uJ@ z4%Z5#^SdKxeFG@%a=byi%Rp&|58|}L&o-d-6`-^e)AZ6Z(3MCp)wG_UdRQKgYgnFR zmKrlI;DbIskS=%G_4;5RrLaj1|ILww7wk_f0cNPru9vrJU@!wMyt&pfT`>MJ(4$P#zBt z^-7<(d0-Vj-a%ZqW#IRNE&{zB6z5vB7j!l#+t*T1wyPzeEue5cFWL%;4U#`D$ey+cxE7!jpuQ!1>=-=)4`)~E%?hgj``S0@Y2Y0~#0JabN z4`KVH{|Hi!`k(fXfIH@Y4%-*~C$POSup1S4HOk|}Bjf^6#1CY9Vi6b~mc^*4gc=P-RQh8DI||Fnosplu)L5N zT%XHehj@Pb5E;6ej&m?LJqyXBEuE0_JM}gWn+ho#bK5;Ntv<<#X`oGact3~g1Q);7#Xp9! zJN5ap*va!Hvy=A#XEaX(-cXf}(W#fmTfDhy0MJ4jzR-nonR)ozITY zDh1rqq3B(vOf~FrmCe&e<}7?{Ywk~Ih)V@T>bjoE;#8&2gS4k@kCM}#VVO09o*-Yf zU9ZnBYq&RGZcaj#B*nu(e9;U}=U)cR+1$KpEgp6U1~Hpd8(u~Hu`LPstt5Kd+~A#_ zjo(pOj+yN7=H{UuVn4OpxPLZgrx!eA2B=3PwqYV)Gx%q+m@*?biTdeCO26D0=EvGs zH$ysR^?J<3&8(c9^P3$^v?d*8RAYf=M;WbIW@^%_@@){(uEFlUnx#h7u5^8bj0rA~ zQa4&>t%fPBNk=i&IHf8fy|uW}P1DS3eAAkA_){q^6WC{086Z@FSWPqJhDf!~Tgo>! z>{K^^t1dTq|A_NluOz7( z$MyBZQ{^N%hKn_^s`=v25z@<-9l!Wyv3H-?xOr52YS^gi&kLV*ne-8Md&Wycp6}`l zGPURI_^b_L&pgvKz+Sd68b0d^m%SCE+EeGN94(14>Tb^~UFW+p-JYvGYrIH4L@~JW zEIEacAt0as&rP?Na*0R7XWd}_7?Nv4rMB=%{$0+3{J8y}eS3vD#y+VHw=lcVCSz zS%(yGU%l)kiR*kF<@3O24cF?76_P*97rd##(_SWg*7;&Dg7*vz^T%ip-w8eOSr;$U zc1-yeuhzU{>nh(U_^e`YSUQ9j*kk`vexdqqM6)h?+3{INmg|x{E*;j$8qHq=dvb^r zdvlPi|Ii%O=*f`eZ-oAFP%87@Hi#EPJ3*g%lVv@OF${-Nn-LixQjxMwM0pj4y|IS{ zP~~5l#~a6I9mi+wPH^Uga#uDJCsbp~(oT{yi=cU;`C;Ic`hZsoeAYJy?s?^LZ;V!A ztd0Pi)!?hX5U}nY$kX_&mSCq&0(~Yh>0X$<)#%~xwRZ|IOgk>S@EZOklE-Q$~AUc8K}f0W8;+%N9HA3}HW+zXf);2`;SQs46U2+BC;B@>c@W z)iGbhx$wA@)7DP}Lv}={(_R`jY_!G3hBY?i9R4yK*~f_^y9(E3C9cnkdrmYz;lh&5 zgcbYGC4X_#7tk(&AH2%Cg>8;?OHAArfA}3fYxvu2Yot#3D{o$bdV6d?(n<}^E%yH= zK{>X!b`d7OwY^=x&ODvFO|AVq5`);~5`{#<+oZs=6o}n=_{4VtQb)b@9MIr*iGBd` z7?~2S>>BFd(%RlRG_bx$EnO&@wzoVMAM|?5W^GH$NKL^1B)Tr@Y#;16-3ba}Qr0Di z&?`xr$&RL1)wXLF!H5R?huQ|!G4=UagZ8pAf0G*j>l*EVxjw{Qh{K4x5%(hAj%eOO zyWgMi=6e$c36;=c{7VAI3>YSihf!)EhIBph@>b+nFzlVAr2kjaqbRMsI>>T1uRe+M z20D;!->c7>k|PVw;m(>R4b`VFvl?cbKh8O=Ljwbytv&3?bmuVJk(zuVIooP?c1ao< zH3M*wBT;%OkM2$@c_i51EiAEPI@8P$t?A!HQYyq|{$_ZN?(Sy{sE+?^kc0*|YXjDV zPeN91>^1VFOi2=iKX%I$xN=gswyU%6!bJZd7M$-&m9FargfW)*b%?c9Wx+e2OF>Kw zrrW4lR*ku<7Z6f<2f*>V2oN~bGtjxCC(({CbAy?0I_6KM|48Tb_YU>h%6i_dJ>S>r z9B8%Fr%W|Rw^_Zlv&PXF$I%$a(HM7RL}LWbrDF)LAghvtbg%%`)c?Jv-t{|r;Hdye z%nSPP#Rv;LZP!D2{PEWGv~TY3ZA;+B2OPi*H?gdDCXX8q_4TpszkK?=)lO=cc~166kQb+npGps(}a6_|1$fi+0l^_|Okv9(+m5dWkd zXa{(FrLM?&2k`XV+p}U2K=Rv$1`{c%(&&?`jCiZ5CMLROf|Bzf9_h7m94V9J%7Ea> z*2s|s4w2|;#QS?T{|-H{z^EWaY;@&6D-Y?Lwr|IyxhY$kjvo7_Dkbe_Gv%S>Wi0K8 z>eYchp!&1%^z7p}EjZ58PIqP=r2tm5Idn=bH7B#B$Oj!YykV$ouoImf23E-)cEtc% zR~uW*rtNADqAE)^1;=v*PXOJ!9y$T26e#ayExPQSUB6vu1faiG<4pjC~kIu5jY9#$3kd;5ZC z23mE$8^9x^2i$6!7Va#`Zp?nWtRPf9;B(B6#7efjARamv`WdXm1FP{ny@Y|-OXt#WVKOoct z{MIBrY^!XR{5Cl(Nl#@~8Ih#tGOL`Bq@c_P@HnZcB$a1Ysg$I;%qk6%6wjcAvIIYNCrSkltnn5_V(x1`L*O&S01PoXcXf@gFRg201PhH#loBqgB%RUC4(GX zVj~AnB`a73Px`1n)}O^KYYg4>m!6Jiu>nzQ8B3 z^#{I8S>R{bh64fEiUy`(TW$rrAvz1YzL}wOKyrirPebBs!hSfI8|VbJ0&k&0;1+EC zfxEE{1lU~!1K+_m6nGKaoWK;6A=e5%0{wZ|4HSkJQxeYcodddWLO7ax9TWkr7@ma5 zQH^MA6Nt4NGYkQK=NqOJ%-M#S0){}jD$mq-IC2S?Ptrgh%=sgw`11EPO#GXWuUL~W zlnXWxF*ZX44Gu(%p%CGE0})e}5KRRlrZgd%3Rrn9D0@dV7|lH@W&a`$dk4OPMf27L z!$-i}jTp@b^J9}zur3&R1xz1Pa$v_F38BDTTQ|xg`K`P`>~9Uvjplw8I}nBM1f@b4 z(6`|)83xd|`Tq?j9|sIC-x{VT;S}xz`Zj+FcIwHT(Ge~VN_Ifsh6w|95n>q7w~=A& z93`WmZzF%kF3S~G(6^BaDW!^Rg3;=~@pUT#C^5QyJb5QU`Z zWhO?8W7t0xv0x51(RtWd6KI#S!BLx*vQ)4VT!}9>;R4X>b;^V{g5IF^!xMJc`vnsS z4EJ^=k4|_7v=;S5oZN|_HgKU}!Mj09eUo_UC*6sSRlpVzybrtAAo|-Tm-#QALesw> zOPt&(M3|$)w4XS+Q@#SOoE&j-r+gFKspJ$+ZV+>4teX-23xatMf*c+2ukMel+~1`_eZf-bmic}ICOW}~ef}R&mI-08VcB8(`Rq3xJawrhbAcz{w3i2Zjx= zfH=89!tQ+%lA_p2B+;VsDW3*qUr|Jy+$mo+oWjXfK*9$hDtsYy2qYL*<@yS%Q8<>y|w&KvFaxQ zoIQN9VF1n^Sp$Y8oTR|nBX0!D5>8T`UF0`lS;9#QoIO&26bHM&u&M)$oCB6sH%WoB zM>$Gf4RRUt)LS&fo{J`v>fntSQ)s-NIa)sjuLZ*v;$2Zslahe`Ejx z*4|`bKj&WyW;x7Hp4yTB5wkz7BmYxozq}*zF!p(Gnyj#&BVRVG!hVh%0n096vci6j z95t-MevbUqu;_SjgDp4<$I2tneR#^+8dE!o?F*x0-{Z=NAVF|M3Ry7KOHf z1cSjrsBsV!%q@63Z9NNdxU4yvdj~ii!^-2l%Wzpy(z@vs%A&OXCFo5_OFZ ztY%;js-~mYi8M;q>H7bZNM+3cXuAHxm;sQm#3kTGoUXf@X@|gn4e>XKH(=s*c_`-= zoXYfHV4w2mK`Ebc6Nau7kePY2liA~7tZDBN&SZqe$d_TUJe2p8B0kzL4+VdsNJyvU zFm3v6lJ}#a>NrL~26+k=qNka*6b~0H$qG;=l!ppeLtY*d%YLQxUD5iXtrfZqS}_<> z!8|AXx<3x_<(OX-D)ezI=9|Uz|5pM8OccX63r)lNDY$*)tl1`?d5HG)K7;(XF#mj? zZ&sJ&eSq4)xwdmw`1dxv3^Sqm>^ZHN$v=WN$>8fz=$sa|NVDRO(V$CV@;BI}SdQ!Z3EEjBrQp*|hEkYZ<|TlycL2G+$=v6n6nq%+ z%xRb6TwMy2zt1iOLA!H#%{ECXS~J>gAlfdN@C;Z}-`yOn2F9FQ|x9DRB@7{C6WP+GK^tmY?YHBK9 zyMN2xBUbHKe)-N{Mfdf*a@>)m^03L0H|NJc0C{u%P8eXyJcml!`n4N&|1ZyYA zI|1AY-cA5`0>~5Kognh8JA%U#K%Ri_1ezz1J3-v@I!>)1_&h=92^voTc!J3jT%G{$ z1dYEf^y9X3hTih@uP%xFl)&=@h9`(TLE#N}Jb~s3I8VTO0>u9+ch**d#}hQ3VDlBI ztfh$OBJ$1dTM-GIei!2B5IGF{5#n*g04j1a;#@>7zq1K(8{!ZmanU}A`0t2()_w}{ z=ZG&O7GlsJLtKQo7Lkv}U5M8rz8~>E#77aojmT%p6NvffgJFvJWFiOSvl2yoN|TIynx}}b14N5Y2Ndz4K}38HND*H} zR3IYo5t|}DZ;LIy@}P)sLL?*Kc~Hc6C?et`J4LKRvBfbpMI2y@ExwVVh%ag+BOm!G z;$2fj{GU_w1fpc*D<_K7a|^v4Ax{4NGpi#uPa$<{5hZONSOhkO7qlnMSBI2VMMSP|cTYQyA(Jw$ni|;Eb z;xmJYvfV5^u<4OmjXzLy6fre$T*5#<7zEZFh?&yOkUdj+ z!zlU9U^`QOj0VRC|ZJFEoPUFzyG>}pf_vp^S}3W3Xc_a zlgRq7d!;DEfQ4gP3t^!G^dFPz>ojL&9O8cAt6XjR9~|O7ISX(cfB(GX>^HM?fwR50 zcMkNm4z_gw>|+R?JBw+BR;~yN#wy`kAru0-|HPc|*^p!1fD~~K76O>YRQCV+^1!{o4vJ1bzE0En)u18p4Vu>1 zfnEXqO3)zW6`IzUgU$iZXAIDK=06Kny9~4!v>FtTplVHs9?%$gh}8ID~v!o~)A1avLvVbC){ z4}qQyx*rs1VbCq0yFkwe?E}R*6?K4a0&M}^2)YjR zJkSPEoLdq5fo-6bB9DQxUdlk*K*J)pKv|zB&|X_XkAc$82q^3AC}<1lVUZsKWxXE+ zZ3o>CdM@Zb(Dk6VgQ9&F?FL1i7Y&1+1G)8$ z0LpSL1Dy$44Z0Gv5|r05209(I43zp&P?jqUingcL=%D@yTrXblzsNwPpwP4}fR=?FTId-3Lnj+dSZ0CX_H-qVhkUtEtc5u+Hay)_2_J!@3_&VU3Tna=*W# z((i9r?f0*X>$OF$8OE|9dwsWJyI(Cqa@6-U_Mi0~!}hrEMQnHb_aO6r|9#jV#6lu^ z84*8B9>xB%SVjbkj07GCV3Co)A#4u^p2YU4z)@^R0?%UmT;MpiCjx)O_Qv4uAdVQk z727+4`>@>~ybs$4f(NlZ6np~PCxb_@JsNx(+h>Evust4p5!*ioheIe&Xb-lxhHl69 zKAQr#1!+v@HvonYu{_8>Ec{ZjzgzhK6#ILH|A5%LUHE?5 zL;iijUn%zX3;%Qo>1a>~5E(+k9~ORs9PfbWuY@h?k4XAQx_O=TDd>-;c=cwp&-3i*`{eYoP z^mhwCEae{&eJ;>T{e6=DdD=qT_{phM?H{58;2o`a}97!hcEZ@%t7-li1_8E{0sO_mc3xlJf9>!*E3G z@l8F$zlpu+rar_TU#K%oWq#N+7{O|79tVFL?IDlB{Oy%>VU!5Erv- zay{CyI}?0?@E;OBDm@v7$KT0w-^oAgN?-3v=UPKf{l{JW$5G$T^tZaw^IZHJT>Ls0 zFRP-MHCyDBmG{~;X>X_;9@ZYKtC$yYV>FiT9XZB~>8^WY%*Z3^cVv>m)Pi||mj0${ zjFug+eqDMcl#1r`rF-1}C#*m2%C^(n#Nz3BBa83p_SX<$)m^4*6ORbl(UQZ^~ zq}lB1-epa`{mXFa^mWz9PufKCfECT=0;g#4RdLp}e%z;0mGrZ<^ddV0Sga|5)o}ox zBoe)L(25}@s0Dc1w}X8%w2!rc8uwbWfQ#3n8Ya!P3W^c4 znKfUyVoUR@Txds@4N+|+zP_=kdCQu$YqqS}xN1#fb47DDCtdBZom`E_eL-T54(Zjn z?`E->-YaD_oZc5@RZljc>}uv}Wz{nN;l#UEMX(o1vWuXPw8&2I`bSmOW=~G8 zy_DhKVK2WVf1rX`#f*$JLz(^i1;)bdy$ zN}r8hKgwR`DXn_!6n&?XYi3Jb7qfOO>qe=y-7;M+*LqU6eSJ~tvM(34D0_0Pdoe2S zs>*Ie+pt%ba#z@5JH=h}^aQEQObLI><*m|+U7L23(xt1j6Fe(xQTF6lv22!V6`sd% zt)7)u^z?PJq_LzYNR4Mos2$5nT&ke<#nl!wEX68P^gJ5_*N;7iqHp5ug`|8r_7VY6N(hA~*zIv=qTkk9T zdPc?$y>A)HagxqJ+s=UXg0=&?oUm*vxYze-kZ0+bWIB%LeLQAbag@((iz={ZmV#0_ z-1b_;o~ha>J~YtYC9vmw_EnjcJv9Q(xE@)D*yFbdhBC3&4twSpIz?~IdS63*SdZ0X zeXfJ9@^y&4yOQNY4J3nOy(-W3$PS6UQzc6u>^XzG4o&$otw(muRleJ$eD_KDknB~y zjO%?J7km8n$*^y1<+Crc`}#)ZUDyF_&N?LJdjRE=BuUZ4QGcH6eI1fa=34gQgOxL6 zsK1Qsa~*cs+XZ`Uf6r#TzS-C3;yY9Z({_hl<4<^|3_zc>yCui z`dr_3o$vMO_FU~H`}$lz5PST_#_;xZdnuP>wDq}8o2czvtcmqQOek>$PkWix=ekks z-7goU4j*D&!P8!*^|_Yv#(+TY0fwK)6tSK|dy&76r@c(;bA1XQfSsXru9H*yE_;sk zuaN9sPs`XF6fR9WkI`PH^|?k))&();+q*DXFxhjJFZ=pjVKEew%m-nQ{Yxp{iA$4o*~`8@SEbmS z%RvRgQ7K<}277a$qyNx4LzVCq(5IXSFGH*YUkUmECM=YpfE>nbMr7dFg^^VpLo|Ia zcE=nRK$G@)yz%w9#@FZiOV{Ueu75OAJd;jvSpTTu_xSe9&s}QGDzvq|E8#LYg7vx3 z>~7^cN%y0Pk6#!fcJ@@x zjlJ1vQ0H0=@b7`%{#d;_N@Yz|b!;IPGOn(wo*&c9qFOL>&q&X@xpx5B(#jQE5bN%3 zuS}EAmvYJxofhk2ZG1{fTB}`MnRY5BKM#w{SkS$5s9RNzWM6evYmYvUy2@pX^@%J7 zRVR|%c;?-J!As9ztI3WtpC9wK;hFuSj?TeEN@iujY&`R<>}qYh+~iU9o!lU!I}hHz zt4B$5A+~q*whqR&(a7q~fx*_EHWmOg;ni-Xs?hnmUe%FcPq!wW@k*9>w2bPsTp2mc zLrsmARVvh#xeb?Sw4A(*?vvln1-U#7#C8bt8jqpO) zHoVFz*O)pxx|-pMn=!y*CX)r4spU+&Tceey+FZQtayM= zYUpfFSBn@VOOoXsj#9b~TaGUn|B}G5kc`Vb%?v|&P@<>87=>oNsC4ze*?LJ{ufMvj zQ9SIDO8}*2Pq}RRlEJma-r1xU_48hDM;4wK(`r9vA)|ke1&;pNmY+&(63W@hGJjN= zY++bgiD`VTrSY|v#@AZPyw=h`!2(0uQ*I4ha;Q(QR>R#^vpCIwCC^I(CRr_>qK5$% zZJ1rX#!=ehHs{2-D%^IJiiroQPh-i&ZM1^NvNhH=jMaBwwKy5cZ%MRU=fu@;+|pZ@ z!a4nkM2|ZcCRQZevK4AUA@_<`vc{9{7XPjb3?*Het?>m-#uqdhU(kdL#jB-6UMFyf z#;XPf6Wt5ro!k2HW@#ZFf%Mz3frXhDH1QZ}IoCAFwhV=N#Hf}XkA)hHih1jebtTLT zfAay^W2uSE%No?FH37~pATmC^FajF?KB!j~2qi)O6|R4dS->FIwHN_jIES5U1#kg_ zh;w0tJhMhYesYC`0{5B22t9~RIJh>N!~Fh}t=wloKa3b8ByZ?(Ci@ph!%t#o zH=-w&|~=Ee(uPNwi>Z2g6kQ3=69I+%wG zw_qDBybRlND{>l=--+FvnfU~+&kYv&J_dTQED+6E!>sr|6nd1B(&}hVGj@2=TpfU) zvrB<8ox2J<=i?JfDNv?!n+yY#>F`c4wNNcpDAVCRV2O)Zs!*oG#dsC-C|QLv9bS;i zZZxc_z;FlHuToi|OowkyWj~zC(oxBwOdw`eK!q|L{x7g^VW||#boduwpQdGnG99*0 zK%q>Be}~kcGqnNd?GGiorSv#k0Y* zF=hGI+;c&DxsP=ais=q@8<{gYa?iu-D3t^2Amq{y=TnFgtb-7K7(1-Xh*}3Bd;6d5N1ntu!N=KDMr*f2w^U5;9x(T%F+!^9aF7?5Pr{0Blf+&|u8bVcB0n%%2hY4GO`(VQyUIrh{2-eef2LlYH~A zjh577%YQ%0QnJ?G4_gsl=MKcevZ*BHh0(IBK~Ke1Ddf@yW$!Q?mo_N-SHp2>gR&1A z4jAJFWp^455aZD@dQB=TKo~DA`<&s_(gqQB95+H#P#9c_BZWA9DqJ`<*{**A0h>@E zmNv-E!wwr}A(l4CJqgUCOu^Cyxs}*qYboT?29e$1eh$6j*i@2eae3KqK>rQmVlHh^ z7Qmk3)Y1kKPCj}O3PmsE{}Ch@R^^%nX~D$cH$g(Hun9*8qB+lC2NtZ*7A1)$OZo-~ z*o#KFv_T{v|J^*qiFZaOgG@s#*%_Gy!k%ctn&2rQdCRcz1#7SkeE^%vNe+8=LBLa* z1Q__@17LVFm^8Jcm{W7q{NTaVfP(N=5y}ldhs4k%bWY*P z&C#4cfm4+;S4oP}D`zqx-XoQ;6Nk!_lY_jSO>4z|7vj4SDpCUfmFZTuCsz^wu7!0XkZvVdS6%ZE`pf&99 zv4i%_V)|kT-h>3-EVMZ5bZ~9ttY9r_KhlGJx>lmk8^CVfD(>3=(lDYXKtQMhav&8K zNKsrT(9d1)>$3<9JvVsU8N=JPscbkpr` zosTr$<*DP97vi+M1l~3F0kS}#jjX`Gw9RuvQ&(q;i=u48-_QmG=3G14|#3Ajr@T>}0Rz?UGr1PLZk zuL0&I*scNbCD1Pcf(g<~a9;ul6Cjvizyu2>fG|OU3G&OjBY-c#dkG9oKwpCS5(t<8 z!~_#2urL9H2^dUZ;bW+XKOoYPe-P{eznAD2jN)k|Ua) zh@Gj3coU`;@5mzJU63L^F^DbR1}Wm5QR+)Az6B8Lp^s>p zu9ad2XV>iorP~D^=)zEHn1ed;tLvGL^ZJhp7^>!C{=LCqlW&Q=058W>bsCoSbq9_e zN7JoZR5j3k`9dcs=fG713;#hXW>a6H=bZSOMz41Dx-^!|?_dAHL1CF;11wd+zcGRui%ovued>(%<6^wwxR9Y6aBCX3pVg89+gsnU%@AV zUs3Q?e+>jz9Pk_mf~%^&6wFo}C`NH-7 za=hL}5+Acp!IMk_=&7K5%$fsQ35sJXTtv|N7%ij?N8uJ?e4ua(XMxiGY|t1eYEC4J?P{ARiM7qWF9?6w3Yn zXsO>{9?Jy=8`Hu(DI}P{fuxfs-Y8Gv7%GF|f1pdess`bI%5+4IT^LxOPX2pLcj$kH zJPOK}n+*HOW52`Lhm80}yYQD__#o4>@$V+@DDTbWaY2kv*b*0i z19=?J_;^j{`8oLGOvmwlBFE#o5HIPFlrP3~2j7Y^Gyhge{{_==p^cB$)8v6iWPGf+ zxCilwjE~g6lgEWNK2CR%2VkP{!MF|f`DkbA>x;tgmGWJJ@^j%`Q@`&c@34OtdB^cj zMt+Fw(11NB&wVHVbudo;K^O1F8`|wk-{j&2{{s%aHfW3KXyFoFH89wp6)?pkyWIoo zxm-4$&H9avO)CJ}(M;!IC)|ujhm+x$nKhl|HwEz0&Wt;gMLTIc1$xFShXH6A#Poct z`Eu`~q)cv+>5e9&!hErsySjFESG9GwcXjq8giCa9OSHEq+N&@Zf2a#moh8xTH+WTZ zTWebfMa`?$uA;AOD`vy0Ik2m`S_cNUBybx_U_Lo6Y4cDIol4tnAKhl-`tId>ZPIwn zUJG_h5+B5)w&dfp#_r&DnZoffND-9SfC^-6`~otIly1!;!Oamkn@0NJYL9vGn>X(B z%u|!e^WAn}rxI^jRvyBu_7`8ebeY><9KH>MiT=*3-M->HhL^wi2>LQB##H^vE{wi2 zQ&>J1h7q#PDTkP+MThp+CiKz&aB^x9Doq!f5{DyTl%DQ!4BddzZkT6gkDF{L?b}iw}#v z&5~P zDIdG?F1Q1^>n|*04^w|(@sGa-ewfmpQ;yKwoZbICD)!8Ofp`kp!f5{I6I}KtjA~C^ z-;Dm}C9d-=Nw?=Z-|YV9Q^np<>8GZq+e>LOqxqjdFZtgsmG->LKO16Cdzt*tjlX_C za$Pqg?P_@1%jAE4BOkU9s^s2sV@$Eujc6|-^0b%9|NPUg^ZWE%ZO^fF*~{*KZtOiP z2F7Ynz4JsKxBvP3q`p>*z4y&?luYktE}w`0`47Zig_!xl80}^9KmU{1Gydm)8lyeD z)=(zh=Xe0?OyZ`yH7-|tS!?4FL@kz87=^9=2m)-w-MC@J6feONil<(PO zf0bfy4s`S%T4$&d{yFHc!#&&5@`X$8oq0I)q$U9 zD-n6TasP8OKy%-o*eVTW>>T|e9`i8_{YZq-~I8O4b1CIENk8>h=fiI7`8z64 zG*~BpILUV?`(YfP#|v~M%Y$;18a)g0zp^j9ahP{HLMyM^cw#5~Z8JK{*CoB&$Ka-( z=J^hHV7Gs4S8s2BWzt8UR_AF4U|p2CvD4^~UsqXOwRrAaxa6l4^DUNxP1$ccfBwe# z7Xkqb7PTeS#<+3&-IkgGn`pSx*&n_hVRXM-xoqou+7r7@$BXE}Rmsy+{95|LpAIa9 z3p66a>Eiz*F1^m$aO{h+pG-WN(6b$f%ho6U%qA=&WtfI z?5i>brUf%4Le8?_zp3u6uBM}M4P(o?Ijp$XzA=8vJ8SD2s!v~bKF~N3xr?QZ&iAtW zH}hY1U0Qru8nf?mGOO47yK%qezIDBL&xNmTxH;P|K9%ovqGnmOd}~|V)w*NAy4>N! z+ze#v&h}K%y4Hb}aFp9Z$2z#wrKsaFbPjgzOsww#BmwWrDXAM1J6bcRvcFNe5~;b? z18t=<(T;o=3p6|AG z^|oE^6!j+t68$^TR+Lv{qNjCR7nt6mL7?Y|XXmEA!A`sy=LK|0fH7jOT0GG+)NKK9 zLh2sE0Jw$I@L+5Ij>O;qz9VlK8sw?3=;m87++t4WvSB7A??(A$Hn2r!Ps>ej(lYlwy3h%-|KM;)q1hE=V7^t!dieU@9> z6aC{p%Ulov9e8igO8&zgEjl@Q0nOUMsF#G&iW(E$cnZT)mSv`uG~06=(6=}Siq3t{ zL8Ie2ZQQ?k+`oC;zxn@ye{*t#uBIMfxYjv%DQ$Af1#h9GO=YBm`e8mg9Cu(Os)zF;I^ zzN9;xxj&7x6ld=5L-1il?aciUlj+R;1a@{KI-R-sqQO_7ow>ikedWwOf;~8M{|dx7 zbH9RpI&+uswMF46*!l`j$JSrS`Avbs1h&CKu8AEg{1CP|g@>>;&fMQ&DxA504C*U< z9$SAQ=gb8Qxk`Ar@LX)8h1;+dXYQM@3uo?kfzX+obK(w{g`zoq%nH}-3-A_&r&v}1 zr(!z%{Svd!%5v#$7#@@~-yE<3D|A0HE5GlzV~3gl7hft)gTC_nUW%P-@LopweXlbN z{k|^)b178C?|T^RMTp|}9l&=D9#s6kXQi?$4XgdWF9G{oDr>**x1_S~NoDU&Wgh~o z3aI_Q=?S=>rP6-iKLVSJD1P7e3249XUm>N0sST=T=AmZRkrlshPF+j!`~DULJeKnN ze#tQO`<@KxyO;vM@3TO;>YnoZrX$Z|WZ?IGHr{=y?DYFS2h7um%I}+QyR1v``(B9M z-;&jS-%Y7(Cs>}M_d&g5NjiIl}Mz zy^uubVFSPKkAqyq-C*!ukO^Fx&nkHWn@6yRDipu(FN2#1zi)c5<>JhcQt}S$ht+;q z`GD*Ff|8Fy&gqG8UM`^%4_%hE-#3p8zwc5A;P*WXWb!H4SV6YaNDX%HqkZl7eLr@4 zAku!{KLke)YVG&^dvJG>Q-0rn26rDh?e~2Zc0Ugh{J!biL`O3CeSaMUe&6qd`Dvz_Fdfo-&eg}Vnu<%x6MPQ4GmZ+aeGf(XBF68e3! z)bt+Ge&5#`PWgS`Y&hljO~*c^srp~tYF z;`jYM2-u>O-}j%uuwg2{??Om_$rSp1b4gUTCGGcpKR7O43%_p?`hC;Y@F>LE@B4R# z(|+GSMFJ<9!0-Dwi1>X^f)sw=FN1{WOQ-z43(yy^Ifd3LiNjBOBLwW&wBPp<==}*2 z_4T_P?f3mNu&gfe`~J0Iwcqy%!;0TGo7Xh-H}L!B^tfK`7Uf?F zB7WbztHAGj3M8QjIw$4#O^|d|Ib6v(JlWy*Z7N6meRHAX2B;Xn@9VI?2k}1;SK}rN zzwfP3nSL+!DZd|-@)>LKDVhQ@GtYH08yt)^tx-6W5f&rwf<^d!e^3!0?ZfZ;9z{Yr zEr)5-w@ThNP<0$5AcH&wFF|YC3DNTBn<5wHqhLTM(3bs5>wQRNdGD~bLN#DxFrc9kg#2)9;6%5J&aRLW{Ewf-50s%{KXtDJu~5?ni#L?)vFI-^sqs z%vnj@lYQsg`6{}gt`==SoekBRW3rn8i?8=ZnAwB8Wd%N}WVR)~=hJbFN1%^>cQ$tO zzR3Lm%WONKqqfuxOQfiP?g^)mqnxcNK$oe$uAs$PXrD;I=h*r$uiN_2{uVl=Z-4B* zPyC1FdunmbXHMDp!B;*ri1Zt&gLoI>1Bg!`K7}YN&)X{is~UxTJx+@u&fzIfW!151&m6;PgZge8bV@fm zoI%Gg=A~3bpgqiB92Q%#E~*Z9A%4>FK=HI zvC|hV_PG>sBq<`^>ycO8Rw3djK=Sk9gvy%{MZ~)xMZ6`7i1z{JXOD!u9MFno4qd3s zQG|$o1(u?F5GxQ7IFzD@gBTGR4{+XtB;#RdP-{1$i1=_sQ7@vDg@Xr*IFb+%2R#%$ z3@RcuOoWKttk~k1idr0IRe&P!hD{OgPedG2QN&T0h&ULbh>uSq zipUXp6PF`$6hbWyNkqh907ZOcl8hV&P{e*+>Wj~N$~-nA;^>ni4rwJL$EHv;j_-FS zQ#ejz3ded-<_J!X&!IHUaD**pI7p+2`d zwNlLB?0!8Q-`UQg3OlKRa)xD^@KjR5G2x<`rlntis`OhgvHE>~fYX%^0jh|;QNFq_ zZ0sGv_omkgOVR0&s^*Z6`^_gdHCFX?>DS&1S92~^FC1$YHm*KzU}5Lxj@}+9Ecb8` z{|9jo=aj?^SWcw%AHvCb+;2YFSjPS4U-P#lXE$X&aAuseHtsW@SZTcP@mRa+!p)t# z5?xMF>VzHbr2krd=3QTgv@yIkvu}xkx!PTR8r|im<~$z?h0hF?T_4KJIWJTYK8qgo zAuIf;P$;i7RFZRjs5B=YnxAuS=$r>bq345TAuA`a@xjpiJfA;`+bC|L&mq?0;g9!V z(E4XV&%%S$2q=a?@uxMdKLQFjrLHG6z4QstMMyuSX+57bX@~cE+PNLH0d{T#T>*Lx zDDC!v;zl0t(zL!Ely+J)t-l16dRsv;5Q#TwTE7`I2tKZ9eFG@VbEc-3R)b=?{(?$S z42rVi14NOI$oY!(%!en&q8KP_DSv-FD=N=6@(|Nr(K^s_P>x~hL75M30}3wy?gA=* zF(~aa9d*a?j>=yr6utw>|Gx~BdVo_?dc+L?Yn6a5!$mm_v=S8OQd9p3dJ?% z^-RM#Xn-8Y%ZUjEQ9M6PP;PJ!f`Ky|R{Q<&&3=DNyWii{M<9e;f74dK|A6lSpWlDT z_k=GPc+z*o_Y}CNeIwW&^F0R}Dtr@-%ZZOb_%11mk?ZMUw;WvUh`8GM8DGz<) zig3(ba(u3xL_CIJ;g`TR@eTGt&cL_Q#A7f%qUVuE9Um3_^(>ErpU8AaeSAsES19^? z{H6ZO!v7ERqoEm}Ov2hRJuK(DNcb}030g+H1>3m#bAlw)8pDy|PB>fMP&i;+ZKQ8GrM1QUDKj8VmegJZY zJLLQ>mh`QX9+LE7=+It+*pEPu*Y_l;zmuqs{W-#4Ao{ySpI?)RKM@vtQ^=ziF+P{y zVSaQ-Y!?jt?!Zo`MELW`Pec2t(CPmTQj9dyUeMQBGjaX)Ncq2y`o{Zi`+63ThdyyX z7|sCY2O-n`t|0F?{!l>Q&@%Lu9xLnE@WdTPulPk@2KWsaM5UG&VM;fLyq3%K0UYX4Td;uFWQoE^}*j zV$xE&f^q}yhr1WSG{$oA95Zt4X?vduD(lQRXj^s&uP4$1BpgQzn1lQs< z19zwvyK%*aHO(uUnzqOZVSp?% zsa^mkRR&Wet{af6KB{V#n%s7kXxmN{5;&|#c3Y|G;>~NCtC9(x$6lh!XJeSSZRi8l zEKW176LdZs^u(Q8N>FEVdzL`wwy{#&HlzfLj1Bwrbix?GRooV(RJE{}jxHZT^V zv=Diy$_2}k;aJtY83|rX?Xp-h)YL7lUA(Afd2L-Rwz#?$3AGBIrKY-iNgZUhi`P2<) zAQMgtf$JGe`3{J^`;z6u$SoP9e8dIu#A!Jw_NK_m9fUn+FqhrP#2%)Z_9wOvDBOb; zO)E?)o)Or%5X|`=nW*dU0hA9zc0Q+jl`kVsOH59b&yWl;Jb=5)q*L_PiCe-GcDKJ} zVh?6iSY~#FciT4h2yjIeHx9~XvA0z+ZiYR!m*9FlUx-a7aa<2ioR z|05$#%WT*A&Q7=II^XO#E%U@4pGO$xrQ1tsGNa+NEI&!x*)A2he2(TFTTgqLa9TdX zsRjrM$@P&_H1F7Y+RKE~62uD|hBi6x;9Si=fcApFGJ~hROgJq&Ds?8a-BD-uZ0fR? z9jC?EJ1X@zR(t9j8xHBlEjfFhF2`0W&e==sa+#gX<@3O4xlQcJqq23|80}@kX?aNO zJtX(JhsJ0x6Hd#{YJFO!d^_>t(iL3in;oZRpV%`u$9=HJ{w02%-RHRMWyfjRhZlql z-;(>tKD;1h*aLfV$y4m{@1y_FIzyH4w?h92_NmN!M|)iNsV{E9JKVffoR&tUGqTCQ zNhrvx3R&FLWEo4(6gB`tW zAT%phujoak7QNI~ zy^O(n;b7toIJ(+k@r*J{*c!l|L=C+GW z8N`aQ3fgtJl*=%a&X%+WE9My5fx3(uW%d5ZgdIYiAN!W|!&h!vg1%Y&;ER`4J^1Y8 zJ*~ueabnxB4_@%;FVjz^uEw@oe{2cMsX{rAZ=-$FPgZmB%U0zzWZY5x7HA$Q7R`y} zbGOHo*Bl7H7dOLK?2z>emRYw1Fc>8k>()kQsPLw-R8ia%?@oder8KZaCul5*%EmI<>YJ9FR~rW; zLbR#r77dc5PEC_%b(0EAu^?gE9Ih|r+&D>3@{iNu-0?C^Po!|i%ka=Q-km>@@HO5! z2^^-C>H<~}OjW#IH8_*%R<*0Z9u%kxzR_RU&@Bi~a$vA{>kr)28Sln@r%4?#B0D9l z@Qd3-s4UyN@SakRp;pZLzAoBm>cASMPO{bM!(At}e2sfqV@G+^03%k=4~4?`dsX)fSI;H@9w7 z_*4?J_~MIeth&Wm8jwUQ*0p2W{k9G~a)@=Uj<0TR>Cy;DRs$CimbN#>F{E54VWyl5 zl= z25dEc7Ga|5>Jpe(b#=>n+8b*@<)I6>;wRBYl$oKH$;`q|4^J*-|QurHP-(*!BHBNk&bc()g%lx&C>kBDMKZtmv zJ5JTY(Pznb#T-L8Z)`7T0xT+cFIFgoFYhP^Oqk2mO1&#af?OeLwVzRrk!bKpR!dEEhIhAL|dUETw-eS-n$>J%C?afd$}o7`rAg zT@(0b&NUvZBQY_YFMAo_&PozVE~%E?=424xTBe&L5(sEIAh|VB)rlmvW_L>>s4o~AUAImfZBIpQ@NPZv&x#6dQ|uU>g?5?k43$k=8>`Lg>Wv!@)3@K8-+OcZ9XI1` z6MVDNgAL{qqR*=Po@$P#SM^dELWkpIT7B@ zPDOYFJ$y1@@f?RTE!}tm`)ztDS_1Q-sd+03Rgp8qPKX7Th#jR^b?94t3c7LP_;z6u zC(gW67#`_!PXxiTg66i4(^~)y?n*C+=SC?}oR> z+QE-P4*d?5T$}F5MyAvWOINZJm@(6+AzRRq@dRu{I#xLOIh@xCTl3fL*4C|gn!=RAdUMa(Y_0|HV zipeyD+>NQ~J5yDDvBjKrHA=_|f6S;$m3lu^mS``bYK1t?%N1pSqgsccSZsHT)|L;632q@a}|(8_aOXS0pT?G1rXuq_@$J}PWZWV zq0B}_75p60!`PPsKQ|e>1kn=sx#g)Uaq8GafuCznRqsqyw?b8AYWTT_jH==1zH3ws zKbQMU)b>|sSGY3oFa+S|eut0|VtcFGpg;p$jc_{RIg} zGRlq=ZbbamI;N0c#nq|(a3P`S^nPC9hp~UH3NI)mlm@?aBmCUxJfgz@e(rh%o@Sp; ztdG-g!Nv;mJk90TQ+-I0(^yoLbNQIhVfWhzQt)$QegKV7XbOIA%F)u*l zr(GI;E_WXy{vAO%Gjj>fK{%J8?Y&*k#Y)rug%&wULgg}#FQ6!^LC zA%JI;f}i^n6rPw0ehx1&DA*STKgTc9crGdUx!j>RL4Sa>!y{uU06#Z|Fm}B0DEPTC z&lyd@&*d&e1Yzy+U&uQQ5e%z(4S`L-&k-jsgg+Y%Ki3G2r&DO53UR>CEk*!u;|hK* z_im*76G95_&)tgMEclV@b3Y9+3Lfxt+aQKUu(5+*#x}&;S_=H!T?k;42tQXq8yCPh z;O7dMQ|*s!E_lT31Agw?*yp7w@N*=MR;q@d`x#WCweQ4#)E0e-F>A)!~WQSfuU*ioG`0=KIa_&L)#3Vts4A*7pw zBmzH|`v`Qt4?P^`9z?Hk3+G>-6WdH2#Z5TBj1_!&`C>K;`{6 zXWl9H%J0CAUB|zwDfX(LDy0?)t;xoknNZmAcf#s!T8-KES#~Y!qimjKUy`WJ+22Oq zztBvK2iTfyvYXk19e)aDeor&48O%Iu%(QAVCi~5}2h-VYg*YNbET{`@9ELkhqCS(B zKugqUs;W&F|E`Pqk-U8)cdcp0(iUSeejO|>g~g&=n@Rj@XH7Gi`VyHxhs=%4Jj`Z| zGi5fJ%mCGnA4cZenR$4BnWuje$%Yr%x`s1&Awgq_Gk6)ve#tO2bod!6krkYc?#Qjg zLEVA8_zzu*-Jv_VpT+Yj_eyLIL(R&|`vXKMoB$VuMQa2+j+SyTgcFX(l@dANsj)-R z1Pi$>&Uy~~YUou27aZ|$$1@c(LYGubyXvPa|Nf7cXOA!Zcu8H+@YdgLnDoHYU%I<( z$ghe%@px?YEx##mxO&um_uu)YvKPO)?(3t!`jMttdua#$2>fw)4)zIUKv;wM@XO)X zz&FEhfZq(i6@DB1PWZj>JRlI(J6Jim4xV<9``9oz9&PFbzNC8>JoR!aaG#a*1vq8t z__;LW|6TN7OZ>H>bLhY7HpDWBtRrZ@FdmxaT=x`v^f^3~M`-IT{c zJoB6StLp)}DUaurvp!BVE{1y@*9%r(du0jYIAdTpv92tiWwPD0&GJ}h(@v*dWJ$A2 zFhrB42=VM+d=aA@&mk|6MdrcZwK~7pojea2hWVhyuO;|J0(CmTN~rw^+ z*7=sUpN#(UMW5bt`iwdr|wIT{6CWqn>fU0DvtMg#Njwv zW)O$ll4>_p25p9ypgD3$a6TnL9Ir4H2QXrb!(|3>@GL4mi;+|u zurY{JS4qWD8iP1wlM*?PVGw5!l96*O264J2K^&Pfh{IIL$ms@yI13T;oR=_&Qx(a` zK`(%-T}j28I)gZzmLSe*kkH}`2R1lqk{C7ZLnwzq62w72 z6LaE#AWjFQFb=+Hnd50m%%MGlIL?<;JV_bE@v@}iynsQRDolZd;}Dpoa5#)u4v-{q zElwxKaEyQ;4sXRWS2SpbYb+8p9I>jfWPXmb8N{Kt6vlfkgZNJ^89BRS5T}f$mU88A zd?rC(Mhd2i!%Id^T^Pi70KX z9w3fL!69juo&Ktv8LHMJ4U(V|sm=^K=j&kBFvXeCq+h%lCT>73FZ*WDCx1R^_RYAi zK$n^p-zOn{@!!WW4Oo9b*A3!Kdf+qqKLkuZ1y4S2D_b7p>kVD~5n~EOXIaa|t4`6w zOeg-`AkL%*_~szaGMtOg5Ce90%U z#xQaykR(qd!sKX$Fxed{yaT%z08R3Iz(|Hh-Vr(t+GwpIZfJH*xCh9SdExaMfif`V zbU;uZ3!M@EO(+B#cJ>P)>zG2N944rgQ;|DLR7zk{KB{8!B<5_yoa=}=78;)YNN7p+ zrqDQ;DuJoR&<&jBJ-3CsL(_(0$r+Va@)(7|w|oHq`KvM5=6^qA^j^qIp>wPN8SRC9 z8+48>AftSQ9>XWJ&5#&V)ih}tB^E>-)(1IZgIrq!xd!pewTxCnGT$Odz-`pb*D^{b zsCwip)^cqTB+KI?dzOa*hsyUd20U1NsX4A?^m#~@cSOszhafLQJl_m}jP8SEyEvv| zySQM&^7lZ}&TcKEJ0NLiyOwLYz;Zd_`4$3Xl#4Fx502ebe?ZdC21rcYYr3_Jc1U`j6Nmdd~Spxe9cZRquU{Q93Iv(x($+c`yer#tGQ3h=oU!!-(6ZpH$yUA zFC+$hH8*P+?SN$ev}ze`hGe>W$PmJ>(lUxNIRIApq>$0&(Am$`TCSZB$$lw^#AKkR zM9XL~Bo2Aa6fL9UAlXkvTB`ET!dg{5^hU^9NTkiL6rJ`aLXU`E0ExU781~LMPvK0;~zxHygtex!;m$Q?4%1Ic|DvDc@%O5 zA`Bv!jA=f|_OLzn_3cUyt=S_YX@-#>bav|h#w43;_Msc>EALN-I^@v4VJ6&0@Q9LQSe6_7=cJPr`VPso2_s7japO_6tr z+$8d1k>`oz$IGyr{b!M15&0h?<099I93ygsNH>nGA5QEc)Q{!t7TG7VS7g1&N|6zf z5GvnG*;)nyMdJd1jtyp2FRuwG{MgoxK;SNW3-Dqewzp%u)82)x#*sa2AF*=+CFMDR ztLk$CH}^uh&+bF?-oR6VKwy910Jet%N3cB>IF9YTSzEILfd{g-Wd*agXYI(^32k@Q z9&De=+K27ItV4)7lJ$JnQE11rUdHy`;MO242A>KBv-SrM1P?+x96SPTTkzrFc4#}n zTNVhs9PAAR0$W1&V%rxYWgI@hM?X4oY}M0obd+)T@a7Q4N)~R8bhlE6H<(*bAe`|B zBtDDw5Pw`*$LbLJjd~Fz-9Cg&5LN&dswrw(ib<@kJ&`ccu}9)yni&5=5O zjP?DHpJ&8{k@W&&!ZS0W*WFZO1xQX_`c|7ZQ&b8$Mgk~ev{OvNc6W# zdb8FrQFODmuvYXw+@I*qVENeJF8Wf0Id#5dS$xV=!?-V;=%*j#umnh;pryO9`+}R&bL&kGacPZvA0Zg z){F7=qVsJ6;sVc?`X0o&=hUBLe)J#L`RI6Gcj`l6hxSNTNq0Td=V5VM`ujVy=g{BI z`a<6>@!6t(Lv+3=!+72&>9}}K{a2!sWsT+CA>}QQ^8O_8pON;xTjHOB4c2$7)IUe! z-*4&*N&A13{70ofKOylAqJLiW-%J1Q6#X`--^-H!G>P9W@gI}=epmE})c5a_{ywQ+ zJ;Ld}!2ZJdu?2SM-pl$z|A^?nhaKwMMZZM!uZsR(tS{ofE&6$)KPh?-Y_dO!rTkye z{xIBs5JtCvI{vL9qJNt9hhvN+I?po>Mhu47J+u$pV}o(@H`pMKvAO;V(H`O+m%}by z4Lo%|nV`d%N$Dk`6Qhf`$Wuh0Cwj5yIij2EYaGr;mbV%8pnH_@j{CtMsXOZb3Ux>O zK8XDIC7fA&HUXR$IOD(I(i!KBzXgT$2;+s3;Z$P`8IvL-k&?3|vO z5AOv&*%P`qCB1&R-M|n}sY}OMb|gy1uOx?Cq^B?M92WT@!0+ ziZzwC#hZFs5!zpE4bFr%9c%08-dNYz(AbQub#+UYEg^1YLwolsg~_^vD3L2;*TyKTJt`Ygy}Awoq)P_MN}jrJW-%$G1>!;*@carFe>QJ z>Co8Htn>(J79$jLvq8@m$YwX{_MCJ;Z7DN7Ldw)w+Wi1-t7wmg8X#`J>i9u$&-RO` z7zn7h>IsA5?N@XHzdOz#c?KpOraPKhXvq+^=rFxZr*f6|V=e0$^i?9~P$I&+=LCd2bE;YWAeg(0)(344q03Y2Bu6tnLRYpzW1P?Oi&qiqL^5FL z?gF%(Ipt|3OK&71ynCZupGTQf%_`?Ob@HsT+4CYv*Dt>Mg4qjn`Xs*k;-1!Zv1(wo z#XE^!A%EX-H4J{WIP3Q=Rb~>eN*Ene35%X{0J?$VtQ*c2E|6omY~6c_W!*^wCy29d z>~vvFPPZBJ8mFUervpy&wNBu6H_o*sbCf=l2@8=ly$1`ZGTkyUO7@4d-Y51%Sbbt| z6c$)h<^*C@aISrE*0+fvu1(Ty6MN%e&y=BK^j7To;;bKc)$h32yDC|~lpb~9dVAum zTQUdcoJ=_^@H$=k@lZ%CzBub!rPDja$kx;J@n}N*xFCyZqgVZWan{2!2abrn@ag*e z6E#gZamT%I){Dj7c*$7|drs%m-bO#1_2s61ay~DIJ?`#DdpYlRJIC?x#941vtJazh znt7YgNVVWsKR=xHFy`TO=3EP7-GKF*gN1%MuJvqXFVGaWSlOW4?|L& z%U))jbz|>k$u&@WJZo628)rR$2TF9UT3CT9*+~lj`g!22w~IaLMyq{*_WW?xKPdJL z&iV%jXwMI4{lar~!%Y1yJTKW$*>klwGtT-3vDato+#6tz_m}D`^v4+3b=k{|vtEP; zk#sl94XbE{)*psFDI&$*S%}t`CPy{;C41^SkiHffn3&H4gID22bI9r@+*5In2Y{xpC1+zHBV{q#MLp?~GmA(iDq3`zZp&)t?6WhR^dY zkN67#Fsv?RpMFlh<%#@sKIxV$yC~LuW4!Zvol2*RKylS)RjjcG;B^~)?En(*yv{cQ zXFW%K4+tFa%D2+HqMcY5Syn~y#JwMTBCmI4*dFqp;72R}R%u(SQ_>3FxK-4ku+?qinB$cPuQZXO`tg7H z$3ISYW2B!b=DQo?{ka*t+Mbfe5i^tu6(U5U{7rg*Xd1qa^fy4fu(#p2}%IwXq zY^$7DKfXTHFuvZ=W((Nr5rkU^@53u6w9PgfJo?8RIQP#^u4;R3hQ_(qb?E)tiQ>?| z+P-qv&#k-r@?`6IviaQYGj>iDUcS|wijDuKz|Ys{$y{=;E#%TbrcQj{OWJWS76}4WW?hgc| zUtz!dgUox<0lcQL{oX~? zzx*kQUqj{9;q|ZL6KS%4C!}M`p{su~4V& zzHU?j13FuFBGoSVJ@C8X_rmXkKLCFS-rz`kuB9XXcKBlP5GU<8ha7g&xd$^w&;=Ox z_&VO!g1)hO-t~IMbIl@C{a%ZBu1nBoYDb1HNQvr&#%tqfO6Z9z37!ODIY`nX@P9|+uhO@)58!=*RYBMI}4l+vn%RA1ku{CuFHyb#2cH1!C|S|=R=sT#?F=wJXyzz z|23`g#_OFy2{s7c&a7B_!!@ljP)zi6j6QhM2)TSXF&O=qG~=4JX-g{tOMC13z!B z2JfV4Yf)=GmZy?0YkM2I!s@&=C@rLWQT*Q01+;$`~e{y^%Y2CoZMGxY92 zGA%K$<)bXw?>C#{|H%2mzxN^2e{TJ!)BkAwr&E8411H!}^JsOR^~bCcZ*5Af#9E-) zP?-{R8`w!X)|PXT^|j>RD8XALbVP}u^PtJtEm8cCO(&@}yLqyH??G>2ave$J!aKI9 zu0V1VaexlI8D{ssM38#VNyqE0$#qpC$tB&gODGXKG{P9zkqpvt$t?jw=uGagwdMSK z!dou5CvD}-oieCW>fFh#DQb_{^`a9YdL*5B;R{VRyKA^82j|h3CfBG$lC-|ON}^gt zdKG@J#66H9%~KM`uXuHBYRzt?tn_(Q(BujylB88|kjvzsnae~Io}A@mD>>UmLc;HX z4V{T%9w|RL%7mCodWI#cv~)Gyzwt*eBc8JUdAXpI3%l2 zZXsD0AS76eP3Rlgq_Cp=1_7U9bd7CWq3<%9tSI}ivl-sWin1TN9TirTpHoq+D9>XL ztSEnhFsvv;P+78~kPpRDd?3UVcs{~-3W^9jpfSW$k(Sg@iz z2WjX39osmxC#z3(C*&USrWvD0fOsQ67}Ljgk*O65f7WnJgO?0^!f5sykBE$5YiGKvm^k zguGedgGQ}YDv>W#>?KNl4l3(oUrf~skrhM{sN~_^hoBrnvi>`~B2Za@oxdYO5vb6L zQb?e3Gn8N9NwW~Bd=M)61B5_@j45o65U9*fRaYBz9tsSE+o9gb#F{{b5CabNfmD?M z0*+W>WvV)90+nAtoz7}#0+l~PC8B{4s3aPo2~-GodoN=vRW%l&XTC>O2vqi?XHp1M zo?nl%o3V{kSo=4e{LgGOa;~6o9 zpTPcm)PA_|!Nh)E;STJ7K!q0+PKI278fgNR&maZ_Dj!B52vj}|ar!oFtRTAyDBh0|Y9}eL6e{RET|hhFuP&pl}Jc5231Tcuis-1S%~^ z)Q$iUs8EnVr5AEPf;E8(yFzJ-K;`2`Qv@pa8%+_Ye9mZ!K!upeDj&!%MvZyYXh{MU z)*l2ahfz{!KlW1yRE{8k=ZqpyA+QNgOhuqF0XwaX8E@M;>^7b)nm}bPf{E=60u>4p zs2qdjC8h~fh>)x_O`sA(#NUtr1S$c<2!RUz8cCqSn@MN|_QM5T1=;U|#?vXZMuj*C zRO%7He-BNdLhP9Wco3+33t}QX2vq(Pq5>WSDnEu8`W9^L;4iTa^RaEDcsgV4FY`$-ekQ~!F znn2|zNVgJ641vmTpuZhD2vjIYpmGPKIzoy-Ws}iRJrJmnJ>>836Y+5w!LvZ1G8F3g zariil;b%cIe8Nr%pc2{TR339E*0^trW-`L!kV+T=fy#wS*t8D9}mhjsKqH z{RyNh#{^J8o;-e{H|{!&m{_%LNJgA#4|`PE63YRVDx9ZN5xqvI3O$2V6JbcX#GJ5g zJZyXtsq9N_-q7tyjQ=t|CYp$0l06A$sI?Q?+0?AbCf{xxH99+f1@b?^{NN~=V%IX~ zBBq^UU*gDT(wiBc-S$D`QzQ`^gm@*9bJD-Ta3b$nKY&Gh120|c?6t5we4%ag9&X!H zZ_p~^rrwy`wZl?0na+V8L?n<|-!pB=vsRr?;R_HO?k zoJj~SLhIP?=E-bLHrdVO&~AGMW^(bt2*A|rNjs4|*}^|SOLQojbvg}g;YC<%uTpK? z!ZuoyjWsi!wBrkKn$^?lM>14y1lp%6_Yqw=likc6?RYQDe1v8`nZe9lW9F0EjLFWi z1)bgYU6^@_WvEfg z`q$1XGntwbnXg3Va%3(VYOB$v{{>KHGLa;W&W>+I<~7Wm*Kf%t)8<6xpCEHDGw1i0 zx%_iT2C^Gn!>PO-LStK}@@6Rev*x0gK!c;YNz>rW!Wr=>@?s=354%IZ$^9(e6>@8^ z`7Kn?;2ec;(BR_uX;kLmu7PoJBHh@Qhmk7>R^>q`BskeJK81g^|J`tgswEA*~kmaQUX&fFFEulVIR z=Z2>LJ!|Q6qwY9|^f|E^fBV7rYIEvHuk-ok4ckbW^W)nq&Yl(dk0qb^^AB#h=kZ&f zyl=!q_ul>DWd)?y`QxrlV~99e1Ai5KEBwvycfsEW|1kV6_^03x!aooHGJGByHV(c7 zei3{P{8jL+@HfNX1%Ds>!|=P{pMpOK|2#ZzXb@I4IwQsof#b{yX05;BWT)fwlX^K7 zIKu(*Yjz@>x*#C8N&4fwKpeWdw?Mx|>@P!^jPH{C>h2BwT+x?F{ymaj-8K<#%HtW& z{O8C)RyQ5!CcV1Op*KiAR&oLrrAbuP%SYoBrmM)mcBzXPx<9min3ga&kT}ofM<;m~+4A z$sLDF5XWgW&v(|1`B?|{E8EWgV;k8H9!u7Teaw2BzH*iYGiha!;>V=no1i>rcs411$@+##a=XFRsycW-Z=NIVI=_0Z}5pojz6!^2@r@~K%p8;PA zUk3kr(+9CnUoC~un~grG3e>{rZlm4iW?{7I_k zp)!c`OH(3rBs7ddTt$!=wGM(9&I=@nvtTCX7#KmEA4_4JjnXnFsgjs;T?TRDE2%gY zW)P={l8O^$2665zE#{n%rF;<{1#+M&i8-rd496)5;(SjmbBT{;xIQUCoOd#aYjl#I zrWnMzs1(Mv4F+-MFR3`TVGsw!67*fD42r{xc~0CJ#F@MV@eE)PmnkG8*FacfE;k^k z1ws;YR?oy-hm^$T*3Do#-1(KG?oA)0p6+?^2bq~#tG2)@q`2Ku1}`S;qL!)7OraiN zd{%nAna9l6+0yKDbVJtx?`7XiHT?3MIfP%lnH+5Jv2TX@1+0WV1bR=lW;8GVj%oEb z19rdsW=!rIug=r}&o}!e3^{B#6b*0p^PaYl^qiVEk;fDWEROfP~nMNBmu7)rog^UIkytiM^FI$Zu5EQrjGFj}4S7=R!g`c=1D>l7s6! zrv~|r271g4{K6Y{*!-`_B|wKzs26Wo-JGXXI=_+U3qylUN2ikM$omkaa~}P~a2|~% z=g}F$c~srk@&^3H8qN(NqY=oB$ifK$ z#j^#xsMc=ikZbE9S+6yaBav>kmeCqW)@!+z(K(PeAz!(cYq{D<`^O+@|EQLV zKa2JbL&wyq=8%@r1CX@0U(4t=NZNZq%e8%ww09rmFr?e6WptB{Z|&7`?HWj)Kb+G* zuAKvU2l7QA-vLhsPzTWz>@Jqn29Ps(D_^=n+V!KM0A%x0(Z5M)yH>Kz~Zh z=w8TPq}vUN;d~9h?}k)7SUe9OhR*YF8)Pri^+965pTdL1^Xx8!^E}%O*^6}WTy0C? z!QydkML3UZGbGZ?tcS#WF(VHa&yQ-P<9W@w((TAs4vAAMBM%mjOA*pRD!wk{$?t`J zDlEjy;_+hm0qCnB`L1sVhX-vSwj?1hX#Zh*W1vIFuW$Y#h1ko6M22J%AawUFZ>mqXS-RzmXl&4)Y_ zvK*3jiXqR3j6j|NSp>NPvH+6Djo0@WNDJ~j$m2L(JdQ^paZDB87sC%hp9OgUax~;V zNSq`2dm(wg?1n6a+zH9_+aY;=Y=ayD*$24{aw{ayr!9~;ITYX5QpjHDJg+uD=0SEq z;u=)vDbKrl=%}JPPnST}La%}>g5>!FK`g)gN01rmvcDwq7Lh$7D@D#1nI-b2T%GTW zA|DjVcLQke8j+JljurX+p*o&#DKOogB5xJhDe^jzmxx>;l6*hR_l(G!MRtp<7P&}d zP~^*Doeyodg2-PCNjnjdy-=vvi>wqG5y?pWvJXl6-6H!$_KK_*St&9i5<=x4o}=Xe zc*vfz_kn2afPE0#=k24|ZVGG;c(9S>1a{fGZE%NyjqG3`nAMxLDQh!$#kOYM2d*)4 zkv$A;f7StP4`m(3_Gs2I@{3bG`1(SHx$g; z7up{>0PRrdFt)wfo3fEMdkePrW%ptGaQ1d=cV+L!_F(oQY@g3QnjOqKp8axmZ%!bv zIp;2H@6FkY?E^X6a!`8Cj+~v)cIWKD_F&E-Y`28(4F|LC3-^T|2*YN0JG7%Y$8wG% zt~b01VSB=RvE3g&fbEg+^Vl8_^VoiE7*1v!Amb|Wr{&cD69=6)S%bO!HR`yx^3Rm+ z5}com@56aU_h+2vjE_kC|KdENUMc!cNb2>X*Ye_o-YfclF+cVV&s2rjH@s3mqCLd( ztsc5(q`n+q(0vqfjNdKs^Kss=J-a1-I?F@+UWwl>>o=;q<9~J!zlAhyNx(=~#)=>Xj;-8ZE4@iBFOa9+O z(jEs-bbO(b^*3v%?=$^_<3`7qH5qT#NKX^{W=%AY=L6cdS<>UbGev)^9AArN!o}G? zNZTj+$5|hgVKB)zqb%}LMbw=Wrw!v#rokA$lKqD^tJex3rn7zy{Rgni_L=i@?dg^DiZ>1VyF{PB^w94X{UfxG{c^F#C%M$k6XT7v z2Yso;E1ojwwW4R!9`t(A`EC>S8%6)Q*n79=my5kmi5`Ju`dy;`9{be)OZ2P7-Y-P| zrr7(7=pSc#*esUzpU(bt=qq^sA#SM80RnF6Q?U>dgy(k z-w#Rs%c4KV`a*w1^pT?fSoEc=KjPKfM6lPx`a?e=@%OX7(ElL%yODs3ke!%?L zH<<7*FhA;EFkHvappJcm$L2lEC~{YkceEanoJEYR_}FL~h1{e--6AuQ% z$NevYee%+o_LWk1w0}D6!$iXIO(ds&H|#m}c31k}xZ;Pn;+fZ(pKl>Jb-tP4)X5X- z)Mw!MIrWjQ_^qz;PMEjOd$G~r!DV8w^U0~dElrZtrE}SNW=v+tz-l+poa7R6^4odm z(@ZsP4!cZgVKju0tS%BS%eSaUD9590{zwZ6|v5^H?^B*MN3m* z1HCBWgwrM!#KX|d`LpVI7nh2upNv+Q;`Qf&oR=VSbXPV#Le9lRgl7l73HT%DrPD;pnd=uZCp|)+ zMzj4QP9@{yyaZ*W`xyB}%t=IeAEV6C6|W^zrTZQ?&yR6(ZhC~AaOn|paQq@pn%pw2 zvI%-hch9FsNM#cd-aVf=y28PV=|Lw8I?SPPC(egCNBA?7e3-Q@?TyW^6CdWTr82FT zwHc#xsf3QwZHCY8==O=d zYS=Sn=oq~fd%k>_T$80Uc_Vl*$*$a#tRGgelFq@u=*fp!EcOf^W-;tJ9hO*9oT*=| zwKH~Ym*SVJT3wY)VxDz$NYL)nbp7r^{kUw1gUIY$*=6_%=uD|^-R|9D!ect=d*v9T`C+jq-DrJyfcE_O zFdq?nh7a?R0owE9!|XX%x60J7=R9d;Qn=cinGds1?Dg5&Kp*V!{?dAd{z4VIE_<2z zFe_brn3XHE-Tkm9MWom}3(@+5=BP%0HA?*;((`>GCg%GxC0A)a%+@CT{E)ZpT6nta z#PhMyjqvjL2zvu}Gm*3yp5+blVG`{Vk6 zdE#3V@u>(p|CUIswJR36De|h!MUl_} zDb5{_b(|FEj(6uzN&FfrZ+_m)6qNP^BEMlz#WPZWVofKc`yg*-#8H&)NTU(a~n zRx{P_wTS2X1%0M=WaxsFs9tEiHjbu*p1AVrcr!IUrXkC$m_v3=uwz3It|5#CI<0k7BG26;38#dtH_C&eIdCa5s2^$o2(G2yzrRPEz7F>emIFcoFy zAa7=;BB}yapL*Z*#+IgTP=lVQhLl!Qyaz;|R&xw9&u&X5M~3KARO`H&9(1YI*3#A0 z(!S0~$l2Y{xh~e-WnHxD!k%tYhE{cUHf)5dWn;Vt`E(+gfvsq7YH7q{o3!_E8ygy% zV@($}Y-nlgY11$3s`{!o3r)BRiLZ}!cD6Ld)Tmj7G_W1zHtA~}oXplE^kT+AEbLQn-(;b7nnS;EU9>kD?yqO8?y+Pj0Qv*ln&ztEv@bl)) z^iJyW%|lv{gF?~Uh~GQ@-r;yHW1zg5-o=@(DfkbcSQG1?H#4&_bNBZ!m=@Jl8n5W-W}&y$98@;;+;7CdmZm|>EHi&r&C{x zol4%!l!aIlYU&AvbCFfS%<9FF`Lad={zbpll9EJ{OR8nJIT^&Sh3O0$#2|0xYsQ<2 zV?yjQx`;gI@SvPDuoxsspz}BYQzZ8skzSmb1`UHKZ**R13_=DG<^0kZ)Qp3Y28}Sg zm9o<3(Fl_(oJfKfuT$M1Z{{Fx=D!SYrg=X<>jGQ^|7yIMArIcn3!J=}q{<}E2=^kb3lRS;LX%(f;UsE3EoVt68lCm8);_D1aIaln92$#cr#ZkHNl&?lIkFD zCSFY)FpH}lT^cr))z@@ATupWT+=&Aba$yB8gm zB!m1Ov;-L>2rm^KnkvsDre?L1)?o9G#zVE{PyKL!=Jh4 zeS0QPAG-agZ#Le{UUUX;mxe3R&7+wm@kHaKbMt7rc{ANSmTsO+H;<;97xM!sgY_wA zVQ?YdRUi$|rMk;N|FL}T?&j%q^JWs|mibM3H?L)XyqRuZOg9f^f4rJ*9#A)L=Vz}c{6!kqDXZO^11|2z-!K%$$oe)XX2Vg!S{VA zZ_DUUJn-u$9&8={+|z51tQryRcwydI;$_88>Ne8YJ&JMb@ofAh3g#m$UF9%ITQFeDadW-5O1W)9&O zZzcyDV9%?3Giku=hAyrALEg;SrCm+e5AtTlI?G-K|EH7BuTEoVywSv?gghAJ&8%s; zrn8}QW0`uPm{1U1WfynE+Rv+5y6O!hf6PowImnyY8t=f>==nyV^EylC&GdZ1XOK7Z zRPtteAA)q=%mZ&u-psEEZ|3)eH}fmD=FR+`i#PLF$cr7*k4y8l;LUu&!JGL>CvRqz z;mv%j=Fj{yMW6r--T#+)GqLigcrzhi6>lc(kT;WdZid_lNT`AGX0Ac{Uce}=*7<8{ z#ZI-@snl}qe8@P;nWLrR&%7Qw$G(tJ@@3Kv`S&mmtqE!w#VZLa{5VFXSaGR2re*Xf zB-0;(1Po#gc{CxThahi9_yI_)%GB)FGWrzcROsaIgB;||#6*DoImnx-Fwh2hGcoZ4 zeBB^#Ca#N4^ur-YyuJCR;LTisddx?CPL?-wIr1OJ@pbcNGW-z2XR)1-SS3o~&71>$ zH^SY#nOJA|r{~Q)h$jr_^6dR02YEBAm)8UWtJeeqtsS7Ew6}mC^I>~Cwr@CZ=HAd# z;K=?rgXv*?C5bF=7tqDbD%ZK50AOv7Vocry)erQyvyBu^~;cry)8 zr5|sm;jJ{hnTChbk2h02UPF5fFQ)lG!0=`o9yY_1X?WHQ&!$;ZHN2UI_w8hPGb0!* z(HY*%V$n|(Z)UL^FTO64;m!QM z=!Q4*zeP8^nZFg?@Mcy?efV^pJee;Wd#o??AYVg)GrXA>N_xYaxmxsNNJE~-ozi~8 zn|X!AFX#CKd#8&%!<*SA@rF0k@Ln3;%y&z?;m!Q8=!Q3QjIoDs_V1@9-tcCAUUb8o z`6bZ}Z{}FZ|A^H8IO<4ecrzb`O*+Gy`Gn|(H}jzAhBxyW(G73r%c2|J%q+Q{4R7WM z(G73r>7u_IWwJjtqj-`x(_qIN-b{o2Zg?{dcDv!tG}!BgH`8E48{SNFKQX+Sm2&(5 zm9Ka)YeYA^nbo2j-pu8q8{W)v(G73rBGCeKKfGCDq_K8f7wOX!UG`r*xVx5f)l?2X{fbl2;jo;TC8!D+mi-l+!q z-TXkm!*`sM{eRq_1{l$Q7WsZZNdoEJEPxoKe0c8wXBcQ!7f8eavI*G202<-Ro9Ww< zR78mWD&mcuF`!DVY6L0i!nM{QZ|3<+>O5K826;1=tiE_<-O8oQmabfS(UPUB>PiQB zGwXzrG(nGy6}fvF6{R29CSIDXv}mi0Il;MyF+11#lajmGF)Vxd1#{>(mA6J&%vye?oJ z1J9NEqUQwpGmV`(8iDI`fsISBj>H!Hd)GP%Il-rv!q;eFt%I&oZLz_N5?IQ&y5H*Y zQZd5&C_qud@uJ&f;&+HU?AC>!5XS%(VL((6A zW-f2!aO0%|b0=!uvGug)$DcV3FDTGmD!Haj(z;{oY0r;8^R^&X`ZHm^Puhd`n zLG!fd$Dg^$Ri90z+MZ+UvX_}Z)7Tp){Wnm1e*BqzlXXp&ONIK%95vIs{`K?V&paab zq}!|`1GMMIpP46y41Z=``M~Pu$DjG#X*$2D-*@qXlgqi`EMu zV(fVw*JS{tPw;0txd=~$H}i#nMIbcAu^9%}U;TB>igVM+vx(yG)oB=C%-3NQ52sbo zsyHp}aeWstjp1@U20l*Icho4W_eUn|P}Zo2+l!1eK# zrbt^uOMCG&aKAYcw8uN!R6(GWt0*l8TVGn~;PIPPT5fpzlv$Na;p`@|>D73XHfeTd zG?GkxZlo>N)Y8+|5m9Ekkh`m8U3+mNIe6s~`-p6~rpq@@a|CQyt}!p zJJtcNzKXdeSpYg12soMtHV-pQxD5aUvR@ zC~chXzr@2xcXys}*X%@&-SFl?vd`MhYs$YCJmFfNc!mhFxK5=MBaF*b503FT&Z3ub z8TOK{7rX4ceaWDc+Dq_urBZNd&3W~JjVo0pN0-%-44kxKQq!c3lbUYvsYg`@ZqbpN znoBRlU9PhWG}e)GN@wE^P>jWd_H{GQDTh)zd)73o>}_30P}b1Y*3w>PPK>f^4QY7U zs(4RlV=NKlbIP0u<5s!}uSevAoLm25oLlLq#USg}AnR67H-?x_A}n)@a)xz*xMGlX zOZCXIc&8eWFKOuL?!kn%GuGY|>(rcG){;wWTQ{M@&*BC1*d$WIBOrqogw9vuhd} zuV2^6d9UKfUWulhSEDG#ExmOmIIlAnYqwm1i%GHP3ae`EXl}4tx|X&#p})ZCMxHfu z2=v=%ikwYN#|*iO>5fytx+UXM8U0%u@O`oO$knkZFllDBda64}i8V-x)l%CWZ;xHP zsxDxLqI*67sm|dbL z;>wQf4tdan2$laM{V^Jq%fu}Mqmg;4 z0jiuulG;2-MbNzxv?F2Y64^@#6SXIiq}J>f$TZi33_x2+<@rk7F+!Tvm`B#|~Ika-N0!6r*cw+X_9& z=)l~9@P6!Uh7Zg`qJTBzUhE%$x5wJSk3tUpC6(NVussT&H7xHXh@9{++OmhCI^j@G z{v=i_e;&4W{`uGj^6Rk8%J0E8n12_xq5OZxHamYGwmH_Yi4gWP*aUNG^8ZLBKY&IC z^2cKv%wL3UIR6T43-UX$9cSh8qp%NQH+w?fCn0iz!|l&Q?kfVx%?*fS8{6=N;&MDy zEXoCYO)r$^usmCo&6b7VCvo;$p@L)PNo3wRs=Ofkz1U&qAxK*SKdKsx6BlFW7Oc6A zS_)E}dZR3Z**le6wZLBBdr8@D`==JHJB4Rw{Kd)D={# zs9K?)qeIpVndUfk5WupAoP*Bbhucb-UlT4Uh4OyJELf9sDdfkwzYr0(V&_{_&TY=Q z4C|UI$0B5}gYpabAyM?@UhJ?hhs;nFIS;!pQk|*P)>QR&sBGepG8Oy5RP~`$br)1s z<}8)?KaDzDsm~czIA#bulm#EI%p>+szz!15a>Qb6?1J3SLd3Zn41OMBWG6OOAupV7 zU=Ic@b)^LNLK|gA3O@lEM#~UW_-X79QTyS-FC_N!3Ln9KfeJ4uoCdj5?H5_2^H@YE z7#xj&)9lkHL7YAn8!O23G`9k~dypchv8X8L@-a_hH;$m3D^b`OJOi}uqIOkaa(K)L z?EM?HwSmcbV@}83zf-$9FuB0WeLHr4NINrg--+E{V0Y;Fyx%~C!nq$o$SaJTm&>}- z=Z??)BPziwHm64AJ`70yWIH}*v{7sa+n`d8MmxsrGTLc@$)m=6%V?(uCKp+` zyvJ-oP~Na$BT5SW9Q)y6XC%+-KOlf-l;W5<4LdwBhnTC&%-IgZ%5u zZGzqneK^iNh=Spx#@r04ju7iN=2oMjdSPqahoRmNzX$$uyzqObo&9c@82=dd8NL^i z;S;XJUp51%MCzQ%H4eoZ*DRXJ2#Z4=gT*uLp-(Ac)Bc%ukenB1+94g6&A9RW0-a@S zfK=s}04hkFHx-fNhT-KJraB#x5og-N7D2^{tStvrs?STRFD6oju0g7aFr?fLk#^fB z5L|^3j9qQ>hHg({%$#ACMIa7)5)Oj30NPKffgwfmnX$9o_A}&fXa2VdR}Az1UgiBa zXWl9H%38$OZ{uIp6nj;JQvQU5)?{OiV+T6BtqkGcrqwHj5+-StLy|;|&bpmuuH-o2 z?DufDj=R=WW62Dm?D(Cq$d|s0a&0ED?P9w&VYJx3Bw^B;Rt!VKi)@{4I!_>IJcp+9 z^pX7;1dAf z7ZJ*%YRWOpws4Ipi5!r)cfmge&#Bb&@GryXp+I%~u}^Fhx)<_T2V6g_9Gp77kdH|G z=Oy0g>PR8pq;HXUW6!*7e~sAVc$W6fq?1EA>L%Xw4a4YRPC2dXzFGF(AKp}gP>u`P zKP-#&VI92e(16gPVH0FO0yz<$7t>krXTwi}pAJ70p06=R#yO{-NQC2%M)>vc?}on*{tNI=z&`{3BK#0syW`-? z;N6T2A41qRcwUw~zj&oifrL}nG9>SP@+L5cgG|MN8;>{~M^+5t&`eUPITeC7!%GnV zrI?CiZwcam8-w^~C$`ui263PzK^y=wh~q-Z$l)4;IQ)|!PL>!n5gQ4594doq;l&mQ z`wZgfQi6UVwm3$VjGS>X6(?a+AnDLS4B|~tQt>v-poick7605B#A%MCnka4L-@BB^ zu45`5M9Ii;IDgar`LeIfi8rhqaQC10)8iaT6pQ$AS#vz));u zNk)!~#1?0~OvRy>1aSn6&agNdh7As|B}PpV5X!$y3E}{ei8;tb5QmOZ7zb*!%<-Ef z<}i>!91}_^juIKf!IY%p7?MF8R!)J0<8XrKoZ&iXg24)av?ULWzx*1I8yuIh(2F+Wrj*%@#FG!4X zQk@yq)Fap{-i%K+_{5vhhWvN1O)0JyT^g{m*}?WpphU9akO1Bu*y}FVsllyx0(q-< z`cF-<{?O~m2XtPz@B@2OsO92SZ$S4A@(tkiE;olo*T$~0H%Z3~@(rBqBTasFaA`|Z zEbetl@;$$n#sZ2+LPHbq{vkX2g^+bj1r5)BB(x-ZQ)nD= zmLPaB^w6JzMIkFY>+?k9C+_|z{NrxHzb$Z$YxrLc8Rdh)Wte_#fW*L|rd!KsGh`(` zaca_X?NyKq5zlW>A)~7ynXd*Cv%(rq;vu7pAghpXzLsl?Az2I3E#R%%eCc@tXDB42ER2^ zw2Vd|G4QDwr)3m%RP`*-GRk~KSQ(8#Rzos;I3$G9DPb=kZQ(pQe?H_=NakA%$?}#! zMj$aHRQVYnhW=Ja2AfMmY$kP%4YS)&g8K40Y@3(5RrAR#!e%;(c!;#OBe zmO++7VxFGQ<2eyB3^@yu#}jqSKZ1OvkcS{KmshyfINtetp_f4JhMWPp6B7NeaI7(g z&hLXh4RR|a>$L?E>k0XrA&VhmgBv{56ngL)Jp#Sg7`~ zo>2MSUH~IuNL-4Fu|&i0PaYm{Odh@SXSCPXX0=zkLAP!}bwukJ-nu zeIT$c5C|Ly91H}r4hN0|o`-fUa2(psz^=eO&$50C4K=98uSj) zua@*?F7YASNBjnf{|+SeUeW);`oX@LTRh41xWM|PO}x&WdR*#j+LJ{cWmdw|eU0|v zmy6y2JH++ejdXNmr_9H`!9X~NI@-`@^0Ph;-C{iIYx;92+l%@gV4uP*VfhGqT=MgI z4RL!nBOl%UVt=2+PZ0gTMgKh0BmbX8|6j59vgl;`W;`F|&~Y(@SgTt^=Yu?_UcvgI zz1t=J9%;YPSufg~E%Cpj{X9LxrhS}ZDS9>2Bc2aD=(0s0FFMzs7(Yk!?;;J$KQ8t^ z$auuf7kv!&nf^RU|3hitGKuez`fve>?!EA|SC4SIjjSK~|5wuge8Nrrx1#et!SvfC z{reb?8&SR3n@k;djb_mwV|#FeZV{bNWO>uPPIUY$Tlu&_nQxRiqvg{ubAC-mc@uEF z??M>eTTqwbj^ke@={w|jewy*vH|Oiq)E(vjk-DRPPar>j3AYjPPCdt^|JIeBX`Shd z&`(Z1J+-5cu~8ycG#RJUXq-YV_tZfNh;hL;d;1)l@N@JfFpQmBq->sq%8ulsvK za~Vi3FDyV4=Ys1p!KoNz)aANLq&&!yJ_Atz_9(WtZr%aQE7uVX- z9qVjp#YB*g75dq`1Sdp)_;ZKEo@sA6Cj7M54SUY9oH6LY6Z6D(Gn^g2 zmdx|z!Ia6L-d^=r=8NyP594#X4O&={B3-|mQ9lfYIpx9#Jn5u<{`h!uzHx1UZmZZk z279Itbd27LJ%4;Wv1jrg5qop4O!S{u{e1D~`ovyDDsdF{+VuYawE8OpZD_cl*Pi`=QI;#D49m>!YQuVO@+EYHmEh zAGz8)Dczo=(6uypaky!z0NA^%YUQ#-6MinK|1NTRy1kS`V(hiX8$InEn5a$jO=-Gf zEDXAwr#(OXx$Lua?k`BLOR@0ia-R15@aO*DRGs_NnD^6#=4iQVt$sHNnx{QK{JAwQ ze6wv;+MZ+UvX>cu&e$uL{u`)0o;57feSA01*EQ*o3LU7Houu%up9lWjaj`c=@-JVS zG$ebT_WbbY#$lnD&fw3r4$z(-{@hQwSPN(BH}wLoJGQR+WyYUVfNjXUTW$!ou*XBQ z|7xuLXrnHBnepd#SL#dz$f7H_P|NDN#QiG89#4OLX>ydL*4dR_gY+G!6BFYv!`fAE zS?__oss&>!{8936v=*L@$DW?2{4F9OPRPwf>SB17=f;Zzc2k2f=96v^e@>nlJNqdD z#nqqYnY?-@(j)#ttcA4FhEG2y-xgsaIG=P&mR%I@ABe>jS99y~KC>GXBO59-JRW+$%R#J$UTm$F~tP?ZwL; z#lHRED>nrmeB~Y12mEmD4rL|F=n5zC>_#g*yB>vSH_ER3tEtb^z@lTFSkJIZQ@peO zx*pPFtNOkk@up9#g6kA!o++O=du|*(la|u5D_=2vX2Pw**2Ok_06q)e#2e|?w~xKU z`r#`#Ek>VKJ^12f-%@@2+>Bjq&rY`6j$MpCzA5X$SH5L^pm^N<7YzZXACDQ!45NLU-j98Y^;?4a zEq?IX$yII7&Dhh*^T6b19m37c$0v-j{`c7|tD<<~-j6+z*Sj)o4|z}Uqm_TFbd;si z3jUr|)G*$Zg?=BEVo%aUit5Mz=SoAjGa@3m3X4{HT65$d`@h}q^;(cljj@z&|61; zSv$wS^SMiQ{`Re>2G>z=R|L^fL7hZ2f07#xQpY*Ckh~Lg%A(NvnEJf_+=wr7B$sbe za9RxTA)y_M(_%|Eltes2Hv)6fQK^VVahyre#?+W;Kt0sBmAWN(849cDjj?5&@ix8K z3%p1ZSgaSCOVYtCRV87nHGX49L|ekjeB<@N?y2pJb#W2?vX<`VmiAR@jf?=5M3OXy zlckkNKf_jfq@yay9KeAzhsN0u;zVlno$6RecQdl;RA_$J4V~S^z}^I^rbijmJpvP* zgo7|U(xuvPktzUo6D1WhHvM4e12{8cIxmsFN!2WQ1e9?(Q({e*;;~-5ll9i;j<#N2 zT2AOqY-XYb(@Ih*gU(Am&rt7mt#v>vTBq=PU`$S+it1wZsK|+QiWA9Ic4j0b22zr&Zc^x)9=UuWIHe%TDVnS=*dtv;DIngDk^9@(ZicRc3}PUnvAFF)7lobDuWJXbaV3$|+^aXjU54R=?jc7cjs zoCfc-a2*kx7G49$riBf}Xj17EPDlz%nw3WA#xkn9I&jjiealQ_7yR>IN&cv^GJa6Nf>i1g27oZIKptE5o zx!;R?yk?G`WPX#);PF;g%pt%oRBQd5a_$0smp9mGQ`0T8=G`#6!dgFTp2FZ=?*rYN zOl_^#)|zN-pwPZZED*o{pS^bhtg5)y$M-%tCpjl4FOr}E0v;ehL`Xsc6qRUrgGLAs z5g#hw0IR;Y^mBxZ@rdUZj08o_$*axxoTVL zqy2y1%$jrdc_qPu_TFZa*=yFCnKf(Ae$DK&=UWZ^2l>Tr96OxfgtwX_g87Zrkm!?^ z0hHf=HIS(jlKDfm~bqp`Is)UZ^6>W3~JaeLI(j9U(}FcJ_(5G{rk%4|*ER*u!MjI5xOLXGuL*W8 zYt@=CClh5>Q-h^`F2jZ&5n_Da>==>FYNb~Me#tNsKUZCh-$t4`>ablMs$0`x5fZKz zqZ(jsuMIXJIk&5&z6L*&%{pt@0LbqE$nWJrt1cAMXJyAZ_%bg7r#ri@v(D-wT0OVINgozexkbUulG06dt--|ndOLRn z11Q4-D8ro})4KfR_yWpPTVx%x6R0=gxG)LGaPqQzZ_YQk&G__MKMMHn8=r#X@p;Nh z48xi_do6;InV$L0xumNuw5*lWI;#VlNorf(x5aoP7ykw@f^tlSk(Yap&&U(+Q{0=w zl?h%Z_Nm3#6!&&9Vpm*N-+P+)mE_7~uPXavIZ5+3OZh=_M>#n`_}#gV`CQNxY+cC)+ac2 zYp5Z7jSwkYU1f0)+iHSkvXFuq+iPt+;}-A6GjEA|XBb=3tx85T>C_%+YJa%N z8k3wXzbGZx9aHO2xK`X@Gv5t!tuX@*n@JMhOpEGuBC<8LR)veiDejT1O+sDP#;S+{ zo!TvV1Wsc><0d&-UV0|jD^u%(aILt;r%7$I(lb%xW>sgmlucA-09^flH@G_R&r>6~ z=|wRJ=mGqgYJk-h?D^PuEOiBxKF*20UaUdY4H)~0lcU-gKir;_M?m%!{&S)JBw8>D zU=S0ATTVHU)FR02B~Co|(s&!fcMg4$X9K+=`P+pat76l}d&E3nPUYQt7g+iyVY*E-->2;MYBJP zW?uuV+FO9SDc-jXdxm1)H|&{;&A|E~+GEcrYk7E!SFrIJxEn&0mI})sL{zZx)kypu z845O@IE9KKZ2VPVe&<1shK(oG!*hrN8&51m?vB95PmN~JG3-<{=<;3y_EHwsu<e*u<-}L5;Z|!I z7eMkJGpG7#dn%&9#`Bf|*m%|+iU`>F(@=J(T>&O1Z!Wg{o)}${w)2b{2LJPj8d@ic__jYQ^CfMLL$T*!p2Vm!*fZ)#!rEmT@KiI62iv+6_ocO4I7_< z;)>I-@j+yKhys9(_aH}L8VCq!NwD|gQt_{d?j(fyc6A&PY(?nzZ2#1 z81MBz0aAnr*!X8aXdGbUe*uy{0~^~-?03(7*hIm`^FGI2Qn2xlg5i^ku<<`JX~4$+ z+N1#+{~FS~GzB)EfGvvEu<`GKWp@c|ybCuI#cJ62Ov4InJWsDO$N(FE4af#2vodY~ z5!iS>)&LuSJ0u={x2s^|zX?utPPvjeVB<~aXxRAwM!B<5#K6YC3jRv)fQ=_1Z2YyL z>If;=_|F?o!^Y?1IYDfbnTP}j25fvfN{pxk{tV@FK`B4sIT4Tv{Km-~a4=TkYr>g| z(CDjzM!?3OrHD=afQ>(25s%JGW!{K4r0!opRXavN26ZyFqEz7*FkYf*w}CPPuIW!g*Vw$F+oPBt#0M2^7$(`HaE4kJ zf$Jh?jWqSl6wq$|H0r;>`sYdgbEE2W78|ZV`bXfdhBo^=o`Y7=Vrb1i#kP4*w(T)N z&GIrGb8#eXjWx}M=aS7oN3)mErdHs}AA~NN`~?a|jldZdZgSicY_63mi|r*}R?J2e zJ8=z4Jxulz=8eA|`f~8-V=&WEyYr-*Q0jJMSrb^GSPD!KYIj;=jY(z}X}5-O{C+@7 zuC(omc1_r@iT2{KS=Lxn-b@nh<}Ik_!Be8o#a$Gu73@7V7NQkvN4{Qq2Rss7c3NRH=DDsVOzp zcZIEKhMI3cO@Yr=ab`>I@aE{f5og4(??yt{&5mGq4@zZ0ALz{01(gCGu{3fLcF{#n>J6>u5gF2r+74dJ+s9y1&a6A^KqtF?hR zyA+l`;ikEa|9C_!_f{a%fVr}EWZrpe#fZE+AMSqWQTkkL>B$VzwDBP+H)_uaQodh^@#({RTV!&CpW zCau=G^!1*3Kbv`P?F2n~AcOmXYJb-uzk@GWNs{zC^#45xZ#8rrGh~0=A5jP`lN8F9L7x4h%Aw&x& zY7SxmQQe#&I+dM-u%DM7=qOw`3_R}SRp)`^@FW6llKj`u`Q$mpVo-No(C>&ob=81( z$wA^hohIbtfK1^*LEvPOI-Za+>V^dV*OJdEBlABe`Reuw{w&Go{F3<#BwyW$z?*%z zMQk=UY=aFfZ){XI2=L#NeNq<+cw^5D>62@vJ#~vhzUhOrM8B!8Zqvv&<<$ceyy+v( zdfC3|Q(o21{o^gdxj%fvK)#H15N;KFO#i$i`(yf}RCsetodD|8Bi*EQn(O6T`&^qQ zAdfS7UL&-X_1Q<%%Y9*c>{ISH_m%z0KId^!eT8-zob8cEwhC;U?Gdoul;O9(+^>99 zLSMH>;*W#%h9dGlK)nnBNsj~_g;<0*7I7Tnc*K(sOAt#DkETBk_F-9fkN;5V3t1bd ztlV($(1Lq%GS)tH__6a|zs&X3HG}TFX8j*7x$M4g|G@oX`MPth*Ppy#TUY(XKmXY~ z-Dj`3cEpar`IUb=vHjQ2o?Q6&zVoL3Wkbr`(#$(wyd--^-k%S2rhea3dC#&5bKYw| zt@*zP?^t->lgEEj{y0kUSm6x!0>oH<9K?a-6QnPH9ACuEc`G7s={zrZmoEZEP|pES z4k`s{#rR?1q?>nc1Ws95kuxtTrQVi7)PpD@4*yw-FEvEONdrZkMTjoWSt;TSRz#dx zQ^be3ROCFEBF?Kt#MfXHjl@PoyTMXagDATA7KI{C+eO4#HbtC1OGUm*qi6y)MW6_r zEK0lv12EQN;I0Qi@Y0ia2kQ7I|S)QU3?8d5vOm`BHtHK#8(JXk&{u1I7gLIoOe^iNx10Z!-yizL8a7NU@77>S44c< zfE_R{I`}d}a@6Y>(L=(?S$R8_~f`7m2}*qaT-V=50)$(;;4}iSo@nXPVX;r++t$W>|-qsJ@wwB&%=c8Oid^1VWyTaqaJt9>a;i5SMSJ z0m<@tpJqsw&vA+izYAdR2Kdh3CW((hyf>4d zi8qrBcr4MLOV)aF;ko2ESF!PK(n;?o!&1-m3{5=)u1Y)w*LaQtH&}DXI|1AX%@ry? zDBenM7u=$(g+G+nMC)swVd-EzaE=1%&i0H+*<+vKwmmaac7Eo&!haXM5BwP$JodYA zqH>wXm!9uA!8IY@QwDb_Q_t}D&OmG5_nZOlQ)j?s%IBPJR^Uy=HhxyTuZGk4p3Ky1 zJo#|XG7d&o(%lMbKGusj7G!%bMSi{~S87f`&3TTR`RD?zvkW`^Ql`G`8IL697%A0nEB`Jz7>69dn57f`M>uu?t=tQG33!fmKr45Hc7W&D2(D(gJ0@!x)1C&afKzMx>PoLAz1!6-`&}1Lgknn=tPGE>PCn2}-*k(zKFuLAJL= z)0KCDUW)upnpWNb%6{dTnEl!bNt?Xj+*s@(fT+Y^uGQR=P$00Y6rma`>H@!fu0V!0`xRc>a7Hw4>}#R3iMRa zX`rWovYnGbi$Nh%?R^TA`!f}k?E=P=u3VHqBM{~9i2CM0PCeIxQqMJ@)bm-;0O&+e z)@MHJe+Cr9x=d&rXc>0mBG3S69VmZaI2)AL?<`PWmrbAtKpR2%= zO#`L84D@`^Vo==AvI;=Y0nGsgY;u+tbRFnnobQzLdOa8PASlk~EMBja?*&}}x(5{3 zL)K1_ZwFltek?EdbpMdKTy&P@b2&K?j5G1g!?$4murlD`+0*X3#T1H-Yjz-3Xck+5>t9 zXg4U&+jXF+plzTFKpR2FgRTOFiRwC-4_X6$E+}kK=M@OQ$j|a+s&c8e(5G?1qF(Bg zLcb*R^Fo&hJwvEpXo}D$akFFnT|(Q1UL^D+p`(SqlCI0YAoPnuKPPm#(1k*03Oz;W zNTEZ7e$S`%?GQR!=yaiOp&xj4IUEZ<2jcv9ZN^S;Ke~mk5?UoRAk-3i0D6#2-7R#p z&~BltgjNX+2nA8~2I1z+`Yu;SPMRyfz=rFteQ@5@7;?Ef*SS+}z?TNM!s*vt_GWA! zvUg&uU4m(6V7Iz9q4Z`r1w*cDC$>+!_F}sa4#MCz4DP|wTwCm|cAD!+dk?mBB$npd z;Oc?9u>C17q#Q_bxelegi|q#~-EQb`?{s@zceyva-6=1)54c|e?eW~;+2}zlo-H1C z$^)M5o`=A_;5mTpLC>4m9`<~IZBObA*pE%AcVYW<>RxR3r@nyg!PGag?Mb^K4Y_G| zrMXkKq-{-m0Ng`qJF(rHwh!A4-X5`7ZD~Is z{2Qpt_NS$2eebgWAS;&qVUo}BGed{iqx?&NpD+2lCI4q)&orrjwzOX*e3xlYj@PSV zFXtx=ugUS}yocd2;dcq2E#;pUzCrR|5Pl@>gDr=JzY#i|{9@SQJb$jFz0h$$j^|$5 zi#Ck!goV`a;8SFO%=x&S{fT?oeA&OJ(UW+~rE`%r$flz)%yfqy{wZ?HW09l~Em{m@q+`d$$IqlG`8`jB5D{EO5F zp7(WzFH#@)i-bQ{^mPlrOZ43={HdbvYr_9f^z9P9OY}VzL{f5UGTdrCy#w|Rab8ea!k0}{m_q`k-w;9<{j zf$%2@|7*5~{8_?}6aGx$&lCOppormm?jK|=!aoc<$X_PBPxvnhKOOzR{jU&vzeM{{ z{%exY^#ja5Me=6}KUerEvj4@X!|=HD_j1Xn4?XI;U-ZpDn)(_f{}S2@p5q3FyFtlc zEBqm`?=InaUQyozqHnGA_ZG>2SnT_@@Z*JlT=;Eb&$p!hduWr#vm0^-UYk6>pFll^ zcWEzp_5;H>;a?K|9NLfkKM4O>v_swnyBK~+d%^pJ_X&Tz@E6d2seKEczZlQimpp9>c=cyk9Sc6^Pg5#A9Th0ArJ?`5lpw3R{ zWw;fQ{6oTHEU)5>ZJN9n_dB^^9K0}*KD39UI@9if4KVtGvg+6EfMKSptFFNxdj46Ld4F9tj zJ`?AQvp(O0Ir-nkw3o!SUE&w6@i>giHxztF&Co8}ifY476%+cs(+IX^k#yM0lL39~ z)e&P7lk`$)<9@KHHh~|;gf$~I7A#!4Y{tS_b7~W~VeD^Jy3blP+u^@4aYfxJrmqa# zRN`Lg#hGD}3gS>PkqgGe=Jer#F>$5D`yfbNI@5VVn4L5QG@inF!S>c8JM|n3*b`S2 zk6{X$*T5HqeI)kc#WCStmc*=p55tqH6F$~QXc83)z2KwN)aUd^sp;sYUaL!It=70m zf}P}WKpDG7iI(*zyuvjQoA#x-Ov7=jHTwh3D(O`z@r4_UJlzj~1|paAqgcP;A@mv7 z4~>o!tUsk2F6!!V!fN!RPA}*red1=Ax>2wy{cF=almuZL=rH|hEsRjopTe_@1JM2y zp5efQ?uRXXLfP~~M=}JL-u#tLN#?I~a(sq%Em;wtA-*ejZRJGZgon0hBk9@e1_h! ziewq(+I8!sWceyXb*b_3D!xeLj17BtjqwmVB|bwsJDicQPb+%QE|2v#n^1{zMw_7L zjkDQgJCoGSYEMszfh8&z^8AtA)I5ewf!KB(`eu}5YXUIhopCJbzoRRnd^q%eXi=5#8GpUU8 z{v-8=JZb8b$m|3IT-p}eEfoYrm9q<#4> zuEBdfhJe~)ldIP;y$SnhXKd)pe{q}WGhG`HeIG!d^Bs%P+n0afb)v6EDin)8H-3;c zZ5UmoefbC86Jy^x(Kj3V#6G;)iUfzh+=Tv>_lmx8Ql%UEoFTRkjeWroX3zNXKGuKi z;TZe2ihb2$9}asW`;z(_RwpYA8Y)I@@1K21{S60r@*`~5#M&$NErWexy5wl$=)Z*i zh6w<}V2))set36=B>kuMHw0f&vHiC{Mqdx~;dQ6AA?fk$-QVy5(Pz%xjWPB)ZDqPI zf5R`v=)0*;eZBh|eko>uZ;sa&bG~T*r^);czb^Xr%YEgJczscaq%VKNkLT+iI#)WX zJs^n)NvJQGzu{r{V1r?Y9FU&|6zkk1)R)ZP@H5Bhs)Uqa_{=CxZ@~E?x7dXGlKC6{ zBR*JhhPzL4aw;98uXlgLMqj6>>94+I{)X!US`of;QDM*oNkm9;`x5vYzB`~R7D@fH z`l&COzu_N>zPqIJFX^YgWd4R%j*Yf2vs?^~keL1L-QRGJ=o2%oY0$^}%R`a-ON_qW z{S9vweGBBeTOs!CN}_KJ+R_)au23TUlPFI)8|U{$`@k22F2e^_#W0Y=m>NU|j$Ihp z#Q{Wf??tlTfx{!}XL|$whUsBIdF$m$4drLRbYw66w7jVy7#^^)TmUhqKmRTL4JY#p zjJ{F+d=EJM1MldE58_y#s{dDfe5yg3c-K_E9YalP8ar!RJDTWI1U259tYFSD76#8wA+mn+j1945mD=x3x7;7SphyB48 zt8(W45aZj`X+UC)+@-jda8sG0?kb5)RrjB=l4;yGy`hKKI300LWKnN&ajZgp`$GM` zJj9wuucER3QGYAr%BVuefa&wMCgoTm(y;jiAnu)(6uBCd<1NO2CU9&hQ>TP#x*^>o zF=2sz3XPw@_~OUR|6W|z9f|8bXXQjcV-zAh9LM}EpTA?}8q73J`mrG5Ve+gj@zC4Y`e^F32XeS1?I ze3s)S+l6!(=oE$h1gbA-f-Q961?PjxO`d#Xv#5>3;tn2}7)f(ei#cl5!IrLO3*VuL z;L`TGwxt%g%V=Y;9YYKFl54JmshX(Qnz|w7Y3{}le>U5ZFYrr2Lx??FFuP+I9;QFS2 zckL3?aYj2_@O@N&eDWFW$L51C0;OXOc-0&5s#n*kF8eSRQ%PG$i%Mq)*Y?sqrOAO| z7I)RPcV5nyjuF%vi|knhAo|38*M%){Sf~8ied3lS_o^2+?!%yk-;r`_bp%7Jt=jtL z1`8iXXxGLN!L>04B_@#H&x041=^6MH zp$Li7{C>zX-1dUJ=8Tjqzn`vffXq;gyuwT@ZOOCWyegdW+EvKQ?%rTq2d~OnkjJub zP?V!}s_a2|Hud1+gG}gHkT(sBQS$QaSFXySFds`xtiglraWLRGkF@~5NFJYOn`R4i z73yWRA*!0zHdL$C<_#MG)mN|2>Rz99&3Y`}DfD9f)T#agXd6BP%{#J22(QYWAoUaz zNaUPHxd<9bM?bWEGOVaH6hp35xT?MpG=P^6p* ziJQOLcpk&*~LHcP#yV1P~B>h>YecP~o1u-Sl z|0j?%Zw6J_Hf)6-p3LKDbLMz#?ab4#b!9HaHYKwOTX$wRww}y;u}#f<65BK@BLHIm z3LE(0$$Xhi=3lUNW#*z2+?m8H@MbQ=HYam6wuSJNg6!*%Og+JWGf0{{%f1J6&k*?G znZv51(a58e&@<0>wIuCwFBZY!cQ56P=SDE2Qo+y}&#i``GoCGACbO7!#`B$Mc6T)U zizwFe>_?-@q0T-eU`E<;Xrl{JIn=oTi67(VH04mI*)Vjd^Cd9!-Xaclz7Ff|8z0_IjJGZulRGautn=lAH4D2F&tWaWK)hA{!60y`^BYPQVPog`{sgj~ zNw@o5kU>{rW99DQ1qJ)jg_gSJ+=Ia7*@4{qk-u2yJ(T= zu}hUhoq`ca(PfNss8djc6!DI=Lml4}NdA_3Ciwul=-YReL-ORJw_!JH(y^CMS0}w!Gz_OLA+&X|Ls@OPZ@8$SfF20*5*U zw}A4uf8|i8V2k1CP^aKqhNDBBf`<%8hdKq{H5?u46#T?+aE6j!u-9*6Xurbdli9kc$6wU514BvR zP^Tably@lQP^X~KaLS>MZz9z|l=Y5(Fo@f$>^cQWIMkVqOwR>KD~CGE!SQtRT&yGx zhdLb)@Ybyy>iD`*ZZu-vy}mDi(9qnqzAuB!L4-q{J3-PHV`IDjKWsfau!(Z0^B4r& zB|6l}4m;5q+L%q>V0;=49@d!shDpPr&R>w`r6~?|Y}_sss~zg3gQXSXP$$>0+M&*H z!{Q*}X{k=HD#$XjeP@8swO2-#|1J=>+qWH!^Z5jaI(3kEN^o;h4s|-fsm__HBo2o< zrgM}-9pBw37eo~Jyb|$@A6xyQMrAqxnN_jAF(WN}!M5zE2 zsbIz^b~7E--G);3Dw{WSdnEI@=r{$+?U6V`tsjE(lC#|9I9k3uq<_pRZZ|tF{Xdxw zgX}|z`gjIH6;K1Y8f2dW+}SKTvDo+Bn-6{MqJ?kG22T)=2E<2{rpTgjWf*uGepBXno1la#u+m}B> zKz;)Gzk0iW9|8CY)=yA=g6js?-1;tP5@FjjH{UL{^D(P5wgq0IqXFX}fQ|v^G=Ly;+35FCh*J;=dUZZx z3t|uAorvE;{2?MAc^r+rhe*)962uvZ%MjNfUXFMp;%3Ahh`gmehxjJqKM-?qgCB!P zAj2~e`A{W{_y)wUAl{Go7$P4WFC+2+>BFs-&w{Cl3lMpCZbiHXk@sbuFT7D>KEc4j z07V=bh=})gig-tquMRn?poov|B2WZA6DZ=1NJ{aMN)gQv5g#$wdG(lrhz}oWh2vKi z=9pPTd?rxDQLNPG1A!twCq%^iEkzt^ipX3Cyp%;3AC@e|C#Q(`@TV;t2q2eZ3#reC zI&=8^gouxOslz)l)o^?%h1o3>@hK)Ej=d=2@e|S0U@7WB6cMKh6mi}l>iI;ah!5E! zPz0VY6!F}VQhfYT#Al(1I2oac^AoAa15FX1$x`YSuoUspD@O2nL=hiOQi=~Giui;Q z5r<3^aU>-b)d&(I-cd!wvw@{Jz7vtUheE`AtB5##VyOT&B6=7sMVvB9iyXmG#DSfZ z;%JT{4)BUV5jd)&h@(U)#fc$B+YqG`M{^W$Y$xhDj-u!;h@>K)(lAYZA&y*5HzbDx zOBUwHR74!rQpE9O5hwzO02Fb$B&9e8poqf)Da9EtMXiWp3m@ZbnDZr6xGoyk!2E`z87Nc^Ffmei>{9L(x#UBP*+2+w4te^ zt*#Tl`-gu!k9!wC04e{k0x54kZ-_rc@rd)kGl=u9vf~L3?04T;&3LlvH7(ZB$DLrUQQLK|t6hj7u`%1jnZj{RgT?L9Ug2H!&O<5dv zVcMqfU6~J->nyUKhGLXUeNyOYkYivGhj+^IEO!z|7oaXzPQJ@k7)Wy!(PV2VcM2IM zbf8n5JaK@z6J`xz3VGBqYdrr<9+6`k2KJ|uKNwT~De^GX{2uXL^5|%@CesI7h*Q`D zdl?>NK1RuAjpaAUBhRdnTp7dPOWt8Gr+CCkRC8jGGh+DL$fLc0w5M?H9K4JDgS@w4 z14Dp3-foyRhLc&}!C#Fs)YmBb-e*1zv{^&=7J1Cc4@mxhk;hSeQTW~DaiGl_ydC5* zPd96X{sa1nn`ZipzuA!AEcUgd|FRwZdp~)He&T^-028>j9paLT>qHsYiji3O<^_2WBuYq^Con~=suv(Z7!;Fv# zLwAs=P-Q1o2>4lZ$C{VCY6;clrVv+L5j#=7=8C%D1S-uvU< zaf?!yDK~sYsBnh^NFWSBR`lZl&h0o>u*+GTTAEOV5QYlg4yRp5o?2(h}2 zKHe-@EY?2$+QCpICr1JF@%SFX{>ob|m2WnpkH;e+PQnU|Qy9$h@)a>klG(@GcOsmG zb)wIlFYBO>_H8~rd_Kncr9i#8+KK1pElW*MuB9g@Cq5>As7FC=|*+Gs~->10BE$#4?x7k!)qFx=lyeaUbV z9^``sVS=335026NR-7*)N@!m)oP_5_>H22-T!~4AX^g(!aT1KaSEPD>^(Dhecue|h zw&;7TG;EhiB)2aCPJ&&es|m5}GNUF;6Y5KblQ2dU(MK-Bn11R@hLg~JqSj;V>z<-{ z$2P{k-fom&RrB7e@ck-EA5TwxLF)=U zy~yXF{CrRr=Fh4tz|RC-H(NUu#`G}!Oy*FDks78U$|a9f|HDKSEk=S=LQQf|KwIm-P^y^&7o*)!)2!_oJ&WYUB`V zqYWPCrovT#A^eUKWtd;Q)8ym*M)`r1y!)AND1O(zANBI{t?p-y>_AHX{jpdJMxU#( zShYvpDUFRvx3R_D7_kLy8nBKkpn-o+4Yaif>zg`=n9zvTS8V~c z!rQt?@1md}`{nk}|a{IZ%p;T=`_R5IT&I5GZEy#K0BA zVJHuDtwnWN$~CLCwY>qW)H{P%;~i?P>kJUCL8Xd|wOxUe0+YB}+R0)?I1O*oF3`jR^~jS>ET3JhR<9|%6hR*G2~asc zeDF@xtN77dSVRw7u!~Hf1eh!F*MH++uQJQ*#7QR|CEF$$+jJs+ zI2}rH6;5Qn)N*d z4PMF1R_x-nrtE@5+ck-HO+vAVMU%8ele9&XN{*IAlMGf2EGjn^vGg;P=e6ZX0w(*EqsP88aWXx@iMzZ+G4Xw^8oxIfBzDZ@E|%ujkL z)&HyjigN6qEHKZVEE96tg7J`=yO?(?&f?u**f)Ee!jF(PcpYoYCs&o7GHo%?!x5Q; z>(j-F6dp4ikLW{tBp@E)nu&fP89?y(cR}!|CQ1UL0+e7n$xXwE4faFL*=i{He+IFm z7QU!Dg6(Sogi%{Nx2vVTrn6l@HLSIDp)P~Kv0SCmQBx-afulcY9RnyG11KHVtmQRL z>w=+~3hx9z5ksJ^AEzLa#!t)3H3!@ataoqeT!LR*gZz!zs_(*YS}mQS%a#P|gH3B8 zI;*t>2r%uf%^F?ATHVy%(W!t&oUkXWqg*r1tF93zO&rWL)rBx)Z?Fii5nQ*lu?}q! zh+}osv*DPbbZFCLRvMY^&oD3`*rO28WYjK6DKjj(u&(~%HSK_GX;A2OORy93s?}V? z(%YB<^V);K7Arzkkgc2TqHuzN5W_k9fb z9K8+_9dE$~z%+V6i?G6wv85l&N5RQIel>76fLkD0x&=dcwU^_;|qkAZ94=nq0r5kLI zBFzvxgh(V~;_DCtMAfs3@yocL{Kvw8T!g-fz<|6f=Zx!mB<3>9_WM%ICr2q~LZV?n zc)CTwfcy%AuQFS~fIP}00Z&|5Ca49KGK8% z$>IBk%pz><%xT!VGS9*`C9@t|cjo2TdNS!MI5qS8*cup+pEDOQAin{%GY?_w%FI9~ zxHHFN>&@i4&Ya9u*a{5DXORR9$PFNAZeJxT+>WF#+czIcu0ZsT@bgPz4=_T$3A(4i zlaqQQ^#Yt@3Equx{|N%(Jr@j@Di)-1LAiI0~RVbx8rS#LiRY*Fhurf2GfY5g6#2Guoofy#AYfbmPXU_4gM?y;>@fz+H<<%ukF!7@VVcMuT}b?n z43Ir$;*FN7L1d3Jz;M;5pU56NkYHc>Pf}JBPl2nT{Sy^?PBa?=%U$%Bs@yB1+1sL7 z;)SR-HL}N}hSkU(zcj2Mdu)NFTs@p#<^KoI2HQ=`!Pu7qguYtRl+y#Wf_yF7k?2!^Mi^ zK8?04-M_6GXr}_*4OS$MKMOQgQ!L;2kG|Q#~?NNgUuErbje* z$5NE5L=ge+7}kn3!JzI&EXP9@U>qw@WcVheDZdw#@)48q%?<@*P9Q#5m^szKSi@!r zXDULY?~Bj~FpfJFv8f+m9NQG}=)6?s4WBD@7lW#HjDQU4Wc&rChP@`G4oNA1arj{v zz&NyKmnyXZ-yhM$>p@u^xF3_i2B1iV@OZO11o2ROByB%s^DbeJWd4^R@S~bN5~rDU zE4UnT)+kf&6{Q8D)~%?28td=3?a_7(YmQ~v(e~nSy&`+bH&qdyo7Nap*$h|g*0-Ug z1tkjnHj5+IDJ+<%G#~1y_@27h|X!iZCfM4fsK)e-k3*tkFPa^I^ ztY`C}1b$(-9+7+*8HAH1e}Uwy{({_;=dQE-Gm@{42Y6GSqZ4Poa~(S6iS}_}`;Wdq z0eKwia6hSw?U^>5I*=WwgMDJk@S9YASd`C#2-KGdi-diO%Uks_`=54U9g@N!p*~`f zkYc>6K3-;;Ka>%ZgbM}&h@%k4A&y5R_6Tu8h%-Xm5#o^$UxYX##0Mdch`|COJ_zwZ zh$TYY5#oUmmxTR5+z{f6_q%L;vI+&AwGrp zJmMb_*{OMmV-Y!gs79i;vU485I;cV;;~VPQxNAPa_GYIh@+VzP=wziQpC$qK1t@im?925MZ}>nMI1)+ zpd#>zrAmQHDc*4@;!sgUe7tj~`6Pvi4}Pi7I}8igAd1KUp71FsB0dFJpQTZkBUaJO zAqwkrj3c5yfTd^~Vi6(&M@GsdY(!*0N;s5}ia$n4mg+$i5vN8JafB5b?e%>N%WZDUPs;KoR)Zrif2-DaCQ5(giBI3^ofN^iqlw zB9;nZBO(saDdO%+#i4R=_y`pd2XZWRFN~0i9OF{N!GMT30HlZ~nTR-wqKJbl5pn!M z5$8uD;!~RF0C`3e@yivqik5uF+fFj=4rE@sjqsW1?!T~2m9J)$H4o6YY zAj@!wD>)pRF^9uDh&X7I_SM4>IUGq#VUEkFnM1WAPz3c50_EdTN^wxeQXHj;E{^Lc z;^0q8nOiHx49;74A}A5LETAYlP|h$}6Yfh?ctyAzP2=*Hpf6q4yX=4aeJoN1cqdIl zv`f#%kA5Acbq)9esnq<&S&H91^tY#_OIy3zv6S!Qc|Gi0;IF>5|9F~B{#H8jJ3{0= zY6LH$UtL$)v}oxk(0#RfEx;$;feGG2NBZw$`N_d~PIX+?QTi{^G4a25e9Zll{G=bi zA?X8R-FZsIXYaa}r!Mu$kg-3$9x$7@hAj9pS75N>9 zu4qa)el^#{X3d+4h2lu#0XS>kydZvQ?`*$J^WruH42BBkS9@@nxkmlOZ$ysI0JJFF zs`}XnGT0UVbzZYh9}bY9p^jj4U0Wle>>KH=)aZ!m`*?JbAKSJkH+`4qIHHRTPJP?s z@lN;TUE@hlt@dPiPb1)n$MSyL<4Mo=WTsx@DT91&>UTY!x7`@?rl$PA&wST2A>DT6 z;2COJ2k{Us$0(l9U(m_}pr>IL^#UmRzIwl=l~047jQ1RSG+ntHv;z6NG_B+`lY01^ zr=CrqRnW5mbOtEb)lzR8C?4X~Ax$eAK&fYyrj-|fvfK(#j6$lHXIPq}X=N2C z?U}CW$}&(awVGHAiq7p7OC<;Si2TN|lJziM%nE=)m%>KD(co-Q@ubj~H6OGPbQ&m@ zd@F2~Q$X3?sh|PSY*6ZDz84f_l^%?F6vf&qg_TkO%5qq;sLElftjf;?8 zcUA%DXi)w*f$3+~A=JZ^GwUGeiJ*Hy$ARtv9Sgb}6#bvI9dr!nR?s5Q&7kP#tc{?! z1QfQ*D9~>3BSF`J;=;>n0}X&Sg3`WKplDiQzMKGB1AaIt_CeVL!Zl-Azw)YbsXr5X zv(W2>%Bz9YGla)6=JAZfgsFlY?WG2Uf+*gGag-a37DDfO_H#|7| z5gDE&k23sKg5g;h&-??D&zJnn-!J(!l7CS0zaaW~Tp0F|N8TaHzew_5(b?8j)Q2|T z6@EUblb~JJzvTbOJ;?XpF(>a zJV6wl{qc3N?<>;YapaNa%RGi>SRN-D7eO)HD*Ahb&lUa_;kUCqZ9^S~Q8D~O)DQd3 zI`f-le+>UH%cK48h`wuC9+MTbjy!|;4*q+Rze@V!2C@GUslQ0_FP8k*VH4Y5CH8$N z_J3c>KT00@JET0Pn6&3<$>*;f%M`ruiIqyMo^H|q9rCy#T`hbk`5eHv3eVRtS;H*LtXmz1{^aWxbH3nSXVFLe2V(!z z%m;6dXO)yMmi%Janhl-i{3G^Jwxj)v$vf;@1pQDE4u1#ZKOjv z7`_Di<}AM`CjSS>bmsSl{iESu7A&8!q_(Iw$#dH*hUgV1NPmNtpedtN3J9i7QEknV zMK!h63zjZR(yT%1aUcf4$^|oKR?k`5|0=N{L(xN$BnU$Z3nhXViYX}jmH=BQalwen zC5w`FzrftI2Q{jYg6rx1cCybrtpYnEL*muHV&%jBV!tcyU6)@RG(iuB`x6mbc!HHC&yW;cB15D zg;X@nVc#hIb6xQQZKsICq%XXxfao(_yI1s0 zgTAQex@Z*qp`>_K#iEb%9ftj)uL}B18#+gCMPElUysC9E_7#uT``aC{52Le4aNr{) z#H;ESedDA`8T2_r{P9qDK}qqdw#L}ELhS1i`!IY;WM5KzsqLa~gc!A|fA-ZU!-2qfdS6d})Gb;2<%QV)4Fij@jRt@%m!Um)`NE?ht+F z%6;XGczscaq%VA_cclKg(n0r?nVt&Mg!+=)hv`JkWrlHp5b$c4LJPQYDw zX~VDw=L@G{2np>=hA-7qswr;^{L;yPzUGBIWv~b4V&!Yl=+QY`M_0+5lu(- z(of6b!(0zm*@uV$#F+jxzwITZPUKf-=w?V#Zr0p|!Olxt+b`ColG?L0 zh&7W3iNsemBSI82Fvl>Rlr znUuZtOD_TR6>wFsXtuMfJ=hn>(!`1h6D#@+vvh=t%a4^}g{);zy?OsP5*Umg zMRy9$R4n=wdmCqiAX4eXksg8aV|4_e_}Cl)C_XkvpnSq7as(zFt0Mr#$L0t?@v%7q zlRl9nP?q=r^nK~YAcq~{rH5t{9iES&*+d8L*f)FBE-rwI$t_PO)NSyeI~I5lC43IW z++2YV2DrZ?yQ?QU#<4f;kD@oxLHy_SmLH>jD4%d_`k{QnvFV3N$EY7B9ix7jbZq*e zEMYf9-z#FS5p^{txI&NMswqp@Nyom`M5ofRZZ*k`C#D0B_y$ptunS}FoF74LqCPqb zYWsdT#PrBfxalXk*Tpn+#C??HR`<`VJtke>pFwYo=|`dKliXfo8am>xPjYwt=hYsQ zuJ6xiH^%g%(Dlit+%W^FBkp_XP56jE3VIXv{y(cX*~IrK=shO=kZjuf&)S=8`gs)e z9+Q4ZHu+3wuLfa`0#hDo+(kbu}V?A7cDx0)NZ0dr{DhyqywzDb{C}!6A+>c+ByJqd#A2w)$8{ zX~li%XcQ#+;Bf$b_}>M6SWtu$eiRp8)g&J>o2&Q#4CFA;mX96mu&jv#3~Jq)4lCFO zh*-fho}<$I2&SXHy{WCUwH;<$7;3G**eMFbAuE{EU`ySFA%Ls4c6GLObqWaUqP9+W zg6ZIaijiOlVvbsMu%)Zn!lytYxU{{lZK=iWGU84L+gs{Fb6eY+>pCqU;*+Rvu5?3= zrFfCkfj?YdsDN}WI-0?fJZ0jgO%0vc#d&k-iNb1V?SjEpV-Rj?pi=)pXABk=>+HIC z5Sp75x~sFX&bszB!OjkA;nK6ZI=SmJ+S}_c1FLC05NDxP6_Q;C)_)UVVzEz=4pMg2 z*VQ)$8_ud**VNqAtWRDg$KKY5I2VQ0)K)5u{>*O80qqM1}v9%?*XlY4XNQ+AQSW%vQ zG5!F~@Y-I^tJ35hr_hcgs2x`PLKrgwcdn;V^QGRCSny$HBp z^F5^c>I((_^$>vZSz&sfm6A0bpAh?xvlir~WD&I%m^DR^p62%>nd!C{G%_T5Vq82&le#eOCAS ztZUX|`Q&h~#f$=I8!-aSJF-p?UX=?-J;jWS!R+;n%UF=75PJcxb8{V5FQ0iH7g}K2lNey{|%W53?0~?^Dbs zeD7W)dJqkK@2yDhL$pV_+_!_KKTpPgKelforetRP6(r4@NnN%N#sa@LYXptXA`X+C zH5Xe~*7?|`WL<)-JF5p%mmuBo^G=o54;*6x`jxctNw9>=dF-dMl#YWro$b zyDeaU%EB6Vmq5D?c1twNCFG9W{{pKF)VRC90s9$RrEz!v1ok)7JYAU)-T{rf`yp}( zo+-Gy({Vx(AlTsU?n8&H@HudIUxt8f`G~vgMM5#a-OVWm)4&|y?$&^|F%8_^oOMVL zW6lTM-NkOHLEPPQ!En{HkGQ*!Bf-A(Y24izNdA zE00&hEl3e4RGt3ryTRq#fxNGP{zm8IQTAJv_U3I1r!(>%Li$xD&&eB&Ubqp_HM+nW zobh!?J#P2wAjjFq6O-?F0_j?Ao~Qmalp|(eT75x5+POo1gyd|96#VXxKZ2_xNBG?# zexxoXNBG?#gOIw0oPyu=FGBLC)HBh49+JO8GJQk_k&-=Le+UvboHo@@+f%^$NBI8) zBX}96Rjb;^Lkc9`n?Z)!T&JFsN5DW{{pgas>Tud?`5yyAD1*#`VI)A}9nuY2jKiRi zc!%6%I3n>5xzlh&;vI6Y;fTaL0 zAsvOpdk_MiLJEnO;JZ9A6%sGOcXu;~NW5H>&T~m2@%pa=_eYe=4h$m!67P_AL5WnM zka&mqkW!pN;`I~qnc%!x?_{`;bbFOuh~A_|Fj6$HGC zDkNTi2Cm&4#Jqd`goPW4n7h_L3ZxtnNW9}f(oe(2c2nZnj7=00@BI*Pmx#oh^Dr1b z4S>X(^J9}9)|j*3q=CfyGSa*>1&Q}9!)henzk+3V2@)^SPZg_?c++ujQLIMdRi_sh zG-PD^e~FS;Gntif9f;fQ|27QaqXMA3e?+Ed7;a7ql$T0X=aedm1C-ZvjsoTN6M2v@ zCIZS^NWArS#M=$mGno#<;X;X8*8-smsDa#61;Sqk3dJFyK}F1AgGtOfqF$4>w?K%9x{vRrIkLdF{X{3(U&AM#lc zf&17SEG>?RS{s8=DKUlAzEdCYf&OV&TJF!0Leu`Mz|uD3IrVu&4!s^kd_x=!D@7bINku+0 zDB?pzL>%ByR0kuZB8Pw!@yRG64vZ+`cu7PYQc%Q^hKTqurijxA5%IZ25g%gG;$|tu zy$}%}gDkZ>QjyO=iuh=h&f%3r5$81`;^>Pa4(X&tj?GZe;y4Xb4*evD;}qs_tOF58 zFw#DUl2pSHrWEENg(8kyia-(6a{!dj2Pwr73QKXwBDy%pp@?H2DP?Z06f-z)zlmUJ z)tnWDp(#4>q3*I=?3w{w*~n|ZlS?W}IvOtS<>gf5y>a9XRRsTY09Urp4jjOh?F=@T zRySSPUe|tEsrvnk3qd;SH8AHM?h4_7wowe`mWFMA{yvb{jj zn(r4JKQn81*Z+0!veAbi9%XiuTcgZo5M>sSvaUirAo1wrTx%?*GgYADKsmP>16mA< zM}0LP?4XqaP>c+!3pK6e+y|4+>KsigN%1(xD{YN$N{V_4XLS(hH1N=+a8^fxQvWE> z04S!U3O|+k7&usvDLrUQQD6)xia~+GIVHYoH_By$t^&n=C_Gcxl*K_YaaZ}h7xO`g zQIJJkLzGJm2u+4p%JM9itp`_Od{V-ZGVeI<6bhI?97HFdLmq7y{2k?z19c2O(*H0Y zF(eAupHBW2<~zziK^~(V^ERG1h*{`pgJ<+-*2jUE#vMl3#(WG24L;F*+2gKn0%#7hVie`HTzh?|P-@*T#`DpKJg6~tv{=$0)gU>U8`3}AgHnV<# z*#B4N<3Jnyo!7}@;%xA9enK8c)!^UkB98-Y@N51bc>wDgd=38GKpafdUq2GQM(kS+ z`-yXD`uA((9s0MEceFnm^&tv}Dx{n|(@y?5Fi!r*G5lWG>&(A3CjZ`D?)OjQJVy1Hc*E5| zjocc@MW$mQ5Ge{H8j=Y^6GkCiE+yKU1`8C(!2TfzD!j!qwVi|qSUSS!Nu}k}0+G-s zF5r~1X|cF~%bV7;1Uox}`pPJ2tokI900mUTV_ad?2CCVbde7vh5$p|*C}oE3cdOV})W@F-B> z5bl9|44HsiWK`%2UvR7FW>Y<8URi zuL+nrszxmSoWT(fs9fMPLSL*+k|p((eM#{Ow~Br8n70l?pEJbjmi|kMSGZgB?Usr; z7=&_v_hWynoQfswI39`d3NZ#^_?9N&@szM}`)=$D)pc|v!YfqwAXFAJ)p$$UR~tVF%y?2u)i&ys=?kwgjlgIK4{2hZGfol_l2BhVyu$B^KF%)~{Kc9&wh8qm z!z=u$JZSEf^KjUBt?58Dew@|Gg!+=<6^2f9Sc2rPDbYN*7=69t6&ihXz0J^HeY`8M zd@Nq!x|1litP3=;_Iyeb5t7`#1bBt}L?7m?Diq0cHKH!@{wBjKJS_U|ljq$0e(Fnx zS9s?nu}chkLvV{4~;xn9f-jBc>xB zX_$x#y!6=K0AAq$UZM6$sPG!+Vf{>FQ+nw>}?-j;oA1$ zXRVtKWS>Bn92>oM)!*Rt{%=g%NaK9lI1{fu4y35hAZ~pp#kzl~*Luj59c*_$y6U1X zRX5*J{>7C1`_as;x*W?C?_@cn?^xs;o2{JC2x2PQg`06zY8$vO)+=yOis(W#n2V+k zsbyDv7%R7Onw2iiiHgi=X@Ie6^Ubn^8`ofZwg=>*L1azj-rp;RomPe!^Lfm!GZe6_u-3 zua2pbpzUQ1QCi~-iYY)F9U*pIJzZ@(Lu|fGC&EQy^EnoAh9k}A_~zpXeXr}6%NlDg zgX>O#H^k26QKxXUhzBN0qK-q91Rbww03>~bxRUW+~zZ0r< zA?`+e67eA7e#AY9dlAhqrRJc@uLVaHpP`r6rm*0DcL>0IJo}Rd-bP~Iu{sMM>wM1T zdb6*ueA*|kP@HCm)2z?=8)I+#8LrSrq8s@Gt$JVDHZMWZlS9gVGBp@yYuP#d~zX?3l>rD50mYf!RL?sT-oyYI$HAyy(q{DwLS${!#0~I0Y6@npvo4FC=kQi8b8ibH z7z^VUOO0N_#s1Z&PmWiy17In=fLd7Q8*Z!g6aHe`7!vuI+?unr+*%XDKYk0d=FFH^ zZAB1DK5=^^rZ_APFBSO2%?n%Nuuj30eBzcR2TO?_Ps(R#>Xl9eP$i~J{M)FNiQZ84 ztG;@56fXDB7s-RM1iy2QfmT!fB_!0nh%HeJ_4JeOIv z+m~WKNOZvMY)4)c+|I8c_$s1?+j*4Pgxh%>i5^4)w{r{9KSs3k-J3wtpJv*(4cp%$ zreym60Fvg-pep-)Y=E|tnZv6gvj|%|a~eZdV>E3kTiFeeLLvk z0#8or|F9~sb+{7xIeg+#;0FW@f2H*y7G#0pPuS<;E5?FBV7_LUe1OAz3(Uo=lLieg z?~~E&bJ6Tu(X5S^&eUoXD<;L8W7smq4hKsE>=MOJ088U+!p@{vp6#$+Ap`mGdK03w zw{Xcm0Bs5xXfhHXB10hq%`ps-f!2WeEs6><(3M~bp&`gX{0^AABgjAm+;Om{8&)F& zoeOp?3u|Pc%cEHW1vzr>i)INFqzu%^K>X?HM4F+Ifu0B3gDA*A;T_P(KnIa?3v;Wm z-!AVsbka}A&LC@fet@2dLI!#U0=A`)f!;9;kb$!EAms`SA_JX@^f0D@43u3DhCney z2AU44suLNA3)feo`xG+JgJ9T~f($eP$+g%CK?YhJ%@QbxyC}#&mqxQ+ie~QxtJ>7a zKsyYpk%73>Ugc_JAfFd@9K?QktNg?-05VWMBst@-6LyYoEYi!Ebh}SNa?m+QTe**8 za~fFmnWZjO_k3`9b|Ci}D+#aN_Q)zGRt>JV=?mb9vRPvl$E)nADdLjem`!^y7 z$UwJ2IM_b!YaquF4aaixJoOQ~h6qDx^~VDls9-yie}YIM0~PECmjOiz8K~ed;6{-n zGEf26eorK)kb!($#{DovX%l@ONFPTseT4r%K|Ed`AkwUtm^sx)+uuUcKf?DGjNmOJ ztyu3K=LJiHn&-WS}8nc(y2HARq4x`%yMKFq8zyKn1@8<$XvY0~HV_ zNO1}o$k%|3S0T!J$NxtVw^!Mf3!Oj)x&oP=$w+&1fDCjaIG#?PSxSD)8hP3#EI7qE#!2D%Lb?h=uK zvhM|RCX@piDEr$cJ*+YN36lmg&@)K$(iCK%=M1ZnfnEa3?h<66*A1(Yf&Oe*jSQqt zuL9g}GO~Td;RrFAyM26a^05YFpiPi?QgL%q$UyglQ=KzZNgT*PrgIcBkZ&K# zRicO>1NmM7Uk5(BU?@pWc78zb1-4URw9U~xvIvKB`)UX{=>Mp7Tfc((etcSC1D9~LUBjApvg~MkakyU5E=cWaKF_UDrs{#P ziszx?OsZJgmx`qvAy}hKRWo(4TZiL7T}Kt?C08*fgu2R-^LRR0qfGT0JVY4m)&{6~ zifZb5QL_<6m6|%GW~`~+5LUAtYHaLsf!|hRn4}$JjWw0lhb#XPmB+JkmaWD^y;L@p zIK*SHTgRj8m$336o5m&I3u~;YWX8yL>l#$PoR#zYs_Z6Iq;Dh2-;eTm(%yz-`nQ-) z;dv9rq{5L^P$W3PRNyfueiH-JxWy`5CQ5i{Sr`3pVabv8=KKHn+@r_0kFUM`<@tZh z|HaN9JYIayH}*XCp2D#D!saJ4F5Gb5OKBh8=A9GzS-S6>n(sV(Z^s!~KXo7a()7{u zKU=rp!WV9O<@Uf8i=Qod{rnfG5Ag%U3^ZJbNaU93h}DP}AchdvBi?{`7vckmyAYp7 zd;#%I#19a8WI?POaG)62-{eziJi>qQ1Ooj#cOF4qU7*v1SLZ2slYc$ZEMJDmkSg^} zd39+({ynL05R6RwJY=jtOWIc_F!(uQABXnL|B3L^ME^R`$CJ&Of2rh~_WnnBqmL5; zXM3D2kT?6U?grqEekb4z%OyG&4ipu>H34~?q|hwxJL}U1_7mIY{&FAKj@ehIZd8lY z?Zgt}`lM1svpfk8RM?%$*#*u+-FdW+a-NU8Tk)J^x6x*FgZid|=O*T>N)Iu03J|$u zgv&feAo7+u25~IniHNje&U@{r{jKfGpILG3h#iMYU&wm(cK^N|d4E3e`jZ!IJ8$Y= zHe6bm^+Z?w#Xm1;d~xt)uCK27_7B`IF1+u_%X_~a7N(#%D;^n z@$4NNr>xxYU$;#E&d=WIKKl=sTy|gThH(|s-Cw-z;GqTgl&?G2+Vav*ww*Y<$G`I6 z(m|DN?@Yb%t7qPmld<-pQ1%-yvacUoKjnR5lQsYM;2kHn|N7aHZGo4{x_kU7b4xSt zeDRX(%6pbgIJxlgeUE%$&Idf_vvFKTAx=T$MDu*a7Q`OJI}yKy_(Md(JpCTgMkfwK zEJ2)s$N~8p#LE$HMBI$H1M$a*&mq2v_z%Qf+z`efPD4Bs@zaR^KYL#TUsZ9Yf9_{4 zB)J3)<=!xup_^W;~}HtMQz{ zaXvs1CkGAHV*s)3|j;bl*P+deEWg@N`sY1l@r=-Fu zECX}?Eg}vJDdI#{;&V($5r>K*;*g6X4r)Zi!7)V~DT^%*_L=Z+;GyMQLIQITPYuV* z5OH`faX9j#8O|pqFo&lUanvdz&b27w5L86p1xwL(coA{9Oc6)WMWAq;no`8Mkfg}5 zEkzvYiikHNinwMW5jn=Dhy!j3#q|`5IIflyIoPC#BTos%(I!P4eu{|mA&NLnl89=0 z2odK&BH}EKp*VRHk-D`(#G#LfxTL~R5&VgWBVdYZ;Uz^*&nV)oO+s<1MiFOkQbtbM zDB=`QLb3Owh<8`9^&(h`?tzzx%r!-v%SkBCn<(N`OKfpe4s#as2Q8NuM8kTG#f347IP;ObaM;d-Ir2e74(LV00Xj7t)5FA1tZ}W?SNu z<8vFa#pWnTGHmIF=~DHY+Lpdpt5am^O*VK@yQVFu!Hb^!z67yw?{&UI1qp8PHrNta z48n{JSKX_~7**IeR9^)*U^^8k5O_6E;O5SUu0ZSZ zw+03WYeK!D`$D~etk7lL!!2NiUJL{V=LJRt9|{x)YXb8@VaEzSti2e&zbn`%ICkK>vvNVlyWJ5cgH-fG|1-cP>KC%Rj{t|Qpc#gL~ zqg-2|onxTGAb(oZ=n+ubIjrgWgP={&AJ8w-qJ zK(SU(6Vf#52W9+|mRd)sd0Erw2~bsTP_*uvr!|c}4$68zqG|LnD8uoaAzWNF2Q-cD z2W7qP(=@sll;Q3I#ga+QZcU>*Kv{3wHH~fqWw@I`Ly-4r8f^t-y)`w;8e59sW(`XT>AACg9Xg(;8Yw|RW?gYhp zNw^;r^NDaLDB_0eg=cyfg0B?56cjeY5#e({u?~Y%q~nt!eYGzl@}%}fgiWo6N<4d`jK$0eY=9_vAQ9WDYr2D%vZC};!dA(0;dT?qbu z&<&t_Kyl8)yFnL#?gT}94fl(@4|G2GPEfSZaJ|Uag3be93)%!)De{@1)!<7((f+~_ zQ0(m$&Ihdo%>k_f<@JO%6ShQt8ufWO_>-Vm+Y6rny$tj?D7N4T9|OfSGkg?uHs}%1 zOF<8TV&9eU0Z?oa7QP>p=Wib<=A+>~BHs6kD{YcER%tmV0A_Yckc`IXGA75TO}DpB$|9-xKLU?(px# z|8D@Avy2^dIma1b5hf1pi01I*y;2%Nf=nOxRJkCvJNQdW34t)8*?9awGW~g5%`VY`P^hb2^*6&f@Gg^JD$ySo{V~WHzhCrx^@R4>uhH?TKY8|tbiY7Z$eVSRPYZ9>Rmvqi z$4zvv!Z!DRWj{=ZzBqxulzP}O_08wX+z-~gK9)rubzt_R`y|rleyTH3Zo2oezTo#r z{rbrx&OYI9XZ{>KLCjcQbG|3B{*b@#AspRznIDAzp2X*Q-hM)+5GKEclx{zGDK zt?>6TJ@|bHL)V3TIC(<22i} zOQJ83@`VtO?lX|Hd=H3zJbA?by~Mvu^7p9ddEGMnv%;@KIP(83{2|G&A2PaOlHWgy zy=x@DxuU-tl<^}bJb9%5nuOoR{6IEU^n{S2{(PJ>y8nXb`8y%ynaA^i_J;Y4a$A{S z@O)lF$7_fDG~wqk|KKkd{%+x|Z|J`cxqtHI5X?sg>{)V6o=KB8t#AA>a zU+tj7*iG?w3I9CuM*Uvl5nb_ngx`;TXbAM?dhQmU<)ZtQ@O<7%H%s`P!gIXE{Pe-o zEkJtQkJMfkl(x~hVv3$bkRyqIZw5_j;~f zvAnjfX3@%3b*Yy#EIZ_)Wh+-zEvueahXOCEno~0`zAtoQp;JV0ZzS!CpsPi1@|>#8SP4T;LW04fm7#EK4nfmuO@FMfcmJ|>@j^7Cv3BPiKp6)ylH{7->JmD+RmG~;OeUtSL?X;b+DfL^s!cltc zyIt4Y&Ruw$>KZq8tDM)F&A12Js9Rly%c_>ntE*bIYK0x;uiwAhu2YRGozSWV_>70& zR1KguW>gzHn{cX0okc+P*-+ZAnjGJ9=})Hyu;>V@a*3~}&c?3Z+vh9;Bew|2P0cSc zC)sr(ODb%QeJ<5$E-6o^C`+f9Mnwr4RmmkP&6#P_v^DNDlND-X_>wYPk*blFOrtuv zVV9U~-)rpdZy|3Eb=qjf#U_JxHngHVoucewy^(veUf0<)DpU>VfHRU3(BUf5Daw-- zQUQ9`dTi+;Wl3ERRHvv1v*mr7dYEpE+Vvn!Af2LYx~_+G`e{_Cde8wYOakuKH{I5_ zlCDTr$holwo#ro)3(N)>2!+nbc!+?Y`}eLq(P;NST6UQw(d}|=mcUasjkaRf$VI{b&yU`ZYxsPwGD(YU|rKliZ*HB6Vl~&T2gN1+DWGJh@ogGWZdO$23sA8_M@R z>CP5EVz$gn4Sqxs7WsQLGr=BQ4GX;Xqb6W)W_um8Bj zS~ym}1AF*t%y$zkY359L567^$PKT+ca>e7cy^3p6y!3<+vj05x7HUx8-FO8j#2(kt z>1K+(xv(cwU#*aTvDZz6ldjmtZnwRecql+;;%*mv+h9-TqbBProY-rN^)#o%d#Dt9 zd_GCH6ZV|W>tt|j@)v7m?#R!rT29f z%I$_dcb-J0h~!V4EDnEq+9&*uyg)-a-I#1I;gp;SKjQj{y0+ewSl`COI+sgnFCBhF=VTpwzQj5-(`C(d`I-Es!;koS ziH`q$tPRoyFV%E5+KW^{%KW9nkGKsFG3n~nKVBN1CkJujvNte(#Ped0>yLEh^EGw+ zr?kgb!!T$sS5~cvM_MW6s}TcVT;Q;z4^!G>=iHqFKjL#@&vYxlJxhD(@FN}(d$-E{ zJlAy8@oc8dUpoAVxzhKW{OwvAHzY?cdjsP~G>g4G68Qk^VQJOckM<&2cG(*kKO!_o z8~UDfSZkMQ{^@vsm0)iI)cS(XPyyL|$v=zmM?o2wUH*PN1iuCJu8nvmgf(|QW~hay zTP+@s7x>PBjn#$2vvyMuvKXG}ox_hfhad4y<453{+ldY?5l6!Jx51Hc;xynI&qI^n z34bU2t~{&%NuxgwjEZliz-)MF(!sVD$9vjNEeAHnO}=~Hc*MH%&1&n3;!&SpHVBv! zzXJvaE`MM*^#5zKH}t_lW34vY9t@lXYxF+$2)l^6P&qbI*sq~(Rr^=-nRz&WsW zV&fM|cHX_L^Rc7vS?06)@d}t_+co*iMc#e~Op|@rcAwsJZTacrzK}}exDRm=eh=g( z9rBgCcPcx+oRUH(W(al1eZ%nDQXJRhM6UJP9-Ip+XL4bJe2A9oJoNwTH_%S%Gb-EI zF2=H**fwE=NG<0e0ZhnlWDUKS%0T|R@s<<^#GoWuNqh3|j?q$mUdDIWD!{^3V-otXb%XT8OQq`d;&%Yv_6W);@v^+nRbjzj&4A^O-|zXR39o@>v({JVnIoh&=9p*#N=w4V5!H}uk? z({HZ&)@>eKqw{f{%)|9E7uQWSuAe#gyxviTYxdEE>(z;iV(&Fd5RQsSXGeDnx6ZsY z;!-H269GAi!+gXcMl{feMn+i)AdWZ?3hbtYKruimO5YmW*ptF~LYOXY9et)iJsq8A z5v1lUl7l6+S@oIBZRqIf>1aE4Eo|etAfg((fOi75{ zgQ0kDS1jJZkoD9pucU7aAZAjX#(|s+5@qgSbpVSuyfs;YtetlqQ1%`$;h%H1tD#-w+`=JcvNnBUdWrk-CHBSb}{ zk=t|Uj@PG^Z5>U; zH%?B}*cSUPQuZQ~A`Gn=+qfNSiyevynoxMprMIhHcfWm;w@gIxx@_-tU~dtHi$&2z z@7GqMYQ;k!>86gJ;%T@oz!T{z*4iCInBEOgC7&T>Y~qxp z-u%*3R$*i^Jgu_GFsPy%0Ru^|JvgGUua_k+?f6so|lxP z*#Cv)NIjf>w-v+%0I6=W@3q=nS|j>i4X_S$*1)#m%*W!*+L9L;Fuww>jk(W8+In%b z+7OF$U*Fr%b*4ZKheZoMnI<<`5BPtu#`DJB7Te0fY_)PHko za2?k;Kw3E5)Gyr5O2le$C=5DF9PY6SxFefm8k9vop`Qh$CbW+xppLf1HmGm$s~Z}d zW9oD--#CBHa;u}a2QaeICYE<{{iWO580%?lc0>X)6WhbA9z8{tV6!^fTenEeSyls+ z2NIMcnkC^a1rC6BL21OaqgmK|zOSd2Epz$CRX23Zvbyk&SF8&_QaY6@TY8#VD=m$& zZj*9+fZ2_*Ijmt_wYAY{s8a8ezdB9? z7F=CRf=xcZb6@Mu0Do&epPgb|H?2EU`i!3=-jl*gKV&@rCsOF%iYOUhkryF*cD!bL zMQYGRE$w>G#%VL~hqq0Euo#b}5EK_#E%?0L$j7O5A%G<6b(qvhiGMSk#H82#-U3o$ zJg&0?)}1f*9SBJ8ZR3AlEx9qpR{v)#?F zN1CvR*kjqBSHu%UU*v${l9bHltpE$r7ccE-ip3)@>oD@TOhX%T+T)g~^{Tj#z=yg& zZD>uDF6`)Pxe<_64zUX`F*%+qfSBk>wlQsHsa3snRZClJerv;~ZtFS+Q@5s}6;OW( zqJ<6Jb7Haf6&<~}8@P0Oy?Hb4Ascy1*^(I3tlXv6@D4)0 z+R%NS)r*r>URKwG+pOa(nzQ3LiRUmCab~T}3PeU%tEx%d@_S}fp#IdQp#FFn^dN9I z){|n=Bow|R!>YR0_>Hm7j>cxu&r`>I7pl9ltECet<9IP>1J-D+bBelR-LbCCXe{ic ztXO-)hE^~sM>aTvGA=MgrUB$M#)J7T)n48PIvL zB;3)3$94ki+KoHv{~V@bH%^JSXbYqlMP*)Xa;*0N&a^W z{l5x&X(LkxW)3E%W==8+=1>O;<}ibTnHxvJ%(GE2hx3ES^E3)3cJn7_WPTh4bEKVC zCJ{b?eEG{;vIu^O9g3VNn4?@Mn4{w;m<|K9!CwMY z=1(BtORE|x^BYtXD)TT7w!=H2GLL}w4Ds&<8T6Z`k z9hYxEHGt*>lz;%5vsjYsW%&1GZ@|Ad`v&~`vOk1>e>S_nK=!}kKbU<2{{YaO0pj^H z{s^F%f$H#N7vSHUJp=##Z0?X7%I?B{PWC_G9{`$F2z(z70igMH5CUjE0(v6fmlJ#n zIxk?}-WS40D>xnbLjW}SK`=|n1fcSUzGT>-Vjm`pMeh7Tiv6Ks2P^hxU|ECtnPi6$ z!Ha-9z%cJlWWSNfawjcEU_wHu z3~DgUQ(##<0mCG!$F&d%7^YnS4Tee32yOr;V3;ex{xewt!+Z%9k^qMJCkU990>d1G z1H}LgGv{(J|4j|RFbPdVbQ6MM=6nPP#GoMfnjo&J=UdwVXnpD zS`o=XpkK0~tX?5zEhZI%pRTxd&KA zV?MwzM?QQ_m?L@n{|&iyNN(gf9Pu`+z%WM^gX2bK0*3i4Sc0bj43k?M{sxBt z!(^!ehWQ#K+_Vv3n9O?tJisvhxMF$v0}PX~OBf*P$4mWIfoB1joZPGNe-E;XD#>lM zj{z{a7=gG`V|M=eBml!4Ng$%HL9D!;F0LSJOAo5Zu#{q^(<0Rb51caag^q5y`;JtPBV=$sT7 z<_>VGa^@?E0}Rttjt0Zzj+HG4B4C)K-o)`>eDXg9{yXraJwf)Yg~hn1Q$7up@-c@+ zKqhj;$voy@tWi%0XClJlAZ`~q+B5hsig;*$w8ziAO-FkIS{J0Q@EM8w9H>gi2*@CC z)>VizYICN}8aL&nVzei_UD*=LUKJ`YONS}|)u96XbZRUNDQ9M5p0=Y9--}S5`5q5@ zXwNtX_-!`2Amqa{4o%KF1?~oN)_4=qOo2RY*~r9E8o1Kq@r-Mg$Z8MeBF`0e)Cs(q zBMh&p3yvTZFAUE*56|)iux#!Rojfrl-y0VQcq{<4leDOipS@ zScUs2vV6fc2$e~`T}89T8tXj;41smQ&k$@5gB85Mduu7bhuA{Y5XR2_Ld zMV{J}#k2eik*Psj5&kviy4?SM91ebi$3C94L7&0jaHKaR|9lc)yp9|Vs=6Uwb|c3a z4p&{s@;{33KDCQ1fxGC|3FYmL?q#8xi~qaB6K0N%y| zNI$~*(Htq0r%^C3c3?tkHHV^;Y7;nIgb#U5$_QEQTXHVC*hfR4txZ@6uuI^7QP;ShgRFrk?Kl; zY(E+^-D4;Og4w)kgK%$%{uK#7izf;4RcLZ_JmKU`c-0KSe_8bE!UAvNt1AG! ziO;b-w# z7;G2Mt^3t?vJA`f__uQcR|6`_zWVBx+E1&+!&ZM zND*-`L=mTN5}zX>ia0a!#AU)9?n29aNMH_Ksp0emA`WUL z4#yib!&#IB=Aeusj@3lO83sihc!}r;Sc~;sk{v&RL2;;W$yDh|O0* zy#$t`d*CG$Cnywgx+3P;7gEGKt%yD^p*S%STO5lbp!HpNXgR4CjlrJe{7XcfyU`?v z1x2869OzQSX}^TxNS7iGizE~md?@11Ymyh<)tN9yIEcvmy=Y7a%m{SOPTCFh$gvzU zh5RHsGsaU5(3h+?gEQVV;FysFXGU0SVSJ1yIldYDa1#Z%r1;-O1M^y^*^1BMEG9kF z9pI^D{JD6^MzbAB91m|b-t6g~+R%izbf%iOucpSst?cOSYK%>7S-#SGXHfl|_;2qL zIKgu`i#@TnsWmMdx*EE+OjU1q-_X%@UH8=Gow4=>*dRSsyLw0PC(}Qw=Q&$|_sW`E z8oS@6*;~`n6zllA<;{7WCF3l*ADN#+T6`yw7L#f}8Ef(1yc%q=z&o=bFjBx4M-bj{ zNg!7PDh}Nm$OIfh)f(-_53j~6Tg9o<(_i^Yp9KVW)+mQULfyoaA3KvTz#sk3dB46ICfpNaptqApy z3Ka;##Q6vwI9U@o9~J_?tyyv^5ILpn3`Zsg-LWl@eOut7C4ot&0v91i*}?vr!0?*D zARLcDOoBq@@TmZgJpZRt*9plJCaFwSh56XpnEq;#wpX@Ll_A zAcBHlv^X$YRhK8|%il_fN#9d9v(6_1OfnCn7ra`4(c&7+%Q)r%jh?`0s|WMDW1xMY z2Zindy#f4o&|c6UPz?B{Gz;bP_|4!Kf?f|g8}vrdV$f?~zev;QD9}#G^FX^mPht$V z7J4qsfJRS%s`Npb{sGWtU<>kD1nBzvMNYu-jgarqbp3Wvrr!e^gS=DI^{t@HPdzB} z!!aKoDb{dd2sFA7v<2bkYP!A>l;xZZs_I44=qS*2h?lQvl=C6hgCF!N$T?62jlPc2 zBFl9Ov>Ws|D9d{cl<7YWig9JlQB9*qKyQZpkWgY#U5ote)pY$H(Dy;V8%uj4jTvG%d zG#UYA`lCSc6kcI~f<}o6!|)-{O~|)j)Ag2?NB5wOu|97GW&QPO8eIpv0rIt=SShYq zrD>E4T$nA?@Rb)(g|WE>;c~!}a%Ri(!Wjo>^biK;935K zny#M>dK2PRfTF3_lxiB~oCHm!rdZQx5h$vvCZegr#4H4#2Oczf6ck~@hd|pv?+3jQ zbdT^mK`#K`FMKEHc<}YY*Mg1%UnzVk==tCy!smeIg9lOeL!ij7;*rnrLhvYq!n|w; zW&Gs3T=BBD4{d?QJVH{ei-&oCA6q<*x=k33@f?aZt*SfmVSY1w}s@ zJ_LFm=mAh-Tiy?P8R$OHY|uTRQPAC>Xk!YSG7EG&_)9_iL1%&Xfer%g1ib{b8FVIS zJt(p^AT}k>*JZf)5H2`F=m8ibf4|W6LRSm@LrCj?BlK%R?-Tk>q>FYHL|GIq*7*oV zg!T)q7g{MaA{0cW&xd!+M;twJA^J8TKzhBMJwS%^>;eKLF(K=lGQ9nsZQx2PGQ9ge z_X88M-@8pPAtCYJ5A?{Vy~l_T>EG@^dED#Y2P{X8@u<-qPxxOJbVt8$Z(v_wKTsZz z2A;-$e{dVJvO9Pe{`Up<2Z1OVJQ92y+|$8h;7$fl1y6(S$k>^&D+Ab(83!^BW&q7H z<0Ss~hW3RJZ}9%XRvAws3T7PkUrXS9{{z{w|=HINnWD0*& z%G67Hh-3B+?_z$CzZ}WmGRbeg@YgbbkVS;=V*22Vg}<8VgD(}nM(oWLo)~r1R|>DN z{*V{5w(}_Mp${?7xBe65bn*(j(^0=)W_oDA$E3UynLorYhn#L4^*ASHulkcni`a8( z3$%V8^M^Vxd(Y>QM;%q-VyCNP{Wy5OO~m}0^F37ZTg@8-+(@Q}^lOEGo#7FGi`e@k z>mO+>l=AxC!gEcLewe;dOi4RgLMrU%*k#s2e>-sgn>5yQiOUHCU? z5BwqF|4ZWkNciJY{y`&jc^(maqlNzf^9LJdZ}=M4kAu&r9^UNrem?T<{wCCWjpgqL7NW%Y0!taywcNKZ)FBSa{SRTZGSoBp=z9pi6l;wl|Dbbfp zd2bRuH~*ym1<_w8?d6!9uk)lnwoCXgvOEa?M+r~NLgwcSqW`|+?;+tUCI7EU_^(O+ z9v3~|AYlAs!vBlp_szNPgas@LUa7?R}&^pJQ0RI46%vdm?5g z`KN^+Ea599zQz3FE^qe6-@^P2!S#>93f*hWPY#}L3x6GX3~0^X^3O7VqtITfbokH0 zKA*^#>+wd2#~@Cv)bB#!R|)?w;D z3?Fpye8aNOx`o#_A4yd)n8N0(#Mg zt*qPBI=8FghN`ZvhAr5oA{9Vk(yC3uz7}T{BXReOvr8qukA{XHvXIs4)>uQA+E0(1 z{_wu42RMBjYPrh|KcLsfi|Q0AQ35cgyBzVb13+V*MI@peEuR}l(@ct@v*bQGX@bF8 z)ft0IDN{gXCRvrBakDFyJK#=}f~U@_eAcX$aZ_=u&x8OjC{z8NWQqQ&TCK9{4P{cd zHf^b7V@p?e&mw;5bH*6%GL$%XbV-OU4af$g>}hCePo0ZooA&NXW}g>b8LqM>$HTW< z1IDn++luC^3M`+QpM5OZvxk?2M4HxO)h%1e&x_;mobjyb>qhVQBfCeW3Wlmn-ew}6 zM%hMZf?ymFsa3uBAUB4KwL8|dLTx6gzwJ+1X9+c6HU`#Lb#G5B_4!GNBNZ0^>dO&X zGNrPT+Elz=#Hh3RB!1(I!t1?~Bt=%hoR;<`n{92~+*Z=q*3{b4j*KfV*0v$mg#9Q= zuv=$uE2O%fVr`v0Tk0Cso=SCfb=C9HS9kX`v|~qO;-#vsLRQ2!#_(BQBO<9{2%23= zz&HcOmI^@4=v+W;M$G;zj{9h&x^GdyZAN4VOpvO8s-s;oZ~nX$^8hit5w$R1|wG|qL zuiRFoYAa`jC93ZEDPyOD6cqr#WMojOhGd0~aaNF`Dm$)H{?!PhDT`P3&f<(pz1%%}^#!ex3;fK02lZ@#p)sU=^HsU}D)i{+5sg6?P zfY!zOIyJs#89M2XO*W3FofWx+k`+=fwjy;a5%A75(4N!M$R$>qlUzI8Nu%j_!t* zM!8>i=sD64|MbdVu#BOmMf~H^8eb^3BJglrN;r)4?`bmtdt7~n+(66C&rk1$zIgK4GNhlY>It8YKwv%LR z-nLhvMQ(c$iD2U8z#j8woYOXC!1wFc816cR+a90A(tSy29_%@t(>CR>C(!CTlpEiV zpJ>qSQU6%;!--^`W?rXXgcq?*V9!7|Dw*3}r<`+BfAv^Hp}p;}moSGGi!wk<GPKYKlJNjuSnwGeU|pp;fMZI?C}9T-S^JY9u|g` zNq2dFD%YOL-}hu(q^+xeS9u4<59Ny!bp6tvPr@GimqQr0N!RGIH!yx^|8ix{;xj0^ z&UKnbI_>@{!QKR@^(D$toc>UYd@;iFg9irYrQ3NuK2ZVXi#Da`V|m-FB@cI_cy_%X zfY~|8(!K>?;L)pd12q;3(bqLb7ss`03S?tg z))T+-40@AiQp;2M2609`z%Dd)h;M1-G#93lOPq%dHmR|NkCV!b%+OQ7g+xB{^3DRw zly*YEZnT=4f%oWTnYe3+$chh|bWFLa_vW-0T9FNf_u;!i6ZXXmYrZn5x%hMh^6xw3 z#5Gj90M1#YzVLR3ZVbYk_{GrSBEfg6p%3D_JDlGT@Exr;JOS$sbp1OgB9GqY7QR}A zrVUOk@@}_hwgrQG%JazjaqG=Fc^>Ef7mju~9Cgx+ zHdue{bQ{BzZPJAQ1=<_!J7wgFbNj|kb8x*?0jKhjeXK{uVY_hRQW_cB%E3dxgf)Dc zFf$p37^4j5g)Q1Wwfvj7rg2?YTX&lBGo5F?PE;Zjfl&Y{K~}=`+FlV3&0VgA6`7BJu2EvF4ExAlFF{WHBB_H3dBD z>e3K-2un$^%6W0$L?Ge0(w(eps~A9ZZXK&q*~13y4Xx@l!=A(Vq)2gbkA?+_Hv&`$ zP6CYSYBy~TxpX%LZN5S`G*}i>sm?5NY3BjaS~fjLh+g-s|8Kec^HcVbNc}-oSH9PjIjY@0t?qrhexC5Bv zSItp|4BNx2J=SBbsvKuP5ynlfRzZvkotD$Nadi%JvfyxTeYQi#L${t|cBgae(T^rL zw_eX05`z3q7(Nswa!ul6_W^-><|g);0Je$gcP31WR+44Xbtt$}4&4O0qs&kp&l&aRG47_iT>)S?Q5H37D#l`9w~*Q(o})!o+7(bL?zMeWY7 zpPeIMQ`4%3F5nl=0)VO7;9HOP)n2&BvC1s9C5?T3+?~IttGBVo)sE9POm{;|Xy4`? z3KQG#uEuM`V#~0dEsYiymsN#Xb;gEOXBw{STB>td{hPFs^hQIN%kn#cEciV5BKT7H zN_c)p5P>g-cRTZOwDXyYHFl_VJHsO|{a@oax0ZSSUt{L~eB201C`%eC%Zm909v!83 ze``IvVRv8Y&P|HuWd}J^{?25d`hnJ6jGkcvcB=n#2is6MUSqWb74j^SvvHNmN(qQG z2WU#0^&wD`tj#vC5<6i*TiRS!!Jvp~ZJstm!6-Ry>mosHrGY_3Tdc})=Gv}pX(U4V zID90u5n}sJ{4T*^a&|rVB75qRUCQ-~EHRA1Y5=uL($+6qxyT6;hUu?K5cnr8H{zv1)i5Q8P8kPSslwt_L&7!2ReU`z$&N$F z*E-u8fUB4?N>%F(c!wM(ViV^<0|Z%xmmdM?!94LwXR*3AHZ;Z-HMMlKr4+7i@9vB> zwrm94R!V(sa|d3yOl7XNA$5#ZYf=WUZs@ATDui3dzF4ETxzex|1LV*SQ{B;q=RrJe z3B|VcD`J~^TN}Ed2W)0zY*j~ZV{>&wXTydTydlCor4p}hzph<3~pYX=U~ee@~iXBdecgrvTj^6KKj6iwK(Y=A1V3WI z%9K*C2C00h_ph6lHuMpmOwU)99CPBvn2{?<2XMQ(u(6H02$Tf#Up=kuz7nr(FYRat z_#EJOV{;pN8mwM|SS>?JD&x2^)lCW)GlyXYIz?sCs$QeOljkUqUA*!QfeP#t#EtcW$nS~jbm+~i8-+e-aa#YS~ao398K)R-eq&|A*I zmUVQ^0m7rTp`r1*OQ~NvT#&q)r2n#uOFb+|Z5Xzxn){M+{jI=>`gTY06b(r&Q-oi&cwN zhgUXq>*v4neFl@TW$|Fu&9TPourQ{f935d36)n7(nPsy0BC2}{$E^OCC7*<7W}V2a z3>n^K#E4U@E}4E)=4V!COJA&&z02~AdW{Tqg{zUEc(EoeY2mZ-)tz`f5$mdL*a!?m z&%bJw%JEQn+?2WMUHauUbL-|VT3K7Qs(K+mq+7L|uNtq6mX3ReHp@%D|5-e@@g2tA znM|F7mpcb9*Ay$k%V$&7ceU+3-3~xP%o=(yYG{jZU|GUB4n>YosbC8S*x@ogyqt54 z9^rjD30f{81XkJAO$!VE3Q^85j*qn5;g^}G1}cKh4G=@$E#&F0PA5?`KwNa#s4n~I zua4~&4iI1U=T}|{bzpk+v;kb*eA;l*@2Azvy(O(a;jzei*HaQb zz+T#L9dEs@_zDv*(^~jCL&JmCb0-48zxMd&y?mN;PcWu%!pq8a8xywBplG{V60y%eatQHXC*WJ}RXZ6N<;( zjm$*}F3%ac4j_w|-v!kmANuv#Kz!&1nR_bq2@xEvEsx8Q4V>9O5{L^xS z+g+U`iKvj>xa0Qdpz6>D`d%4V7#k5C0uz};+gS3@0^(aIs%mTrb#cy^q$Dn7n27o_ zdh`Z8)U3#H5j{xKMxdApx*Tqkt6gzFQLxfLXs$7G1${ zAjUDJ{z&Bd-dNWb`<&G>ECw-iTe?(3+@b^+UB>h+-qj4K;Q4InMk7*3{3f=kp{ogF zq9$q>f;M2>e`HDuEvJWMeXQcyKzm;YuW^bVtP6{tyV1WSsOZfuxMuC z@@ej21C6iLVP>_dy-m&F8u8dxMbn?Cnl-qdu7(zN+`Nc+ZLMCk$|dPdUO$s=Nj-u^ z`|oPG5xYP%s8OX}!Xg573yQ{Zrk1Gbu6wyjmAeW9PkWtFGaFl5I=eBWRjZS$I=F^e z)360!_v>@ad>SWTAmJ@F^CGR$*wj2-1Q=tb2%CgLG*_OrGz*2ujwuI5)nf-qO3MW4 zvxB6y5)ZP%9CEKgx)f=1`$al#=R${an!`Rmj#8pVeGvaQvG}GW-2jHUZ=?>A^rZ;5 zhNR<`k#s5Q_?W1;3#J4yhuknziyHMo{NFRwGa;NC@Bvon{4n4JU$`Z6sAm`|!CL`f z!9}^3X8}zx(~C!yz6%s+qJM}YfjBDSuWrH1)4@>?6FM=&1=5Izb0H_VB7qzSorl00 zf)GzZHH0Hx!M3Fcl2wG{FUuqVW47P3D7Q_aF)}aMtEU*cQFs$%NUrB)1=ARyLggbR zMkIh3Gvh&qIWQx04Q6Cs95ZsbjTw0!-zFKMF(a`7Dj^m}#xWxcoW)W&kv3-JsCexF zi^7E&Ss2HR98;(YWVL4R_pb#rd zooy-b65H7{mk7?`pyigY$&hm3hMit`%%kdu!zX$&rRwg^p z_uCH_6(1Nirbe~5pdge9y=Xz<9ef@lh(EhE%I{2N=%I1XjzhuJ`^@Mo0% zTS`B~^K;Nz&*+StAVFt)XHS`qhggm1HIl&ioK|}Z9!g>a8zKzOI89fY^`5vXye#x*J zZ#0M!_EW3yMnl8FehwS9jmlDSixSxiu*~WmUln8Pxdw!WRdkieUNzPXY znW1ZNM`KmwPgh#*EazZ9W!M=?`ykkM2EJIaKT2eOoyh(rkF2<#hR=?oEoR+i%E#nQ7o~y9PGEjvWVGJm6mU~JJ??*vfQFlrKw>}xjUs|HLU3*!)jR5OzyT^4WCt+ zwGafbrdc4vw&Kr|lUWGzWgZUlj|a*93jVA-cG%q55t*@65ACl6H{27+BQ#{c*5o}8 zdaF7P<^9$^&dMW9AO)=Hhd@Sn@;?QV&&vfPIh=vadvWMT z*o?-JfHf`P&Zqwck%BcXC`j+ff9_$@c#YBv1f#XlOyaU6)9k89EAA{2DN9m_tW{ ziGgW^A6f{e2M26CL&xBbojDm?Ieczp6iH6*sDfFbS5P#XWm#@G1#6nQ4s0d-u-|1Z z1o4MdzPM#>POiTjB=8aZh4Q*{g16&<%_;C%C2_!--VFh7^m)UWg)f6!gC;!U^O+Cf za1##C+no7tIOOgF!{_%rE5sqd6Yq}H4Km$6bP(fWz@C)D&-wO09i38TuR8Bz-E9Y^9 z;|9X#kN30x@;^f>D{xEeE5sd4I{VNDxyKdiJ6JbZ)<>bf^WF}YJz}A{gIS}W0skDl zKa7t+;R`*%;mGcoH*rjP2;+XrBcH|r1!Ts4&dGei!C0gB31=e0;-Dq4Sm+tNRuK>F z7kc~~6$xlvkh(GVNnC#EuhKCBGKiD)RfHP76fZh5Cs%?}QRvAgR4dxEw(M1*UXoD% zZHEf{Mu#F92YbqyDYB=n6g7M6P&BM25Bqu#P6%2i<__IR!!w@jUT}TnioSs(&-Lu2 zi@wFfP99nlj5T}e+`&807islIk7sjld7U^5`576HlK*Ym$ky*N!|L&FaUD zJk+DclxgePnq(p!up@UN@@YmMcE*%Vq$76ZFC%gU1sk2~;rSmZ+a{7(y}<>D$+)mp+k132CsN_bz8 zU~-PxY^`}kh=`r`^e>bJVU4bKNO-CQ6nS3g=Rv>F<4~0zUTY`27eE2ZrLc3NN!2N z>!2Bkp3CuMfvL{iQZ+sr289nca`Q)#OU|1jH-vj2uhN(laPnlqiU_Nh{CNN($Of%vf05clb=J*yc zuVG^)mCm(b{$iNxz+|ANm8KO;mSNh!3^zV<~75-5;D)*1Wf8b$8D=N+j z`jKmx%Xk)oDL5{=6w!VKrh?3DFhNw?rDURDMu3?^<}xssfZ^D>=yEV~z;Icms1nRd zFubi5Re@O#=3eBeXbzYTFdVEGRfBmi7_QkBakhFd705Q+_HW*fQ z(E>1!f#G6J5zEKTz**R$MPOb5!^$jLg2oy6t}0<>ykdR;0nbrUm~~N%BOeQ#^<&6` zo-E=*ggjY8VI<(qx(Fo0oAoi0Q06rV_Z`&!ge*V%&%saP*ppd~T&NYJ5q=JO)gU>D z-s6Jo%pC|d28S089Yqqka7e*qP+oZ#=AgO@N*!FNV7i0LDVXix^3kax8MTmfVdiIW z$ZkDU;y-~D0=FV$sCbxN#+;8qFarfC9#fTbx0op&SC#Ws99L03p(^K5b6i}N^Aj8s zIj49M`Zw;z!*!=Yg_$qnkjqMgM`jK}$Ica`%zXbkgbcifD4~h*uEDYlLMd*?Y6m(} zI@o~6xrXE25AzcBbxkHHVVxNcw=)a98j+SPSXaB0JYI8R^@FXqeXpo|<)6OvzJgjp zf%jf}-969!$BL&uwbB2|KfUKY?Kdp`@}s#!UwmWTOIx1&-st1YF+;EInDif;_wIh} zYgX@rFTZ!;qciS#^757Ik6!k(tN+|M^qa#U&)>ZGNZG4@`NIQa{_xUs{93FSekS}v z__gpH((#GNcKF@!``{12AAvsxe**qAdXdEY00MC@@1j{FCO=ZJ(nSJCJmmH3Sk zKO*r>_&bCT;MPocTEhQ}gl`jj7fXKBC=TIF{?rf}yvd&$2ZA^0tAQhU6JHIE!JGW3 zp$K@B{&pNQ|E2JBYU~PX>PHP#!JGP1qhIi*e$|K>yve^BOoBJ{W!fpzpqFB)W7AHb z*>(NxlcD3fDD^BG^Gln|2g}0pGY?FcWo3Ob4O0$hIxvxx4%@y7GXeS~@ND~ZyiVM( z>S#(zj_XlfKbX|0oqLd^`dWx z^0~6UtE_0}?`BLWeDYIkZ!i4nH@F|PGjWbH}9Oje%r*ZpFP>q@vHTv{o6CI>Ubdg{R`oz!Ow-i68?JlZSbFfzZd>t_#ean8vYIV9CXWE2jt=(!P6VzH^YAb{w{bf z75+Q?v+!K<^P=+}4qps^Df}|{2KXNM_rre*o~vR%fIk8MXZSGgcAP;}z%PKm8lFo= zTp|5D{Dbh1!v7Th6?oord0ndU1t=U>l_=s86M8GUYUG9@4hV1?rsFaaMO^q6(bvFI z)B!IMxgJFk@6{sWy_r`R=L(3(yS8Y!Mo7(X;Zen0f)vYKxuF>jmL)L9U=(pcCL-QP z8K3u59P*wl@wu4Cz+B@K5l7n;ap*1axjah|&yk3@JV_B3D@DY6F-5#Fi-=F5DB=)F z%yVsuBCgVlh}|1SoV7_ruAWlFMO6u<){7zHB8iChgJq~%is9k7(oPXqr9{NDOc9sU zB;t3#QnVdjL>$zxjyS+U9dVK-8s0$}SdAw^;W)#hh|?`eh0AXg@!5n#x?@^=%rJ!&HQWmbhN+?dgm37aCIJ!memI zl4W2ub_a#yA}d8)dzI{QU7R8=my3uGl_=taGO@)0AXDLB5cSF-qXgzEB?EJ%QAB*S zOA!a=BI2SkMQTV73ddDmiXMvRh0FdbV!XX^1)n0S#1>clDdHmo5pjK$A}+Q{j`iW5Lj4h9X72%bWSq~`BwkrRVCH$1L&2!)(o~N&!5BD_{Y>)1@)Za1NNya)my6X%x4Qzoq*_SkJG7tX9)XL zpKwfF7;C`C$K7Z8_Ft-QYRmGKe~0R;(|fS~y(^GgW-g62wKT*(fr;1O-}&UaK3RB& z^W|*o-CMe+zDrJ+*^~5Lc)r+{7Ifh=vX;i~cWL(2SAT!Eyg8c`U#)K7jtTFE9zcD# zk)m4cPxhT(vtU;h+?>o_C?(Cjohq(+1-_QX`|L)f-=_zMyQld&QGM>z*8?GLf_3~X zyS%K9EC#;SYAX;NV~`^sm4LyJZS|tLvCa7E+HmTHdG7LH1nPZr&G5E_Bjm{>slUaB z47tWOTRk%>RDu|`k(1=XZE96rG6Ld0Y$B`AMK`GLskMdb1#|Gx2##^fu3oSphOe}H zy0&OuJ{t#v5}R+U!C};#@FBJlIX>3bB0E*}Wi4dLvi%LUX7P0kHsHaV@eL|fB-Cv_ z-9!Kk?~IMaT^7Vv?P_(Z6Hcd2MKtpDD1zhs$QM0eSXlin4;akw628pQBK_G7j*%tx zZH_rq-+gGt`OO3*u&QFQIuUF2B1d(q)9(620l}15l|g+$pe1^~gaH$r?|I7;7&iD+ zV6?Y%L||0#)j%NB6DZgk7!zC)C=4zR1YQk{+8W3QH$rp6x8i6?;5^OcZ4Cs1%R={s zdPBW|tk7ivPbeC&LcaDV5DfkfNiVjkC-@EjXuKZ%%=@4(9*oU@QPc}b ze`m87Xm;9Qj~{a1W7eyvh*!O(7^0%G`Re~}%!>S=+b~^aqXCVc#@VF&Wzbt7KcQ*# zY0!^CepKX-i~Jxcwo0$zI2$y&5Adh}^k&eH!)`O^ z$3UAv3!$&qG`d#gwV;4hsHxF3Iv14jDnOb4Qca`$R)TgSprarkrD-%@H7Vkw?e;9(l<5|08XX17 zbn`V`p98uT`YcVOeCwO_&nGpY(c{8DEBs;M4++0t_wiDIrlX5 zL!P5)Gz%2d=$eqGQ9mf-pF$hQB0$YaO`|V^Qhpp1RZ;V-rqN@d=oM?8)-?J!Xg~NP znnn+UGTuSZEXWUN8r=_i8~A;iM)!g;++Coo7hFT6(H)?-g5R!bbQ>tc;T*CPt?AP= z+6v0^)U0W=36$a1f#RlCvsTmSD$o%4T1}&KL6JslrKamEKzAYDWKi_DHN~1ni$HO6 zu8C+G%?F(XK2Ou=PEf=R_k(@}v=g)(v|f0ohbJN7O5saEr-F|Np96XUcn}qz6zPW- zf+COMnV>sC8Sg`&%-4rOBcK<7GCuVvoAnQ%AlB_dZv?FeUkS>3xE!<=^fFM|kAgzS zr!p#?S)fb@Pij;;NL!_IF(}JD1C;4a2W5H)tJ0ey{0D^pASnBt9?(kA7Etyx$V0do zbPg!{nR%e>Ke|ELe{_Me|F|BM{YEF~3D6GE4Eb~1lkNb z6SN)_18UXI7lPJ;pAVW3ItLVlI3!`>+M_7JpwK6>HUIBIcM07g^h%-2h2kSM6@Qq} z|H#t(kA&VP^d_N|LW#4*bl=F-^!GylpU^K0Z57%i^gN+qp}2P09|em+X)hwQ9t`

    *9TK`nXur^Up_M`-LP1pg>Oq=%yia?c^?1D7y*s^LZ(hFF8!7VpD(5cr zdTUpCz0Iv&?{?1)kJr1;vmgIQJdfl5Y0okIKkGS;|C63m_}}i`f#^HEyYRoqyVslH zEuNg=UAr#B+jnz@cem#*Ploq^=O99!@V<;NuY3D_h~?Yi%kb{>?ZWXs-+ufb@*T$i zv%cf_KjC{B|2zCU{eItW|6Tq)euVPx$Nypf5&S>vKaT&?{@3xpEwDWRZD4=E?|U$C zAaD@e;lPoA$9p1h693zSJA<$ocp37Ofm8V39^3)R&fqTm-xb`0|NDav;{WmBQT!hd z{u2NF8QU_v-d!2H@xM1?AN~(y9K`?Q8AtJdBI9NJ_lLHHP^TNw{=zsh#(fm+DU80u zyi(apy@US>+E3VLsVBIMvzy@^d=DGH!`}0L@PqND3EBjv{+17hzEv42STpVA)mM}*%*d*F`>&j*6c zKl?Mfe-NJIAi7ss9|(U;!oMl{yF@=j(myWxr$oCo-SYXdxbwO zdd?5%?iBur@DB)oO!!Bbf1KkYc)Hu+o&3*P9>g){KZiWh?3DAz^B6{%`0R{sKk~-D zvJ>Z-?lU}J@CI-3S(YDRk4pHIEzxAviF!|tApENme<<4%%8(=V z^$hce@PCx>3lNTc2J%4n6zzl05q>W1(-z{lJ?3&~?ZY49-XVJDo6IfI1%D)V0mL(7yoYXjkQ?1GzEN z7OPI}=C^1~)rz{JI!kdQ$XJf_el_j|A62(|DDJQOO zOCV>GX#%$DaujhZ!rHo;MJrdOER1D`TZBD&s+LvHt3$~bRn4iHxAJTw5b%8Y+%&;; zHr%Ch*5?3aN(d%7)uvV~Pjhxmf#Ow^KBzwV*v}gnSZ8y_WK*)U2x`u)*~aqBjY@2v zeFWD|YG)rYVJEi%qhUWOY}izS?V~_&fe_Ees@v2mk*2lC<9z79gwOJRGvdDW|y zuc%uwZ~nX$^KhZBv~{YBSXQ-kUR~9yRV!>UuWR-Ob==6*mg@RZp^a@jV1iTyR2`2a z$)dXS8w_$o#wpjhnvZIGk+-&vjGQ-x`EkQMzlIiIb z70C+Kc1p@^MXCl1FhP}*X?7?(K^-zNbd!H~Gr!o@*d^2XoRO^1 z*_obBQISqjZY$DspCx6}brJ1=c4p*sP@ztT4p@=4IJU-RVMaQ|^kjvcC|lvUJCu~$ z(v)YRtU?!L;84>BR%;vOY0GG9>@vzJOIFA!OQ)!?6)8(oZmaE-q)C?RVy4qiOQ$GL z90RQE#r&j9*(yt0TwCMH#EfKxu7~OA6cxz|U7m7Vk+L4jbQY%#97?HEbb1omYOSta zR9ZJJZ8>d?T~0Zz$qG5G=@b>VB4u&PZMB_}oYrajw5HQfqe5MVI$)`ksWfewY>g|W z8R-<$lNE9~CM)FJ*@~2fEkh=8pP$B1DNYXLX%!cjO)sBzNm)fCGX4Lv z_bu>I75Dz5q|!BYbS5)mIXEXgKWNwP7U@DN(#>tC$e zLPbk0RcvhqYkRfTTWnELX=__sAJ^L2(iW|@SRd6ZdeKV#f4}oMd-m*Z5_@me`~Nea zot^pp<~P52o|!o_bAG?_3ItS?Gjv*c`K%ehO*>=8G-AEpwJCaGw{mlt-SZzKlCd;-{VKZioJa=JTSOhBKG735aaKiX$qLEr5}vP%FBwVE z)YJ=6&Gbpr)YQ0OH4a3bhUcxqfFHJEjN>>w_Y&bY`srxX)YObc2la_azk`Zjy^3^D@v8zqokk3PA&zl9{??F_Uncgg zX>{C7>|wFI{o(u}g|Jci!#N|l;Q``;LIJ%AK4z; z6hEDbZ7P4;kU#Q5unrPD6~Dj+NYSQo^4sMo?=J9j=1D|Ue~Mpohc6Ujft}^uqxf;F zlV;D*%4>BRXZ{W^?04?B$RFZ@u5{bg~L)t?>hu`bZtOdW;NG&R-Lty-!8II9&u{Vc3@Rj*uV6@%v} zG^b*(on~D$zlbJjf(l~tqjqB&C%h%m0Q2#|n- zA5>&?_?!6bf?ZVpG`|-Wo1yY!uVEBtdH<~PH(&Al^M}bFq{2J-O;+`#9Ak31VjOm2 zmREio6rI0iiqWNNoLM$Rewfq+OK1Kbnd8 zzNv95UOFrKd_BFFl1e2Mr(C2EclQ-pJbt8;`nhcUyzo29ufK(gm+z%G!ssB2IQa>G zJxC&$ICQlOm-%}|3rezh={5M9`+BHeGaet5OMf6WV0xg7$lI~y5AHj$#oTwI*4S}m z_}Jr^zqfnLs&^p);$8Yp_)$08YjA{pB!O3?jh$~L7Zd)?@bHzxLvG5!X&n zTFH;$CHs#gWZy~LF~kSYoE)S7X^lIQkaOolwZ>B?wp8ysw)~O32NRl}ePzml&X>oV zoyV5DkjI35CmuC+K$OW-C55*wOD^2AjQP;~+g+Y(lgIJOsNkx>l=%d{m_Gp;LC5$HJ<2@QB2P8@ zULIfF`O1_-9n70f7ve! zLYd?3>k3dAlQ-mp@>%RY%!i^BsDKk)TWO{n5>Z8%YJJG-=ek`CM?195y)a_Q8_5R2oc$%3DEikH+9(D650RGTd-Ca9@! z{Di|MQIe8PQ#VgS^0Mro_HGCUTD+Y&c`TuiMF|(IF4zpls!A&6mqgWi#Z(;{t}qlT z%wgc@Q)5)Cs8J+534Gc*n(#eXo2YMH!a3eg8_c_*-rv35L3~xFv*GRR3-x-}`Mse_ zFh&kWXXt>r_~g)RHdo;aJFMv}taix@_vICT7G6MW@#0 zF*Sc`n3DSK#u@Im2g2_R*XspM<_xdW0smr`+RDxg^tQ8AsQm_tqVVN6pNR&s?NAAY zO5#z4)>i+fO6Z#m^x}KD-UeGeRYuk+tI#_AjaQ$#SiBF;yWs=w;ehyZ*b-%R+<(U9 z+J)<>|0&}IBS%+=V9hXRU$7G}FI;cYq8g%1KQOE#Z>+#5>iCGNX|t-zD`y)UrdQCl zb$gsyL_mTpVBv~|w&3EHVyPgwxCLK1#5DZW-S6ewC`OAOG31|KI=!^qTY}AluC~)o zF9%RMecGgn^5_H7G4L#L>A_-X?ZH zphT*x4LY>&b>9}d<1!YFa$lu8!*VWaxB>#8M@5h=8GT7F-XMnN5)!$MFf=5BPV@+k*TG= z(0W6E8f~eB6Ux|h>o_}wxDH?qLypT)I+EN{wy5NH(FWAY^>wr~bOwXH?H!wisxK8% zvwS%eqt)O&L=i1%>%z)ZDvS*^1{>Q0A*r_7@bQghK^L})uyRp2o$S)!hJgP(tc#)e zO{vljN>0%HrI;CL1hJKaKXza7&V;Kq&Cpg0j?{MF;pbP+HP}j7kM~6O@1~|!(V&=b z;kR_OH8m~l>uRpY7LIIaV*_he0iu>M4~Vb8W%n1)0D17+^-weQw8@B~E=bF7#0{C2 zzZzF}1%E}if9mC%xl?g+~8I=ah)t%N?jv8}dIs;w0 z)$07Xr(s~HOCdHw(n5p5|3>D~-_zymK!tYtkX7l3Ek&6SCdf|gM781?jn)2k949(_ z?k%!-Qo*`d$k(1!ux?PjpIlQ3C5_rEFTRPPFxVAV^u4H#Pf@D~RsA@;3=fk@0(p~0 z_J6(Ja;QaLiP3jaop|TM(+4e-PQB@idN58qktY?bV~Cck-v3t=tVb-v3Fr+#z5Jumm0198>3$t6fF%-Azpo11kz4pFpp_-2? zFGX0;m`1ZcOwX;{O(uvY*!8=fqLi%)4XzU-6}p}p&A?LVYK*~dzubu8b`dv}CaW%V3EZ$IRefQ| z#Ul=$;F+d7IYD33NjL`>sY&%g_#!l^z68WA3>KPHf5KpDQhgGhZLnIC>J9Ke18aKR zyWph!mj2{@_~)aNke>QqaFRS}WMw8JuTZ3#PW?(odIkQ?^o96$rC*5u1fhY{oxTnJ z#PogmAC~?&{*#O}?uVIw#2*x?roTcUou6pA(nq5b-0A#G+mpTu|C#As_%Ae)ryzI- zyu-$(-V7(nonhVq*K6h{WDcVYY8-_peHEX(U54Y#d=Jzm-U;Ag?EB^?BFN?WcNJ#N z1DIe8{}Ez)%sgm0TLd3)p3mR}WCmjANiAnL0%ZI=si*UR2Bn_PUjzIDL#3Y1KLb30 zox(h+r}OPdFcE1tFjVU4%!>p|Bf$lc;Oa=QLxWOJC)L&o&H^+N52GymbD*cwhpkCg z35906kk1@yK3NNZ)H&4Cd5H$7r}G8?EPIaB)431cQpS>cI;Xqoss`BheaJ>d+ ziO{P7K2Bn(r;|t5Ht>g$;1iMHivUFirJl}X0NI{7QcveFRp&WUPp4G?si%_%Sp1$m zr%Gg_0pM8J9Hpm|igi~f+w^q42L#hfrk>8Rs4f9ePbW3*`WXT}oo(=6LO=C%egVLj z2|x=-J6sWidOEuSd@m6J)YJJK0M=!))YG{d_{RxKJ)NJ91iuK7MNF1@I=>zX{xA~! z1wfIe)YD1f>H?H{I^Wlz)YF;#DddBKx;#~>`Ea18^I~AK8sIlGlefa(Pp{j3IlLpT zgx|>KaIg~~s?ZPvfcq9eIi@%JI|!#D0EA@U3;!R5-;;gN@~3709R5EGd}ekf+|MIN z)YCaK^#DSkr<0PcbIno5;f&(rVz}8)lRcpO6+B7JdC=3De;D2cKnXpa`EJmyBSbx& z`Ne=X5u%>X{1QM{5)yhklk4GqfqYI&z7XEm;Y}$@eFsjWC%F?CenXrzE17v84Vzk& z{5mqhfheg?#4aVlJogQt9c?ZGkePh}{`Y~31#hS;2sHZcZL$(N`p3eLSH3V&0nfbra5R^6LWDYOPPlZc49K)%nGvBKrp{FzX2MEXlD&wuxd^m28$k& z)A=Vr;9w*M1;(aVb0ZL(M>46WGdUg4?x~>7zAZTq-r4Yu*pNIP-X-v6EpV5>n{qDv zrklE36Tc5{$w(VNmW@RkNj;sv0Kn;RB=mGr$E@%}Pv_sXA9_09gP)J)NU5hY5nKf* z^>k7I23d}jdOCA8NR4JL&o~XDkuY_O?lm8{wBgCr&$^4=jMP1F-0tMNkr7Uo(9`)k zFo_iym^``A)5)8NqH-1rOjz4dlCGRw>gi0LjNkz5D5agkzaV%i&MraqoTB=pMTJLK2&n=q82wUU zc2WjWFde<&ERzGYS1X_7Lnduv}x3r+(QJ zwGG&dV$nR#+Jn1R!8a;chl{F1_@gSERY7_Ui`uuvx6A4$U92)by(W48RD^NyhjCrx zh3RXab{+_h;z4=;ng)`|j8fPf62g$5QzsJhK|Jdbz13h*(9OlIIJAz?CpH2udGInT zdGc$7Lf9hMv9J?hC&HczI~kUFpdKUYDxw}D>hYl-AnF*RJ|XHJq8=gYJfiL(>M)`n zBI-P%jv(q5qP`*OMWPNP>KLLLsG?BkCZcZXxO}q8=pb zM53M{>Lp^mQuh#bCsCIYbq!Hh5p@kwFA{YgQUB60R7eu)o(uKUV5?voU|V7PVQ+x_ zChYyNkHh{E_CH}MA#@__8L)M*O|U(%SHtdt{TA$luus9h2>V~KDQ=7su;s9|u&ZDL zuw1%)0rqRK_rX2}`#adzVIic|D1a@6t%hxcZG+|H!?xsXq%JLAi6n^P@<*XKff2=F zUtJ~U(upXprY69J;lxK2XGcZFbpugcj3^Z6Q50Ov#Xxa}RjKgRgT#DoQ7Eq4iQ>D6 zLUAr6imP|Uk`p0OoF5g6^9)g3Vk;C^1VnLppm=eG!@Rr>i%>406fsvW4B_e(D6VN# z98Nc6!$q_r=A29vr)q`b0+T4ty9&jjgQ#t=3dJ=7QCv1mfD6O*I8j^xsuVe)6UEtG zq4=&x6kq>TL@q3d;wnQ?y$X;hE+$lpoMDOLbgQU1#S+EmSfRKGB#LW86|r9xh;xcU zacN2_u2>aHjM6}Hc2Ow4os!CnKZSY_AW`+ODn+hI1uC2(*QZ2r$*Ri8bt+L@_bOf- z@QC6>p?L9CoTz=UDk7JxL~#MDsBTjzt~M1fE=9o3;Iagve2-NjTs<>BSBDD4r8`kv zG*5sF!*vc(d?!>?T<8$RsZde<1RznoS+DY?3@%HWoSCgBB@A8a&qH8hkE^;Wp#mdJ-CZm zCJxGZ{Wnw=K4OX?Eq{U#QW5c;#G;ghOxFZ6F)`tivlB-`heI|LJ>*=On0(;M z#1Rh&)elq8PE3ZLh}RR%m5EuN5cEa-AaOc0LY(c!8gW>{w=aXPl>a&% zFASW|;m%tNw+b&FbK%Yao+o{9gU7d92Rl%JD zk>qowyQUm&E#j5H#d4}{f^_G3;i87?3Z*+Q2W}={Si1AN;pSnNZ7tk0;nu^&8)in8 zg3I9|PKH;(h{Ly2zL*Mnx=2sRcSjmRt~)-(6>{B?w+!Y7pRSAe!{IVM!%=reC0sZ{ zE;n6#6DII@%N2OM^$PjnQ{k4Nz9+$D{iAF`UifIZZy??jxJThmhWjL3q$%Wpp9=RN zVAQ{m|2+}zUcjfo-2)f(F64gWSrT%;$HVOhz8LN%xLD2#x!>d9wgdLUT?-dk5OTlq z<}K=L3|!P9^;3v^vmB3uDd>iA8;x#2xjyAiQtmkAqVCzgQF6AcWO~EA%7r8NO+jZP zUzaO0$K@*Yx)bJB&3C!#>Rqn2ElI8kB}uNv)sRSvR2Bci?bnSwC z>lY#Cnyid+77~oKxu1<`gBKC@;8hEqk*0z$>}+I~W*P7d->$-`m6zeGRXF85lHYDg zZoEJk;hR+WrxmuowVntgD`mQSNuu{!yZ&H4+$yv zcR%>jybC<#66^2$4-iJ(<{=Kv*O?z1%%cl?eefNc`MDKzG(2q~eWi-OhV*FTT?!t{ zaL{YH%im)-;Ge4aXA#EOyhqV*XZkjnT8^3jgDU(vRUQp5V0@&%ScNB%J`EWIj^NQ|aO&8l8L86uARf(3MZaFr4^#A%*GltKl|ODi z)7(rL{HCe!-vP(+@taYaX66_5!<`xdlOFIW1>XrI>Gvr5pD{h`0_yMZdkEvHT&?(X z*M@Rw^>^?*%iy4-zhi%dZ~^3!Pm<{^Mfrv!j_yAkN5`T)cLPVmU8>=>_T8-LkE;A# z!EpF>fBZRNTl&utw&iaNV6d>vMey0-6^`)B9pR+4)4NcAcKC0O_;)+tLnxP>eu5+Z zosMwI6|vK&J76V15RzqvD5^B}Vj=PxqLgprkZ>4#B@!e3IE0ow(rCG*G4rJ5eNJc^ zK!E8`V^Z>tU6N_+cv7IElynsq5jzmAz20@XW7EeMaylS=IDrUhr?KN`sh9D^p2mz< z8gU^tmXut1Vc#h)bXh}P&@LC$$voC~K4BrF6}X}%KA2GQJB@!<4(ErIxEV_Vk`~<* zOL&qFa|n&oX!fjsMwVt+LZh?V#M^?pKR6hb{a&$MLS$^7(H9LPq(53kkus$Q5wti& z@rD*tDZy%5luSV(n936CXOYW13?|S|M4lPDElQ^`AVOfCAh+bsIn%NNVs(R3Es##| zh!*XpiWeQA1au7`^9{mP+ML4GoOz?vwHT7SEU{{o?iDSuOl2xsVwn~OrsZ7AF0AUj z9CIAxflpNH-p1W(56V@GDaUIy*8DWOydEBr+f2OtQEpi*IbLfW{4&9h z_4jJr_8nM`SG(e;`)-~if3~a&FP;x2@LPsB<$?tq{PG9oC!UYEa=b2fly`JAKSzHV zSdLeZ;`f&7H^tHXBAR3{IbMEjuF#w>9b=^Khzf=ilV3bJUJojM-%}0JHAH^#X8z*I@mhC^jIaMkOw&Hgb?_Tlj+f@wtD+B;AA1d>IORq? ztMWHj@%uj?CVw&Hc#Tl?KSA+(WQhFY$?=+{_-Q#_e;y(~d@dPNj@R8&WX5#<)}F31 z8g?A*F|Zu3-za`w6@MG}aeOJPvgS7jzk%g=9asFC)jr2wmA?sb__6uq11%$zDtIdB ziD%**;^zWpS3Xc}CxfGOxGn9oH5=TioI7?LgkobXaKxRUY zgSW@uQnR_&-{|Y;ps2WMkh4?<@pLocPWIyNRd-XNv0`c2IE(;%I15C*cf2F}Lx!E3_SKVs%&*5I`vS%im! zn0%&H3|=SU&M#PqQBii1b&%TgA$rL=XD?ZYUJ}V;@NOcR$Zird{vb6YZDt`^-5lt>MMiSm@tB5;5wB|n~& z{HUct@(#pF$&cb{JEUixl>DgF8K0E=2pOsky}n-mNhaF|0aLOd4U#)WftDWer~7Q&|1`? zEmWi0eWB%Or=9?GEq95YOR;AQea)0aYuk4|DGc$XFhpN3g#w2^bu8`fkf^fxCxsz? zVuT?MxZJY~Mf}&vDC|)0P%#7&{;w6{ms*)RCsj!08{U7FX&k*QV@WnquUv-r^vvwA z(7r4!v~NUMXkWG^v@ZuY_$gPflzRv1HTXBvSK;54z8?Px>6hc*oxThIiRt&_e^~lq{A;;-e`6@* z>ir$AnajXeycJ~3;hieZ?nBC6-ejQc` zvs;GTF^5W+T}LE%y#{9?L6_$afYl_H!tA)uWdna73BDN#Qe2(LlN4r`3-B0oC573Q z0Bj&lsiJ0T_F%mO9->8)&PXr4X1pK-!cTk z?5=_PXZj(`ZumX$@LMbjv-=!e5uL*9z6gLHW(i?-e+R(2RKo0dVW%2(sf5|x8VTMD zkVRC&?0ysp{yq}?8$gk!6lTXy$pk2c*%fI}3A6hT<6e-LK( zCY-O)o9(7FjjV6r&lqt8f62%{`>=TG+}VJ#P49>&5l)FE2pRD#{Efoz8A0(E(w{cs zHTW+S_{^$!SvFuS!tjx=*S;pFz<&v3J!Ci9y)O0P+39tB}`dH;a- z2S5p7c6k%w`!yj7v&)+g-)n>@%r5V2_>L2j!t8zoFJ<3BnB9|bGGQUiE)NbQV(~*g zip7C2JLY#TtP*C&rys)X7`vVX^V}X}Jl~|?oXimvowE;FWx*->MfxGkZaRqW03tna zG#v=D%ex=$EkFxlc6mS35QW+0J)RfAHPT{%Ejml9?-TZ2-VU9AR{ zFgtdyR^TAat`5!*=*>ud1dbAB#~BL3?0BCou@Qrl5N6j0NK{U{z}SS@>B^D9>~00! zwIET#>V@WVPl?DaeoI_q@xi85GSn$xh?3%LWWtp6fOe_&Ghqt zhsZ_A*(Ip>=_ILg;7Y2*PlL(}M#AV-huO)G6mAEVd85ez+8oF5Ujy+g1eoK{Z#v+iypuG@^4j^19gDm5`dv+ZBNBJd`2{#}3 zM%Wfuu7OBj4of342A2|XX`U7-g<-o?AI6K7X4@lAwzML20i+D=Io09laT*z!=ZBKxm2s;UOFnMhswX8NRr_KF? z+nKElb(Z4AsTG7;I2+#)R0vmtB<6Bbp|}(!ii^MraA7!a6UBENMa7Am zD9+`IN{_=fadLcjB^5udQ`sA6bdDvjtwXXvW+F`!5_TC}bexp8c20N`@}#`AkZt?5 zUhT++>*s%9llG*%wK$UewC?baO=wtrA%iF7tqpP}F|fR~0XNZ4%3br<2sMxpf`<2k z+ExEjxohz*rbJ3$8@R!uC9&-^r6{&EiefW8^IU}#md3ZYiTF&b3ht?J`Sx}S+!DB0 zCDd`^hda*;7wd}%nPaF4A#)7wJiZ}eHIf0x7_VH!6Eei`<|Jf@ftQdWHV!WN7sK_! z#k;PMA;xelz6{_5pF-v0Ela?7LliQ-C`+s#bi?7Ug^T5fkllqhGaTyz}2$2D1M7!ls;{jrS%Xh#SXU+MjHBC?d60K zM}JGdl<|S%nui8ujDV{cZlfPd7#Y=v3L^-kqV>1$PcS|jAd|1DFo_JuGFpGj{sGfR zS@gH)`y4Re+U)s#i!d5Qe;a<21AdJ#($n91a}8^UFJSseuLq4qvxzXaJM_2Q{fuve z$AgCP-%#|_Gr|oJ{jK&w!YG^m*7_8}XjT2KbRJH7MT zg1sue?;`({<)rKP9l|#LZsd2kE&W=A<7b&32h1>gIHjH2Vak@W!&8x8JA4#?9sY&` zjv@PKS;KOv{#S`mvV!QVvBEHM-@k^OVmSXLA*@|^%^&=8f6idL1mTVJCB8?8SM8ybc zFB&VQSP6+P8f6hmY*@BXyvndkBBIzEEfI+R(+&R568|&BKg8`2CFSHybBN24b=Vnd zYw&lqH1t8Srxaad$-QCJX_8O092+H=Mg*5jB211cFpyJIQEo}8@p>&eH8Z{5ndKD- zk-^i-%V$xb&FK{tvt|qWu$-Dz0sqF*pd3b=@@Pf@-OcgbE5q~QEXEia&pdvs4B4*c z01aap7V>DkD&kP((bTK=c=E$=WnA=a>~hi*C67k*b0J@($KM))Jb~)QYLyrq&8JGC zj(Fwn^85$o4lB@HHdtmbc`DmgzOq>`81Fdg>VIa@ZU&R5vRBEA=r?7o*_h!m92-|5 ze_RJ)+K83ExbkR9IGMxLOUKxcZD8_qAGFG=LZqYf$DSFh{x&IoSWXDznXKyXpfyLt z%3lB3uIle1@Ut5y z@4@5^Jys-RdlkRcQ)PMU4&ofl&RF>el{Yk260TMJ`cD&UKI1U>siu$M8qF`Vy!GQ0 zx#D-Ebg=phKOYnjLr=8zjR|kPIELxx)kQi{(RTN*dtVFs1V^m-ixo-*Btb9G(n?zG{4oVe0QrzN9Rg@ z7yV4U0|*T{k^Dsdx_g4X!C3NqJgR*9A=m|>#LVCA;K#CJnW=*WTUCEzyo$vyPw~^w z+g`=*Uhq@Jb?_TlK9E=O(^Yjh_zh$RlMgh`!S9|y`HA`y_i8EQ#@W8bj`DstnxCV* z1Iq`RtoVI?j4b63qWML1!NKGM?O!VS@OBW*;tQo~`;W;lo_wI-DjAcz^E4kcOV{=v zlV3dfK%c!p#$2PunNjT$K7jtxFTFAO#gh;8B5#+$sA@ENKPzF|zk}bv@_}+Ll`$_; z^>_Oa`LWk9Ci=^H)hicT$#-8Nz4vO&cI~m;`1y+=A85jrGM*Y{jC+U3FP?m$#fsk- zk|f{X43S?v`9Qz^Tx9;*c3I`r9!GfxmJeiHE2DYweonI;{1V_E_$6c|3rysYZ#^G@ zELN+5HTT2r+0K zehu&Kn1eBnT5FnffT!ijcPm`-_^<}ku;GPedN%n$=Po%XAm*Vs;oRWm2U`ZiOQPd5 zT-@hJkT7xRs#n==`I9gXolv;a7z}o-3vL>S--#joB*Wd38Mr}zE`N>3|15lO~r$EA2L?jS*& zdUv!=T)NtY%ly4mFeDOF{Jd}-_0-^R?&}HkZjP58%O8;@hRf}SS;Y%R+fBG&nKKj_ zL`M>Y^242PB^Y;3H;sFBd@X}WyF-;l^l_wlyy?Kccg{2S9b4|&cVbJzz7vlcJ3gp2 zpL#37yp#E6nMT^`=7ofjccOlFdR@kh81=UEM8X&mj_Vg9uBy+SM-p=Gd|t&pl8`HC z7~f;|-+$}HCCBN{MLM`!Ss`h|H00qj`d1Rqv`I^xhIN{6BTdGC-o~Fio%tj$^3m~d zIY8vqLt0pDhi;z)mo^3dv*FTWT-@%1``63NeMe6<_OToXfGU)Q^axwj**~Yt`s{JdEUY0nCbhwnh<7feJ+CSE?%6??Id*6{OWj{PJUi4km zwQQq@9yOjiv85JmTZ1;P-gms|(B6XyP0zj`{K3BW+DyPM;1dw;M%yRuJ5g(*?G3cO zaVOrFwpS&{y3=jwgmsy9KVjZouri-j?O|RQUKDXpKX+Qfa`MMl^NT$`dU&k>5y~4j%^-1=Dgv`<+<3(e+ z3G0H@w3`24F~+0>CLOoOc?e_Xi7gB8EX~I=Rf}h<2G3aazW0Ma-i!D--c0moUM5uT z%i|yDJht4#bBA#k&+i8b9CM93-?E-_j01Siby<&KTxLE9vraj;=z1cK<7m6fbFGnB z)mi0TTeQ~gE4mFgeqdiJQ-HyZAY9y(d9TIw9{z3ksx`oe)PPC?YSJy z|7a5OD#k2Vc+46u^Do9PjA=UFkx}rES7X*FQ7=0mx{_m64eGCY-^=44?cg|NpAT6# z_WEXB*x?gfsuA~*y|L=r&WH7E<(c^td3J~MjJ(NkIp#7Q(JmZwn^m62$~?ctGK;!L zTct|Bs2^3fhcK4ve6c)id(x98Rz6=I|HIDXO(yz}3uVDvyanTO0>)(2%`wc!%m?mj zZ9nLW;3N73+rJO(k2MMAKlwb~=Bm2i*t2XPqBg{uN>8dZYEZD{n z{n|cO+Q%AQMvnKgUX2|%7k=~K#keciEvy?o50l2u%U*}No|p&u+{w0ET==zRc39Wt z(cwm?9-F^0iff`gtTA#>x7l~TXstE$_$=#L=CS|&UeP}|ZpbvQ$S^uJU;S)8gy-YL zmig#^wdjX67{~ZL{wU`27^__Nw6>uQ_CiIM?2~fscB{*{U(A0%G4HFjoJny@-eJx02WO-18jbvkI1h&8{aH{09y zvmdg}h>O>bI$z8OX<46k-Y2#^gl8G!{G&#A{29WSDR{*iFTv}?mWRc9?&a|ZI-P5H z=0}f@oGb*8elt1jPe>2@U0Gp2RI7*S z^TU2z*?+*k4t{z3A<>_mbFyx8qrK#S_M0}p%jQpjpJRGcq4DN6Yo5ipwRzof;{TQH z{myw0;Q0)%9dzGg-?X=j3+=*k=sv02T*G!+BM{)XCwTAazu&a^!NbBQz|XcfyxYX{ z(7$WDa5W#fp6iQ9^Lg|`?}5uB=$Ho5+y8t*QH8TF5wG)+h(7Rq!q|#O`mb1-fM*!T zkx_hd6ulQ^*YTX?ehGQde7Hun^V$QRFCZTrBbb+1bz}r0%f#{$H#RWyxL&iobKawS z5kG33hw$)b|k?i#yhrAF6yNB;tj{wUOY>z`#HDh_4Hcc?d`~U#hEU{`7EQ4 zM)p7ZdS?jZ&5@*pPS!)rHJWYA@$4~nBx5~;H6`AU`|qC|xcGSLL1RZ#zVYU(Sc80S z+|O=)JgtA_*=E}3=6|{By_BqLZ*I@pb~F0uiE3D#-xAYvtt&meX067vB-Top%T3JV zgRhw)*U|b}(C?wTuj4(=T94?tPLGAXrrgVjT308pEs}GvoVz9gHpc8-Hg3$mWxD?L zT2k$6mGUC9_uu1Lf^j8|# zYVQnoE$PCRu@0#Xw)lH04QQOI4MH|_S8qeJuR}?8sWf{0q3&Q;OQ_B%;sn@ol8QoBEz0PWXEReu-YtMPy5*(HD~Y)d+9)he9}L7x~5x zcc|S5;fi82J30{Op=}T<54lULz}3I0q1}gaH;9w^%GMZ{i7G`61$-TlbJJq@T3V`m zLA{WWiGw9nd}V8(!(WMn{mVp+R<`&<%{_r`3I(b(psz{hZAn*)e-kQ6 z$_Q5w8l@VwzQHdGjmlwFh}y34HLq{$3HEihh^s{_QNuz8WhDhuR{A=++kNOYJ$?u$ znjZ*3kjrM9W@a{Vu&=kFZ`}r5%n2Fm$R}hVXT3ea%`xbE{OB*uefanQd*}X*i~K>T zv4KRR7C)pj2bMIF%%%a;!!>dGKQFNs=IOzkD?>q5TPLxdatMD8M<4?GH+0-b%GQpg=8BFSD~ zOJzDnmw%&RwbJiv*<9V*7{C+g>kYTblCJK)URz?}z%JyodIS0a`+TF!w1~&@iD*nK zOs}z4QLJQ8k>O_nPe`z@qh(237dG$D?Z&+WKOXGH_CTo7*VE?jHT?1+GdB9VdP7Tt zUBTvd)H=E%GRmZDWqe7P5NIx@jS_;sH`vV4N8K*eiVS^y=v)}r zd?CLIszn#>H7*U}><}Wa+6|%hN)DyA2M!%}U0>V$@DpfIwB3>}alt*rnt~L>j-?n` zD~;0TO`Dp;BhlB~YxqLlc$inR!;!2y3|1O=!bKbmJg9HomJ+gc6I*X@k&om`+v6fc ze>omgMW&v6O;H~V1=#PcaZLxP4i|n(q9{a%P-I#{n8>sx8O#v(CpgpwFiIQiqJ|kK zYLS>v9CS4pgq(!c9Fx>g!>6EHK0*$!Sc#o9_$|2*|3XY+hKX2+6~JCbe{3^fMOeLw|X?>vlsO|80ty#avcE4 z;BA%OQ>qL+qHUd+le}1mVD|FzS_9^6D_pKS;)Rx-8}j#r%6u)Ifvz%rSGufK>%l2& z2=?_f`^y5$8>~=q8@AJ!dv4eIuHeQlFUB1InFju$;X@}Qa@dNQ1Z$Y^6RJvNY?xhj zR=J@T99|BxUNu&DMapsp_O|)E{8B2R7bB`g5^VKy*hAr4r^3nsvvI}LmG)7yaXeuA z(Aij3tVIhKPhB~+HhL_zkC9-vZ0agI#(K78Q21Go7=jzO)Gp%aFt4TM(?|t8B8LJ! z(>2yGOhagT%Q)q1d#n)YafYk!e=RC!c#ahkJHEOOWl=fftLtHL!_{?`xZ(L$i1ax5 zXAKg*$Puo=a_x!dnvnq|kzh3R38&}yF`#kee?Zzn1N+ay-iNZ9m@tjTYgpq%pyN-| zYMOX)G@adz6-VQ=Yv-qNc31l~Uk%gMCNfNqfgI&5;nHH^0RgD;z0t_Zg8JK8Rpphl zjh;`nR?MJp1vC+Fm@%8)EoaTUB(UU?Pfwe5$&7Mi!}JOwA;0~SiWwGEtkbcru!<$g zC5rWi8Rddoctk4a z;*FG4TijCIF2vLpw|v^TaCYk&qt&Pp9ftEc&XYd0VLbIo#D|W1GQuaX2H2hh4Y^#` zsjJJMyv+X(<|tkruzq+K^`!aN)2ESzhBfyVj4!vEF$hmt<$s(6O+z3~EpAB_LMI-K=4Q2v?qcw;2P z2CM&}gfo5Gf%*~C`X~&9e~WzF{ZS+~KpLwD2>b5@{qubP$Ms~z*c2ONJI&|{>izYo z-Mx^ps7`2wG~_?`mBg2$I7Oh2j+i=#Lxv2cdc7DNc^nwP+1J93K(x-%kO7??0h~GD z3y(Miwxs2r`cNnr4~^@z+2t{EY`qq%Ly5-C-G0Lo%79Hqaa4hWOn)zS+@k{Oc|O;( z!EZa@7!naqg2@}N_~$OcSzsGZMLU9BZQj1FP@t{L-{QrKsI?oQn~(=BVeZSUrVZl+ zrJs%C#EIq%BU%5th9j}6Ht`XTRanVYaEKkxK@e^bCl9oNQM;5UgbO=-Z6Ra54QN`0 zGw7B`)M8(#2Iuc9dEknj-3W4duCoEhQLQ}V-y9jb%-@E?r+A?}WE8PbpY|*)p{g%` z3v$vYbGXzOT5t5BF{W2QvrI(moV$d2Xu8nf#ld`6Z}|8qe$csHJP8Z5A`v4#6~xwU z<`K~VBn{mt9vUe=6P%wli>}ZZl#M?KseIsrqVp_ki0GB; zbp|i@ZVZe7ZGkT6+!8xDI18y=w6G)S>or<}eK=Y+Hj9HxV7XUrh#eP0?ze=`KrYn> zg@&)I86%ZsW%FNP^y1^(5D#0C$wuv;KHun^HVw7{b~@|~qq72V1>g$6*xKrx4j4OH zoznqN2RsAt48Su0&zQk`6`eSU6&Fg3n&r#uj3(Y9!C9}oWTJ}EfbZ~dyb+o&3MHX7 zb+>>IX155{w+%E#9POe*VTcK#GU%bcrRts@-)5Zk^Bh>?tuo=jAN`(xI99Ha*B#Wg zfRKTQR5XOVu%WLDgt&=j0r=E!1D{EK1Y&gfyV{_TNiz|bZ!D-5$4ST@j)d@JG^1k& zyX5f>vd|Wdiz2H*hctrXY7VML-qFFe1b<6NU6NSdB@0oDt0(BAEx3CVst#>NJNMx9 zzc19W+3?5e-Mp@`F~lxv@A%H6TJ$S*tE5$XQM4W$Cav_f1p0Vkqz5NuQYDr23wma` znYAR7S%mv3-N?K^@l;Km&RL2FaUg_BvY#=_I>I@;xbCph2QA;2Uvb2*e4-*{P4lcS zxKXAm{W>89wYK7z9-K&~axH;+ADRsh7MzuSmQNs{5DSgOeq__pMKKmQ=IY?ki`!DY zoAKl|@yd?Tq#o)ekUoMXguhkxJ3X#)d_hYGn&q_;ed{H39!}~+pOncNO&jr$gBJ&j zWhmVS|9Q9?5yZZE9a-qPTx_MEyF@uqHpZ)6=wFybf=hi}xMkDBiPr}4YEURSRCo{fQC#U~QeL?S3^!vxgC=-O*93AWeIB`aB-^*xX))9armrpj3}Fjb1xO!Shb zsaM{>Y3detTVislFk+&o^GaOL5{?wIJJ^~fc0jKWSJr~fh{jQKq4H5xT+CTJ=ILw1 zX{$az6(`JkRW{JY72P9khc5bZ)^c&B4U6#lbJem`V=xS=(Qi>5TB?(ehC*!Y@pU&C z{BK0EsEIBtkTD-&rsK2(N37s`)jhC9bzHh&Tov~R?U_)=-yiZujdg&5#Brxa-5KPf z-+l)WvzfRc&>-#y@Kzuin>X?3ThLHpv~}Qzal_!`YS_e9eBAjBXT_Fdie-@E zGCuC?Svj%gj#a4d@EQ>kMLzD_+B0Lz@RSSnOvOc$SG**MSFSa3MJ8Xr!txmf73To1 z(8Rn_xkk(hVc3X6E$`unsnxxF2X*)Y{~9c%t;_sPO%=1^Q#P&R{pF@W*M{JFtUQ~V zgWa2(+Wj54aI1oV6jxM((Rlf8C@%HlBLFU=IrUEy{}s-{pn_}{!bK(7V5Bm=+>uR3 zjL57yXw^0GHCRi_`{F3}^f)vFGKzPh9d#P-s(Vy2aqhS?b8&*4m4z1ztXmy->eujE za5UN(H~Omj8vS-)U(Psk9q0c28Z3rmU(82?oiRin16DZ7R1us82N3;Jv~5)rKRP zh_5Er;Ijz(M-&d)LB6R#9S`!+g@a$LZ!gxw{vyK>6Ad)@2O6Ty2PcbaI5e34zF|#N zpzV7H!5?pB>gxwb7HzMRvAEby3ovh@Ja&XL)mD{A6eIOE8ifZx^=d4cYrx4k;){(n zjt@BGbhy-qiF6>v$Xv{GGeykehTqrLQ73j9OXXCoFGNFmdXwtC9Ra?;cQj1{hC91W zO|9Z6pb1+I;wYsBsD*u9&Gp>|li6lU0O$OiR`Z&V~+ey^ftFZqR+vjS#v!f_7L7EX`2M2ISIMxUh)CR;>kH!pGu zALwNP^u2V5l@-Rcq!wDI!|c7sGk#i9x{8ZB8hMr~9nlEuo6LDH>)HpM5Q23eZ=MCqF1;}_{y|Gg@k z*IC)E*WRm?U{KSDDuIr5yA^B2VdXs*MrA4nc^0D;CCW=xsWfQPxyrjMjFMsDe;u^f zBB|Hj$1PM;CXc8fuSar@jkBGFx6;_<&t1>F@U(O$Q@ff=I? zb*#NstQFe(KE89OK|jrbhya=+%8k)=-%!-ySW!8wi{jEM*@pj1R8D7GIj+~R1P?SSt=H?_*)q zGs^p780AdfqtcjQr4?1JnnbHdL2q_)X;HEF#OHEQ1^p&WqP?%C$1SH;5u;VVxQy-9 zEsDHDxx_g$bdd_P#jDclVr=oMobl$W?~EFi8{=uxLEGb#+^vERg-Nt`erDXVwy2;@ z7D>JK9plo-oSE zxZ4rS4Jnd0sNo?@dq7b=8D^xtQ%A(DLmlgg6>EiCQRi5(R%izE!>Dk=(sz*xx++X^ zo$~GsqjoFr-Z09^C{x`E^(q(DsJ(R-Dymh@Ec29%?8F3UzAngk{<5@}E=$caM_|@= zl_F?_S(Va~osdxpE#s%AEy)G}ZWzum5;B%#6X(J}=uR|T!-$xHutWeU8W<)45-vdw zl1!71XPmJl`*aKx$rIs$Qj=UbA_?G9CxG{vsj2X$(VLojCcNox#OzEX2xdS)gI7XE zAs)Tq!%+>H!v&+PY*SPG`7#iVCfn$AalE^1{rpk^ZiP(8gOBG!Xa=mAW zE~TTF>FBB}ri$q0%!urD(@IfDQ0qSGMV(ZrOpC5JeT*?Jo85VJ>iGzp;b5337|wKJ zRX%5FyiP+z7 zW--%3YS(D&8eq#6)=l-&k3snGx0(AybHy*<|1SN*%#~j)6eas5x|5M~2BLfF`DY}b z2`6O<{%%8vnUT5=j@zB~Z*V+G=^GJXQm>lF?aufCTqEN@h{~WI8<&xC1)K?}-Gubi zGB`;d8KWA0PhwKWD!4|*#rQWfK7)T(#tryS$e?CDcg8{dCuTg4|6v*K1nOT(f0xWh z!S7D0%NP&W%$S9LR|bTbAx1a;JsF?Je`dxv@n2}9Q0d%H;T<+M^=UXs?)1}vG5-j^ z#}mqU4=yw(;#J7ZsKvi4!;k-jjP3Y$8!0uQ{UH%)sZ>dw=t(C(^Op=w&dGQQu9@); z{#_X!bUb$kHK}`y;hB9P%bEhfJ2EqK#Mc42#v9p{Sd34`i^s@ zb*d--t|Tk_P5>gA_tKJc4`?#z#T=RYFd&gmx{0tS0QniKlwp4XBryXRs&*ZO%8%`R1lCzz0ceLZ$@(NWg7DZ za=KYVy9j*;&^@rp_Y!(khdn^(w}1{X>=839KlcQDB6p85ECp>SpeG3B0uq$ZkP=gu z%+GHbHW`q}&tC}510-tW7;9rWAW@_5nk8Ae=V|C4gaSHVrVH^l0}|=w61onMNNFoj}%3sW|Zvq;IdQF~4=zBWeWI_i4J}QS->Qh$UY1am4+u}W@gS}c=};eW+A|3RYK-!Et+1vcT+%@TPf3)5%OLEch~9!C?$JFiQd|5*(^Qe;BCr z{Lys!)3XZxswmR=)E2yMgFFTQX@fEg-myV>1@CDn$2Hzt@DCeQQs6=|Of?;0(3umm7bc%!OfI=|GTIW*vDgL82UHlXFsjf`Gp=N?Im2bn@TEpPBM| z{Qn$XZ$x_L3-BiYg+adp!p!_nc(Y!F*OQ$Q=CAXboeBPur5Ae2{}K7mn#An`Vqjxk>Hz=U?SG;Hsa9$1?M~wSC`gRDnP4>rU>wK z5VMk8rwOoH$DK;h$odQ_*5kQ8bHpUPYXCKJ1!!4!o}JuTTIR{V91drC&yA>ZHYDdR z&rQ{C@70?0%h$tKoBbvH?}zp5uJagKSCeyIR=C^j0D>AL^Ukc!G%}aMm-SVmaz}+} zz6Asm%bjGJBku>mtmKwI1z&=h{fb7+z%)!rs_Y86a{vqjHxBx_H6>G$E%@gBVZ&jt9sm zDtD{^D>djPXr$Z&_!#(&8k>3oPLd}j6~tn#7D_n}wZ^5U+nvJoE!U8VNtu5@l&l1F zc2EB3aD(WXBfk(;FbbjEr^_D$;8J+_ywIG?77hqv;gpXBNzc zdoxjdbPASe2#<=ppg}{J2|NYoYY5LxT0xVB@YrM)bZH1rO-@0dhDN!@=NTy+Zfbxs z(}nj6db2a{gOl|%{z^vMhTFqHFu$YoF?1XSz?L07x_#_%?JsB_n}VlM;0xPxM#5hU zJDLx-E2m6@oV;8)vjMU$M)O&Bxf7oK|+b5_(|C2VglSslTn9#8sJ257e=3? znZf-)e+yKu=_XfCcuT8~`Nn2U)N!^c9%kn;#C?i!XPbNgO-!EheecJ7$8)2t4C{^W zRK5+kX75BA#zf6RpK_Uy&&>LZSPi|CjTedT-c50+L)rFw;-Q1W@iIg_)K%^d_;Pmq`tq9 z$!YH=ND}N=2vd3~2zDdL)xpQ0^s4}GC)g#xg8=U$*iG=X-J+Vreus?xCxqY2@DRgc z%5)w&bY6lNpr>5M{9Iv{oAn&f;I0s^QKrfCF_;;=2IM;<$&G1u0g+Z|np|(0X2n4X za)PY*aoBH6(rolGm)ZFo*gZ~mSEE9QA#rvQS)p?QSrt0{iy$nNg)sEln(GS!{iG_3 zKA3Y|BhXxw(dffD*XN8WI^ic(nA!Or6TcQs@hv1Ln&R5Kv43D1Wt!$Unl^Yf9v4wn zpN~;hnoOUxnZbKOE~+X_ZcNg_?O4Rnn4O0~HW`nAYbUCJI|Sh>;7);61;!K|XOoT_ zJe%=uLhermrO5qFc@Uw2+-sVCi?$XIfyn)?7`fME+br@Pkc-@h$&E=mxCAqm%>B(E z3o#eBAoph@7vbFZ+jBn|nyC!eom{(3e%tbvayuh|`!xqRc%SAx1T2M&aM^<&kUe;k zPFbIRnVp4b!TXqlN0Ec!cm%>ZSO6$of0J|^eVS!}2K49ErF`5Z8+bHk@uPAX~aRjz0e~JD)_{^^E&6;o*8(S>P4DY`L?>TB?^|O0G-l|O z42-}c#o$)dkLWj9W^~7yq3Jvp{av6J9mhrw^vI@evvz$y-3u(62-S#Ei&02 z<4$twHIJfphnWpoZ~$>-Y|PU9>M$sYO6ojJo*TgPbZ#+;cG+NdL2)%?#%roZO&xp! zxe!%)O{^-_bQf9lAAnv|sg2%n>2Q7gX9lMt7o(vj-gO-^f}F;!R%51)bVw)C=||*G zG4c*p&A04T<9;5H)uCr|WG!cX>@fKrr)y`2teu&fr9M40g9pKSFIj(Spr$rg&L`6^ znS58&OuwXf=w>9p>B{5cAuzT4!j^oC|2o z;Lnj|(e`)6YI{wm4>8T)-$5_h-bRn%Qt`8nFFTp@Cg%R%Op!g)eZRd*+*v81bNKa=jnFPr7uZ z)mG#ah&UW_JzYNepNuS!9!C8p7gpq$XK$g)Zu4d7HCNhVIN~LWb=XPEW7T+M7 zr&YzOg{)kq%*KRfRqH%bR^?)DF=lFZ2d$z#1D21F?H`7ayFZxRKrqhK(Vw)~ zjKzBCRkA5C`6?cNBsI>`k&alAS0l2A%g=#^;3{*a-q0}4)N$Xic1Hq&%ZPxC96wd$UhmErXX&{5Xw2-q06cbp zhYPzMru%Xy6(?=37qYtN0t8fxmK>FUJd)YjT$lFREtF zM1b7FBj_=6N^M}8nR5ofPjU7_Xr`G{3(&8?JTpfZkfB~PM|WO=C8m+t49Xfa^I|xo z>k-rI@)d;O^7xB1M!{Aa&J@^D%giM?Wjlxhb5^O_AvUw5J2mo(@2JIsonI0AxBGFGi0+p-Nn@ zgwuH?G97^SbO74Z0ccMLpgkRcNGIhjq;oHlNouamOFF;chwzqTCQ7=HjqoQxO9@?s zgbLmTw3^Tw?$~?)2&%MO_=8B%d@dGlVGfi{LN8`euRE4>y=B?*gkM684x2te!|X&0Ju0MZ%fp0;?|) z&NCNSoslpr_XQ@m2FcCFG#pOu76jXqBWzEOusu1#_T&iLlOyak7jSLBhZ$*!-f!p? zfu7HIs(Dh+<8nF-|1WN+UW{rpPK8|#ic0$|IPAQ~H~sOg(koi;UHjR8ulm&kZ=RnxD)GkG?j7y^!J=os z|M%hhZtXqetK}Em(tgyu&6V4A&G5D(`+F{Yq@sQL(#>~Vu=V!)mf!TP?5vkhoO$J^ z61TrR{^BhkczQmy@s6)uxnjz%&-nHEOYi;rQ+K>HCFzb?N9zChl?PW{vc}!_{Rb0o zyS_H};mKzlDEF*eyLHJ=m*4VW|BL%w?;kpnNfXho(qh>`se4D{;WQ!Y2km& zee5FzTCCbUwmt0#iWaVy==)>dTPEf>7K{e^d0j0?z!$O`OjQ@@pa$5CAIT& zPp>%r(6Q%!`n}BaeG4b&-*#igIoIz$=iPZ{)Lys0?m{#D^sl_q_*&{i!#-DX-BsIG z-kdP9@YaJDRR71L2~W`_?gZp57ev@>i8>}*(G zcU}#<74|wX_y&SjM@D0L%@F$32P%*9i=N zhYuMHU)%}zsc^pd5MF>c6&h|n5`IeMk#ALmJt~|VHiREg;{(?agex)q&|Hp(ny{M> zH%uYo5#~k(4Hvb9pHt!2I@0HgpJiT;GT($W8j+vt5%&o4eOQ(G-yCUP1$y#qgr(uS zhw%NX%v{70UIUkAKP=&k3BYh0hwv7pMZ>%jKB3^pZJ^YV~|GkPocU|##8*ihJq@hgXVYi_!zM{hU?!)*x zKP8GE`O@(1gW;MV&ua%-LE}HoY*3Zad6+fWrpS#|S zf473ytNPT>D4%zGdVf^ysr%ovh|BPPSQ>7`6W08Bl1BJ-2EyE<>QlF$$5DQs3Xop+ zj~S|b`k5T7@~8VRcQ8n=%ez{I>oJ6HxeV9s$IS`Cy1(=Fhp-+~_~JuYKcBq+M))_d zGX z5@j2P!_!2=ZJ;y4VEPm5CY+#(brT<56hW+=kZl81Y#@0dH=6v$!A^iJft>C#W ze)fR}w$A+fSDwFQ__D7b8nxiPo-@Cf{q~XGVGkzGyR~s@X4-~(zjn=YCyu_cKlyRrK5%YV4+c-mjz z`Jnd|*n1vwKR>VgtyyQe|8&l)fD6}t)At(O?K9V0b^pj;z4qsk*R{M3c=gpq-+SV% z{&W8Z|5qnmv~So&p&w_TbK{vCZ~yh>FJH3x>)+n;tG~b7ebZ+;hQIQBY5Vgd$8~#O z*zCHcE%iU|d;Inne!A~-^N+osu&^xs!O&&@k@b};wt6p|_wH`IwEY|GBd~{I{|4(q z?;E^IsO7T6nM_rm@V_Ls2G=Xmh!S@V1jgW%Orm&8Q&I8O4^g}Vq4&TG!aW^Qaf3%uad(6$Zj~q$-^7_c zzLldae7jfix&2OJUOiL9yq!xFuj(okH$sTwu82bMrGPAX!4+|C1v$Ek{n*T_i4dwPnBS09Puw!5O@dN zkWFC-Ct*6~RH;zXQS&t$B*N%}9jYk)`trbR@Q77DePJLTe|LX7+|4v;rhsTEixY~eSK~luYc(ySjLBmY9GCK%KiZpRX=(UHD3Po*=M|Pedf6h z%ws*D`p{BkEGm6{HW`n9Jzp$f;)UxI#(4bo(P5or6IDO@3@~2*IjGW)SN~5A60XnY z;>Fj;Z}GzQv=J{{pPp5re6hx-y?Ezz8Iv%IndaX!((#X05~SwGE&MK8@?qIx=&Ytt zSTZv|F_~k7LOy(Vd!RWKmO=T6$zCk!tsimb><@ovbEr%|i9^zzjN_3G@#L1a zbAYxB_AKq>d@K|z)UJf!e@Jfv5mo^aMC~Nf7$Ky0Q!mJXY|@%A0Aga3vYp_^YlIZH z4nLOHO4vI9%mP}C10W<+yQl_A=;6ooTDwTADp0Upr-F>kkxxcc3JU<>%|>e#kdTtT z4?r-be0u4(3#XT)|ChbDfsgVk^M>!4$%G`(G^G^MmX_hG4K1aa5Fk*-CWMdB21t{D zsI8Nb3}hfAX)@uXACeNP(N+y>bx~POD?Wyb$|@>F+(wJLxKH<8>avR3-5n^dsdjg% zr8TXsegFS+t}}DbJs)BH_&xhRZ|~o4=0E3L*SXGhu5+Ew`^yE67Tc|@SB#!k!QPx=A@i@VsfvUN}%k%j>Dry3#?YH)`k zH#Sf4l(@XPc@w-=&h6gudB?q8chMy8xQqDnX#jCw^4|}i7-tEoHzB8xWTLJ;&vvU@EFVFstcSf&w4JcdPGsb&A;X3Ah z5}z5zyqCL+#(TZs$;-azoegQ;Z1>{vURSnf+8y}6{`=iURL(u)O7FEGZpzL%j3$yV<2)n)co?n1)9pb?G*hgyLRgz54(1Iy?LniB2O+HVyfr9-QGFb$GmyR zvc|!Do^QDB$Z~tH@ch#Uj(Mm42kKkmzwSDQ_#(!W(eo7*&h?xIUvbU?bqx5P>$w>;x|IN7xr0~?U}UOJK3}44zG9DD(|dbueZ9&JEq#3O>gXV zq1wDThqB$J6Th{_JNCGD=7+u4KBQ7!eat&K`%dpQO2}#z<^*S!-QJszc_-fCErH5({_lEcu@OUlHgff{!CKilUx$Sl>n>9bZVnq< zEzCPDFK0VSuUgGtd;rBO_q+lJSc~M75rSual(7Y#R}q_w*m>C=G`aE^^thQt19Brc*I2&@zHq1D=Ok+@rd83h>yo3 zURDwP65(aeIg9f=|Mj5Dv)7FZ=8w<1>7NtOMF3T;XuR4Mb}?l&*gW6kfl<#`Si@SA zXr>7?Q!ATU9y>_ShfzYm=eNk4rpSZSNZaXq5Ov^r1B9DEC_m<1%RVyuPV9wwdXeZx z&+kFI0W{rX?MB>Hp0`C1O!W{Vrg$Fm+~KVz(=l59?FW$a6whu%vOXSy*HUcu%e@zu zt?}mVF`2*d0Ce$u2yCLw>xh`)=|hB-)1Bw}?E@~)hdnS2e?02Zrm-Go3;wFt2a~|L zyJ06fLC!Cg;n=Z@f#^4u=iCGC*)H#F&*vbNzJ*TvavJAesCYdZn&mnB0D4=` z+()xW?!zDW4RX&#PjH8~;3DF+pn@vZz_ggl#YZg9F_`hDJeSw{O`a#@^4{dR_E=Vy z*IMSC&&Uz)wL)ulA)CqU+3?^F^!$0haTjA{T8%Bzzi?T%EC$}~vZ~8828tzq1`ziu zs(l&*S-|%q%r!DFa1m>9hPkF@_&l&0VXnb}fz!a%2y@L244jZK*Z2${2YwX!9|bN( zk|P=ehk%sBy#mU43`o9yU>BnJ04iXh1Gvd$wYF-!rvbPM>9_|049oyB-2}lL;8vv1 z(ipgi8>ytf1iTILJP!^G@S$0Z=bw@=m8m|XF>o4)2}?DfzXc2&1%4cShk^aTK_Jr| z0J1!M_7^a)1Bma^U+BUaT=N14ucOfu8^t04XmE7=|26V_*cE5-kW{)EGDq z>_YjY8t*v?q+IS{0Ruxo%H<=`sMjDcg!BhA2KEcRAISXn0OnY-d5;0#hxmSt0sc{O9m0Dw1|9%D489KFTEw?%3^W6GB7QxP z`qTrle_36lF;GPW|5A;C#lUUgD+S&UoDF;cI0Lu_d_IkVLLi>HQ$0arU>xu+gmW|o zEMP6dZ(`2~7~mg1ng0dg`;h-j8UyDgJ_^LXZ1wXR1E+y(pQkhiP6Bb?r<%{$0|o|w zthaqY`qiUARnNfpg0DwofdB4&55f_Rfo356szKvDRls+HzEoqN7|3$Y))<%pWI25r z1BF1AbAraeI3UZ(y=9g&3rM}*#QiSn(*tC^J)kkL7|8a|zcaJ_7XvqfF9%5byoo(< zwkQ5c8W>Q2oJM>UVYXxbtD5bYk4#`bgFu#_4_RP-j{$4J*RL_q2fPd6JsJZMAj{vO z@ty`C<HFo_^UJq%7J?k&p(%w&c|&{2EABgU^bBTQlv4!8_zqyR|s5>a!k+| z$O3){@x$nJRw15`s{{tl0C9`%mS=&Ke*!ok@`f}9jsWYy&$C;=03W>h0q{kDl;5E- z&;ooA@ijp5S8EJZ0V#JW@LI?%*BDp~q~3foDE%o1NIrIo?BCu*C&>Pd|L|x0d0-vn z^690(!1F-b?X=*tK=K^{-ih>wH3kNOw<3H%V_*PCzJ9?yK-O!I#=s6B?cE{tR^S}a zTQmlmfwv&spfPYaP}Luh^Dnje!~<^{*0oIS@le^9%zkbXOYjfP&}Fp&PmGaA4^6i7ck4a5h_vz>guG=V_NAzDi@D9QY8zJZlRKlmaPlHjw=Q&*D<< z1mIHe6=)3P04ovB(ipgiJrVW;7c}0(Grg2^8p!lK=S#hYfNYPvgAEKEk@&+v>dSM% z)VBx7^gDpmqZLRw4ZwGS?{1BOdSC$I8jXQ+AoWuW4n{Qw zP6O#bJQKxn{iMdg5Rm*>9`M{-^-+z1Bft`b4{Hnz06Cx7uQBi#km();P6c0|#=s6B z=Mxc)fmR^-nt?v>HE0an4fG?tUSj}DV`Z16f{O)91!oJ+08(Bduo&qlXbcnp**}ic z7_fkBuOrxzBmYGp`@ahs13WX&{%=@g;5?A^at6qHISFL{cS2);=j|zvXVEC{Fp&Kp z&*B3EgTR{*KAEEVzZFRNEx;Q=Z`K&#e*l=S z9(V)dYcvLy0-0_xkm<^RGeIxa7$^cV-3;Ii#QQV`CIFdk9FXa9fYU+G(iq^mJjP!D zPD4EZUk?mKC7%CTV7;H#7&s~MLqOK^ag71~$6*S>M>GZw04a9>h$Ao6`!xpofyzFD zJAjN1UiVj$%e0mmYK zhQ@#oh^b5UWQ~FI*qmqnr+}>YlR%~$0-|fKKCUrv7|8Kq5Qw3(`hdp3e&9n0@6#CQ z08-xFK+3BJQeHKX@~Sij76U1dXHd}9RTpav6agu3hQ>evkm*r23$Dv)05O1OZlS6v zmKZ1l-s!UPDQ63ia@v4C;AS9v*4hfBJlHy)a@v6aD-2|P{2ff)0sLEF3-AX(*2f7T z>){z-4efec0q`&|2lzFh1^g;-1bTcK zcmen%a2R+H7zGXj&j9}y@D%Wiz>~l)0Ed8&1CIhf4}@&%uYgEneHJ(X{0wj(5TE>h z;A6l(;3t4Rz`p?Q0PY2L0Kt>r0{l3z0r)ZCdf-QaHNZ!KRlrAp<-m^s%Ycxn?EfKP z5yBq?`hX7u3xRup1;Acl4sbURU_A(=ysJ*dyslXL{6?N*@$t z{nNhRq+B4{ma^xU5RQVM;Zwi^2oFj4Fz^Y42PE7N#BXI6@^>KoIfNU44A%hR^Qzno z7bE;>gndFU0DcN#fa0g$JdJP-@NadTtQQ!~3$93OCg!ci*0=do`2ket@4=@j5 zuJdw%T<4*T`7J=4$;)p5W&_s)(bwhI04sr2z$L(PUk+F2Y=w zVSgom7+3;~0{y@ge*uEVf@l0OKX4IBW@0qz5?1@=jN5AYU*cK|U@ z&TodJ30MxC1uO$%ev@AWybq_^UNs5y!?|u*2@rZ8t^C(<7NIJa3}0O0DOV=2lfN|f$-`4KH$Frdw{H; z9l-6t4&d*AEkLxX{087Qgx3Qx2Ih19H3e7&>_&V!ko;vp)_*bZK7@;a{{r*@uS0wx zFoJLakaBW>*8(kIC*rv-`#JCe@EXJq1MfvR3Z(u#XMYZO3W&Cte-cRjhk$2+M}h6Y z!xBFT{8xkrfNj8iK+^bYz6iJnePtZ-vK*-n}99AGr$JmPk`%z8-X>zp8>0Y zKLwTpn}KD(e*zW*e*`Q7HUWLW9|H@4{|qbut_S7-p95OJQ@{}~{0n#ics0upd=lX( zum*SrNc~R%IWBTNw;DJk@kfErAk6jKD&U~R4*-V{-UqA(_Dek1Z-)`?0agKbNPGwI z%LumsmjD|iem#)mat&}Huu9^~fnP@5NM}&ufKLm0;)r|N)ApM~S$ok(Q*df>gq@5aotk?BG))&`L ztj{VS>!Tca8dwHoJrn^c*9WAZ6#ywe2T1=K@#rwuM{F-q37-Md&$u39zC%Fz*I^*@ z9|Y2`_5rC!KahUY1EfAXfb_2xAoXeh(obrD^rtEy{izH{J&S?#mqK6&_Q(OcfR^Bh z8~=j>ooC{I2OI{z1&m7g3~(6XQ@|16NeK@DUqzVfnTx=~z?Xr8f&)O>V;}H8f&IXj zfPKJU0egUyy93DlJAnTVYyomSYXEXQTQA`nAjh*RAjh+EAjh*ZAjh*}Ajh*pAmtVS z-3X7kboc@gV|#uS$o$R#-v*upvfM+!-vbW=S^h!bo4|cS?+3nta1T)F4SXHp79j1? z0Q@bmM(9<**AOlP(oV&|4+4Eama`D}3NQyqyIH{B053pIhLMMb-)jCrJE9J){{jvH zY0sm;{{RjGY1aYZuYvtQ+P4q*B5(%~vebO!m%s*uS^o9F2Z2>U>QfH<1+W;n4p;>I z2cQr5ePAIFDyn%3)8`=k_rL+*m9T3Ea6GUDcm=Qlcph}h&qufnco~p#y+F##0#c4g zknI&g<)=i>H~E|ofVrPH4kd`j@I1s@UY6`U)0v*6!M(CNP=_$k4U z32qd8zu*+XNrD%z)ahRmJSO;c!4C*-6I>#=NHAOQ_v5vk^McO{?h$-I@E*anf^!6K z5OfRjS-Py}zZLu&!Osi+rC^6(i{Mg0-lt~zV!{ElEmuvKuG zAQ$qKKTYr&!Sk2vc-|)_{VBn}7VH$DczMKaxw1V1PEDM9p+)>zQdhbTNH zcueqs;Ku}a2yPHu2&8nW{(=L7J%SB_<$^vzOE8M@NTnAX5bP0b5G)t;30i_tBv$DK2LyWr z8wAS*eS(%?RO~qvjal5T7w>xK?+dZSm?Jh2LyQ`|* z?tQNPF1P!DYY^YZT|+LHd%ydD+vPs$9>Vt-Pt@abM?J$HH{u7};B*h-`>6XkzK7f= z@O{SpJibTVZ{m9oPBwwlGl1{Io+J1^<9Qz6QO|jN4|`tnWO?>v^<_N@O-^N<#`ndn zk*q9Ff7WAJ`+)ni2C@zyb};KuR*t*R`>1z}d%t%8--F&mUg(y4AlKy{&b^R}T(SqU z-R?u#hqJRhC$djwKMOpSeLDLLVxP~B;`?Iu2)_4^85rYs9~pBL-!F~1fbTsyeXz!n zoTKcp!HW-@~~t;rl}FMSMS+*Pn+neIa{bL6Ze{$@z_#Pa0Xxte0K+b`jG44}2r}5pByC-*y`$Xzm#(i|`aeP0Pw+}M=FMI4VNWN?U--j+cjPIe#PT+em z|4@F8`}xbFm*u!eE_)N-$Mc8skyrj{d_SKb%?JPGhcAbQmk;r~V5k7P6+ByzcGzKLIs8VR!;8bH&jskk=I_@O}P@VSGP2zJEOI zGky@?$Hx!h`^@;~@%`9@ec<0eVF2IJ3Fq-WJmDpL_guB-D)3)5i0|lC=ka~~%AqS! z_6b81#<&km7{vGCtBza+Kbtr-5&kssIKGD_p1}9B6Hnp$!o-V=nRH?jbeJ?e$>km_ zJY0wz3-{rBu<#JR4;LQ6_sPO%3sJ7Zi-joH)qPi^TvtDKHGJUeD85IoeiPqEuQ`5= z+x_M>J=db{CO_&zlG@MP4^rP$=nb$?}{nB+8@O|p~)7QJ*r>C3&wcq!c59Rd@;``Kfr$K%5x*kybu74EY zk6phH-viel!1sykPvZNf>o4GY&y+r2Lbs{sr$V=>Blzx_wr3iwI&BEw7pINjdtmy3=`Q!F>1U=xhv}#BeP;Ue_#U4A z62AA$=$irkXGHP+=*<3^IqsKcT)^+anTKW~_nAlWJv8$KzE90Ojqm8p^Z33n^CG@` zZrF1JhG37tgDa zAJYeQ&ACz24-5URsXBaA!oR`zO8!3KA9tOm4+;GW$)DpIua_~eVt#zS9IxNstiz`y z9HIWuj}L(6b>*ZjO0#p_wjOPM}L!e4=57%q_T4=}(oTqxnQ7`$nZ3&?}l)tHdy=OGNec}7d%Mi|meNhfxU-9Yiu!N6; zkMgR7|F1+oADY1HZz&(?b41^di~RLMzu%|nMMCctc@09}LU~AECG>MBC+)pM%DYbF zwFv(c%nvrY9e%@WrBA1Ck@UZyKOudOq<;?cdg|XH>3=HzxkJK-nIH1+lk`tc)BHU` z-zVw&B>WA^2mhe(Z)bYQ?-%-j$loX7dqv)WgnvMLqrT05+UKNo*JEa4TV{YW@}oR+^2^95dunLqr==Tkw;BmQty__tDD=yOW=kIm5GGZN-J znDnTGZx{L8Kjn3h`aph-PX(<7vk`{ACq@2WQ-7rAzALX=X-|ZEBs^8*_enUP`XK!& zN&hcXb@+^gU!lLl{wKx$&xyT?(2jWhPQn8czC+~aKyO~pNq-U*d7oi_27Q`^{v~OT zLlRy;3v`sP$ET88 z@IQ`xDc}6Z{GZvsfd8;hv0HDj|ABpmMSnl+!0-hL^PP$G|32~m4@h}Og#IDw3x3{Q z=k|*+6860ds6|0P40{9l&v^+58!B>c-n-kU-nBl29R zS6+CJvC=mmdhi-Uc}PE1=;I~*^+JDv{sa0>q1T`vVR=i1zJlX7=zT(Oze&?8g+86* zH~1fv@JyfPe?s`L6L}vM`UJ`Y|7Rt}!WYEU68cY>A9y-Y zPrSZ~k3Afe_B3AP{{(t6{iBk;Qp$U)(EpYG2>Rnfe?QBI@Yf{#)tLyxKGnj11@i~} zM?(LEPt!LFeG$tC`p<;^gtUhTOnT}E`fr5ZEBdL2Nuw-TqTi>4|B&c69{KXRS?qs6 z=-t#0@~#p3e?TtvJt6c)pAJ7O;W1+Wvl0%AeWywK3v5rQuX{wlyQm-JjX^xGlWaf8 z?-t?jllEL7^bw9{pqB}KvDoh_q5qKjfnF~3TYXyo4MP9lY~P^YDfIbbza>KdHjwo9 z2>lk(FD!J9Yt;8%39l9VaU9_FH1z|$N9eht-(Cs#i+KuKs)6%lkGDH z_X6QZyk@aH2-B~44YU0tJWj&3EDyqyB>Z`n2jR&Qp33qdTqNOdNPoLf!e=G_eUkqz zqF+?P?d;z$r&=%bodTxE94x0;>oZQ$_dpL`?>F)!?3eIhk*4EpjVeD66Z67*7d z6#HLf{|NpkCHgK9`jd6#ic72l{fM z{|52Q?-`*ti+;b5@IOg^$-~6Fwo*T&uaflVQLjvYxzLwVKhT?m-YfcDC-fm>XGpANT3cq{b<{ay+Goc$BR4@r0_^+ot&5*8H;3BbKZPtm)>MVkzJ5)4@M)if?_v4TCrp*_vy_L=Gzo8H`BCRQjHxcP zugksh^~)>caK32_&U_*tUZ2g<;R6!p3(ZMCA>mKKwhSMa@I!ezd{n|;6MjCvkylvw z`7S|T4Y`_spM?2tCd%6{;eVC%{Sy9($nTTzm6Cpsg!z9NrXP@S-dG)eRKhDH|C18_ zhipwhB;f_niRrmc;>G`gF+3>YCg^iH!e%{%GhE7kHA3hA>n^w1e>cOn`uRBeyD0@d zR)N&Ve)uxOroa3q>6iCdhowLLF6juH{`CyP$TD{Mp^rWMm#~LD%xC)A!~cnZJ$##k zPMV$mx`X~(hx~nx{GV{hf5@Tlw;go;AI+ZMB-D>R9ECsH!}YMIJ^b$u{l4f3haCL3 zz@P2u`9Cjv_)YkOJ^ZkP|9y_|6i1kDU{C)Mhd!MS{uPe!DI~V1uXEUEhC|*z!(Z(D zJ1}0@!*4n4&$XPL{tpiMhaKUCj{10bMq>Kq4*Ndhu;)FF{66Q9|1}5Q3a(jlM`f_G zx}vTwI3s9(UXc~t)Vi##aYJipU8pk>+EEdSbcQ!nbapoGlvFF%Rn#Jpc>vM6aA^CS za9c-r#P%qn;L zE)Anrd)2b~sx?c~@x+9sWJ@f*y(Cgbq^dC1NgzvUGz}%HUsJiJnl?<&Rl6n)Ii5)} zOQMGQAy+AMGlWg8D?*XlP#c~pxS@OF#!zQXBcBTu33Z0IIV#&IDi7F-+uxKXSi5X_ z+^j2EvniOgU4!-Ssj<~lI_9*sk&vLeV#%^SDFHiw!LWogY4%ASEQNp6f+S8v<_*aj1`OEQL&!DfdTDOj;?RpXXW zE!2K@IMPzl)q!8NjgfHs%C@d>vm#i*Ez2raR4?sp+|E{B)7jpEhQ711y|uj)&30>J zgk1p1s?m2bRM`@0+G1<4lZIJyWVaCfF6e zFSN3)CcGomiqz%BoKF4<)rL2 zXyYG}xTU=_d|!K8q_K5*Yq;YN&RywV^~cKEhRO{${V7!8c<@I^YHK%@^9NhRUsjwd zZCZ~BZ*AP9hOuxHo+nxzoYNKQRPNjwYV1@F@8}zC59TAEeFUs&$FuW7NbVRpE4sR9 zm-e=*#T2o?cSPDdgORNrRsdC)V*tBI+XM1;Bv#QP&qp*vS)OaGEw6-n05xrgp zeI*e(%1szkVIn?Ku??Cy(>4NQ%L1%j#Vz!u3Tf1ak3!fegVmN_V)7aG&X@NO5wV={BZ4I?W5;+~U9}|#j zK&Vw!5^7$8BC2fCx}K`gm27J)S3-?ebh8w2t*#Ip8U1zJy2jRS@T3*ysL>^gyR*Bk zZf9E)iq_WN-PO8tP1`z*X6>jFH0&;DcUN~Pqf}Fe?OkEERXwTgj$~3qk|cFFwzT59 zs(5sOil#_-TS!uv<`)aLwr<-xr)g_*Yq$;hs!#~6uemwYJZEcrb9ZY9Q65Ff32p6&>Labs`i$PnKGlG_* z&eM6jldla^yozm&;a0XAX>rQ2?s0N%N7Z(%LO;UZWGm*A7>tsbY)!?PzN@9ZyR~`c zrZ)6zYde}b@2qdHZwYtRH+F6cC5xKVv}1>^k?y8ss-u}%HzziBkVBoy1(Q_lLhCV; z;UuDXz*0TouuTAxIMEm{feV8j3VI2Q9i5>rj5?Wev`rF{v_Yea_vuO0t&KavTf4We z>5ibz*n1>#n3kMGkoK4qZ+fkyT9!V_R*-mKlaATUX-4Nv?E0MYGIn%MW>jEhcPDzM zNb63l`$FMuXxI+_UX)bsFh&8c5G&E`btaP`)V6j6-Qky!q!pEY?Ugn+WzCeiEtf7h zB~fojHK(L;c4C_Vq8nYbiIc!Z8!&NL)X0t!=~^*|U6{HO04s(uwJ`*PQ-E&mD>b_$sxEm9k~vBFe_nXsc>1%Vg`tw$)O*Vo60=QX;9wg-DQkJvIj<$;me2!YyOb zDa#ZmJM{A}h$VDT(h~ghnM65?`jzO2;!N|%lfrdXd}0bIb7@SGlqHChlYKIlGFAkU zIX6a0DKk!vCDiJdl&A_wRnwrPu4xdIL#CzsW0aK2_~UekHfaeZ#iNKEg|0PTkW?V! zg$vR*&xOgUq~^=gQBn{jqXn@fDJ>Hx#|$G0=VwkBCnvO(c}%7JSN%%ujWNlwJazd> zV}xWsjFB8^{BzS$(h^EaVo6fk#6JohWaW)9DGrrN{OKtEI3;z?$q99BloTgZ#3#~H zw3hSJdf!)5c#l6uNjG)z$61`&#?m?n zCB>wq7>E3dpqhTlvTJSU8OKcMKNiNKQzng*9m@F2VhJ6Tv;_YGCP|^cici^d&5vc0 z&W>>ohZ_EQv9u0K3WE4hX}TnFLb6AuOXHuLj*^y8QZg^?T*(hw#yR9X?UOMsN2yEv zF-pps_K!x7C3gxgCPfWFe)Ti4CUq;*%9WZDIIZYk7$Z5PrzQBym_%i(ekJBA6}lkC zqkbjwNPj+`JSn_V#ivX$FHH&+pE5;hniMKtrEprLWG<5^QtIj&g&rrz3@Uw7Noo3- zkRQY}Gs05sUdeRR3#CXKG^I|;eSEBcsZY{=B8k6I+Ny*$8$(co3N?Jlm zi864CxsD$cv2VH_9UN+KjWIg(De=cBDJ#N18a$3&j)Wyuun0%-~U1?iHcCHUvZlBBe4oE)>As5dWj!ZTnZ1PO@$`~nSQ5VL@u^goi%aSQtmlOm^vLIcOv;_Zr zCeg!pa$*rXkCYUXPZghfFptSfS?JOjIaX+0w34~SX(v5?&{8*J5a=!?$#kjKI3=Yz z{y5#KkCyCDmMr>$lI|`rJTaCmb+$2bQm!#dnuIuOpNDI@|JIT+U;OfyE-0Bd7i0H4 zpKo4q2?!;{r231C=a-fO=atUa2^#XuNrzSKICk*v&M*#K&1siY`2YCEfBfDYQ|H-g z`~|}*z<)L@A3nJFSD9g)b53`8+w_TSzC($Z3FD}@#gF{e38v%SEpq597_48mzTSl5 zc;q(yoAPix+$wv(W%2o|R+iPHDf&AYY-KqbTT4wiQJ#^5BkJlpzf#MSpoOF530F*B znT~eqcU1Jk5pi`5L!MoR$w$a2Z<9U^AQ4V^Ln7}u%ZBR$Hl-F`uy952wZ!Qj%0 z`ieM5&l3H6KoTCV(fW-Xa`9akNf$@Ywyt=EIOX}4=_KY^G&ObVnXgvWS6zH}N75CP zd1oln!qX5ae`0+UROuvN$C-Ry@8t5Td2CmxwKKG_3-4WXl=tLXopPTf9BI%Z=@Oq~l!fynFP1e+Q<OhrLSPHx_aFz2>=d@JY%XT37+_tgZX}_;K%6l$Zp2L34p$*-eg6Q;>f{^#_irVF|A{`TXudUHhze<*u;L<#A zMtL~=mr~y0r?njZ2cK8;A2iy&Q_5@Hu%R=wP5EDfepmlor;N%#w(>=rB>gj`Jlc+A zXL(=$H=XFMB^qb_r^dtZmw(qkQ_AaXY}5D|n&nhlWp3<+QvB@d#M|hzE zuNmqag~JOW99K&H*!iU@?`tCOxQxFyT%tTo+LTDAeqUdbsNXq0Y&-FC=!esPC}#wV zi|sf*kM_IN&VEMZ@jsKia_(}e`BfC1DTXFq4tdf(c_zw>xpm7%{@ZMOd*>FbV%>5caaaGsQ3BKOtqL`V8|&NKTQ{`t$i!EP zbC!x%F)=TEQsvv-9By~Y^MTi)pOUw7>B@9+NUxwQBvlvl^Wo!=vv%d3VKpgDL#G@b zL`|2^UEPhHk^9J{a!Fe*a;UTQ!j?`R`P89!JD(2$hu&*CLTxMX-%2GX1$`Bc{kKv^ z8aq2`H!WY~^3|b;@(2pUmBvnWp{8yu^meApkL6m?+1Sw%ZenkdK0oj!=!Rw3k1z-5 z$DE{pmaF{r>G-(tfrtq&PJe3ao9(WHZ)|cO90__3zV_~{gBRC$559GO_QAJ$U3=g5 zxSo5}llA09kLSsv$&atjojkDmw;tD%uX(H|qaOE@knz|n>h}co`=a`NmHPcEe&cyQ zuQTr)8Fmr^H?S4@QHdRDqbf~ zjw{Ze>Gw%@&Lg=~t*uOdHPS>qS1NfYH}4!7+PrWi>dA@8*K}Q;RCMN}Jy$(>)^m-L|CZ-Eg|DN`s>l=^rKWmWME zM?F_7-X6C#Ka;FCY-v~@lt&$hV8^KBn~l1j1V3m18v4%_UFTuqjE}HdWxr?) zbsZSHGH+dO_@)QGS$?#3c$aIIjtLHEJ49@ee)VWu&4 zb`JH;dNBF?7W~mGReM96p=tjzerRMzJ(He%y4UsGTlX(VJ6wkLxD@TO676%z!8hA0 z4!$`3?^=gE!5_cbehhIg(A?nhfHwSj%~7KeEI9F&qc7i6~0fE)!35y zI(-i|cruJMKJXepmZ=>+8(2?@+r#3Qmr48t-UP2sTay*`U%jZC>$B_ zg-c`gPaQw|f$~pSKa3>kSALnbfHW(7zlxs#*`^Jg^=R7}db)U1C)8yqFHxScgVB-w z7C!6~`|(lw8~JuQhM#>KK9|hTJ`SIh{8PfWjZjDCW3LlaF49cC^d<7qC*O8kFOQ7x z`;75H`X&7*l`N->ro1HwO}WrF^#3i&JhPyu_PqGB@m(V??w^VNYqwFlI-)PlQ$9HF zsNpwdv)3j0N)=yejL+z3_*o9h(Edrko+Z5Zjkv{EOx^0dx{sPPRycC>=}NY(WoR!; z(QYcyewLseRiJJC?I8Fj_zK{2KuhrAn!iE2a-m(p-qNm&PLzvw79Zcn=-5+~G=$19Q>OPZ~&apn;W;Jgr9_p!WnVyI3dpm5r9-oC?>zm{^ z^-ewQZN%8v*pdCkE|2x{16Q)Yn5_B;J%`hFbjqSVoHCe4tgpDHr}iA|`U2|iyvU39 z5nAS})2*0Jsmjd!na_`1dhVy&jh>g0MxC7HGUMed7>nb5l&(|LS25j0=t@MLJas$# z@U@?KRDVZ%+1m%@QwL`qF)i!XjCb^52HvE&NXNw``y<((&H(|qw{uLZ}L7X za|L5V)}37@b)~#>GRHGzq1>J^TGk&bBW|NfPrf2;$M}ieUs?7SWFBnvq>k63Onsa0 zAL-eATWp-}L0IeG^A!8usYr`{rHr;?Jne&L5%t3kub-e)4|i z`->ha7uz}c?KZno_{-DS#`p`%$B)r*c$fR&EAMk1e07s`kZt&!^o^#xY^X+Sg2amOWS5D-3(hirH&;3d)B*(VmvJGW|$&y7s#$+7RP2jY}LiMuNvN zUb!%ixG^4i4!(u;(?yIGoaa%8tDwV%&GX7k9krlt2EBUTX6l~$r|Kh2f6qSRY0N3U zrREfRuFE%c9=K4n_v^Fnz=qedr_5KhVd{OM5W3rOdbPuS9v4pj;IghffSb zo|;E;%xaJ^i*pJyM=)h0ZNuj7GRCKpkuYXIV?AfmO=;2VO3Kf%upUHtxE@Zo&bhM1 zjGGu2IJT?xfjhoFz?wkI#`@q&OVuOC?u(PG*UwJp+CcYZCjS?)j{Pv#T$4RG`u7YwK-!S$p&%wAhwkJ@Y1snskfF9d8Cvz5) zhtc0ThjH51nU6_N|Co|vyWvL{$sC3{MWl||UN6PIMxSWRzOsf&W6#&#{ayGM z=5F_+&GcG(si%GJ_$$;$UU*iSiPLk`Ze?S;-{F~SFQ0W;^@eX2bk7Ti%kFSl^PDnB zbJUZXuUg^m5#z^yDtX4vZ{5EH<*YzEdS)<{U$|xe$M}uYE^mvkm^mkX*wk0Iy^cJl z4P;s)YoCwSxzXS1`k~#=!naI6V*Ee8Ce~@5?qz$3mxaFX)YVysQ!b_c;DZCXy8aUC zp}=}Mnv)z~o?{)6wZosh&i))eKwmY!!2Xu)ZWuP#Yx(Yx7R-%XCYrv*+KcxIzwEx^ z!=KUpXWZWO9V3S_8j)ry=4N)kr*GTqh-vI$))_zcKH?Qw(=>2B54k;0SbHh^+*qr` ztc@rqF^%=4;co!1oiF3wM{f@LJ-1pz86WP$SlBns>|tpAl~#*2Ni9Dn)3Dv!0m#C_7%Mg~1sjXbsM=GYi9=$R<fXV?#C_SSILH zs(E2&_=J-0nV{qkEbj?CUg=S5J&x7*ur6YI9VTCs7v;6!aipgF2EQ*p!v6ci;F*Oy z&AOE9#lLhN{`wTJ_41e9Ry}nX{s!_w83#&w0>gRe>%V|CmK))l5dMO9Z?w|8 z_v|xSYP~%CH1!@o^7}8j_71)BkBiOT66W(y%|_n3OyhN#-lfMb>e7dLIq0b!dGQhJ z^?`Rm_Vqo1T*H= zvB}z74jl&Eh@0-&8-2#T_blpzK0MqGo;;-KeRi=IdZ{!B{~l?mcNA$p`ThBi42ms& zjq$_SkTzx=4$>Bt&=IA5mh*Rr_&mOlIANGrcd|MoMU=bpglg)!Ha{5!_V zUn=`u`J@Zu3GXR*@u7@C&s|3c-B#%}2>))0wYOzV#mMl@l*KiFV!oVD(%xq)U3<@Q zPKbR1GbeoS7_z}*#pW96_mQ0a-`g11oZ}YfcX`mG zp6$qm*BW47)c6H$$~nRiUN51?p+uT9uH|~z2z%8HyT8Af^EvDdDIc}>+c~b>N5bHv ze~^!R_s)5pb3Qrhy`f51Lb>ew%=YQPT0?TZe=ccXQ?KK+E$@qs^VXYhmpbFn z&(62o(mB6lT|J(Ky275SbDupL>!Zt6pWHGHb%nJ;L%yDapRLq&rF_=|pJf@b7mFhf zYAnt{d0A$aZn~tqyeDw>nbhfM6Vo2-Ix8E(*EyDw$Ka*hYjFC7b58cQ_`yVsovb6a ztroPUlh`k0nEU<>n-hJQHXDF{JL9RFsZ-hnVPy|9Z=yV|bz3%fk2Gwa7h7+eGMoIl zw&(_r4#VbHGrYDdJ2ozxdy!o84#Tdd-;2tA3H#?4zQ8#v`(xSjmbJRcgJrDpT1WnD zI(w+|CCs(qPt-~2jJBVkv)p$|HMh<H|D_Jr%_`&Anxg7q}m~ zfOEql&~jQZmvhJGa#uOl>~CV+c;mlZ2U$n)b)(d$^yRv}Z@2XUV-{p8pR<2=_U)@(<44dQ&AgT}M_Wr8UfS2$CY|AT>Q?u2|2Nj{i_^cebtLG*df$z8KlTFe z$Gu+(!T_MeK!$Tsr`jysujZK1B-@~zp}r+)%^ z-YEO^lQ^EZCq3dpIo|$)b+D*scP-|ePZdq>uO0SSPt7>~P_1`rFV=;6Pqbn4cD*)( z9n5dqBykN@{#_r^Rag(#S~6E*xX~6iX4$$*ds`~TU z>Q9ZiQa;{?n2rzWuCdw=z999j@{n|<{<$6;{LJ3kr`AfPH4#-WlJ6c>9=ResipH zjyKM7GH=fN8aGFdV(e3Mch;quXEEORANr44tSRGjM~5Gqd|8L7?}NBw_dyDg=eEr| zRDZ>Fg_#%9$Ju_J_x_AN4U&fKXoI7_vkK;1?>cX-apU8``8V3i^7SS4ovG5&k9%x= zv9^KU1LFMF^cn0M>~mb{%Z{G)T(9~}9K`xlbMCU346&Q9k#P0uHy*J@p&vK}#g(vi2{o@DP= z|G&DAlu!n=%hA?L9EW_Uf3sG?URl{e>@RZ9f_22cg!N*4g7c9U?5hlVt{>sP%7Evu zu$OMBHp#s3iS4T}9qs!*)Vq=I9ETfhXXD8Kbnj&4fA)C~x`TU*wZ@#Uha^Ii5IA+-bck;6KAmQ9>M*Yd$V%N--u>g^_0cD7*E7LY{ETE?(1<*Yvz2A zrN+`M%vWb(Y+#xrNNa4R&a|Sv4e#>A+mP%Zs5XRs5_8`L?^xISPH1y#zY6=!7jf<> zS{dJa>O&jjn%r48ru@dYoqLVc>v!<)QTG_1xwJjTflJwAgzs>V5qoNHskzSouzg1C zlg_8@?LKbi!<;MF`z}q)&H$-%|IE*k0H^xX-2P5&MTPJfrJy zAWQeNunFo>?n%HO2H0oej6k~m$;+kRH0hX^$^-qe$^+-;*x$0AsXIQ7HmG&yy%X@n z?n6-yeaZN}eNIYWKL~&09yax}}nK@H7q+}Mx*BDqU zTn4$6=e#e$bphqX>KwdgJ}~n3n1gTc%02it<}Q8X25O6}p3dQ3>nZZHy$xe-gJ(YU zM@3JbJDoQBP_4W9QJlF;{GUk_b0U*YrA7N>I@}||UQi;hDI58&!iRiT#Rhez(dcRV zqt|2pgmZu3Wghl+c+TVA`-10MwRSOSerHQV+fu%}{PS4%BYjwQyKcuguNGSeF)iDNp_}qy-C0JO(fd;RE+fN|eQ&9! zSU=&6f9w9Iu~&$*>>l@Xrv2wyxsTk0Id>k`0(mIQ9cbfuR^B7kmz6(tv#Y1}QP|GeU z!lo0ZJm@|+(0H;GV@l&bIbauYYs9fBog(yn13*YHl%_X%wc<0M=JnL=c)rX|yvoGa zf>$_p__l?bN_uTJJhbVNGEcM0TM#jHi;|-Cw`L?x(n|)jHg1Mqu zzWaTfT7!5I$tLv{24BDkEm>NWlybHq#$PfyYt9C|1@1QAgVwS(JTwFfR^ydl`j6Kg z@^6k97NiBJUoDVMm+v00&-?Yd#v)rO8d{LXPOTE+0$A=GuTSGCre&Jg>>aA<> z_Q9@O8=JR=+io>a&$>1CZ~R;9+PgcOLbrz3)WxXwXKQV>7O!pF($>Dc&4)Lzgx+Q0 z8_%jTxhX|A;;l+}IaQKztZilGw-;N>Iy>7tRY~N%JfTPgR_XGEyL?;2>g8;BXW6~o z;m%OAufx2Rwrh@6+1Tc5YmfMvTKFIhpE0M8_Vg)(`nI>w5_kucdd24^%fHB1)!6Kd zwELRz)>0n?H1ePNK2=_&LrEqMnj3Y1H$-jq;h7tF*%19pi_mY)^)*I(5x!T9tf+}O zUEOVX7fvhQsoK@PF|xg}Gc?CodCoSzf{rgEgB1P#xzSRntP)bJgcH$mBOxE&T}0C_ zU$O?dHz$?Vr?SgX)Fg)FqIU4rslF6Nt>inc+HQ>aw)2^5zDAvm)zaA2V%6U@yVg=q zk5Z3lvg)TJY+etEcj;O6<8*Ft7UtEp-NzQ(@^DITy5JLTf=-4mr7HodV+VigxZ$29If~lp7?c}kN|=s8#lx-SrHjcq2Genv_u=Wnm=K=$6^iJ` z{LxMo>nh?Abfwi+b9bkHl1Tmiw+HSGue|p`6&=CDce>PTJL~VSTv4%cBc81S=hAV3 zW_3M?5WrNnQIKYtLf1LUwn38oq) zYTE1@RNbXu#=I(aoy1{Y`}KKy0Kc8|D@LJX>`b_v=_e*oljU>c$$mN0Pq7p6+eyD} z6uLa7D8}VXe|3zae>mx*l^^Sygv*(JP69Pqe=g4LmoxoTI}yK~bl)iSn?|9JR{qiC zk47IYf2V&q)U}G85zeqHF`_6jm>l{e`F+U}oiR1e2zz+c^58Is{VKNyQvG(6rz#bX zJdZS^9)L30siU7>nBiEI(xcFVU) z%ItL!=DT>j6NV@A@<9vFQwudk@SejvLpv8)dM*_1x)V)RX}Q4{THei(=v{3_C20NqAp#XGnz>F<8+hFLyM<5GGWqLXYGwD}Tns=jPs*iW1FW1wjm2G&|R7-pF zB5he!6^rVzC1rncS(NA8*~%>l2nM)JzlTMUjPH>vbx6^KS79%rODR>BOO34LTjeo^sCG(nj87rc&4&V=M>kXF0~xBGn;Cq%;sjz1z*Cm(Ks)} z%8CYyP3>SLl42HTFw)&+ZEft_Qqi>>b=K7aUv6r|yP8{#089=M9ZN&SD)piZ zWHjzk7eh|^y3$I3B+ZGA8qW(eMARv3(3@cqERU5l+ZpO*+VVbNX)>rGy>Gzw!#)jbqxiN* z7t9cQGp-?{{o;9{Tc8`>{@q!Dmw=-cv^BQ!#kgy!4w}bSEF(AK#oGzqCMC4F(4y@y zRgHe{uv#nVI#A*h+o#kz90VFy+1I3tR8`c)I)BwC!yDmVeCxN~T&m@AF4m!SHgh*X zTUt@#jdeNtV>DM(Vg`_-+>)Vmhjr)SZu6vVv>?xv}`53m>J_*#&=+Yo3G(+wo<)oo7u{kmf?lPR=8`~ zz1_N3Y~5(#(beb^x5j%>X9RsfI?p6#8_o6;Ibf97u@kr|v~@$MGd7B2U}k3MwZRZ+ zZ)!*1+=-eBw*gv1ja?zMT=a1ATa&PZf~O_l#~lZ?Yhv3lv5jNNTO($eQDZ`ERzf40 z4YAn%qOG zWqlX5NNgtY1vN-~QY3nvMtHher6X1^r59NV?>%?y0448bq}$*LMe3BVIX8w-+*lW` zw_%WVyjPdbEMZ3m3^MT$YP#(aFs|d)o@!~Tqcj$gE<2e(ODV%9lTd5AwPf6-LV8`$ zm6_NupOLK!OZ9Ae>m)Wcl$k|BteRGs%_bF4dcw0En>Z*N9$?Q=OGeSS=cv5kn{X*T zS+)=V@nYL!;|8?H+InqeC@Ywv7vu=C%zWXr4+=SwDe&~#q{rlKF*g-c#V7r>`VKhj`s0t_CYxNBZ*silH zsq@Axs|(!?78;z^aNxqEJG3p_-rc2&lMtgUtzz0YZiK_ApN(wJdiPmbNB>l@rUO|S zpBO2Y6!Dy}m`!%a#%wUTu?Ew$R*BE(!j{=$!&Ad$5}kI_Fx6u5ow#=_@PD@jCSgA$ z2SvOBSb)zy{9cbw0X~KJ?8j#U;`!&5XYpylryQRh`1Ig|GhJ36KI6gT0~P_f2Uf=4 zM1%|Rxe}lA2p0o!2G+9h=>SyWQ-e1o+4V48mInf#ue7K(z5d6MP=sBf`9(Kcn8$Bxh0G&M+mR< zG@;nuzipJ6rdjUw&u0QiD^}7fS8#;FO^63U$9wWb#9f*jw=3dgolep(F>*?j90aW; zC8eT^HC?FCOQkB;q($H=*Bav|BCT?*h7N&bgg}7#Sw787Y*7RgNlELriF7Eda(Vy# z!PRx|#iTZX!svYC_xenX&Jc>(%0@-zsT9t5>Q@SD#f!FWzA9z<8#&O-u-_j4{r>yg zI~uXFtz2ba?ov^3tBR#X@fNLk{i+gV%0~*FTCnz(^x2wxSa#^CWG%6Ha};x@Y3hgE zCB^T=dtJ^5<*!VVz@}ntb12zqA)j${nF~&{P;)c;C^{JSbyxnM>1f``_0M1d z)@P=nqX6`*KSRF%(?q7T0qw(gbi8x@c`cC6{ttt|`4K;V%*A?K{Kp7*C+#~Hc*g?o zSl}HC{8=sFgY;RWU0x#^?XZ!|jf&Q!ktztcyv-~SXk*Jb#B=sVY+*aCadIC3B}`E`_k;*3TS zw|*4*A4>ki0s6M`h7k~TdaK0mEenbfm^0Tu%lf1L{xXUH zYfF4%&3^w7+hR$_=`8an2>g(J=5SY|rH%&j@L*F=pBdB#LBO<@hh8>?I<3}r{0#+v zGzo8N!+&JLyd8+M4>)&&BX(ijrnOd7Z{(2@OMiD^ds)3Xx^fk70WRn6o3+Ij2;vN4 zxH&Nj_wkp6aPEii=ETX21oj$r-*X$z8u1VmUd5O|UCsX~;6FL3sXTzEQiT#zt;D}t z!l7n$8d7PvsSJMcUbp`@AX0CF(Szs-2{yr5R{t8EAf?t>|pr8GLsO{@t^(>%F1Q_DuO- z3a`=UQh1Gim%{6xzhv3GdGk`K=bv9a3dx^386?h6FEKT#q_lR$l2qbKN|&stO+}bn zQjsRf+!7?INRuY5Gzd$XW`1e9d`ipGDp1kd(b7o!r_#bdKOJRmaTbpy*)F7U4nmpRU-}wrclSuHMc~a%S^>)&n>+$J68r_^VxG$ zq|?Y>!bV!5RasNVVZp*{i#scE?!S`b9%lu(YnyQ6uTGzGP7x>n-c7|WN10QRTg;N&H8SM9AIpzn|i6wmxvO3%q3F16Bjs~NP$BEdA zR!n#J$7fau4pQMh=ikNp>`o$4f*t z{$f#~kKExbcN>qo$K=^qV1-O%b2PCFe04Z57ZV}5+om8%G-Cf+N52EE4&6RJ1h}+q-#?c-fAoP^dX>-TD@s=5A?knecktbcL61mdU5j0wY|4FCLM~LY%5VDqRw}-64lA?m}+BF+7 zI3-hX=Wtm|kAb%t@;ViZ0!Gpv^rB~&-=#9!O$(HpPr3W=-R z{+oXZ+^HHyTq>6|>2j=tI-yahRXB6p(Sn&kT1{3p;;&yjGRs;OZmz?b?R1K)e@{Bf zl5kriPOoDHXE%GicokbWgu8GwzA3mQs8@37IPdCiZ0>AiQNm5>cxuo+G;Y$X&eZu; zg?40SSOcfYD50`@Ls~nms#&%o=nrDvnmTtyFByeCH&`6R$|QpXa$xb4funR(8RW<; zW8SDT$T7N%%8Z&)#?nzZ{G-@o9&A3E9{%8HdiY1tV?J`pTrUeQi6gV7l#y1`Wm_9J zp{XnlZEWmrjRe7)&T@6DYU-B-m)5UK$FQ<~EpkfhsU&A`R83BsyC#=p${RkMnVeDh z+~6p}OVXQ$%FPXyre|2XZfSbuNKC65iD?xhac;UYlUSOGhz*w1?VTyHMo&*%kco)Z zVfvH{GZDEuPoLDE(MJA^M)GI0l0T!F{2A@U{fG=YXS9?*qpAEEZG}^^Y4TOt;6E&p z^tB&nNn5r!OWFd)S<;px&Vo*PbcN?%3e$p1WWpoE_&=Rdt%R8%CwrA%BZz=shzt=1rCsuM*{UuKXqRhA-WOr5C~kvfwpH97t8%#zc} zX~#S=j5;Z+UsVkoszL@-Xhw#)5RqZF0}+}d?OZ0tk+xnH2WvjuKpwAD&-ra2498Ec*C$&l8Th9PZ*X@(5-Wf(@u zB12oJgbaO+CTBEJStiG3dNO2Guq=~HY6%%u8)RV9N$YOddc;N*pR=;26OU#{=MAxq zXa4_GwiRMsnIzKdW$bf?8arz$S0%)vfhL6K7cZPw=8RMa0amW6Ff%GGkc-q(^tuV@ zRb=I|>YC)(s&(sA@YZh+x2?M?k-MUDS)x{}5MyR6I`g&FjoT9vRX8K=!tM&TwiB2n z&de&csJqryR9CK9m1q~119l8`8ZU~MSw$y`h;b*X&0_)TW`drsh=`R-SK|LiA^h#x z9$jM|$*FGDr(jT(P~G0u)vET;)!ZYl6e}WFWx6Iue6{g1NBpu3gkas0+5`nnbqA3u zxGuT;|1W!Q9$!U~^^JGmzI}7Eaud?5Aq0t#KpT%NfvZ$@kZNK;EKFaO?%Sl z=@YmSG9P`kX`U-eYO3flbX;N6=FJ*Y*tDs}EWq3661@G!cyL*oFq#`M99z=COg26@ zpIcS4baFMl^3{N;PtfKyr`Wp?V+t{3 zLM5Twgi0Eqjl#Y`S@DA4p_CGA#%bK*!t)q5B5LYz0%y^s*t8M{Scc;K3Xa!^BR%-X zSL5mgi~HMCxB(Fbg7YFcx*0Wja-LR1OVS@ibB`9k$W25^Gp83tMLc3uR5VAN0V*n@ z7o3{K*n}!78oOvgNq$`oAmx9gipZt(i{mCaB4Rgaj@z^8q(XaVth9>0li>^jFIeG| ztOh56s;~t(+VK#DBziyL?wD{U=6b&zBy!URyMJ(~f%mCFG93>rE~{BuxM=QNcqu~X zZkeV!{iH(S!V_L0Y#D6!lvP%9!==1zesvbSn6QjaiHbyyi)8kToUA*Z2U@x|5DpT= zca}{Yf7q^?Lea4Y+02=SmOXI-vSvGlQQmM|KC?I~f*!Oq+xHwjY>00~h3B9tW$*-1 z%lE~iPEg%+8pKXms})~bTQwiP(Cp7i>6Hddixqk)Jk(H^;v!sIQeK8bN6;udaA9zk zRLrSh#Z_T%j2`7++V;B!Kr999;Mrn-S_}vNv+3&W7FK;p5o4rjBDQdA>Y9?0?4g8x zx2ANAGn>G3a7~l)917E#Vo4;4({d_9OmB@xr3>acJV|F;DXm(B8Qu-MJoq7-Je=1w zKgep3SSwr}O9l)JIF+rfy&M}k05D6=k!J*f(U%o^scbHM23tc1Zg!*PlNWP^y?=%o zUJ&SMrEqC2`cSiezyvmE1)O@=5PejY7T1*GRA4Dn$Uz;1ix$<)msX2Zx4*XX9vO!uc^*=Hi!AA5_+7Hg#a0WC!5WTfjhfiF7Sj_z)zm(g}%Db=)9^}cF4hT2EsUl~=iJ;mA%k8xHg~P58fdhSX$+7b^$)Q)xx9 z7;8N@jbr?spD7mM^>pt%&-QfF`y*}^@cJb`APSK%QM)%-3)!jIuE$%<3bv$~~f zVwNVerwcEyc0O!E5Dt1`Ks(Xjq3o}aYSx1(DQ-c;&6w>fL=!F>aEBvKHdhFL?^W`y zK)BCx_1*uNKzF89jMa4qkub$s8{i^0TI9k1xufGI{FcsTbvs zDa_0`M@#4H0~}o;e{K2<-jVk$uC7iOGd%7>(npsqE}LHke~#%m*ILI0s!gxR=Yf#P zg?({wPLNz&g`;zW48!nQNNwr7bo*8*J+IHaAF3tbj15)I|m8(9#Qj37=@e~CGLz{ z(zXAIk~#8$r@6=XP|8E`<1TaXu>Xi*`BJ80!D74xgW3`}_%7lbjj|e<1R~zz&`o(W zdh7P35A#`$GxOHjf{z(?)$^TUQ!n^-o!E~ep?E@6J{(jkN0UJhwzEPwwrxFs!YL-- z58>f|Yu)CSo2G^+e=~Qyvs(D)MfQibo|opLza;;* z`*K%hH6w(`Wiu`gE%|W()@$V(eO7Z{!mYD$KxDLDqF-jFX*vI++HmTr^_=11nKwA% zO|5;$e%>rTBR40aa0C1Qauv;s^8Z=3Z@ zI)Qi;cRkvkr>azRijb*iQ7Arg#sblbwiZceQNt*B{24xysOuN2I}OMoR6m5VCn zT?}6&wBBo){G0)2%F^J2ZU_-F1XcJ9;20*B5O8TXu#rB@I{TrcJYLWe>ikdQnP^;d| z&kB(atrOL+69^j)7D7O6I)qZ_{60r023QRKN{uiXL_^qgz4$zXR{47hLZ$j`h1NTD z(_fdF)%@3HS{K63Q*f6$R5n`dlZIln$3XL~?U3AMp?=*#l(tX|sOHMf3sIZRw#Lt3 zGkAk*{}6;Q)|?o^ihF!Rbdl(4ObN(^CLZjztD+8FysWo+#V3878S#b^30jWbxXJD&Wg6cfEDiv4l3 z`dL{!7r%rtL=M$nVyJ9Xw)h3oP@J6WS}@!BYlR*nJL*Wp8H_kTA|l3%gN0BidQ)&w zRXy_z`b90blyLQ?RuV&4Z}Q_avzq-DP16t6x#gnv)!ZMjYuRH*)l`(u#hZsI@|S*U z%iv|8sHCz~D;$$&pZ@_#Y)^%#8Z;Qh?>U_?8_-VmM zi8yVmD0l`asj1)(s})_2hjhLo;;wQPw%qx9aO$+rX#1H$q1D(LRzKgTezcEqQ4trP znz|ys+$t)P8<4I&GiPfD=MvQKz;Ue>KkaRAQSpFbiB?xx?c`DAy1xeBI_l(#vkbOi z8-QaE{5inju_UEnU<=+s_6Z#O3EkN~7r*q(oqx^#MHKB)@q=O5J{2=>a0hO(^c3$R zYuGfh+q-tc0;yMYS{tUn0{cLo3$L_K$k-J8>YM^Z*R>H%^5Ad`KPm?kpYQ1KKy(R# z$!yxEgK9+~YE_xAZ-usRQU1X#C_{L&3*BWriN%PgA;bU&Sj&Ewt=^A;EvjPWVuq!6cbUJ|A+;o`f4Fg?>2k&t35vQroz=gBpdd2d85=WGc=U$g?N#1cpx2G?#*gDMZXPJc$P$d1eRh zy!g{Z=u!MdQ?_q2*?gS$a*OgznKDf-0amhzMKCQHOgb;*Z!fGi9auRrux}XQa3{95nBy2FuzyHJGDd%Zggz z0UKFM<8dgf*>40Em*CVB+fYsq_KA6|vI&ZB^&N`*_P*();;IC64k_D&=(gcXaG33b zI&LnTqLkU*3~+u?yn07Bt<}WwC^)9E=PUe3M71~usuoiWV)RKta-Un|*eEnk6~WsCfOM-vzhN?H(!Bk9a4)DD5)6^OFY`H@+ z#^_L>iqWho@;4=ZkTFJs0#)2f;|HY9C5~>@cb&W@$@vfZNJE2$KRrG;(9k|tR^T21qM(DG$k zsiP)efyW$D3*$;^iNjLRAi+aHl2ULgNNR3hB}K)mg61pmm_uq|J`iVfr^pzymI50b zQb?(_4oiy~Q;O3ZmMIF%a7g*h3$a@!9SE{0Fgae8t0YZ=GlHb%it1$2T8AZHftwvt zixHrt8XT4a1qP*B)W#Ocz0;A(SKxk!)I#cjOgiPT`{gQT4j%;>19pw=_EHFMHwh$#vT7O+GW zFqricm35WhR@Q}~vOb5)*n^)PoFUU|3su&*a^5&Yfp^{(mv~qK=R98EyuW6y?7MXUN!?Umjj~Xm%ok5eYz~oLgcWZrJ zCe3zO@)dZzvmPjBzLYL^wB#$$o9NhTUN9xK-jOQUD8Vg3 z(pCxX3zG7?*s7Mv7?Y>4uPQ)N=A!;-JSjSi_~ ziv$k@NzE(Zq)h6Nq-^CYFwG&AwnYyfS3cNQWg~flC}xNrMEp21&NY;Qs?M z>7>JwufU9C$9$dyPX$Rq6*i<4H9Cq46c|)g+EP)Adw^tVBPdm-q<(PBmo+!vAd|Fn zRi@`QXYtFVsSZnv+aJX;(_v}Rsg}v4bq-6u0@HdZ+b!CwR3_CqEcpuD=a525)jKQ& z4H8@zB;6*#EkRQAqVJbU#~hY?1*W8g%(RjU^i(V@YD2Lcbrerg;6_KPMHAP{q%_C& zoaQ+mD3hi-Ecpt&#UYh$l3+@z%3*1m1os3zFH0=6(p0 z0#bJ{2L&nzrA`hCswKEFNZKL6U_J{}J~bzw1sx?Lcnjvdqri^)?pen4+ zMN>7l(?x5pOSR_#r`Y)loS$Yhx3b{X%cNTzmV5DbmsuJ8Y?hHS z#^S5MsSc^d+%-ccl{+l?3S8!pT1c&xNw+yH`3l_UkU~mrbyy0Tms2U;=&(#t;3kLE zVm&x1ll=W{eYky8;7Es5GG2lWK~i(`O3_eR( zlCQvRgH*m-)R~eRIY6-#%$HzYkW??hwL#K02{r~v1EraK$6SH3d^ku7mG5ItzNaYA z@8~WICDrIi6)NzgL&`rj(3Vpp0q)gHV+rq89z>bnhaY}Sli;Bs>97Qk1xd|wtddSTEG=>z zKg1SFlW{9KRxEiAON*hYSn?%HYwz|p$+Z2BntcCI+xSo!!}ul%ZVr-~mr5zx>nJKv ziiSH<1xnG@ASslhJ&vL&3f%8VwHS5E{B9}b(P}jXE2AE*p}8?lslG+3_Gkf3!Ah=` z2hwBG%mF7yEymNaVYabTGDbBjFyTBqsg)H|NqHTXDGE$-NGmKUKtsy$LX5p8K@aC6WU%7bzbE8k)80A9FbnX>DwTY0PI} zph#0_tge$9*A143z(QLZi;NrrFy4!#$|zMF{J>ob(h{OIt(~1>7gN*PJK08|Iy8|2 zp`(i#XeYjF?$qMSyRzJRy)=ZXPR9<4UIzy(qHX(hsGDg&7Qd|A#$|%-Q zH%se@LZ2fD%(|v^w{()QMaPn!Yat@ugHI1V?MfEbQrhaOM5*qU(X?K{M%A?5Epq@P zX%34il=X3QnP0Fg^le5$Wu!ZHOuGkUB%(g9S{75kEN0cR7)|Tv*H{}Jkn#SB=vl6$ z0TLH{1Erim1~uy?kv*d(v=#kiF#1A->KH?8g!)-ALrs`g$S|kVh_v&RMw>(Sy7S#k z>}ta!MfcRSOsA6x@exW~cH2minG0y&?xQ1{Ge`??Y8TAYs7QU9Pt&p$uSiiNV6>AL z^m689jABzmMc5omo3^0MHjZ*OI9?hP!(_rh^i9R6X*q5=P0MYr+^J#g_6DUUHe(YF zG0+~elUk<9l*zU&wn;v7$M({+g1%^eHjiU!O0dgmTA{lqY1&i^Q`NK%=;70w^g1oHd08e)<>^;PHBY5+4T{HIp@_Pma{I395i{KdyCXW_=GvHSd^abAA5JkL6IQ${} z{}{oDj%-8}=8sYj{R8DgqF(t45-!OE_pKgXkM^J#-4XPAJ>kZIi;#vZW@|vxZo_>M zmoh!(Ltu9SdjoeDdK)uV)1F5GAm6JKYT$g}Zxi3*=`aGqvFT73Hx~c=nlTVj_yzbE zi(tk?c0}a$w(W|@9~Qq7k)A?QSe`{z-5Q7g9;<{j>ni;BTle69zl*nHqA+hf>q>6~?DvORCL6%&i2u6P2md|RDEv398TjwDs_@^m*5kj=dK~}5w01Wb zVD(0Hw_XOWTOZ@U$I?OcT3ztpZw(#U;K0o+@ z*Xjyr`{xHAGOY7SJAUvcuQlCjXqC4-+~{iPvptyU+Ro(COo^T{qzUMC zKs%4@L47m|Xx(oNE7q@R#{_K%picyJiJ&pHLC^?24Cwg-td~~^?FXc_za5S68PM>a zdi(nUHxllli(c|0;id71LDs$DXv)YQRtLnIH30v0YZCr@ta2D`Gs5fe{^#pKTYZs5!(Y?__tbYR6taz-yx)x5Z!2qKNwR=P`v>9TJ1Fl&! z@c)NgYpxwFM)ZBI^=m}`&b1ywbUN317SV}Z>u-p@&b3Y>YRt7dL~7bUbFJZsj^$c2 z5Ph0!RU-N%*SZqr3A0m1`*NVW@{a&t>g6Q2`YaF7ta<%ZC$jvmsZ3czE z2=EesF^Q3L5SiW%tT6pDz}~<=4Qn|7-MSh7J=X6@v|hk}zx6Ku2dwY$KgsHZdzd|% zH5gI7Zei-w>OEF1Bd_&aMt*BIqk#23qa@3~Qd|#-RK^gQBx2OMh`rWzBKB)`UbX=9 zVoX`P0BF`h{MW6Y@ZV$gz}=5m>-cZBf;W)mwMO!G$XbB^^)P-b;;ZV{8`fh0R@L8P zSO)}fn_-<2z(&JLz$CV+eiO#005%)eGy!ZetVIAC>bDx!Jp$NfST6!tQ@_KoJ_c}g z{Z7O3VU}B4zuT~S3Sf_6WdjgKO8^L?s{yR8-)mU+3t*pN{Ru!r{eHvxOaKQAD>9Cn z4;oe<0UR={$pScRSPKPk#ISA#aCQAr!+Jsh#|-Oj0US51(*kHTtj<{5uBkt1SeXFU z)}J!0A_4qhSXT)E)pDNz8obu40$A&{z5*cf9F6^3k!KzcSY5x)YvlrHs9*23E)x`# z;#xsL=DBAt^86U0779l0HJU;0HJWXpxolM?husQyw+0y*3@tG zTHH++HTJbgf~}Z#(pGN(4fUJ6)&xP>?6u|s5Z2d-BrxA6l2Dn?3ksOu7Zfo62tY7* zZcl|b23O+BP~0Jyq-D=G@W zHTB!P7IzM>sXySg?i5LAuRVf-M)??ksGo?AvULUlSY3}UF%^I?x=aA*5_bYvQ;&Av z1>ov>H16L8u)}Me0&q?JPOsG-EA2J)yS>(60Bh^f%F_gJ*t8Z4;D~AcRsegv)@}gn z>-T!CBLFtk@AFzFb_ZA0AM{#10IaS*uvyR>NlI#GXSox-(p(t31F*f{VafO zrj?Y){OmBTECK8^txE;4+q6~-V2^424#3*_y{7fN0QQ;IhXUAdS_ZcGuB|^{TFC-9 zXj)?cTvLC@wB`V)uix*rZV0eKo1|%*US5OL6hMuKHXwBbppP2={-V#C3h3+O@7@q;Lc<6@fO{)>m z_9IVxl=gKKzQ%Qa~@PeGB(H zHvsx*@Akj=th)i-RKFj2c@ofe0lg0B@lQ4&FGmQyvko^R;as>*0S&xs-~9QyW1)(D z&`L&(H3t7Z)*}4(TAP?+y^8;_n#~)N3`$(0)fKUBornJ(Ya0F=TBr7(qEV{>hY!*t zmmv1*-fut({|W!DCVg?_4TwySm#b~Kg?~2_j|->dodDZ*4et%=eE{_^ZwA254*=E@ zUctX?ptyI}#Qk~~{V^ou>sFiKo&U?A+==DNIw#K`_P#>81NlxN$$9?7PUmXcBV;?b zJn>4viCChn9_3-Pdti-*4XY<4Du4)GDUi4lNIe!HE44iFW(D^uPkb2g0n&SyhrO-@ z(jf3QkRe!UtUg(ZKc%7@Vs^IrW`#}frD=mOv0CY1;zrg?N@tXJy$P@|*Y7q!ll+PI zBH|$^tN#ptLz+yC<)e%LE}*Ycd0T-#05liXW5o;9F>ML-4@kWmld08Cpug=S(e?s; z1n7B~BCQSry{fM?+DV`rfIh<1&I0`hP)@8?fQ7!xdl&exKG%xQ>&9$(R((c^gRIwfe4w`lYyXj%S1;WRic7yPeVIz>Cu|S3)Wv61x z1oEmvvbx2F9aYE}AR20&Be~rKAl-nllG{zxt*`+=gq?zJvHlT2Sc~m?is~N^RG3W> z=p@COD$wabMLv2F)x4R|Z{829{`Pn`TxC~Y*kd5v4Y+*(FFU-&FUmj6A#zo)K|cBA~2x%wWNNa-Bw ziCG>u_?<6CujvMa+3GwKNQOdYp`%;?gjPCV0%V**iojN=*h+w0tdLS5^A%DK znT0^+(@q7D$5W)8%Yf`u$UGp=D`Y;9mlaY8s=Foh?Et{fDApXFCtNw){YUNE|r}4;FXQa*nTc=6vEXAe*G6G_YR8F2SJJ!m-n&#e)>qC!AH21h7k@c+JwE z)WP8sQ7wF-8I~t_b4bk$9|^J90K58oG0N!LCbb6fT_AT2Fbm6Em_K!e3k#&yyRZ(a zs}zQtsif33E-Xb0XFJq^l=zMJ5$HB|0QURioSIGC3j%Ku{P9_d9|Go0jNh7(xT-hq z#|gJ92#dun*FxNK`P-wVE(UT9kq&5zaGv&k17bEGl>5&Eya}qh#c{a!rz+IGL7WAYw_@Gw8^rkvwQmqF zSEv}5n)iNYX$*+|4z&RvR}|>9U(uC;YPR+Mi5%Af4#bUgY9{Pf5W1qEaT8JMJAm{e zg29-$14u4P5SL%x^?krBT3o@GfF}9<&mo#a&TN=L4eg4=D>mGG#3g#uK{oG4dLXW! zV<)I>NO>xSe?{Se%%gWUz=(aI>E3w+eb3}8>R!a3c%SCN_pSof|2XwC!Z?`}HE zHSc{SzXWn1IoTm69s(g3B}l$LE9^tST$htKWCg;$2GSPyz{&Sy1)Sw1`Qh^318`%_ zawb1F0Z?{WvBF=?^NUraFQvqNfEJzz*aL=hM|isfG*a*{q9X{pcL2bi%LoR%7XVIs z1#lp_*5hQZ&sU)E4nO%3PgdWbfr#8a<;e>4?TlOW>mil=60meGUiT7P>_K(me(zQw zy}{C>tCz1(B1Qt%y$=BFIh9}_d?(=F0gSje{6&C|1MImt{560)fE7K)`zFAM17sGw zp8-ng5&ln5{pp&Pn$(L?AT=Si4Pp-0)Gn}{YAFmi?S3u%CJcD70}&>sg4IYh+j!G) zlW%?w*x##@Q{1qhK;UCXuLSfnBSX^`fvr~;Aaj7QpZ7`xvH%DhpjTIpyL#}%fzqo( zFGdNy0;$P}zn~}|s!|6j3?s;!dV#_)fc&Xr6o&B=m71$C44**i#R|jdiBBz77#6h- z_L%7lk{O+GcRwr)2>TI=`(uAq*S~}Dj6VS;{UBnS?uo&>qJFxM$^GXIu#%%V7*#Wvfj<*>@_Xv>vK^vrWsgG>+%H<&Sr-D3NXAEsQT4RtB+?E@* z5}44O7u1|b&BLBR%03#(<0LTbC;a0qpyz!`4d*F)X<@){>6H)C=3HGrpPO;VC^`2h zl7{6bG7DyHKaq4F?L z<)w;W5eVZq=ojeuyvIUZAYyHVVpAXE>QxVez3mV%1=+QcDp`Gyt5?1Ww%%mBMb~2z zJnqfTDZrf8(ncy7^}VNF*#>V9r%?7m$S!Ik`>~UJ zrNlv7-65%NiDb&;uBWK@H)O>}sp6?mOZCcsp_qSQF?q$j35no_Z~|^6ojPhW1sLzB zz{e?TxcVekeGeO03kG4%)NOlF%FGt<^U^E%zV!sn;hs;Ac^DEwbFaD0Y1vBXkP@!y zITV6;Jk&>X`&9JUIQ=DR)5a*SBMvve`4C+SH#jZ&)ELF5zGBs@v?ST5T>M&;O3z0N z^3p3)ld#3coM39#W8%@jO#D#we~+io5DalB|zmt<{I((=cE0(yId9 zWPP~!wJ4RYzGc;`hJi0}7$op)f;mvkhvGnidp^{nlz{r2Rj;gp;4}(mvFu|}gkVK3 z0~YLh_W=8h6`7^;m8h1jlvHC-@X{-HQV||u^wDpry2#e=6LpcTxYVbtdX?`ya2J7l zte!9Gtw=wI3bZkbM}5GmS9Ul@*4sQ?AD4(3OUz2+rYcAqqj=T#qD1R z{d^EdCFv;4JD~Q=1^O5LSx|9aO398_I;t{~W!^q)EpLiXeP5?n%?7{7n~NV)g4Cxz zjMFQx1z#+)(#Rh1BXSb#5d)%KJwnS?Lh55U%&!zY&4T?7tfG2P>tB+nWh<_Om>7BK zm5(sN=K=Q@ireRzIh@>M6xU(JUDfSeS>Py7D-){XJL>QkfL|2Y#jlM~>Bk+urAlw0 zHNA@Oq{IJ^((B^avQ>HpW)-`1-?4Pc^|v*O$1@XrFjs0$arHb$lIbNJRMy?t8KtN0E${7)#oE`BXa zrK@k}^vd_ZcOy$U2qlbp86^yMsy3KXow+tJ0~lXM>SZ22cnnt``YBz38^Iu!`MDm9 z5L{6zNqvW>S5EAS!#gy08O?2nM9|zpw>d3a2~9-~dFhqkQE)z6g74%-yUq7JWVeLk znyI*}o`NZ{%wN-5jVV6$v7cVW*J7e2T>M&;N>}IT^vXbrruCuG>sW+7SpI`W;QM^1 z#zJ5$)=^C7`vv=WF`e%fFqg&Nb{$ry*|A<3Hv$SiVqI>4q^Qe}JY7iC#we~O zio1$$O+{UP(OO+9KJ{sqUNr#xqAp$hTDD48A4KVu7t-L@%*9_+F243`ByrR>mMR|0 z_(&G@M-O-M>{ZM%#41)#h9O`OoziFU=+$ubrIyy$E@d7h2R%; zNT3t25lDDIvZB;H6h~M5pS{IvRnBiZ&@ZUQN|wp*qy9V~#$hfl9|3+_+Ur$4aG2*%3$SD^U6xmFAv7X`Xl_&o%hu z3$8oBN}_aOqWdKzQXyKywZ8)D_xtt`gen2)_;CzfpMp*@UB%&^AXnfOmB5vmm_i z4AqFL+mI)C_(-TlDRK2B8@fN#TtPKUe}S5%hOI`4t1q=72;X761?zafsF|3g@>Ya zOd90D`;8}B{qAACm88q4S7J=zbrigf=F`)F)(tN-%FG!*L;ubxvjRn96F^^T_ISWYs#yo+Uz8*F+_B$`Sqv!dFr_ z<*dR=$UjV0Qq}pGcQ;eG``LsiDWMLIa2{$)F=eiyjvhMCXoc3JO;SSnj__g# zKV%Ds7DNWr0UB+hlAZ17cosT7q>fab$G<}B(IzRO`Ht|vARIeJ2!|GA25`eo?b<{o zyUfvX0jAX1)Y0p#8BjuN9pNPq{6H3Ld$pCfz)gy-7AXUu>)9;i)JvWFZUFF?m@ z)Y0#38JMVqjyb|VL-;ES_t$xtFLWlfNlM81qO@`-*3k~*gfOQ4KVhf>3xY6OJewS_|qA_M9yrZ!2*s!z!D%2m*jHXfD-^2N`9&LL`2 z3*Q39A}~fZcpm{6v5-OqSL1*0`F7a`_n8s#G~|drzpe&db(2< z;vMvKr<)T`LiUGYMV<1tFxT5Vvac%a zcif8q2Qc=#zu-ft_DAzI)*$X~4dU+3K-}FKh@&%b$ALGsuw{3Kfq2zA#e(_qc&i>X{|b`b z=83z_6L*^@?lw={ZJs#Ha~DM1kP}aFWruhMI?s#9j+u_^`1`mHJProoL!|U+%fl9Y zwwne@pJ?w1=Drkg3SONDbAKAz+_@+2&OLE=?uol|Pu!h*;vBfec)vMiu`uWJ1kL$) z-o@2c#NFnIyUh`InQzcXo&)JA6&dcf@#&+cZ1GnVsj5owS$06^M=2oda2Y4}!us zC$TtbrT0As4ArW|_9XT-u$qy;1{2dKN=}@p)%ym33C=8F(=A|pMHQQ?_XKF@ea}~v zDdfHc*m7!`M(j3V&l8)e>#=$%*%2vDn^-?Ry6bCa`CL1#|MC%t<~N(+uzgV&8J* zq$emm(-Qj+S{q0m8nE|>Wh?9`_2((Me`|DsC7$0QDF40Xl%G9f3w^ z?f>l6w9BG^|I>)Q0Cai#&^{ONDDVcn<`l;9fuFpE7Xw&DVSHN#OIHBBk*F>#tp$1q zQ4cNI-yxQR7Fc1lpKjudrx?JNH}(PW2s7w2Je|D(JmH7EPl6o&JpOG39(8-l_^5TM zKc(6;N7Rk5m--wMIFCf#gn^a%mcnkuu+iG{O!{$<`aTLbJYi@ET>N^UmmfWo*AFtb zvEcvN?QD3DjFq!w<>WZXX+x*lOG*bjR<3!sNc?R4JV47!dHuDq;Q!|Olg`4QflA@E zTgH22JQ~wXYuCC?Hg&6v_sKZEb8FlGFJOp zK~9;TX2*5EkiSv##i!eH88Tib6%Z#xTn@I7Bmbb zjoqXTLL5R{1avKpUE^n5YzkIa7lcHFB!q4VJrGz;y%2gMunL$R%HaKshBp+#2ODwR zv1?fMH7tV~CVO$P4zIsN{_qwq1NMkqj-hAevGyvhKV zBg~Vu`G~6!79!LjEJj$0a0SA0gcS%Y5h%M##tn$CL5RNcLeDEhS7b-jE!lt7yEk{w zJ1=QM%{{jlC1(1nJAZ%j^7OafUQ<5y+st!6-Sg70-5LI;x3?R&?c4L8nB`scRMBI% zx9@w`wIdJrJ^9l;cgNj${;oquu6pUxH!uI9=AE0r`QzM46Yi`j81&D@Gfw*7%vt;U zfji%Qzwq{ZC+sM{cl-9EJq{&4G5OYqlg;YeFWYr0(0@%itZ z&K#B<(Q(d&lkWbwLzfLdU!Aq>;-}WmSu$b72N(S~;^Mo%f8vUapMSmJSdTjn#}r(B zL-g85_FTBmn-o6l!}EWf)MnxRkAJ^tlV{WBQL(;9jhTUrq5m+i}cf9}&;Mt=OksFxyM8JPZ?*zB~6e80M7UGLcN zHgnPkUHJ64E-!4qpy-14Z+mFN?AO14`Q^b!^50)Er{~30pYJ-f?cp!lCB0R8?roRt zf1=IYBRkiB*8Q^Yf1UrzgN5d%?#~TAeWXNtw14W%x2N`=b$GCag!?rR(S z*^g7+8v0{>!$Qx(Yuly#tE}tQdarvEHa|b{&gVY7=!ZXDU6Fjz{&}f?J^AZN{Z_yF zVA6)n(cORk+s-?`J#yeib70rEm)z5J!IqD!J{+`f)q{K5o)hsvn>l~zG9$9rC6^cc zSs%J#=WF9vUzmH#vENVXKmXa$m)=%+!xyhbYHxVod-AvO@5S7H`~3BD53IxNz7b(7 z!fu592!|1lBm966g&~%JkcKcEArE0D!hD2f2Pq7`3TDpck2p}XOWFU-0$VZrsP>oQJupVI(!Zw6G2nP_3AT%Oq5s*hnLdZZEiI9&l8=)GZ z9$`JgCWLJWdk_vF96@MA-~<#vNJ7X!7>SUNFdLy7p&ns9!a;0Zfa0|j_gdGTb z5e_08ML3Dzje$HuG6GL4jYgP?P>N88(136YLc46vxtjJcCr4a-D^9#KCrMmaooC}0 zo@3);n+@QHeQjJEd<6I^CtY0Pj1*$-PVwSS3-z_{Cs2)VtBKzu`NhFB;1%HGCCP3W9~XCOh$|1WPmZ+l#c521-yBTnOn<1iK(%hNyeDLN z@5{2&hxD=2#hx(06%rR)&A?Tb>LDYt^DEp|=C%%&a{jai*bGwuF)EE)RcY&)h z7dz5U|3UWQd!_!nq<(R}4g8nM`dBFWhsi!84zD0xjRCQ#5By$PUn?cQ8Z+W_71D>J z-Fdwx``q2KKDp_^{LYs4#U?%QZn8Z)47JnMnE0E-rze34mpG%1cuF^cYT^hlz;SX+ zjgfOiN10AvbF_EBW*56U#Fc$<3JbWp|9ufpElgMW5vT5etNy~hPo{U2bILk7h8i&@ zcqPg5{#~{=ccaL!+H(o|J@JcW`z@61`Mz`j6a2FN&Kqgtsy(?8$n=fU zo;XDdoK6XNaWj$WDnH_c6L5a;$V+@xf>`B$hn!E3b;M?b}(7F?ApCxGbN_{~OKp|3=O+Y7XbC3hGyLocPoS_-gcTUg9_pVs+n> zFXs%khNx#$>R^aM;AP`J0dJ3?5oPjz_MEoCldNwk5|P`wZuH zjz5-%ZN|BY>mU0A>wsgI^EKxP)*0t!-UG0{c`w3o!u5vvWf|E|Ip48;SSGd`#{&Bs z*A=cktZR-Zjybjq+n(cr>lo)Mj$O_%95WoJ>^mI4ocB1_a=l^yV;@!H#9dFQf)@3} zXIaIATS=`BA)bu53QS< z`QDiim4a61d)7SGIN_euE^8w%{@{n)^*43fa_0vN+l={l&4?SGdi|k5)Z!f%E&Mts zwdNmxz38L+zs{&%8#(E|z3peLNqqd-jWc#;-ZM4r_RoIbFZRw=%O1LS;L8`D`0H1V z>4#%J|L*6y&-bo-(-@l`eZ%T*@tM`%4F3Mk2PS_3deqvtN{=HR?!9rtTa6b7z64zP zmi74KZNEKIwq(qwUjhFo!e_=;cQ+#b8lnG^i?kDnw?F6o;I%0m_RQM3WJpQUhGp~H zeDOia%^zQI!`->}eA%h{_Ggw2`aWvCb=S&HIe%V1Xja41lTJl_u=a~~OFehb)w-v~ z_bvaxdaUTufvt#{>viooqSpChp#35D)V$j zm)APH`hB0u_|MyKEf_x|^74e37w@?An%92X@%wKUCX{ww{^W!lj`_je^HxqBKV?JC z74O}9>Y0l_-{!TwWc&^BX9zzav@`M1H^OiPco^0$MOcKe7U50=dRpCw@DGHq5d7%m zoe}yXj7Rtt!UBY=5N<(u5MdX>s|ZIBzCrMXVJssIKp2Z~5yE_gl?cB%$oJe^6cmUy#2yY^Mf^Zrk3WK{V0)4ZOL7@NA zc?c^IZbI0M@D#$I5#B{;L@=UI*9fTy^xi%hp#otU!mkm2hwuc#>jFNs(QBB@F%LG8 z#8XaEJ-rB%#H}7FNcRpT(c_yW@e~P*%FiG{;`tIO{}iZX=8_{x+B{R6rri3fW~;wc}gi>FIS;!zVxq9YBG{@&3M|B)P(aT=errE*|5Sf{j2)dI&+b1fRaplQcS$ zgD#$BLd1hSQZxOiP=;Pvq#F9yAt|oC!}TgqlGY+fE_$LQDI!>L^gTin9g#@&+!G{; zdxcUk7C1?Czb;91utXBwN6Czj>1~tfUPtQsND9)Gl;ooCAqvt{iqyq3gd`mw>gDWxTAc-dwB#Hhe;!6OPJts3d*;_kEH z3ido6YGAAIfP>dQXd&gVhH5g?{i-C5CUsU{cCw@SfLAkhkU z;X&dCyky>_###*c2D>Fg&~Qc}9{D;lY;|4K}$XUE7J~?}{@uO%j0|<(6Vc z2zlj*B2@h-#}lE_mBR@?O4i!=87T)?D0$^PB2>C^8nG`#{VKl@!;#)v`KN-&s~(}X z`c=LkLfKco9zvxn9}l6@l~0FI>B^TwsQhPiW9~!ef16AXrC<4H2$inuA{+{luDl?Gvah@zgi2T54$4F5S6&dxk-669Pv!7n zEz8%+{Ik0^6ypjtzLe*IQ2A4y212DP4+C`R)mr_jlTr;K#$OWNs`3h@Uwy?NDqVfO zp8_4N*;n7{hf1$Mi+%MG{^$_;)tB_R8|Kww{!|~uhnip27w+*P1Dqbz>M}37IDm`kjEqK_DWHxPt z|JAqCX*Q{ae)Vy5o}J!8UVZNzs(k8`=1}(^>RaWZA;zcrKsc0s^$l>SboH5UsC54@ zyI`TxJDepwMW)NU(-!roKC%s^Uwua#N?v^<8%kb%1{+FVec~EQUVX(HN`CEG%75Eg z(zl!?ou_hmh05Q)v!ow7OZqXHJ`^@uo8OY~48<#y{fx7utB)^3$*b=xL)EYPc5((X z*INE2V0+0U-dF4T_c75L4&#H3ta|#i+OnG3^y1RWiUsN8@~2IxES_7IKBuO*vh4Dz zntADkRf}p$%F-()7i#HQ)z$MWN{Z_$sut9y&nT%XE$drcU7em?wVg-dJe$|}?IDlV-lu34HsR#iZ4`q-*P3rag~Ut zxyjXK3&!P*Dg3Wx&D~r@bxW(u{`+;3T~$*yv8=SB_lH}f*YRa_yHb zXa6e(uM?%%ms$Wfw}X=qznXi-9?Kk7Ss*sUqoT-31m;4YD?j@p|U3y^Ce_}t%=1YQ#qvr z!((ms^!$n?W%EZZnllHPDd*E-*7U5}+Oj&Czj7XN$(~qPTvk2**KTS#2%uJirGlW3tBO0a9fes*1!r2GCJ6szB}v z6or~pIHsniiUmOROe!2*QNkMxvcAv?;VNG)ym^ zzlc0QShT?dMP^vEaZ(!hZQ0|p=FF*BP&T!uctI_1jUWK>!bN357B6VW<>l8@&Bc8O zQes#yYHgodwgeSamR(#@PBW-MRW@;#a;az!l?urwjWS_D^&+;WXqmCFTUzj;o4d>oP@H3S@NY%rTWxlvf>mb69H{#S7}c&e+k%>ataSE4kjbk|ACi0da?Dgn zra+~MknHoM#hb%GH9aHad`1e2=O1C}Pvcj@r+M=A2;=sZo@CvOFs{{ejG`Pf9D1XD zyODhBO33#xj^n4tFNA!wZ>PCd&oj^U?eh6Yn%#X!)qKYKl}Iug!PFg+f^fo&F}?vI z*(Thul7w$Th=v+)Tu;R@#&a282E~$LSSlhHydYZL^#Pi>Os|Fj&Gx$^W%tm)YI89%A9P z*tcNnZme?%{*NP!Z&v8W4f-k@xJ5_fN3g{Vc1ur2d!U|y@u(2HE5;+Om(hNe8E;gq zf~i&J_+4h(UFZzP8yZ{IH2#1lie(;r-5q%M(V>rOBHfT^j+Ot`Y zH&Z+*ZOv$ZrkQ|X?l$KdU7&XAYUFm(31~ink@Jl?2y)@OB)H1FV3#>4$Lx}0PDIWG z9mC`TIW80-C#UIDTUe1#{^n^9+qQ zhesIU9HGWi3{_|e_vNByb3NPicA_%Ekr!5q=JRhulbv+t3y%I|7GM|v(=$BIw^lT! z?rT8zT;i{bFuq!@V@%!b$svbtk{L4|Lx-w%M;M>bHS?tsjC zkW>8|Q#)yflWc*E`Z9gj2ouSej+9lD#At&7Yb>P2x0bVJjjf&>^BiHxIJlhMcP9wZ z#^M~a<2B385vUXl-@h(jWo8?XBIVqZkUs!4#@J3qTk`egyCCy82pv%`BZSPWLWVRU z^A{oWWKibMkg=`V1H->4!uS&k_(ztMz;2Y(#Qdy%YbHl{k~yWZ_QuDt9H}hFg`PCb zX3y9K*$dT{o!#9iNR075Z5eZsCnIu|v1k>#w8+>lk+GMNIvJT=?9i4Pq^;3GM3Hxi zBJBqySfm|7k~C4I$3&4{2P&&!yO4RKiOe5_3~55<5g~IhD6H9eSDWFOp~&0LXINZ}7jTI}QF~!f>s}oQTOXIWEGu8^!yO#Us#Ytm5?as2TH}89g5Dgvv+1M`Kc`7&jkWV8TzB z@!&gw8?M!&J6;Hdo`G?g%?wU;;SFZ-$zQ~&b7Gy~$Bcc=GOmbYj8$GV4EpA?X1pi4 z9d4RXG_G6)u%Cm>qnlre*0vd~2CVwKK;LZ^j5i1E2E>{`bBccS&6Qkxsgd_y;aDj- zI2W_a{QF8Qa>g}CN`=TI(N#`^y-?7sf0=`x0_(p(Ni?nl7kdWQixCmV$t!hZofq{* zU_F6GH*hN{pI>Pg=AN?_=3TomWIRh@{w4}T#ukNnR}^M5l7fXfEDA%KD$F~gFb{$f zEX>=;`a{eyfkz0u=?0$ga%$(Cjv;TN<$I#RO;MK(yeApxn`{n1&6J=|?82J*ytwB= zZ3=9)z;c24{+Mfa%@t@q(VcnbkUVoDB=dG*vH#8-3vft|xzsn-95UG)ItkO><-5%O zMx+>VF!-xg<|s7bD&NyaT@EHtOj8Etiv_#QY0SO+j!4kNFm2xG%1=Sp3 ze2EIA3CtWfU&-b4gg0j#SKD8U`UM8~#w)p|osucnBBd)aGkPKt*IbD)5^MbE&7s&; zV2w4dGJ%-Sn%b@i8Wnxk3|1D;Bn&6_+iHpi^GklU6&*tOgyxL6ljBbyXTV-B`TQ4(W7m7(k zxQlp4L$5J@ztX=Icnav5h|vIdUBNXl-1x{uXEcp))X8(^pp`JhJI<%gbMwsepdXyS z7M!N>wTUe2c&22lZiT`KD1mUCan!`>5i`*ovK+kz1ri1};+8tj_=E+t_1tjFunu&OvVN;+pKy$27 zh!W!_24w;>R>U~tPNcOP)B1WC$JKE>1U^G=8fV-J)==x=C&*$u!6Dbf&zEworgoOc z!ouGPaSse1>x8%;`~VW|je9|yi$Y;E)c8EfZJR8JOOY@Ml_A%}*ze44&zWhwZ5M@q z8ycdGhk}o z++1_+Pv=8NJ*=n0UIqqtItvhc0z%iA-JjlV_F8TJ3ga{mOU={hR%mYmW08qoIc6Dn ziO%+UQpm9zGb}2%yU##>j`rbQ20KkWdq%h2xZPW2cEh-UP&Ymn+mBx1IZ!Yh`ns}W zaIec(AyE-+kztOzXHdGfXapOMjNoLx%ZwBg0u)JLI3A2w`X8mJ&VO(pLKWwrV0=1c z)tV6P3DM5Lbq-CN1&=Dx5$(+IamXBBUqr7#=VDIQux-$UpO|AXZE_w!rrGPeq27Td zLq{*q$hMfPMh4JhIQRP2f;Fmv>0Y!2exn0Vie?Yq>7TNrFYO4^!Ym!{PP(I5dFDA} zIAKRmH^H81f;COsZFUxN5yn*BtfxU0Z{&qF=$}db$s}S19!$<}%ycO*>4edfjWR;w z7XdVSf_IY3o|n%jSiNH-PI&ftuyu@$<83$%{GLbavk7sLN6Xu2$C^L)7;z<%uKzs;tUc~>0wfBLm>nIcV z384*bQ$pLcrES{MmNv9aQ!bE%v>8hhl8}}pn2?mVp+Ex(Gz2JrT598ZRa8_~(T$2L z>Q$+ti@U7Gl~q(!TyYl_SE{I}SH)d)*%eoI7Ztm|=RNNWmt5{C`upzrwDaVh_nmj% znKLtI&f(s3zX#{}yo2=PoYGC0ET5Ag-;Kb%=;d=2&<((S$nrT1=z2|-&uxg@1s_J= zsdViox0&1ur9D9??LVt@El}FiWcl@$Uj@a!0!ly1=U1RR4#mFM@{26L0E&G+l=C5< zmw_%9iv14D&$0XrDE6D+QS8%|E)9x(s^xF6{IxJ2yF{g%=Yt|5%jbrmn})lQ<#R^R zO~5>4`CJlo{qV2x+XsX2ENq86jB|WJ>h;KBI0i>e?tsVeBX59!t_jL{kPvtxP@lZw47#~38ozu_P2!({VmA%H zjop;eg;if5pLY|x^H9chFBJQ3xCi@?(se;OFP%!)0mZHzK8RhL(w!Az*P?VyQ2bUv zS-0fd<xYfhdtO=63&p-0ihU>K&q@UyumQVvWl1X(yR%U2>fyJrt5Lct zIEq}MbjRVdlrL766hbMV52bt_{3iCfN|ytr-VE46xlPKFG$`dZKq;3D#V!FhV<%sO zhb41aYBvMLE(~+An^3xODCNeKZUpW{9#*#LI7P6WY-nyc6 z^O?GC%qiUrl=XT5ir;?tHT;}cx;D$NF;+l{vrOrZ!y)8ir7M7Poyb?Z4RAkliqfrx zvK}TX-6Wrjtwxs5&q6l}A48VU<3cwKr5)#?Txa`~t`|zYJ@5r0AP}*}AO1T=N zy!}D)^NgD;Kh5O148CQKej1A3DR>QjCzUP?`LkrfgwhQ`S%(Idt{=XGay{@}up9Pc zA5ywbDDiZdz8!uVeVfvqg>OQC9DYT{zp|td{vCD&N|y`8E=~0{smhWRC~?QZPhmfQ zuSYinWuG&xbQ4hG7=>a#0w2a?Sm_3#jI(~zpNHqs_bFYs<#!l^Q2ezR>n*@-08t^0VQyd8azq7sY;g&KZ$-Vq`Z@FlOwwX_zd}RN;kimbrE?^>1JUw zvb>oSx@qWLKb0;FrTycu2D>q(8-a3N8df@aQ>cuKAoSX4tcOy*27ZL{RZ3R`C&ycZ~4K9upEr*u1@*yX^#AwOH`Hd%f; zyqf$prP}~y|Cge4YoW}GMEKX(B`Dq8CLPZcP{#eZvSbWOeWOtNcSPw1pq$5krR#-a z*8^*?>sGohDCeCQqqe@#%%OFoo+L!Q#@fZ`_&HsD8opANe9mY)m@$zQ8fl&fKNtCgDe^C#-bium^ce>4u@y zJESa;xAutNex>Vy(!bqG*9xV7gHX=rS*4RNK1+P{N>>Emh+P_#^)*%L;-KsgyYA%6 z+pq$PoB_T4pwh{k`pPILZw7{LK3(kwpyc-}T@O5l+^uw7P~vNa5?@g1TA;)y-=c-C z3d;VtLg|X(apWSU%YdK3&j#2J*TOGDdAm^&cGF5X1totBK2Lq4N+)j{JdE9t(hb5d zVRs(Bocune>xG{nKLq9cor4m8JM6|^o6@zyzahWH^iA+X={8$duv@Qm$(A1nWqi)vq3g!1(oI7d zM^j2S42Q7mg|Z&@C|wuqBfkSmJ#Fy))YGbTEwBXpCZ&@%_DMe#L#a0p%DSEbWj)-a zbZPL<$WMV4&QAoYGChPh&R@AE*47(hb4CBfk$yT)j%y z4aIK=%KF)*bmyS-Lx<8;L5aT%$~-NE(vE!i9?In@-46Jd$nw)W(4|9}r)kQP4N&~1 zC|v>+zmsXo2`KRl!%qARDct~M3KsM$T_2R|dk+-*Zpf4?2q|3`Wat-kD&09K^|V2W zTfU~x5GZI;x*90{Dxml)gLHAhaiuGUgj!IfbcK-r3gowx`Oj@2`6T7m!_Pv=9E6j% z+5S@LCg9(aKMFq&2cev&0i`<+2gvV&Z-w%6>0gAc#wK`1hS zP|jOElzm8^((QokKMHb`E(40)CMfeLUFp)`TI5uv+W=*LC&SOdI9P(8`CB}?IVkJe z2$XR(1iuFdOg?XNFO>R1@KOACDcw0J_uU;zR|5|sS1DaFlyXH-uJ46Pmk%GrE>Gza zq1er(Y8*3AuH#`S@r**5eMw&e*d158A}H-ERJsEA6YNrAxza+XTgK1C%({L+QT+DDlkly(8(r8D+^7 zl>VDkx^XD=4nWyw^};sl>ruLH_y**V(se@Y-8m@F``V$@-wLJwf=br{rF~6GR}ZEC z@}TrzuF}OpiF@uw^)m%ui=RoQn}FUpfUhTiMCpd$>yQVPPTrO%?d(&QbVE6RA*Jhr zQqMVKE0pKUL8UtjKaRc$w&J&5>8hZtt7Y(=un5XHD^$7yD1P&x^g}k3_%oC)9ZLKg z;A_ZFQMzRKYUH&_7Y8N&dA^4aOJ<<--?Y+AL8&Kf9EDZrN0e?DO8kQ`h~ELFI}auP zUMTVRK#8*(%6>egbRCx84rRQxDP0ggNIhqjt{%!bsZqKD=(Qh8J5!)s|C8YxU>w|s z{rnC39C{Xt{WO&OnJIXd`X-fb9KMPC0r(aAqhDFl2cN^PSLs4f>{_AN1(hW&P};~Yg;CU$J&cRyZ>rlFODD$Nd%6-{-DEDPyF7BQ`r5l2B|23#|@~fy~ zS7rGXmR|&qVOOYh`B41lLYa>lQ0C(%rAvp>zEmjlaRWR}W&8~)T|boi`k?H?JD`liR(P6nL8WVfPa-!dT@{q`SfMOA z4rQDaD_uU6ah#`gxv&+#*--j_1I$C8qI7GaT!#{sZhpPqht4V82$VPnjNPyYxgAQp z$DxeZd?<0`DP1;{e#n58#J@@D(k*{2tRO#8>1M7{`zd%o`IAZ)h9{6Glx`G?-x2sI z`NK*#2&I1ql&%}f`VvyQ4k+b<#DT-N;d^%-cKssIF$SQF{SH<(yv{{bH;Wk*j``Z-PM*2DeC z$x1hwtnHeB(yt>>+BXOv!OwuworlH9eM%RC(w|+*l5XohvN_-Vcw*z|ZfJdbrO1H`K(_j(#sY)kb_9tx(z#RJyZJ`l$+v|1x+8zsHrX2p&W(RJvR!{j@__k`1Mw zGL&uu{0Hs)j)X;QKfWcP_ApmQ0(OwUgSAMq0$vVc@B}Uba_zf$$`>O=}?|S zq$%A7DE`(%@s|wcImB9}ON6&0Cn%kKC5=Z71@o8dbBGxz=Ve;yLAj4Uu5`sv;w*$xE+6j4Bv0vfzRI}XLJ2+DXWRJsBv{VcBpgf16Kdo!SnvrS5u z4yC?SD1K649)8v<-CFnz@g*ut65ww1aY`q@Y$SfCjgwIPjKZ^&8&Q@FL8)iJ^u18p z)dQt`$nx9aD=F8eERkPQl5#DkmtR-PrCg2D9f#GlN8St#T@e(&g-TZdC7wLEi~L-r z%Yn~PPqwmT6MO}7y0Rn{O1TX%fpRHIx8CyC!ky$ND&7308poW{%|eM&ek}^RX(;WS zG)@@hSEVF>7)pIZa1G_;7pI^bfDa(|D_tKHyB_#5^1GF;3yPm}Q2MJKik-Y&Tl}3> zx+W-gHO2}kc7@PkSD@%ROE1Q%q9i}6vDP1a*de%c(R}$bx z^l?fzcZvFwU*i&g(@@qGd0RMilTg-`u+mLHSy#rDZU{;|15nD#>qKR|^(ae1rtdU; z8)TgjE`bvNj{W%cEBCj_(T^KPEPoivK5l=@QOHp;D6xRJ6DCMRhOK5@o z(kFD2a4T|H=_a7q$*;m)ME;1<4MDkH3@V+xtzP13f!~GoFdO?CrK^B1B9|#$F%-W= zFpK;`rOScR-V7-I(&67jnH<7dPQH|zf%j5Qe%TJXarkoL8B@9uD0aheGj>BtHwf=R zmS4w%t{2MRw|bN=1f^Uj~l;9bZmO1BouI7@(H9|!M5FTV~59UmX|=J%}9%|NM- zPpNzTIR-akKdN-zFBza8L>7O1quQI_{YrNp-j02r()B`_-#tp#4aNUCDC4&S-iE$i z>G*n}7jFv`|4r~#^z}+t0i|3SyoLPZN>>P_oqSl{E0+gT(dQ~%Hk5K1kVmcso0KjU zO1Ts$^{t0I>MTfBx;V?1UwYutU%{NxO+&GtgmT`)N;hWtBT&xsu+j~|>yZbQPJT&3 z%J)JZl@#*8``=OF$gN^QhSH@%+4swP z{$R;^DD|v0CK%`AwZ0k1Em^^|(oI6??+MdWR&I3)#*}Wv^h2f}gxn$&3@9CcOZLk5 znx1D8vV|__R=N!Iu~la(&c@@H3RzWnBc>^rBS#5V=mDiusB z-2{|=8#BGUXO^Y7U`Xi(EMMO5%a);_Pw9FrzZ-I?EeI)H7vz#u(5ZACQ2e(+ssAh# z|1C<_1XXq&|l>0k*-y19`gmQmZpmh0A+MNSsTxGyV(98Rup-VS?is_S~To>0W zoxJ-+_Nnu6x=)>j$B<`~ZVJkChDoKHfb!g6T8% z29svsDJbKAC-IEJlgNYcqnz(PC~*>_$2M4kJ_s4RUcZaJ82K=AA$&Q^fRdjM1IVe6 zJeFMVI+@f#KUAY{gH=%a^%RtTJqe{>D`6F^fMxImEQU`&>F;tV{Y@Wu{ap%kkXd7r zGT>t{9X?-7o}q!A_V9JKzJb4ZaKpp@S`O2dszp!zy?mEQ8x&G28|V;Z{i9 zaa$lhH!kjmGA{0dGmx@LQ*a{;!#kji zliT4aybTV+Tj3z2j--Cbdwjidb0h3Qz5#~db+8j&3p?P|unn$fy92MK9&qLwMu*Nnisa3db=Qq`w&cJvvi;6;kBZNpQIhKiTVkY-x)X! zXW*ycIQ$qKg?|NyO&)|FMec_^un&F&_P`Ir5PTkX!tK=40hx12ZEzb5!mY3cZh`eM z8&<(ASOzm;F$};$$Xrdzhxfu!EgvpROo|FhT!Z>&b zoLk2@g)@*nRg(Np!)-7OZ-w%^54XTkm@(mv{h1DV-ky|V`N{A*OJA!}|@j^$^-b;#+EeP~jOQ;@xJ(zxZ1!nMf5 zko{OvzvcJA%aD5@`?jP`cnR!)m%=t!1zRk?9Tm$oA8O*W#40the zI%I#Ilw$eG@FL_y$i6&jZms&6fvb_HAp6#&aVY&f3geN7A^Xjwez*$u!8q6hABCOp z57>9W|AlRk=N?HdmR}EFl>UcBmtXGtA2?vw9?p%1-!#(8Zz<)>1fYUG?7LcC;e~Fw7{|zQWo}(wp^IplH zfxm!L@FDWY;S};HlG93}?tsgl|BOgLlC> zZmxbszC525`ziP%7>55r{x}r-QTRhR4F8?{LHJ7KemDX9;57L?@YTp6_ygDp|Bd_( zDE4je`!EQ9Nq!3y`+6wX!z%a-^2?yu7eiSO3gHy_`B3^H7k&@sz<(t_14=)nLs`#K z;lGfd0>wTVeitUfpOYU4#eR+pnXGg2{FZyNq$w!&VfX?Zhd(2K6pH;Yl=W{A{*?TF zDE9LF_S>)r{)GGx6#Gsn>tY8ClivoVy+Jq%Ti}n$uZPm!D)>!U27g3;vE>)SZ;+o4 ze@K3=<>$b!lb-=+$xnyRA*aF-m;xurPlo@5oCx>AIQRqd=eSvxcxK=~LV1q+ee%Ol z&igo&aXkvZNB%GzKpup$FYJfkCBF}T4Y>za!w~!q`JHeWxdVO`w!ty-gHXm>3;YLI z5C56`Dk$}q!LPt#_>bfl!Xe~*SPpaHF!?!9;?ICzhUxIDXOP?A(=Z4>PksxmN3Mr;unK;T{4&^xTnrmvA^b4;`LGr_7uLWW7$QFdN`I!q zM_?*^ANeUz;!lQ0U?O}s`Eiyn&wKA6e+IsT{3$5*VR#sh!&i|%YWecK_eGH|2S&=tEG(wLE8)dgVE* zjOP|8_18lg$7N9BD26gl^P$9(3uQcKK#40I%D7B{GJcbxjNdpYan5l+E8{Z^pQ1lT z;ro$?jf3!Y$o=r$un)cm_Lv-kvJP~@cft;n+u&ay2jSac3w$f2&plQ_X>S?)b65=D z3=82KVLlYUxlroQfvqqDehj9=zk;bIr@)UQCqua(NrWGPaqz=%jzRG}3`6ld4nuIz zWX4e3`;aN?)rT(by~rI<+T8}bAbsz(pT3OyOXM=s7sF2EeCWju--Vn3rC-wFJ79|G zli@k!I4J!z7pM2vQ&8F&hHrzTQ2LEEG>%xj`(}~*kS~TIDE-(8-vZm9^k)#Z!+I$F zS_R((i=p&yA*4-7xlrQGfv<<@Q2IL+UIde&#FGeL3q$Y|Q2hQa6u*72488{D!;eGp z*9*m8H%x&ag5u``M#ciWejRs0&UMo1t={~-_=Itz@n+*MStRJPi+^hTuKg-baKQMmS_&(!njn5f>f3MpA#wg#n zmiT*(&lu~BcNuRr{@Z4?|C#Y)M*AVoi_1-Z#CWUmdgIUTv3QMdFuux|Yn1Q(N?gC) zr2Mr}zK<*U=Z&v2K4aWvyw7-%@eg-vxlb5BW-KutHO3o%cbD3K#rQendyIc!tTvV# zcN(`FuP|O>{Q8~d*VtnW8TS~S@kZm-#(!r5O8b9q{DSe*#;wN9#@}vK`(GQsW&E1) z1IBk78;z%pTaBBIR~auee)SIZ{{`dwjqftn8BZDa86PlSYg}ji#qH|vC&tejKWY36 zy5ulRX_h}{72)Lj9tca z#!}1H>oV&vy%MJ89!wV z8RdIbqOUccH2(HR&HuIWbH+~@-)Ve{@szRDDBnvGzdMW<8(-X@`9Cmz+jzqGm~owP zjqyiu-rtKa=5I)z-@i4!3|`ECOj9pE)i}6T<&ZIGEHmaBQ;l)P@MT(V&=@iXjb+AM zW2!OE7{1iX8$-sRvCNojOf|+C!kyQGGneW)fi_CueS2WkTGa1Gv*pojd8|syp=bGj6q|WG1r)Cj5CJmJg@(ZA!E>3 zX3RCF8sm)Nh4F6;8H2_$W3DmP2*kz3|6t=VK0aZ6!s^7e$*bZ!SBF-|#|Kxnu8NOu zU)4d{v#OW${HlJ^kyWFlS1bS8e5v~zVA zK0~X!N&8lxC!Jh9MLM&3mb4?`Tta+&cR~;8aKZ@bL_(N!CSjJe^`f?m&|cI-I&je- z>DWc%q|+D8kWOAab#Y>R*TtcW*TnZ-e4ccG!I&679zPME7~h-Fm#`*&E`C0KP5jX6 z;nl0+&n0#xu8Qxutnac_@w1oBUlt$Vme`&cPktw9S7InJVf9eraN-EkXyO>@Wa1QQ z>m_ZM&=Z&Rk`7)nL^^lLJZZ-(}}XXD^#0oxd!&mOfb9 zMLM~5ige)e!OLmEUf#;TdoJ%K9lLz|@-^|JmyKPP7=J#oKXFZb@1=d0 zu8E(xG)&rlS;u8-;)gF8xnxaz_>xJ|{>ui)nO-}yc1`@b%R4DMbonspbm9zULuWKFU$rW}dwuWvRq-=d&s|NbgBZzu((}pvq!YAYVfh!YMk6$@)W%x?^G?Cq4frOJY|fsv)9dC zwqqJL@D0;9tcst%p>@Nm_~8ws z8>sh&N&HOTFhe?jLy(--4Q-^u8%9V+H;j=^ZI~wQy|M2`BDryZboj=R8`s2lZ|K>; zSlQ4)ILBgA={#xh=GL1N;|FdUyouOu8Y7*!DST66eCJJFXh&`y zy&2Cp_mK|XJVZKwb1;=zoZ3y=mwKLbGIfe{CUusy^_I3(|v0X>Bz04q*J#}lXl$}Lfe1a0BLJl zTNelTq)ZB6`G+Bj)AZ8B|D{KUq|jl^*K?Cp%jJLd182R4q7GqEvDI=OL* zv^Tvkoq2WpI5v~FPmzw^F^1*z9W$h%josJ`Y#byVN*_*N6W^BJj{V%7^LH|~?rOh_ zv2|A$>Cj!nq~mu@kPhBGbT={IJxV%pclhpv)zf#++&zobyQyyzHEbFqo!m4sXTQG<9Xj|X5HSv?%rnWI+bK17klQ}avXmf)6yKQ?rX=r;l>B#m`(Qcn1?Yr;% zee}zHW2C|RTkpr_{%+FA`={n@#`oQS{(k1j{X?W9_m7ee zY#-dtc)o8|Jh)azSvN&GxMOGsqie_9j>PyGH|tpSTsLWt>qR^JvbmRG^T5ypjINhW z^Y8WtI{5eb2l`1Ta>Kc3cMk1j)a8cw_h{}|Zesk%&e5IB)7&6w>&`Z`qr1j-VY555 zo8I3w%)h60O_O%)KDT>Sd?>FcZ&mzA{#ZWO(EXwP^v3RB9&OC)Chf`VCGF1}ARWpZ zCLPNg&r4W6lQ)|;2j}yGds_D-tUkA=b59ox?djgr1N-+3>=}eZdxrOn!0|m3d%}BY z_ns-znLV?l!M&|}iED3&bY|}?>A=3heXJk*CP_!~NAsyIf1I>)e;09u_IH!^?;qID zc*~#5XWr+BNr(0ili&GZ*Mo`i-4FIW$d%>60n(udhaX%OKlf0ufLb03J;dmJXr44! z&`M6nL+AK+??Zj0=L$N>=`H9ZZ9UL-fOa3~J+LZ%>cA}N#KFmf^x1)F@@Egsk)Au) zNlwqfUefai`$;DbhDj$6PLa+WoF#2L)P9JubLc$j(4k?{=|eMzSg{U`9pc(_bm%Cp zD;zJRRN)lqY~dVf@a3&9XI*)D4{86)2S|Gl_Z_C~McqYsE}A8sFA7q&`)Cho|Iq=` zo@2eo661%C4j*O49UUhPADui(&avTR3M|ye`NF#&f6mskA#uBAMHVN{?UHYp+|>FM;;v|ZGWueG5Y5C z^l{F>BVAbbKQcht`Dho~@S~HY!N*#$8GCH}vBdb+<88;8C&#-;yN~yfwm#bSC_P;= zQ^Ga8WR7&MB=|Vj@W1^Drdfyjh3;F zmbdfoPMWiZ0UgmHm~g z;zv)8pIj9`Sv6g?D*pVF15Xln<$NWjPPU)K=43zV=*cnC@skszou|4^5!<)NtyOJR39Ean`l`-X5oOg7(sW=Dj)$AXt`>O}4@&080 zlU((m9DH(!dWWAJAq_t{DKR`bPuh06{WLY6?jjwm9->6(bT|K=I2|UPIz3G~dwPyE zSkqdAWla}pZ%rTRNX=+XV*FIiH2TcrPHJv9NY8oaTZ5kt;ZkiztHn%o2 zmzz6DdzyPm2bu>-N1Mk;C!428=bGn9+n?@u8gEZ`lb(ONpLF=?5z>jL!=y7$&yu!2 z)AkH)c_#D>_b8VY@<%LgR2Gh3-EyJ4ng{CgFn#!_TKoggGsK?92;TA52US06`ezZmTwmSJS!-BMCErDsr{7MUu*tnOrGHZg~T&w@{8NGe3g~| zJkOK8hyTaa-@O}EPBi)J2USisdCzW@Q%rtR{NX><J5%wMs|k6C&7GN&9@n*TD>zwdVSmumW76{x=|(|=^A>T^y1 zhaJeAzk2KcSMxkw;;lFPiEYR{3-~#9a@=VC%dGs^%e8!qm4DklE#G40f5qP;#9z?l zr=>pH8?^E@cdEY4^nci^a)-&a;vf5v+5gY|s_!)Y7o`6=zngg8BF76RXPf**2D<2X zm@MyElX!ZpeAh!N_nEww=Y?Y5ZuW1Hc<7&?wXfCc?>Bq-dy98IExxy=tG_|he@Nyh z^$nYRleKTu|dCKHNTak&k&EoymCe?>c z|HUn;?=ZbHy}UF)j;C$@CYt=9#Dl+1v;P8dNqdq_|8<$q=tHKL_jrpw#q@o5tDI_b zQ7SV1J9N2MUED8@Aaj1>Xr~-+xZ<<^5r()Gpv039qKPf1-{Og5+{y7=zLqbu^78$7i8pNV-f!_$nf^}lrT^+_ryQT-ajnkA=SpiA8ft`O@E+3?b}Q)+=op4 zIoGTI46&y@W#<1O>#usVe?iJ)pKkUSNq-<`n0#m(GVyeneSxh{ohBcY^$2~)@Mu=u0=Eay>_^SM($?30>#xroLQnq=L#M@Q=dpjRzO@3b1N7^IfR*u~kf6*N( z%kP*-{l`s~FQtlHVe*Y~KB#|qAs+fo^dqJ}R;2n-({Ge`8IS!o9^Y^4_qgeYwyS;E zT;y;^lBS&k7+E1DNudRIptn+ewUDk7a1g(A52eo{VxaHU_>nHlK z>E9{W2mIHYe$7UeTTH%E;-!B>*1wxA-WjX^CpI3tSU2Q&r>%E==KpP?Urqb%d|x5w zdx=~_ze#`2nZK{w`Ytcyk)u`CZ|Vy#Y7vUs{pexr?tUX$;+MeX}cenHl6{H2(`y*54vO`js? zhw(UQf=xFTa-~$EeBjdpdI5nyU55@9oGT?-`VM zQ%wGTs><@aJ#xI&^w}m~Wam$Q2S|=JHa-eXexvE-cZKAT_bH118k3KiUVf)Yjt^RY zw=Kxl-cFPEnZC#5ou=pA`&F#k8mdVd+~ zo9QcAmqedu`nO5Ew5M!``rBji6`FqfAbRG{!u|W-Nj#K)-1KLxz6z6nyj%5+CKpTl zv45q>qq3eOzt-e^xUj@)B%Dfieqck63xRZ;|7BcdGsl>XGA&tWWrVo#``os(y><>sTj5f6nw* z%KC@=4U_*qP3;ev{qG)9{f|sPkgM{v$(M;g;wv}%SFuiuzl$F9!ioFebd}RhUiEU7 zx0!s@{5@dumt_BizfZD`R69j+W4C``JeGC{(f)rMY3N( zzJzfiN2%;rknc5lJ?oO}uLf;BsM^-RsUb6mzNfa{ua*v$v%Om^UpV|3;#`K@G z_351^-(>6E`%JD7d+Pgw)t7Ge&zt^vIsfRxroa4dt^c1)pJ(U)yC(la&Oi367`JkK zRn8ysCX>r;eEhH37uoquVBE>^0b5@-nEa%j?;R$8mVTE0e8}XdWPL$CX7UGZeW^G3 zc{~5FHaTSH|6L|;-KXV4ChxNG@NttXQNGRe@;hOozu)vvNqp$vY5HLsuLn$jjm6hv`U$xoq5NZ}ud?|1 zO#iUO_nhf(miVxLt;vNJU#H1$w)pz3{J+Zhr@s?SzSR2f^Jafk;#x{%RV){?XdW-%?rvJ%(s{f(sZ?O1&Vft6v{QRxy-?K@} z|BvbaW22T&B@Q_rviK4oQ~8@V|I0dDir=llg+b zKQsB=ww}Dv2Lb)2J64|cK!cwq1wM$;-UYmtpC4%ugXD_e{+}0?=$(Z^cUyn zb5{N?TkpSZ@+Vox#otHG{+sz~KV$kQrN1aIFF}#xS^dAt^e@`==Fd%*-v^TV-(&I>7T?EB{(xQ2hD`paeQN(> zlOMMD&RTsR-J$wlnZC`gcdPL$N0P)xeaR-@ZSmb=@|!Kb?IwRYP3@1G{CfOK`77TOr zzHRc?16tqZwm#0-dj3Px-!JhIf4b?rB|iN9o9Sjs$Fl=Oux#mkK0XuLgK?;p6Oq0@trYwY@_PmYI4B(?|v))De|TK^QM3O zA(cOF@>aV(9ya^A-Kzhz>DNiTl>eH^@|;EFADH}}Jz7T-@y{*Npz|67v-7T@)(vvQPMeDd5vj=z)j zoBEHK+{!v8@@bQkEWSTCd6UKW4wJtC#r{Jk-)!;yjmiHa>m&NFm|SD=eZ%CCtl#J- zO#Ydyhsgh8@)nCPfqszVzhyl{f4Rx8m-QR@Mw8|53L>YOyaPWX?=bl-J5-i_mE#AD z9ogUHpHcZy8E;qd{Hspof0FaJp8b!>ZskC?y0h5FWM`2j2ccG@rg5={S9^S|EYH<_Gl@{1;~HTm{ywZ0+qH(~Ln znEoB~t;CmM@+;P=Ja6{@Zu(i1KWF+GlMh(`%$dB_{O6m$OF6gVf7tZ%)*nTt|1+~s zT!@GMk@k+6eGlhG%IBGW74?gL%JfgtU!spQ{g2H)+vIYSb4~umty+H6%D;@UB<0gg z|D?&2rhl)=VUwSuJyL&;*>AIWcbI&Y*^it3s$Mt&ev)Tp-`T`CO_WiqgNGzFMjukCOj2%6~Abd?@+$bBOhDX}qVRaS;_>|cnA|5H)r3#0nKEowYG9wmP@%HQv4{L=QnBWk?tjf(H8+b*ELZS${I$v#3^*Y zAZk8b&h>GrUfw^sRCZDGqdKbo4@bpY6ji=CN|xVCS?WKowC;%~Pn4djY$|N1tFLTm zdN!`~^zH*i)n_UXR-P(vs(!k1f9=WY+G(%l6+j~ppYD?NDRKyy?16E&52 z)hC*&>uSpzmRl@UdG$0#>M5Jz0W>gv5}kL^EGeyVa;^U0Hy4Ug=8Vt2!V z@}`FBmWL|Q?mV`;s=T(gvZkQ?*}CQ?FYom3V};c%l{H!-zq0yNl`3`~J62s$S$9Fs z!R9khR5lzsX>J-9JS?emcU?_gLt#Vpnev9}%2)Ek0nt&TwT#r zWf6NpEX~+cd!nwQvSC+s)8X=_O0zmrex|;raxvq=MtPq1)-{|dZz_7WexZoxcsH(2 zm=CqspXZ6Y52#D+mVK2?DsoP%Yfo`D>vlFYl+&fBYWCF12|UJWuWZ@bL|;E)D(_71 zKeqEQCwgDuQLm2<)ID8Y`EWyZQ)R>E(lZfZcU>*To1%utLaEr=oyT@IG8WX^{@VKH zh2k$!XL+Q=lK%eF3-4^MsIL3di+O#n#cFgWq?HyPK2&sQ_o0H)!+Z7~S?nl3qXT=2 z@(<;e7Cln9XJzC42ago(Jh*#Lsh097P_T2?o`Ogik&|^n42xk#>lp&aswzn;10ZC#ud=O7`j9dw15<)SX~bH{?~GEN`yyY!B5}*6u6V zbEJqd(%ewVa4afsV7;;N@)9S!p|Y0AV%AIhys)%j|B)hAphHhQS$U!qh59j7hPJjmYlssRjDq~N1C5#YAB}%IFWe` z<udD>rJ z5Uo8`v#+xDuy@Y1PA`zW%9_fi%4OM@E{Sf5WpwW0%JK?tx=Vb~3ma>?u5BoFwCrr! z&uY|ATV8Xd`W2N&8(Hy|c)V|O<5SJ$4c>}ZeWKEHDVMqf<)lyc6*Vj~*H+Yv4k(Ms5g>}^uT$JC1m2z)&O+@(;(_+aw z80G1L2rrlwHe(j5TC$W!%ogVi%l`hIyO^?zE80ujN3T#ztuLGwvFcwwLt97CBY3 ztGc%0!n~EP$S12C8X5asNtZj>x%El87)iN_no6eBGYy~;g+(efZvi@-mW4l{dE9(KPWlU=yyXMB4%1XT3#`)38 zhPst|zO=EbuDPb7km=l1)lk=bs>Srv~!|*oCQZVQ%AUZc)q+neuHFd3EzBwD-370z! zuGXbAxcbx|QSk}cjURcY`W3IJ@%F8RVS9+9wbdut60aQlg)X?mImHz*GCFExFI!&2 z?5%sEyylN_Cp&c+BwmB;-bveQIc!SU@tz>Ba-ZjQc|L=S>#7XTm1{g%UR}ec>5sH7 zttxNyP6+oYe~kC?#htKRWuM($UQ_eLA64*axx4Zfn?JE&saGW@f{U+Qng zsP>jqZaEvP;^@wTx>MHCjZ9;vW~%bP332?j@AO25*A=ZzxswUVvZyg$-5YQ3mytd_~HcgD?4 z1imon?Ec1cyF|TGEEoE>)ogd2chb3_{t2GAven4*8DiqTtiHVIL{;fi(z&IqJzn;O zqjG=k)8#eQ6`m$)7<0XioLBFJvvx0iuyR<3fv)Iguu@BPH*PJI3B8jCCQnx`$&fA1 zqPTEvI#bW?eB~i~vbv^Hu8%8Q+Eq5vd~bc!n}&z0Dr@uVYVlH2^Yod`C(cxGq4^_x zHa3+vG|4t$*0jj(W6N*253&|mBP)3bR#8z| zvH470MRN_grKMZ4?s;rsTrb(Wr&f9ohZg2(^((yH(ZYh=SYkV@>e{F4PJ4c`w#D}2 zb=Tqo6{B2E>~bf{Yfn_xyi`G-3fc5=k$6`2k$ZO?T3+FnKFS zwOC&_CB6nvXSA@NfYaQV=TWJvHi+J z*haR{w$MuzyXzMABX%Pa!(Db}Ywkoc2aj@PA&DA}yTx3ukv9AHHq@Q*9x%q0o@}V} zhSKi6TrU_mT&=w;`tBMwjfX3F^2$yZ3$OY!ji-)K<>I#6=J?8!vb4Uuxv`RhD=lI= z1O5m@?|S4t+~uV1Z(O)4uUvz7af($?7et=S#Fd_5TUK|%d_|rj$?%rxD-X|0t14@F zcyCiua%~PoDGEwUn`>)X4Jt}coMe&^Z7B~synZ;cr(n~R@dwBGCWKqWr zcVX$lod@=m?kp-gyqGOF{-yGeSRQFE=4yzZ^@8t3!wYgfL+?r6k}A_m<6;lkTAm;7 ze472RJhHZ-EwLW3C-G`s$GYquG1MF2~$8v^0crZi#Z1t{f|EXGbM@Q@B zg4$SAS5#HqsLv_=ifum8(xNA&`Gl|U6;@oIb}}^nET-HxNJrhcw#>)P|r!%8=89r9J8(-Lp_!yN}JlWi+ z`;8}_z0a>gg7Sv0w@1;-Y-D@l<9VUX!tWf{t?*Y6zY!K|Pv}z*Z95Y4`K9mKpv1yPXYnzmzp>n6E$(&q*B;^z z^7eezzYI583m2T1GK%b)y^GFEneJWk`0b_aEBKrHbqF|56rvy!+FNmohnE>pV6qZuY(H zBKK?F)5pjkPHm@|nHN{XUl6u0+tGSk-_2Ru{WO^oO{^XE=D-U2i2A}!^yaJ_-zq(g z`~`D!Acm2*2j3h+VNKcQ>lcmBUsg5;BBf$BGooH>hE=!Kx4IY_jXmILyaxK(WNlgW z8#AEH74!j5zx;M-bEI60jq{OlSvX%#6y^JR2 zz2fG~7-g)NJxz=NA|;jukhwen>w$)6W>dLSKO;T;%HgzS-!QS@pGN|61srr(W^G%ds(%a z%d53<8$)CL?5hd*YEXE~(em2VXLevw6CGj}D%!vNu^wyDVxib$ETWGZM81mbj767G zMY1BAn3ZL&pbxB|*ACj|yI3vP*hJgD&3AYN(7nXd%*_#XbYpWC3r1-&eKi4JjjtkW z+wy9xRcK~Y7@w2l zwo!`27$p%`i_Ni0wk=k&sIk??)5P!<@Gau2$lB^#OGM+h3nLcq67M6oP_EZ+#w#I7gPR}+Zg z&F0r)HOnH%TvSE(fv530H#3HjIu7`1PWjo);QSVWc0 z&R8CgO%gP|(={_vEM~9)Pp^a4>yT{uaF5ToLQD4-9W6avx-}zEn!Rl8uwb_PX)@9H zo~%fzm{CU5QN5Ct<69jXs*82Gj+BX6Swy{9nVtA;zLiBZFwWn&KXa>Z5Wbp#r-?C}BPEti$}N7?WJNSF+nO2CM>Qr8(fAGjh{dvivX=*BrzM6) zdoR;h6YwCN>Aez&x~QDwFe?b5u0UoWG>d>^@)DuYjaj4JE{{i(fH2x zfPb-UUG5fZi*lPC@Y7`ZYBD1lzw;T0n8X|`5p{Gt8NTtLi9NA1eai$QnwVi|=VUEg z(`CRm5Q-oM!YQxA=@{Eh$eO? zp!W@Ag|ZR#vUswV$D<9;@-#6Tml-J%Gtj^a`iOd2Fqwz z<3#PJ~)6>Klw}D8Jn9Yl*qdaD9^{opH&HMlTjf>5Ji0ha!Mbyy?SN0aapt2&Gm_9Sn z`=1l9u-=d@R_t^{SNUo(Bbt~|1tR(=pAp5fII?`>@HDnV_A?6j7q?YuvE;Iv zGksNAo=U5ZSjBF0L?6{=6y7ytv6d)(cEC@Q<*Ui`)dV6MpE#GTC3=m>&R8DC!qr1G z+6ys^bSVl%G%@S7PFPm?!V(u)rqRkXw+Cc||KD6s_`KfodNhI<3Tu7N@*)-*8bXV; zt%#I~*%=Y_;#jcCw)s}(X}psVh+(9S@Kt1OUGy6>pv)EYfrx%FVy!ZwST?V=EY=xS zCd*foiN>c(BV}T?AfjFtN49SqXs9jbolvH4sX#;%Gm?mUStMD@BeC-y(Zuwbxq?2h zf*!T3L79v7FAL3Im4!-X;Q#YJY;$I$lBf|8h-hNBU*iuf#vfHaJBG%3Hlp#{m}IVO z5{Q^Y)$FUt=0_lX_Hz+U?8bWfSi7D`!RRQw)0+`jv%7HrmMx|FkL)b|5gmf{%J$_N zozIzQ1lKs^fmHTWNq{H8_~oJHQ?!EoRdho zs7SN6`qt&E2}Cr0gEeBYYzlAjt1v5~iP^Z!74(6KKB|!s#jXwX56qy;K4P<0&&CW*Jmbq2!%Pw7biGqD)M874rSzkQ<&ENg|iwm!QmG`gm zTG+T2-o+Z1%KseK@qZ%k{`EUvlcSnWDZ{ZK^Sa(R`G13Ca+H=f$-6igkJ8ejJ;g?Ip0{k5^2`ZQ#AN0nsMJ1qBO-ebt}uIhT7`rKNd0i*_z(`CUBoQ)pRLysws5 z2FJ;JdwI3{vcvo}%EO+9%9D-J{!%3vj)k)Q=5I3c9$?;R8#&A$U+Aoo@3qtZ3)`D+ z{yt+I#NX1xvKO-!;;ZESIwu>YKQC-IcH}qAGQW!xN)Mdc57v$3QE+M3jsPK)Pa*kn{*6)6n*QtAObVoFTbL%K!m!C zVxbdt$CY2RT2LjS{N5@0J|^}2UvEy|dM@9l8?EVtx-|{bRZ>Xt0XUkrRRb`DIgHUtd{Qjx|gB+qW9)W7BnLuuefA?aPj0 z4=bQte!``^n#06DC!6c*u*_Xzegjforr6p?X?<&;kG4UdVJV&Q^*fNhT#0S2j}FmS z2YpgS3HsL6HgnNovADcE8olar*L*81u|?MEgucNX>O+>v(XkTsjZ4t?=vnot^23tL z8>?%vG;w12jZet$WBv6dVzt$gv4{m<bI$=j2DJaNLT4wwrE*0J>)B0 zN(l~0(qlaJhw}J%VGs%FnMIoh)3da(vZ1DSJzKd>FAPl3!#`lx8U6s}xukx}X55gu zc&K*C>|V0Gx>?mgT)Z&O6Vk&1&ReiT{r17^?vv)}6<>Ye^_%PmUSDY4(LHo*Zvf3F zU>CpIlVZKfa~tQ~9_tPywfAL@^}A;woSIdtF7(j`8e>N^8}bq zHhQ)nQT{LQd>p!9_f5_Nuit9jLEE}Lji=JpG?k?XFg1%wCX#Ye*$ zLXGv?wj;gEaHqr0AAD$<3-WTVg2=5vbO0V!m^Rk&Lj2}>EYdmG!h+BZTnc^_7B@B~ z>4kp5(raK=##Ts07+1Dlh~BK(dN-Gp#Bx+MmU_z7nZ#U`T8NrGow{Q#iVuJUmwA!4 zWA#}q4AEt!Pn52^@P?ISy>HXhFl-g6f9ztwb*1jJ=y25ic)+<0%Y>?iYq`4<*w)q= zMa6}4i*9;H|-6&2!jt*E#{$G$0^t>r|1fzdNf=>cgim^MRf!IY0q1$HT^V$GV1SjF06oFdRF z)@Eo5ETaSp%xUp>(}a)(6G%;0Z58b>R;BW;o3OU=HK_OqGNaQSzr3tWt;q*j6|yyE z02ZpiDVa>@9P&jYI#FuI}s$=qUp>VI0pzzY6xz4JMb z8RqPHcx!bd_d5yCo;rPMVK^Tn{LLFLoLvY4>lsY83a-TVKuraeRoHK@zzoR>+)1Q@ zvidEJ>#JQ(pTXMHO=lCg^wQ8v>MA!jS+e7dBFeAg3jckBurT3*YV69zX%?(_-6wjf z+TI{;f5$%De!D;R;d0?+u2YGf1Nw$zLGs$_Dp<0mS{ZeDWz+T67HoSpeOh@l9-6uJ zOLbKk0q(?Rv~Uxhff2 zQr}pM2ekNLtyO6lSS}%gsNlqwt6E372%n8CFT0XEkZr`SP<7a-Bs^f2`&4=Cxv93P z(o)Z)mU<~-o*d;t4t1-7ap0zR=6YNjW%0V#;er(_u!P|POerRLL^KUD?s3a%!ef=C zAD^rnxq&5!C3W?c%~n~k$wJ}V*b#7l1>x|;&@Wx-bNUdMKBD$!2 z(Xz7A`KuO|=p7OHp;B3-aJ*H(YZq-nSzWN2ufwKdn!Z4-K8vNl3l>#xt*)!b97I8B zU1hVH3@E5At-;gTin6H<5)>D!Y|&*+ZiG4L1)8d^FDTpI)Lgx(AX>Yw5qqH)s2p(0 zvZ)|u?NqlHcx#NZ+=<+`y9|sWaV4<0Y?`&P4nKaeuz3E`X#Dj0+ih=bra#W&*tGuJ zZJujMoOQ8v^UYPM_L@LvTZ<*<)eL5`C{=xDpw{BL?>i-xOt8=VXTp@`+QBD0ldDWJ z*GYXzSaGWq_s#oYv#M*|Y0|jf#$ELKtSVKXkABdVi0SLcI;*li)3-52eS(uJ={Kjl zc7SQ#WX0WQ`gd)@Y;ZE6v&<4B18Q;Tq}wDU&B{R2%4-LnY))$1o0)`GMf@h_s*@#R zrdQ(^N$%J3%*-2>AMP`En@nl5eov5Grwp%?M?f-*-DQ#Eh@|D+XR3K^!p!sXvOYr@ z4l~qbJ--35@Nu6Wk040R*<0$~rgkCHLsV<4+A>TNYDmZ%|Ew7p2&$oxI#6jdc9vw*>GH(C}*~H#SA$$uiFu19xb-TV!4uXVpzM~DCV8D8Go>C+|s2`6k)v#fFFs!|-EWt)n$a`CE~ zvoWX^)#5_d`O+S0fwpGh%zQEGtYh%|aqv1(&qqmk4&vx|jxx;i9F74Gn`X$9i{og^ zy9q%T!l(-;!)+lzqV6n`jXE+RS;tiUz|)Z#oPJsJqKf%q_q4BHOe3*r+b zhC~CY4}&;FA^;&L)$n{NAU&z?#xxh@e11jV3X(c~K9W}2H4qN?XNFSO;{;zASpHdH zIF|QaINyjcpC^4iPBS*)+#b@1(_3(sej`qTyK!a>rQ`=dLe5fgz3ULX521l9@2A1| zEKXC4eTM*!o&FyPNjpYv#yPRPK7)Y2f|D^C+4I84IS9xY1HxoHBM-zzaG3Fov9^uM zL!4*f)59S`D1CHh50K@WJ_hDwzHX>IXF|a8vZVh6pZ2ovF92`A%QDY`&Wzj;VRS|) za}w|i2+qi)hFOLh=1lNr78@!H`ZAXoD%+Wmkr_2qjx!;Yd99&_I}@@q*BNSrGa=Vf zr}d1nh(V3VbPM6SI6azZcH(`3c!yLJ-+s1CpJy5*-Z#NDRL!p13-Wu!fZj zWdxxy^{+~C8cWwr#yd<=KF#x!mt7^Y^+1)52_ON{jB>;p=EditBWZHz}WM z+qrcj+r-%C*jL0!8i@{9ayqR1J0-)A{BSbKQBI>Z9tQZr+n{umUG`B$lz^~C7-i<( zWY_P3(kn2%>ziaV3XCXaW(F|G$jn2o>FiBMA$t#HFMvVcM35_)`x+=WGo$k$av#mO zfET*4=>lcbNTaXV=&eWpYyFver`t*G8D+2h5;aZ_q4P8vr)!Ny6MH&3yM8k?UV`lT zW+&G;=3CS^n^!TEt5Tb-OU>vpU#i;mPe9+T)OWGX_(`p_MjDybt}TCqY!_vVliOmA zF!3u~xml?CS17m0W*3q?%@IbX#+7Y^>~a*8Z`oO7M;e(rSN1{3-a*;r$?Zjf{eY#n zoR(R6MtFy-o;LH&}{8s02!2K6^mYk9M{6_gLv>AVX!3(NamFyL%Ebq%Wy#c4eJl}RQz1~9D_kMUMs+7E+@gm-4gm7r$O|eSK=9jQ2 z`37?$Jce}2G0evQM&5v90JD{yY5Bp+uSVu9j5x2q@EI$wbj9kHu0MUF=`V{X|FkhH^ZD1CD=+@VXRq0D;KVN` z->`hy-Hk&J>}{HJ+rAxZy<5KQf5@|@?fD7UJ^AQE-@a?{_Mgw{F8%egH?{@3%j?fO zmb-ArgU{{%c`Guw5B?y0C;Tz^6YxFoz3>6t40GZ6FP$Rz68P2dHSoL+TH*J>AB69O zKL&pSz6ZV+9^*qR7d{`p2)+bHHuzTfeeeh2JK=wif<>~{)9AhE9uoRqq1n5V zzd~sCHj2iDPj_7C+lA&mhx}Sr9Na{ae_d#H7UUn7`0V*eX9>;zfbE0Fx}3V%m}eY}s6|7l5|mpkbXNqk-xq)q;L3n%>xlnos(CDNumek<}r5l%Nl z^k<9yrxMcpQ-Z$T!Z+o^AqVw;LelF>pm}MNZ_57?N#B$Ydl&Lee%PavHub?_Drr-G z4=0otdmr*mezr+`Q$M_4lW*#e0~OLHzven-7=7Y(j38@k{)(?p0diE!>z#RJ`BDeV zfptUu%p=R0b;0^w0ndEU7Uq|EU_M#b#@_h!nO0)@>;p_3_8t852m1^<7CHMG5B{U( zm2YBTq6%koM=}{Puq62wYH}$^LuyBd-%5>Pk$=&?p-@3k7-SRwc)P!Jd*WFcVSCw`Umg1 z?B4CpJsX$be{{rw=f3^G>f7=jVY!_ucqSOi*m`)=PjVjlkFR;3tsDBnv*Q}V&xNmz zyxMbW*}an+pZ?Jr6ns7WE_mMLz5xFO{7>N7ue=5yM8?L!&wyVF&j&0%JGH>y3I7@R zN8x`A|2z0s;WJP`W8tU4FNWvHxe@+0c=jQmgWrgFP_LfRSSE0M&S4OrL?wuiLHMah zDFpEWNj|ybZHK8T7gKKmh5J#-?LdMX47$GbZt^I1UT_lZ1*K@vm(#yScwD*3d_ zAU*(#ExeyIh_`qN;!_}l_`oT;-VYL#`kSX$j~Rr+K>#CjP$5AaG%$$0s|4}MmO-pt zNrgiO25}@Iu{b(lDjX>w6+Q$A$6Uk|po_oIQ{n~;nu{YJ(GVG0`Z|WwakK!()cUwK zp~4#b@y)XqjHc_y@6_SeZXk-WU;6VT2g2wlUwjt6d1~P(2(F*Jc``|+f3@gOW`D(5 z_%&y-uTJ>M?Avh`z8T{ulV=Y{myB;l>dE*=L|*O!{mSn>==vS&V<+q=eF4E^|#o(_$JV_y~$h~R=N3@YHAHT zeEq@<=eV-f|1TD<#D7rmJ`F+WkIlzEvd=OCaiyEUKJP2>;TgID^B0c3(tRV=Fyh8K zb*&;EhO2C%T4LeS1(i)q8>7jEOP5yHV_}BI?V2{p#=UF@1G>uPtsp3L)1>&`Pg9oH zXQjHmmM7iz4NE)XOLOu^_%Z^Q`0PN$X9XVe`O~s}n633${w|zH<@^<&58>8(0f;lo zzsu+M2eyEDsV~!i#1{hk0?oeQE}!kc%x9hU*^C}Fkl`x5+yp6ow`sMvAuz|Ag7+$q z?Yz`?RhsRyUP|+9v3*y0(qYMEzR?VN**8i!O}1~8XUJn-A0)QIf;8L7Mt^HrPr@I- zUnq|P_gYr8OJk%1cqeG~@xVyC(7Y#*ZUcSW6+5Ezd}do@N*0V#J9ct7w2kokB@ zW8}Dm9|E?6kG!&dL~%}x>;uwn$SAw_0NW9-6^P~$-K{aQ14zBwG)5|bOg9Q-x{HAA zz#<^pesqS$NIvjW2oD3%l%k_GMzVpJL5cF-35=8goAB^J`FnwdzN2C&6MM^%Vgz3l=N{z8jbiROJms zod$D(+kqkAHedjl1+;(*fxT!{Hv&%qQ8&RJ;4EM_a4YZxa2W77koFt{UJUF4W&%5b zw5J0&7kChex(&8V_&y+(9SF7o@f00w1yX+ta3*jY5S1Tn0L}o`0H*^hfSC0Qt_BtY zOMwNz5?}_f7&r}B1iT1X2*e{pFdujUFbq5&m2=;m{YclW@ z@H`;bw81afjRWmG0o(#S4#XuNJO*UBbphF4_W{{HTY={SD}bK>@&y#js|2X(ORz|= z5J>&`K;}CPWPWmi%x?&&>;+B%Z2^^?9<8?r$a**dr2gYTmVcMfoZ(~p;A|iH?Lbuz zK&H#tKvn)grr!Wma+Q}J7mS;Ec zZs2j?S|FcwiCw_?z)s*hfgQlBfd_?d2QCE7XWLak&SsHr1zrJc0j>aU1ES9hHVD=L zncoWFGT>_9QeY`?F|Y(kJ;gw#Uj%#yun<@a%m=a`2@9PIWIqxDZUhE^8-NzD8pxU3 zDquH|dO4%}E?}3?oxnAq4+7@{+kw{tdB0-5TY=XAw*i@d-ltXrD}=uqcok^guaw=u zD?t|mSuXj&GGMOodB0i-+5)nideOg@0(*eWXE$&;@Hmj=b_{qquv6#`;ANoOfh@;; zz)OLxK$d3fFkjS1ZB3?|73~| z|Cr#11+NiYDL7m(DEM=99@O_k!M%ce1lezs&wiUYS}EqQKO=Zhuw9V-o{|^z z3;rGb0K*>={ET3u;B|sy1aky`^L)u9B11O$JuSS+K#i=-iKqm zeE`R&>=QWl+GlWVb@n(2cMdoK=cscG=Px>^a6IF*cpPVsrwzybo^~7$c{*_H@*G8p zV61@#8brdz@qQCeZ$h~S5!M5w<62pyPYGRydS?7>nr&?yqWQhTpNV!vKH8>oA4u1H z-k0cpP5t0^Xwv$m=<5{v^Qk&M?`L!?Gd0co9Nmv4{yfQpU(#d!(ES$isGs9sx~~dt z=8)bcH2WXAVM133eZAf`vD?m^*m{7pAa_#B_p?GSpu(8neIA)!Ae=^YVz zE6W#c@wm__z#z(?LS5+?s{w zko5r@IewtKhWf$hS3q>{rab6kq3=%9bcN90L_b4*wa|}{k34dGLdWlD;^|8zea_6& zeV6qM9cInBcE*pR-@)=g*asy3eA)+oo#~Z09Eiv-{Ec~&w5B%>6f1H$`M_pYQLx_F96#jg%FH`te zu>2vncsRqxG|G4m9lk&g(fvlst48AgMat`9;q${HmfupL^Q8Q4kobjSUzzavmWbuI zUHIP@`&JA8+ftuvh5m}zS0nV}Qhw&`=y#;NnuXs@d(b|jQvZCV!T#lxq_+?4I-cfr zPr3{7=w4y}g*=!w7~c=Q@$`$#AN=QG7oAt=hlL)_{37gep{Fu^&`$_`nE3_$eWAa= z{DS_q&=bX;Zn1~sVcM4uPj?xw2jtPL>9~;kPzGjA#%rZNJtpx#FLbxiEkd6{nsg`N zslNm|=?YALEcB;g7t8ZXDbEAaK5mop{tqetj|$CCwb&l+7y8FYhx8$#UqD){f8Gb_ zUT68h9~2s6Y-JDoZMq!tA^WJv-_86YtV818CGGiJLhqryi2DPHf4j7oZwr5)*n2|w z57A!e`>ycMN17~;3dqqtO8enYN&Wng_Je*^=-<#j(C5Pry4R%rOcVMRsqgth@1VVi zzf5Qpw@R-^(kmh#=VndJxy%oI7<%ZIGCznjPUvfxADo*tC9h+CMxi|y>iByAL(zuJ z{q`>O8)K1Ie#uAoL!rY$FF?7FKT&ADIUWky+&?=YLw&t89PV}UW*vprQq)mJEl1^{2I-rAY1nmKB+V}OKB`L)}ium#L(+TuAq#w_pkw7=Xws`(G z67=7gK<`eVt-5mc&&-MZJ7#HlbXnP|ax)3sXG%F1aoO^+Rr8lGTwH$D{FTe*FNiKK zd(#qJpnAokWbw5nYDx6+iAi+oIM6eH@OY9f9SK=mwPN9lXjxLVeWI^iakhA|^v@nw zm8?p>eC6ULvApZ`nBt3HN77|fuKpP77DBSfZe1jnY#)K>`~{1n`v0~lg}BW1iDgPD z89%;>n0FAdR^dwbGigQXDlDV4LjNQBEcqQIUO&BV+`jE5Avji56Z=`wuUuSNG1JXd zoUBf585)0FLG`&*rY2eUOaFQMn(D@S*;P#zE7QvpH(^P&YOF1VKcri4B8}MpthKmV z@$AirHtYYeS><(gTQ^NzFN+0hip#E5VI6|0o9e5!)N!$HzBwwd-qg^%y?lM;`WghO zkWEb+%kaO%H)E?=aU!aX8)(USvx5anyi{*#I)BxwmE|Uw&71v=x-8sKeRZoHE&4^& zp~?Qmm-J7n$^W)D@V_3DC7}P$n~Zywe_kdxBH^!q$@C}uUo=^?0sfPkEb7_+ODT;i zx$OymS56-B&HRH>^;~gpDdYa&n=A|FZ^q_thW`zbK7a8|ZusDTv>wE+v;WC8d7|`$lMHDZprViK;nsYNcwz3B9wF|%DpqR1?lvCMvCATi4Uv6Dag2>GN3|$N}`ZIJQ)B7`|R+BL zi~%+ql?p%0UY}>#oHJpQ%*6gE=^mA_{Uj4blI{o@+qcopo6bUPBgF(pY+u9p;*M=R z=th@@aF#9ml5U)*<=ow%5_2@brg7Tv*sgDhB1!jXi*2TsV0>&}vjj$Lmob;2Q^)3C ziLF$cMB-jt177ObHVf{*yMNWp!r3zl!*sFzt5#OtxCoo%47z{S2&C1(dAKk<+(`Hm z%+)1x%WE{JP3G#3U zh?#W%Dx;@Vgu3x^9n)CWi5B$@jfBQP^d;TDs$J~DRHt%ZL?y~UkNli5AZ7kx?h zuQGGH^JLDohy@+znD=;R>`S_T73Re0dNo+v#%lY*un(tv6+4i9N%ybn9;OxHyC3Bm z!UKGyFFbC0u$^Te1E7S(f2Uh2Hdf*0{76r{MK)X z-*5{1ne^H3>{PahioTZd+O9&_*T*o4#?5_YD=Za~*q%@2=!nG{ zH<GCei0+IjI=p7<;qCo3g{Q<`+Zk9mbY!%{lq>tmq(zXDSJrhnNd`Z}Obnq-2$ z!T0|Pi9V6F+M#bSceee%G86QD>a6-ydr7+g*RX{A-q&AWLVoprM9KF5I>+dfe&NCX z`dBTlJKO$W<7erpFUmWhhZnk{=43#9$@c#WN=G`zqs8x8X4JSipuS}Le_enN&ggEG zQu<0%)17E9OZ4f0`jYMcb>9jtWRBDDVPk?z(5LsqO1A%((br<$p}k3cY&A?balfhY z_)w5;p9bsUb#fAei((+FGumJlrBNv;QN1_!iS-B?~?wx zrB2gbA9VYxKKdqst(z)Gh3dOoMIS@_Uc_W%cKKax__i0FR^b7B&ooZ|Yq^vHaBqm` z7CW?LW1QdmTblIqJ!WPtY^} zs@R&bgT+&Oj3w?LHh{j^YNkq?wts+l?qA;|TC#lnd*8CRdEc_>Ir*>}8gtM$WIupe0d=ua(A9o@eCw8wrB-}|UN%>vxtY-rs6 zX4v}-^{w_ddpTv`{mlaSY%_p;z;<4jU&M3nFSg~nS?ZkOHBR96R2!eD_|#`Aed3B- zZ=8-^413$!onm*7HKt#4-PWRjZOupw$G~O=dH61WW+JcM=^y`f&zJ|Pk9(f!G>cz# zkY{u5k#if!c#Mx>z1p+wK44-R|A;>7HRS}`)jn+9dJi}36{q)Bd-^@acUF9-?_O*z z8P@EI>uyqIl>__GFSISd-)){18S(}SV_GIZ6=^XYCM-S=C>Q1%J*cjClU`!nzo7i! z-&EYcA})NtxI3@AxYv}0h5Q&hO&-WIw)ML8W!-_582&smtMwDzo{_39{{~*SCs&gPZ3{Dg1Sbzz^q_=4a=1GkPKC zUMD>R?1A{TgnbML+J_L=Qd^5$+sxa#>-y|*xYzI!+Z*$3%0u-h&@&F@Zed?R2m1-q zM$=Xpk9|=8Yir;=4jDg3#otndXU`dxvIipVYewJ2JsPP$(Y8c-=XEoSJfW$1)=6uH z4e!8H&I-3G`&#z3DP(#qdzLNFOYg&apUN^ujzc&lQ)fejGYzNZRx}ivF+39 z+8;aZiI!a}JtzZAZ@IF}KlW}MG#>R(FXIv0A^#lGvPDn4eewG{B5wBc6CU3bzsIDx zmzcI?^2D+jx2z(MwlhDhJ16v>JWpovrt184dEsz%-neLW-fcxSdF>??dAks1h2f*? zVlvm&6jcN&^1}HQd8t-aUh1*Qx1XPie!#YF$hSZ6iA(MGf8v56#dEIzWX+E+wTtIm zHm2c`$-d$_7mV5V2<~TdD(t|6#{TCgd_!Fm#-6d*FVdWIzs(BEI&24uUkzJh)&7;% zzhF;I_VLCZ?w85(G&Y$1E_vOWumJb3Jj?!>eXj9u^uNYy9P5kJmw1i0+tzH84(o>L zSb@qstM}@A&>mI0tH8By;+T89s!P;M4gN0Igm%n(q>dx|qZW6r?Ahr|)?wBiW=w&5 z_#Hi2)~lvJ>mGsg3Hn|`J>4U4O`|Q6pV*(o=aKC!zArKDtzua0K0-Y$3FC+^j29SQ zgLruCaQ9NBokmAr-sE09b7aSdrP`^thgH9`EpLLg4Q*2E@ncU`w3n57!dCs;3b(!_w|1~lHCZ4W0YZK}JZl4}+htc;uY)qAXR0m3P zpuQ`2S#Hn2u;um7y(p0S;0I^Tx`f9b+iLA}Qjh!0m8=IS!R5ms984|lI zUD<$5SgNp?er02IRT42wJ#NJQ)YwXeJKj`pE34s3C3+*txmc2YGS%)2Vxw`)R_06?gt93q6wk(plQgCsfaxGLJ8E&X< zUSAUzin3E*VbyQ0+b$)Kl&P??xjHVM-p!X=`a)tQR)nd=_mn6NwYjfs2;5kCqtV8)Z}B`5O?^s2}XRufg}P zNctV3E7s@JGdHx~H*5oJCei03z_V`lV7}2D=rczqd-hM%{=H{#^|~z^l zH8NF^*s^#_U31g2%?p;UoR8**EtRmva(!Jr8egbi-?@%psXKHraWe+3nB{#IP|+%kHB+6o)By?j6p_GLCEpnq!E(rlWcRj+oj zVWyJoXr&{>nI+pXS69V{VFx{4Q)-XynrdlsDuTsVLegjGbG0*C{bsjgRH4!{EUd3@ z#D$NZp)Xr~H7aqg)V-8d-mf=cAuLCa5pP*}lCt`j+>ri1QCb5#!|=FYTgC7d@VW3M z@SNve1-}};5WWaLAHD$|)768z2B})z#`;yMCCwnr8)3Mve&gKmq+$z|rS5`Z+=$Va zhdG6go0iMhH{N92|K@gpeZRigWX-#B^YxqSZ`>TlK5EsMSb8@#la?}b1FkUK$<6A|wc`D5alI8Wr`FI0V8B7bBbZh!eqm*4U=Ja^E) zL(rU)hBq$pT*Y_!yiNvnw&t4uY4vH1?#f}RuX7g*vleE~|M!mXb^jAPz86ndJHPkY z%6-p;R5+bu;F!riPls7L(LdaRoksj9+m^49sXS^QR)%R9R;i{D|m zvb#KJ%Op5n?fy8vYP{a?aeURySW#sGww5>TA@064p21P+Fvp|kJ>M#J+Zp?6dBr|x zbNe^*|Bn)2eM;9bpuw0wvAhFv{%-{)D+88K;-M>rV zpDBSbgoh5IfS=c}&rIgXPaNAO#!YrDFy7hZ|5-lM_-E3`yVODN7ym5(Z23Ez{b%DF z{j9@;M-qzu%iV4iKHJB(e|buSC$M^O_CL)1$Mtfr@9JSuKyAZ_G=@(6YlPhHxn4xceEKG$|N2@n9Cx)qQ?PGxhZ*b30 z+10-PruIt1z;ZfSH-e~W?yut_{Ih0x*_E6E--s!1wejng%}uo%H&<7M@!TTIST9k# zyk4)@v{ppt^Smf^;neOx~JKc-s0iEN zx-#qWX2;sti0oMFpx&yiYpAKjOir`=sNJX4#U8n9n<}k^b(Kv`dJkUpe+ui(&cu|L zQ@p%gDZY+hg5+=w&t8m6AaI?h|h2e~4Avc#s*oZ+pq7OYqi zwaORN*Vo0(=IW&>EcIlGMZuS-tDvfW3nVQ4n5n0(+-7~&314$X#yyN$yr9gxm=z7p zxa`%1BvWA~WK->CJ%NTQsouP06JBj>lzD;vrz9#^pfsv9>~*6CSvYlE6hx8ko? zRw=7#Q>}W37jMb`=ybIEfDM~!o6SqR#Fuc(%k+yktFC(U#^#yQBF5Qwhkanmq3}VZJoV(t%f7I5SSa zxz>O6^m*JDwBs*aq*fwY5nWWiXjxh5{8bA}^qMvNhh15uaQxf8A41I9*p>rtjZv1_ zis7wEt|0lw3&xPR5?EX|4SNmXhufsJc>dC;756Fg+r3dp%#=8bW1mpJ-R8NL#9605 zV1K(UQ&z-T)#r2fx7)aQW8!R#EwR$)mK=U_FJjlK{`*b5uuYbXeCn{)GT%HTi#X8t z25T`28Q?2~WGWJ08n5mD8abJ$d9}k=t=s1}ufk3wackiW#RcXdA1L*6=I;%1cs|HZiCpf8+0oGpX7nD@E&!-)0 zF|@0~6u*3`lvL=fi%y*-LQ=&8eKNAv8YncWiZ}Iv$=Wyh9ZIrBnmF`ci$U{@i{5l> z8DQ6L-dcY>*F{@j->|*Brn;`7x=~nqM2;og62p_F5%*n@`OstSfM0(kQ^1SCe3CI& zl~0UJTG)I}h`Y98ACIgZ&Lt1!vR)4V7-`Zh>zbyV4oMZH+ z>beb9ITq@(u&jiRj3D)j5qFJ#pA@O50X{}-z()~8K8p~`%kead^YRV&8lk+L9{{=S zML!LymzR8t*@VdJ3Mp|B&#+vFe4ezbzOxjE z5s_t^RVri`(xy$-yywV-g0+yuzF3{hoQ=8(seJN#rMPzJhM9h!0qQ{+sLhz#?}-|@QV-d6wRrZdtSeVV zqe5a&;^jBui!b&KRkcm{k_Fb{+&r@5>o9f?hBQ-erE+4c?`BMBALQ54bhdScIW=qI z+g8;Yndfa6M9@(=t>HAN60FiE{g38@1KV0@PLE0~o4bkhb=;DKu1IhIqt^(lDtVMv zVYMZX(j%-`4*GpL#O-M4CJMq9bGq9NTCd~8jz(&c8|8|qoHoRQV)6A^tFZRFQA*9} z8vKok&bIocWu!V?sVj={rxChEf~e9Ra(Xxxq~pYnRgy-Fn^vhg9WArl10-*xT3x9t zVk-3+w+5lhcD0!1sKasOE+TY?1s$txz7B~U4+*a`7H4sctIv%5F^S`ao;w4EIw7F} z71~zJwe$PBBND?%z>ea+G0+qw8}pK9XO*yOVo}WLAvdUBO&Y2FZj^pSX`7Eu=K=O-5Y)+fqp!M72^hhiyG3!QAz8mF=LOG4bf-2h7N8>t32O21luN?0e|D5d5!D&H3jP&#&|Jt>&w^I*%fQNd?-X8d+%dZs-LowPF* ztYLO>T2+=OI5+*`^z$;n#_PcumM6F@iy;nD^7<^t&wv@=`D}X`KHc$;vzBGeMw%(- z;skG-h6A(`EQK-=@|UEigPq3H^z=(`n(l?o$1JE3FPXh@Nl)qpbvADIU$l^6z;NxMfGMWk+z=4t&oyCSWml zxyVXh9u}cFw&(pI?qa+xsUEX@ljjR2 za7U^qBp;o6xuHZMzTga?_1oUxfSL*Fv|3i*cONAD{Et+?O8G3|VI20s+riX!fY+P$ z89*Q<{qGEXg6H0pjGqCmj29S`@dl1gMmF?%GS0`*n=v0pU&cBd{TciuCdCTiU-{NP zc+Zg3`xz2QUjVSbh=bQ3&GsXQ2neJNC3pkg5XW4fA zcY@!GAbVJV8zAk+Y0B8t1Au^?`VD~38>He)`&%Hk1%`%(J&zNllJy$!J4|!5ZD(hA zaB0H_#?)jr1K-c{yl5cjeK_IPUx5&0oSefr{UymvMLvO36?K>*zX!4h-bn-L$+-n1 ztT^({zT{^?Qr5{(k)HthHFzhe$Od#&hv1!|irm|me8iBn%9F#rgP0YEW_WVARglu0 ztw@s}C#=XngUhTsV@X=We~EGkq|OZG{Eh_!M(Qju94jyc=YL?>=-@D%jyQ#LJ2(cX zxpsKu1R%%zh&ysJ&cC6~10%WbkUq~CIS=P+;hhPgkxPJ8>O9v9uEWVWcCZ#O$}Yn( zG;#xuY<1LE@1Elyu6sf3fKMwz zEhEGS0Y&AY>_XhzM^VF_3E81*3^l@;kZT2aVV;K|dx$#S$kVLgQNZx;jdM~^^G{B~}2d9~Nqf;?9&xW53|0Mhv$9@8wF^->*Hw}YavM&ab zJ@)$&KqCC3c;Y8_w~-$uAI>orn_I2D>0uP(*J$}WZQDB^00_8ry+N6KsxC*Fg{B1&MP4{ ziM`@slAj`X;vSSG-C@B=2f=@k{QKAqO?ndK7hKYfzE`53E6+EU^=UWKd4E->?B0-o zQEZ+#Clw<6myB^g6UcYk7Ch%tZfx_M8q@z{Hxfh^pKvLp;g~{-qKN41`cY^^8(3JK zDCkv4$1SMI_7!e1o$oYSXQ-(&g0eW@E?Ym0#4pi|tZ_z}c_g*#o1yekDt*Fc6nnB= zI-pw1F*1jZL7Vv0=f^P9`4$Y~oz{*cKAx+UBL6 zJk4=N=9DXY4P?JW*^_6Hb&SkuSN0>2eU-A$C$|>`_DPoB^R&zwXN1j+fxYQzD0vs! zm-Ap~N!)5NV` zh>H0J<7e6SRJ)V|B;XYatqV;&GcRG+HzEFsg!op0;hSj&yS^RqxI>yV(zeye-phNt zn~C^~&?+=yd^FWrcpBmt!Da`87Tf#hcv0_p=w03XU!=PCJk_$SLZiS;LD=;ZQ5hSk z=sYM&dc77Jfqkw8Y(0-qa0)G0i!@#1y?4f2U`;bZ2aRz3JrL%8W`Qv_N3MgUJlzN# zc7=Zi;UX=ZTyTcH(mVoK(~Rs4UOMBCP==eEwI2e!G-Y>-$U!S_4*@cKfbiu)I;$&7P&a9Cf*sDf10pT3V2YSF9 z1D+=%^*n$t5c~mJ>de;>JeR@_YHGwKII~kY1_hq-5a@>0bs7_Mv!noH8 zwBa-hLH-K^cjI&{PKV{Co(J#+)Tr+rWX=kNU_GBr{ZS?IPKHK;#~?Da6X*HP8#xn@ zZ}q(L25hi%CWBOuDIf!Oj{DRCGQ-YsA6!6&>>NJ3T)@%?nQP~mmP;~>L2DscL%)M` z!p<8Z_c;bkE95@OfC_~Eh&VTho>1u3I10~1G|nn1n~z1e@Nfh_6CT&CatyOAJxG8t z7CRhtYt|cZjDzC0picdJjuQ#|hbVQ7hUdRc!|>za8Gi!sT=)y%r@$A$7s8XrH#x)& zhb!KKmP&#oA=AvF7@rqS2#-E+aS%O73w=)t@9d@}p>kM9^UbLpO6EdAA- zBZYyhE0>)A*=u$jxUzZrXTG@NuFsAA-YNwHRYa_)3%-ak(PTpUb*;-v${)vU5Lw|7`_y~0=@yh z1-=cw9lis;3;sBKH~cAh{v{#=ABN{Zs~El%z5>1hz6HJwz8$^;z6<_1d^h|lc>Z01 z!`3jnT=-)6Quqq^2KW~EHu!e<4)`wkD;M0%qt$g7`_y~0-jR@yw|X8 zOq7Q52Q+!o5p;TVdk{|gw{nO20?tWS!P9a0MfwWizaQtMSHRQp-bcEZjSY^SAnDgc zKgWcm&&ary_bAdk#GWgK{{y+DccV)s|4yM-Ko99}NLR}#R?;67dw4G(&0XZ_*o~21 zCHgryAl)SP?N6|WLpkzI{&^E5{S}dCpG(^0hc^Mz@0R?X6#bmirsFt*{7#|Ah(43w z;gUYDCpzBp7~j+fA2>*x^7y#$y^0{oIw9j<-?rUlaO8(P!$9cS-V% z{hWU!ZS3K_o3u%9xafPI=;Mu&{4a|=9JrA-`RAk=X_J2r!AYC?;ysEqr@ZO-a7NnH zH#@3$KJ!W1)E@_@q)mI^K$o}XC{NI#a8@dm5AE7Kv zQ94;|C=&O6LLFFj)uK+`Pq>;h?c{XRebI-~~*no4I!P_wJnc@LwNzaL5l{Zn^UL8@Auy zb86YW)3#l09eD2B4@@4@n!dKDEHl#Z@~jWubJ@M2jID?3hQ9DD>*?_wGhfSS%lYJ{ zpX59;x$)^AjcW)$SJ={;?pabWR1QodzF;FNbf0zYU&qlAnYBD*Orf7vTR6pNW2bBK&Ol zOX0Z_cLV&b@OQy;rtb(mcUXQ7{uTJ4s4Tqmv1Y=Tz+Vf$8J-i~Y@3`1mlp_}D`OBR z&+wjvjzc{L@sUzuab(CK4ihDonmI%eXY?c%CtMkebFdSEa2)3_h=U#xa1x~6avtS zN9GLTU|sUX5jul7;+I(LI2pue4$*Z#P8q~E03yiO0t~7JN-Qvwl#| zCnVvRewYGu@qKj)`eF8ynq!V3SdKMIaqR0DPPYvn+WPU$MCdbMBIEt|X412Z@&o8M z^L+W>!!bL3oSCwd!CgQ8DjCI9Kx&}$&GZ`YC~*Dc&19Jv-j8o4zvNEVk8dWplF6Hi ztYr3^$*N?0Ga;2sznN<~iOdaDKV~k8Gv5R8&HPca^v!%xGQOE7;wS{JU-_7cpb9Vt zO1}uB5xQjMYo>9ch%=D9nW;%uzh*K_}qYH5h$4Rvmjr z`?cT@9B~z>tk`e&|3&)$YpI|F|9-%KkI(iO;exXIEsg7|-=hCrZE0#OsNKB2Zc9~l zf!aRhEPr4Y>k4XDl)ViWmg^l<-tNjB;6GHc+T~x(YuDp1#rU&n!Rqz+oAy-fc2l4h zblu$CRIsReYjs^czTqz@t*dP2zet-3YD;VCH&?GHo7x~jak0u4T^5Tl2Y*^`s=9uV zzsu3KrTD*UP3`)o*dLYt*O)iZKN{a+e-rol>>vN{ zM<2JmY{k0k7OupAq>z zxM|_DdqhMsyg>EY!ler;o0vH6&H$9&F9 zNdH!!gVRy|-B6^8@$)Lc=fB10Aleb7e>ALfm?Sdcc(&nWB`b?bTYeP6lC;1>zR{kc zkNJ1`1HXmksW5wiC*v{Sm535XHN(bTJ{zHu!)#U4ss89`pS{~>MUm-jpLHAa{t&F$ z<@2+SB!S;6E}Mc4LlD_!w zigO6Em+3#^e+kho&#O0I>O0rd>RjrZ1QnLw(|hw{zDyM`0h(37F5g7Y9>kc67!xn` z&AimN4k}da(>GJI=MHf5l_4mY$I?81yxI2L>Fm-cA9r>k@oY3Fiad^jd0AaMss80j zS`=y!@p;kNs4|qAKkYP1?J<-v+63$$>Hms10PFwAb} z@7EaF3%m&7Ex-cc4&VjI-ZqU9etOODI^ZIN*JzAX0GW?98YA<7>7a`=MkWHokjn*9 zJ{ySMJsQ#&$pGR;5DjRIoIz)ba*g(CjJycM6LFMZqyr;Q0jcLWuo!aut{oUT3Zxx; z9sov;0GS_t0yGV{4~WlLqkA<*_5kw{&JQq{UW3NS8X(hKtuay}{6)f_2W0w1Kx{b} zouM%@1;~2N*BA){&qKUipvpH;;R6ot-5U**H!^pJ{1}xtA$=A zH2i+O?ab8}$pEsP0~#Yw;;u|Re7>cgPGA~n zJ}(0!9YE%bf9#m>N_+cRJ z?f~XP4<~nkkpn=MQ@h5=aUkO#12R5m9w#7vm&OQZm+^~s;y^xUe8+?C&=@%gWIudB zW2Bu3{(g;-W?&)Y>VRQ{*JzAX05Mk(U86Bl%5cP61Y|nJKvZ>fp2kQK5WnaQjgfpH zuak)yBPTJYWw~(nobCKcAnW^>#>i11^>zXAMk0DdW26&^w-nLC8Y2gRY-a~FM%sat z;|x9KCZe3)21Z(eY-hVQMp}T3w+)C}RFrQEfsqCv-mFLKG)Ag`v~!K%DnY&xVE7_I zepWzz`9Qo$iB8lQ2?OzVB|2JTBpb;3%K$Qd0EjpGQLn~`1;m_B^bCgCzz8>YV>&Ma zSx(OY@x~^4LSuw)v{icmQr}S^<}9OK8Y4%5c*_&zr}n_eVIby&q8%C|hk(@I4#eJ= z7xJwGCOf11G)DM#g!*>_slNq?+1Ka}jge*`|v=N^rblR(^>qum-KPXQV4I1sn0=#v^FT|kykr{F=Lx_&f9+JUr})Ap3#3&gD; z+NLqm3Y>!b(Qb`vcK|Qs{Ym561|a2YfRwKSq6?2!XpF1@@;WLJ{vsgt7i)|Z0WW|) zjERVAk(Sb*uW@Y{Nd37$>dyvJe@J5_14#YIlj2)IUdLx}djUpzf#ml9DSuLjN4qsf zo&l1797z6?Ky+=wg zoxnz52k-{qL0|*09asqr4*YK57|_Ro8$ovo-2toy-7a(+a6RZ2p&Njepeuwf1(t&@7P=6Kx>j~le+cx| zpaCkqFmO9)+J6a<{0Oie7yGNgHsDLZR^YdREx@ON+ko!@avc3#Aji*Lz*6AXfgDGZ zE(U%L$no=6frY@wfgCp<0fvEJ0dm~j3k(7O3Jd`M0fVi&)d(o-%faZIZ-vjyn1$|2J1dw(f z2mTJoaWSs%AjieO0o?)oE$|=^f6F-{6@lkf)Ma|o{iV!Rhz4W#~3 zU^lP?i2fm11pGDVLg24}`9SnL!Cc@kL5G0P00ThuFTq~F+DjyO3b+^HJ-||6H*hJC z{}*oq9tX0#Ij&v;>;nD**a`eOumiXlco293*be*|kmK)Vz&7BAfE<7S6xae>2;3&& z4Zxp(t^qCpR!I12;8UPWf%AbSz#jvPfjPaS7-6{KKHTfHQ#Hbdve%0Dcg75I7y! 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%0D$D{swr^M)dYQKxHsdA%0T=h3T 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 E1KksLzyJUM literal 0 HcmV?d00001 diff --git a/LFLiveKit/Vendor/GPUImage/GLProgram.h b/Vendor/GPUImage.framework/Headers/GLProgram.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GLProgram.h rename to Vendor/GPUImage.framework/Headers/GLProgram.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage.h b/Vendor/GPUImage.framework/Headers/GPUImage.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImage.h rename to Vendor/GPUImage.framework/Headers/GPUImage.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImage3x3ConvolutionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImage3x3ConvolutionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImage3x3ConvolutionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImage3x3TextureSamplingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAdaptiveThresholdFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageAdaptiveThresholdFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageAdaptiveThresholdFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAddBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageAddBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageAddBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAlphaBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageAlphaBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageAlphaBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAmatorkaFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageAmatorkaFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageAmatorkaFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.h b/Vendor/GPUImage.framework/Headers/GPUImageAverageColor.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageAverageColor.h rename to Vendor/GPUImage.framework/Headers/GPUImageAverageColor.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageAverageLuminanceThresholdFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageBilateralFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageBilateralFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageBilateralFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageBoxBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageBoxBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageBoxBlurFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageBrightnessFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageBrightnessFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageBrightnessFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h b/Vendor/GPUImage.framework/Headers/GPUImageBuffer.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageBuffer.h rename to Vendor/GPUImage.framework/Headers/GPUImageBuffer.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageBulgeDistortionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageBulgeDistortionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageBulgeDistortionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageCGAColorspaceFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageCGAColorspaceFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageCGAColorspaceFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageCannyEdgeDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageCannyEdgeDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageCannyEdgeDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageChromaKeyBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageChromaKeyBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageChromaKeyFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageClosingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageClosingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageClosingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorBurnBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorBurnBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorBurnBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.h b/Vendor/GPUImage.framework/Headers/GPUImageColorConversion.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorConversion.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorConversion.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorDodgeBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorDodgeBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorDodgeBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorInvertFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorInvertFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorInvertFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorLocalBinaryPatternFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorMatrixFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorMatrixFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorMatrixFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorPackingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColorPackingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageColorPackingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.h b/Vendor/GPUImage.framework/Headers/GPUImageColourFASTFeatureDetector.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColourFASTFeatureDetector.h rename to Vendor/GPUImage.framework/Headers/GPUImageColourFASTFeatureDetector.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.h b/Vendor/GPUImage.framework/Headers/GPUImageColourFASTSamplingOperation.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageColourFASTSamplingOperation.h rename to Vendor/GPUImage.framework/Headers/GPUImageColourFASTSamplingOperation.h diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.h b/Vendor/GPUImage.framework/Headers/GPUImageContext.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/iOS/GPUImageContext.h rename to Vendor/GPUImage.framework/Headers/GPUImageContext.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageContrastFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageContrastFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageContrastFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageCropFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageCropFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageCropFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageCrosshairGenerator.h rename to Vendor/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageCrosshatchFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageCrosshatchFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageCrosshatchFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDarkenBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDarkenBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDarkenBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDifferenceBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDifferenceBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDifferenceBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDilationFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDilationFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDilationFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDirectionalNonMaximumSuppressionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDirectionalSobelEdgeDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDissolveBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDissolveBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDissolveBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageDivideBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageEmbossFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageEmbossFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageEmbossFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageErosionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageErosionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageErosionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageExclusionBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageExclusionBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageExclusionBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageExposureFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageExposureFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageExposureFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFASTCornerDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFalseColorFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFalseColorFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageFalseColorFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.h b/Vendor/GPUImage.framework/Headers/GPUImageFilterGroup.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFilterGroup.h rename to Vendor/GPUImage.framework/Headers/GPUImageFilterGroup.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.h b/Vendor/GPUImage.framework/Headers/GPUImageFilterPipeline.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFilterPipeline.h rename to Vendor/GPUImage.framework/Headers/GPUImageFilterPipeline.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFourInputFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFourInputFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageFourInputFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.h b/Vendor/GPUImage.framework/Headers/GPUImageFramebuffer.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFramebuffer.h rename to Vendor/GPUImage.framework/Headers/GPUImageFramebuffer.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.h b/Vendor/GPUImage.framework/Headers/GPUImageFramebufferCache.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageFramebufferCache.h rename to Vendor/GPUImage.framework/Headers/GPUImageFramebufferCache.h diff --git a/LFLiveKit/Vendor/GPUImage/iOS/Framework/GPUImageFramework.h b/Vendor/GPUImage.framework/Headers/GPUImageFramework.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/iOS/Framework/GPUImageFramework.h rename to Vendor/GPUImage.framework/Headers/GPUImageFramework.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGammaFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageGammaFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageGammaFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGaussianBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageGaussianBlurFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGaussianBlurPositionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageGaussianBlurPositionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageGaussianBlurPositionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGaussianSelectiveBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageGaussianSelectiveBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageGaussianSelectiveBlurFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageGlassSphereFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGrayscaleFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageGrayscaleFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageGrayscaleFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHSBFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHSBFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHSBFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHalftoneFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHalftoneFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHalftoneFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHardLightBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHardLightBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHardLightBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHarrisCornerDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHarrisCornerDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHarrisCornerDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHazeFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHazeFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHazeFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHighPassFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHighPassFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHighPassFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHighlightShadowFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHistogramEqualizationFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHistogramFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHistogramFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHistogramFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageHistogramGenerator.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHistogramGenerator.h rename to Vendor/GPUImage.framework/Headers/GPUImageHistogramGenerator.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.h b/Vendor/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHoughTransformLineDetector.h rename to Vendor/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHueBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHueBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHueBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHueFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageHueFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageHueFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageJFAVoronoiFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageKuwaharaFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageKuwaharaFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.h b/Vendor/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageKuwaharaRadius3Filter.h rename to Vendor/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLanczosResamplingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLaplacianFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLaplacianFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLaplacianFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLevelsFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLevelsFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLevelsFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLightenBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLightenBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLightenBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageLineGenerator.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLineGenerator.h rename to Vendor/GPUImage.framework/Headers/GPUImageLineGenerator.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLinearBurnBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLocalBinaryPatternFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLookupFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLookupFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLookupFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLowPassFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLowPassFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLowPassFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLuminanceRangeFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminanceThresholdFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLuminanceThresholdFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLuminanceThresholdFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminosity.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLuminosity.h rename to Vendor/GPUImage.framework/Headers/GPUImageLuminosity.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageLuminosityBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMaskFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMaskFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMaskFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMedianFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMedianFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMedianFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMissEtikateFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMissEtikateFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMissEtikateFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMonochromeFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMonochromeFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMonochromeFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMosaicFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMosaicFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMosaicFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMotionBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.h b/Vendor/GPUImage.framework/Headers/GPUImageMotionDetector.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMotionDetector.h rename to Vendor/GPUImage.framework/Headers/GPUImageMotionDetector.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovie.h b/Vendor/GPUImage.framework/Headers/GPUImageMovie.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMovie.h rename to Vendor/GPUImage.framework/Headers/GPUImageMovie.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.h b/Vendor/GPUImage.framework/Headers/GPUImageMovieComposition.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMovieComposition.h rename to Vendor/GPUImage.framework/Headers/GPUImageMovieComposition.h diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.h b/Vendor/GPUImage.framework/Headers/GPUImageMovieWriter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/iOS/GPUImageMovieWriter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMovieWriter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMultiplyBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageMultiplyBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageMultiplyBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageNobleCornerDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageNonMaximumSuppressionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageNormalBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageOpacityFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageOpacityFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageOpacityFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageOpeningFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageOpeningFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageOpeningFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOutput.h b/Vendor/GPUImage.framework/Headers/GPUImageOutput.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageOutput.h rename to Vendor/GPUImage.framework/Headers/GPUImageOutput.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageOverlayBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageOverlayBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageOverlayBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageParallelCoordinateLineTransformFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePerlinNoiseFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.h b/Vendor/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture+TextureSubimage.h rename to Vendor/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.h b/Vendor/GPUImage.framework/Headers/GPUImagePicture.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/iOS/GPUImagePicture.h rename to Vendor/GPUImage.framework/Headers/GPUImagePicture.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePinchDistortionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePinchDistortionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePinchDistortionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePixellateFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePixellateFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePixellateFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePixellatePositionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePixellatePositionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePixellatePositionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePoissonBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePolarPixellateFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePolarPixellateFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePolarPixellateFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePolkaDotFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePosterizeFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePosterizeFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePosterizeFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePrewittEdgeDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImagePrewittEdgeDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImagePrewittEdgeDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRGBClosingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRGBDilationFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRGBErosionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRGBFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageRGBFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRGBOpeningFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.h b/Vendor/GPUImage.framework/Headers/GPUImageRawDataInput.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRawDataInput.h rename to Vendor/GPUImage.framework/Headers/GPUImageRawDataInput.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.h b/Vendor/GPUImage.framework/Headers/GPUImageRawDataOutput.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageRawDataOutput.h rename to Vendor/GPUImage.framework/Headers/GPUImageRawDataOutput.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSaturationBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSaturationFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSaturationFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSaturationFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageScreenBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageScreenBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageScreenBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSepiaFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSepiaFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSepiaFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSharpenFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSharpenFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSharpenFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageShiTomasiFeatureDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSingleComponentGaussianBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSketchFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSketchFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSketchFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSmoothToonFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSmoothToonFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSmoothToonFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSobelEdgeDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSobelEdgeDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSobelEdgeDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSoftEleganceFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSoftEleganceFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSoftEleganceFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSoftLightBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSoftLightBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSoftLightBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSolarizeFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSolarizeFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSolarizeFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSolidColorGenerator.h rename to Vendor/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSourceOverBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSphereRefractionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.h b/Vendor/GPUImage.framework/Headers/GPUImageStillCamera.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageStillCamera.h rename to Vendor/GPUImage.framework/Headers/GPUImageStillCamera.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageStretchDistortionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageStretchDistortionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageStretchDistortionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSubtractBlendFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSubtractBlendFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSubtractBlendFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSwirlFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageSwirlFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageSwirlFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.h b/Vendor/GPUImage.framework/Headers/GPUImageTextureInput.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTextureInput.h rename to Vendor/GPUImage.framework/Headers/GPUImageTextureInput.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.h b/Vendor/GPUImage.framework/Headers/GPUImageTextureOutput.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTextureOutput.h rename to Vendor/GPUImage.framework/Headers/GPUImageTextureOutput.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThreeInputFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageThreeInputFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageThreeInputFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThresholdEdgeDetectionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageThresholdEdgeDetectionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageThresholdEdgeDetectionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageThresholdSketchFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageThresholdedNonMaximumSuppressionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTiltShiftFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTiltShiftFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageTiltShiftFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageToneCurveFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageToneCurveFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageToneCurveFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageToonFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageToonFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageToonFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTransformFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTransformFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageTransformFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTwoInputCrossTextureSamplingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoInputFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTwoInputFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageTwoInputFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoPassFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTwoPassFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageTwoPassFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageTwoPassTextureSamplingFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h b/Vendor/GPUImage.framework/Headers/GPUImageUIElement.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageUIElement.h rename to Vendor/GPUImage.framework/Headers/GPUImageUIElement.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageUnsharpMaskFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageUnsharpMaskFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageUnsharpMaskFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.h b/Vendor/GPUImage.framework/Headers/GPUImageVideoCamera.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageVideoCamera.h rename to Vendor/GPUImage.framework/Headers/GPUImageVideoCamera.h diff --git a/LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h b/Vendor/GPUImage.framework/Headers/GPUImageView.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/iOS/GPUImageView.h rename to Vendor/GPUImage.framework/Headers/GPUImageView.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageVignetteFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageVignetteFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageVignetteFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageVoronoiConsumerFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageWeakPixelInclusionFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageWhiteBalanceFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageXYDerivativeFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageXYDerivativeFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageXYDerivativeFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageZoomBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h diff --git a/LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h similarity index 100% rename from LFLiveKit/Vendor/GPUImage/GPUImageiOSBlurFilter.h rename to Vendor/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h diff --git a/Vendor/GPUImage.framework/Info.plist b/Vendor/GPUImage.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..f0d0b8382b2543153c613c17a597688ec3663615 GIT binary patch literal 745 zcmZWl%Wl&^6rCAfg#wv0w2(q6g!e<1-LwQ&NU57DR3V{u+E7ZZsWVB2j%SP?g@|wH z53mFFEcgPJu;ByPAS7VbEgM$Y#->Qz&AoHZJ$LT8n=WU5psHW+I7IvQA2@hu(%Kt<Q z_;;zXj9++8?JyvlJhnJ59hY(HSr|8%U{2^XjsGR}ZseEs81**V_2>l5rZwU)KD2Ot z&sVBjPfwYiE}#8tu)ZKc=tVAbd!nSPv)F3ao%jf9rK~+-?m!AE{X0r|MJq4Nl+|S_ z9%yZCZn3O&GS;j$R+rkUGNWj(&UaWV)-(;{mZDm?WJ^aOuFI(sRf$7i;e6XsY)(X9 z(Ja-d#EsK&qaO;N2AphBU-p7$#G^{K(CaH#F~rD-SE=Zls?C~rqW~jd4phNCU;+!g z06X9fcn3a!?-0QftiUR4!zXYEci>C-7QTlc;V1YReudxQ54a0|!e0m=gho*g&7#|A X4LwE{B8Vaml0fiJ1~=23CiL_-sAhMwmG}g)qeBE!_8_^2wp-A7Ly_)mdy?XT_~I{BFMV z!!5b^hXpySR_uLqIQx_Oxx*C?TSGJ6owhdD+m|O4zu?c7G!MZ?`}*Qq4%c5`)@=Vg M;k3oC3E!3g0AVjc(*OVf literal 0 HcmV?d00001 diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements b/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000000000000000000000000000000000000..e2b0b718b0bd716123555c3e8a156ee2a48cd6b1 GIT binary patch literal 192 zcmex$kB5D6LGaw^BFIB-MwJbF! zzaX{9N+CHTHBTWYGdD9YT|pzv+%nS1$=TJ#M-!}v4@iRaacQ-Aw0%!bVPgXEfB*oG C^(Nl{ literal 0 HcmV?d00001 diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements-1 b/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000000000000000000000000000000000000..5be284c8d5a486ff1f0e5d65931794a8582fe694 GIT binary patch literal 223 zcmex$kB5nYf#E&_6NmzX{Xo(Lh?#+yk)eBGfdX6#EFY4bpQ~3~npd1!l9QO7TAZI& zQl40ps^=aM>Y1CEp32~EVrd>3Vdm@jjism~%;WAIkfuFWKOU3`*63e(d`Q)yU9c{dN3r~Jwcb@jwGV)KI{O+lVJ=uwd z)26)Vsk-vec~{@6lXi8|@62)@FDia(8Yv)OXL{wsmrpZi&0bZ^tdW|)^Kp?vmcN=@ Js_3DIwE)*uRJQ;C literal 0 HcmV?d00001 diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeResources b/Vendor/GPUImage.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..751b8105 --- /dev/null +++ b/Vendor/GPUImage.framework/_CodeSignature/CodeResources @@ -0,0 +1,2706 @@ + + + + + files + + Headers/GLProgram.h + + mxV0e3ySbX5wXHtFNuXmzouYzhg= + + Headers/GPUImage.h + + HUrEgiB6fAbHKKOhgpEMG/+gBtU= + + Headers/GPUImage3x3ConvolutionFilter.h + + 8dpkDAU1/CNJYbLCaopWMbtM9Wk= + + Headers/GPUImage3x3TextureSamplingFilter.h + + rmrLZgRfAct+MljSz+mZjuqx0Xc= + + Headers/GPUImageAdaptiveThresholdFilter.h + + j8TJ9SbuXJdDT6WeWbj67gedx0E= + + Headers/GPUImageAddBlendFilter.h + + ZqcgCRv7SDNUuNEWxmrvuwiJzs4= + + Headers/GPUImageAlphaBlendFilter.h + + 3+5qkq6u9LINJezWetcTsx/Hz4w= + + Headers/GPUImageAmatorkaFilter.h + + Jg2Vo6iBaPtVxTBtsPxFn2jUJvY= + + Headers/GPUImageAverageColor.h + + dm/LLHsaG/BYjGfGIJ+HVK85gjs= + + Headers/GPUImageAverageLuminanceThresholdFilter.h + + lfGX8xAQbjJzIZFxhCiFcAs7oy4= + + Headers/GPUImageBilateralFilter.h + + ZOYkrhlb8bo7XJYWCHKv8jDbGSw= + + Headers/GPUImageBoxBlurFilter.h + + 2IGx4AaFDNmXDeEMoT53K0JArEQ= + + Headers/GPUImageBrightnessFilter.h + + Ona6ET2F+oZePe4U8p1udhGII3Q= + + Headers/GPUImageBuffer.h + + JCpOP/4GQX0uEOQsJec2tEythNE= + + Headers/GPUImageBulgeDistortionFilter.h + + tLPJjW6QBH8Y8+nMB40CyTOjrIk= + + Headers/GPUImageCGAColorspaceFilter.h + + ZSc1+9LEc7ylEXYx6hfUlepSwbc= + + Headers/GPUImageCannyEdgeDetectionFilter.h + + RXd0CN9fZ1Mc2U4WEbfE5iLtv+A= + + Headers/GPUImageChromaKeyBlendFilter.h + + KE7yvI9BPOrZgZYWrjuxCZ8pVtA= + + Headers/GPUImageChromaKeyFilter.h + + NZEkB6hg/l9d0eeD8T5BIKeK/vA= + + Headers/GPUImageClosingFilter.h + + 8DaTIfa9mz8RZ8c7294Th71SvHE= + + Headers/GPUImageColorBlendFilter.h + + dMwymUIfKAFm83KD8q37++zNBWY= + + Headers/GPUImageColorBurnBlendFilter.h + + ZqWjCbNVUyVMyPHDsysdFsXHcd8= + + Headers/GPUImageColorConversion.h + + 85niOZxbuL7fm2tizONEMmbk5Go= + + Headers/GPUImageColorDodgeBlendFilter.h + + dyxixQU9GEwlWwohHx1TAxJJSCI= + + Headers/GPUImageColorInvertFilter.h + + BhDhrQlF0AE2zWv8hOsay7yd4P8= + + Headers/GPUImageColorLocalBinaryPatternFilter.h + + 9/Gb9ktJYdY40PRNmZK9G9kX0Qc= + + Headers/GPUImageColorMatrixFilter.h + + KRVW9ALkzhXgwAQQZ3WDkDENgr8= + + Headers/GPUImageColorPackingFilter.h + + WLiJEfbuwRZkJKU40m7s2pNU8z4= + + Headers/GPUImageColourFASTFeatureDetector.h + + GhE7L7L2F/nLxEjav9RYJLH+K1c= + + Headers/GPUImageColourFASTSamplingOperation.h + + /rRHQC73llgzJajpekh1DikWbVc= + + Headers/GPUImageContext.h + + crRuajGhAdPoHKDXPj2knPKAMQw= + + Headers/GPUImageContrastFilter.h + + yg9eIoi8mYMdPs664DRJY8fhCUE= + + Headers/GPUImageCropFilter.h + + GNsgNrng2NfpA6mZlL8mDRkO2Kk= + + Headers/GPUImageCrosshairGenerator.h + + XCPEj90Ghhdt475FjjXeQ17BWVE= + + Headers/GPUImageCrosshatchFilter.h + + X9+PdTNr6c59uDob6CaeLMBRh5w= + + Headers/GPUImageDarkenBlendFilter.h + + h2nCd0ZA9CpBgYaPiiCjWCXtjRQ= + + Headers/GPUImageDifferenceBlendFilter.h + + nQtt55uc8QDm8QAn4P3HCTlIsvA= + + Headers/GPUImageDilationFilter.h + + q1iT4ChRTeumN9ZpE6+lI+p82/E= + + Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h + + YvyKHTi4RtM4TJCczJfI0VXbLpQ= + + Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h + + c1sXRuGi690fcxh8OklQ07PGtJw= + + Headers/GPUImageDissolveBlendFilter.h + + 9F9Ov/HWqsMm5Xt1IssGPfrl2mc= + + Headers/GPUImageDivideBlendFilter.h + + RXn7OCQZLsvKTHiJbyHU79mrDKg= + + Headers/GPUImageEmbossFilter.h + + ihJeR7pFprPC2NrkgDGozQBoSKg= + + Headers/GPUImageErosionFilter.h + + kUdV57f6Lqf+cDNKhffApoWk71U= + + Headers/GPUImageExclusionBlendFilter.h + + 4gszly6+sRU6I+m8iNhlXab3Muw= + + Headers/GPUImageExposureFilter.h + + Pq0OBkMAQJfsz4c7axBaKguJuAM= + + Headers/GPUImageFASTCornerDetectionFilter.h + + y7bJW0+KUu7jyhck1iuVh/dMRSI= + + Headers/GPUImageFalseColorFilter.h + + FKHtRA6hwN4+v2+6syrGRpJs80s= + + Headers/GPUImageFilter.h + + RfmKJiQmvREjYI3efESP44q6HqY= + + Headers/GPUImageFilterGroup.h + + ci1P1K2/aqZPFXVlXh7s4sCxiDA= + + Headers/GPUImageFilterPipeline.h + + g8OwgwDaWscuTU8NSvFx3mW3Kyc= + + Headers/GPUImageFourInputFilter.h + + wi/A840uTQSq9r58rK6XxY2JrJQ= + + Headers/GPUImageFramebuffer.h + + IEeW8WJNFRGkd+ahOeP3W132M84= + + Headers/GPUImageFramebufferCache.h + + M1gALTDvDppaMmUPGKd9dcOy7ow= + + Headers/GPUImageFramework.h + + +epzM7KpjPip/rvReTzy3D1M8X8= + + Headers/GPUImageGammaFilter.h + + QXztmd+0AxvWQUgZGf/h/F5ogfA= + + Headers/GPUImageGaussianBlurFilter.h + + 7AyTt2ib3nefJBRgP9x0zMfaN7I= + + Headers/GPUImageGaussianBlurPositionFilter.h + + LPzQm8OikBgVvykqWgnGpCRjDeI= + + Headers/GPUImageGaussianSelectiveBlurFilter.h + + /JLdtp0oTNQDPqd78oh2Z6dRIQE= + + Headers/GPUImageGlassSphereFilter.h + + xNuoKVEKoDLca9saZMbO9t4O5nE= + + Headers/GPUImageGrayscaleFilter.h + + QyDCZY379dkN+s83dyiPuF1FTnE= + + Headers/GPUImageHSBFilter.h + + XAU4XGRlYmJJsdSYJv7DeCZyBaY= + + Headers/GPUImageHalftoneFilter.h + + Pr8rL4hd3Cy4Dk9j/sc+h1aDS4k= + + Headers/GPUImageHardLightBlendFilter.h + + jx/UK9UYuNtco7xUWs4u3jgihAs= + + Headers/GPUImageHarrisCornerDetectionFilter.h + + 2VBXLprDQkt75kNdsb2qiZMVBhI= + + Headers/GPUImageHazeFilter.h + + MKukhAyBDvtDmWfcqBB58cLUUtc= + + Headers/GPUImageHighPassFilter.h + + a6UTlsnfcqFwl7x5TmrswtX6TbQ= + + Headers/GPUImageHighlightShadowFilter.h + + RXF9rkKoFgO1yEf1lGYwnYVWaKA= + + Headers/GPUImageHistogramEqualizationFilter.h + + Jx3UmNICspUkpwl8TtCAJvOZlSM= + + Headers/GPUImageHistogramFilter.h + + +vKXk57tc2bLh6xg5saqO0gn0os= + + Headers/GPUImageHistogramGenerator.h + + pkT5KjxmW2JHBN0x1HaP4YPKIz8= + + Headers/GPUImageHoughTransformLineDetector.h + + wqP/sR0RJZhJw7q9kueAKfT4eIQ= + + Headers/GPUImageHueBlendFilter.h + + Gpv7ymmIGv+kMAvVjFn8/nzfGeo= + + Headers/GPUImageHueFilter.h + + KLyL+EyEdlFqtY6W60F0u++ky40= + + Headers/GPUImageJFAVoronoiFilter.h + + 3ui/efguz79qgvg0D6fqjAgh2Aw= + + Headers/GPUImageKuwaharaFilter.h + + fykYwSfuURCv41hLJGh5qBx057Q= + + Headers/GPUImageKuwaharaRadius3Filter.h + + nV+ZGOYZuJ3439z9GzV7yNfBHWg= + + Headers/GPUImageLanczosResamplingFilter.h + + +I/Oeo4QqenPG3rtjq44mj3ERB4= + + Headers/GPUImageLaplacianFilter.h + + RRZuKhYmTVGQDAcwMqlgQJbL8Do= + + Headers/GPUImageLevelsFilter.h + + Gza69S6pgnbnZlwHKqjYaYEM/Ls= + + Headers/GPUImageLightenBlendFilter.h + + hayBBt+FLU4U7NCnluqr5rS7xRk= + + Headers/GPUImageLineGenerator.h + + NQpyfhnEGd8NCcsAUYhjGqLSsv0= + + Headers/GPUImageLinearBurnBlendFilter.h + + MSZ5D8DfxhhcWSBE/dbyqIF1WXU= + + Headers/GPUImageLocalBinaryPatternFilter.h + + CoJvGvgmepvIE7xfBTmakrHwP/4= + + Headers/GPUImageLookupFilter.h + + w4z26ndizxXzKQJ88aVnAey4Fw0= + + Headers/GPUImageLowPassFilter.h + + 31VwJGSTw5Pk3rUIBteL3mS5Fco= + + Headers/GPUImageLuminanceRangeFilter.h + + 9bubuorseeL3CSW6/wDssVl51b0= + + Headers/GPUImageLuminanceThresholdFilter.h + + jriqFPHK7oD8U5a4NlRe5DAaCrE= + + Headers/GPUImageLuminosity.h + + D1xJBSH8RQe0r+tz433v5cooA4g= + + Headers/GPUImageLuminosityBlendFilter.h + + K9StpAOWlbVp000MEMTjrjPICtw= + + Headers/GPUImageMaskFilter.h + + 4me/bbKktSzR2tf91KFrCAFKpDw= + + Headers/GPUImageMedianFilter.h + + DCJ1QJxUxXII81YHvjbi2VxpGUY= + + Headers/GPUImageMissEtikateFilter.h + + eXaIKblZRY2u2zx4jbCECbbG5Vk= + + Headers/GPUImageMonochromeFilter.h + + w7+SR2N75c+NS0vIJnTpxjlcyCo= + + Headers/GPUImageMosaicFilter.h + + 4L1WsMRVAAen9AfkNC+gWJg+l5s= + + Headers/GPUImageMotionBlurFilter.h + + CxYZGDOwU5iVCUhz9pASd8U9E3k= + + Headers/GPUImageMotionDetector.h + + T38nrFQZbb4DT2gQK9w/CCUmglk= + + Headers/GPUImageMovie.h + + n79CDkhuW4T4K1DOrWsM+UlNvH4= + + Headers/GPUImageMovieComposition.h + + 9j3G+2oBkNiK1LmZya69OK7HPDw= + + Headers/GPUImageMovieWriter.h + + K/pCsJOeDezN4EvjevWNKuAoSBg= + + Headers/GPUImageMultiplyBlendFilter.h + + mKgyTRMmqRA8w9Xjc9C/f4ZwmAc= + + Headers/GPUImageNobleCornerDetectionFilter.h + + bv7MsymlAZaVPEyxgYOseUaQWBo= + + Headers/GPUImageNonMaximumSuppressionFilter.h + + RmDs6FthM8vOgj/yit6NluIJgVU= + + Headers/GPUImageNormalBlendFilter.h + + o+1YuPUIGNrBx31AftBi4v7uBsI= + + Headers/GPUImageOpacityFilter.h + + PWUf8xzWuDzIl6ozfDwkWo29bAY= + + Headers/GPUImageOpeningFilter.h + + f+ZpSToNCGDCmLBneSEM3GAGFkg= + + Headers/GPUImageOutput.h + + m3vHLviKj6yjen2H09FULLRYCCo= + + Headers/GPUImageOverlayBlendFilter.h + + 85PVdX0FilNUyQTKvAwCAs+CpgI= + + Headers/GPUImageParallelCoordinateLineTransformFilter.h + + pDJc3qAt8OZkni0KmcSGGZzeHdw= + + Headers/GPUImagePerlinNoiseFilter.h + + LEZfIm8tBunGxiLLQ2HpmDe2YFo= + + Headers/GPUImagePicture+TextureSubimage.h + + MTD+sWYHF3HDKTXOBU/4k+YtiPQ= + + Headers/GPUImagePicture.h + + YXNkWRwAyvK6BCCdUpyOohow230= + + Headers/GPUImagePinchDistortionFilter.h + + E5LEMQvCRVqxd6gsBT+AtZCkBUk= + + Headers/GPUImagePixellateFilter.h + + FHcv8OCM25q+A1skTZrcCx/Zu3Q= + + Headers/GPUImagePixellatePositionFilter.h + + Qz4V0yJTHDJTFP4omfEae9hrUmI= + + Headers/GPUImagePoissonBlendFilter.h + + lHLoDo44rTuaPiUPk4ND/XuE/qI= + + Headers/GPUImagePolarPixellateFilter.h + + 5aGVWSvzWEzu4viAYSY/9oiE3uI= + + Headers/GPUImagePolkaDotFilter.h + + SrpQ4VGsvj8g6sOzDJg/1KkQbgk= + + Headers/GPUImagePosterizeFilter.h + + cKYi3zjWrxNTAxMEKOr2dzuHkmc= + + Headers/GPUImagePrewittEdgeDetectionFilter.h + + N8toPrFwQ2Ugw+k+3OZuvSH/rM8= + + Headers/GPUImageRGBClosingFilter.h + + 0kDf1NDSmJa9qTXWXRJn0rqzVZM= + + Headers/GPUImageRGBDilationFilter.h + + ZR3Z5CpVv/S1H1a6U4H92d1XNuY= + + Headers/GPUImageRGBErosionFilter.h + + UGNRsq5EKscoJMw5AWmpNXYWTdM= + + Headers/GPUImageRGBFilter.h + + gkFaTAjOUwlssgYrnCqqNPqVZVQ= + + Headers/GPUImageRGBOpeningFilter.h + + a/PEfHNhIatpSnplj0x5m+Z/i0M= + + Headers/GPUImageRawDataInput.h + + bYPSXj/dY/MXY9pd631dd+SlD5Q= + + Headers/GPUImageRawDataOutput.h + + HI3YzUw4Cdi8JWb2rjQJQ/6EFew= + + Headers/GPUImageSaturationBlendFilter.h + + sVIc5ZOIrLTAYaM6iYDvrdQmllM= + + Headers/GPUImageSaturationFilter.h + + ArjLRNME7pbUYXWMMariBasSf2A= + + Headers/GPUImageScreenBlendFilter.h + + IlG+2VUkgjLPJPb6pjaf6qp8M7k= + + Headers/GPUImageSepiaFilter.h + + cersznQ+o5cekJw64xa6OobZLdw= + + Headers/GPUImageSharpenFilter.h + + V+QyaRQuTUpPftBbcZfmDw8wl64= + + Headers/GPUImageShiTomasiFeatureDetectionFilter.h + + pa7nhtULhfoyLOgoGvsm/+uhcfc= + + Headers/GPUImageSingleComponentGaussianBlurFilter.h + + 7/jSb9ceaMbbLIPMRzHvaXhXNXo= + + Headers/GPUImageSketchFilter.h + + kh4W2i34QVaPpUxLoB7QhmiZBMM= + + Headers/GPUImageSmoothToonFilter.h + + LBI7rJgJxalx0XL08kyxrw2i7dU= + + Headers/GPUImageSobelEdgeDetectionFilter.h + + rpWNWm5HHwlSq1ZQ1vaUiHShjhk= + + Headers/GPUImageSoftEleganceFilter.h + + NSpPLMjyIznNBnV+WlEbNU/JCrQ= + + Headers/GPUImageSoftLightBlendFilter.h + + LCmUXDPv2Y/1XTjM8l3xkfkTgjQ= + + Headers/GPUImageSolarizeFilter.h + + maBeg9l2rrPl76DuGl12ZFoyiro= + + Headers/GPUImageSolidColorGenerator.h + + obElPdknS4/M5NllFW4ou0UqW6k= + + Headers/GPUImageSourceOverBlendFilter.h + + dZ+4Jmo2+RTUBZ1ZwvOqklAUXNs= + + Headers/GPUImageSphereRefractionFilter.h + + /LGpL2OyUYK/pDU/r6rtolh+9HI= + + Headers/GPUImageStillCamera.h + + b1iHai/5pKKMH5szpPv1a8TqvHk= + + Headers/GPUImageStretchDistortionFilter.h + + dM2Pu4e4jVqbGEB/eTwojOVH/Oo= + + Headers/GPUImageSubtractBlendFilter.h + + 6eceNigAuB1MFFkkgb9wqH1cxts= + + Headers/GPUImageSwirlFilter.h + + W1EBsPkwgjRQ4g29xItEnYCj4m4= + + Headers/GPUImageTextureInput.h + + ZpUsaEiobJqk/ZWd2p34uo0Myk8= + + Headers/GPUImageTextureOutput.h + + FBr341QKXjYfCZRp9/tRKr7hPss= + + Headers/GPUImageThreeInputFilter.h + + O4NFo3F8qk6RKRe9vA4aN1nLcCo= + + Headers/GPUImageThresholdEdgeDetectionFilter.h + + 8XzR1Sd3L8iYTlhq4r1Iz+VQvOw= + + Headers/GPUImageThresholdSketchFilter.h + + qoUqrEAH1WyTko9oJYejdFlJ4vg= + + Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h + + qlRa/0ARLN0BmYYIfBBscRL/laA= + + Headers/GPUImageTiltShiftFilter.h + + 2e6BVWefqZWB3q/boU0T3pywASk= + + Headers/GPUImageToneCurveFilter.h + + TUxmjstVUOFZkzUBdhC8py2pvlQ= + + Headers/GPUImageToonFilter.h + + IdFNHeEyRIrIFe7/BewlogHt6P8= + + Headers/GPUImageTransformFilter.h + + hYC1or0IxZQGx6tlTlsWGIEAGtg= + + Headers/GPUImageTwoInputCrossTextureSamplingFilter.h + + tTeOrYRvFnN+JRl1Zl1Pnx7WksM= + + Headers/GPUImageTwoInputFilter.h + + xYdAQuIcdQXjRF9BzTSZa6+epLY= + + Headers/GPUImageTwoPassFilter.h + + eIvODox9IFf/FwSDdwcO9QBlSuE= + + Headers/GPUImageTwoPassTextureSamplingFilter.h + + tJLxawc8sQqJNWN1mD+z/1HnW34= + + Headers/GPUImageUIElement.h + + gst311gU8Bppy9Y9ZJu1qsP15ig= + + Headers/GPUImageUnsharpMaskFilter.h + + tvbQ+h7cIOa1obTOfERZEKlMLgc= + + Headers/GPUImageVideoCamera.h + + ZJU1/2IWDnlHhL+SUU00uR55r1A= + + Headers/GPUImageView.h + + JttiO2LRvk7193e1j1cJBYNlqwc= + + Headers/GPUImageVignetteFilter.h + + 6/RMBS0wP+W+Qrdw9XbQFwR+A2U= + + Headers/GPUImageVoronoiConsumerFilter.h + + uRq8kWqFIpZtAzB8vM+lmf3/NqE= + + Headers/GPUImageWeakPixelInclusionFilter.h + + 7dtwUyahMxEVLznJA5pilE+TxIE= + + Headers/GPUImageWhiteBalanceFilter.h + + 0zBzM5GkMhSrWwtB//vJZzLVYDY= + + Headers/GPUImageXYDerivativeFilter.h + + s3VqLQtQvt8iRXqYCetH4F4V3/E= + + Headers/GPUImageZoomBlurFilter.h + + w0V2pYVUIFam3/3fhAX2qNtesCg= + + Headers/GPUImageiOSBlurFilter.h + + bq2sOdRJnN77Fv7I1e2CXZj/pFU= + + Info.plist + + w3jhhVVo7ss7Ny6+bhJfoPy0Zkg= + + Modules/module.modulemap + + R0/ACD1+K7JSlm2BJjfVTa4Z+LU= + + + files2 + + Headers/GLProgram.h + + hash + + mxV0e3ySbX5wXHtFNuXmzouYzhg= + + hash2 + + cFNmhWSDusMHEdqpJfIR7brb3prKF57vcZvlycZdoHI= + + + Headers/GPUImage.h + + hash + + HUrEgiB6fAbHKKOhgpEMG/+gBtU= + + hash2 + + gCGjyabgeFTu22qH526YkzarVuRd9yaX2OvJJ+Uev8E= + + + Headers/GPUImage3x3ConvolutionFilter.h + + hash + + 8dpkDAU1/CNJYbLCaopWMbtM9Wk= + + hash2 + + xW5JKVXtLwSIAOrNgUXYjc/T9F5+KEHtYly/uZYArp8= + + + Headers/GPUImage3x3TextureSamplingFilter.h + + hash + + rmrLZgRfAct+MljSz+mZjuqx0Xc= + + hash2 + + Me9DNBv+hsueQ9mH3bA/KkSdJbhip+b4FISjXoSHJlA= + + + Headers/GPUImageAdaptiveThresholdFilter.h + + hash + + j8TJ9SbuXJdDT6WeWbj67gedx0E= + + hash2 + + JCjHdq5EZY9TwTT1tO6Nrn0wWoNtN4QuwjM2LYKuzUs= + + + Headers/GPUImageAddBlendFilter.h + + hash + + ZqcgCRv7SDNUuNEWxmrvuwiJzs4= + + hash2 + + 7gmZKD4J/fSK0RH73+78MMXi2pGR/lX39LxhYuPIlkk= + + + Headers/GPUImageAlphaBlendFilter.h + + hash + + 3+5qkq6u9LINJezWetcTsx/Hz4w= + + hash2 + + bCTpScq9pex2+9XImOCbyBD/39vhUa+Cx6nlMoQqwNI= + + + Headers/GPUImageAmatorkaFilter.h + + hash + + Jg2Vo6iBaPtVxTBtsPxFn2jUJvY= + + hash2 + + 6Ou2XXACuqdDQD9WCPdBCcjkiH+60zgXW+s+gKKb7hA= + + + Headers/GPUImageAverageColor.h + + hash + + dm/LLHsaG/BYjGfGIJ+HVK85gjs= + + hash2 + + Pf20DWn4dVHN+h8pwCk3C92z9OgfdL7vGnXnIBY6LVM= + + + Headers/GPUImageAverageLuminanceThresholdFilter.h + + hash + + lfGX8xAQbjJzIZFxhCiFcAs7oy4= + + hash2 + + mdN2HqPP0Iy1htv3zhyvCc2JufGN0pzoU/qw3uTcs78= + + + Headers/GPUImageBilateralFilter.h + + hash + + ZOYkrhlb8bo7XJYWCHKv8jDbGSw= + + hash2 + + Nh6VMUmgAGF2QECzVLbt4EnbUSusVlDj9cz7GIid8oE= + + + Headers/GPUImageBoxBlurFilter.h + + hash + + 2IGx4AaFDNmXDeEMoT53K0JArEQ= + + hash2 + + LHpwW3ZUOsDNWkHX6KqdZCr/jSVkQcnK9lWRwHnOBxQ= + + + Headers/GPUImageBrightnessFilter.h + + hash + + Ona6ET2F+oZePe4U8p1udhGII3Q= + + hash2 + + uGqFvx3H/92XB/hy0e+pAbeYXXhGAhTpB2f1IEf0cpI= + + + Headers/GPUImageBuffer.h + + hash + + JCpOP/4GQX0uEOQsJec2tEythNE= + + hash2 + + yECIjMLc6eZvqNulDXpA3kaUruGk/heKH9aFvRsAZVA= + + + Headers/GPUImageBulgeDistortionFilter.h + + hash + + tLPJjW6QBH8Y8+nMB40CyTOjrIk= + + hash2 + + s/SegywwWdr1RgFqmEsPnRtWvhjBZNb1+yNzL8YgsEg= + + + Headers/GPUImageCGAColorspaceFilter.h + + hash + + ZSc1+9LEc7ylEXYx6hfUlepSwbc= + + hash2 + + /wXNLUCQLKq6PkKDK5WzjS2EfjjsQLYQFGQTZI+0xp8= + + + Headers/GPUImageCannyEdgeDetectionFilter.h + + hash + + RXd0CN9fZ1Mc2U4WEbfE5iLtv+A= + + hash2 + + tTJWe4zmN05lZmS4oOUx9CzBkknlq1xQebsvMK+FWfE= + + + Headers/GPUImageChromaKeyBlendFilter.h + + hash + + KE7yvI9BPOrZgZYWrjuxCZ8pVtA= + + hash2 + + geCwMVNljHatBw4YnXFM39Tgg7X1ql80uf3dQoZ8tSE= + + + Headers/GPUImageChromaKeyFilter.h + + hash + + NZEkB6hg/l9d0eeD8T5BIKeK/vA= + + hash2 + + LpBy1D6LazIVuHwutyP2+9sy/X1EudesfpEwL/A3f3M= + + + Headers/GPUImageClosingFilter.h + + hash + + 8DaTIfa9mz8RZ8c7294Th71SvHE= + + hash2 + + AKU1tHPVrLaDc9Om3PyocfDGl+9EfE+FkrlxwfGal6M= + + + Headers/GPUImageColorBlendFilter.h + + hash + + dMwymUIfKAFm83KD8q37++zNBWY= + + hash2 + + w+9krqv5lm0xceQzDfGv6SvE5xs7uQ5RlzfQAdd22EU= + + + Headers/GPUImageColorBurnBlendFilter.h + + hash + + ZqWjCbNVUyVMyPHDsysdFsXHcd8= + + hash2 + + tL4oNJsSrtqk0uuYJhz6F3vd3zb5I6yvXPbJDOUsn+A= + + + Headers/GPUImageColorConversion.h + + hash + + 85niOZxbuL7fm2tizONEMmbk5Go= + + hash2 + + 1eiW3wJuxOGdPQh7phrLdYIID/tXbV9HQoza42P9Sd8= + + + Headers/GPUImageColorDodgeBlendFilter.h + + hash + + dyxixQU9GEwlWwohHx1TAxJJSCI= + + hash2 + + 4DyV7HnuSnHa9ISHsFb9ssbUvfFaChCf5jyZ1tOsD/Q= + + + Headers/GPUImageColorInvertFilter.h + + hash + + BhDhrQlF0AE2zWv8hOsay7yd4P8= + + hash2 + + YzIi7FgNtWJvY7UadHf73R+UJGrIBYMUDsnEhXrALmg= + + + Headers/GPUImageColorLocalBinaryPatternFilter.h + + hash + + 9/Gb9ktJYdY40PRNmZK9G9kX0Qc= + + hash2 + + g12nU5fmJP26jKOflrDNLqy1D7mz0te3pV0t4hRQLLs= + + + Headers/GPUImageColorMatrixFilter.h + + hash + + KRVW9ALkzhXgwAQQZ3WDkDENgr8= + + hash2 + + aKcILwJL8gO1SrF/c2Va6w4btva79iDJbficZAGlvSQ= + + + Headers/GPUImageColorPackingFilter.h + + hash + + WLiJEfbuwRZkJKU40m7s2pNU8z4= + + hash2 + + JjNjSXZQDauyyyJgozL1X2j47VP9+PyplnrngANUZtc= + + + Headers/GPUImageColourFASTFeatureDetector.h + + hash + + GhE7L7L2F/nLxEjav9RYJLH+K1c= + + hash2 + + XMBOXATlzFJPD4KMuHOajY+wLHYmvMuRn1isVcsuV+0= + + + Headers/GPUImageColourFASTSamplingOperation.h + + hash + + /rRHQC73llgzJajpekh1DikWbVc= + + hash2 + + qlqgfFU/8J9oZakhbm5XGQyUJJcY5lI82b/jdRDoct0= + + + Headers/GPUImageContext.h + + hash + + crRuajGhAdPoHKDXPj2knPKAMQw= + + hash2 + + 5lhTPPG7u0ZF/HzISZlD6CDW5lOYJgNV96cFpybIz/4= + + + Headers/GPUImageContrastFilter.h + + hash + + yg9eIoi8mYMdPs664DRJY8fhCUE= + + hash2 + + 0R1BTRgbARY9QRcxVLfSDtpd3gaw4LuB+aiixCvk594= + + + Headers/GPUImageCropFilter.h + + hash + + GNsgNrng2NfpA6mZlL8mDRkO2Kk= + + hash2 + + kcGtgvGutsxitzptDWfaFTXBGAsXoDsd233MVZjcPrM= + + + Headers/GPUImageCrosshairGenerator.h + + hash + + XCPEj90Ghhdt475FjjXeQ17BWVE= + + hash2 + + gT23uANRS7CGGyQW2AOydCdcC5sn0TEMlnc2Kwx7FKg= + + + Headers/GPUImageCrosshatchFilter.h + + hash + + X9+PdTNr6c59uDob6CaeLMBRh5w= + + hash2 + + vjrwI6OkrAz4SafSmeRdbNKNlM7kSre6hNXZGtmZvyU= + + + Headers/GPUImageDarkenBlendFilter.h + + hash + + h2nCd0ZA9CpBgYaPiiCjWCXtjRQ= + + hash2 + + rmgMHzR/bDFTmL+v3NYIBDVdQiLxWJxifazlvhASvnk= + + + Headers/GPUImageDifferenceBlendFilter.h + + hash + + nQtt55uc8QDm8QAn4P3HCTlIsvA= + + hash2 + + nEqCeHYvdyuMkFu7YrCrXhXzV83fvTrPjyGKcLZfAkg= + + + Headers/GPUImageDilationFilter.h + + hash + + q1iT4ChRTeumN9ZpE6+lI+p82/E= + + hash2 + + QvhTeaaqUez5RfDJMS8vYpdepiHpSKIdg4kKywJewg4= + + + Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h + + hash + + YvyKHTi4RtM4TJCczJfI0VXbLpQ= + + hash2 + + dCeafsRFlU7i9O1kaSmfyuRHj6F5YquWCBdiSq7WAt4= + + + Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h + + hash + + c1sXRuGi690fcxh8OklQ07PGtJw= + + hash2 + + uPdVfsGl/X7FD2BGMS642EI7uG1oalencOFoC3ObP+g= + + + Headers/GPUImageDissolveBlendFilter.h + + hash + + 9F9Ov/HWqsMm5Xt1IssGPfrl2mc= + + hash2 + + MNLt4fDp6XW6DqRDI85xMY1R/cKWUtkYaZTZ4pQuvpI= + + + Headers/GPUImageDivideBlendFilter.h + + hash + + RXn7OCQZLsvKTHiJbyHU79mrDKg= + + hash2 + + eCt2yGUiNGSa4GgdpJc4TI+vTrzfRTpj2fm5x2z/jxk= + + + Headers/GPUImageEmbossFilter.h + + hash + + ihJeR7pFprPC2NrkgDGozQBoSKg= + + hash2 + + 3ZNWgV1K5avYl8YlY+CsJ8C3xNmJ3hhSGjg9d/jwNaw= + + + Headers/GPUImageErosionFilter.h + + hash + + kUdV57f6Lqf+cDNKhffApoWk71U= + + hash2 + + VN+FfhbJbATpqb/Zt36Q6I7Av1NlXPu8ixGtOww45bU= + + + Headers/GPUImageExclusionBlendFilter.h + + hash + + 4gszly6+sRU6I+m8iNhlXab3Muw= + + hash2 + + IIfleEt/GWWFwGvOXX6VNZUn3Rgl1FALo/JkTdEqo5A= + + + Headers/GPUImageExposureFilter.h + + hash + + Pq0OBkMAQJfsz4c7axBaKguJuAM= + + hash2 + + v+jxvlZLXa/megMUIqo1f6/tllfptDuH5bDPPeLEMZE= + + + Headers/GPUImageFASTCornerDetectionFilter.h + + hash + + y7bJW0+KUu7jyhck1iuVh/dMRSI= + + hash2 + + KwujAFPj/udiOqcNfT++Y2gj/dx6Ci+tZqwK5tRrF0Y= + + + Headers/GPUImageFalseColorFilter.h + + hash + + FKHtRA6hwN4+v2+6syrGRpJs80s= + + hash2 + + VXayiyCKId/QDh37LKNXJlIyo+A8BE5MSxqbISiNnCs= + + + Headers/GPUImageFilter.h + + hash + + RfmKJiQmvREjYI3efESP44q6HqY= + + hash2 + + NUHqU0nOp+NoUiS3HPIvn53NgAg2APxYxdcSRQ65x0M= + + + Headers/GPUImageFilterGroup.h + + hash + + ci1P1K2/aqZPFXVlXh7s4sCxiDA= + + hash2 + + BBet206JJrO7eVZdeqXGkNb5UYfRrpAuxsgf8yVKEW8= + + + Headers/GPUImageFilterPipeline.h + + hash + + g8OwgwDaWscuTU8NSvFx3mW3Kyc= + + hash2 + + 3VS3ydBqsnaNvP97vVq5t+f7V9iEPaPAY3tnwvXleVI= + + + Headers/GPUImageFourInputFilter.h + + hash + + wi/A840uTQSq9r58rK6XxY2JrJQ= + + hash2 + + 4K2xLfLw9Tiqe0cjNKRow0LFIXhwoHEv8KgkuRDm9JQ= + + + Headers/GPUImageFramebuffer.h + + hash + + IEeW8WJNFRGkd+ahOeP3W132M84= + + hash2 + + rILL0gnwCJdmxUK37k6p6pxsHtgxchCyvjaMs5Np8+o= + + + Headers/GPUImageFramebufferCache.h + + hash + + M1gALTDvDppaMmUPGKd9dcOy7ow= + + hash2 + + jZVzaFZNXSJra69NHUmnvNkM518xrWsdLgHdp4hiDEw= + + + Headers/GPUImageFramework.h + + hash + + +epzM7KpjPip/rvReTzy3D1M8X8= + + hash2 + + Hy7Qk9anT+/NGiw5Y8tMlFiEr0BREQnCdJ8P4jHCPFo= + + + Headers/GPUImageGammaFilter.h + + hash + + QXztmd+0AxvWQUgZGf/h/F5ogfA= + + hash2 + + d6yphF+YkjQyapKF4p0v1sehxDq9JdNJA9rdG6jwIRE= + + + Headers/GPUImageGaussianBlurFilter.h + + hash + + 7AyTt2ib3nefJBRgP9x0zMfaN7I= + + hash2 + + BfvGEIx+1dlAhgwIDHIlj1LxfmCnQMxOsX4xqfHmRLo= + + + Headers/GPUImageGaussianBlurPositionFilter.h + + hash + + LPzQm8OikBgVvykqWgnGpCRjDeI= + + hash2 + + HjHIlqBKW4z7oqciN28CigRuOEhzVdXI33UUKf+F9rM= + + + Headers/GPUImageGaussianSelectiveBlurFilter.h + + hash + + /JLdtp0oTNQDPqd78oh2Z6dRIQE= + + hash2 + + 5dvYm9rz3CrntpGwHQ9Vje5caa74MU4nxwp9vZlsoa8= + + + Headers/GPUImageGlassSphereFilter.h + + hash + + xNuoKVEKoDLca9saZMbO9t4O5nE= + + hash2 + + HLx07OX1tOjkv9AgOZ37yVaIYqSa5+1GeHmwm7JPnbk= + + + Headers/GPUImageGrayscaleFilter.h + + hash + + QyDCZY379dkN+s83dyiPuF1FTnE= + + hash2 + + cSF1cY/HMUoefh0hA89ESiTnQIRRDiDfXOuc3wRh9Qc= + + + Headers/GPUImageHSBFilter.h + + hash + + XAU4XGRlYmJJsdSYJv7DeCZyBaY= + + hash2 + + /QPQd9EBYsMD3Je+yMz3mwXN3mqoGpbIJgjyLDiJZgI= + + + Headers/GPUImageHalftoneFilter.h + + hash + + Pr8rL4hd3Cy4Dk9j/sc+h1aDS4k= + + hash2 + + 0rmSnGbEGIZCqfb7C41uZjOl4AH1okMgXitgsX7p+lY= + + + Headers/GPUImageHardLightBlendFilter.h + + hash + + jx/UK9UYuNtco7xUWs4u3jgihAs= + + hash2 + + k0z2X6+IzW8YoznhQuWaw6H5HLeJ81a+8lKBOK9zJdU= + + + Headers/GPUImageHarrisCornerDetectionFilter.h + + hash + + 2VBXLprDQkt75kNdsb2qiZMVBhI= + + hash2 + + +ndKqu6zsGSqdWNa2H98k/zAC2oYJ6nIipPi1hqM2yI= + + + Headers/GPUImageHazeFilter.h + + hash + + MKukhAyBDvtDmWfcqBB58cLUUtc= + + hash2 + + BtRO2EkDifu/sIz6DyA3UPMUD/qEVmPnLujzfTKcJQU= + + + Headers/GPUImageHighPassFilter.h + + hash + + a6UTlsnfcqFwl7x5TmrswtX6TbQ= + + hash2 + + o3gWBrT/dajIE/+vYmETUSxpjfADVsfbz7y8j2a+YdA= + + + Headers/GPUImageHighlightShadowFilter.h + + hash + + RXF9rkKoFgO1yEf1lGYwnYVWaKA= + + hash2 + + 4w2o4nmX6zOpST3S8mU8dK4iZJwQkNcZhr53zaIltK0= + + + Headers/GPUImageHistogramEqualizationFilter.h + + hash + + Jx3UmNICspUkpwl8TtCAJvOZlSM= + + hash2 + + VoJJwsDkAfvkWyOaqu0SJHsS3aDLHDA1rVnzuFM/vHU= + + + Headers/GPUImageHistogramFilter.h + + hash + + +vKXk57tc2bLh6xg5saqO0gn0os= + + hash2 + + lrTjAFYyDOUJbykNnEGVSbRI/lQ9uqdYkiPhkyVuugI= + + + Headers/GPUImageHistogramGenerator.h + + hash + + pkT5KjxmW2JHBN0x1HaP4YPKIz8= + + hash2 + + TH+SyM7VDsjCvWytqun/L+RNMb/yW4w46qAfQJdC9mc= + + + Headers/GPUImageHoughTransformLineDetector.h + + hash + + wqP/sR0RJZhJw7q9kueAKfT4eIQ= + + hash2 + + pPG/kQV3hj+bIftMmZjMZBoD29du0Q8iCiurodqgGDk= + + + Headers/GPUImageHueBlendFilter.h + + hash + + Gpv7ymmIGv+kMAvVjFn8/nzfGeo= + + hash2 + + kl8ox+bvHqgvOUyFz2QetP0TJHHYVe8XEXPWDa6QqXY= + + + Headers/GPUImageHueFilter.h + + hash + + KLyL+EyEdlFqtY6W60F0u++ky40= + + hash2 + + y0o6JOPH/m/bB9uNlglh1MevHb6WH6es9hkaHIL32y0= + + + Headers/GPUImageJFAVoronoiFilter.h + + hash + + 3ui/efguz79qgvg0D6fqjAgh2Aw= + + hash2 + + 2JBWIFLqAomN1KrRTWPmQIDiiJe+3FO+t++0+WGxFfs= + + + Headers/GPUImageKuwaharaFilter.h + + hash + + fykYwSfuURCv41hLJGh5qBx057Q= + + hash2 + + sA9k/oTgFK0Uh9Dwrm9QMzvWmkpAT0IzN55j46IA4kI= + + + Headers/GPUImageKuwaharaRadius3Filter.h + + hash + + nV+ZGOYZuJ3439z9GzV7yNfBHWg= + + hash2 + + BXRlHK84VKTiMfwvlN/9sPsMrs54z4nngEh3dEVnT/Y= + + + Headers/GPUImageLanczosResamplingFilter.h + + hash + + +I/Oeo4QqenPG3rtjq44mj3ERB4= + + hash2 + + nQo96CIDe70PPP87+55eqs6vsXAVYG6Rs6kesPKSHFM= + + + Headers/GPUImageLaplacianFilter.h + + hash + + RRZuKhYmTVGQDAcwMqlgQJbL8Do= + + hash2 + + AF5wFEcKGWxvjjaveKJL4VaaIDbmSCIqtnmidc+aGLw= + + + Headers/GPUImageLevelsFilter.h + + hash + + Gza69S6pgnbnZlwHKqjYaYEM/Ls= + + hash2 + + aXA3DT9RZIr1T8Lb0MCEZtLkiHvmIZg+CBoO6J6NzLY= + + + Headers/GPUImageLightenBlendFilter.h + + hash + + hayBBt+FLU4U7NCnluqr5rS7xRk= + + hash2 + + ET8UyfBJmI72Y0s5rM8klqi/Jj+k8wrgia73aZEmOKE= + + + Headers/GPUImageLineGenerator.h + + hash + + NQpyfhnEGd8NCcsAUYhjGqLSsv0= + + hash2 + + MRGJih9v1PrQu3DCpQahMSa9E/GXpIXk10vMwJfqY24= + + + Headers/GPUImageLinearBurnBlendFilter.h + + hash + + MSZ5D8DfxhhcWSBE/dbyqIF1WXU= + + hash2 + + dIOIlj7F3HMneuRTcj5d9sNyw0qwwN0gS0jLl3PD/Ro= + + + Headers/GPUImageLocalBinaryPatternFilter.h + + hash + + CoJvGvgmepvIE7xfBTmakrHwP/4= + + hash2 + + R0t/ozlZz3TZNGjRJpNzuKLF7bax6SJwHhw8J5sYSXU= + + + Headers/GPUImageLookupFilter.h + + hash + + w4z26ndizxXzKQJ88aVnAey4Fw0= + + hash2 + + E3Qynm/Y9oW7yvkOxIzcFvGI5vO8e8BTUysXDxuB468= + + + Headers/GPUImageLowPassFilter.h + + hash + + 31VwJGSTw5Pk3rUIBteL3mS5Fco= + + hash2 + + JRwsk35Z93O3p1peS2R7IhojSxfaZ2BxY/TSK236zcg= + + + Headers/GPUImageLuminanceRangeFilter.h + + hash + + 9bubuorseeL3CSW6/wDssVl51b0= + + hash2 + + /NchnrcZU2Ddo9+BtBg71GduPyrLT9To5nlH7E4v7dA= + + + Headers/GPUImageLuminanceThresholdFilter.h + + hash + + jriqFPHK7oD8U5a4NlRe5DAaCrE= + + hash2 + + aCceuVzAuSv+gOY8IpiNBS4vKYcncCjY1iW16gtj2bA= + + + Headers/GPUImageLuminosity.h + + hash + + D1xJBSH8RQe0r+tz433v5cooA4g= + + hash2 + + UZ6egL2OTEHOYc7SbGFL5mFB89UIMBS6mnepqLs/B68= + + + Headers/GPUImageLuminosityBlendFilter.h + + hash + + K9StpAOWlbVp000MEMTjrjPICtw= + + hash2 + + gY3eod3igaQlf72xEVrKGHfgy3JhIYMdHtuB3OXhDkw= + + + Headers/GPUImageMaskFilter.h + + hash + + 4me/bbKktSzR2tf91KFrCAFKpDw= + + hash2 + + 44fLCgJZ3nhCD3I7K7dXE3LD8R1B+4HUcpLAZqxrb5k= + + + Headers/GPUImageMedianFilter.h + + hash + + DCJ1QJxUxXII81YHvjbi2VxpGUY= + + hash2 + + JgHNxoUacL1AoxlIyZmiBnOquVjx9E2dRNNF0Lnl9ZU= + + + Headers/GPUImageMissEtikateFilter.h + + hash + + eXaIKblZRY2u2zx4jbCECbbG5Vk= + + hash2 + + LN9dNAxJG2g52O8M5SXg1afyFd4sQLoR9NC2pv1SYqQ= + + + Headers/GPUImageMonochromeFilter.h + + hash + + w7+SR2N75c+NS0vIJnTpxjlcyCo= + + hash2 + + uu8UF8NzH4i5tzau8UgDGqBvvhfgQoJf7w2B/LQKdsQ= + + + Headers/GPUImageMosaicFilter.h + + hash + + 4L1WsMRVAAen9AfkNC+gWJg+l5s= + + hash2 + + vpR3pcz7VW5jYrsmx1tIfg79EG31heIYqzwKeSAxM1M= + + + Headers/GPUImageMotionBlurFilter.h + + hash + + CxYZGDOwU5iVCUhz9pASd8U9E3k= + + hash2 + + kP+MzWFY5m1pGKfRWkFtEk5OfcxJVeXsCwObUknkp6E= + + + Headers/GPUImageMotionDetector.h + + hash + + T38nrFQZbb4DT2gQK9w/CCUmglk= + + hash2 + + XeBbcomtRo0PFMPiJnYn8h+2BCGhE1sGab6QYnDqAio= + + + Headers/GPUImageMovie.h + + hash + + n79CDkhuW4T4K1DOrWsM+UlNvH4= + + hash2 + + J9fI4lSsBinopjsPyjcN2QjqT7oZUmMzsL7A/vxh0DE= + + + Headers/GPUImageMovieComposition.h + + hash + + 9j3G+2oBkNiK1LmZya69OK7HPDw= + + hash2 + + aaw9hmnu18hWgAIEZZ9MxM3EVW02tzTcE4d18AZbigI= + + + Headers/GPUImageMovieWriter.h + + hash + + K/pCsJOeDezN4EvjevWNKuAoSBg= + + hash2 + + Oc4EIGiCqCU9k52XDAonto6br6IQsE0dNiacgjD6yew= + + + Headers/GPUImageMultiplyBlendFilter.h + + hash + + mKgyTRMmqRA8w9Xjc9C/f4ZwmAc= + + hash2 + + 9VW9vhsoZhmlS5i+ZTPdztkJz1vHh0+7KiComOfMSSE= + + + Headers/GPUImageNobleCornerDetectionFilter.h + + hash + + bv7MsymlAZaVPEyxgYOseUaQWBo= + + hash2 + + AMu9H7HP3AMOA6XRPwGWJOFEmaOu8bDY6ENZTn4S4Lk= + + + Headers/GPUImageNonMaximumSuppressionFilter.h + + hash + + RmDs6FthM8vOgj/yit6NluIJgVU= + + hash2 + + MOpciC/fDhr5mzbhVwjdtqfJjB8050Lc7fxLCqTOaoo= + + + Headers/GPUImageNormalBlendFilter.h + + hash + + o+1YuPUIGNrBx31AftBi4v7uBsI= + + hash2 + + KWYr1P82qvyRov0sPsAt7wgrEPS66a0CS2VX/l9O2mU= + + + Headers/GPUImageOpacityFilter.h + + hash + + PWUf8xzWuDzIl6ozfDwkWo29bAY= + + hash2 + + YU2SITgJxfijq4dMwA1rn+ap7ofJ4GZApfBODdnWz6k= + + + Headers/GPUImageOpeningFilter.h + + hash + + f+ZpSToNCGDCmLBneSEM3GAGFkg= + + hash2 + + iupkkLTpcTlVCCHR/Z+AjzpWBD0hiZ3OL0MUyGI3dts= + + + Headers/GPUImageOutput.h + + hash + + m3vHLviKj6yjen2H09FULLRYCCo= + + hash2 + + eNV7T+Ps5995UCwfqui5bOWl4jfSdJGrdfIAuj84Rvk= + + + Headers/GPUImageOverlayBlendFilter.h + + hash + + 85PVdX0FilNUyQTKvAwCAs+CpgI= + + hash2 + + 8jf5Nau0HK2mRHlKn2bsZ4tpnqUpaAxE+jTcDAuLbRo= + + + Headers/GPUImageParallelCoordinateLineTransformFilter.h + + hash + + pDJc3qAt8OZkni0KmcSGGZzeHdw= + + hash2 + + z/fymwIbzghrhsMaUBiU7mpMVgBOJEZ/+mg6edKFbOg= + + + Headers/GPUImagePerlinNoiseFilter.h + + hash + + LEZfIm8tBunGxiLLQ2HpmDe2YFo= + + hash2 + + SQdXvQUqxGOC4T1eQioh3t92KeSssTu4dCc0OJbKVas= + + + Headers/GPUImagePicture+TextureSubimage.h + + hash + + MTD+sWYHF3HDKTXOBU/4k+YtiPQ= + + hash2 + + 5ZfRJAF6cru81m3JCVLq64ZBuCS44FLHA6dK4jZacYc= + + + Headers/GPUImagePicture.h + + hash + + YXNkWRwAyvK6BCCdUpyOohow230= + + hash2 + + S7E95qShrP+xcVb0AoVzHEvOhXej5NBk3is3iciYdk8= + + + Headers/GPUImagePinchDistortionFilter.h + + hash + + E5LEMQvCRVqxd6gsBT+AtZCkBUk= + + hash2 + + hKVURpakr3W8xaLY6RniEcb4RtnaM2lqZ3kvUGX81ic= + + + Headers/GPUImagePixellateFilter.h + + hash + + FHcv8OCM25q+A1skTZrcCx/Zu3Q= + + hash2 + + zg1aFxBRXQuzEXKYLhw6AIoOPagEXlkQcmDsBvbZ6bE= + + + Headers/GPUImagePixellatePositionFilter.h + + hash + + Qz4V0yJTHDJTFP4omfEae9hrUmI= + + hash2 + + ZyjKNlPPzw2jpVYF2N6aSTwWVBAf493YJvwaJEE3mgU= + + + Headers/GPUImagePoissonBlendFilter.h + + hash + + lHLoDo44rTuaPiUPk4ND/XuE/qI= + + hash2 + + DIu/PL3Z/lwkNnrm/eb9Zr3CHUIbNOd1joQVqSRoj4E= + + + Headers/GPUImagePolarPixellateFilter.h + + hash + + 5aGVWSvzWEzu4viAYSY/9oiE3uI= + + hash2 + + V2t+bRltNSBKaGn4RiSK3i6rzfXQDN5sEGXlQLBCVvs= + + + Headers/GPUImagePolkaDotFilter.h + + hash + + SrpQ4VGsvj8g6sOzDJg/1KkQbgk= + + hash2 + + cOe85ACBynlEg6fXjt3/UWUDN0THJCa7xNPQdRRJZzg= + + + Headers/GPUImagePosterizeFilter.h + + hash + + cKYi3zjWrxNTAxMEKOr2dzuHkmc= + + hash2 + + lw0hmuQnnzI/WHe0bkUJRJbR6ywZKAK0rBNgceNhQ4o= + + + Headers/GPUImagePrewittEdgeDetectionFilter.h + + hash + + N8toPrFwQ2Ugw+k+3OZuvSH/rM8= + + hash2 + + GgmG5NLg6kFpZARGa9HrYAWjTJ8rAVojkF2BGCZ8l6w= + + + Headers/GPUImageRGBClosingFilter.h + + hash + + 0kDf1NDSmJa9qTXWXRJn0rqzVZM= + + hash2 + + c0+MFJk161JMv3y3sze/mDS2hDNRDRBe+z7mI1nyJGA= + + + Headers/GPUImageRGBDilationFilter.h + + hash + + ZR3Z5CpVv/S1H1a6U4H92d1XNuY= + + hash2 + + iGqoh0JYt8UbB3Lt8xW39hKGIqXE2q5FQKn6jhYbfsk= + + + Headers/GPUImageRGBErosionFilter.h + + hash + + UGNRsq5EKscoJMw5AWmpNXYWTdM= + + hash2 + + fsgqB8hh8oihlpdu33ab0FKwexgQhHhB6wZ/pXHM7j8= + + + Headers/GPUImageRGBFilter.h + + hash + + gkFaTAjOUwlssgYrnCqqNPqVZVQ= + + hash2 + + JwGWLCiHtrpt8JoE/FPaguX+O/UnPMEyhq2TQ+g8J/0= + + + Headers/GPUImageRGBOpeningFilter.h + + hash + + a/PEfHNhIatpSnplj0x5m+Z/i0M= + + hash2 + + wPibkpF3L/UUegJv1oHN7YzItjd1POfuS32ti6ZFUE8= + + + Headers/GPUImageRawDataInput.h + + hash + + bYPSXj/dY/MXY9pd631dd+SlD5Q= + + hash2 + + zzOxphZH2h5xHQG/SkKtkp9sbn9E4NGwZTdpP+VQr70= + + + Headers/GPUImageRawDataOutput.h + + hash + + HI3YzUw4Cdi8JWb2rjQJQ/6EFew= + + hash2 + + Wdvq2164pOjm+QdkxG3JRdwbOP1AViTbcDaDts4m+OU= + + + Headers/GPUImageSaturationBlendFilter.h + + hash + + sVIc5ZOIrLTAYaM6iYDvrdQmllM= + + hash2 + + j5Xw76lCYYHHF0OCr5buwU5buMO721YBeFBC4LTDfd8= + + + Headers/GPUImageSaturationFilter.h + + hash + + ArjLRNME7pbUYXWMMariBasSf2A= + + hash2 + + kTfjt6W8zKzvySulYNsAi2GO5FIqcalE8T2q9Osm+SA= + + + Headers/GPUImageScreenBlendFilter.h + + hash + + IlG+2VUkgjLPJPb6pjaf6qp8M7k= + + hash2 + + zRoyxXOR4v+JabDEN8AScZH9i7NHO9EXGh3dg4iVF0c= + + + Headers/GPUImageSepiaFilter.h + + hash + + cersznQ+o5cekJw64xa6OobZLdw= + + hash2 + + EOFwAQk6nmGdliRc3qoILx10b2LVlWnuJRGDmt+Mo+s= + + + Headers/GPUImageSharpenFilter.h + + hash + + V+QyaRQuTUpPftBbcZfmDw8wl64= + + hash2 + + MWQp5QmDIl7folDxjAjYqzY4ExDcYNxXDQ5BT2Zf5Fg= + + + Headers/GPUImageShiTomasiFeatureDetectionFilter.h + + hash + + pa7nhtULhfoyLOgoGvsm/+uhcfc= + + hash2 + + hckgWZWzeoGiwik1hozEhEZV0oyDDd/L5lJADeqJUUw= + + + Headers/GPUImageSingleComponentGaussianBlurFilter.h + + hash + + 7/jSb9ceaMbbLIPMRzHvaXhXNXo= + + hash2 + + yjGn49aEMOyI+uL9JLS6k+5jy3jFjYXkvMiF0+OrqiQ= + + + Headers/GPUImageSketchFilter.h + + hash + + kh4W2i34QVaPpUxLoB7QhmiZBMM= + + hash2 + + 9bX46choNKf3/pNqSfKi0ZRjVp3fwoE+FOraWoXT5U8= + + + Headers/GPUImageSmoothToonFilter.h + + hash + + LBI7rJgJxalx0XL08kyxrw2i7dU= + + hash2 + + n3c9Dpr6M6F5vnRxsRRM/Xs/pSCHdeW8agCaw/VhdtM= + + + Headers/GPUImageSobelEdgeDetectionFilter.h + + hash + + rpWNWm5HHwlSq1ZQ1vaUiHShjhk= + + hash2 + + vUe/xIvG0/XHntNgdHn/UZJ1UIrEGV3LpwC/5WyP8FY= + + + Headers/GPUImageSoftEleganceFilter.h + + hash + + NSpPLMjyIznNBnV+WlEbNU/JCrQ= + + hash2 + + rRxPvkX+g8XECQXRtpzE4LDHM05y38HkJtm8v+IQpbw= + + + Headers/GPUImageSoftLightBlendFilter.h + + hash + + LCmUXDPv2Y/1XTjM8l3xkfkTgjQ= + + hash2 + + zx5jAItoAxN4cpOM7q/5bGu+3KZkWHG9YCPm+3qm/Do= + + + Headers/GPUImageSolarizeFilter.h + + hash + + maBeg9l2rrPl76DuGl12ZFoyiro= + + hash2 + + X/gAHJd5EBZWZ5EpyJOq3SAOCpmfJn+V0ygY7DedRuo= + + + Headers/GPUImageSolidColorGenerator.h + + hash + + obElPdknS4/M5NllFW4ou0UqW6k= + + hash2 + + N4bXTgVq0M+q6ebq+5jIKzZHNoIRnI8m4hK+yc+hZBI= + + + Headers/GPUImageSourceOverBlendFilter.h + + hash + + dZ+4Jmo2+RTUBZ1ZwvOqklAUXNs= + + hash2 + + L6DvPi/MXUnI57bPnCK7yJhWRbcz+UTssUeKoFRi7wQ= + + + Headers/GPUImageSphereRefractionFilter.h + + hash + + /LGpL2OyUYK/pDU/r6rtolh+9HI= + + hash2 + + IKSKm4l8karsOC8//09n3U4n0/D4MWY/9hZd7ucXYTE= + + + Headers/GPUImageStillCamera.h + + hash + + b1iHai/5pKKMH5szpPv1a8TqvHk= + + hash2 + + O8/dgEjSaZqkBxS9d/Cu8O9TfON8T5YLSMpAl0lpjHY= + + + Headers/GPUImageStretchDistortionFilter.h + + hash + + dM2Pu4e4jVqbGEB/eTwojOVH/Oo= + + hash2 + + N+Food7xczbywFGgKdlBT0YerM9AdnHwDXTbJXxINGQ= + + + Headers/GPUImageSubtractBlendFilter.h + + hash + + 6eceNigAuB1MFFkkgb9wqH1cxts= + + hash2 + + q6PvLPwaNqoHWXR2qFBIBzuX5CtbGH5QCJq/lyC3tug= + + + Headers/GPUImageSwirlFilter.h + + hash + + W1EBsPkwgjRQ4g29xItEnYCj4m4= + + hash2 + + gJbbUid87G8hYGaiJzjcdUKCg51Ml9P4WvOVQIFxXH8= + + + Headers/GPUImageTextureInput.h + + hash + + ZpUsaEiobJqk/ZWd2p34uo0Myk8= + + hash2 + + PpUr8cpxdLNEx0EmKVjGH+LFkPgbwR+hZYhJAaFqMS4= + + + Headers/GPUImageTextureOutput.h + + hash + + FBr341QKXjYfCZRp9/tRKr7hPss= + + hash2 + + B9+caOoMwnej6JBzj6LYBeCEERU9aEuc1WKXzVHukY8= + + + Headers/GPUImageThreeInputFilter.h + + hash + + O4NFo3F8qk6RKRe9vA4aN1nLcCo= + + hash2 + + SOfrv/URsFozR9VcwGsqbbKPKnXUZ1QUXMkksdGTCjs= + + + Headers/GPUImageThresholdEdgeDetectionFilter.h + + hash + + 8XzR1Sd3L8iYTlhq4r1Iz+VQvOw= + + hash2 + + Qa8DBG/NW9e/RUwZNhIeUkU14CXlD/lczigMJUrienY= + + + Headers/GPUImageThresholdSketchFilter.h + + hash + + qoUqrEAH1WyTko9oJYejdFlJ4vg= + + hash2 + + 30KG9/JXFlgwAPZfb45q8G1U9k5TQASuJ0fqa2MA3Dk= + + + Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h + + hash + + qlRa/0ARLN0BmYYIfBBscRL/laA= + + hash2 + + ZBR5uOGseMKjNnCQHgtsMAdVnk6ur2SsxZkr2V21VMo= + + + Headers/GPUImageTiltShiftFilter.h + + hash + + 2e6BVWefqZWB3q/boU0T3pywASk= + + hash2 + + 5riLyAkS5NqMszJpHMYIp3nKke/8DbLH1iPSQILEDPs= + + + Headers/GPUImageToneCurveFilter.h + + hash + + TUxmjstVUOFZkzUBdhC8py2pvlQ= + + hash2 + + N9zDY7hAy5HZMyYbdca2Iue0igCNIpRhzKESgj9Ea9I= + + + Headers/GPUImageToonFilter.h + + hash + + IdFNHeEyRIrIFe7/BewlogHt6P8= + + hash2 + + cOTltWGPEhT/cO+57ACQlz1kN4YRzTF+9PYxnRuij8M= + + + Headers/GPUImageTransformFilter.h + + hash + + hYC1or0IxZQGx6tlTlsWGIEAGtg= + + hash2 + + uTs9cKEsBvpuOCy3AKTaQ/yW0+AOcQOOGFxhVJICyfU= + + + Headers/GPUImageTwoInputCrossTextureSamplingFilter.h + + hash + + tTeOrYRvFnN+JRl1Zl1Pnx7WksM= + + hash2 + + DHHFuOrA6opK/k2Xf6TqWvaeCNqypU4ni+Xtp4aSfaw= + + + Headers/GPUImageTwoInputFilter.h + + hash + + xYdAQuIcdQXjRF9BzTSZa6+epLY= + + hash2 + + wTMtDJ7dagkp3XU4G5GMzKDEw7nd4IFKTSrhpiI9ixk= + + + Headers/GPUImageTwoPassFilter.h + + hash + + eIvODox9IFf/FwSDdwcO9QBlSuE= + + hash2 + + SagpZ7zCovvMLtAZO5NgpY8Uau+JaMrAvdCv9L4ikm4= + + + Headers/GPUImageTwoPassTextureSamplingFilter.h + + hash + + tJLxawc8sQqJNWN1mD+z/1HnW34= + + hash2 + + 1ZXpcyRsASuwbTJv9gUkW5kOzjOm7BSeHLCGSnVX20Q= + + + Headers/GPUImageUIElement.h + + hash + + gst311gU8Bppy9Y9ZJu1qsP15ig= + + hash2 + + yaQMsskSlJGUlmmsWQIlemOdJr8w2x544SvX3K4X3OE= + + + Headers/GPUImageUnsharpMaskFilter.h + + hash + + tvbQ+h7cIOa1obTOfERZEKlMLgc= + + hash2 + + hjJzJqo1V3NzioKoh8RUxrv7ocAuPWwt42fJn9P+pxs= + + + Headers/GPUImageVideoCamera.h + + hash + + ZJU1/2IWDnlHhL+SUU00uR55r1A= + + hash2 + + IK85izbvkukB3otOJPCfbzu4xT89NMju/fLvmXHT2HA= + + + Headers/GPUImageView.h + + hash + + JttiO2LRvk7193e1j1cJBYNlqwc= + + hash2 + + uzK5RM09dP1YQyShaelRxyx96hsXq7+nuFe3RiMTOGQ= + + + Headers/GPUImageVignetteFilter.h + + hash + + 6/RMBS0wP+W+Qrdw9XbQFwR+A2U= + + hash2 + + KUx+kPEOujDg1vEHKNxCJ/IpKNQqqCcgbFwhzkfYZ/o= + + + Headers/GPUImageVoronoiConsumerFilter.h + + hash + + uRq8kWqFIpZtAzB8vM+lmf3/NqE= + + hash2 + + Wkb3AFqrlTm2PlWiJmV/l2fmzwUfqHHNNwBgYwkT08Q= + + + Headers/GPUImageWeakPixelInclusionFilter.h + + hash + + 7dtwUyahMxEVLznJA5pilE+TxIE= + + hash2 + + jeUFEwTVEJIJ+vvpp1F4D9WcxtGDRopCuyIFOVjZNNg= + + + Headers/GPUImageWhiteBalanceFilter.h + + hash + + 0zBzM5GkMhSrWwtB//vJZzLVYDY= + + hash2 + + 6+iCbOlWI+6MQRp1hkJP3UAp//Zy2lAkhCVOa8B0cdM= + + + Headers/GPUImageXYDerivativeFilter.h + + hash + + s3VqLQtQvt8iRXqYCetH4F4V3/E= + + hash2 + + 42JierB3Feua24ZX4cPf4ntsfK2QPveQlVJ5L1tmX7o= + + + Headers/GPUImageZoomBlurFilter.h + + hash + + w0V2pYVUIFam3/3fhAX2qNtesCg= + + hash2 + + v4JMN9d0pq+IQA7BT48+iOMT5UTyQ1OQ/aa63dBW5s0= + + + Headers/GPUImageiOSBlurFilter.h + + hash + + bq2sOdRJnN77Fv7I1e2CXZj/pFU= + + hash2 + + ZIpPOgWu86QLBgDlCCnH6BFoTKNxHbGuNIblBFuoJ3c= + + + Modules/module.modulemap + + hash + + R0/ACD1+K7JSlm2BJjfVTa4Z+LU= + + hash2 + + 2s78k1ou/hrQ+/btMmSKO1GX/hH0oV4uaGcScKVpFyA= + + + + rules + + ^ + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^ + + weight + 20 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeSignature b/Vendor/GPUImage.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000000000000000000000000000000000000..667badb829e45ff612d31034a4463c7fa64d9884 GIT binary patch literal 4726 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 literal 0 HcmV?d00001 diff --git a/LFLiveKit/Vendor/pili-librtmp/amf.h b/Vendor/pili_librtmp.framework/Headers/amf.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/amf.h rename to Vendor/pili_librtmp.framework/Headers/amf.h diff --git a/LFLiveKit/Vendor/pili-librtmp/bytes.h b/Vendor/pili_librtmp.framework/Headers/bytes.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/bytes.h rename to Vendor/pili_librtmp.framework/Headers/bytes.h diff --git a/LFLiveKit/Vendor/pili-librtmp/dh.h b/Vendor/pili_librtmp.framework/Headers/dh.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/dh.h rename to Vendor/pili_librtmp.framework/Headers/dh.h diff --git a/LFLiveKit/Vendor/pili-librtmp/dhgroups.h b/Vendor/pili_librtmp.framework/Headers/dhgroups.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/dhgroups.h rename to Vendor/pili_librtmp.framework/Headers/dhgroups.h diff --git a/LFLiveKit/Vendor/pili-librtmp/error.h b/Vendor/pili_librtmp.framework/Headers/error.h old mode 100644 new mode 100755 similarity index 96% rename from LFLiveKit/Vendor/pili-librtmp/error.h rename to Vendor/pili_librtmp.framework/Headers/error.h index 4ec31fda..6a8dcbe4 --- a/LFLiveKit/Vendor/pili-librtmp/error.h +++ b/Vendor/pili_librtmp.framework/Headers/error.h @@ -10,6 +10,7 @@ typedef struct RTMPError { void RTMPError_Alloc(RTMPError *error, size_t msg_size); void RTMPError_Free(RTMPError *error); +void RTMPError_Message(RTMPError *error, int code, const char *message); // error defines enum { diff --git a/LFLiveKit/Vendor/pili-librtmp/handshake.h b/Vendor/pili_librtmp.framework/Headers/handshake.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/handshake.h rename to Vendor/pili_librtmp.framework/Headers/handshake.h diff --git a/LFLiveKit/Vendor/pili-librtmp/http.h b/Vendor/pili_librtmp.framework/Headers/http.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/http.h rename to Vendor/pili_librtmp.framework/Headers/http.h diff --git a/LFLiveKit/Vendor/pili-librtmp/log.h b/Vendor/pili_librtmp.framework/Headers/log.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/log.h rename to Vendor/pili_librtmp.framework/Headers/log.h diff --git a/LFLiveKit/Vendor/pili-librtmp/rtmp.h b/Vendor/pili_librtmp.framework/Headers/rtmp.h old mode 100644 new mode 100755 similarity index 97% rename from LFLiveKit/Vendor/pili-librtmp/rtmp.h rename to Vendor/pili_librtmp.framework/Headers/rtmp.h index d415e16c..d3879c01 --- a/LFLiveKit/Vendor/pili-librtmp/rtmp.h +++ b/Vendor/pili_librtmp.framework/Headers/rtmp.h @@ -50,6 +50,7 @@ extern "C" { #define RTMP_FEATURE_MFP 0x08 /* not yet supported */ #define RTMP_FEATURE_WRITE 0x10 /* publish, not play */ #define RTMP_FEATURE_HTTP2 0x20 /* server-side rtmpt */ +//#define RTMP_FEATURE_NONBLOCK 0x40 /* non block socket */ #define RTMP_PROTOCOL_UNDEFINED -1 #define RTMP_PROTOCOL_RTMP 0 @@ -102,6 +103,7 @@ typedef struct PILI_RTMPPacket { uint32_t m_nBytesRead; PILI_RTMPChunk *m_chunk; char *m_body; + int m_useExtTimestamp; } PILI_RTMPPacket; typedef struct PILI_RTMPSockBuf { @@ -333,7 +335,7 @@ int PILI_RTMP_Pause(PILI_RTMP *r, int DoPause, RTMPError *error); int PILI_RTMP_FindFirstMatchingProperty(AMFObject *obj, const AVal *name, AMFObjectProperty *p); -int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb); +int PILI_RTMPSockBuf_Fill(PILI_RTMPSockBuf *sb, int timeout); int PILI_RTMPSockBuf_Send(PILI_RTMPSockBuf *sb, const char *buf, int len); int PILI_RTMPSockBuf_Close(PILI_RTMPSockBuf *sb); @@ -345,6 +347,14 @@ void PILI_RTMP_DropRequest(PILI_RTMP *r, int i, int freeit); int PILI_RTMP_Read(PILI_RTMP *r, char *buf, int size); int PILI_RTMP_Write(PILI_RTMP *r, const char *buf, int size, RTMPError *error); +#define MAJOR 1 +#define MINOR 0 +#define PATCH 4 + +int PILI_RTMP_Version(); + +const char * PILI_RTMP_GetReqId(); + /* hashswf.c */ int PILI_RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash, int age); diff --git a/LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h b/Vendor/pili_librtmp.framework/Headers/rtmp_sys.h old mode 100644 new mode 100755 similarity index 100% rename from LFLiveKit/Vendor/pili-librtmp/rtmp_sys.h rename to Vendor/pili_librtmp.framework/Headers/rtmp_sys.h diff --git a/Vendor/pili_librtmp.framework/Info.plist b/Vendor/pili_librtmp.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..2fb444296788415bcc5b06ae56afbb1552dd6b93 GIT binary patch literal 753 zcmZWl%Wl&^6rDR1D36j!LklUi(C~iLvI!+(g_O9dLKPBfrwtI*IL^cwGJeRh3lZPY zA7BUUS?~oc*|6aQU{wjRV#@|$8=Dq!H}}px_uM(>c3sX!z9@brGk_0F96WS*^2pI+ z$EQwYNOn4Ra%T3_>HOT8v-1n*&KE9Ryma}>^&2o;y!|q(#RR)gdCmR*tW45^;3|u#aX)j$l(#U+utl51>W`-Y1 z(Y^6sQPU~D@`4(HuXlN5vEo=RT+iKOq6EK5Tb&K(_ zMzVXp5?&`cWpcV~`me%FTlWJmbeY*B#Z#S71JgL`dcNhVVyP%SVeY`OsWZAO6gQ;e z%B`ZfPVI+MOIltnO6?R?tM$z_MH0lTl5}%M7w~Y03|3x3!cFkcHkAfgAectKEoH-g>Ud3e!x%og)yGMQ#gwka0Rd8 Xr`W(0n|O#l6bFVs87(C_N%;A1h+XLP literal 0 HcmV?d00001 diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeDirectory b/Vendor/pili_librtmp.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000000000000000000000000000000000000..e21da5422327f3c2c548d8fc49b1b56f012f6b9e GIT binary patch literal 166 zcmex$kB5nYfngZ~6NmzXNkGyBh?#+yk%8^d2N6cFIE?U4&d=4W%rDI@)ho!%$<)os zOe!kLEnsjru{4j2FmrYaVJKp}axvIoW^mU<%L~U^lNMZz{iig;A?2OFar7RxL}S}0 zJzGu+@a@^sBXVUYR~*CDO}p#5Vs=a^UC0_M&$nqK*W^#yisEx3Qr_MbFFeN@Pz(U6 CqBbW0 literal 0 HcmV?d00001 diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements b/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000000000000000000000000000000000000..cb010c30f237ec7f5aa44e93dcdd792e4f379548 GIT binary patch literal 184 zcmex$kB53`u3lw+X?CezL1s>-Zcb)W zQAutAPzIugA4+qBMHm>kic6ESQj<&coc+KeAhWbG12XdSQWacM%Tjal3sQ@$6p}Mi t^AvJ2b2IbO6*R)kEhC+roLyafG{JiKfFwvCmsXoc+xO%YHYN}c2moubBVPaj literal 0 HcmV?d00001 diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements-1 b/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000000000000000000000000000000000000..a1617f145961f44972829c06dd7d08ea2c329e6c GIT binary patch literal 214 zcmex$kB5nYf#Dhh6NmzXZ9vilh?#+yk%8^d2L-qkSl&B1KUc3Zzcjm4uOKrgQ#U6w zsi-8kfWh6w(mXQ4%-Jb~f%~-BOWVEt`)~KM%-#5Nw$tn~L)K>{_fow|0*|+DIAnO^ z#ebuYCYR+W-uk}X+}~q&QJ|}&=ORPTsis^H-pTIUY|idmFpD=n;Mz&Cjh5O^gp#Vy z>^k26;A7_X{(W2iv!79WW?jep>BWyz6+iFf9Nh7B*82?)4=4Hyb(9|S(ahf80{}C{ BSF`{C literal 0 HcmV?d00001 diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeResources b/Vendor/pili_librtmp.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..4248fdcd --- /dev/null +++ b/Vendor/pili_librtmp.framework/_CodeSignature/CodeResources @@ -0,0 +1,261 @@ + + + + + files + + Headers/amf.h + + kGNvjJIoCw7nJy3kjjy6bgjrbVM= + + Headers/bytes.h + + rf2XeRlX/rLrVwSO4ygxJ9qcGGs= + + Headers/dh.h + + EZYLNyDbk3Xey+pkbfmAjzAsn1Q= + + Headers/dhgroups.h + + 1PArWQd8m0VVGjppiS9eF+7GqZQ= + + Headers/error.h + + BmXYGUcz+qLEYHOmNWm5iZs1cT0= + + Headers/handshake.h + + JSTLeAOP5Ux5RV0MuT6OlTWeM50= + + Headers/http.h + + D+7YvQh17K8IEHx9uY5mQkRolrQ= + + Headers/log.h + + smAML5qh1lQsa5O141/avkVpW/0= + + Headers/rtmp.h + + qjxjEHhY+ET2K4I9Fkp5NWvQ1ak= + + Headers/rtmp_sys.h + + h5aG2dXtze3bb6Ni5AzBEFNAIlw= + + Info.plist + + jBTUuQpeANWyu36KXLiUdaEFXR8= + + + files2 + + Headers/amf.h + + hash + + kGNvjJIoCw7nJy3kjjy6bgjrbVM= + + hash2 + + IwCiI2tTa5UbNIqujHh0Gat+ENoUqs0pfJQRlTgCXLI= + + + Headers/bytes.h + + hash + + rf2XeRlX/rLrVwSO4ygxJ9qcGGs= + + hash2 + + VdhSAgCQvn5k65JqlJ4XKX78jg0y4zj/eoIfVYxhU+c= + + + Headers/dh.h + + hash + + EZYLNyDbk3Xey+pkbfmAjzAsn1Q= + + hash2 + + pu/JXkXrTPMO789L5OBFn4sDi5H1Lnc0Af0i/w6lIuk= + + + Headers/dhgroups.h + + hash + + 1PArWQd8m0VVGjppiS9eF+7GqZQ= + + hash2 + + Sa1jUlQTNigFKQYgAVHsE9si09vjh5nGBAArSX7dLwU= + + + Headers/error.h + + hash + + BmXYGUcz+qLEYHOmNWm5iZs1cT0= + + hash2 + + 3L44UXfV0Oi5SY8OQh4tg9nOamJ5LfT5c+m5LOKs1f8= + + + Headers/handshake.h + + hash + + JSTLeAOP5Ux5RV0MuT6OlTWeM50= + + hash2 + + wYq3SY2KdCFex18QI6sRapiwAkCtOQpXtlExS884zUU= + + + Headers/http.h + + hash + + D+7YvQh17K8IEHx9uY5mQkRolrQ= + + hash2 + + KogyAaqwVHvADAzf/kuUHnDWbhuoYhTOV47tGjE5oCM= + + + Headers/log.h + + hash + + smAML5qh1lQsa5O141/avkVpW/0= + + hash2 + + 61apJ7aiRVG2Ojkg5hnHlkaiWGvXIiCySunTTfE7O64= + + + Headers/rtmp.h + + hash + + qjxjEHhY+ET2K4I9Fkp5NWvQ1ak= + + hash2 + + 5K1oNfNpC8lmSejtzpJAMPGKDRLYDF8UNJ2ZdFbMDhQ= + + + Headers/rtmp_sys.h + + hash + + h5aG2dXtze3bb6Ni5AzBEFNAIlw= + + hash2 + + qc8QOVfQ/MtdV8QCXQ27QID1M5nTNH13iWsGr2r8jSg= + + + + rules + + ^ + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^ + + weight + 20 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeSignature b/Vendor/pili_librtmp.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000000000000000000000000000000000000..97a31c1089808b44b9a31f81e241da4e518743d1 GIT binary patch literal 4726 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 u4%M7u`i1aF)d~V;X2v`CsC9L=_cfE?srAEnk7a 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 SKcfM@h(f*Pf!nJ4ZT$gxDo_{z literal 0 HcmV?d00001 diff --git a/scripts/build-universal-framework.sh b/scripts/build-universal-framework.sh deleted file mode 100755 index 01b94432..00000000 --- a/scripts/build-universal-framework.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -UNIVERSAL_OUTPUT_FOLDER="${PROJECT_DIR}/build/" - -# make the output directory and delete the framework directory -mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}" -rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}.framework" - -# Step 1. Build Device and Simulator versions -xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build -xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build - -# Step 2. Copy the framework structure to the universal folder -echo "==============Step 2==============" -echo "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" - -cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}/" - -# Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory -lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}" - -echo "==============Completion==============" -echo "${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" - -# Step 4. Copy strings bundle if exists -STRINGS_INPUT_FOLDER="${PROJECT_NAME}Strings.bundle" -if [ -d "${STRINGS_INPUT_FOLDER}" ]; then - STRINGS_OUTPUT_FOLDER="${UNIVERSAL_OUTPUT_FOLDER}/${PROJECT_NAME}Strings.bundle" - rm -rf "${STRINGS_OUTPUT_FOLDER}" - cp -R "${STRINGS_INPUT_FOLDER}" "${STRINGS_OUTPUT_FOLDER}" -fi diff --git a/uncrustify.cfg b/uncrustify.cfg deleted file mode 100644 index 4679b288..00000000 --- a/uncrustify.cfg +++ /dev/null @@ -1,643 +0,0 @@ -# -# Uncrustify Configuration File -# File Created With UncrustifyX 0.4.3 (252) -# - -# Alignment -# --------- - -## Alignment - -# Align ObjC declaration params on colon -align_oc_decl_colon = true # boolean (false/true) - -# Align function prototypes on operator keyword -align_on_operator = false # boolean (false/true) - -# Align on tabstop -align_on_tabstop = false # boolean (false/true) - -# Align open brace of single-line functions -align_single_line_brace = false # boolean (false/true) - -# Align parameters in single-line functions with same name -align_same_func_call_params = false # boolean (false/true) - -# Align single-line functions with function prototypes -align_single_line_func = false # boolean (false/true) - -# Align variable definitions -align_func_params = false # boolean (false/true) - -# Align with tabs -align_with_tabs = false # boolean (false/true) - -# Keep non-indenting tabs -align_keep_tabs = false # boolean (false/true) - -# Left-align numbers -align_number_left = false # boolean (false/true) - -## Alignment Span - -# Alignment span for ObjC message colons -align_oc_msg_colon_span = 16 # number - -# Alignment span for ObjC message spec -align_oc_msg_spec_span = 0 # number - -# Alignment span for assignment -align_assign_span = 0 # number - -# Alignment span for variable definitions -align_var_def_span = 0 # number - -## Alignment Style - -# Alignment style for ampersand in typedefs -align_typedef_amp_style = 2 # number - -# Alignment style for ampersand in variable definitions -align_var_def_amp_style = 1 # number - -# Alignment style for star in typedefs -align_typedef_star_style = 2 # number - -# Alignment style for star in variable definitions -align_var_def_star_style = 1 # number - -## Other - -# Align attribute after variable name -align_var_def_attribute = false # boolean (false/true) - -# Align colon in struct bit fields -align_var_def_colon = false # boolean (false/true) - -# Align comments after close brace and endif -align_right_cmt_mix = false # boolean (false/true) - -# Align inline struct/enum/union variable definitions -align_var_def_inline = false # boolean (false/true) - -# Align left shift operators on new lines -align_left_shift = true # boolean (false/true) - -# Align macros wrapped with backslash and newline -align_nl_cont = false # boolean (false/true) - -# Mix aligining prototype and variable declarations -align_mix_var_proto = false # boolean (false/true) - -# Blank Lines -# ----------- - -## Newline After - -# Newline after multiline comment -nl_after_multiline_comment = false # boolean (false/true) - -## Newline Count After - -# Newline count after function body -nl_after_func_body = 2 # number - -## Other - -# Remove blank lines after open brace -eat_blanks_after_open_brace = false # boolean (false/true) - -# Remove blank lines before close brace -eat_blanks_before_close_brace = false # boolean (false/true) - -# Code-Modifying -# -------------- - -## Braces - -# Braces on chained if/elseif/else statements -mod_full_brace_if_chain = false # boolean (false/true) - -## Other - -# Move break in fully-braced case before close brace -mod_move_case_break = false # boolean (false/true) - -# Remove empty return as last statement in function -mod_remove_empty_return = false # boolean (false/true) - -## Parentheses - -# Add parentheses on while and if statements around bool -mod_full_paren_if_bool = false # boolean (false/true) - -## Semicolons - -# Change optional semicolons to real semicolons -mod_pawn_semicolon = false # boolean (false/true) - -# Remove superflous semicolons -mod_remove_extra_semicolon = false # boolean (false/true) - -## Sorting - -# Sort consecutive import statements -mod_sort_import = false # boolean (false/true) - -# Sort include statements -mod_sort_include = false # boolean (false/true) - -# Sort using statements -mod_sort_using = false # boolean (false/true) - -# Comments -# -------- - -## Empty Lines - -# Empty first line for multi-line C comments -cmt_c_nl_start = false # boolean (false/true) - -# Empty first line for multi-line C++ comments -cmt_cpp_nl_start = false # boolean (false/true) - -# Empty last line for multi-line C comments -cmt_c_nl_end = false # boolean (false/true) - -# Empty last line for multi-line C++ comments -cmt_cpp_nl_end = false # boolean (false/true) - -## Other - -# Change C++ comments to C comments -cmt_cpp_to_c = false # boolean (false/true) - -# Group C comments -cmt_c_group = false # boolean (false/true) - -# Group C++ comments -cmt_cpp_group = false # boolean (false/true) - -# Indent multi-line comments -cmt_indent_multi = true # boolean (false/true) - -# Insert function comment if preprocessor statement -cmt_insert_before_preproc = false # boolean (false/true) - -# Remove leading spaces from multi-line comments -cmt_multi_check_last = true # boolean (false/true) - -# Stars on multi-line comments -cmt_star_cont = false # boolean (false/true) - -# General -# ------- - -## Other - -# Interpret >= -tok_split_gte = false # boolean (false/true) - -# Indentation -# ----------- - -## Indentation - -# Disable indenting class braces -indent_braces_no_class = false # boolean (false/true) - -# Disable indenting function braces -indent_braces_no_func = false # boolean (false/true) - -# Disable indenting struct braces -indent_braces_no_struct = false # boolean (false/true) - -# Double indent size for Indentation options -indent_func_param_double = false # boolean (false/true) - -# Indent ObjC block -indent_oc_block = true # boolean (false/true) - -# Indent braces -indent_braces = false # boolean (false/true) - -# Indent class body -indent_class = false # boolean (false/true) - -# Indent class variable constructors -indent_func_ctor_var_param = false # boolean (false/true) - -# Indent continued function call parameters -indent_func_call_param = false # boolean (false/true) - -# Indent function call parameters in class declarations -indent_func_class_param = false # boolean (false/true) - -# Indent function definition parameters -indent_func_def_param = false # boolean (false/true) - -# Indent function prototype parameters -indent_func_proto_param = false # boolean (false/true) - -# Indent template parameters -indent_template_param = false # boolean (false/true) - -## Indentation Size - -# Indent size based on brace parent -indent_brace_parent = false # boolean (false/true) - -# Indentation column size -indent_columns = 4 # number - -## Other - -# Align continued statements at equals -indent_align_assign = true # boolean (false/true) - -# Align strings broken by backslash -indent_align_string = false # boolean (false/true) - -# Indent BOOL inside parentheses -indent_bool_paren = false # boolean (false/true) - -# Indent after class colon -indent_class_colon = false # boolean (false/true) - -# Indent code after access specifier -indent_access_spec_body = false # boolean (false/true) - -# Indent comma inside parentheses -indent_comma_paren = false # boolean (false/true) - -# Indent comments in first column -indent_col1_comment = false # boolean (false/true) - -# Indent comments with tabs -indent_cmt_with_tabs = false # boolean (false/true) - -# Indent content after open square followed by newline -indent_square_nl = false # boolean (false/true) - -# Indent continued variable declarations -indent_var_def_cont = false # boolean (false/true) - -# Indent else\nif -indent_else_if = false # boolean (false/true) - -# Indent extern body -indent_extern = false # boolean (false/true) - -# Indent namespace body -indent_namespace = false # boolean (false/true) - -# Indent newline content after open parenthesis -indent_paren_nl = false # boolean (false/true) - -# Indent relative single line comments -indent_relative_single_line_comments = false # boolean (false/true) - -# Indent with tabs -indent_with_tabs = 0 # number - -# Indentation of first BOOL expression -indent_first_bool_expr = false # boolean (false/true) - -# Preserve SQL indentation -indent_preserve_sql = false # boolean (false/true) - -# Line-Splitting -# -------------- - -## Splitting - -# Split long for statements at semicolons -ls_for_split_full = false # boolean (false/true) - -# Split long function prototypes/calls at commas -ls_func_split_full = false # boolean (false/true) - -# Newlines -# -------- - -## Merging - -# Change unbraced for statements into one-liner -nl_create_for_one_liner = false # boolean (false/true) - -# Change unbraced if statements into one-liner -nl_create_if_one_liner = false # boolean (false/true) - -# Change unbraced while statements into one-liner -nl_create_while_one_liner = false # boolean (false/true) - -## Newline After - -# Newline after brace close -nl_after_brace_close = false # boolean (false/true) - -# Newline after brace open -nl_after_brace_open = false # boolean (false/true) - -# Newline after brace open comment -nl_after_brace_open_cmt = false # boolean (false/true) - -# Newline after case statement -nl_after_case = false # boolean (false/true) - -# Newline after macro multi-line definition -nl_multi_line_define = false # boolean (false/true) - -# Newline after return -nl_after_return = false # boolean (false/true) - -# Newline after semicolon -nl_after_semicolon = false # boolean (false/true) - -# Newline after virtual brace close -nl_after_vbrace_close = false # boolean (false/true) - -# Newline after virtual brace open -nl_after_vbrace_open = false # boolean (false/true) - -# Newline after virtual brace open with empty body -nl_after_vbrace_open_empty = false # boolean (false/true) - -## Newline Before - -# Newline before case statement -nl_before_case = false # boolean (false/true) - -## Newline Between - -# Newline between catch and open brace -nl_catch_brace = remove # string (add/force/ignore/remove) - -# Newline between close brace and catch -nl_brace_catch = remove # string (add/force/ignore/remove) - -# Newline between close brace and else -nl_brace_else = remove # string (add/force/ignore/remove) - -# Newline between close brace and finally -nl_brace_finally = remove # string (add/force/ignore/remove) - -# Newline between close brace and while -nl_brace_while = remove # string (add/force/ignore/remove) - -# Newline between close parenthesis and open brace in multi line conditional -nl_multi_line_cond = false # boolean (false/true) - -# Newline between do and open brace -nl_do_brace = remove # string (add/force/ignore/remove) - -# Newline between else and if -nl_else_if = remove # string (add/force/ignore/remove) - -# Newline between else and open brace -nl_else_brace = remove # string (add/force/ignore/remove) - -# Newline between else if and open brace -nl_elseif_brace = remove # string (add/force/ignore/remove) - -# Newline between enum and open brace -nl_enum_brace = remove # string (add/force/ignore/remove) - -# Newline between finally and open brace -nl_finally_brace = remove # string (add/force/ignore/remove) - -# Newline between for and open brace -nl_for_brace = remove # string (add/force/ignore/remove) - -# Newline between function call and open brace -nl_fcall_brace = remove # string (add/force/ignore/remove) - -# Newline between function signature and open brace -nl_fdef_brace = remove # string (add/force/ignore/remove) - -# Newline between if and open brace -nl_if_brace = remove # string (add/force/ignore/remove) - -# Newline between struct and open brace -nl_struct_brace = remove # string (add/force/ignore/remove) - -# Newline between switch and open brace -nl_switch_brace = remove # string (add/force/ignore/remove) - -# Newline between try and open brace -nl_try_brace = remove # string (add/force/ignore/remove) - -# Newline between union and open brace -nl_union_brace = remove # string (add/force/ignore/remove) - -# Newline between while and open brace -nl_while_brace = remove # string (add/force/ignore/remove) - -## Other - -# Alter newlines in #define macros -nl_define_macro = false # boolean (false/true) - -# Blank lines after preprocessor if/else -nl_squeeze_ifdef = false # boolean (false/true) - -# Collapse empty blocks between braces -nl_collapse_empty_body = false # boolean (false/true) - -# Double space before close brace of struct/union/enum -nl_ds_struct_enum_close_brace = false # boolean (false/true) - -# Double space commented entries in struct/enum -nl_ds_struct_enum_cmt = false # boolean (false/true) - -## Splitting - -# Don’t split one-line braced assignments -nl_assign_leave_one_liners = false # boolean (false/true) - -# Don’t split one-line braced statements -nl_class_leave_one_liners = false # boolean (false/true) - -# Don’t split one-line enums -nl_enum_leave_one_liners = false # boolean (false/true) - -# Don’t split one-line function definitions -nl_func_leave_one_liners = false # boolean (false/true) - -# Don’t split one-line get/set functions -nl_getset_leave_one_liners = false # boolean (false/true) - -# Don’t split one-line if/else statements -nl_if_leave_one_liners = false # boolean (false/true) - -# Other -# ----- - -## Other - -# Force encoding UTF-8 -utf8_force = false # boolean (false/true) - -# UTF-8 output if file contains bytes > 128 and < 255 -utf8_byte = false # boolean (false/true) - -# Preprocessor -# ------------ - -## Indentation - -# Indent preprocessor define -pp_define_at_level = false # boolean (false/true) - -# Indent preprocessor if/else/endif -pp_if_indent_code = false # boolean (false/true) - -# Indent preprocessor if/else/endif at level -pp_indent_at_level = false # boolean (false/true) - -# Indent preprocessor regions -pp_region_indent_code = false # boolean (false/true) - -# Spacing -# ------- - -## Other - -# Balance spaces inside nested parentheses -sp_balance_nested_parens = false # boolean (false/true) - -## Space After - -# Space after ObjC block caret -sp_after_oc_block_caret = remove # string (add/force/ignore/remove) - -# Space after ObjC colon -sp_after_oc_colon = remove # string (add/force/ignore/remove) - -# Space after ObjC message colon -sp_after_send_oc_colon = remove # string (add/force/ignore/remove) - -# Space after ObjC message receiver -sp_after_oc_msg_receiver = force # string (add/force/ignore/remove) - -# Space after ObjC return type -sp_after_oc_return_type = remove # string (add/force/ignore/remove) - -# Space after ObjC scope -sp_after_oc_scope = force # string (add/force/ignore/remove) - -# Space after ObjC type -sp_after_oc_type = remove # string (add/force/ignore/remove) - -# Space after cast -sp_after_cast = remove # string (add/force/ignore/remove) - -# Space after comma -sp_after_comma = force # string (add/force/ignore/remove) - -# Space after condition close parenthesis -sp_after_sparen = force # string (add/force/ignore/remove) - -# Space after operator -sp_after_operator = force # string (add/force/ignore/remove) - -# Space after pointer star -sp_after_ptr_star = remove # string (add/force/ignore/remove) - -## Space Around - -# Space around assignment operator -sp_assign = force # string (add/force/ignore/remove) - -# Space around boolean operators -sp_bool = force # string (add/force/ignore/remove) - -# Space around compare operators -sp_compare = force # string (add/force/ignore/remove) - -# Space around ternary condition colon -sp_cond_colon = force # string (add/force/ignore/remove) - -# Space around ternary condition question mark -sp_cond_question = force # string (add/force/ignore/remove) - -## Space Before - -# Space before ObjC block caret -sp_before_oc_block_caret = remove # string (add/force/ignore/remove) - -# Space before ObjC colon -sp_before_oc_colon = remove # string (add/force/ignore/remove) - -# Space before ObjC message colon -sp_before_send_oc_colon = remove # string (add/force/ignore/remove) - -# Space before comma -sp_before_comma = remove # string (add/force/ignore/remove) - -# Space before if/for/switch/while open parenthesis -sp_before_sparen = force # string (add/force/ignore/remove) - -# Space before pointer star -sp_before_ptr_star = force # string (add/force/ignore/remove) - -# Space before semicolon -sp_before_semi = remove # string (add/force/ignore/remove) - -# Space before unnamed pointer star -sp_before_unnamed_ptr_star = force # string (add/force/ignore/remove) - -## Space Between - -# Space between @selector and open parenthesis -sp_after_oc_at_sel = remove # string (add/force/ignore/remove) - -# Space between close brace and else -sp_brace_else = force # string (add/force/ignore/remove) - -# Space between close parenthesis and open brace -sp_paren_brace = remove # string (add/force/ignore/remove) - -# Space between closing brace and finally -sp_brace_finally = force # string (add/force/ignore/remove) - -# Space between else and open brace -sp_else_brace = force # string (add/force/ignore/remove) - -# Space between finally and open brace -sp_finally_brace = force # string (add/force/ignore/remove) - -# Space between function name and empty parentheses -sp_func_call_paren_empty = remove # string (add/force/ignore/remove) - -# Space between function name and open parenthesis -sp_func_call_paren = remove # string (add/force/ignore/remove) - -# Space between function name and open parenthesis in function definition -sp_func_def_paren = remove # string (add/force/ignore/remove) - -# Space between sizeof and open parenthesis -sp_sizeof_paren = remove # string (add/force/ignore/remove) - -# Space between try and open brace -sp_try_brace = force # string (add/force/ignore/remove) - -## Space Inside - -# Space inside @selector() parens -sp_inside_oc_at_sel_parens = remove # string (add/force/ignore/remove) - -# Space inside cast parentheses -sp_inside_paren_cast = remove # string (add/force/ignore/remove) - -# Space inside function parentheses -sp_inside_fparen = remove # string (add/force/ignore/remove) - -# Space inside if-condition close parenthesis -sp_inside_sparen_close = remove # string (add/force/ignore/remove) - -# Space inside if-condition parentheses -sp_inside_sparen = remove # string (add/force/ignore/remove) - -# Space inside parentheses -sp_inside_paren = remove # string (add/force/ignore/remove) \ No newline at end of file From 7c3aae8003130c0d88f002acaafb5beb5a805642 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 30 Aug 2016 17:39:58 +0800 Subject: [PATCH 118/178] fix travis --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index fdd2dc20..f0becef7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: objective-c osx_image: xcode7 -xcode_project: LFLiveKit.xcodeproj +xcode_project: LFLiveKit/LFLiveKit.xcodeproj xcode_scheme: LFLiveKit script: -- xctool -project LFLiveKit.xcodeproj -scheme 'LFLiveKit' -configuration Release -sdk iphonesimulator -arch i386 build \ No newline at end of file +- xctool -project LFLiveKit/LFLiveKit.xcodeproj -scheme 'LFLiveKit' -configuration Release -sdk iphonesimulator -arch i386 build \ No newline at end of file From 7657d278543db2bdc81ff92aeb2c675b3e5bd5d6 Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 30 Aug 2016 20:33:44 +0800 Subject: [PATCH 119/178] add share theme --- .../xcshareddata/xcschemes/LFLiveKit.xcscheme | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 LFLiveKit/LFLiveKit.xcodeproj/xcshareddata/xcschemes/LFLiveKit.xcscheme diff --git a/LFLiveKit/LFLiveKit.xcodeproj/xcshareddata/xcschemes/LFLiveKit.xcscheme b/LFLiveKit/LFLiveKit.xcodeproj/xcshareddata/xcschemes/LFLiveKit.xcscheme new file mode 100644 index 00000000..96a517df --- /dev/null +++ b/LFLiveKit/LFLiveKit.xcodeproj/xcshareddata/xcschemes/LFLiveKit.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a508cecc32d6c83546c76aa75d2cbf17ad4b0b1c Mon Sep 17 00:00:00 2001 From: chenliming Date: Tue, 30 Aug 2016 23:08:46 +0800 Subject: [PATCH 120/178] add iPhone simulator --- LFLiveKit.podspec | 3 ++- LFLiveKit/Info.plist | 2 +- LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj | 4 ++-- .../LFLiveKitDemo.xcodeproj/project.pbxproj | 8 ++++---- .../project.pbxproj | 9 +++++---- Vendor/GPUImage.framework/GPUImage | Bin 9150832 -> 17794936 bytes .../GPUImage3x3TextureSamplingFilter.h | 0 .../Headers/GPUImageAddBlendFilter.h | 0 .../Headers/GPUImageAverageColor.h | 0 .../GPUImageAverageLuminanceThresholdFilter.h | 0 .../Headers/GPUImageBilateralFilter.h | 0 .../Headers/GPUImageBuffer.h | 0 .../Headers/GPUImageChromaKeyFilter.h | 0 .../Headers/GPUImageClosingFilter.h | 0 .../Headers/GPUImageColorBlendFilter.h | 0 .../Headers/GPUImageColorConversion.h | 0 .../GPUImageColorLocalBinaryPatternFilter.h | 0 .../Headers/GPUImageColorPackingFilter.h | 0 .../Headers/GPUImageCrosshairGenerator.h | 0 .../Headers/GPUImageDilationFilter.h | 0 ...geDirectionalNonMaximumSuppressionFilter.h | 0 ...ImageDirectionalSobelEdgeDetectionFilter.h | 0 .../Headers/GPUImageDivideBlendFilter.h | 0 .../Headers/GPUImageErosionFilter.h | 0 .../GPUImageFASTCornerDetectionFilter.h | 0 .../Headers/GPUImageFalseColorFilter.h | 0 .../Headers/GPUImageFourInputFilter.h | 0 .../Headers/GPUImageFramebuffer.h | 0 .../Headers/GPUImageFramebufferCache.h | 0 .../Headers/GPUImageFramework.h | 0 .../Headers/GPUImageGlassSphereFilter.h | 0 .../Headers/GPUImageHSBFilter.h | 0 .../Headers/GPUImageHalftoneFilter.h | 0 .../Headers/GPUImageHighPassFilter.h | 0 .../Headers/GPUImageHighlightShadowFilter.h | 0 .../GPUImageHistogramEqualizationFilter.h | 0 .../GPUImageHoughTransformLineDetector.h | 0 .../Headers/GPUImageHueBlendFilter.h | 0 .../Headers/GPUImageHueFilter.h | 0 .../Headers/GPUImageJFAVoronoiFilter.h | 0 .../Headers/GPUImageKuwaharaRadius3Filter.h | 0 .../Headers/GPUImageLanczosResamplingFilter.h | 0 .../Headers/GPUImageLaplacianFilter.h | 0 .../Headers/GPUImageLevelsFilter.h | 0 .../Headers/GPUImageLineGenerator.h | 0 .../Headers/GPUImageLinearBurnBlendFilter.h | 0 .../GPUImageLocalBinaryPatternFilter.h | 0 .../Headers/GPUImageLookupFilter.h | 0 .../Headers/GPUImageLowPassFilter.h | 0 .../Headers/GPUImageLuminanceRangeFilter.h | 0 .../Headers/GPUImageLuminosity.h | 0 .../Headers/GPUImageLuminosityBlendFilter.h | 0 .../Headers/GPUImageMedianFilter.h | 0 .../Headers/GPUImageMonochromeFilter.h | 0 .../Headers/GPUImageMosaicFilter.h | 0 .../Headers/GPUImageMotionBlurFilter.h | 0 .../Headers/GPUImageMotionDetector.h | 0 .../Headers/GPUImageMovieComposition.h | 0 .../GPUImageNobleCornerDetectionFilter.h | 0 .../GPUImageNonMaximumSuppressionFilter.h | 0 .../Headers/GPUImageNormalBlendFilter.h | 0 .../Headers/GPUImageOpacityFilter.h | 0 .../Headers/GPUImageOpeningFilter.h | 0 ...ageParallelCoordinateLineTransformFilter.h | 0 .../Headers/GPUImagePerlinNoiseFilter.h | 0 .../Headers/GPUImagePicture+TextureSubimage.h | 0 .../Headers/GPUImagePoissonBlendFilter.h | 0 .../Headers/GPUImagePolkaDotFilter.h | 0 .../Headers/GPUImageRGBClosingFilter.h | 0 .../Headers/GPUImageRGBDilationFilter.h | 0 .../Headers/GPUImageRGBErosionFilter.h | 0 .../Headers/GPUImageRGBOpeningFilter.h | 0 .../Headers/GPUImageRawDataInput.h | 0 .../Headers/GPUImageSaturationBlendFilter.h | 0 .../GPUImageShiTomasiFeatureDetectionFilter.h | 0 ...PUImageSingleComponentGaussianBlurFilter.h | 0 .../Headers/GPUImageSolarizeFilter.h | 0 .../Headers/GPUImageSolidColorGenerator.h | 0 .../Headers/GPUImageSourceOverBlendFilter.h | 0 .../Headers/GPUImageSphereRefractionFilter.h | 0 .../Headers/GPUImageThreeInputFilter.h | 0 .../Headers/GPUImageThresholdSketchFilter.h | 0 ...geThresholdedNonMaximumSuppressionFilter.h | 0 ...UImageTwoInputCrossTextureSamplingFilter.h | 0 .../Headers/GPUImageTwoInputFilter.h | 0 .../GPUImageTwoPassTextureSamplingFilter.h | 0 .../Headers/GPUImageUIElement.h | 0 .../Headers/GPUImageVoronoiConsumerFilter.h | 0 .../GPUImageWeakPixelInclusionFilter.h | 0 .../Headers/GPUImageWhiteBalanceFilter.h | 0 .../Headers/GPUImageZoomBlurFilter.h | 0 .../Headers/GPUImageiOSBlurFilter.h | 0 .../_CodeSignature/CodeDirectory | Bin 175 -> 175 bytes .../_CodeSignature/CodeRequirements | Bin 192 -> 188 bytes .../_CodeSignature/CodeRequirements-1 | Bin 223 -> 223 bytes .../_CodeSignature/CodeSignature | Bin 4726 -> 4692 bytes Vendor/pili_librtmp.framework/Info.plist | Bin 753 -> 0 bytes .../_CodeSignature/CodeDirectory | Bin 166 -> 0 bytes .../_CodeSignature/CodeRequirements | Bin 184 -> 0 bytes .../_CodeSignature/CodeRequirements-1 | Bin 214 -> 0 bytes Vendor/pili_librtmp.framework/pili_librtmp | Bin 443120 -> 0 bytes .../Headers/amf.h | 0 .../Headers/bytes.h | 0 .../Headers/dh.h | 0 .../Headers/dhgroups.h | 0 .../Headers/error.h | 0 .../Headers/handshake.h | 0 .../Headers/http.h | 0 .../Headers/log.h | 0 .../Headers/rtmp.h | 0 .../Headers/rtmp_sys.h | 0 Vendor/pili_rtmp.framework/Info.plist | Bin 0 -> 730 bytes .../_CodeSignature/CodeDirectory | Bin 0 -> 161 bytes .../_CodeSignature/CodeRequirements | Bin 0 -> 176 bytes .../_CodeSignature/CodeRequirements-1 | Bin 0 -> 209 bytes .../_CodeSignature/CodeResources | 2 +- .../_CodeSignature/CodeSignature | Bin 4726 -> 4692 bytes Vendor/pili_rtmp.framework/pili_rtmp | Bin 0 -> 873808 bytes 118 files changed, 15 insertions(+), 13 deletions(-) mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageAddBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageAverageColor.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageBilateralFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageBuffer.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageClosingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageColorBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageColorConversion.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageColorPackingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageDilationFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageErosionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageFalseColorFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageFourInputFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageFramebuffer.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageFramebufferCache.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageFramework.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHSBFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHalftoneFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHighPassFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHueBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageHueFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLaplacianFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLevelsFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLineGenerator.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLookupFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLowPassFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLuminosity.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageMedianFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageMonochromeFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageMosaicFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageMotionDetector.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageMovieComposition.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageOpacityFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageOpeningFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageRawDataInput.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageSolarizeFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageThreeInputFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageTwoInputFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageUIElement.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h mode change 100644 => 100755 Vendor/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h delete mode 100644 Vendor/pili_librtmp.framework/Info.plist delete mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeDirectory delete mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements delete mode 100644 Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements-1 delete mode 100644 Vendor/pili_librtmp.framework/pili_librtmp rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/amf.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/bytes.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/dh.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/dhgroups.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/error.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/handshake.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/http.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/log.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/rtmp.h (100%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/Headers/rtmp_sys.h (100%) create mode 100644 Vendor/pili_rtmp.framework/Info.plist create mode 100644 Vendor/pili_rtmp.framework/_CodeSignature/CodeDirectory create mode 100644 Vendor/pili_rtmp.framework/_CodeSignature/CodeRequirements create mode 100644 Vendor/pili_rtmp.framework/_CodeSignature/CodeRequirements-1 rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/_CodeSignature/CodeResources (99%) rename Vendor/{pili_librtmp.framework => pili_rtmp.framework}/_CodeSignature/CodeSignature (58%) create mode 100644 Vendor/pili_rtmp.framework/pili_rtmp diff --git a/LFLiveKit.podspec b/LFLiveKit.podspec index 411f4b84..fc4d3492 100644 --- a/LFLiveKit.podspec +++ b/LFLiveKit.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "LFLiveKit" - s.version = "2.2" + s.version = "2.2.2" s.summary = "LaiFeng ios Live. LFLiveKit." s.homepage = "https://github.com/chenliming777" s.license = { :type => "MIT", :file => "LICENSE" } @@ -18,5 +18,6 @@ Pod::Spec.new do |s| s.libraries = "c++", "z" s.requires_arc = true + s.ios.vendored_frameworks = 'Vendor/GPUImage.framework','Vendor/pili_rtmp.framework' end diff --git a/LFLiveKit/Info.plist b/LFLiveKit/Info.plist index 7cbcfb31..ad1b5554 100644 --- a/LFLiveKit/Info.plist +++ b/LFLiveKit/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.2 + 2.2.2 CFBundleSignature ???? CFBundleVersion diff --git a/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj b/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj index 8e3c2a8f..5dada7c3 100644 --- a/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj +++ b/LFLiveKit/LFLiveKit.xcodeproj/project.pbxproj @@ -501,7 +501,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/../Vendor/GPUImage.framework/Headers\"", - "\"$(SRCROOT)/../Vendor/pili_librtmp.framework/Headers\"", + "\"$(SRCROOT)/../Vendor/pili_rtmp.framework/Headers\"", ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -524,7 +524,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/../Vendor/GPUImage.framework/Headers\"", - "\"$(SRCROOT)/../Vendor/pili_librtmp.framework/Headers\"", + "\"$(SRCROOT)/../Vendor/pili_rtmp.framework/Headers\"", ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj index c6c23b11..ff43d57c 100644 --- a/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitDemo/LFLiveKitDemo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 63B306871D75D2A5006CF72B /* pili_rtmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63B306861D75D2A5006CF72B /* pili_rtmp.framework */; }; 84D8B42B1D75778B00752B56 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B42A1D75778B00752B56 /* main.m */; }; 84D8B42E1D75778B00752B56 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B42D1D75778B00752B56 /* AppDelegate.m */; }; 84D8B4311D75778B00752B56 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B4301D75778B00752B56 /* ViewController.m */; }; @@ -26,7 +27,6 @@ 84D8B4641D75782700752B56 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4591D75782700752B56 /* close_preview@3x.png */; }; 84D8B4651D75782700752B56 /* ios-29x29.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B45A1D75782700752B56 /* ios-29x29.png */; }; 84D8B4681D75783F00752B56 /* GPUImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4661D75783F00752B56 /* GPUImage.framework */; }; - 84D8B4691D75783F00752B56 /* pili_librtmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4671D75783F00752B56 /* pili_librtmp.framework */; }; 84D8B4791D757A5500752B56 /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4451D75779200752B56 /* LFLiveKit.framework */; }; 84D8B4CF1D757F0700752B56 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4CE1D757F0700752B56 /* libstdc++.tbd */; }; /* End PBXBuildFile section */ @@ -49,6 +49,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 63B306861D75D2A5006CF72B /* pili_rtmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = pili_rtmp.framework; path = ../Vendor/pili_rtmp.framework; sourceTree = ""; }; 84D8B4261D75778B00752B56 /* LFLiveKitDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 84D8B42A1D75778B00752B56 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 84D8B42C1D75778B00752B56 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -76,7 +77,6 @@ 84D8B4591D75782700752B56 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; 84D8B45A1D75782700752B56 /* ios-29x29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ios-29x29.png"; sourceTree = ""; }; 84D8B4661D75783F00752B56 /* GPUImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GPUImage.framework; path = ../Vendor/GPUImage.framework; sourceTree = ""; }; - 84D8B4671D75783F00752B56 /* pili_librtmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = pili_librtmp.framework; path = ../Vendor/pili_librtmp.framework; sourceTree = ""; }; 84D8B4CE1D757F0700752B56 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -85,10 +85,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 63B306871D75D2A5006CF72B /* pili_rtmp.framework in Frameworks */, 84D8B4CF1D757F0700752B56 /* libstdc++.tbd in Frameworks */, 84D8B4791D757A5500752B56 /* LFLiveKit.framework in Frameworks */, 84D8B4681D75783F00752B56 /* GPUImage.framework in Frameworks */, - 84D8B4691D75783F00752B56 /* pili_librtmp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -98,9 +98,9 @@ 84D8B41D1D75778B00752B56 = { isa = PBXGroup; children = ( + 63B306861D75D2A5006CF72B /* pili_rtmp.framework */, 84D8B4CE1D757F0700752B56 /* libstdc++.tbd */, 84D8B4661D75783F00752B56 /* GPUImage.framework */, - 84D8B4671D75783F00752B56 /* pili_librtmp.framework */, 84D8B4401D75779200752B56 /* LFLiveKit.xcodeproj */, 84D8B4281D75778B00752B56 /* LFLiveKitDemo */, 84D8B4271D75778B00752B56 /* Products */, diff --git a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj index b6defbd2..5ca2ffbf 100644 --- a/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj +++ b/LFLiveKitSwiftDemo/LFLiveKitSwiftDemo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 63774FB11D75D30E00E4F096 /* pili_rtmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63774FB01D75D30E00E4F096 /* pili_rtmp.framework */; }; 84D8B48C1D757D4000752B56 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B48B1D757D4000752B56 /* AppDelegate.swift */; }; 84D8B48E1D757D4000752B56 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D8B48D1D757D4000752B56 /* ViewController.swift */; }; 84D8B4911D757D4000752B56 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B48F1D757D4000752B56 /* Main.storyboard */; }; @@ -22,7 +23,6 @@ 84D8B4B31D757DBB00752B56 /* close_preview@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 84D8B4AB1D757DBB00752B56 /* close_preview@3x.png */; }; 84D8B4B71D757DE600752B56 /* LFLiveKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4A21D757D4B00752B56 /* LFLiveKit.framework */; }; 84D8B4BA1D757DED00752B56 /* GPUImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4B81D757DED00752B56 /* GPUImage.framework */; }; - 84D8B4BB1D757DED00752B56 /* pili_librtmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4B91D757DED00752B56 /* pili_librtmp.framework */; }; 84D8B4BD1D757E0E00752B56 /* libstdc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D8B4BC1D757E0E00752B56 /* libstdc++.tbd */; }; /* End PBXBuildFile section */ @@ -44,6 +44,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 63774FB01D75D30E00E4F096 /* pili_rtmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = pili_rtmp.framework; path = ../Vendor/pili_rtmp.framework; sourceTree = ""; }; 84D8B4881D757D4000752B56 /* LFLiveKitSwiftDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LFLiveKitSwiftDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 84D8B48B1D757D4000752B56 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 84D8B48D1D757D4000752B56 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -62,7 +63,6 @@ 84D8B4AB1D757DBB00752B56 /* close_preview@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "close_preview@3x.png"; sourceTree = ""; }; 84D8B4B41D757DCC00752B56 /* LFLiveKitSwiftDemo-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "LFLiveKitSwiftDemo-Bridging-Header.h"; sourceTree = ""; }; 84D8B4B81D757DED00752B56 /* GPUImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GPUImage.framework; path = ../Vendor/GPUImage.framework; sourceTree = ""; }; - 84D8B4B91D757DED00752B56 /* pili_librtmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = pili_librtmp.framework; path = ../Vendor/pili_librtmp.framework; sourceTree = ""; }; 84D8B4BC1D757E0E00752B56 /* libstdc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libstdc++.tbd"; path = "usr/lib/libstdc++.tbd"; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -71,9 +71,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 63774FB11D75D30E00E4F096 /* pili_rtmp.framework in Frameworks */, 84D8B4BD1D757E0E00752B56 /* libstdc++.tbd in Frameworks */, 84D8B4BA1D757DED00752B56 /* GPUImage.framework in Frameworks */, - 84D8B4BB1D757DED00752B56 /* pili_librtmp.framework in Frameworks */, 84D8B4B71D757DE600752B56 /* LFLiveKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -84,9 +84,9 @@ 84D8B47F1D757D4000752B56 = { isa = PBXGroup; children = ( + 63774FB01D75D30E00E4F096 /* pili_rtmp.framework */, 84D8B4BC1D757E0E00752B56 /* libstdc++.tbd */, 84D8B4B81D757DED00752B56 /* GPUImage.framework */, - 84D8B4B91D757DED00752B56 /* pili_librtmp.framework */, 84D8B49D1D757D4B00752B56 /* LFLiveKit.xcodeproj */, 84D8B48A1D757D4000752B56 /* LFLiveKitSwiftDemo */, 84D8B4891D757D4000752B56 /* Products */, @@ -400,6 +400,7 @@ 84D8B49C1D757D4000752B56 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Vendor/GPUImage.framework/GPUImage b/Vendor/GPUImage.framework/GPUImage index 9eee6d4f0fc2fd6a4ed0af3006757377f62d41b9..6ecbe19dd0a3f69aa15e438df4c0cca497cc71ab 100644 GIT binary patch literal 17794936 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

    U#rVkp5)6* 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�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 CtxjnF|V@%XH+ZL2eSj4 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�O)r(!|L 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

    8^;I?MzJ0`7I1le{TRX0UJU!5o(c&BUFK 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�G2OBoKIEi3>A9#Ho=}7+-C*yfu(*D!h=f_L( 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 z%0DOAHx)aJop~}=d}RT2a${3NHEx6^t8{_|;K-j8g2+2cOC!NzDs#j#aM(NcgTe9r z>^I?#!POy?jc~lMbKh&1b0rAB1djKVbo}x8vZEiTBcR^!A$*UNCDXkN{`Y`0efp=N zj^ZJ+5B{6r?=JqI!p}5NWd@&v{csOMhSzywjo`B*uom#s;2w3ztpm?Xq!aTYKJ~=G z1{~{a@M4e!w+R@_V*?z2%-d6N{Q01hzZIbQ6Z3N>=NfB9k0Gs^XjIuiE#4Mn`{2(H z$M50<{Dp-}=A*x;eFXjqSz|FWWMZ_cuO2la2Ta!3(Zl{{U%BeCs_=o4Z}ojLBe=94 zY@WsH`V!vA?FNo7SOh%_)fY^R+U9aYElU|{UPR4D7XsTvm(0Z@Mm2V0wAOPY zL7);B!j@oLTZAn?TnCmoVSjFAR$X~@v$4v-lwrBOwlW-=Q{Frs z8$=dyzX%rI!o=;>@il?D^;H~j)`y2K2vn>2>W)J>@TgcQPp1iUaUW6}s8kF8%EI~O z&8rN4&V(Or306pC6R>yq==NsMn+ApLRc?$^4Xt&R#j6_{T59Un7h?%AAR*HiE-W;p z+AC@>*JX>&t**z7Z;4u!ZN@S|O>Ohy@+M5-8|8eUnOTo-rQyazFrE1PhBdW;vvA9e z#?+$37dP0Nu&^%53>33!h4>SwXff2|RA_qwH{xN}7#f`3qr%2pR#v5|j19A_440?? zwt`?Sv}{&ueMJ#wg6wiM)~M|kHe+v~K#cLZD7`vtQNgtrf2e~W@o8o$NJLd47}D*M zw$lnUHdNF|_)O(jtD>?y328@8pBq8DR61e3skrunfDx$YHcez-ZK#ra%!Q52Y%^;t z0>NFNuFb+ged}ri(`Ev!#W%Ey4gOtBtMLJ*@;Vgp>T;B)P1HP}oe&0z)tK($mwJNj z!ihE0wu0Hp#I?1R7!wL+tLvVj?gEV(bsK8Py`;8RSYvh}Td1+RR_!iv>a|-yGe(%O z4XX0_BBKKR3N>Lj6Z@VTJ%cMy$P#YEr8JaTYRSEFe)&3lb#JxZautruRs=MzkOmCq zP55Y++Owq)ESKBOwD~No(a*=e819Z)9Z(DAU2p%8RWiHb7c6mn%n0lI;U7G*0sBiw z^kZLud>zTa*4Z`K1hq&lxpA=oPo>b@Qn!9lpdwJa22jWdD}iTkwBy&SheMC1;J-g3P?r&-?=HS1ud$X26tXs>O;Nqd84 z7qSu921><+o-0DTfNTMkN0HKZMIG#Pm|bYMzlb1v*Ioq31yv&gvv)YuHqWfD42>_k z@a>MI8i;Cb>JovDs0#x7;aaeViyPe30dn75rY6(ebXJ4)*M|{NKBI zbj(i-7&Sxf>{?hjqin|9;-YDb3+8Yu?c#-t&n}u-JSAtqck;!!&Og!?vOV;bz3;+A zBRDCQ{crWfL~WL%bY>Qh!N=S1pVN6Wr_C-j9FuqdUe<>UbJ))*wfUIvDE}_%`P+Se z)v%{k|Gf%T+2knC(59;nZw>vtJSztO$BITQx;uvFH1rkHlduz2FM9N&0Q(P$OkF$@&|7FYVhyh}DDY}$~pc>`Wr z#9@TYTpG%&PhS+2BdD+NO0J*8Q;a_gm62@b$5cw$42_$cf-1rH%<+-E7}iEEm;on? zDIrV*P>AWWo(7#P#`sFqxE+h8oJ2r%qN=%QG@JxKz9MX@AWlHJ?gfh%Gw}f!kLBhz z2{)El?ZYRmKhWoymFVSqrfZ-PWg^D+2o}O;y-lBMT%zwdJe-wqjfarSh`t>DkKxQ@ z&y^rC>W#MOAHvHsM%;<9DIigvII1%J@O!MN_;H{{{9ODsh5uwS}_}iKsaa zp>E&fnq^tI4eJG@Q++(*?x?Wr`TWyrYbfKp~D%PuUMY*$@!_&X=DxSPbiR)(ZfQm>q7uc zD|!M7BMlzKOf2+u#TmeC`WAuE{ylx6fN#aUqLJnQ}CJ|o>iDwh(Bgx^kX3F>GgPi1(LJ@e~e`ItykcKLPPZ?&!54i zn5oHkf%Zer5R!Z^{C?&4BtH`L`;wo6f2hLalE;F+p!|tOYV3muu{@rU0J@t!cot)i zsrX}f*iNJ8!uvcVqAGf(MV*~S11kr>k zZn2$o7P87 z@!*h3qnDYFzrN&R{QVq`8LtoeJx1(OFj1apFKS^YyzyzhNiyOS({2YnA8>pUGw^`s zl3fEmX*^#*g{3e%Piiie*?C5D-I1NN*EH9|H83^p&zkG$8klB8b2!=yC@$W^HA3qP z_&xExL(Mw|C>vIM20H#|c-TJU`+&&@6OFbK-xth6Fl;pO{V>Kx{~la7I)85xU$=}j zT*TDa)U6NmGF)?gkryM{1vMFf5)q8Ak$ab#b5O_iu3>E=ph-vX7&I`o7(B;%5-KhTr=IyS}R{RHM*G2YOZh*d(lhnC$;talV^Q79hc z+IBI9Wn5D5XQGD|>DlZJRb0J@2`&3?;*VFzvb~DG%)}qAxO#aLT6Q35ttWn;ypV!A zGvWO-Z_0K(2`|rR#h}(tRgL@mNzM|T(;ke1T**J5J2>YrM z)^43sS~JbrMxM>N<;Z@X$Nhg*3Oo$h11!WaM{#rK^@!) zq@SripvSYxTqDVqCtXjatLv%j&Va&%Yk5|orRm{&vZ*w*#H$}pOH_+-LvbT_* zU68ADZ+&CIH9uVRUf!YCEFHT!9lUVY>>>wmY;?WYXr{y^r|kq2Hp<%F%_ zxfAlg{_M#;e)*Ldx82_BooBxHqsX(bJb3($?a%#e$LN6<d23g9hV zCS~6jCpgH%amU~U5p^c+Yq;;?1eN?-+zU9tPUTXlgK&Zz671&++)238aTnumzzJ&T zXSkS$z8*!$oFEqw@X5v~F!cM z4{|FihFARUI83QGZY`_dC1rKotVkUsiFA&`@j28Fl&Cl%(p@2u+9{ig`eqX8VQOue z0Uja^{H*ACNNH8#Y(({fB+|pviY$(pr{3^zf;eVctzGz5%k+c^(i6p+*VU9Q^(1XX zbw(soAH`~^+bog#(AJjvDH5$pXjzal)7sgH8jnaz9bg+#eE^BnDX=1SSS3;i*hW;B zULtjItVkVQiPZnKBJ~X=QdiT8)T@$6!$B*WYEx9F#HOh3l(f{hvLf|oB+?MjMpSQ4 zB6R?V<8x?~Es+M^R;1pvMCzj3i0W&r0zHRAs;;~ZQHN6@>a-$KSJbAjp@Gb3#9)=p zV-As?^H!vOrL@%1v=P-cl}JxqtL55HiFE|q>u$7=YX9C&bNJf)zJ!Z;VHe-<$0CdJ zOm|A^Hl)hb6<~R}j<}wl^Qkh|podOf;)S+kg$nYb5#8o$jOE^VqODDN@JhO8ZOu3$ zKQi~c==qUz!fLc<;C}G?wl<|551)OW30sNioesj92s?0hTbs#?vx`hNFUE~e6E=ye zli^*dsuB7SAhi$&s<_a{T5B<(%q*V!ROY6e8yhCnY^bblu8K|2JMvE@6Cdwg&4l?e zy=rXycnex=Ay24TT=uD)W3Zsh{VxSRTXX#JcO;2<{zOTC3NNUF1=hH^al&V^(AvK% z`&7%U;~Pm=*DXB%j9lQ(Giz4#e@1c|tcvcv`bR8{WW62FfkkDD&61<>YxP_=+^i+6 zL18VB6Zs40;CRBjMNP8+0^m(6LLT?!ZaEe#4{?8`5j4+uHP}#?b}{{hD#%D&Xjxi_ z1ji#voECNY+?ra`1i|nObCClpX?zQ_<{bg73^ZMgS@Y(_Si;iOu-WJBni?1~?iQZF zF*=^L+^lH#SEe{oU?qz$il=H`vmqnP@dYM68(ijqgoNS%M6itGoQ0td5S#JT`iG=Ec$IccY=qtQVr*+GvIg+n=yGiLgkYs29HN%kYzH)p*AUTamw-vECJt}ppMg?(MtTKQ4PYT@<$mGs0{ z5>Hcsj$awDtMG%Y9rlTd+j$G+!hjv|*~HVDT8`_)|C27c%a8acaLUgk*1yO4I~fF3 z*?1aIf5XbJL9U)ZhuMGT670ErO78-k?42e(sx*huneNi!OPdcQ2uN9+;K03k6QmueA0;AfiJta;&X>bwp;nNR(_?GUu@-H zwDJqAe2bNDvhpS?UyDx`BULth6~5BpIvV*(D_?5mrB=Ss%I918Y%8B>-Vw#Qxve|+J8^}mDaz)`aYJX7g=rjso2GMJDhHp zf8|ehMp?hN_3?~+2Zf+;jWPP*sM}_eNfS`Zs7S&A*6|xlzXYvUKay)ab(*C$j@oW% zji0nXRCg-CChYIDw7yMvllYQr&H9~|*1GlcExihQ4Eh>&YMr{yV=!f-wrPN+)eh8A znR+1CJv_zIYA=@CxcXM&3CSrOz0iIIIsfL+q>`h%1!&2fd_T^`(S-qeo}vAaao7%7 ztw=yV%Gk8AeITd=T9lAV{ReP*n47|kCQ(C{sPNRGVB!8Z(>Pz$KZ`= zQyt&vFBx*{NBvBs09dAvxi-FrsME-P{=lm6S z1~R4XZNyI}j&0Eao=iVmfHxMW{R`5hLFy*)>(SF49u^)23A>bzG zP=LmQyV2FS@HJLy^(OOr+?L{WVA431XFg5~P&zsu#E$e*4^86TC$q*}zfQ{J zKLSrCuT`}qjwiD(_ngC%`8jpS$CJ4p>Cvrck226NKAud|(JklPjiALq$h7;L@;XC=(f;!m5hfSX zAj0$_u0@1lTlx+VVSX?&J#NcgoPoh@**ol&z0sPKfMMwr?WOsnAz=ch0%$Kx=g0VX zzG-tRCX2?J2G(VA0&az!2LRj9I|X25_8ywWH)TGFEH+rd+QJ}V$bfi^Ukw__RDcT( z2_n{<++0z0z#+xP8^4(-7^!O*<^RS_jV_*0JPkY%r?@Gu7*GK=#hDpnwd1Ea$)rF5 zNn=tVAwF`g9ThMVOlQ(~rIV^*laY}$$xw8Bf6p0N!kDo6+C+qj;}4iLMPM=$$4{9s zM{v~<$ zi{9kjFTnp%-W^`ev3x*h?`{m9&WCiC3s4s3 zCK05z+{d}mnEi5fsx1FKnm6^iH4ZPJaSR?!em5j2@-!aPSXom$LKo(}VBmx9PH}A( zxSZ|{luaVUcL_UvGzf?|##;EBI-hr5Y z;yHwC{HQ}|+yK1;`U2>iptaITw$yjhnEA`NJCKW4F>8MP2HehoEDJf&ydP4I`h?{y zXyseuTph}j!;qOwJRMc|ongu7n&>FT{hP34f<^nuA!MwTq-qogjENJAyO3ivtMLC7 za!j!P#P8Ror_>od20I<^ZsQczU&_#hBh!T=(}g3`g(G8-Wx8-=1mfejlbuM0y5l&#tdur$Wk;|Wk~!fYU{YU|k6VM5vLBO52wl&)o4+A^niFu;k8 zRqMJibP`4KF^jGfSem2b$lQqqxB=+#&-}Xe|6>?B!A^2-*D$pHkAtrH9g{l%Q+=2(bkhgs%BBe5g30^`$v`L>u6kccFl;36ZjcuF*yR_w)t2#=zu&OmGz?b{#V~eTxA*`6i4&0Q&l9 zHFw&u&Po81lNoJ!YtuF-obT^?|=Ne$gC$n>s*_Fv`tz&x_Q(Kc*FZv74#enPx zN(GH>#hlRFI0LeyNjfELKz2@Xj6in22BUMgAUn4}7IStMWM>kj&fS9SlqRz$JJtu; zX@R{@%09@B&=>;j50lwnC$oECO$L3Cows36R<3-IolINi7Gx)W0zSx2Z$ftw!Gi3R z!3veff$aQ|l1T#Dc^QGyG9Wv8wQCrG>`aC!RR|zE$3yF5VFR+W6=tg#Kz8czO$>qT zoC5O=?mGjr^9+p2(t_-qi2OdWKFH2F$?O%dIzpY=g@ z^uenMwIDl!t_hQ4Kz6e50NGiFq+mWYAUkWIn?*(Uie9k8Fbz z$j%Lf3j~Ic!X3~*H*};>pH2I8R^k27+G_#8n8FG8`tDWeH@$PeM+hK0Pap(j=Xtz+ zb-U0A5s>{BZv#?C7&%6J|hme&jdkkCUg?Wj=rB)#WEl}`g~vY(}3*EfDnq70ogecMwP|~*%6X@ zE)qa?U1|c5>7jKmxL}59DG)(6=c=~xT0qgwVkWPt3b zaIO~VgY4)T3CPYLkVN%`vH{t770#5(Tq6m9?6^|#L3Z{bxCZAyb{?SJ{}t}9xJy}g z0?1B3f(K@?K1K4L_>vF0%?iW}-Wg=>3NT*(A6d>t#A0?S76I8g!FVCr2V`fR@uGfM zrosk3Xyg7G-=yONVu+J>CtCd*c&($XZNXOnAUnS_wyfn0qcwpke#Dhm8V!@@}|S+VGqd84r1voQD~VSqk9yq*2lL|jK|x> z5Xg@D5TROCd2hJls)rR?CTSny^eql4s52v8wyw_MDATq+0+}<*&<5>Bxs0RTaPiH; zVZHFuK}tCPOMiXsFBy%OSvVwKc@mn<`d7Yu{{2g;?-{Z5iw7Kc)93Dgw6v-4&G&EJ z(nR=H+@-kfIK9|<5Vs5Wv`!vBR~g_iMTqZsot(lyZ^KPt!IxNG_7pw}r^6HzzSGaK z@tuAU%|P)|&rvp(uK)1SvH0r8={%Je#dkJ?Hl&|wLuKN0w61a-uD299WN&X#XDAwj zuAl{AS}!ZRTH~n&w4${DOdkae#0|mGjG1y6ga2_+XFe(7jLK^Jj^iHtS0K-{azQ@C zb*J2i;3nhd;VN)Vxbtz>;nYQb7^l9IFbP$ty>KIN2jlecF2^!C>7j1pKY~=svvF3Whnhrs z!da18cg5e1!<2>w*0MSzQdW<~iqvzENZpFz_#EmWNu;ic6{&|Jksc{Fq8X4O(m>6M zG=P&I9gEs-ALR!hS+i3F@=MXFg6sV3QodJ;;cN23*~eUK=C!=tJxkw$)2OPxE3 z)LFFV!!}>)4p`CiR;1pZ6{#Pki0W)vk$NB!Y3O7{dS*+c2e?g9T@Q)W53wRW`z6wF z$wpMqNFwzIhU0T+>@3k$I4e@mQzCU|ZAA4;IZf|59HHv=+7NZl6rv6uB6Ztr`szl@ zjC$8r**u95>6vIn>Vrv3oiZCy-8hN#bhBEnX_Z(iFMuVZW+21UK(z}mCTTMNUpI4| zc&Cz>xlSN*EMpUw#t9V%@NS`TT~l5C1h@2H-1>?}wloWQ=UpB(u7Z^E>e$A-#0DpiR7h(bD1Lx zZM^w5-fSzMY32HsP4=c)`D81fXypa?$`777uk$c2yJuT}uJwcJ~a(-rEv>)PK-foM#sLxU{QJD|UAY4y8naKa&J!p_B( zeujGR26~cf9rTYZJsJ9|mezV`4aGD>*V<=DgHNKm{)pt9kM4sbtd7>U??<{C(7uQM z0`wI}ho&JMy#e0Q;{)_M;yU@t0DYmMZHO87`1I!j@*g5{_$2AUMv@vBp>g@2@1%jN zNC7RGwXmeDtbBO6YpIf3u{7~JP_#fB!?ihAY5BqhWlQ5GgL&I4IFgTukcvW*q@EtU zBaKP|5+rf*NopNKjiggcm`g$!Nm6z28687|1l7mKuVQ?8S31ZTf5BddupZW8y4CS6 zJGC)z*!bSmU;_MW&^&_Y!J-pe8-q9+DH__*DS^n56qvFiB^|WJ$Hmo{G-=wwlTvUs zO4w|Yky(W;PlK%Ss}KJ2Pnrok4eQS`jHPk(iv4@}TMA5bWY1-~4?X!(ksDz3%FFdV zP9jn&)__6;XRP=-meQ~<5s`$eVXjq&SQLt{_Euo+klr2)WXVS0u-CgoEQ;R{QH?ZP zDj6HY%i`^q9uejU;3lNSqS%EE@Zflz=wkT3^5hPek63L(th&*B_nd^^&`O)AXVgR< z2#PnBe8?P4aB4mbj)bhFVn7VwMARRsvNkTo2F@g7X%BW}``M~Ao?nn=}kxz^f z$76#&mA4%m!6W%xOdabGS7Q@4)K|IR=HqS7C8cOwn*y-o+O)VD5iY_IY%Gjl1wS|G z^3f5lhQ8lYdDLS=@v69HR5=}StFBBt!qpgy4c#A2@faq4ijB^3H6~-@MmjEA+S`bq zPW&7Hx=NEk>Noy>q>&gw$k37T^c~U8Mn||BdcQLj?fH9Qqa$36se=L6r;~ifXg~Q{ z%G9}u+cfLhHP9++`X}(+Nxwy%QSR==gmaE;1Go-9qIFt z23Mm58^ejZZ7*zegsTz5#&r6WH|>Ruj&L=up)8e;mu4rOhnT>*bdIa>05%2@A$Lx) z4X*E2Nw}>k!_F}=_F!WadSkJnguhGuuo(#CqjOA*Jjy}M>r!h2(j0Wz*E%|WzjT0! zu?ibIcus!Hp36Ondq19!{V?X=l6ngJ`P8%EDRlec_hvw<4arD1j)}poY@QE@&9|-G z3LPE~Vn_O^$2bJKR?0{hCPo(~#){?Vyf(H~wdBN>Ia%B0w6>i06Y2(-7%f+8&%1M8 z%ert*YguXQSGl>)d9dJswsY_Av2}t}PS~?;&Qs^S7P;^|?P5~ew)4;Ex9#j6;SE`p zuMOZuX=|-dZ+rOMwjSr+MM@^lbkvCRoQYGYI1>YLrr9{BKci?DUOk2sddztmdu6Rf zHf+vr*cGi|7cHx8=ZnVLzOwe*!6v^Z2e0_FAUDYEbmjJ>-eqmgPqj7Ywe5U`NGn=z zGdjiSw>9r>y*VCxMa${Wv|eKkoc>J9dH;?2wmG{f7_#3_NuA=9BP-f=zDaOtYn3l* zx%_h^wr$z&mJ^<8$?LT((hK`Xx0bpHS#8a`+I9|-kx2pBp3>G~KD+JVZKv-c*BE{m z!)2|xzWk&Rk`IuyoW8ql@*%BnGjGDxAyaKT|A|<#XMEX7UR(2?ww)Oy(zbJ`l6u%F zb8&v{)23)JnMrtA>y2@R6|LJH9WiFK+@P%WTqopmT#&Fp(d}t%jEA)~Khqk6+qTU(IwRMo~B_*P2(+=`l7utFAWIEtQOUDb4+ z-RyNcoiDs%(}jPusCoVBSi|(HSYu^FO??yFm{0fE_MTpoLk%z(;0UYu5KDNLhFoek zwx3?%zSmkjv+pum!-6WV3KfG~9WN!bIhqHcXWe&A&%+s>OkNE#IxLk-31_SN_or+9UFC# z4v+Ad)>x~T6^Iw!gd1Ck{|5Y-gipq$&#ylOIG2GyZ*=5zXxx+TV3=&4)4F~dljwMe zYm*Co4l>2pm_lQ(UC0ZOBR1oXtpq3^+(TX?;Y#CLo6h~#Cn%1+Fm2|<>65*gLtVa0 zYbu4CGgLaduXGgS{!JJR?P|rx+FXWjq0AkyxS@t`N6pQaMzpLxjc_(KFO7I%thye>Ez4mkE&^C;0;|>nn+5blVBy)Nw7&W9=@n-0n=D(Xu_Dza%oYqYfi1%u;!?` zs#rSNQf{ntavH~2Q{~!3&<3`gX=f)OENO14qamoNOdF-7_LPdvja-8@YOXp_S<37l zUqHs}J`ZziE7ml6>-G;k)G&QeJxfy< z9R_rg!+7LbK2l+aHkQQJ@S$r1;dAR6Dq~CQnk(1Ns;IA6T~n)zlU{6}0v(1{Y~*RJ zZ<0IED2a!=Ce3|fZElM=!1SUzC->qqACAP_^C>d_hK~#9*4ET7k2P=yP{EU=^XnRF zPOVeDkBfb)#zOjdDGJs^Q+pf0FSD`AGI#5{6HIP2Drn`zw_f&G;X98mcWfOq1v;Vf@@mtRl!JTD{kV~vth{_~^M=aOrUu*A zcpEEfn_a_W?rk-s+CioZf}{(ANAZ zs7loBG+lak=h#k~S6{O!R;%WCakW2|01?6(h*kNL8cj0$H&a<`eMS9RZdA|h>r@`! zVu*U5SWegl(GZ7T_?W9TyC53=H`mTgO`ZUh(o_>`q%Sm^;VMu6iiXXe?Y_fd%WrJU)>hQBl%SqIb9sG3%|@@ep;jHJ zB?~>htX>kUR|mn36tRZTtBq|~)3nxGy_vp@SFyUWuC}=;=FcAy*Ai?xQlYVgWmmIg zK~|l*=*G&mF>riH!OS+4*$zLGPIZkB?!L{LN905(#_=AbguN{%iSnr zRy#?t>xMNn`Kt8Du}yb*$#Qy?zM!^l!nBiE*Gx}7NPDa6>S}!f32TJwGtL6JOb8pz8*-~aPtU7oNW+5mDhMti zokfG?38$6rJfrR9I=MMUg>l!gRJuGlXV)}PnmO=v6g0P%F6s7L^G@N@dlskzqt-Mg4*eEL_oWZ%)-30t~}f0n~OT zI9As+F`)Oj*O=9y!X{=B7=N$Xu%6U(H`-|6as}oGni?ujC#n4q()4ah8aW%%HBE}oR5LznWE5crT}$gU zqFY$OR9};Sjg`;x%Jo%V*_?&`@PanVTzduzR3Q>C*F`KZx1BJqv_>he{}o&i6c?r} zRdc#Fs$Xb!1T<@TV24O^jf1;L`T~EcuxK_hTJCeSeE>!2V%RI-=Cf-zbA4hp8_lH6 zhPukNOnq{d>2>D&dmAR3Ya4Pc_nnouzXkG&|NvXmkG%!rDQBqsKw!#&*e??U@DXsv7n>+C`W*%cp zn3%8g??y8;)x+wj<|a*C1fE%@{xT(^Dc3~z+{aq$;F|fEZl9!J{sR!_Rx?w*4i}2Q zJNIsbJ%CB^kjIK3|L7R`DH2-HYkgk0dv5OZ+(UQ;A0Fj}yKA{vWM6MVuW)x?8Xb=G zu-se}GPPu>Td&Y-XU1c_cqa0!0q9TDn!9{-7xYrZX*rV!$>|kx_KjxlSxnito@sSn zJ(D^5yc7|!@_S&9w+_9qHiP#AJ$%AgDDd;fI&$AMF9iHVm42^Yp*?5jDXYEr35_J? zK2c+7-(Deil10HRvNFxYP##&8mB=j169$p^=eKk}YfJaDwd|~amZ#I|L%s$K;-msW z11)d#2HALq89biSFAUAhsj|g6GH*ezXU`;K#ZfOKM`bk`W(Xe;SaRrOFC)`0dKJO2 z$%H6fF~f6>HI_oRH#<4cm>m%;%;>ASI3rU;6#1y2DEH+vyPFF!dIVQ@%m`Cp-a#z8 z@Lz~T^zwyO9Ao5hY{L1-QF>#NQ7!gHej*t~;k)p?@UJ8azrb%s`0o;g^}TK+tcn>8 zm-3q#uH(0x7de^Wiy%WiqF+;J#J6`9bR=VB_Sh3JG5!S$HSESz*0pDhR*E?*K3IIx%|iN+~=z+6S+jOJUm?$2)|Jc-|ExQyS-@J4l8Y{D1R%Ny+4`#Ev!k?Kq6)Dajbzv z$`08x&hsIWa(;!`NY0dkY_^Z~CX($OgIVQ84uO6WS#~skCS><#p+k|QAu~C_+*wh* z&&&+vpMa#tkw5F8Mw$^5f;JCPe-U`7`1~D);RZ zIi~10kmHFGIgaFu-h(?*oN$wh_QhOH03B*R<>PHN2QsiLBCuC<_WH#h;kokk6 zui!HWOLtwHB7x86=`EO z!wEO3=yAshH>v24jx)GPkv-)5n}~Yk=Z_|(oWDXx3i>7PfvBxt1p`8%+_5mK#03Lk z4uR2@4F!W>K4&Xh!C=1SkDMw~ND7Pl%F8MoP}CFu8pMSIbuRlk&fq3RzD+<8qMmO> z2jfK|CSS84d-Tc|=vPim;$DpfS&zeE!OLkfl7d7|w;)g})T@vz6;q$p=1W1!4yMF39W-FkZhuTh2wqV)o~;*grexOU4Vye*f%< z_Db%b9reR96*k~`8~4BQO*&2>2Iah$(du^zPi1B8>-Y-jpPm0tW6N63Fj|MwSCZB& zd|xX%oZ8SoJ0y>Fy#5M?(6SR@pG7IVTS)C*s2IedL+DgIg*-Imu|h65Txh6b%!JDB z@hl<3-XkEpXaIuYdg|)=Ih1~Y*D87MFK`C*1++#&PvX$B9}_34*wIiZp2QR$Xy?pD-GDdR20YJI-i*?c+(iU#r;218T~d%+0du#Qr6mP<=VLU=`D83F z$-4qt)ih&8N$%CqdXQwSLg^bY1yZUg$-5W2zv#M>yjP&th^{Zm``tQsWW zQj*sf`gGA}R^(m|{a4XvVf1DgwbmJ1OT5S}xKPiYB3GP+6KQk2$SMNPkba-O^0Eqh7oCT1 z?sB1l6fjtwc{02c8Rczp~LqfTKgHe4OcsxuGh5?2-VMx#1 zK`<(=fhWR@a7;OBlbl*5%)ySSf;rMLYl%||bF)m>z+A^_VPpCvm>V6l4(1le)WT?g zRim~Z=3d8afcd3k>R=vsOg+pqFseBNn?j-7zrx(XWgWOB6dIMoH8vq<6hehVxdZUb zIh{qkv5vWHNYCtPFeYIG)|NfXh4E;hA=GxOsvZOT71b{o{_{EHM#L$Ao7G|>hLgf;(m=`54Z;86uxmvLq!ncIZm zKIp-RVEPQ0pNg3Qb2ZGPVh)A51?F)vhrv7sb24>h@Zm6jgn3=eOqf?;{wTE)n190P z**y3Nm;y>ukNv^3U2h#{st#nidXThjI z1}}iQ3`PY$_{bq4FXu#3jSS9B6kas~T}Pl?DTTYB#^{8jb;vVA(Tnl2LeU*~(TwO% z@VaG0-w_vyPR4S#tmtaINLJ(nVx7eGD$dJqgY14PbSN^4Jl%-PD2gcKHzOR99~nVo z^f2Vmo_*yN4DC_03txBf&;rW6Xm@~%6#Xf{WfkoSaCu%t?Yc%g86zWKhScyTV|@PE zq>wY3rYc_8u{z1|1Z=iF%oPKEEF@`S1a7rKT>{`AxR)>C! z-=#PQR{CQMR&MsU9c#K2**}HtMZt|RSh?A|U|-|}#u%*J?B|o&w_sJX#+b2Bb|yIq zumh6W1C!ag$?UO??Ln3^vKx|EFXsSGs&>@Gct0t3CW6B_i&3ik=fNo9QF9o~eAO{? zDV)1tbnc@j8MD8JJxQ_57$bWLD;`x8qo$b9`egPJ$C`0R_IF^jD49_Q8RdtP*(a0P z*OOT{nj2-Xau-;3|4OTzOX9uQ8SF?_z4_l*x`f@Qs_*>E{9bYa8!v{FS3CA zAH`{nye_g7@sz6GOJ zV06E=d0|e%(EZou?c?YHYqN`?H6$FZr&>n#{*E;moY|9M)%6}tcc0K1jx`vZ+4CH0 znsv{NSWZILqlf8e-zTzrWHmR7#_L(YRCDS%M{v@Se&q#OdQ4;18>9YQ9GekMvq+VO z!yLrsY3pM%N+4W7`fUb}@v09O{Nnk?R-f9d=ga>nMYal8k2?#e)whZ}OU60W#S_27 z^6FRy!^fqB2SK=`mzp2h{M-i_-Nxc;B0+glTF!njzI0RL>pYy!2*QuTQDEla0-AFM zEt|673L4%&cZKN`=&qR$ePl-(vQL#TIEpkk29Q8u0^QPwybeQgDD-|frK#{S_~URB zaR=Zg|ycxJdaYx{0d7-AU%E_X^}|K)<%Q=?$p76N#}*8!FMdv#iWgpe zRvqIrqh1+;eV|@|5sms_T(PFerDzVzkchiWrZ_;-}lh^x2CTD-9ER^ zYd-y{d$&yau;dmD=!?r=!OT2&RhQGuOdrc z-gEGPpX|E5*E`RwJa^FT@7;UsEB9VMZS)IY%iUFc+@bG3QS+C798>qb{P8oNT5;^u zcee^pa@A2!JaFwdfARk4ffwX{??;hmn=x8s zc^mJTeBNujA1Tjxc@!5=vmT3Z6*x_iosYW?cL(laoIbAk3r;seFWd;6<_Z?#%5e?2 zb8%PTzJvQIZa3~#+&^)BsE?ZbnuF5<@O3!B4PJuNoYsA~$8dXan(xY?4H}NqY?C$? zJONjaI|p|;?pB;I7d2O*A>7|_n%EePQ=LBnSC2afcR5b?z&$vjjK7TgJ8oYp>}cE! z++y5nTr=(>-1WHc;~v31iTiJyrjUB$M&dNdseABb+;AL+rhO#R91zW%4z-*T=~2QX zN5_viIf*oDW3@E$kw`-{tEJXSx35|%NHyO!M1316Yb;|$nq-kkQ!dt|x=j+P4`s8b zPLo9HAXNN0G8RG*)D0SP@-| z+?xC)XDux~?yN}tDi!;?II^QYnhnvYP$3$5BGP!#TGoWK%)E{pj^j{=Pa^gHtd{2H zBziGXh?=mLXb;Y&qKO@eG=pO!nvNu*FXPCP#?@9?{az`nk8TrIzg8lR)~%K%l_XN< z-D+ugA(6%!HWke=Nu&uUE4mR@XFLi=!kQ(pCN+eSvc@x3S@UQTY3j{t>8_SYGuc*4 z(|ridcG=Y>gXJE6ZF_1E@`5m-0IjN!ENKiPktWJ)M9m&6;oESSt4NqMuauBhp4lRgEKaV_|70w z-;N(Pg608(SgGRoOV~1$>y~wdi@NKA<2p9FBhuhkW%>ef4H<%vH@P_f*9{W_^ zQQ1$;8Yiq|U3_djU!P5wRmWN#mIO^m>;%Sl8)kE`cF2n#b4}`m=EjBzH5)2xo2z0I zw3gocZ0%{4vJf$WVEQQ+Rk;tH@YyP?PJu}EozW+PeEkFwKb1-ptjUd=8z+1wFHsll z>Ho$W@Wj^%i8afgnWn;hPw}bT6#gRB2@7jhH?RzPg4yCzpw5jvRQRY}-+z2YimdaT zb_8n6!nwsPi(b;ap@}uEK9H$h>2}_T}|9%vje#f!}JWp#X6$?dTX+^9) z&2$3uO`^}Z1)Jtkyr~HxJsu}aUK0^NwJVIW!%mS@Y(_Sm4>zu-WGqm6ZrY0ERwC z+=5v_X+Hn+Ew}*t^$>BxE9K1%6zK z<@J8BS%dFLe|fay%xZ3*39f`jLaJtoz6yaPmMsVrg1NdW3y)FrFS>34vo6?|xYe|9 zbj)W3m)<&2V0o@Da^>Q${Y1t!owv}gpS5i1GIO&fuLDjF3oab?L%c{fFJjac?Gr7` z$r>6R6YhR@v@qOI%`SRb#nF8;pNe+R%z7jm&3qCZ-hP=GcZGUK`x;5s_-N7H(fu>C zh5*2uH3OBbURlRxt%>%}It-}ZjFE-WC^|WrKaA#OEsTa(NE5Egm>i1s%$bofl+G!s zY8!~Y3`#G_@UGW%632C4Le^mARn}i_{khiH3Nyu$471>{rVwdT#~jj?+Dt)FlGZs@%i z(EA&+R@#!q#d{e-`TUdhcN0E5kj`)6-wwoo$m;#T`rjdZTEO1dt^6YEe}VAgfW58o zZv^a}4nIE-zQ)Eo&icy<9}oyHg?}v&e*wJk1vyN;7-!=ZBNv7uhmkXdy@kGTQ$BbCnDiOHoAVQ| z^u#M2@py(m3t#1-c?bDT_@ra-m*ua7$9QBZzVca$PkBUU<5SflGw~I!seXk|v+~JS z?#fB&%O0Lu&4?C?DgL*uf2s8^w*GwU&$j+>;z_^Q`YIRkc*dWEaq*HfS77E1^!h^O zPCfUYBvIih>-fOZ8h3M_7~JHis7n(qy$SjP^n|B;E%Y)=-w%BkbPwWb{ZBJaxXEhQ zw9Aj=!W23KJ2okA5^_h6C(P0E9j*Ov9Q{IoE)VEm8<6X~oc?zLItv5zFAeQ$4ds4t zc*?~A`9sF0uk-f+{dj=3kjM@<+4cm|042NLN=gLxU<*E(_6ij_xrdM@N-8dLN`&;t z$Z3@lV8#h-|_De|%EB=8 zu<_A&&27Z_pWro5CessTgN_7`3GbOiKK$J9YtN-ayyhxw=%M^wYa<>pKm^M}7bX>Z zdM!3oA8*A*@KB!I;cV!3mn;=~dMh@*i2PBTkAkIURfmgid}~AXLnCBtBx7I~a1n-} zxiWqg{OIZO(Ggy=aFSIX!bw)Vv&csW_0)W-5*+}mvY1<4m-9H2pS!! zxWF^9aT_mFE{Mm7TZ*5KvmxZcbT;1PqKqJ5`p9@(N3^ri5ngj2){+RXdDULn=m@WQ zk;QAie6*kZ1(d06KicJ^BfREq6aBc4X`M>)5wO9l6TZ?_9c@G>wM=E>V&r>cLk|fh zlWL>y0iHJ#c?HauREY*Syw62;en;E+7N1`4FFNhu3UzoKx|d^AfS+c+KxIC&LwMkJtRP zA7F~+C7({lYrZe8u%h)IM+fnmuW~~0ny*b*FnG-^@i5^vpAMJ6Yp%1p9pE)TL5)q| zH6Lx1)8I9?Ql_bg`hA+4F?d3zN7aSbZ1907D1C|jFUD(L&+xPyfJBW?|L2&^?FYLb z1>4*%Mn}lasTnQ)7oayg>}Ji!=@5Sv&6(!)b%_5i{CUumaUG8784;vnH){-(?$AW9 z+H><&y?wAhL`OhherrCnH(?rIXdJc+`5@%dCmY^Y0+bK#C+}>+mBx2%I*(ePpwB9H zbGvKJYtk;e zFYxI?a0Vm|n6-)~&rFU2ZYPjo0Ui3wh7z?XAOqS@2!jT^?39`+fDdQQn_F9l5g#CJ zZOmW*YEMWY$rhWPk;K+ep9B-ZQrekEvZ&%Hl)pbs;#< zHgE10FPvRIdqG)g$MVol|z`#G#+DwTg)ekHlidPa}(62+sc-t9QE) zod2x|&h2^>#c4sD+pDF#I!|J|aGbkvoE-`?^~v@a{8c7hIL>@}qkTpyyKtPlaGYZa z>}I#tybH%!)tCG?p~1DzdK;RFPxbxY+)wUyKtOYS>1)>{4sHyPg9-J%NX;9GNW4T4t|8=e2>K8 z$0Q23@|zLXYQAu|i0T#zPv#diVtzBj4g6Xh=PyHo_QL(hM<{$KzYfQF6|``iYfZ?R3JHH*vhZE}W`%#xZ$bEVel3o3A+MLf zaqf@jaGV8DBOK>L@y`qkc-IS`!fz-nNZpL^jr@jfetrTi9OozTy>J`9q3~c{Q#l;x z!=Z)aEZhPw+{AAvtesH_*GYzUDjXc=UzqTxP54_14`=Z%D;yrgZzMd0-)LBG-!sFT z`L#ICUxYL`&R>N{!g1criW=eCI2>o;JtW~c3s@wM<2)HAj^jMbg$T#F0!H9i7RR{; zR?ry^$N8rOCE+;BiWCfv^FZF(8AdqHhr&1<=NNPx$N54ShvVGDyG9d3IL=#OgpFZv zoL_($j&Y0QT$$zP%i=g+kj!2M8^CeCIhlPZncWR*()4khUvaFD*6#x z&O%$VIL?s|DW z;}ST|Hz9I3&VPeW!g0>E^~>NmPl8b;HaN~DFuD^Bj&rH4XbBwW0wmx#%M*^XAXfyp z;^R2)@3;hx^FT!4IPZsNahw-GIvnS95+~s}pK2rltUSS=s})Mcac-f~C*e4M9YFxc z`MdU}usF{5!KUIkKaR}dIJZK-C7xA;ci|k4^Ej3RNw|0LQtzVmlmXB@xGQj;9jDabAK( z5{|R0yuxulmOz1o864;JFmW8`uk_@`=6rccy-wc<)asDk_0>^nBnN8q0KT23CjPvtfkee3(-cj`JMH2*-JaV}#>; zJWL$N`6gBon{$;#|X#yXO0n$^B)`|9OtJUBOK?~U{rGqj&0{&q5H#asC2K9LM?FFmW8`AHu|O zoc{!KGIhn^IKK$5SRBW> z8AgR}aGcMCsa86|asDEV3dG8}KZS^G2?h!*MtrpCvxYYg$9W1(T@sG-JOmEM`B-QrC>-ZC&;o=Lj`L}b z2FLkA=p-Cx4Qwoqv&JnJ$5}%ZhvR$`QQG4;KZn%EaefiX;yCx@;gp2q{8c{8QI-sj z^K~$~$sCUJ2(*)MoHy}(vpVz^$N3^y>02Dn+x0LS^a$?QwX?1#y$8_ii9=K{(t zfa5$AR%LE+oZ~0p<2X+wG=Ss08a5Tj`4~>i;y9lKX>pu|-Ry9j&xf`+&M!kI;W!Jr zS*2%ioZDawb~8B6Jva$NgX28J(cn0bg%032ALLjc$9X2Ky51JYdA?(P9Op8}nr7X{ zao&i`;yC|Yq>tmQ@w&rtUc^a%0vu=B6OY@RDF7ZexPpfcY(4ngE4I8lb@dzRaGcep zlfJ`M&bGX8XLYD!sc^?1oT48@3Y4A}-|7%8TxlHxs}H++EWRcZlrPzG=>_9UH#NR+ zke$v5!jHmHVCK;IDUH3sai&9VFqLJW>i?O=aaLJ%;W&5UIDZlxXH9bIzB?H=9LJ$) zABh4u&T2U&3g9?vrcI&%jQJ{y zq5zJwI!zJ2Py25_7;DpZI@p2QE}IBUXLW?skHnxGD!L;)OU&CN;lBHA{6O;}5` z2WLf^*pVoJ<7_&Th`x*?O932b^?Ripz;RZ;R-yoovnG`!3g9?vcp*^$$60es68)I6 zv{lG-ml2J^k#GRVSwk2p2XLG_rUVIBQrSlK~uOb#Wyc!d0}VrxA!m0UT$|Jt~#zyahx?ZDl?jIwI{2IK8aLXR-`_bL;)OUO*u;xz;V``p+xGa+lU$g zNff|wz7}42*@Pp}0FJY!38Wmran=|}%I$HS)jyVU0LNLAzY;A^oQp=p5(RLaHExqA zfa9z&h(rM#=T)Stgm1%PPLtF2l*}t7q}4bpQU_D<131o_%a^dp-ikd2kvW=kG8*n&FM+w+qMl z;PD5JZ>(B3p<@isE*$6h8qbd|tS%g9he+Oq~kDLik^e<=n1|uorO7?c<~eL+(f~ z9VBvl-HvgcJJd}WPJ(uBub-UXE_CNk(Vg2B-@g>#xt(?U!D<5IxxGfx$Eh8`JbyBr z=c$t>O%w2QaRTSLtggCgPHk*W1vu5IK+m5P=ee8*t#F>@^V~4*}&1N#6Y@G6^jkfx}|(c8K%r(H^VoFyGqn%H!=Tlkff!!0}Cs z^BloODNW!)Yy=PG$sH~qv05QC8+_D~r6n$ucO%SF&xE~_R246ad?*8$PR&P$IM0`2 zqnJ2PSsNE%!ivh)Z zB#{q40>8FAI>dRNM#h!*v#gDH!~kJ!nDR)6^E?v+zyW&~U?X@WpNoN4uj~ltc@;LU zCGxjyKC)J|$3qR&kF+??0#O};jrqLj2p;M3(Gkw`aBQfa)?!2PE?(7PJ?#+Zc@#EO zru8ZLKoq~)4s*66oM*i!-O!KsPwj2QPsiEl2zKttZ#qXDPHafz2Uau43`2H;45BvsfbdK{Z8yD}T zjgD}h|ACE}*qAdrkOQAgpN}*+&xZnEI-EG??uCtxaGoo$p?7FI_QFO-IL|$Zt9-0j z)Y-Xoj`MsVHiYwhT8a(o|5jP0UHwR$=cU*fh2E9eP$BMK6|Y=@GVL7ac?&jH68AxC z1JWD}7uGsDe!p~p^SlciEkqcw*pJb=Dt_Iw_O?2%P7Itty2RTjpeKo738I z-ka2~ZF630xo<8N=$zNGE}YZ4qO`Rem0CE@Po8^!kF6zA0fTwYo|gMQXS5<0p7#nh zxpYO_&hrqoK2H0Jy1^2D(xZ4}zLI0-E3R>2sfK$|9L_?;=}7*fwX^ zh39E46S&Ze@Y;5MK}pmHB5txtJbZ53g;#5Tc?Sx8tPPm+6j@o(I@iSk6ncp<^(C3w z&x!L&TgN$5Cae9hReDn2vbN?uZOwUYJC~!rqV=64bap-{^i!>WHJr|MMe7UDEpv8p z>g2lRykk+{rnIw4w>{jp^UF%?PG7y{OD8Jus5?ogt@)9oOIxq80auS9(QPL@*s^R- zOJ2Wik$zY{y0yinl0_L`E<<&335d$2t*d-i(9pkW`O<1*{85arIC|S#+fLZs(!6JR z>kMBPHjos4>q7#*7~R))^dJ>F?-CPu=u<7t zyW4hNt+ZMKV$#~;vr6lJr8WBa9*4E<+-TBT}qSiv$QqrOIofTuWR!`;JUmuGf^5(*(>wAfQ(!}#3Z1+pX8D za35+dciPnAH9o!V0hM^$PA$DL72uG#PFd^0j*hG_#?D4*d23%M&0F3&AYp~NogEKR z{y#k2o;T>;54Qd#!2PE6=>WH@^|1i=Nb3V|+um?(!}t9#L4hwkvHZ9b9&q6Ed95DD zi7lsRwVe00Fb~l8sFVjhSytM5i613=-(`pqmaS+#!-xhL1D^L9tyA#Ocgd-T#t9ma z{@=v~Z;Uk^QQO?Gq@t>(xpBb;vxR8mbg!bS%7-MJ4uDqEQ8k+oX|vW9HBD<5uRbYO z*@O}y3pUg=)l}5_a|^y`X{=#AXem}U-AkJB@Y-##bwGR3B)<07SCh=s;`YZ)$2H-! zICLBCQk<6B-G}=f?irlsXFtH@Q~y5d@N-e#$n;1#+mD&~k@5o!)OgyUN&j;c@-$O1 z9|c3+K1xS816lV#_>u5C;3wmz z;T%M4`?K}Obg3BT8sDco^qE2iPIbp@V1idnUW6EM8TY8>{S~e`hVjU|BRBfUv~;{A zMdonLXApiI;YwGy20FfFebFUDjl^EI*M^6+Wn_^;lkxd z6@vuY$i95V2eC|TV(}=ZG&ZamchE$b@dq9-`s2ZnPw@Avo8XdfUz}aQ<_$HmE@1O@ zJ`(ZV+KM%eUBKp5UBKqG6{~Aw6vN!QhRT@PT7FhV{eLd7dHaSl{)qCsIsO)@uAS{d zHt#|&V%3`Ug2R^IF)CYIq5Y2QE2{WusM+W>H`Eeo*^-5xcI{pgt8a)k zx)GSHA@piv8`iL)$Lh^Zq)@TCv97k6cGX{J5Z^PNJ>n~xYBoCgYW9nlRi`exk^MK; z$2?N#0zB^mJZF(gxvM4Rm9-l8H+to&eqDg)+~lX$F%M$8IkU9%#A70=sirb0;c47% zFz7ccCG>=vT+`w+)wMPCjr4)dc5zGV7RIWZ7FKL#Z=cyU4KyoiBTS1l$t$m1U*(m} zS?HPdH?&m**ER4?o?MWJ^6DCP#xA!VC%;um^wAd9)var;_oeZU+tO3&3=DUQ*s=|= z4OOuQe=6IXwcJc^2XW3#yBHKC=<;$0gH9XB7e*VJmKbAN0L6B>SZ=D_Osg5I*@)<< zx(#)eYa8m;`}_KM)in)`%#NpQZd7ex!|6}1VRs`oCUTT%Nh@mUc2=2d5!*ytO2!w~ zt?{ZGD%Pwgv4n&sS@9KE(L_tRnijLsYxV)i8`WYP^SY>hBxA#oeirH)P1~J7G@rN7 z?2ceUEu?uD@OgEtfh$?t6l-9M^1Ax!hR5Y`cOrNs8Z?^8&(@o0EIC zlpEgdpH;EGzE(SPnSzeTw@OypXv*K8Yzc1R<;#5~cQ+-;+Ew&mXeZY*sFn`r|0BXD z@peo##^%X_;FmQqXj~F&q|Kv0Q%8Z-Rjx}kzhsBOCu_9S#xSh3?R1jZHPyBNW3?-^ zA=={VYFcHt2SGcX`DTN(WTk}t&P=7zN@uKHih*3kpDyuqf))bj84nLe{)h~CYHjfR)gl!52;JIxIMnh|x zg2V9744=ra7v98gD10%$8R2j8>$WL)09xA=JcW;t5($NiRW3HaGoiIj!3umY+-$W5#e)B1tJ*{0x86aI_|e_P>UEt?3FGs44D`HhBG@S7Rd(h0jw!G(}!n}RDKW)$TY zWc>-7z*lCU#yjy$-h&tU_?m**HEe;fExnxE(KovmOr{_Z<&H!_-)#2InIFlW3KJr7 z?_8KUE=0Q)RKom%xOUfqb+F46tDA53VS>!A1tSp3?Ar*WV0JASj7h_2*Mh@g)+prQ zmAPx68%0ki;360;@X0%5ZSF=^7?>E^wcrex+b9{cYr#t}2V&grS`gzkzVc;vE%-t* zdkyRv3Z0;AX5X63K9bD-5!R&X?^^JhWBpwVvh5kWT??MTtl72TX^6wgc8)<0^&+2x zejZtNxBSJB-Cu?dMOKOA1lhHq7aqG7)FSCo2FO(@&vT%>LfO3(mYjRW zQvTI&y+XYUZzkOBTA-yHC!?-i3+{>2S%nWn|JlUOE1XJ^ou`^Ltia2E9%1j$KDy-l zyu*)|ubL3y&wGqGcGrU4kcT3Q97pm+`atMdamQy2%PJZKS1-=&S}+{$G;#i}1@j^Q zEIZ>OWst8xvTMPcc=P1bW>(>He!l}x zUJ6f+)9hMM4#Tbm_Y(FMNOmodr(Fxafj^28EHJwk>~x&jwcvionOzGWa-7+<;8Dk! zT??Lc93ZB>i=J~_V%LIO5V32)G*ZfWAKL6%;O>EZTffY%1(RV^iOsGBvtaI5?gjzQ zyu?;Cf7b%7jVeUKt_AY6Ye8T9neAiextE?Lf(sPtyn0^3?-UyVRF)IR3E&%VXp z6n58wAH!-D@ID4&*o!QKegYZ07AU2D|Afxw(K{CRYaF{4XkF}pSv;L3Ux+XHz`t05 zm_dIHGTLK6stWP?ePB5kQM(pgjK%)hIae7kB>VldBi}Jz)DO#4*nl=0H-}Y6CLJd* zrrEXNJ+%7WM5xmHfz@Kyf_$!X|7>eH!)P6o?`xIgD|-Lz=z+eLyuoDEtX~Q(TMzpW zDQAb&?uCjoF3BoqX;ptNKxoK6_*O|941|U%Mio?c&tgJ`@<{gHB`~{C?6BeR*#nLv zeAwe)v1Jc!0xxdZIF@W>j~q$ZuvH=_NMZOlh^l_!&=C;56|v9HICJn5wW3N7^3XC5 zqx&hfZlO>-OUI%sCNG{VyUT%a40G0@Zgx4aRVdF@cI|S|NZ|8mnOzRfgLz-f(vpI_ z?~>8koWFKCxEEU0TDu%P0Idg4#wwJ44zpNF6(xDkK_4r+t|YGqC2*tY`jWf>&_>QK z2NR*cC;66=yu+aH5q)Mw?hm0Sl6uBj7=0W@t-IOf;J?YwX@s!L!CR2smElnSKOu9J zU9-!9J+TpALQqA;HM<<#0`s7lJW6V$HUZF19DRF;dlhaB7r$?>P^jm~tz>*W8R=UD zm;C}^!CemOh;fJzIPES6*AQ@n^!xOcr(F)dgKt^|v&+Fv zj-#bwmxG_7pK~`dv&%v1ZSL=K@E7T5YX-B+fzxrPYj!z!hR{9K6}!uUI}5kV!354W zM_7Yqmjh?v9Ry#diVZw=NGNvzpH`~A4b(0NlO3a74ralqxCWjGbEIRm%YpVXFmbfY z!HJI1E(i6F(JlwgFls0U*1$Z(H#8=Wb~*TkW31MOvC)U?aNbB@t22X8t? zyBxgd80~Tp>gOkFX%9JIl_E@mbn1(arAsg=Oc2Qklbv&+F07~bIsU3NJTQZKt4yoARt2mLU~E(gcpvCF~vc%}eyhe39~2HM}{;M?SjT@I9S;d!#lK@9RWNOn1pr(F)-$Jbr#?{e^u02e9BpviJ! zSw-0a&hB!c!IItOK%*meIruRt~dgFHg6Sz9^93~2AAYDS~J?^K;P*0lbl@+ zE_F1!9NY-4=fSZ3OT5UtoQB3lc9(+(Anh&(Gr4l?axewWoQH^Fb~&(VdIhD3GkAvN zFN5fwsi#T)DydF_G`k$AsZnjalV_OD)9iBa6POtkgWKg`9@=J?gGw#}+Sy+N`9lK$ zyUW3?u+q1?9Q@v~{w@b^!Y)y0E>SbGLl{@5*Y0vqkjxgts%F_;4h~Fa7bLT*lG(;& z_I$_sqp)j|STE;9PRi_Z;6`EV5u8qi8l}2_JB;#Sb~$*^F>~4F;6)gnyWQpB@31=* zYqB}JGg%+4qOiLhXj_8-d!J*?I3;^G>^vzSWa7S+%w|z;fzScTtQ-B=T@DT)RGq?6 zhZs|{Y?<3#4&o=^?{aW7p=u0A%{0pAz^cnQszj_8xq#C-mD6IEgRelgK(foh)sR<0 zvdh5@klnup9m>BMGAD)QuDadjpvJNOE(cAHHO;zbMmS$Z#x4hHyg8{i_!(-+o#VR|WW551IQR6v{*5ud2czIi9n%Zun~o`hdBib&U|xYy zBRIZ4_2nHHmBsjMb83C*7V1VD@AuDhJ|w|g$At^BzRTUK1bgx2sT9WLVrf)>$vzxL zm1$hmSgK5BFGyx@PG)}xtI9Mk)5Lu|$7xBY(gVOJcp8VqkJE7|R*B z)?q3F-63QBd@h339WvIBz8Y3%F*eKO)~X!6;>5@tZ7QT{IS%*oN1Kk zofAmkwPi=!BA$><@h^i>auZBuyfOcey)OZbs<{7uo9x?clFdO9Ab|)A1O>SQgj3J} zSq@3KLO3iCLb4%|TqYY1%T)tHx}@T*tyR=`wY0^GNAbdH1zW37ZMChoTCoj^KdGYi zs`-CD^X9#s-Rvf4`>Xc%=Oy2r`F`g+-#OmAc{B57zF&^=HPfyG+5;!uVQoKvEbKO5 zX0A=X`S0h`mPL~`X>vGQ7VM~TzqK|@EqJ*lzChxfZZO=$=ZEl{`5_MhZ$WVxI37)0 zZ%vA69txMMP0SNzndzzV$r~D9wPi5~;qw7_EX0MTi8O<4Sx`Rfg(>6774pzL#UW=r zHyT=xsGHt!skDTL#rpy97>NVTXTu!~V19=IMgXz_BLO*pv4HV_34n=!^8r%<(*Pd8 zOu#I_Yyk6~4|lHgFWKJbzQe^)$Gd&+vW*imfBs@h?n@aLjs0+2^z;!4-+TR%q|&S3 zyx{GaeoNk77W;;4clYlvZ!7FJx$gb3o=@t}|Mk_Ae){H(@h|@9o4@^Zc*X18pMP!1 zkOxbid?$PB&Ukn46IZyuG5O=l+P^N}5OwqF!S#RqO~cgfZ9d0ix_!a%V~^f8e(>a5 z77lH>dG;+&|7zRR-&MZz&&98<{avza?f#D*z38pMXYGvtxbC{m_dafa{insNa(KVK zyK2XCrS5AtPO^XJ+Sb23bI-s&zxnR)+*cMq|NhpZ>-9gE&S>29O54d#1e;+?V>nYYVGCeYW+UZye3J{KU&uNpHXY+mjb1-?99&bKblx_0I2S zExTvV?N9Z5_h|fW>oOCcOn&CItleXlZ(CXLyC?hAx&Jb1{ZcKi;+!nn^Qiu9_xl=4 z*BpIxufHeTFP*P`oE8s!EQNS?(b)WMPGF8N91Gw(9 z2v7&$QYGz7JP7zD;8nm$Ks4S7Jph9NlK^u8s{oCFod6n+rPlaSc$CxL8lpF@TK7nGH#t=149s zY>~tjEJ@<>K1uHaWWKmuMiSpEQWnSbBys*Bx%loTiSH)K#d#7*oHR-C90RjLr9A|8 z#*&#|HOPDkK#Jr9f+S9cB#E;Kk~m9{Br%i+=_&xEb7ez{gzs2;|b#uGRjkRe>AW_+$(%ban|nIyVki^lFpwmU4kZ_-79?@KOp>^6 zP7)WgL$jtexOoeYZk`#+8oVbz14^;$@Ca0}))okrBlwB}CkV*fJs)pqV`m?m^cXDThYPaBw4UN+}?bONX653-qV?(2| z`b(W63u=qz@x8Cv@gd$|u|Y6!%;_sNI}+JK3Um6kwxQAS9M%7QBN}1Ke8!5#|CSXE zQz1amzV+dTl@6I^XZzlRIXiBi4-OCA1Z;$A_E>yzq&u9c zQT@}LtM!r2wR*P0xkOI^35-`duhfT~BCC*ZkW$~*dpol!s~jwDJ^eB=AS({%Bq7T= z0)MG`?^Al5BWh?0n3llzun=s@|I&!LjuOS;_=Z;ui$TGF|hmHB*4y3b4ZnJBGwo5Fveq_;{J_F7u^ zD&Z}XzDc@O2p@rRwG?=T!p9BE zj6YMl6Q!F2zA}X`3-}<}ewl6$$rmSG9pN`A{OwrzU8&&jBM#F!Cf%12p03FIm83r| z-2(`}L5aT~_%a3m5pXWd;S%?cD~XhUxpcpU@N1Ot4ZxjBdKHpynRFM2@XrNKUE#Qd z{OQ1#DDsBMcy7=aDs-&$wrW_jz$M~k!GmeKopX6CTDbUW2Wt>6t_c8KSj!OM%o@Y- zSQE#>n^?pl%EcTz*8zao`B{fa|}$UhbwME(&+} z&U_JPei%+U#Ni118n~>-UDDkN7x}PnlWrAUBu0&#BEMyDv5sY5BIyeyeV(M}!9~-x z=fY(?wSGxw{gTf7A`>ECOb@8IAMYS@dB%zY{zN(XczN1nhhdd|1b2I$-7uR1E|0qyQ`ZpB+b%6-puz+?Ig z6rMwh->LXn4<`Ss3VpxgZx?=pYZ>xy+J@Pw(1$DjGR1$M;{SKqhUqvQ3XyCMzJiVj zOEWB4#k1xVE}SxFnx}Ztlm)Y1fRPAANf4atPb zf@F?hNhVB$@Ocg$T87m08H+QfR*hnu5T8DcCL~I5I$LP05U1&(Uc-yi;iXW8Ax^nh zH>@t?0lt7)n2z_NgXNeoEFo$?f`k_~LP-aX*Uz1L;k4peXy(OPoiy=|R&f4>s3Xyz z#Niq+a)h)$;}+M*oN=SZj2$;&%xJfJO!i37MrAW#WOnx0oE*4g#*PiOS2LGqUws>l z!;8afAsJt2KY8bKboCm#A<=K~J3}4%bj@wxCm0y!x^sx8?E)WNvJhw&gjaDf4ubj& zzkx6GEa8hxxq6}dV|-pYV?}a&t85hn{1g{=Zc~Nv`vLC6yF$ItJz5uJbZS#&5}4iK zK8zP8K#FE&epVb1_<(4vIeWm$%Zc-;td@|3XZPk_eh-jxK3o`hzZC}@AiD;*05@b9A z8HZ&)ooh$`z(gMOmsU8+@VdBMmo}_jV6tFrE*CQrX5j z)M<6eYAWT(ar83RxkdppXoieuT`s4azPK0kSj zr!2rML|)S{xaRdd2Z+H}2N{v<)KJEUsDRUv5y?)?1ax#*&(VG%JFShVQ=q&$Sf`9qvcq?FrX~{g~|A`MRA4;Klxg!1_!8$k#c19j{}ML%z_9)ysCr zjGVD`bH>)q;zcl|(#BTu4QcD9=~A=}*t&s{jFu)&i(3lX=C$AVIehcm9`295jIiVK z^vL$@ANuC|o8AY(PlGfqerh0?-+mv|9cb-2jyAu+>h~vt&}>fx51yc{7qs8!0AW$v z8Y3LZFKVkX{LP01_6>=B)by0gw10tYripAWc|R%Hlk6{W`ggC1!oj7aZuV~e-K*jC zr*-r1%ST-QSbxq)|5h&5Hv6)Yn-^xez?PTgY|hKFH@mXhPWEFd(pCt|8irH~+}a&6 zes8xee{wB!0zzwzyP|S+MI98|myU9Ch}~H44QP=%&n7YD;|XT4P>to_lR=WtqFWq_SqvVD~p+-T)j(D<_avRc*a{vWbq$ z8`MGmP%|))ufgZJS63B7$;;|#wMKl(9AxDmwBhxuS1B<`DRG}`<_iKgX)=$NyRdxd zoS}<~O)?vdM*9ey7ue+BhoG}!Neejqu$68`C|*ojc{CiTWllxo8!3c*$>WcE$vGD>kc7XLBe5x`+U z6*9{AfVrF@6O&46u(1+heCH8(ar_(Z!W2WigWiNpj!k(njdu9&f&VS|xy741!zc@= z#_{-j@Zg(`z~N|a&}@Jdh2{jERi6dkp@6OMGv7V{FXpKXz-za355hHVJd7MgTMy;q zwQ|GSLnU^@@?P+A1O7v{9fGR%3!8OV6MBb&8c?X}P0MO?WkZQ(XbTjp8e%SBYVU-S z&si9%tcEJ3Al;K@N(*YC_zL>23Tn%|nw9>XT9Y2235u5*1Vd>;xnO`e9XbaWNwtN+ z)R~6jtdgn#*^nwEgpU`(AVok&VyKLf~2dW|lNe^?GX-)HdQN z3<;Yjbd#-x#z3J;bwhB>IWS8@ou}bL`A~~ks81z7#j~hO&0B_?G;^G3WH&6VU06}sAT=cKKxK$Z8_8+dZA*C>bW6tS}k8ImSQywnb~NIi_2;20{xl~ zeoF^vaq;xVn$mf`dU-#!wX8FVi27rUu{lDIH{NVjwfLb7UuCtofwdrcMU9YG)Uc73 zw+`AMWw=N9IRtJft*@*z^j)r^<~NmOT?Usaf^(A$M8h;lu*WP*>YdWLA{!*`23te*cm1TwsPf_b7RaHha zZCH#&-hh%%p}M${ZEg;REqDc2dr^gA90TJS9LGQtF&@z~sz>pNuKur8JzCk|5h@&I z|6=NWH6A3mrC$?AtBI%@%6cIn! zkST(@895cF1F18VnM_T!9oyn!N@>{Zqjm3YI|mu)p^KvR45%5!hb>jjD6~N#8gqqp zgFpp9r&1sAeQRUl){TjmZN$fpOsB@erK7&i>Vt|>g8E2Y@b#7P1mYf!n~`G6jVqIN zbB=3P>g!vOv3|N16~~O^0O{Y6O)w2Gn3yi_Q&vYd#uu#O%Y`vd4%G{~4%J~3L0lM# zx&tT=*4u1OJ$f1F(H8)-=ix{HC4Khk$&ONZq6TO&e}~KMY4&_9sOT@y7d0l?`3gK6 z0Z~F(i59y9{?`DuSh2||?ytiCef)j|h)#~@QbLT~MNzh7`0aX3!a%rM!UX)<5(@Ae zmB3T7(FyDEYfrcWzk0$x{5ld|z;6upZNaf|Bab~MKjA$h3EYbtmCz5r_Jj-Y>rB8V zNG&;`5x<#QEOT%JybkCQx)rW3Jv!O395Gq8i?LSmEZTB9bU`@lf$$7qy3hsT{FV%} z5slXL2NAg{Ej!t<4jx8!ftPwS)1VP1W&u3hOq%A&cgB>O2sFYtw*#4vG}1;PQk3(1 zKxYHeghm)ARW&lvv@s%-c03hyxrvHOcCG_@oXkQajPt5s^sZp^;b8O#P?5n2BB9rS z-o#u9jWAAr7dS=9lSHUh0HG1a$>sfahUSXU3xJM6gfv4VjQ%t#WN7T*K$H0`2uv$> z94Z5KXCP25n&bxZO@>TZ5;GI-4*H>5G>IFyenRBDikNR;F-b&+YSEZdAV&bPlTnw? z!o#|Z9U?MvA-q)H89Pj%wZZ5%pe$l6)wM-AuMI|j6pTI&RHP|Xi#m^*s8B8H{2vn) zH%*K6A*b)6kj`oGr{Fkj_N|~K=itYd9D5a<5_+BX>)~`0i(M&vV157;nbE`}V&4yp z+Cr~@%MH&6Nx2s82f}Ypxz+MJQ})9DnV`E;dZQLv0n`?n7XN)vb-UdLLU&t_L^wTC z@uS(r6Qhzs~?z@I{v2uEpm8iLuB25f1a0klu?KWJi53Y3;k9TkF8Xbp{JA9D>zt_1rcq@@1|etSZ% zK=XbN1U9UMOg#7*@UVR*oCSo(egDJ|Xbp`S2M?Q6LSJ;8v3CLc2l$fQz34cTGSfeY z%ibr6T0_%Q;1ih88XAjD`ohX?;`{L~dhH@#+3>nj?QD~7%kK$wpkJ*b_86_x* z9c!gWGHWFld_`dCIlx{DS-q+C<66K&fNx+gK&H(>MIvWC4?pQI!zI1X1`Ih!Akue} zifmO7t@q^;Gb2J`>^C7X(-yZ=I5x`9wArr{j&6iG7wgbo@s(~XY64*|V@319FY#hl{7< zQ9SV>ntomksft>4UD?XE`^J58!~LK4zP64!ox1hu*LuLcb|61qYy(^aV3XSqcna_$ zKvWsrvCIIjqpS?LRT3AKqu?BMFnq5Jzf1C)@mU#a_#NOSJ_x`|J^fF5xH6`Ca*Kx| zj6)ulm9m*1Gfh_k~?y5}AthI7A9iu7X~ zD>hJ(&dmkT8zDAFx#9K)oC6pPU>T_Mh`N}l!-=|`sJn@}ji|GUdXlJzi8_s_zleI8 zs4t0nji`%>dYY)0iF%%>^T^c2L_JK@c|_e$)VW0cOVpu6ol(@^M4d>~n?!v`)SG1L zj-q}j>RzG_C+cCM&L--0qV6c_jd~3?g9l_BsE7;zKYnpUx&TlG*aEl;uov(+;5PvA z0S<0FDzy(_Bp?s47;rIQ6M!GdZU^u^{tVz10AIIJc66NpzD)TlodYNV_y9Wq-v#^# zz_(pE9ZYN+Y(IQ@cu#O~tWFYN8gh>t`&p7W@RTGDg-PNtT1MoHi6nOClB)>KjU)~g zC5dlw#1$`0kobO=@qY;_nezaW#P=IXeA!77J9@@%1t2a*tWxrms1GuK17u0!Ac7>0 zFtXs{;#i3!j#4CvgB6lEhLI6p14;)|OkzRx8WCp#o@7$Zp>pp(QA zp^V6vB1wEpN)nqCNxVriBFDHS@trS89Ql#N0ih&uutXBaP?E%921%SBNfKYoB=IdR zQ{?!9Bn~zti7$API0=#wIs74sBO+Nj;>80JCwG#>;U&2^W|a{+_(TD;zW_kx*j9#c z1jZ1K;y~iqOs3CgjAA&1mdxUH1CpY4h662f@r5EI+9ipvFd5P8KLsb4)qc7&EiDu* zFTQ0}T`a^e0_fK626V@e&%If=%#^III+D(on_g*er>sz&EbNXa0S3O>-p+Ka@Vv{T z8MXvaiZGF$sqY1}|G{mG(suFY**;B7z%PbYB0shfMKC(oFrsASh&*q@8eeVQ2=im) zuI>-GeUe~TvuDaW<;SdEculzP^xM(#2(8L+-U%ded6=qh$Z-->K%@4oFi}? zf%ZHbP@uKmDq8LwF;Cjo{a07RJ6X~Vd~66T=?3%^e2GdPQ8~BpE3fEcV;AYytE#Pq z@^Cf%6*LO9Wu8&!5_swg^JaH=;JVhN#Jl@nqtJz!jimD9t9WSCrfBJNvG%qEedNHN zDZB&BtxZs#fH$tdrY&f!;rXJHG-eaaPlQ(4qSG^F0VFCv^TJ&I>p{XKS=z{3!n5*}2Tn3#GH|uHT zPzx~`Y9T6wS_tQIU5|6-Lv2O5KFD#Aet~1RuJ6@t4(FTpbZCvZuv{M;cOWWWj6S;I zEWaBW!gXsra{e(qJj4EHjL*|0o#%KlMQ*hXAe(k8@n31$ZQM&};s=47au|LCfO5Vq zU7kfEz8-SYWIRqQS1WReuaJC;z?ZD>@hp74s0iasd!CXX#v3i;4FjEf+i{7r?*o8y zzo?00%+t#ARVL2y5KwWp8q-@BnvuZCK%6eb*|Xr{Mu{`@m;#G4=sb(g=`{A*2c4m3 zI2t_n(Tn(K?L^t?#Tj?BVsXZuE(7Q?obE$#na)1x-Ywl$xM-60-Ef)TUD8E;G7-BE zF5`1wDO$O`Oww0M`Z7tM2N$>5o)4GtX3Fq9NzavZjvpy+yrkzydbXq|!)1Qph;rSF zilf{gN%s=zR!jFh>5h}`Sj0nQQLl{W22OX7bXl*&;RyFeWQI5g>I~}+;0T@f{->xA z^IZB7>F2okO6lj=n$u&RML&X@IYaszCDPBS`b_CR2>%Q4C*kI;ggivm z`l5o_)*l1Hv+H~g{vmm|FS!?hGZ}uAYXA@9@H(mZcPoChS&OGcra}HWioZ$t4M`s; z{#?a>uaIf*gg@XK+`m{`lslfZHaq;l5$|~m=FTh5pH;ZfIxQO{EWp^w5%R8L;6V1w zxp{#j=fV8p4`GMn2^{PWob3(fi+o%>EMGw2g1O3h;b7kI`IB1-J65sT=bH>-w`RT9 zhb{Z3bMtDAjsDhlrf}z(4bj8P#hXdm*VT%xUBzbh!|iG|&P>^R<>*bFLi=dG^u zZ741+DXk#s%bw{rlNGsg%W^D_xXZ%Wh!JT^MbI9Ma0k8d9DULA)}u#G7=>fkxK_rQ zcWDYXJaWq!k3Goa)?v?EZ$)3CxsB)fGxT-gt{*MNq6PTqqFWQtPcoj)dFyfLxEY^U zekuADdhFU(I=qUDtGG9~q>7!lz=O|hk4Jnr=r7`Bh_1`JL}x28O9nfBT*bw~GL}FF zi+2h#&;?nSD$kNJlD&OL87m4;k`}z*n}olylBu&yK$c880CNb#56!I>B`+dIaoP zs`r*Ruxxo#7ETH9@5MdM13GhnQIvSdL9nwfS`<|D7ldTv6?Vl|Rb8QG9Q{Z`LP8OtDJl$s&< zmHQI*{P}tm#0S2#fx!_Yl_lKy^AnK4_OTN(81F=N#P%Wf*oHfQeiAa+E_a3G10L4T1`SX(DXk*b(Ge03%0I&`+ zBAq|qFcR$nlY#D&4H>6Ur&)%#gN#V$&o|~8YWvgkjfl#xA_EJTRo-Ggw0PwB%mtmt zKLr^abM8J38GL$~MyQN=(~R}u6LT0EbcN3ch9RLc?uHDOKM#|(kgJ1?NaxR=g^Zq9 z8mKr88IjJPzcI_m$CjdyTm;?Q&d;C6T!_zih<z%Ih_G_2^ud=t{`3O{CO(;1c(;8XU>Hi z>Dq`i`-ce}1{&*`898(Q{LJ}to;j zS@f2s{vz1#d6uWuA2m7tYH;|Q-h$_68V;;C=R0s}+~IG!4rw%djvVs5h$Igl^1RG! zw=_BMY&CmcX=%C`0-HUrH8&n(@}46&HU9$$S=6@D5H1e4R~UYI)V)YzIO;ysJnG(b zVvwkiB|MWpE6u<4+8#I$j8pIK_jrmuo!(^p6u{RlKMP*D{_L%Jlea>ckR@+XnHg7uVzub!|ZuXq=Up^lUJS5-ZIZ1{e30cW2iiNbo z#f!dm!iB;LiQk~arf3fZ_OYJ8#h&q-Oi=<3>Ky z>>5Y;i%Dr(&0P7Pr$5&3O7dSFPoeoZuD=k+^}*Ipu>Fd^LTEuULen4xg$KBP=3vDm z!q3>Nz$0S4gl^2=^gp-?AhsW`m;!( zdHYHPLN|du2D%2e*9qjJgSa;+zW) z4!&COkl*uAvuC&86qy%ehfL3|_mfP4nh$Fg2ZET+Plb>puX>KWT5#C!IqWak zJ>iL@sZTU-UxNH>Kj?4b?P%U!1}teCcfT}$KMQ_;Q>vgZ6#kyVKTr633xB@w_Z9w` z!hc8>I!|CU58Avv7yk03#VB*KzsV?J%XrX;b2lCG*pdw#mE`{(aFnTFtG{WSh&)sX zI#2iq!GCD`M*Q*t1A7ar^X+q+1_#z>hG!R8#Jx5o zjS_4(kPSb$V`%LD7S^`eY8HV*w)hs-wn;x9bT;+5bf5HZXYJ!bbT)6~!}v0T1|kUk ziXV?=Ue+LHuuYW4P4COh{cFJU**~C+$q%vaz&Vt;LDK;ZS};&5;dT1A^QQ7yZ_dnW zdpyrb{s>$@pUrVplkpI#2;E02OTv3^=6Dx~W*UZK4SUwZO!E*DVz=2g861bOc$|wK zW2oW(`8N1_!0-3$WZDRRJpm*qN!vwZvd5sXkYVSu+?F5$*s|~#GW%QKM{_sIAfEES zVGQcuE?SSmV3b!dJPn5CWk?FOX=nEASvn=RG9nA5KGYAA84vY#HbJwt47oyNjNLEV zVD5S1iAuVx@}J0=)lCH5>NSw{t*6*unjL!^($z$-zV&vdj=YFrndn{7Rp&{DMwd`; z@*QTT=fY;Uox8o z8$`hg{CJMFcn-5EMKN{HEA+lNm9L9DLluhX;dep4$OvD^{@gUYEr$60G*69NFYdH# zkk>Hk3H!G;wK*|SOxpGvM0`7C}sKo|AY;k_LNT_BS;nvfn=izb#ky$A}Ug zyVGn(d62@46wy7jy}jkWThV-yJpX9U$!a@~L{BTexrgsE)fy+MMRU zk0t`~blAtepR_b@9A8ezH$#8FeBbXq`(7=$+wZxXX*VtBo$|Cc;kZp>I#O$~Z`W|K zoKq;R0QH^ZZ`uwvzrTRY^6fp0p&n=RA^(gtzu(3N8|$|_{r<@claov{(%w%R>dMB? z!fd<0vDI(S7Izz3e|VeG9@)u>J|&I!2RA&K4YuvB3z)>7<|np410lFa&7U_v@0*7_ z`CZQPq<5cb{shGGq?&H!Nh^<*CzSv`|9R6B_6r-|Do?8QKY{L~Jn4^z%ah*r9~J)k zBgsITUI&u2r0MU%dBX26Vd?D7?FW;#U5mowne_9N1SG#yp0w!bdr8ZVCN0MM>Y`sJ z4LXwa^l$!#KJF;$_j@$S2LB65gI+67dit0R{?`F-yr0yg4eoKk+khtkPeSUPq2dLQ zMQ0S7Sr)u_Eu^6eMAy&TwJ<9gzhy!%QdO3-eV*%EPw}}od#a`rXc{g&{Jc>Q zoX;-8DS9apz+Qm?Hv|V5z1PKB`@W%QW$lfw_C{yhO2LzEMmBib_c;YevSeBjj>*6E z4RjUJ9w*YgSew^&zR9G$JK>Yhrw;!Rw~yCJ=_cn2RLe$N*$Un*(>Q)m0pYVlpb)qP zTk#oDg%Tgs;I3-)c@3>hbwa^OZOwV^kN|ONUTUle=wS+|eloN^K>?GuYH?+muOe*7 zOfPgz`JfX@s-6-`ryA?9=Z)%PW>K+Jm?S!K3$-w(#SVQ_UqHCv?p%0~HY@0$GBm=} z)iBfTtCT?4YmJ)!L+@nl&}G z>uTKC5a2yuTUge7Xt;o909)Pq*a&+0PM0VP$_@#(*z z!do_#8lbd=xfcwbCKLsp4maMtLWdx~4|7kDiC>b0eM8X!d?&s^VZA_Hhht#a6*z_l z7M_6REAx9a!!v^wunp--dJ&O8-CQ4b7ZDMUr)rN(J_=y^dhp);$uM$mz zCT!%8^;fiT`gl|GV`*bO)KB?lmeiC%&8Ai%-03BiRp@7D)f9Mr6}4p(@v#g#)F$Ft z@J_6PV%|B8)vLVq6HPT`c+5V4NnjQwA9~IISlKcSCehoj+jW?#NN3xvL0u?5#4oERzHcX(;>La%gT^ zjjxdPCF{f{S+Om)L4%^bk}44-bUxvuR@V=<#{C8f*wEJ-a2{Xm>(SZVF8RolB(f}o&lJDx>8iUeM9A*0R~ANp9fR`_X!`wyU#KLveL8~pdf z{|x#B7Z&s%B|rSk2fq(;4@3^&FzD>YFl!TgZl;IOXjEw_XunkWxUZ%H@T@}n2>3d{ zbCSlgu*13>wBrgN=_rEsWAszM0YGz%sN|w{K6-ezdl0sF)T|yhE*r@3(IW@{TVJqW z=w%&Hl&L(G=$h1S{okrv)Y|YDoE|zy<$WPjR5WC2LFzK0lL#s$gGgUfjh$wf`F}%& z>WuuxRU3R>p_p_$G;CV>E`=IVjN5RcL1-w}#EdI^cV`YWG5*6i&*Cvgo&RUlmYz{r zS}&B9{x7O5HTqq19A^&E|w6mtWWUbCY9Bg6B+k!7v_usm_hU~Yb1ao()Lc~cfnn^}y5Aq(d&TsqHFI61rjS8^0N zvaR(%-UEk#zltoL(T{pYKdPy>RcVPuvt~oR=vQ$9IPxPS@}%T3aPUT*Kx4tsQjc0( zJZgMrT*Zb4_sW{JwQIb}F`poLaz$ymwX_sL;ul;;S#By9KkbE=2Kh2dXQOC;URWW1`v_?EJQjG_#nJw3XP|Tk=S}Z6*<18+%F4GD<`G)BP9B#p~ zUoDI^c&o~_b>5OSh4f$;Rqf?csT|{I!#kKLD3*08&tVmhG)K&Vflz}ORf!?4T!WNj zCCyx6!?>pr>zFupG^=I_?n+5EepY3N4PR<1T(=^j;hWJH*3PW-6+&Boeq}ZK8<|{S zl@7xQuF8t_MGVPj;adRhlRy!1P`hU8!WM&BDwsl*6muoCw!U~B7FgM+s8^sCM+c|D zZ<>#Q?ijW!6Gf34pjO6L%!SqBV(cY{84+V`b#A#_P?VV!n8t~)k;{^*x{8v8;Mq#@>-LU|~ zpmPxbiGQ}4o`;b+^3XjbGCI%92t{0CBt(Zxm5BE8W;6UdSg*Vj0I|P@^IHJI_iXta zJd3bMC=hyz0bru@1CvhAPXv8Fo!<%XqCdeoX?O?X)5}!=)Eu2%SopMQi_EmCZ0Zh! z(IlM{t7(@36s|u3-HFH|C-ht+1kR^p2()h0V8}N}t4)E_x@eFpO_IkVU2KvHERxqG zeZ|_jvClA|omQ2H}FlgfLps%}IM}6HXioR~><~B5J!!j*( zUQ=IpcS~P)4?|UVPeWCAdO%foMzE@GsOPp+b@x_Pb!UdC>OL!=s@qh}ZEErEtE%dD ztE#&Dg;TCARBQKFRdo-b4)qQSxed}ehAQrXs@86*_dZ)CK*M3jltenv9~IRN3ti)yHr$Y71T*~+Ia+2?fImAleUbV|X3|hc zJ}Q)fTFa%L@zEW_WJr!tN-8QJGaUCD>Fbud^RcoxI)lf_IuywG?iv-fYwh@2YJ6`E z)nC3Ap*9i31I$saKn?xn(RwtG&no)MpF>!X{_+n%xSB+vzx*ZosK5L*c=*M~)L*_6 z{$l`JKbyS;Zroc$;%~<9XMpHrR}A{<7<&};>KTb=>d`(Vo^YI;xggse`HA^(ZHdMB zjY|9`X^A)D*O~Yrev=cQ$8V-4q*8mi-Zz0+vwaG`JtihGnPp6*;WS&~c>G2s7T`BJ zkv0SEiL`*ICw>pVj>O0C8v|7l;}J7{8h(y~5StP|2j1Vq>+I`#osP{#9e%n!el-H# zhd1th*Qapob|}9^ue~!vPj>tbVNnCLZV#fzydS-DMskJokMPf-KL#OD&Ub=QDhgrF zGh#(3RauONkc@bN_5s=l?J>h8&|yF+)>Z%%n$-Cby{bDjsWSs0#ViHy6@c#4q<#xL z?<1f)HL3425o%KZ4UiYmdv!N7skZ^;YpJ_X%I#c(6qw=eh9>pqVDtwjYG_h_3g}WY z8=BPr9E_d{Mx7|T!i>Jf$e^J~eHc&{w!5K8oyyV6DA~}YZWX}Lq+Wo~T88F|n%M>P z4x&<%`aqO>s7ukLo&y3a!$nQ%#U=tx>fN>g(eZ+IL6iDj@OPshn$){dLE{7>(4_tV zToIj`)E@&votiFcQa=YC)}_nPq<%fTybCTvllmjUD7B%ph%Q5u`d@<4Pl8dZ#TRKB zn$#IjpoS)ODy$T!xM^Da=g93GK>RdUAslE@k3%+7u7=;19G?mQL3%Uo{oqY~5`Hc1 zHT>iNMHOn|S+$=Jth+5O?SBwH%4p1K)Tmx0{PwiZEWa}?2E3a^Y**S^xagW8DOs}% z4WPE3yFu%DEq*jR+h_b9cv-oQ()4u4(u{O?UnNQn>KVE4eL{>H)H7DVmkey1x3+s{s0K<*1Az& zdi;06R}M(KHU17b>j0^1!`qD24CTeAipeXv%&06V6ed+Q0 zz;_#1(hYs-_5;Ab$g}r}NXK~gdP9zQ_S!-0Ve83z8Tw;9if(Xr)#x)9;6<|>uoW-> z1I)8*j$Fj+b3Oc|?}1Bt-zgZBlR(7HLA!;_R1ht5j>OD}kQlob63?>5QR_JxEajhN zvtKD3-3W6qtWTkgy8^CA$0QIz92X}unKq1Pn0P!~2ApL}pk8xJa+Kiuk>tA1;?gq^ zsUHLhJ-@c1e4z7j^2WBn#?H#tAFA7nu)%)=X+T`(11Tjk;3D{J%Nd|$aWKPasjaAi zVJmF5fr#iM$BNCQoQ`)vN^{cG9B3O$thwF zDF^x|3&mib#o^{0ThVj4gHu@OTWr=H=vWD?#o0{h77i4ErR4~$FJfxvP!gxkwxUe5 zoEA!J?Mj-sC#~Y1WHBzc3fhX^WZXM#w&CwWuDGXno=eiO+rh$_>yRsPGag~uKV%(@ z&|angLBszy`X4a-?Rg{K%zev=wE72S^TZy-D)*(L_Co!nGy zG^21|maXV__`TkU*4drQK|3&q+}dbH41uvm$MRJu{p0wuO?C?=Exrb_r?K&7+WExC&7j|2gE;mk;Jq&go^D&=G)Gc4 z3|=&w(;Q3@wcDKLc#5dg<}`;?L|rx~M^%4?FrvveC;J=G4FN@eV}G0Jh~bNEMTR+m zA+MHU4q=GdwP?n&_d=76=I~pLjHck0M<>}wfY^H({5iHe19`nOIIlp}yaJVZ-6tLl zE3Xeq6nV9JEik9qoK~j^G~MRpW5$Qf1~d~TxgQb7+w6}pGd0LevhB`5fxx2_2$((N zO7Q$sCg#lezJj?lI~%9=4u1G>+=D6FPXJE=o&_|aA3A`$Y+jN0%r!akbGgpExYG4E z02jHw4WK=dhXLkgswzhl7P=A94#mYhnPxLkaE=ef-a_)BAUMZ_BinFM6k*DWGqv0Ce_lE4l3Qs?W8m4J&bt0vKUw(tjW1u)_r*i?<@;CenD9up zv-QRaeVb04bL;(culr%nmGjrd-23hQqXsW~>FCTU@om#SIsVDfHoB0tP9PrgLKHvEazXQNaytd(5@??CoKG;R6 z`4R7I@E?=ub(8!iE?zqb=eUZO*|sQyAhRL-X4^`9;n7QnG92v|$%(pSekhaqU|Con ztV6S&RJn-KK`z^-$%E~sLeDGPCod#}^c`G{z`j@`qi71EJu}Q~>ntLhh1u5e&Jz1; zxox!@%Rr$ z(gX?3o0z6fXo7?$N@&)ECQNARgr-Sori5lkXl~@>;FJ-pH<~S>xe}Tpp=lGELHXY6 zmn6|F3C)|BW>09ggl17_)`X@}XcmR$QfNYjrch{7g(gnk`mo*Sb3CTM4VUImX!3+6 zP-uFErdDW5g-cZ902czv0P6tX2DAbm1pE^4D&Qm_8WqYVpTU4hfVqHGfJVSh!1n+@ z20Q_H5%4#_Cx8Up1UFzbU^-wapbD@Ba1~%L;Bmlj0G!lvx=L$YqXE+ad>>W;wg9dI z+yQt9@GAh#l>8lFM<00%_lE6~tAW^3&5Kj_oRdisXR<;h5|*iOMn@7~j*`TB zCW$M0G9oA9ByqMbxj20#iL+Ws;(7r|TtJXH=6VcCT%wUAPN7NSd|Hau1kt8l$lEn2)Nn(dU5=SU9MJ^YSBqr8yadDPT5*HC= zL@~$#iE|!FdQwL0hfJ82BU9v}OBN+zax6()FqI^(6Hq)C4rD~G)RDyeNfMWGNaE^_ zjL0PelDLu}Gm#4%DQH~V0V9`-WC)k0$y^GMA~`uHi8FOcnjrJSg%wHSSPI$Dh8QF_ zA|ZssEXlA43>3pvCYczQ0GJIf2OyLa5gGCxLdbj^AW6@`OHv*{ij0w5Tp!N@;NsAc zTpUMAE{@hn;>krypqIa2$HyjDoI>n zBZ*6Nl5|ksDz-sMGG7biOXZE+3Nb2?{d{X4Dkz%XlB{O{C*B-1GOlN z#_`b<)U6tq(^$U8a9MnujBW!#wKu~FW-RJbjmxICxjIbYY0AZ{{D=uv5Q0@^x|A*V#S(jFr zBKIW7@sGE+i#iOE>q0r55yA!`Oh=fg=a6`L2unbisN0aRl?dw*ChSHGfTFY;aM#b+ z_W4&V-G6D@K3}oLng2c$J^xL{kRorVoLlFunUU`)4D6^3n0xvPnndJ`ehm%ksAg&! zHZ+X*+P2~U9@{?Z?#nM_+DEnGgIAtq#Rsod^N?A<>JP>uf*LnqmP6b9u!A5HOQpIc;P_3NrMAB)(RLeuC~pu$`ZyTENgx zc8cE1u|v-ghJJph_bdlGS=SxT%k=bexRYT6s9YcBcohDqp((n{;aq0e04mhu;@;F_ z9g`R`I#tJ9H8#$frl-RgP^=?gx8bvF)S#YvA}s~QI-Ks|upyKU-(J19BRXrZ-ZOe7 ztP8yl;Yf%?=S2|pJ9wf7rPAm4?b2CGbw{-OfZiv1)n$6G=w7?^v!ct(^&IDXecC2{ z6l4uQpkL^8>w}yr`ZR}gDQL&^;k)(Oq%F~hIGj!Tq@}tZopBk2RDrt9<~X3AbpRQ8 zSnvMxm-T|^dgoz%P;}yZdiVGB*n4$PbXC+So4&*5Sb~Hu(^p@p7aZ1SM~z9*hhK!V%ewGtOiCUVX$2ymQqlpaQb3XhCl5?{ByY=pl zQ?Q$aYPuQTm-NBH>v&o3?OcoM2m390MfAn6yQDkZy2BBjaR9#Ew6D}p*M1D!OONQO zxM4O2K7(iLL*pP;i~hsrsBtzF^iG@eJ>3?abs1>OP%F48`HrZ(6i3vPwp2&d^b}ol zM8C8->M5H|?-#w_Hc7uAdR@8hL21t|M?;8CLdFxK8+Pk?S0QUR>zS7!(=ZVp{oH2f z0X;7IK1AVNgqUA%Mr~vYA>$Cgrd*FL*T*}eM)Uyt;myPKjOYWl1871hORQt2KJia_ zLezksxJkS9iH=SBBRRDTReF-9JaxdO)Cy4$7Q zCKPC3N%JhwVkQ04_yGMQ%r%Yy$p3qV{vv1xCH*ex_KVkAmq7-uTW>+9^J$#cI#0pd z;sSCR{%3^mR>EHfzE#101-wqd9|yit!M9+X&3sLf?ihr>(le0$xxn{`35=1SOv#rF z`U!Z2NX zn-Xu4rf?MVADe~tH|#m>50<)+^Mxb!39`(KRyEfnj-%_ z;DZ$Tv@6bX-w!(Nm6-8vmGm2>`yJ`72H!j-{Sx46`3fYTN4gUbu9j~!aJ78HBwv5& z_C&Z^z643vrTallaQWT^u9ojOaJ77oqs_5=dqG#rw@uPFNcTeNUI4z`vV1iA3sbwT zoXfLbi1!8FD%%(FPaRt84HEwV@8dri>jU~#(%mFouXOXIJ3zW|()|Zs@XY7i(*3h^ zAC>Oi(%mCnuGNzN+tS5mR)OP9B;0uEeryl4^GDGUaNUjZj!O3j(%m856nmhZlivaS zlx!EoVF|jGwrN-&#NP%!Q^EfTJXgV=iPmnTjt!IlVT4m(zlr|@xcU52-tE9&R`_AY z*}88G_X9togf{?xO2Ox2J%Z(%C|#FyKaSE`X_v=L_c(?^ z?stJ-qwrlL`LM3vx?7>Iko4i8?^Ni6Bt0GU!;0Jl;JXyQ7~p2V#PV`OFZ21XEzqx# zehj!;?%xAf^T(|PjQ1qy2bJ`0mGrAXe?-!`p`aP~5!vpEZ@h95?V}1qZ8DpOjMpz$0m233n*gQkO`4p2TNLJXhl5C7vzuK@xXMoLxBOB}*LL zqrl+^`HaVKq{R`wo$={1i&%OV@feQB9$)ylx^1{waPetX*kK%od@`NEa2fAhxJ-}X zOpoD=*at2gev=e(=;i{CgUdBVx-1Xf9O*KD#F;<3%pYB*PuDG7t^pEfKIk$ZbeRvj zOqee7Lzfw#3&*1OmHBkbe4@R$xW>nFOp90uo%aZ=0q#u^_rzHKLr0G_gAQ_}M!Jy+5vN&0w6 z&yn4rBP6(tSX>Kb7t}>0+EH_&B~J z|0wC+hkC%U!ai2IS#TNdmhLOkW&0tW?S<|h>F$y)?>FhZpLEUp#rr{gkaW|e3rEoT zm5AZPf%BU@?-Tky@oj!IT;9Ji0OpT(;R zcEgRc^z)m|Z>68#YJMu^a9r09^-eh)^Ks`e`T3ouRQmaShGR(5`CaB(Qzra3N;=!t z+XzoYheG{=DR^hoPrZWml1^P-Q>35zyfUPpI=%Q#PJ&$OAe?Q-7!&e1M_Y}KCkcMe zJ6-^Zes+Y{NI&1pYfulQ^PRXy`uW~_O3I}E!`C4*33=r?oCl=84u0M@u!(CS@@)FA zQv8X?gGuMU1Ji#@p~pd{Nl!=Jntt;GKNHAN;!afJ-lwE>iQ->_IHnvPV=(>QQ4Z7p znUWU!Wt$9PSxtYb;4xzO6o0D7k3o-D;$AM&HR!)k{KG_^4LbK#nDQr!JR5Xldw}8h zD0v{ocr-Pbn-^thAbX7=x^X7ULwc*C%5H z%)4e4Tb6H&S6AghyP;4})DYexYtSlQh$citU*Ih%lgF41^RKfOORakn zEQY=toIHn=X)wWBFAl#4Z0vS4#;eK-@O5H~w~Gj&rg($c!&|xy!=hHKxlkL#7TFGO zIJSVeATzu{tf(4wHhJ}@6ac&()^G&^>VehY8 z!me%fL4}pFJ{`U>8F_)R-uebZ)kIJX*$!~xzT=U5Uv*ulA}gsv%hZY|AEnL=4XgDz zJdBQ^u!ZdyDM(dO*f>^^sg+LX8jv~=Oa(_>$3lNV4OXa^IfZ!8OHnQ_9--1ThSK1$ z0)n!7S}ID>sAQH#R%*pnP?u$NCJoRIf#m9Iq53vpS6R_i5niohBv#yUML`$jQl+j@ zgh1Of$wEO^IeQ2*Ye2$TftJlsv;tYbLOoho=AgO>)#fTpz8WoON+XLdtV5SA@Irk= z4HQH+LW4$qV@=_Pn$il?No`|8)rPq>;_DdhQ>j;|g`3~#C11Fl2DJxM!+$_ySl4l6 z@d8>ll*lsk(xCO~DnmiBjKON0T3J(Opn?@Fq&mc?N<8$yrP!YZKDvxga7)J1v3H(?xQx%MtqkjFOw6urCC3BQCR6fsKP0 zu38s{rPgK1-~bg@sJ-)a$RK|mWMD{bU8+1hX$?l7Z3KtP;8Cz$7*qQoL%mdakWsD* z3AH25IoL@?b{qLPQZ3fERB_0AX{WZz_jEV*%Y6hHEYranu~rl!L-ZyQZIyon8G{gG zUOyur$+bout3tZ6RqjSTF#YvX#yrU2t;NM<7jY>zvBTOb&w`8++=Pvgpc09W~ z%CMSQSGLL@7>2W8sMEv=A-Pbh#FP=qR=IZsP9C7GKgz|d;HyJEBH1c`5I6FgB&@e^ z0SwnZ)G421TpeUYvQ<8Ns?pYOFEAo1zlw~`ZIzcoMjE&uJ`EXsdYMM3o$+;f=zlWGVrgphR8ts-$toApetMD*F%6CeD8+HK=JrJLR@^mbY`pkA;=KlA+Tt~ z%%7|mYv_!tl%;c9<&WfJzc!wiv?WR;2#7a6RZ$koVm!Ar$zkAmi>EA@F2eY;a1Pde z5n=CAgG9UI5XsBR2f8@f$#Ya<1h5}}1iZO)*P@N#oeeRTDmK0w2<)r-0r34M;5;?S5aBoAb8lfhUA4iZG-Yt)chu_qc)w$Z)3{BG^+oO z+1N`E3tOlDCYm}CHp{<@v7fY7ekq0u3)+T(38u%JpB~x1{llbfA0xKE=|;wcwer3G zhc|-@#zR}04j`sst^9)vMHIjPS|b5_qG0%?VDNkP(q8#dljlm4$N%uH@HTHU?UU0G z>&q=o1$df-b@K1xaR{+aP9rFb+AcRlHE-H?$g>~W`#EDi)Y5dli1|oM(@#argTj1y zwPZfjyy+>Jh=hGpkXtlZ3Eh|8l2)#}r8NU-2fMZ_~8sbznE?#})c!(3@e_ z@(Q|7`*-ks4-Af9@eX)euGcY>g56pdtce=7Yhj)?U&dHYiL=xEw-hk3w2WqZMsr$L z+aw0(WcgtRb0j&Yr}^#a{ww~jq!|bLwu4FAUqM|n{E82hz;|W_B7LmTe+xPz-6bPY z=s%V4`w`B9JWUtIcwzsvWycuiAH*$+P#dyq*2-2H=}Hl)&4}cYkuFps=}M&8GSV^; z>6j6zNJi=|BVBQdg^%^8IS+|X>>BIF&A=TVadTqv+j4z5MsKQN;CE*j8P+KK>Fpo3 z?4X(YB+t`m%`C_p4EMZ7Gr=#w>)$a;2uo11w^xdIl{}?+JRx&@1kJ z^YWAa>$@|9MJHOW*v^D$Qdye0{~T{c|C}`c_45S>#B?*FwOnznWc3%EFz?q9le=0XM4^jL`d!`p*JqHf)X7^OqwWgYAdiXt!XzA%g#92iJvAxN zlPH#J4~nobmTPZQ0z{ADYQqiIR?zPD&Arjj`X756S!cI1}x;Ak)l4M^oOHf}t~0-amviY0BG0Ry4)aH0Avv#|@X~Pg zeS#Eh$2+(pgdOi4U=tP5r5*3iDq7uUP?xFw2}ln-c7IYUchp8h$ZjuBRtrWcdNhYHS!|w zdrVv2t%@!036xl{N7(Y7Aa3oe*gtG`RRbAn+44R~L53~wv()=frVv}+dqQn_e~5c; zN59K1ImnjxeN&i3t76Oh6WH?3L7rgC8+N=Om|*){SnmD+ql%^?J5I7E)jS95+lOI& z`!LLW!}|6U{vxM;Q!DIsvjnu)?OOA;k>qM1Z#5iV_6`BSh%?DTY_Zta+-0`*7lZZXUqzF zzoc1Vu?8Hl`8(RZ7$%-!`Fr#r*ti`zYRph~_V95d$K=q>9ye+v%+-doL@ey?1WXZ& z?*b+G+yr4|wZ1_Oq(;7-!|;w9_SigAS0tWP+&R~_sc2a2oOHdd)t89NYzi_p=CGFn;Apeif*q3%fj zk;AivmEiaBTOTl?CvxPD@MdeGfWD>EgH{D z*GYV#QdrNz*ZxsN!KD#k+AJ}x|DJ}ya=8=7jn&vSZfud6=pLA>nLAqCu=rf&t#@8o6j&b2b(38w7C*w zcQDYg8)RYec%kv;>qvoNTVd2ZjG6WSv~~4BzZ=+p6J#+*v8vuRFUMuV26{YnbwwMa zG~!Vh#(i7CTQEM4GlB*G4ZsmaT;zWmIOf3?{zu^E8al&21&%WiR(L7K%$So{cs+2e zE?W35;7$eSiU!t9t?<3Tu>fS@j{!##7XA`&^OG9WPeJBp$Z$IR=Khe(FxC*XRz&9a zUiHcZLfvGK0gghR`Jut&$$_U3l~M&T!(C=3CDS~7XAHggEtcQf|Gl=~1JA}6wfr90 z%(-FH-7p4jZT7;3CHADIB}v$B?`Y+CVtJTtZxcm{D-F{#i5ojC{?}~5mzcINg|Q-G%-z^+X5>KjlrU3YR%R7rqGs$9 zmEDSIS~Z*{d$xrT8&+LEyx6D|xa$#m1Ll;~Yjlq?o58dW);`r3GVg)z(kfk$5cS1u z?(|f}gb5!NBmn7z7^+vJi_l=B^~GJ+4<0=3C0Pzw184^91w0LS1JDEOp8Wy201sdu zU=^SquoG}S;3(jA0N2xF&{1RpR$2-w0=2K%N`fBqZNPQ{b^&$+t^wQtxCyWa5NezL zPa%B|Sj5Hekq!XQb*z_t3G=)K{+G}%v0RtKPql|*z(YEfT~CAmdib})&&AVQ;J*ic zc6p*-MIYn`{Rf~&frdp1X!HdiXb&nhCuom`&|IJ$3!x>01~UagannE>7(z=2ZCVH| z6SP&J{Y*_4`N49Ob`dhX5wHyi>$DZ{ckr^lW+EQ18>E|y__@;BymU^(8hvj68TszAF@3kXh_iD@`Z*-0n78V(1oCL4Tv%aYDN!b>@S7N6w5Pr)y1%d z2Mf9-n%H(~SjZFGp|mP*&1zo-xQk5Fah8#CS^~Dr&v%j98PoHyXXo>Zc}1YordL(g z@ts*&3R`zpRgyZhw!ZRGoPtrvVw1liA$+_L1}TDO^eoW^%gFKBH0S-LOwR}Iv(@>j z`-Lr{@tUzvW1spNYxJuzJE~dj=A+|-mB|L&c$iTvpvB2T;YY~mQN=K^T~)HWLG#wt zmR87ckMIivo~8Abb+ldCajP&aL&ECfT1<9CIzi8>I2hoqDOtt2P}l(pj`4&HQLs_i zyp#D}9Ana|OIAz5I&6hFV~xK0j5T_+rqD5X$5DFS8Ef?38lUm#h$d4Rba1P&rjqLi zINgMo1T3l6)|YUlLL78zz}vT=(Z}aDuTmI|#S{rN1rb|hrUMap`asPzQA&kIjRpi)EII^GURwsm9pv_{oSmARpI4kWt8m_wh0|sh<3Q-bxeJ%h^At|b?*BEjC?3drKndnokwwkgB>45R zxNc@ksU1(@C~b8W{<(JInKC0^o8MSc@4J*+2fvD{>qP5qAY)4Yna=`mS!K!BEVEX= zl)MUq_g}MoiaaTK3>+Q{jIA+1tn@7xOJf-1jT#%7M;;cdtXW&Th6f2xo41%p&BC4@ z?8-uXNH&diyuyxacSimr1}pa56^VE#>ai{sps0(O%e78}QJ^s+!&X(N(Uu3-VORlG zUA@25qmhBkyH9InZaH3lN{J)9At#2fu#f|qK`7+HrhNp%_y3yBdvogX@3I%q@u9iC zYp&|j4Yea5n(pW?Vp(3?MQ(5iwE!QuV@AjwSY^t>a+pmkJRiHz|w=bHd9(RtdW)AK7qpHJsK;ax#WmxOl# z%}>q7(jdG>Ch+A1ah@=uo1|$FakC-DBz*>yx+syU)-CkVBAiW|PvVr%>>w|;Mu%8>6JCQS(WiidF4-I9I_TqF=dsd8q$O;m~HQ7OR?p~Nou@e_kC=~ zFlqOFoRLjtQQC5!VBLB2JQJ-JqK}Uo#m~9B(L&LO;o@O09-}&!4lW;niXqW}!5DQL zJQGQ>+4X21K2|Kf9|b+g()&jsTt%X=^!^9>XzBe8cs2q|OYb}2{~N$oY3FB?xOeD} z{XTx%0ny3vamW)4z4wG;q}^AKZbjN+H@58pknN8AgxPRy2~^A#m2fF(2|RS>On3ml z$qCQlH&YW*{|>L-*TtOKK7k*G-V>5o#DoF(wI$GwR#XBl(M2b$!mmAH1Ag@c=;hQL z3Dnvdqb1tMA!h7U{2T!xHYJt^XkLcb**E?*I=1-#fuq}F%MtJ%ym9Zxe*(vDPqLw3 z)LMH*Cp+vQL=DiAFF?olG`iJZt_o)f{8P{g_tFs(1faBvi?akAo3(}5RgFtHA687fr1+oFJUSV&ZFGYdS z-uy8jG{!9L&3^(fD@xj%-vlpnDDBOEFBpBqL=AiMzXSSbG8^{h{~nAwP&y^FS1>vP zsK}FHZ=MF`SvqNNem>B*DA}+#Zx!HtaSMtO3cbRbv^UQ;>kxoxZ+;vqB*@2%ePp<=Z9WmOQPp8>cjvozs^RYGXW`pDy7P|r7 zN$@80iO++hJ7fKzEMwrTN_C_*Hw%-fh4BNFpoT+!?_b6}{ z_({tT3yQSd8e@;;oqH4Br1V~NU~fMCA8>_5ciNjzcY;A+v^Sp)mGuTjd-Lh(CPsVn z>3vL$_U6;6q)x=6z4`PU6BG94W808#8%VG>Ps?=rZ1{uh%@>2fCL`?4uLr_*DeTSf zfagVq(B3@jl1)k2n~(ho$Yr1;yL-`rz4`S2$KKh%Syh$$f1jCihM8gBfKdklIl!O; z!oUpghzJ4-#+$$(8a52W0VW3q=S5LbNid+%#L_Y|Q=`(dvNW@_8y2SCYh`8SzpPBr zCiC7bt!w3#|M$1{v(MS*%$b3_z1=?S&sk@!=ULBs*2`Xd@3q!m`}bUc|8^S4*_*Gp zFrZG5wOUt->tJDT{-8>sc60XTW#3GFC$`^lLiXVwgQ5GFvo~K5=R)0zZ29d4CllO5 zaKJ?cz;rwNaoC$bg<#<)U`L{75RB#Xmu7FiKMYks_U6k@fDle4_U6l~gYck@WwU}X z_U7M4Sl6N1n_n4_zPj$(c?n)=7Uyo_T~#F6MY{pus1)8@LzK6ZAU)1_5}Uz zuDz=XaP8?_X8!q?;wKO|T&Iuz2SR^IQTp;=3W_qsg}Dus5eSOn=RF+G;qo5zcAlo| zaeHuM7%B~p(v4Y`f5_;=xpf5KUe2*nUFba9wCJ4ASc&M_)Th{l4gXdE0VyxMsY z=^q@4YDh3R67%Eo6gNa>5|oEb%({F6h6sdcMwU8Xt5N!@Q! z4<)5ygHRnuk-PRHb&Da-V`hNics+$8!?5vvKQp*Jq=*cEkkES-8u2|skxRw(Ds`qc z?T*x4s+5=chVEaM#AW*=EkpM&I8rxcnP~rsqueQ}R8mc%BXyrp@+%{elT;p;{>sT> zRo%oWM%D*MjUr+Vn+7BA(bYF<27enxUgO9mkXuB)S7g-+o-i)eTBxn!UoSq#=wMG^ zq)tc#PbrhzBPUZ=J#iE$ash9&HV$f&PNc38!Cz$vdSeu)jXROLoy12Nd&??(&}xSy z4^fnCIB%?^wMG!B`w}VisbORUw#a)WG>PiF`!#6ra8Y`YF+;MRZoHv}mDKgqnOP z*MwCO*M?QP#XO0t85G2f@?$2bfor|bO3O5-6?$T@$ud%RH~rW(_`FEA7N4lCnA-B> zn|gOG9+vbbDN_5OB6V+|>LqG>d{M*=etT&|Z?ckTTUDfP9DQ;)9gt+bwfhv>Js8Y; zla*A{rbwM^Q14X#ZR$0-7u`h56nqHj{gNIUy_I0$0fnP?5j_4)f)$a=@`I61W)v_Bbv$0$ZtKF~N7xC5odSIIdt0Zekv~+?GH3pxd%dzjs@& z$;W&5e|(}%=H6uv{zq5#{cctDH-CI}bZkX?*|!EpuY2SUi@ObX4{ks1N!+uzS8$pO@6v4uRUhS|(V=S|wpR&#qbk60Cl!#)O3s-McQ?cj z(%eB<@l`k-?)id$p&Eiim#5;NHGS@~gbwsgvN8y+U5C40;{U?v4)rAH38v3IfS~U& zS~r)les_N-KG63LEB|p;e)r@I>C;_C>4SLP&C~{q$Y0R(I zM)GtH^%9j|Wm3DTEtFr-20*sbXf^}VnucgZS(>%sL& z(L5bI^unO2uMc9~U|S$LU*mkD>7 zftML}nP-<7cA0p88UMV=f7mG#@G`|N^YAjyF0=14-7a(QG8-@R?=tN!bMiU|GCBYH zSI>J%X5?i;-kFNWeensx2OeGvC4oXiM4iF*kbrK25(8;#SQTK!44ZJlQhsSrz(L}O{K zPb@9}RpK}_1E!9iX2ayKNul}&hmWl8-#RS)Z!LWn(I%yNpHylRXi{3U6HAMDCZ#1h zvD_2{pTn&@;A>E8QatsXl_-OKR#3OA~4ne%8vO zRZPo8Yb{Ezg%^|36jCg$jhRY~N5s1`H;(#?-s%F;N_P_DV_* zVw2KRp;%gyG?tc0#M+)xuj!~*T1vBW$-=v1rHZQAxmcR2n=UuVf~EP1CHyX=q~_uR zDRL4^>juWs>V{Za0syQrizBDXxXBq3HjRZFd+iM5lAtr#;1ilr4OOQ>ZHv9#)HEG-JCbG(Wpfz~iB zMk_~((IO2jttnZNw4g0DTI06Nw1g>^)^<%wcM-9^OG1+h9v))r2tQ!{1_s~#Ob+v} zD?j0^OZkGL&+>yoG2N6^trM2hypYclbR^|81#-)Fw&W=o$9h>#_HK zmU0Q%G1tR;74BN%+@%o2h0<;%e$xZl?W*5E+&iavY=?;~zD;mq<(W|WlUeU|I-sJ-{2_TJq_;kI$B8e7&SssUyl=f2C_+}<{BZsMXu zvy7~aTiV>vuKmSrQKjan?r_Pdld^rQCP|L*4^K&njbG)$e2e}HlNqxRm}(_g*C zuEWr!xqR;1x?PpiswY&pt-D}cxY2^m{3)yGsZDD~t-U8&t2YXlV9rYSk^1Q!>#>{> zu$-NyFe@-u`Ps0ScgvQ7KJi)251)p1a&>4fzJtwC!l4%eA zJeeLJ7K>xlyxEyXA9@wm(GSXQ_?uT;6|2ep2!_OmO>BQS{h;8!j-nHD-ve_b%t0{wVRGHe{rwgBXAyBtw}@B$ zi1&7j_^l%PXS^@+5+Y-AKZwZ5zR0hx$p0ZC;*9b|es#r+*x1~g zV2trax_m9-jP^yk5E-3&vrFTe=0#sb94pIj(HezqCH&RcMz)1b&bc?~cQqtW>{iByx$A;!UnDdp`VC>Kr#S7E|;zz=M~|6#XMPzA5@76+NEnJbHO|Q}jReoGtqN_MB0S zmYGF!=`y~K{ZY2zwVKGP$urzIUcrg~9DIF;9`GMA{+B}h`{3PX{2N33z3{dfztQ~T zvGp$dBGUID^Eh^3?UT)tfPNXQv|5ir)M_C(CxwHvPejV{o`;$DU?=0v~zb&N? z8}3eyEmr$(3dxOzmJNy^-xEwO0{_FI^e?j{p?t7exlefUf&3H3KVbfs&A$%0-Trs- zt~`674}|h*HMw`1{|@5!hvHX3zY(IBncSJ?&mg`cq`%hqqs?b4);>XU2IVY=eki1` z1p4(5eUMp`>i1o2sXrCsf7SS3H2+iP??7&AD1SDUrPZ&=&$o0hu#TaHUGe`E!`69-|6AxMt(_(J>sac#6RnM9 zO7}(cKV<%H^Dj0Zd!+lGFg^Ej9j}58`m^XI=oO}f$}Rc~OE($0r~QQt$FD?Acoc!0 z)@_wP+n)A47LxlTw&#Uq5y-s~_2qsV_4aMF`YE4pBPSe;K<*Kf`yz6yLUMOQUlS_- z&7>2iMv(4$OLqlwLAy$SGjhV?2;>?~ZaH#6J4@~?=*L3(Pcb&*K zKIrF)Ukx4fbI~iIgMKc0sim6%|C81~#h+mOli}xw>T`nek2SxL_yixX= zKO+8?ko{JkcpMdP!KKhu0|JdxaR^R1Nvhjxn`4F3qQE8NbX$d;65OFF?7&>MNhMI6X45s6^E-&74)6fza+;C z(0y@#Io`z+l{{~X@4|6uN1w$X$8!49Mr#dJ^kYWvH~ImiwT7zrJB_~0=$njI{T094 z=Gadc4t9M#qh=FuKg>e53JPd8AkMU5HONh)TbF z=@Wm9(b6lvnzApx^eG<4n!AF&Ux`mUM(IO(p5;z_nxU2}mwc5={#^5CnLopPwS(d(nvZTrtNh}t{PI;k`Em1APSGl-e3eta$|+w3 zldtm1R{`bYCHd%d^%!aO7=f>sSE}bi^R=EWdKSLgZ-)6}@KF}kTDW}n4aufZv<%-d;{JV{Rr}1ww{!PZe z!T7t4zti~Jjo*$>QKMV%Rjy`y)nlXa*BO6}@mCvvmGM^?f2r{o8h^g==Nf;O@n;x+ zs_`cpf4uR_@YUXUu7ACqMpOCDF@Lc6eC*};FBJLyFU&t+{(kdsHva?WUtqpAh)S=v zp2}ZjeqZzZnExV$QT%h}?=$~4^IOf|Z2mIy7n?uI{E_CDm|tlA)6Acw|0(moX#VHT zzsUSn^Y!hD_vrmH3K}oBxXW&zS$1`S+QBoB7w6ztw!5cj*bvtInI~ zD)YJN38%76!RegqzCRsz3Qjst#mS7@X}A+{C*hRGDBNh= z$+&79&k6Vbx`a%0=o1cw^-OyY&-@Z-J@1CmdBxW=^7HvVU(e6uD4*kV^BZeny{o+1 z!g@zJR`R6NyUBN(e$5dYOpoRdH<^syOK!8U-ba4f^yodLKB|!(y?@kvNnyQr)U&#T zn~KB8gr~5uF*h1t_-<++@rCiG>7K&EdApHtDY{;#42*%jq4a;vr*CAOS4vo8^JgiK z!Wz$illmyEG4&yn(K^6E+Dd%QAE4>n{-|LTxTc_{qBke&&y zY?AiBDG2mDLD_?_#$Q4CHRcP#p9rN@dk1`_ONK*ytrrCR9U(n$b9pJ1=iTAT>4z_M zb@#)vKM|z8A=I9;Lo&C9!e&QzL!zBe=Xu?Q2`{rfUn%gErS%IJEMHL{EZC-&Wm8fM z7B62hd-0rk^($vDTQK|dh4YplnK(x4=P#L?RoFLZ9hmmclDRLCGJ9XyOP0QxWlQRN z6H2M-Nze?Nr`oB0GZ=I2Et{Ge9TbEtWzTZ}VLpwYA}r3{&MnecZc7a7@zd zQ`ZB*nt^9)jguFDrVe`7?1Q2W4Y?+(Ybss|wbj3}HweE!jXa!k~H(T@g*44AC440}p3))iF za-_O)_2EELvsI&eo@tm*e{q&?Idv9L*zB!jFKpH~HMb{Px!5<*_Sq$SXqsdi`XYU| zkyDZYbgS_KhqQHARY!m|i(-dc;hQDqr62lR!Tj^;lPHXHTAEv0{l;(FyurWJ(y%#G zqDO}1nUYUcJ1gj?e@au`-5@~gTU$CduLCLMu)QP$*2}-_{eC^WLzQh#G_)nwElYqz zws~bka|f6-tsR?}U$VJzBdyTV(bjy)lFiQIBd4M<(bh%_oZXR-T(-)SVNsh%=LQCXX_ddlSNC!l)D zq#pH6o|t|rmv?Y}z-jsmu8b_VQUN_3c|Qghs*qzu&A17ZKzglNp*O52ho@gX@k9j2oMAGIczQ z4$Z?}Lr3^vIGjAtu|BLM(~kRY+Gjk{w=fw}x)pW)M;u871a$p#*GRH5b?isSd}5zM zhw8Eu9cs_;VfUkT4ebq%ov97pzB0x;FcEJxEt4XrL=rjDD?Az|Umhx2yA_Gfi*0NdHx<4$y_JsvV0J1IvG?csE& zK{ET;-RKyMj{WEeAK@|u#OGajf>5Ngxr^(~n?^s%z~<&zoZfE7Bo zzRhv2JJ_y&q}d!lfR4+#W}oh^BiXD;yX8E9v+0=4&1yFhb)#K$_^+FehP7*36Bl(a z$K&X@73rTIfey7rwsLG3&N>bCxooUo1leLA<_Ei#qqSl4hJ=5;q_xNMB<1 z{~;Z0No`KltB;~W*IYLp+mJpI9lCmzN2U%QS>9^+ZCW%-KeCr&OG9I(jt9|EN!srm zfev-_Y<2lLI)2a1;?*P2!Gp@F$t=fHQ~h#u%}K8aRH!cR?AWxW-XQ`@s=j`~qNPig ztq4-Qjt+|A70nGezEA((sSrgZ&6XCh#uKfoh@;bWjAp@2-F#+-4jx@e`#*ZVY@#jO z>pM1I+_ZUJef`2T>AC38dx2GORrtZ@vQCE25vogKV?A)u+|u2Vc^}(C-+BriJLiQG zA<3<2qn|=`@vmEK#W*dQZ910))i$0FtIqUO+(0={sUumAkr4ikz<&ZNLiK+J*$Mcw z=wN~jB42MQPKR!-a!N78!gyJaThNod(S#&)`BmbS-&ofU&Psi9H?>52keS`FuBl~3 zOH1?GmaR@Ej%+qP3+689Nr&=rdV+ki=Q5l}g@#7l>!R6XU9LXkBcJ=E82nna{0 zJ<7+;90Qp+fsFbFc)LC6NZ}RtlFu276YcISm`s*@fIIDIZDOIZhjXK{20O5wOjY-? zN+zv5b$ecL)>Q|0A?(Tg@}7BJojde-80OezK6=NcT*KEc>RNi}-m~b5XLmixrM}}p z*`9CK9J=}sr8}=CUFVMYH2(AVEIQcvpkBAQgzq7ttWlSA-Q*|f?0gS#d!i*S`eqm1 zIq%@1iFsWY1rqP|B|3M!k3ebF4q;c7_KW6`1T(Vt>YdKYuKB+7j+cv8b}hByJnE=Z zje32@fuxP=b1-rpclE2szJ2E|y~n{gvyAh0y~)dvo%=h^>fE)El-Ov0blyQK^z}#Q zxdhklx&VrnxOUfbTylHny`n@vCDERFuU+fgSN|DQ=e*bUU`P3D1a};WzoY*AZv+jy z+A=<$jAxT^=i9KF{-~1lcUHtBDon_V_$Ed9lGnxjIA?RZ4!*KjFaMjJbILofD+onT zhK-rvCviU}^6LHVwVl@$2fC96v@z^k_Y{BUKiO463K|uQ%I81HU)@u`?q9Q?nsWZB zCT509N6mY>b5}ofbS`>@B35B3cwQGag6CGo6?~e%MbA2$!B`T8TZZD*l|}roz*4;5 zz>m(Y9779wT{lkl%l`>{*9PAq|IXt(%Lnd>4%|~-*|kFgH11^*n3vx(Rtl5 zp-P^ein?wZd|89e=Wk)Ys<9$p;nn#nK(ZKw7giG6kESao`J=qWo<(uqn4~kcI;(Nx zH(gv7Q|!-%BGjqICp#4x&!hTfi^}(OywbVrKV#Ho-fNw^PR&;-DS`?$*Kd_;=|q%f z56U`s{YL+;B6*$H{SugX$iXK=0!`ZXGc47E}KP%KvCy)e@1{-pDjzxb1P-P zIf7e|?@ofx3^jb*HT+=G>^Lw!+$U$aa=*P3Q_AzoRF)!S_Iz{C6UhQn5HTV*`Bd`}~-bew^|8x;7T-CWqeZo!+p}GqG z&L7;l{R`YyI3=qq%lXIjb>>OhQ&idY91r0g2Le0QRlY{48_eG#X{sZ2+4*JU(z$nw zuW@icDeR{%x3C|X_nX_VsB>?j%30U-=)9LXC)`|K(W$w1?@s>r)V+4?_Wi6$?3wqv za@|g@d*;1iZM_YubKVMA-sZ+ro_$5g?PvZ`KXyWuk6Kl^tbk8FA%et;~s)8G)Q+2K`{<@;h zJtas``e-443ky{TR}t_0uSY%ZuE`VJx&4JG{qEnQk@LTy8U+WhvA3U=vILAB*DY~p zXf~?>Y%Swp$s)BtdrI64WW?JVHZh%Ot(^-*`j(D%H)gQ)+?0@P6l0E*RrVCm%-Xgk z=51w)$>PlH<}Di=GVNl!g1O|$GN9#fHe-{rEv@UCc%haUbxM3gbG??}-SQXdo!Mkp zB;TO(riQJ7eQhUF-7qGO#pL+dI93?biZ}{om-}Wryv#VWM(Xr>D=uTmR+we$G5vMN8LchYQqdCJbkBND z%3LEKBc?U*bnHv=rR3)JWr@w$vDLaAc)^urN$@()+ zUy|Ld()t8OSVD=glqnN1)2-W>ImqcPo0~7Ou8jFe482@LPYNaT_=2-Bk$P=1yWMH= zHYYB2QhGs(=}g&@n%>ZE^~DV3iiTERjl(kK3tJl9H>1vWrCTp{dXh<~yz7$766>aK zXiX$GPhZP>oaqg^UMx*}Vnd>JI^{8AFw?jA@8W#Ro*1E0L#}AC40V2dGiQmmpwg*p zyUpozIZp4Xo4Y<77@o=OvH`z7GXms$*Y~wHxDvMxcM0x2xI1vdJr~&c)3_prFmc=z z+zOn)fp+0Oj%%j#ZNY8DwOdE*WsTc=7c%AMB(Al%Y=^ovS$hY_L+fNZ9w(ez47d5V?Z)X)TfBnPvCiuJ5Po2V*Iix_UZZa>vI$t0u*C3|&57abhcheG z|3)qf{PozR9=`r^|30Mp#BqNoJCWI5t-KY3ktsdgLN;vTCYbgj`mbXoGPqWp^+EPl zEaFS`lug3LEdf8p^X(KaOso%CnDlx7JQfuHFPpSn=te^r8Ek22Pkzao>I=!&b;&q? z<3*DE7c=K5bBy)%Nz;k-^=EW!Zd}S+0RJ3&7rBiLKH+a_AjRZ~SW|OW7LS^A46g9- zXr+z&wddcqy^EXHVMKP$nP<2Tw=vPQVIu}G{ZW2k4ckarCe``a)a3Stgf+IiflSC8 zp1(7VU0ZI4S|giS(CUP2o@yUiTUPSL+J131p>Dbsw&>7RivSz4?-5iN-|JMU)^_DpziAeN$^2 zLqb|1+@R_EsFGj6yFsng67B_C!s@A!L}bkx1sCVw8I6_2rs=SC__8#=Pg|NeJF>d?CNQJaO_ zL%{X;i{U+v+AK^ge~V3b)MjA_LFVrO?$oo*!YqSER_2n%3sbx8vI+i$>jdWq&(9-X zSg5a`GWD-p1ltIhw6~abhh^3sfuRkS+1eue;?DU!E&B9ctKL?9&i8tYJxnQswV~vB>`P1a~eJ(I`xUe(^!r=PCFYU;K$=*riPdzeOYkJj++)@;p^ zxmb0+MtE+KW8Q@w4b3ZB+>oOFbl&gxWWmu{ceG)1Xg$qY<95T|>dalMPl+m2o@KyPrZQcB`gzaebOHYwgP&ig^(iN`C>70=dUjVj!huH!Zi7CDV6Qpl5JO&p+56 zA!SS1BRm#!fX;p#i*7|J=jN#}f;fVTEI+kX35%njN0`!@VE+kU@?@qRI#ZNDEWB-?(^64-_dZ2M^)_#iHF zY9x9se&I_Z`rgX_8@SxEqCOO=PqbLNBKnFv8tYS{F9N-iQ~8gSoXvkuiLfGaON5dd zEqOoxv6B1v&nx*6|9!mTWAGv`@fYp0u;dRSN(!i0PRU6Aqa}h-&o61XCLu&f?^^@E;DoQa* zcNc_Elq(95%gMh#APXJ&?W8DVZvL~7QWF^|(u)bhy}2AqcwZy{tIr9Xh?QEmpNsjc zbp(`8`8+c12nboi`yhlsqswbuF8Vt6DqOiUs+K>V98{$8NiKGAI@uDCz9l@p{Et)1 za^Di(E$QUv)5%BD$sa?y0{WKl1R4EfmFg6i?;8@vmHU?Pk`?eR;T6&pvZ_@+%Ly-l z)JMYQvqgHbpV1&=3P+XYHPRJe^^uKTH{ga3%avV^yr zfbRT-Si)=LF78su65eGHdc|FMs;mk^s4WY9OL(gZ#%asKv94V2N+&-6sVWwZbFrUH zC%=|X3h&zG>082kJ|KNdcpjO!Sl<#}-!D+oKDdH8MMZd6!uvP8ehc}Fl=XcQ?-B*0 zQGEy8e;a?^fM@yZB1B<4cYQ^F2PG3&(p*c;h#Bx1!V_FLIzSEOhw}#F_vjE3Nj$4R#+}ZqjQT5ZlLSX+k5`7vgD*Bu|Q04g$tUhlivw{Bu zb-yTC#2Yw>&=aC$5pUoyLNX=L=N&To)psAkpGeQxzMmubOM-n*DEbXvEWhu=l9QX< zS7jT3D>|X?^AtkYd7p(Y^+^&qHTp}u<0G^9&mXW{ELvI>-<%9by&{#mPqgnq;`S0O zt{5b5aB%-arivoTMz`4SYPHWD#%R(*Y%mcmsbP zP|hM=U)`YYhLv9&y@8x!e;^z!K0ejG3*o9`6%XdZ=P}^=XYmk-=@7@zSBhm3Pv4B| z)D{noM7+K)K$XhH2g%DX9X#+@{6eHlho~+*!hFhE#B+DL!LUkRbp<+IX$C|`A|6{u zI9k?LmNx~8q+YDeaYDxNE`y=lbXkAp-GJQ5xB<8KZN{5{>wi(-i}4oW`pt`O!z&a% zK_t41|Cr$JDvk;1djy8+a*T}QeHVgVBi=C>$NNPP#yH-qK^WtBZxYs}c?@TUTWx{v zFCu;8c(S#pb~=W0L+tSZ=^Muz8IZnlJlDPE!^lPA_Esyk<_id#|i*!r@( z)1h2bfJz4^WDzfDiet;v6wS!Vu;+0jqK)Y4yA4`9H_OWh$tx=_87TX9aouH0Q8*CP zJfA947rQo~=zjSF-ycv^vdA0!OUU2hj^SnR1GpiPJYm=I(ANoUMh=~6< zO#C!Nc!QreDoBXNf>+Tvgx!$nqsK}AkVq6LJ-nD7m#4TBx-9Lh_%5G-Ap+r|w<9(9 z1B~BPG`%-g#E?kw7N^TJ=Qyd;8JkFIKE5v%`vBxH6uE(Yr0#LZ7m1CW6wxg`G8|KD z&Afb`E*?Zt9Ym!FZ^SQ1rLljc?$4wWf&KcSoYB;67?IEWszSiM7&QnOx8=*MuuZYyu6aNwA*M7KK zX{Z=!*ImvVqqN$S5vkKIix){>Q4(>ZLD!qZ{j@CAwZ|xl#^;f`pOCCC=c%GJB8|P} z?TtMJ!P4oG$Po3`>I-QzD0P?Wi&J5*XbECDk-p=QI!|378r8I;&>5+U%7$}vE_803 zP_8b#=yLuBeN?50%*7KzQb3G}kB8i~!f zWc7*VZXA7(sBw|#*OlGp$*wFibKr84=-Dm}-oW7L?s6OW6f)XL<1!ogY>2|ho66{h z5e3vew=^o)q(SwBDQYg@LgAa_xx8reDki@T_qoV@2#sI z`PB8-KJsAy_5c0DKYjQ4b64$o&u=s{RCz0L6LE8KD{$*@TXDN_vZj6~?jhV0xMy%L z{?}A#4tF8r3#M0xtdx?4 z_gRzwG-1(II32p8$;LZ}Ti+o|ql-&2yG^Hij6erE+)WnxHqz+O#V#G&p{p#-OS)~r zt1+FL0)}<&v-syshr8_}AJFc;8A^Y)$p?9U*UC8G@^d#7m<$+$h{=Ts5u+Cwp(QyC$1%s_R6?tN@T-L_T*&eO}6M{XHItIWS>s9 z;ABT`6gJ;vpH8;oWV258<=XT9EhhVNvLh#3bh1$=+j6o;C);(p#>U}J$LacN!R^7_ zg8Llq>o_1wy)N9JaV0eBFx*7knYi)nL=H16MUg2d9?`M+`fxOr)=F$H%PPFvBp;6O2V_S){ke+c&-+;g~toD=m) zEfwi}a%ee7EX^>Cr8y0iaPuNqn(b&5#-aWyVLhOXrOBLxHLpil(>#mO(?h~~lo(3` zda*RZHd7(*Z1|*gyM#j?YQ!G8cD)Biq z%NI)%e`9GDCYGjTrv8^ErOC4C(zIAonr0hI^9y9sLwD3%6W zfl8Co1Kn7f+(}ByQO0s31Xvn$8%ygDlF}l8<*3C2vGjni#OKhunpj$DGnS^8Vrjl< z2{jfGOG6fu(lU@(T6Zuhtq+K$B?FVvUg zVrlwkEKShG(rn#Wvy7$H24f8{*2DOwUXM{_{BayyEr3~!E>fw~T7a>>4Jp=KoT=1$ zs90Jet;BI?v?Z2?UM8h+j9415n=TD!#M0Qtq%`FgOY?7IokW?$(lU%C)HGNuEg1&7 ztU4nnjSI_Z0;h))M^a96wM?GoXJ0}ntWPtp7vY8VeV>+DCT$^onh9N(!PA_@ z-YzBc)g&b|U(H7{d76VPLSMKnnpcd?$U~C`JtR4jdFbJ(qbK`rTOK)d=obvFo^hAPi(#9u_bJC_-HHR#?&oaB;e3AQju%kgf~ z6&(3Ka+nYQh(avCgeKWEZei2f)`r$g#<^{iYM8chsl9L6Y-_!RMjqF+Wcfe5 zq3eBAi+`@B)+h3d66=~8vbFR-pl9~nDFWbuf0BZREr+#T(l+j&_Ur~A3I8PR*7FHY zqEGyjlr(&XyW57#vg7D28Ho#?5Qg)LfiuQ5_1d66p|-vqlA(+LT?Ao<7#o`1Z3KcR zknY`t807|P3^>)9L#wxMD3D-qDauqr1@fWI>WJ|mn{(#r;7bzbF*oPTGZSpPZ*RTC zr|mlc2*x16W_c)SCva2jFXH5UtF?qXUO|NA=UONY1SCn0JxlpC*2c#pn0Wdokyv0YuLr z`n6aNTPez+Mq?rFJcLD+<*m;mBN zM7>>km&cAn+sxPu3b%TFEOr&`n!h7jLBrm7p$eJym5ujuX2 zLB678yGVNK;cvHm#a{^>-^}OX!FdsVJ#=tgir$Tr z-pfdLrqFF6+w2B}a&(X7to`FvjMyHw|H@@bm;!BTwJpF;% z!+sNd#h+yPP&Q{9hqxl;r+DS3cqIg~&@KJY%px^bh$>%XT)y%r8a>|pG3Hm9uY4sJ zH(&XSR{7+Yo3H#uD?|A>=PP5;cuD^R$~B(Ksk~L@$ITy%kB(?QzS=Enz8XXH8|abW zg-`oO51QU*@fmbPpECZF#(%>2`;GsQ@gFe$-NwJu`1_216Fyl+Z?O2i7JrTLcN>4F z@wXd)oAI|Azuov-jNfehjmBSR{58g3ZTwZnUt#>E#$Ras`Np4X{8`4IVf?AapJ@E? z#xKJ!qF#8eKOCU1tDgJKzt;Rc<}WgTf%#+24{XUqjrPp{1t&rJwBJSk#pbt}KiT|R z^MA=RLvqiX|8etgH~(t$-(~)4^H-Ta)qLSiNYAhGeg6gX?=}B(=1->HJVM>|B>6bB z{0jc$tG~&A#rV&d|CssrnSY!4L4VNsRyv(e`N8?p`4C-Ye!2O0j{kA38d>}(cqik= z;J6RD7iZ(}b?)>6O)v0-c^JnH!wtuc#Er)3C68>o=y=1zzaV@fXIgyS%UANO(wiCG z=U14F)?eRgVXeE~!%af+T5oN)u+~}MW?`+bzGz{stL`%W8pE7JU8G;*oA)Y=9<8ai zT3BnTBP^^n)K6NzT04Eh!df%cvx#LiPZ%^8TKF;g*B7ae_`BU@3mWkXE z*^N1}beRTZvZeCj-!p64vt-!fO3*IZq^;7v;xv;ny-25&A2vl+*!nE0s|}_H8!vOP zyU^;sD(m6=8V-f8I#rgGS)4S11(@>*nar`(hn9}^jPKxsocS0kE6~4ZUuK<`Xl*$H zTQ1q^nD)8#5w}d{M`B5+qihxd{Hj;4PdARzgP{`{BT1E$b(ZenFIh`zZRkFA4+AO$ zhBMk5nl|@l31oKLk(dHGQj;MU_-jwXy23I^Q+r?v!|aggeEzLJ0R5|eplC?w|10Ys z*}6vROedjTsZZ&hp|KXRuL`F-f-Lcn0Oy zASYiUavJCAI1>9J+Tf`4I_{jsh9U)`-gbF9xWvL{J)qO=izxknG0u6N@niUaojlOd zt8I|gj2mYm-Ngh;=^i-U&3BXO70{*Ln{AL=(82J`t6~$0bi9rZe?+F#{$Y2k9&Ll% zh7Qd&#+VLoPPTIRHaU8-4T2qeSB@2?V-`BB9MmqY9J~tHnAJ9j>>Exa(JFL=57jF; ztS)>~EsGp#pLE+G`HZ~>BYZ=Dzdhzt4)qO&xtZnY(KbjWIyC3H$8-dFhyAcEjBIv2 zrlO;Q1P9O&KC;v$d4e-{fPDw|pP?gt z9Z%DyrGBuRj-Kp#{I=3haJeS@=|@OML$7u{q~jX;*pcYy$*#xcC;GM)3Tn~|0hPTR zS?qdz3mvM?xksSG-vQD6-2N6FYq`)bKLQ;fe>pXoHYk>Jv8WtB*P>7Q5voh?c0Dde zhq`F)lyn93|DEDcM6T1`?Rs>gBZ}N{89KN{IzApc8hf?tu@@a$V;YPO6@KYFw|=Lj zp}O>L*CU@rr2{0m!E`9G4wgPP`XQC0ce@@>pkpzWUp3WFv7K_*vmsfIkwp170{?-p z2re`47G(8YfBg&^j|L&%q+Jh%<#b;efV0Orq3*|S^u)Ted$SASHnb=S#dm!|WeVB; zIBM5}_Q+_HV0%qZZI;@T)pNVf`6sjM@fEJQz^=z)!oFRPKhaOm?wZFX7P9N{IJN5B zaXHM+sh#ha;k-R{2c6-LcaU)DvO^PRb`|?cIy;Z0-v)L)HY@s22WCBHcD;PE)7ja1 zd`RGmkidTg0w*K|Hh$}gCuSbHHwVVbu21{%>C1hQO*9P8$E#DF;Ake z`B!#b;-cct8pt+ZY|o>PYBDNp8w4v3m0i@-TP0wB--LsJ{VN=%|DP#oXL-NQd(IeorFH zMQg(3QbsNz(-E={@FAzUyl2gGQ<|p+nm?Sx((F#neaH;$Q&Vak;=gcj;Ph>c-apR8t-);}z8%+$)7W|&E_iv9vCiea zi#VOz;QVS$Alp#{ldQbU(XaWs4&`|n;gJlKRgO-=?;))6D14CcRfKOOJd-~4K?~Or zR(^CFZw&d}4*wQpG)~ieLTeje%HZiMs_$p;#=|=Z@77S-iSRV+3G-k%-6fQ91nxB4 z0^D}^Y9skNRQIhC=6K9}y?+nv3Dk}ku76+yATR*1eyX=VK>AaoSX#h%a2Y zauGL;);7@U<5Q|9V3?%}Q>&XdjGZzbqIyEjDDSO&PLcfLBIA^@H}@}6mqN-Mq3v|QqL+a%zAljw z=i8#c2!L?+3hI*dl#3G^Ft*ZDZ0N;RS`ijtoeq6;=` z=4*_)EiCsY+OX}iv8l~q9UEkba^B{~7K|TlFkX<`qLz!A66atl5g^ERADX?z*911Y zDf4J!bh?DFK%tvvfR`E z3Lerl_vVIXns^fi9(cPX&#mKjfB7ApsnA|~2d8-yyZ##93YW#bQOhapDN3s0hA|U-yEdQfe{@uS-^?cLW|6JeH_KfA9F@VgDT zZ=pZBWp9Bq&dFLv^ZLwHAx2@WZ(u}ZLWcF0BgaNhqN@u8M|1k3G=Or=aCQ8H!O8pb zK5YQ_S~FOk=$pbLFUrItFAng?O9n(<_94Lqqy6HQC@9^&Gvak!2@^*Xg4B z`M}}ekNV)^0u~?OfW-wXUar^S$M|^UfTIe$`?wSyIbbP5_?BKJ8yLbP2b)~L}h=5Aewy9{JEP9(g?;KRF%IlS)?zL4@& zEh;CbL5Gj*o+^nH?wv>7v~z>6IOc(H>3FLn^%#SQ|z zcpI{yh4UXPzK{RBVjlv$NVq!z1bDH7055hB;Kd`USG3qcfEPCqE-UsSz+DN1$&)v< zfKSj20=%!j%8N!z90d6Girlh1eHNDk0QDA@n<{9LiXsrCh3D#s{vb$S2cd>uxC?SG&Je-JP&$>+5W&w%Coc#{9})a&$e~o)5Wxj55+Xm7PClGY{t(g? z&_@J+5wc6A@)5ybhpfgKB6zX_f^*Et*XzY;ik;=id62>?4-mnBOoOB$g8vGJ@^Xma z`smUTAcB_)?(9*;fC#=CU+`u^1TWo5K%bTh5xj+UOqW84;1@&a`&Net{w##r(h$K{ z5v-;y4H5kEbW&f}s)~jP{;_nDZ==Jp--2{``iS5^4@e&oTp!Q4SRWC*U_T|z#TCry zn~w(~_!D?#^ZARE75ogZL&3c0^LYKX^5^w`mcKs`q6s~Bxka^JJ0Mct|6_1x5hkYp zU4&=5aJ0X2^uzi6mE(NJFX}%I{}mT5^UC{vo){3p`9_y-RgOIm@7Q|&yr}wV!8-~5 zI}&{wj{_0B;=2St3CkgZR|r(@fG8n?R~$#^$D)J?UNMBw3!>g3MDT(y5d4w!j4crG zw(8aQgucJVi{%%52TrbJCl{!^rMRLK3ZA17FVS23EOe5J#9c$MxZ-$uAc9xiimwyv5Wy=x7f?VlM=QP@P(lQ+&_~Zs zQi$Lcj|7wu!7H8$C?SGZ{3M_pB6xxBS9ih!5&RBviv5mo8X|ZeTy-pm2(B`!e>z0) z$po}W?hwJ}LFg1ZMDT)Fq4X_IY5aJ3Ac9x)$JedOA%a)L1L_3o;<+0iAG(7G?g}(h zX$C|mARb#o*dcvi!)kTQlrQd=uMDWs|2H`;)OMerDK?MI3VO^Sr2p-e@ zMWl}iUIM9hGDPrW1JXwX9~O{4BDm{bdOee0TCk5g>HL5QJ`+w%Z#x_!_);j>6nYPl zh6o-sg+l}{xD+{|TpJ?zpjQdMi5teNiUYX8k-RGr8KNcnrjnsXWRL2z)dV3_9VpX>kBfyRREXgBp*8>Ww{G(y2;`$_2 zsRA{LJpXvqc*B*AUVcUDs>r)tS%GmK6fS#K4=VjyT}$3@rPT|wNZm%#KdkgkN0h$F zr5~xZddU{4`wZz{Cw)axL{Ysd@kT0%25OPIgCwh>Ko$KDpRAyeIxkb{^P>9tuyCcq z(HiPdFcNwzWci@uvL25up4HLe+_vE(O_!AqhEyE6%WwhF`Hx-Py(e>#|BIQf8fofQ5jEM5ac>3hu5 zzhv@(zB`TXXYsD*As^7{2}*yx#p@J@^(o(Q{Bn~I@()mVB_o&ZTzs|P8Dqu}Clpnk z9qCkhmEmlh@(#)$)`w^}eL7cx%(29e#RV^_x!fs33h7s}u-r@}+z(Vns_FWG_UyAy z-G#LoQ#zGSn>dB`I~X?%$MeXYv(fmfkI;Ps6kj3w3N=?Kze3j)im%Xig`z8DU!nC1 zfmf)&Lgp1Juh4#l%qx`L0J&GlzCr^QO0N)og%&I%V4?pC66^# zdxZonL|-BJ3jJ58!$J-o1zNBWf`uU5#mV_Iu7q;{fQL5`cP8#UTsux53g3*o5BDfe zqu>9;F-PzQ;7-I%!!5)COyafTuEyPj`!r6rV>Apqi2H9`As3$pTjOzaa4T_Ja651x zz}7)z5HNogu& z2{qCXOV4MM(gRa04f>6x@t7*Dp${yLf-L>F;YxTe&R80-h^5hsvGfpE`h7T5Y3^Z~ zHOiE*hN;HVa8N9b4=eFGH0l*g<4t2}*eRA8$`T%g6l)tUP;ab8d@G9vc#_g+&sZAO zi=|ZYf^5I4@-|vQ?C)Rq%=sjgc@#%rBRqkX+|K{^Z2GqBQdcwKr^WT zmR44x^HQ*6TBOqhtT2VE&w}iQtqXu!tQszpip}ny*>=jGnW@BmGD3)fr z#?sSB=T6USSb9!b#u|=ESYtC|X(%a{#+Am>SWYa>drhV0_F`$eUy0A5wFj}Z9APZR z#g3(Ui6ztoLuGjm2UqhKi_s`sF&e4E()io**L+BtHBB;M_Xvii;f}F1rk0cj*_Ke_ zaj`TSFsa}UE4GgCUA;G0U0<4ijjY00wLY!KaU{^`MqcM38|G=4lgZQ2{XA?NwJgim!_G&cA^L=hXYiY*33w@l{)^*;L)G zO&uX4(97q(t!-S>(v9I$GL4OEZR>#Y?GeiMD8A}jGu=KejJ|mkU-hrm6<0Q`OSELW z=>Gvwzu`079bYx$rQcC()x_x?>(?h*1Gv?tO)&CEM5wl;{&e<2wM6lrV%aSKy%4mm}Pq za=UQKUl@+tLULe8BE%uk?zS0;U^o9>H|O>65Sg801-F*=YQA#$RK6`h}BUW&9P!Uuyh?#-DHexyGMm{29id zYW#`DA8-6Je6<&zmP(`Fq7hWS$IX`oNzv~!f2H}$%s}zc2EP=(?k|Hatb6QF5E5VaNtIoC^bOUQBtyBiO=2&6>C$m6 z{2=_95Z~I+$&9C7fsC*ZgYYsJ_9@vnj95%*i2rS;(^6zb?aF*&_VBfmgN_QLsx4l= z#NU$N3qW3m?jr)nJA4{SF@MS2<@G&0^Lv1Y%hcO5PF$vB&tP~xNT!-84G1q&+Al#S zc%OZe(R1+v0ry!%YeJ}MR^<##yNvv*v+Y(3wpAZd*GTR?{)}t7htisg4oC_c~`IpADVfz;}0z z3F|cs&-^1BzSj)y`Ci<=cRs+qIooj;1r(;Xd>&EG#ZB-?@V)ek#xS|P=uFQ$MQNkn zc2hwYYu2|;4b6Ixb7bOsy+L{vZ3VCCcq}9jZs*A(sY8PTj!Yf-B$SRd=m@9d@sK={ zI%@Pp@2;Z^9U5C~%+R5+Yj7M6t1ONVy+YcGj_?t#*Ws|rX7Q}lSm!3*^C{gk?C^k< zb{r0?Yzqlg_s2{}(X7<-Gf-rgevepX!WXVW_zBZdj*iSOWIEbS zp+mwCnGS;84yy|v#hsJ$Rpd)-_sY{PoWm;*E(uiGFj-9iTuVs=dLv5NB ztLz3&Zc>Xs-8Y^%0gM z3s%{K=%^(5fFrj|su=jfQlg+Ap7bo7K(HguF>aD@9CYZK`&@<&Zjp|UhmPK{%2uOe9dh@fLxnFt-Orm~s4l%@mF-8z zog}E36iNimFk&N~JCfI2)8>R2nf+tqXkJZH`Tgk7F@ti@<#Z&=F%rVR5pdJ92rdzC z6|%aI-ZF>#2MwZO&QhEX)&`tY3OzDJ_jJrfkJ>%+(4|v}Q$a#FWXYF9lJ7z0C{|hb zcKcVvDtj;2T!2+pOW4OMleO%#yZUi?gs{pwX_3wy3t)EU?^$%P^T9Kaa#&@jlW^%d zhbESE{l6-gq_cA+aRFA@G8f%B53sVlt}g`==OraJdb4hscj#VytFW@`gMK`E-{~E? zcd_H`2zW&+yWZ`G4Q;H=s0_5RFc26(W4jBuB1@|uEB)ZZopt%0_h7Hf!GhJkT6*68 z-<7V~?u;_r|M>4p&)xah5M+M`zjL>~TIeh)?7U|kxd<|>wsZR?cn&gbVH#vud1cqn zPEyr-feia2m#70Hd$sf(+xMt3_x=`^gFbtf#0E`)f76hx!7>ZklMr?vZ1}BHG~-!j_1SjQ^4f{xj63F=$;V2xS@5E zKR*OSN}Q_k)zc=75m?tm{f`Hw$xpKhTcRDCwg3UuJ|VvB%+uRj&RuXeiA0mAcG@(T zYU&hupm{lJ+T=0uu|!UR#Gg=GD|T%S9^|B2m(zrrn(VodL3;~X1-aBzk5}?(lh8W8 zdU9>en7CuP9DJ4FdYDMBL`)f9i~fsRn$}U+rp;BO;+G{`U}C(@8S5nrgQ}{X zTjdb?-HM8RTpz-*3eEuN#&CbrmMWh*Io{40 z8Ld{Ros36iT$9wg%85x9sS|}B6eL?@v~-5!fg5N{w6%ddV&^elMG{cUX3$iV;-|%{ zYC+-|9ru}|LnpqvbyR$Myo#0tUd$IV!pV*jZkivN>MW!g1vZ$=VnenpHjpYLzM;1) zh|HG7hEx`7vt_Y1J&U!yWkF=NEQDl6D`$f;+tjpGwHp&pHmo{9@)D!+e#fb9K*8l+ zD9Y1$O=AQIWvS%8Ou(1C9l{rjGnn{EuFnwt26q{aTXcxd=LV^y z%>y+@e=GQ7sUka|u@w~61r7%qmP*&HIfBJeHB%6-54T^vYe3JvU-&xZeiHXA?pHXy zQ`&-4gKfnHOP}4>yFBk*#Fv}H^E9W4HHQ&{tJU>kMmxPtK!WZz^>Wj?B z34e?5aTeBl7UiRJqPhQI+}+4%Oeo$)=y4gmX6RFJpAE@vfu5hiBiiXHrVImdV{kRN z?eNtW+i*Hmw+C=K-Y|a!i32RJnpz*rD~#QxKA|Iy`#WKGbw5pS9lk3~SGEQ3qX=IA znh0L@wj=HQABF8|Z#7sp@1ln0j)V~oA5@@LlPA`UmnDaI@wY4#L55s}^z-?{b;^m7v+Ew$}t*s50K>B_ouy|g~p+tA+Nb*Rvb$=wzFjFzL|UH?4bT>)NU2Cmn?4v5$Pex#V% z^zI!6;W`S!1^j0txS>2w#;pQZGf~YOjB#_oGEHo5ZwqbvUus_hbldy?*ZW4`?2d-k z_Di)GoZ6Y~rPhZ3xxlTGW_Yq;--znmNtW(=hvdC#ONa{}HLtKR!A&{#c zQuF+`WD4~zADZokH<4t~tf_GCU|31$s-xgk%wzv0!Kr#fqq?IYcnhXi{dx(;+cI}( zX~0LL(#D&dPeD!>D-w<6YTHK$jp`}*(dZdvd5r|XDd_WO{P&5uFcR@%KUFAaQd$0s z1f({{fg5=Ry9mF8izutW7|XVz%&;?qvR>#S8e)FW$g^ zS@D(p5B6LM?jV>qv?TIr{B0F|%JO!TQgyq8Ws(18y(fu1<%m*npWZ`E0gERU1<2*( ze* z<%3N{sO(TBnBg=hE8v4ol@dEzv9nyP>`JW>Ia{O``vDCyreIX6cO8VGyb7j(7Ny;| zju6s zTNaFUhHO=S!!uG+YJ{3?7Z0f#%a$r+m2`C3PwLhR7*pyn&X>njvvfu8g6xftnrKmXi zE^>X_)T?4!94CZ1wH1bL z^FHR3(4?xQ_V$7`c++rTPF;Yf+ZdQrdTJD|7bct`q}Q>BnhK;ob9X=8{O`nfRig%IHldcde4AsP!lfkxn`?sZ;7`hlN%*m*HO zE>CeozG`V7!*}@v3=yO$DxpM!F5vBviq?Uz2;ir{8^SZqIZo<0-h)VL2)-{BTL2kH zk$VjisoMtmAhD4J5#5*_!qXSob@pL&iYU4j;%X7z@L!TjFH9nJdd2a)Qmyvkn3O{1 zOVd*be(Ed4L{_WId&8AhFIggW|3&&?ifKHe^o=fkrPAufOr&lCd7VvqFrgIHn-Z^5 zNiBx3FNL3UVWGCjgWIC?*specM<`AQw%)q!%h!)6`Sk@4eB$0UBhGo}w;nFL`Ru%t zZhl+Sn^)g6_Rv$Co}aLfH22{S;55iPhIFKZkwqUm#qqeYI89mjh2fX<3=vDC zXxsR!VZK?jo{KYUL2fKP z#FTy?4pkbBn`Vu>B&>m(u{1yuOLeTo=g>G%tays0ftXl&a$3TdAjQ%w&sduMiPea+ zvS`R7*1J-b$TjsE`c@Lfp+TIap2D|;ZrBS;j}KF?F`}e2Y_x4YcR4w{V|&rIcC>A2&bIunxO+f0?s3d<}EXJe}{&2{XQ! zbLN=|HmS5bP$Ny({9Q9dGA^03G7OS5XQkV)ozD83LMdfw|8z8^$I{W127#t@yrC&o ztdEs}pp=uBe^so+At=TAIQ*oU0e;f3!u-lu?9Etz5RoQ=h%_tjtXTQov5OvyT^}(} zB_B5_N0>_aNcBT%H2P=mjpYb)DgOlrowP52PWoI3I?4MT7(-fC;<)`~&KtNKcj#?` z=pR6T12>qV6)3a&G>H-aVtBVg>)Wz`zL9j=-x|=@5%0#5CeKTqWIjsYV0zCC>3x;N zGeUYrPavK4(sJA`dKB^c?mD3Pgk+z-7)U|6CAS`@d{-m4G$gkidPPY8 zeCVKEm2QHi8>@67xe?H_LV6fC?$fu^94`MV0t~sMaeQGG=^HrFT5u4ZZ#15x<&)fD z){w8mJYu}=(hb1Zm>B0Uj}));if2Bc1q?TahbK~3wabUKNQZGGU-I%LAYXFM=iEr& z>(KJ`=1~62_$-n{pT<|YpECbR^Pe#P0sKnwf^zVhKbI{qr-uQ2{n<1aM+eB;kG{w(9qF#c5IPc;5`Xkf;_A^qE>f2;IsrN2)4Q=u2# zNt|z{^MIzWm!IV$ohkhk>BAHJ?;dfh40Dm4&?P0q$i)>w&PkAVSeAfRfhSEdphL#3ety;{A1h` zMxrC|UIw-Z^FB8id^h;KHs7T@!n~f(mT9?vnf0hb<}Z(J~V~z6Ea%r*Wu|h;gM>>JZiK}5}_zK2JDa)^;OYxqJS2K7UraI zi%u$;6}l))qVV;KC>X#R$}j+t!U#vkFp4Z3P#pwg6efWVr4t#8C^S)a(Eb#TD7x0)~AlU?i=A7UgEAi!2)Q`TbFhZe4 zHgEYl!IxV6f(%*W8?dN(hJ0xDHR1qG&6|=(U?39?P-zD~peG2>va04f3ldN`9H3S_ zVYp*81|{1dN1q~e!=>QK-~e$Yo9TJ>S*SJ&=AG4_l_|#RFM9bPWxn9PEn*2e<^Y%V!&;z}91$qf&?SjKK3i zmy*3aB6dy<%8?1-V^T*lbl_1IbVwZ$v2(UT2g{L)=OpV=7AOaY6XG!8yoANh;Y*d> zkW7OP^AX&p(Xn%AZh;x@m*rT6a*tu9Q5TGRgAP-hhQ-dwLB-RM;wk7bA7R>5)TObZ-DfRF zDF?ww{Dv$?CO+Xq_vaDPri6eaUW`>o8Fa8s4_e9*tRp&h&MN4*8GZC{s1Bn#298Hd zHOt2~T{(N%JQ3#4UpPp_u|dCCXe56_bVS0=p$=l_oQ#f0*g5ZFP;0~Zxn-nQfE=_b zNFE{Oh=iT+|gW=@Z|`Do#RG3WFX~t z#+#FiaEOjb*g5&oQG`D7%t`2ogq_olLa-ct+0n`o9Xsb1DBzrB^yFY2=>MC^K@rg} zqhseh1RXZWS#f|cEf9Qod`7i2p)Gxt9nBXvG}lyCmKKw*AA6vKbE)Yl2OF^yeGIo) z9;P;pj-7K9I$DvSQ|b_@@q@=+y&g8Mxd_-ftH(eRmG719u_JK*Fv>v@?Pj7q@EO6m z-EPQop11c*?JX!Dw`FiVpi(%tCvFRz8%I2Dg&xXTk4a#lilRYIVdvC&**;O)M668f zG9CnYo=okgzY~b0Bk)d(>EOb({k+9q-^DF$7b057c;H*|S?;awXlw9oh^PbGUGyb? zA(I)ZgL_Sa%2Uzv-tv_zx{tbgA*`I|FLCyi^!mFm!!=`I=OC zQh)ayVE6@Gj(-khm-anOgk&P(OwmOBe!j=nFmvi}`}UAoeGg9sV@2;EEgspg=uOqa z68*+5DWKoD&aXUg&GRTIifKl_AwbNI?;t~gJmcSS3xWc1=9AF|;>?ZUg-4vZ4MGN{ zji|haI8%ZY0$S$F0m4MZmeB!dOsFv8`L@hk(;=(}Sg~FNvPq*pg;*)Jz!IFsfQkW< z3m{fUM$u6? z9k#`yWEuC2K~pBcY^DGS#n4XZkl<#D02vZefbpJ*o=iiJ$N;z@LB+gSpoavjSAxlT zc*!#!v^8pi0fNA&97KE3@$=<5=M=+DDmqIb5rKHmvfS@fEBWgGfbl^ zX{A0HtdOuZ3T7H>8NqDXGMu~cgQC4~Z^AXAc6@H?ub4{p4lGJ2H;*I!3OJ4x=y;T) z?%@tB6^ds!O+j-^&x3iLj_?Br{{!LK2*;w`sf+hZ&SR3{7JyHhs>|>*7Vaz)kIzw_ zu71#w4%dY+%kP8Z!7}m7C?5Nze;j@^To0Z<9v-;=CR~qjP5jl7JuKS7EkK>Z_V{0o z?P2Kwr_eo4p?kD7S2Y5f0&sH*QS{)6MHdZ5#Pk(`aoacZ+KD_ecfNqaxVWLl2S}6o z0>TO~CoNEQ3f-fv&g;V`6{asHu<8zm>8lEjp?zV&Fjnj3Cm2d=n|D37*DnK)+his!5C_J zJ-@~)ZK+dggB}p%Ncav0t9*Emu&%=gKovRsZP%lPB2A6Zp$D~>A}#F=1QD36rw7Ih zmiJNYMqt#JYfvq7TXZVFNoN7(UNFjH@x%3!t} z+nFYbr?5RvVSAjy_W0V2l`8+UusyKK7Akvi}ZCRQf!siva#I}g7x{aW!G+wW@p z+WOsrUwgl&@$2aK4t{l{j*l4&qz+bA?Kcp=G5sdv*VbeZk~Y!Q_Ep@;#8EfExV9-$35ZQfcrTaj5La)U3g87!}aqHwGcLkFiCf zW%xT1Qg*ncESHxiy1(PzlpGI0QaA2VdsEn5&m58T?2B^3cKJm_zf;h0)9gU1MnM3 z@J<_uAH~Lg8qaNdFF``WZ@h}&d0=Vq8=rw<`)cqT1l+im)S8&lu2d!@)`f)Ms73G% z>X{UO5rT&i1pLNPc!1yN2FFI(sqrjtGJ+C*gO@7cH<&tu0yAt6z#F2@z^`*a8Ge5b zhb9?tp%DiB#yKDWzwujm+u;DeL67hocfp^BlcT|J?9nL!zd^ta5hvg`_Ue>?-*`c% z1pLOYbxOc*9Mq`*{02)2_>C3F$^H?-LGT;g)60$};5V`nH~=n;N{TNruw(cm}6>68Y)@f(ms-~hid3Z8`DC_xbL8y~>4*O5*5 z4SrwEUS(e|I41ZF0@Co_t-)_hfLt~l;5Vkgn*|5>jUsquaDd+^ftNr7xT=jD`_uRd zg5TH=2CF3CH(moV3(5x#t#=>R!+_uTL=OXgL*-2fg^=(YE}hiiHwJ-Zb4mD(;X0|o zZ)EDEgx_EfZyOI+2MAKFvw4WPyPrZZjeD@ z)EpzEhT$~>rAEQmr0gR=dZ0+WWl$@Yf_w(CYJtidvkJrw=N7zt{}g-@u2vB5l2Fng zKq|hEP%FB@c%P|?HRKDX_#z|);WxG+MlEKSS2CEEgAuiY)?d#=OlpG4sAx)*c%GFG zs%dy^T4IU zje{Ex7Y>ht^;-PheS>GTel+#pKkBL&-}c*AN40wX@Y9V`{*lwQHL>^D!n>YaeB3qT zuJWu6F?ZJe^q#`;t{sE!$m={uNp`J&0RD`%!pTSn{K=I z=0^9Cclv+l%8ma&@F@6szm7+71H#`FJPHoX*?;(ike?p%rb-q^nUckEFIgNj^UUGk zQ;00yyQLKGpk#4eC|T@!WSPJW_!I|MJTM`}=etzNX$OUi;UtUCH?sJ!lPuoonSK`> z(sINqGvnBV!W`U476%bzafFcp9|y-uWO0-tSsbj8#ixr*D5f!Bae5*UqRjW$lft9mGuDhpLHb-cGadz>qx^;rhn|mdqmG0#@$p-Iebi-O zMObhqHvP7*kNFt!CY*^U5hwC9VM%bmRE%;PPo4UYq<;8SSr#~Taz#534JKFR0vEac zLSIYkWc{OwNljJlc+oMbU@~5>GaB2-yeQf#luhT?AWXRpDCtUx0mZ3NNCi?dt>>72G~b9me_|2$cQ`b!w3^G!|rm{ z>ktukB0mfR^1~D$KP-0`s1O47VRo$n_kiKpJzUGfad#q~`kx{&1jCfyW2C-7@_!5- zCd<3H_W{SAj$JJ&eBSBH)2>RN<^Ow47P+EeMZoS zC;Z3YQ_mjh-!J`L@Uf6&+X0{D-6nmsCo{46;8PF3ZHpD#>EbI8s(;8lpRI?w$PG>DEZz)#~D<`_9yhB?k&0hfe^<#)|j$uPfX z{u$)R=XbPhQ-=91E!&IX;|PC_up8-Wpf3&Kk!WD{^;qQVMwr*ZIOwDdzoTvPJjVHeY3GBNMD-_%U+V^GV&H7;zMfy4fUwVl1(9~YH93MR{?||*) zJY3@mI7a7A&Y#L{`0~gtI6ZI5)YH$HlJD_M$;kybFNaaNIXP1c3P2SWOf3|$YZLUY zS&q`S^E+30GFr6Ti}($7vJ@va+!OO9oYqxxDj}E-zVCE`s8xmG@MHT)460)@dBPzw3vggAXGd zRvmkxgK1Yo2X2eTf!n2V7&`c1!(r924?5UHYb`p=WjYZC!OPGw6a}c~L&|iR%XA_P zf?l*`4$^MMfQ9L5)`}G?lQx#!*rG1@*1g@Se83~-5vk)Q=+K@Z0X1@;dPEF@H0aEcIdEnA*mxG20^hb$04cXV4xhydPz+C<-=kSEP#$$G{j-(FdxBfDlWTrZ)2Oc zww>)0jLEPEor$Nt6mKnahMk&$7lG^2tGo}5ediOn(;Vy zIKN}3XbN_rO=Y!0bclzacD)2)GQ2PEkyjN57Xp+?M|2zm>fkv1WOT5{GbbxH#HZL} z-U$B9^BEg-gfB-J90Tuk?RA5?ASgYF5FL?l40@pB2yPZ*PC`c{90T7RtsKdVqm?5% zj=`orOG1vvqkq$b1OH7HN0FS?VD&nDEFO3m!416WP*}-Hqd8sCE^BVUL7E2ss z@T=Vj;snhI-am^Vn*+bA4%a=RID{#KA1`z>_B z?G?RC%laO^CkYUPy)6(j&?VlqR!GUimwS9Yk=E$G!5G2*2Wf^i_yGvSYK5`vR=bf$DHZ?yEgZZ9Pj-tp4Y?dX^@; zGnw*jk|{k)Q{gX6>sjjQS&A~B{~^eWQ11S-v)q|oMby-PcFy?%I>KL)!V329N%liw zna#h{*;D59FLm{lx%^9$d&nTg~LvfkMzciz#EW^Jvv!^W6 zzcj0-EX%(%r>88(zqFvItiZptu&1ohzi@ibg6Se70j9CKSL=kEoc``JirDjZ`SEkC z`>3<;;qmB-D|=atQvS!##_7=^uq`KipZ}<4f+(-P=?07@1G?EZR$dpTD~bd0k_R+gfsuzk7`y z{;nv-BvFh;tr&j)6cp1RkB;6~;O=`k7m;PXOSH(YP4_6j1epwEIra=zU`* zo5tg3qn%lDti##8Z?)*Gy^kYC2Q1OsxC3qcPdr7sraKh(RbQat(UD5nUva*lRC&4E zW}@vsa-Vyk*1ht^$L*9j_stL8=l{ot?sL)Y&VSbLe-j#>5Di_P;n7Y+aR$0SF45GU z@{D9$S}uRdF?i0NQgM|bt~?{9cOr`9@BSN-`)v-t{}qz)epizJ#<#&k9gAlMuJq!W zxU!*=mwNHcz_ngHGjOpN&kS7c#WMr#Wt)jar89$DtTdw(MOuIoiVOeF8EiSNvCvK{ zS6p#)2O325#!7z&(k7Q^Ii)ZN<;jbfTWN+%l*_ig#sFg2+L9Kjg3~J>Q zZDA^(Yzy8=XKGpW9J^v4i*){)=WOhN1k5QiTGhXW7P_{(*rQ7pu*!}?28%>cG!JNS zGsy*wplBY@2&R$?8o^`+`JMLGFj34B*yD_T=}=~B>=nJb&F6& zt;^lA2E6X0Wz=$v3dQ5)Ydm9??lu`^2|9BoBq4UUYf6&+*Ae)4t1W5sUiao_(S-iH zi2l3XHUdv4acARI_sr5|{44AGNf9Df^u9igmCW&PAwsyQWC600l`IBNt7P#A(XOJF z#UpY=joI?WBSgz)fP=7T+6=aR@d&gvT7`{YJR(_y+4{B-_$eL1)(-SeOI_!RBCS3$ znm5m%WQk%<7QAGZyG$@f2u9$^TGopiE32*%k5>O4npN8B%JXkMhqw2qT?y#DOZ)aL z1huU94`;B>Dca*oq&tU$m_W%c}z|$&sgrDiLL^L$FcEEagr>~>U8`u$krbq5K z_W-M)z~j>wbQe`&Lwctrwx!Ki-%_X9$pfh|mq3TS}CdHDW5~@_Gs;$N3&RE!1$}gQe ze|9i$My)tDWi8HHVHG!W$S-En*@mM0Vwp@!%wM6P(ww59u9?%M_Ev8-wtHe@zfxY! zTq;8&fR0-f5t+(vQ#m05uiE4m8j;Ae_WW>RECm#G*Zc@ZrFUB9{ z<8ZQ>(!yM?<9e))zqG=Hbuh23rAd3iGA$VLz!af_94rJ7126}PHmrAr{9@1mP*_qs zZ_W}$tU4+o=eZpa8_QaJY@z093LqSSu~6P3JNL>4Up))dQ0;A>7MgS#O3hamVvbj$Zv(^W@?q#s~v_TfW3UC#At6Dnlw2#yiSucXK^ zFt`$uNo8;@L01JfWT3BI0e2nTU2qS;{Q&Nla9_ZAFoP0U*2w;j0j4-S#2;KGrhdL--AZ`{Q}@DZ>9ict65yr(w9DFTk^q z?NE&HmAKC1F|TI$dZ*S_ixK8-o?+no5T1tn#3UJBhHwhXgk%ceHJk}|DP&Lt#Rhj2 z^fC+YIOs;WO;WB1avy`f9IhB^+B|q0ItKa%3y(J>)?psxm*QUy5!aZv~wNGf1t#y}YHZK-~Q|eFes* zT;#76?$TK^E^1hK(Wb(NK$-A(;%x%zHx)uIkCll0$SPE##4)L|{&cA#`lAbZiPBq|z3Jv=5scb&;CrUyx4zBmgIA14!HlXa*W=e0$%|%>OZl3tf7rzDk%@h1Q!Os)?Ji*Tw z{CvUB7yNv|FA)3!!7mW}0`NDX@ADbW!vpu(}u(Ay$hQ$?j&Aqkg~Cj5J zsH*)!r31iFG;?M^kLe?*MJ+W@pg+$Rx9I!;PjI|qq-n@$yk#5|1qA0cHneIDTGbfL zUC`3j05Cu^+oU0UI*Wi*;S1G~TbN_i%IG&*2Q>H=QZomqwAZ(EG}bI{YH9J+H*Q#7 zUDfE7F>{tIDaA;%uGw4TsjjbTlcL&CtfCd)DR|p4=B#gM*G7^`72lGSG*`FO07p#n z^hRCOvcAE)5_rVkHpM3fp5-l?CJghWG6mg6ylTe}o*4xDYVzX4CJbZSp>ZzWfHitK z;+@mjQhg!bMK!cn;kQf`W0cB1XNy5AA6CvQy>24nO4-5aB5x z!c#zm|5t$sEu&y8i#PbzXp4q{574bbUvk-V&6i#$jhuC~Rnaxk*GwZTjkY|xCi>!O zWTj!2XaziD$hvJ*71otmp~A{Efje4HmF0nH-XUNWMS%?#R@X&NW=51;kW`zcm|jU} z3PRb@)da6HYqbqtc#hm$zQDVIX!UHcE-FV84q9%G4v2{re)JXmV9j6Amj4y;EfQt@4axYky0jkX@BRMlM2f$ico#)5;DVXQ5PnID%I z^fw=3MIUy>7dHF6b(lg*+-kfb;o6^qmqtw*>huC({6xY(i&q+&fcIjt7yx}utu5TE zF3Z%2#ZfLWt4agciFmXdtU8SWdf%aHHeho`{=W^G3mjirq0O}J{ zAh1GbxuzwanHYl?X|ZFKg;<}qxrJxfFhvcH36UiDuK^D4yfr!(|0U(i1CkLu3g;GYLRHq~NK`cmO;!Ffj zvmvU!$#odk;RX!r2(HMjkDaX`rqdfir-|3tPw6|%juwARK{O>{lzZcgkFXP-0Eit0dCcf{tmcRUbDQM)QY#ke-q88-l(emcr}#4sdw6A(fgHt zg*s!mJvIZ3q&A2b;GI+<2-OYjx8Wd$lSl@V+e0AK8>?_3fXe)_pq3-Df6Vn|SCG1O zKB?I2@4x&8lHVgaUA&S9`xD`K_URQ#Eik%8UCRhhF{y@9{kz|KZsw);8*Y)r`TAqRP_*u zWOWFjWFJBZFoSV-;2v}Z+z>#?#=U~T`y>)Uj6)yz3GQJ-l0clH6a4`VJ0HXtifM?m z=LeIWAm4@?;(-1b=c5QxjhYHF*7Jte1$Y`5%q!t^oUYkA0r1)(RUil^mH_bD9)yV^ngHEpT;*L_;&>2sz;^9os<3rf)9Wt zz-!aTLeUGPR>zEXrWb=cNQ&UK>1ToZ6RGowksJRAf;O-KUdwhREj59$=bYt#RzQv|O~KdMs%uTB3@rwCq~uA&e^3&CsC ziA5kN4ZN0jM)pg4Kie+kWFLv>An@9JFxasKcx^cd_D=y`TMc3iI-~%vZ3Dqhqk-3Q z&{YVI+mk^L;I-+q;PbXEz-!YN>68Xu%NsXA0+T+9XMrw6&_2*cY(V>VgavBtd{FF8 zc7m|kl1-?!yTIU0T0^b92y*4fAE>n(5%eMm)Y>fwu1BzciH)e(30ESl+HOJ6PAu9W z)Y=cgU|on>JLEGE{6GY#wL=mhF2cj=hotFYpw^B#XyVx&GREiS+ zF~~Q`8j?Y;XlVcRKS_z9Y?JgOCd!unR}>C{NpN!b@eY629AkE+y)D?lDb ztU5yFEsmp7Cx@u{9F+zQQ56?I!xFROiieSkA5W<{s*xi6pmr67czJT@1q0o zy|i)>$Qq5ig5<@kP9dqdSZNOW)r#F{?#--t+lea9;i}p;1I@^ai)Lt> z!|}UX=3~Yi*(QpM^9X*frdGt^EM&9QUs2Vh{fG-cQ^@))qK;C-D}3bOTREiWM{a7x zLTI>%8h(4C!hO#4zva+cnZUFcK$BXr9qAuo`a>$C#OXH|BH5U(C@!YpGJ#t03{w4` zsop!OT;JmmdH`o+cAP!+eU8Qz7gg~qJhdVTtveLop{ajGGsK~d%q0k(Fo|0Hl}{nX z#l-w{Ppw!21yxk=#YvUt3z2>j)ADmawc;kE--+}?5>+wUkJb#6n1o*jsueFG*^5k; zq*7zFyp>5z!fC8p5rdZdn92H|I9YrqgwuKIVr`QUOc=|s?K3n|EU#A^%WGqU4rITT z(>^f*dk&JZZUf01WmSf=+2DAvD-wO02N9&%q|imcDj`F8@}WflJTc6JA0^T+_~7cA zq*1S4e*cgU4*06hd~5MFF~zIYm`m^ZXyw++ZXUAl$vdttp1J<%3D-=lUHpsA(|&c{ zP1`2k*Ku9-h;v?_Vw?M;myf=q99bOqdD_&q?<^U+r)))Qzu*6@B)9tlzt#Dm%JK%Q0?Sb11cL44X+%Y(=D(C3AYDsFWdpRLvY97Fy+(wIfD12&+`!1EBs@!AvrB&RzF~a z;pmUELVA~=0JYD4iSXZL`ZY3MPcQDNh}QvIIJ2evAEiEV>j8bU%r8Oe)62sdE9Kjy zez7(ITF;+L6pVioj>mm)q%%q2UWqa2La%g5`4bf+vIS3F3+497#< zjo|0W^6ZrL)#<0CKD|CRN%I3%9^%OaU#G8?`4!6i#C48%ofbD;(0X}zWwAVZ`-!_7 zXuW;RXu^~WcRhS-+q1vPLLB=6tHHKpdDsRlH_sjGL!CSiY%7+BWneq%d7JZsijcf` z9qBT>u5#h{!7&eXJ=DVi->zUbB(6E~nTBz=g^Ozy)fGHG7pWsn(j(w|;L_nT;Ksm> zg&POQb3YM|b({>B12=y7)WBtsgalS^wO@&(s$2F)HxGUjqh9ig@*Vlgu_YU00 za9p?;3O5O^2yQuCEgVt82~Kzy9P!RMlm0#2hj4Zq+8T~#>r3D&;Wof=iTz$UPE`K` zj+4<(;fRwx7VZqVQn*Su&J4MBaVy+Ia8JX%0Vi(uI3HXiJPke$t{t$ez6Vtt?%?1w zoGi}crPLollEvjs$>Jo3EH2bY7NS6|a`>#Stm0ha-XgEL>UIJb~eSILB2FpyHC zWI{gvq!cHFOvu@x%#jNuWN~RiCgl8%RN8VhFlrda*r7)L? zWqLNhNFR{m>NZ&%@5_R7#fdB~V@X{c7?H(=cFE%V0kW#$qC$r7_Au((bn z6Y@%DiMjd%78k3eFxOg`o~y%BSijYi%>z#nagdG%WdCuPLnaOJIAJqm-IIO~Qf91s z&TSgBlzLIbT&Kp8mJ^js3y)KepCIiRCB{h0>BK#jJUCfMg@jp-BYw9<9|!S#sbel5 z2j(r7@^RG7#~ThKUk<6QJpJ(*3A5k%R9_$4#K7dYVD^vvX z(QYQpem-uwr)tX6eSK^{Bc0UC_?zH1Jk!_5whR~l2-sKb?dxN^8u1IRwrxTCGw;{n zQlIVXV;dXs^RJGj?qhIwB93is#Fc1i8J`UPx1Q_kW4jyiraI?5Wy)tP0gN8BffW7tTCAZfhiRXz+8*NfX?j3S;ur|cWxqsQf6@$ndkX(kEmyQ}XrKIzZS7O`4VpR{ ztFU$R%bJZaUrRL&?X6Y5>iU0)HJZpb$^cMWnEQ{hW6JnQ(Adg{N1Kk_on6nNpP=S0 z>uC1jYc-vvZPEjUCwN_>xSN2$Sg}&yf(8-8>Qy9;1jn_AD9>}aW@n~ z$VZRX_GW>Hl2l^P)6{}W%3{bwio4r1N|zU(z^&`3t@XBPiRR9qQ`OFrV)Qh3{(Nss zlh@a_L8BKhpWW70MFIt%yCT@+g20RmW|cK`dK=9wBUgdUe*jM}~UN)S*EEEHB)LUulYjk4;ht>;9vM9>Zh$cv%19nFS?l;NsyBOO~{vEfR)-TAsbt=2vY)*9>%=au%6wA?V$?uzM1(M>lDNr=f#u@7EvA9AsM z@I3o~PDtNrcQ_U~4#T3u^U!&gee`tu5XadFu42&P=(G>M#qM_a9Cb5hoNFIELxj(n zaqbLz>I~S6ILmR)xpsArU5Onr-98~9*0lpkv+WZcli`Dd()?HaiAX;XdQR3?A+O}y zhbK7yXrJo5-kx4+Pkzsyex`j~Y`+-1B#)0xaz0^?yTQIZw%-%>%N)+L?8~mS$2(## zLdX{D_CeyJT6uqUwf<6-||qQg1UUIhaf zl|K6=SK2$zvY&I7{buznd;D4UGaNCq2HDR;Wc+Ts>WJBpVpq1{Va(}N7L9<$jVL*4z6a5!2j2EOWW&alBwS!~Z`wf4yg zhw-i3+ClcQ2~XISpVEtQ;Z?xec;z1M@yBuZx#+zMKobXm^c>I!oytAj+fVvGaPdA1 zhvj+ulTKyVVafjvc;APdo{sb`(7ImISIKlRe!1(AOt%9!4xi*VgU=;b=0pBk$^Ubl zvgk*D@e=oy$HDjCjNtvJ8q)C4O%a+D2GgEH|2LR?soWo zz{rpEe>#+Vh_S%@NcX}qzdu0kpozZ;a(cT_ZiSTl2zOJ;AF?aE-jMRNbcd57_%JWH z>oLh61s=b&puAoBH`oI0!PT!Vp!N13eVHxL9;7>QGiUl)kki|P{PCdo;QX>4qz5CN z-ae%N85?LH((l1h4-Mwgzdcsj^|CDIjktf^DEU``&o2zAm;5%+{J>DBVGm>1ep9+~ znQk%o`%HW+aqikL&olL$F6DB;-)oXfM>+L=Mmc=WWt>;ipT#J47awQx*-1ur>mp+=Dc30F)p=Ts$Vz%pa3g`o-dO)5737ZH0 zSS%@V{!N;%1xVv^7c@LU)5j%a%YcvWBW&o5m+8P0Hgv|oXL`mnJ>${cl~M5FajZd7 z_yzDWt+(+N0{txMvs|Q^4}FjHxh6rH<)n}L2%q_pW(M?`FMVc2AD-~J*35G4l0NZ@ zN#6<|&1mD=1MA-<{f*M^l)g{;t>n&wRNCf->3I*T|nP`Gu07 zCHY+2p?rqqv;R?^=0nNnIt=yLBwvyI&rvV(kHM$>QCZJk$v-IhZ%97Zf+)WqK2+HD z$@snSna@*_|Cr=IBKdnHf4Ah{FZsJ9f2ZW%F8Q}g{!Nm z6aDuH2)5&&q|a-XG_Oheo20)%`ZJ_|hV(zjt3S#emp-wENIxL`i>2Q#{nMqNFa5u{ zH2MFO{%z9#mh|t&y@2}ekp6|zuao|ps0UPu{y-o1IU)Z&=}(1^N3ggKsmCMv$E1Hy z`unB-i1c?#f1C7qKAE29i@tt7*xsZwrJo{wc!JOGgc+~DjvNR6M7S)tNpRV4li_fm z6R#>q!>6tZa1Y=t(S8((S4G zmxMft8Fxg6i4`|XhBqTj+isL02Gb#y6Jg>oT?D=xx`|oC_8keI&$^YU8^at|EkKzV z<{0P&$>$9)74mNIIo7xY^<b=+SLeL4@Z^9BGiz z`9p+^#(!M!weWQ&K3}`)X>Uce9om>8vnr0?$NRAF6Ek!5&mpb70Xn zY-R@o@dRvnl`UIRR$01md3j}oNpe7R;o{}xvlq`Tsa!F8*}~a#u>Sfb(pW8iS=vli zY;Ni7<;yDr_OQZBg|nPxm5glSD}rP|X^?d&ZuGZ(TBh+9A>GT#=W>>JiLtw-J%Y}v#cS@6qk4G!)s(RL9V9U#9r znppJB?U9Qe?RFR~zYtWA!|w8^;?`aEClEKT09-5BB!*H2ZlTah%ZJUVi@60wEc&w>P(~MWVxIw`d~}tUY}8 zmoG3h;F`4rZ{4IM0pey}a{ z1Ga-O@Bo0CWLS0VhmI^HuHiR?ro*fcI%>^ItoF5gFl%W|2IP+M%l zHsJ~|er7uykUDaf2F8uLo)g)~D};_r2)`zE6hcR6ImF#JqK!PP-HLL2E_HMU%E8km z4wEgmur~5)pyN#yqJv}t=>@l`R*pzE@`}*6a**yIz8_+`E|deqb*@ub%MsB=UMqAk zjcagl{{YK4LeEREjl7M};em8&R2`x&0-8Z;d`)^gHiI>MDB zqMbd?O_6r<5Um|@mK%ND+8zxN?d(AZ+jJ{*SPqkp6WG~HUV$MC z%MrdDVeIVnKt~1=kKrOs@DZXz`{E_E9N&kI=WxSWcoI7B)>^2s)};lDP%KB{oZv!$ zGL<8`oxK~OV>A*>w&+0r-%PD2BHA#zoxMk)gZIK^79Du}iDy4N=!kA-Zy$8*gxp%_ zVBwFWkMSDBK~fx*mC^0&)trvc{BgY~b4`gr;?`8JX<#|D>m`z%z0N{>W{hV{O0kxr zu-v$R808p)DD6hTk&TuYuZMcbGA?5U?m=ic+jlwo($Erew4iE7>wNn^wUh9E2H<9Q;ZTNQ2Q&SMLth6 zgnV+OMJi_F5!ukJk$=k~=!P*WQOd25g>j>+Zb5VSOJI`DFg|wOQcWybm=SZ~mo1`M z59?iuWH9`;AMQE-br(_6mef<81fyHrSNxItoKgqO-knqIaQUzM355Myp5d?J&W`U$ zxWwtso^9)hxpWBfOL4fff7Ri>gogIY9X5CN0YoGsJC}nwJ8a$iJhCFfK$CvzP?IOQ zKO4zxGa*@W*k3%;hSP}_3$ivwQ$aX`Hx*zAyatBUU|ovhha$*bB;?Q+{u2Q|?KgEF zk8^Kv;`YI`NBx_-w;-&((Raw-{R6E4iw=wO`WN-~lsaq>t2hKkxdZLx5H05rt>}PV zH*jhAuh^0H{*Q6f)m6Yy7Lxh@ZbJvi{1uE6N)1p3Sv2M9MTg%XXCz=wY@eVMECgB* zc?$VM@Bfe|)lx>G&s;>okcHGLAWI27Y47(pveavp;s{hz)En8!YL=U-S!z`CmqsbV zmRf5mqtvW~)@U#&CMv|@z|Po_xq4MX+e+442x@iLv}h%jYEVeFJZg1hrmjjmQ7N*g zp^AEqgetZQ>J(@dXke@8mvHTlt5CQ7aG%0)y9eLj{s8V{xLN2W!rGd+^v?IgoZ{7A z-~v~VZ@)GMk3d*Od-N^PD|=(}Xgn*~fA#M`YNiIIp*vc@GMQ8hGL;EigTKgS!l28; zC2~7&JB)U1LQ}wupnK(BclQ3a`5?LvqFnCmXWOQMSZH&veAS)(i?&JRWRl~QoMGgg zMvhBz;=yruKaFa_>eu$}OHnu2AoZcVeGfl^-`-iGD9NykR@OUT3-`Qm)hFAZOk1_2xfbquVS6{XLv8nG;kRsQy#p0l zi5jl#>u~iwyb;M(^gbnIJxJHrajf?-L(7WZ-3X&a*v8%4Ad6NF*dL7(H;6b|Mtism zkt=)KMN-2M8tCkN4VAc(2ldf61k*|87{kPIcS6EYD9nB3i ztmJ90B2s-@UNKNdVRKA;IVo*3g|P?5b?3P)jV*072&NhI$}7$cNtvZb25gs&r%A8L zU*+R({Y8;!J*`QZUeSDEbIZle9;~%{XDSPu*VB@Nr?rYW`~dFvG`ILrH(x`0?FK9- zP4kQ?B8I2{R?LQVgSv+1>`u?j8J--^*s-3_nCUY-x#40qL`<{66Ox8zDY7qasPWZ@ zrZUBaPp6^QM@T3mnNq37I^!~L9pA>#{@F5^BbWidtOXz0($WmV#Fb=FGh${+z)nP) zVq90dP4+0#--qMang{8p;4(B)(C>hL9W>X{O7WaCAGdSjVmY{$!Syb_B%sN!;P)41 zV`EsB=84uSq*=~l0yD3*&AT4&K9&hfVq7b1qjfQF4Qok@Uecu2*KcV|TUBInD$3^- zYHwYp>G+-ts+wzXAu093pNAJbu-&(?d65^E$!exy@{IE`4X=c}(>PID+|jho+cvGn z+g{z)(5jh60}yF7zhd{Yvho@XTtMx#H@1-1sQ&V8nqfVR&1yu8W-y|nt)iQ|4m(Ad zJhe-usuAWkI$DLH5>W)^p;R)B?0GofTt~bb?q;|L;GTdx0LO_}IvgP%=fhnAcQ@QN zMBN0}2#5RDGt%)MW)6#cnh?QH=)C~?z)z8ma$I{0cd%QcyNdF0U5v+*D92wA_9MI( z;g1pi5Mh=v5$jD);!*NC!UGU)#r>G|8;kH;2(u1L5YEH3^AWSS|}X1EqYVIHk7MK6#rH+5cN z?HY=TvZRX}Crm79_d3lelcptI>y_!oT`rx5n`pNwy&WBs{0J&Gp`Cai;^Be&Z?dz* z3tGMu{>mnngpP2peZL<2O1zerpOlRyll`P%OGbFOo-(G?fV=p=$e2=~ml^j-tu0mn z+uYFvyz)B9xENM`mn-}&XQ{oX>?nDami6AYwuTyvz|gp&y)lT9W@J}ZHTxE|G~D20RYK&eEzfeqi*t_}J`xz>rzaS}0J|FFo|v?fN^4H~w* zg6d;}rhOk&+EPaYWu`BN$Z2h(dFUnv4eQhGy0PDOJz6NzjVD2e9@M^VlIEdj`|#3! zU55|GaZ1_0Yej6xa55mK35YsMDgA>gi_xTIxIiqd`LHtCY-P@Y^*k$Yc4KROmD12& z(p-bKl9t)@;ktI|h>p=<9#rcMu$)thW!`q|DHWEBg&ntc?4exL;p251*ck|(i4d&+`IgEx~lIvAjh*<0|L0v@~)BG*CvY-!#=I%S%c%L#FNCMx0{| zWf7=_?U_!Fe5|%?pg^cIt+;6hbj0GDf-&kU{+xrsX(vKeK+eO!qsc4m;~=qS*ru`) zUovBSQi)-Jx3ZGO5`96hD=fKQ;>{Jmd15){5v+xn%)M}hhP&NV<68hB#f@-Q12W{5 z!^P6D3u=4Tb+QqXs?u7h&?6drfzAn3$G&^$O(>E3|gIau(CQ95eq zUk?W}JM{i3+4ME&vRZme;V4bNQ|PUwHyV1$rmy8ui;9bb>rdQU1j9VPqK9QC1ohZU zz!K~L>tAdk2L%dP$T8c^aRtof^b0k;BFwcU1)Ix>Y9U9nfipn2fio~*11H65180zK z1Lri|297X}BaGY(4z+;;<1;kyqnXIjZQu+I*ua5ZoWqy9X!a)!->50WH5)i1G#fZ0 z12%9x!8UMU9S6xY8#w7^8#tpaHgGZmHgLvRY~YMF+rSxTwtO016O1+Qre0>;tFEXdSEVNwa3>kPGmUue;k$ZAQm zJ!e>|inB8nOQpC3ad49>KRud24~GwqV3B}|#5EOj4+6v+Q&pQimLD;h4EgK>Kgf{J z5io8fQyB7jg`t=!$xgl}*$Af_^4W^;TX5rfZagX_;GqABH#bQnfbE@JjTrUVZm0p3 zIYdy|h*bJ>pYH&EHUQ&0gWx54@G~6Fp5z(>&t@Aq5uP(HWi33lfULOEK}946Eyr)n zpce85ZO5;3&_no59`rnZ(-cveKO*QDnZgzUTs8!qaf57Z+Ci!KRR{4q?wCQd@f$mc z`vz@;n(=EN#C>{>K|jK8oN}7_Gx)nwVRq*er~q<)+$JoCzl_&UsqwI|au0|sxKz!a z&f^G9;k|GSBx9YwmZEAFNyYvKbP1a{$-Lo0*Eq=j5Kh>{Y2pb-I|-XOm+1s;;_L+R zXWYW1O`JzTz6~dB;+%oPw8BZ7I4gt6PMw^J3}c+MrNhRSHgUceOg<4z{xX<+7o;el zW)tTlkgTkyRld{HZQ}e1EfZuD=MylPm#~S$ zciDn~O`O5AL8LGSHgOsd_Am^aID@YTv48|@;%tO3QqU&OW)Ka00?;N7-)gfhrA-_! zf|sHa(k9L|!Q@>aSw(3R2S_w#lAB>ov2TGCd1^Lsj_PE-sBt{hh}Z&>c)5deup7kB zbq#_Cn>a(jNv%LwO-`JM@RbbOY&i%H0j34eU3n$X1qls`xO8ocKn+t1&gith)5*( z>TeK;s~!oPI3D7|ehikdiQ{n~)E|n3O&m`KsBxrd6UQ?FR30f|6DN_l>4&LjQepzQ z$EbUR>o`2SGcgUEWC+AfO=Q{mVTNl&Vm5jzulu-Ck(x~bn>aN7GfG_u!Z~y`e%FCU zlMKDs2-_5wm$J4*AL71^V87IKda#M(c?kaR!4@`gJWuHqZQ^)d&?%S>ae7|XDHsHC zd0y2i+Qjj^qf;>Dk>csqDPa>QkvFU#g9V#7e??AqRz1ij4sdov*AX^x@VF8EQ`p2I z>~1Uiim-{Z3MoZcjQr*u?R0Up7H@g-sj}zw!{2u!$q?r(?iM`bZS$ zYy@EwrwiitCWM7eoEt!~JJ~l1j>#s@W-xf~6gF`ZpMqQg+`zjNUxZfzH(-6@tMCXb z1DiO%ftRojKdKEtG>Uy6eu8Y`{1Ob-g*I^p^V=f4Sfx#z!9?N};bHZIKi9*si4%wW z120W!6K8-<(*8?~a~MdrleCF5S|>G|IN3Uhv%{;6-D@d$c6Z{1I5&J8z$T8LoLte*>EE(eAu-ddco=&vo!W2ir|sS|0sm zyK~T~l*Bkhev9&{>GYiL6wjUT#ff9-Jv(&@g|{jFdApX+$L?ry(EJE4Lv<8_ z95WX0dC8v)pZu{0B!k4b*UZFkOoTG}ZAs|~p)npnNbnLa6`o4{8LF*Ecy=w$!MHJh zkZJz{U*w}RNFa^tbx4igfgu8mb{l*~WT^d)2whThjF6(~N=nUvuSwbaLpT$P#LIED zq8Q{Mjw*6h-tvWI6%IQx$fGTmpkc>fF$Pg{`J7h9kHE;qJwa7Tsp{rFYUMW&Y6ZV^xPY2nNEUgBO5Imeg-hk&1!Rh7Dwiq-sfAR=k+@p% zGbkkFNou_8NbGaw7D+Y=teo*{2)d`KY8*S~gj#_Z7h;1$fB1im zxqtpWV-~irneb-M=#OGn(k98?%Syb%+yk$Dam)91=8a$d8`>7R@QNqyyrQ`1$7^gI zKbdmfmH)V?`}~zt=Knq}?(&!gFMY6S+`#mq_a214qi~IQYycz!h&IFJ1P%+Z{$c4uc zN$c|B^n<@j%JV)z`47Z(h5RHvUedS8^twDP22uWT87~2EjQqv5f%xyp{4bI6S&|la zE5z&iMMnp%m-ilosXr5rhq#--*YgvXI%r+r3sS$HpBW^bdcyUE=H&Oz%t9QeF=#%~ zmMjnRpkC@?d01z?UCnxtBt$R!l`g|gGWdp6d~`%v_PsA-i$mO-kOuqWgl!J$9x21= z@G&$IAO4MnKMrmJ+(fu+xXEx|mn{yq6YX&vn|v_IYLg?9Jr3I8xFcir1GL3qw!v{m z+Hf%h4EKYqS zi!&9nIEt4Exk5q~7fmwYaB!qe79Vj^igOUMI6;w8T;Cvzk2)#E0Vr7U%t*Frj7CDX{S3%Y+$8p~xiyVh;lfc7a zCfSY{j#r5w28?^ zMGl4nF=BB}J!Na+l&y(VwkAyGM$X92&u*`|Fp3$GFkfa&Uf`{&@wT;pwe3a?OP2pj zKI$-AA~IZSwNsv)d;(l+~N>4ky<&#E$jA2Qh)J!7u;utu}Yw zv`=1D-BRPt22{pmVbY-4*KW$Z3|n%zRW76iUyH2?LIt zZ>zENZ9v*boZz9ojL%>-()>{-I2g+spI(B*Y+Ki1YImUrYd0JqD6u)JeE`h?BnwRc z1jh!LTNnp(3wPNSXS&S|TLG~js?Gs6h{f)>Y&Yey1_14Ui6%1Goc82Q4fYgfKF(3=ILDrH zeazT_$bNJR%m(a+`G9Nf{f;AUx1;-py3)G(I(xr86t$0s@HoeZuoy5Nyx4?0LG1u{ zhR!`(=k9i#^KW(a*Ox-rf(^+-MAO2k@n8s}K$xZ&)2DnFOe z0p)7!$g}VYe?p3VQ9^9Ib2`eO?Qqt^;KCVLmR~}12&Img@&S&Rr`5r*22o4<7BlSX zdv@3}KxDo1JrFj`Qer>d+4Su7EzZf*JvzVT8W2KzOl%DUDVomvwrr}BIJ0ktJr4Ri6T{Tia<(>nbBK4Dg z3Ur2v{-I3wJ?Za6{7zH)+d!{1(br13%cb9rc$-OIt>m98{R+er$BOl1{!2iwHqi?} zS7WNA$78*67w4`z{qIP_dfo*a0dhI+?n}V?mgMgMzg+4ge=BHyi@@}xyI@P8(?lnj z=%3?aeVG{kGC$JK0JC40C%x4Y51injc-R66qG292h<+7V{bv39Eb%)n@t6|?r7yG4 z_*P-p6H~SNv3xY$%J%sO!u0tQEy;(?CX5tfaf%)0NFE#PsLqhUtex3eH(tiLSPb`pfw}N*U=smLCNpF&J?b5$c z`e#9|Sf;}&hhYO?Eco2>i$h@kdq5YNTvtq22#4+6? zOWz}X=oB=|MLzY@XZh$;A$^vUJ{8l4XV6G1@&!zp%Zc;Fa`OR2|2X96e+(b(V><*N ziEW%a(%%msdD-^Cr{2Br(Y&@tB!7?O@0R?Xl7GA8-zxdr;3G@hRvEup#&=2nM#=A# ze4pgEN`9l{*GqnlZ;jdcO+kb;Yb;-_bf*o zmy>xvze37$&4=csDZ{m%U&%1ncuK(|EOuGr!fYpoxmS6!40FFS zp*o1|&ON!4aZeoyS>8v}AmfJ5XTm*_&-)`kSED>J2kOChBY%FD_j{C2$6G&O3V#ZD z{EOo@Q<&fA>U=-+=wS~1^ziRY;h&h~8L!Kfp&j(_3{x03Z@|}LJ}{MMvWb75(67lP zn)p#c*TW%Qn?|tJ_zXPEZlUN{x=du*`YYkgGb%&z+5@?r6jXauaVtu@NjN<4d5Ay& zMm>PyZW4+N%N{BeP!)v8ZW0V%CT$WD=B(*6j35CWavt{U#5eGmf9l8)^0WPOy=^U0 zn+5n^PIrR$tA&L;4iq}ujMAVZgllN+2K=~?4%#26VOv;G@{Nt=C(1G^XhgUkEG-3! ziplP)?OG5>tuRDT)zCb<1Dg}DN1>|STeHlI%?ZtNGl7&5G1&VcNN-cCZ$o8uRdqdJ zDzG179_IBxUk6~iKo_1%tW)gH^a3NK8WJLnw0sbLe}xs@JkY?N>gc;q%%IoiRHh9Z zUv_UuRCzX>v7shH=Gbr{_LDBdLfMAdKJLyqQIg>8ED`jE-C2ZgP3#9C`!C{tkRWnZ zaNB=%{O#O4iPs&#-^NbWHY}#fi>5_91H$2NAIBI#@o4vPpHqm1{5%e9(-b^^=;QGt z9LAaAI2ruy&vCD3dL9SnVLrxyP3fY?<3!lmOpnKil8iwSg2sWzhH(H7R0F7y94i(u z*FgS`!l!UxZaU2Rpd%`FHrtA078eE^Ot)Ym-eQ_`F&K)`9E_dK`3%Q7HPFF2-3lET z;|Col!p`QnfI7Cxa_of;>#37EB4TIngbwEah}5B+WjxC{{1k@?UpXvx_Aco743dvQ zhxrI@Q*nF2wyHLuO|yN1+hZrjK^)gTf(Z-LIZ+O_2b{GW5wWu$fes4qmpTv(Ib>ZT z;$H8A4z|Y|Qb$hY_K1jky&pQ*6bGThe1vI_h`85>pyL=4e=N&Uh;r!Hny%AyUc%yD zALyrj7IQdNPoeqY$`J|oTAzTVU?RtKIcG=gA7axtv7W8x)`n}1{W29gEQjgbM#sH& zK?f(>o=_b|bqoyN2)NhZ$AFse9iJU%DTV2FqU(r+d;J!4@bj1tPC`c{-0N(d$cGZ} z@yG`wK%WSMz(cX!;|AD_@ zYH%Syg)c`K-0SZ{M+Oo+dlEV#;a>j=I=JKSy_3*^U7cZZug?bBBFj<9iD>X)s!Md- z>lWz18jjL!(SiQInJRftI}z^ncId$6uiS0XfoUG+)#5l2?)B}^u?>=Ypo4|qk3Pm{ zHV#u=qT^m?=Ha6$B$z(Kln8Vprkzy8L%&`k;af_`6z=sY+-t&^ zruDL;7`WFrpw9vKdVBY0xL{)c!eH+=<3y{eYZ@4uGB#0H9b}lU&hzI7h;}0!MZz z69LEda9_d9-j}opzyCoa)%NZQl<4a?M1co&fq&Bl03y3fWA?l#AZ4$Y6yUE7{MPQH znWEYR+4k?)0ST1(#S&io&%Ib8qPFj-1JzS;bbHr%XoQ}UV}#gVNYRpyfrDE@4B?XF z3=xjFt_SvX}e{qWcmK4el@Vol^Z^;Kw zfQ**|i5ux(nT)7;DgNtHDHHE^IlDh~TzvKuwJ4bTyT53k?Z0jo)!2yYyQLcsHWmbh zJAYmpLd5fimMe8Fa}8NdCiTdy$O;4^wWeTpBn75ShC>G3LZWg5IM-j|@)xBr|I z@r~YEU&zv*MF((i>rW`;3$ui1(X+0_=WA(-lAG2R)j(C8nnE1UFycuJR@DyPLc<4INDa z5F;SC+H+J2PcT8+I&J!La|vq znp(^0KMBp26c**U6Joj60AA-~Dl^l#QBnN_PsoKh$&(q>#F|)eH^Oxq+*lEW%oUFy zVyQtmsqy0tT=?*y@fIC{R=8N8#~U{c#d@>X80I^8mi&#J*pHegMM@eGWw|^oKzwYtaG=eIMxllBUNsQYS`O=EDPmSU_!X z#FOT$!EF|q`#Gtz99#?ITBp9SZnh6=LQM|_cQi%lXoeCJ9gFzO_2I=d0*247_BE{c zf`{*AC7z_<&*NBzSn3j%ahe2+)BxF;(rVk&)YL{B>zIz#(-p)wpEW%q=rnPS^=-H# zaG%2UN1HUFom%01aD1oELx0^SYN)UKgMS6w|6}i4;G-(e_Rl7}$tEOZLjnYd7$Mx0 zOM-}ih#-WECJ+b#L?DKckkpW1l0{U|Xt-_H;Dvf=wO%S(tkhCbOVwH|`~|DE=tmV5 z6)m-ErIxCn*Vg=>=bf3|vzG+4_kNt;&d$8=yz|cG%*>fNXXY8cU!~#2ca*U%vU%IN z6NK*%d7TdT%W(4@FXMj?ZhkMG0{;KP{X4j+m*Myhb|%bUzz17+J3udv;5`BQ@(A8e z(3@bsw1ss;2das65cTC9m}a^JfR_mQKS+bt%yM!(e)YA4pAlV|^nv)y{yI6=5lHD2dbS4L`&aPGup+>yf-! z9G{1nlWS|1Gjsm}OzHmukZ*I-1dBG&#*4tOGxBpHI0Orw(D&YJZT%I@Pvkj^2^X0DZ8TH zOKfrx(o=0b#%q9MjNw2CF)sqZ{N#w0usCO>!OKwu$S=!B=$d`P}_&Z4jUliC2vhr z6pnScNQ`N(05wO=h0DrDj0i2#JGK&ict}m%ih5ve^8@$t%gU-NYq9rHd&$>kEbpq1 z>i zlQ8eLAu<1pL67miAOw0G!Z}WfL?TW#NW`6^k%-fxk%&DuB;s^~M2rK<2${<>)-r-f z#6-ukx+)~%ZVHLGdkBd*D;$ZqhYg9iryYs7R|FDqb_j|1qzEM9-gYG7lkG^vIk5nG z1?=|}h48E3e)~j=i4b6Lh%jtGg>#LVVrkf5Ai#u#M&Rv8ent z?~3P|M;mnTUhu=9gZ~7^jbsXR@C$SiI`~yM_`1hH2d{_w4H!qV^IBNRhv`oGF8)7; ziT8AJAWezRIBwHWaSw9E&qmxSRPG>No70t;%H3sF>H_>bQkUaDE_E&b<5O?LzcckA z{JT>B2mcAFL|93*Qu@PkBq3J-08Z`7MwU8|c}!)4bEYoFzdN-V|DM!a@t1!2noHY{jdszhF5~Rx$u#ZvoL6uT?dK?-oNQKr+s~Gn{-yhjf&~ z7l^*ELbV|Jejg619)_28&V%Emg`*<$l#06=$np6#8)BuCT&Ja3Crc4*r_`# zAo^~D<(Z2=hbM_hynM^=806doD}6owtS)R|ufm1ISkk1Ngv!crWOjK7b}n)TpDsJ# z?k8?%m)$|PyUVZP9xVKnF5_VD7q8ncD@3uhvR(wySpsH|7S4F_+>%2 z)9SPoM4~gP6Yj!oaHeMUqy-5-weXj+B-LU}sCe4T3SeT5vlZaea1k+_j5&^On z!2sBoomlcW@aJ$gbB*J*DgowuY?R6OLKf!dthqy;zvKfLcD4ttX_vSWdcHD(gV<#?MU7smV^4U9nPo4aw)$A`knMU9rh?} zQEeC`5GI9S>%BJNvCGK63!5IdAATOk z$}H0tQ^v|Ny)h|g)@sPytF^ncd^Rct`;QT|Wf102FtT76l}Ik+6qN-{92bgDK2)+m z$wB=N;(!th)LbYNS%kdchu>da_3%aOiBG#=Y}=Emm!E!cxMx?{9p#TKn&*hS;*l9Q zKX6T8#`FQ3o_MG4z#sNG{MoECo2C)5K%f z1Cb~_ykAC!dvJ!rm=E8morpVu<7Vhbw|Ss` zv04A{aa+@+*`0S0yLD*wTV09q`s1HF-9<|8>hbBH zru6Im;&+G*`>Rc3A0poCyO&&cPr{l3r;l}RyeV*W+MUC(yKwW{&)iQ;+J%9V^s|?L zII{JQ^Y8Seta!LK?Y*~tw(5*8Qm*g%-DSV&x_wZ?YcHO%Jm+m<&c;t3mU`P;m!zG2 z=j_2B;pQZw{CmO-ff)}|0#gOk3`6k1`(ShFSS?pUii-R7rI9t;yIpQIU10l`gfPyT}ur!N9Ke9Lu z)VesLWm-78MG83r)xsR2(ubo#usC?tVK}^y$U>Ug@W|q`Kud8vMiz%@S|ukJWNn6> z3maD#&EhajOUX1HUYx#b7N=wk$T@&k&%qp7&9F6#Q+TpCtJmr|s3eOcOfB^>NU}JP z)ap6NB8wv~EyYn5SsZq0R&NvtS)3l|fNON>IlR!US2T;&QnTcdiGUnxXci~<)WyNM zX6*$@)+87mBc~-~akiqRI7K0gvzA=gxHwfIi&Gyh#R&&loQ>pC22jhI^$KjQp0ff< zaq6H0a_EVqS&zcNmvd#o<0#oB?PlzNI0n z0!F9B^t@#AviI`Ghv}-qh5d6-XUAG4-Jm2)Jo4E5BY6F+5XLLVX?n|GP>w^gNFIk_ z^AXmCag$Q3hGlvSXOL$eBkf_g?f~{F(-y=&)!3+fWQ>Km5!k1aZX5P#Hu&>k0`Oz{ zgJEsBsa)Un$gkVlB;B^K)cY-%huZPm2EQM{k9iB~owP2V;hux}Bm5+fHl6pQ!NghD z^8TN|Vzr|!epRf)lFJ&KDwho_tXbTEO$@{2TfwFE4Hq{K3w?f#1V#76xW17QB! zLYzjQs{Ahn4Q;<6@$OD(C|_P(Q_&c!Dg6s>aL0-L&%t61`zrdi;8;z!C3vzcn*ceA z;YAr&f}K9Rj3mYrYK#;Kt}};*=?s^~)-o8ZJ|`UT_8iL!pUt&h=IS7zY$)1QX{> zTUNfbGMrUhv$C?*&I-mV--Qtp5q@1b*6^YaM`Zn-6@p~V>*DH>u-=uGa1CHpbGx{@ zRk@M@b9%CS91%pXah+7<$^i{`ldE?XU|Gkx9GIiH=eq_czXLSU4OhjDcDP*epIYu5 z7tTVx2E2w3TuI4p;F89#zpBcWAOD#(7Wl1OT~-1Z?s-5r{Q{gG?i*dhfvTE{fbeO# z>Lpi?_%GpcdIDStEA5_NUP;duhw@BKC~>&}8QPQ_|HYNpBl5KlD4!QbEfPpnfXP+? zA$GoNA|i5abvY8;3Iz4@D*?Tl{8(HkHCX!)IF&oqDD&<=qVl{31N=AFQ^2d-runyk z_b6!Yt;cmY=^r8-*Q*;E7;8a2^uI>ysnPayZJ!P~u3u-k%W#)Z)%-5d&sTAVk16!` zxc1%99{}Id9`0R)WjbE~j-@@^(~z@=+Y0|1bh;VeJv!Vb@VDCZZvbubN4cv&6VJrN z54=r@kJ$Z;cciv)z-bU?6_}bTFqYv{uZ5n%3};1ykDg2wH)Rio3m`;=YrmB z3s(r*lncY1sly>loA0v8^#{#;E4U=RIiU3(7NIdt4&u{N&r}$67S8doF@{eWrD<$W z7J8tjb2QB{H|4o+hVtmDgoY(_j;1*uKruThPaB;kJ5E|+=fcLTDZv57D=5Ja#k@dp zKzqWbe)>~C{TUE5ILT>()HZuk%*T=e&jd>otFk<~M8pD$QT6`L&u~t@#UJvwY@h|JmBV zSn~@tf2!tB(){t7KUVWcY5oY!&(nMlY~~9VpH9x}@YrB{er?at_W9Z#rtQh9&%O zb7lvB;*=0mCgm_9IlVK^Vmf1dA_kU) zzBcH77JBH%i+#9pZ?m~su7>}=Hu?9U-|!FE+;haOe0bK7Lrd8)J^ePB4AH6ND{TA- zv_dl|(Ic=J_>955K{4?R!v`X^9cdk4V}^w}E_lpig@{DR4401$NEu5e1a29^$qbik zA1X7ZTu5OUT4uOx?DXj^ILb4mCzLQF5M#|?)3W7X1shY4*A#wa>|kN(9olHtKbm#s z$5At6DSFIJjIod|!{cjj8GFoVRjCYBi!b$NO)RUNUV<84fjm~0G?iCed~R)h#l==x z@>ME)m>g(#gjkTA}sFO(@ zQiE+N+}|?OTj@1`ni{PWY5W_P!^&O!TOd7=f|yHc%a*8RrV(px+gno`2?82+GedX= zc5uuH5&Qnz4#gsu6k|cIl!68+H9(nt^M{>2GADH9k2rJq86(deea7iIIcMbM!((_J zee?73MvfRkYGf2nW@%j`t9?;<<=?m4o#Pz_LMZB>rD6bTG^|tz!gqs3%u22=XF#c1d|txiBMj zV3DeP)_z#)7z-U3CWT#EN4r>;#X21awT@Mxba1FAmkm=fCe|fCHTFj04?&0h3NKU1 zOS@Q?Jg0+WOm3KGxHU)zh9n&8MW&-&oXXA6!7zDR$6@HeFo0L2j&|`fc?JT7$7&rC zI^s{4N4r>;JE0>RVG5zce#Iz{U?qvXw+ERHlxek2$6t^aj$Q4S?Y{6$59-V8f_WV9 z>x*r0CfqB#7>=@IrK3Hp%kijCtf$XG2g8k>7ObaHWy%*qv9K;DK?m#QzKC>yWz*3y z)@30SY(-fdh}IFzP7rsm9jwbw^#`ssxrjOZiqg>@)+Kd#AbmVK+QYhZqjDUt#%lSeMO%R3DteiDLK_ zI~_5wF84tPZ^?q=(4oGjM5p5;=y({NMe}j!XbZ$BUH-YM}0aVn7pSxUqZY|gsw!xepfggBMvaK9lSS!bA#6F8Mi<^FY0 zCNdaj2~s8pCZgQTw=MCHQLdqHvsynUMbF^1WohTu+C6FhJ=LCk@ zR2&49CDrycJZG!_W3&w5W;TFd9B`Nj?gMGlu0RkyN-01s=LB9JDjE2O1F^JiUqSH# zfMF&Co>U%46p%AVj8ojU?UzHMZTlVg58N&iIglt0+^?j41t=OPa(yKP<^(Pe>Oi&w zR~U*pYTJH|h|CQ#(U&xz)3%*EQ04^2hq1@EZU3gQ2N^bSH}jQS<8JoWR5oObsv91J7Ym^`4%disu^`lB+8a_%=s5tX1v3e7wCDt!nlq62hC@PPg9b-tdT6=8 zl?4@9R5Pm_;CqeJ>g3~Tqov@;Vt9l?X~eP+gY5+uF~~T-eMLW{NpC~lN`fEftg`t< zB-P*U7!Ov?J2LE?%Mbawu4*}ok8|D&V9H>=0dpNEn{7r_tJ~$GVfj( zKQ|Ko5;~ZUzryWA{b1V2=eb(L!RJS=o8TU=Wv+yq@uBKioDZJ|(+M(Q3-4jjr7(kR zyeB|2j6?IGdSRr4-siJ@msuCveWzD0MF-fPFA*3e6u{x^p{6Y(H1ZNT%W86M z`O-$dhqcT?p$<9?bE{MxpVCn8T^^J^fogUF)y%d8ELbn>yv7r#W-FVdKql8Ws8L|~ zavUpH2_QH7xJ1TCp^*znV6Ul0H@kk?(mI)@Hk2;M`+Fd>Rml=KAhb0W)GY~p7K=4( zi8&rItvdR-7QBhGFRd@e@pXFGRZ`9l1i*6PFo#+wf~!fKdWR2uY5*60ygJUr3t#i6 z7;3Q}-8f56FAyYT_X>P1oF&TmDF$Oq3c*r=hV) zoc5Zi%FKMx3@#ir1&?~V#99Fu%*vJcnudfI)-ScH!k&TTEN`e^ik0DX27&t<4gPJT z@fJl&jp#5=DLn%>KcNZVmKJ-PDzS}q&2f~Fy`a4n;Ln@ZCs2FXjlGecN1>>=6u;nx8Zx4Ko1XyJz>afBq3k3_~H`z)! zbSQ+a zI8C&@rR+0glC1ieQ8=k=(zKG|39~0oiwht(1pQFowB1f$llDBN3MMcqKctC`DBlC_> zq4ve#+u-}6RYiAR_H{G943Qm16db;GtUv4>+`@=gavgyT1|k3c<52w4 z@Pa8V8p_WT4ds_^gYxTQp!_mIP=1*~D8K(26u;ycD1I^E_WDIb@r_6k_&zIu56gT< zi8qIMo5=6dr_#c81&l)A`iswo!8v@^p;D;gbeFnyjWC{Ww_jd>a z-(fgb!PpV_0-znko!7!jexGhZyW=-=An;+w2vD*V-X36G@J2o{bqLd$IsyNV)KdJ% zrG5kd@u|)Dcc$Kge^=@b{3oQohJWDgWx{g2k3Zt=eNG}Zl{rcsgnwu16#TnWEAj71 zU5$T@w|5tuz}ri6+z-d3F4#llLr@^cBwm8otRqkWT{;20ZH*y11H5e`2)@+rk_fpt zcOG6aUxg0|UED&Na1KJO#k z59#zyAkH#ADN~*93qZ`IkHYvX2l*mYrArzt*UNB+LD#(l1_cDVE*<)X0Cb%vAH-q$ z0J`o1xR25e=sM5UAhKWxT~~`2&k};rbxj~f!3cES>u~&(go3WS5NTq%G<02aIC&FD zeqYhhb@zpnPll63vXeL!bRCiGgjCRVZHCm)b+04YT*C(FIu|TJ*AXisy#Q`N*L?vu zu|yn+P6~DL;?K%B%s;qrD=evt&XYi8Ix;ivf_<{OBN_L>y$}Y7K^YGP-R_K^!M#NI zDH%kS<4zfXuvwiR1QW=0HL!qO$D7&h3jA44-s7Zoa1u{MBiB6-=Pr^LA{AL5!*z(1 zAlGF=BRLAWt|ur5j7F|w!2R?bl0>Kph5~Y302YwzxKV&#Ab?!Qq%&ziu6r9yHVGit zF?0?E&UW%!YY)e0{JS#>@z0GHNJ|E>Ba|CRH>DteTt_eq9}JM|Xc4)N@E{M8mCg)o zHIyLNJ!&XHu6x2zf?W3tLkV)-3x*Qpx&ww%$aQSX_ksoFI^vSJ2$vX!To*Mq-vil~VO2lH4RJQI ze>hnXPF8}H6seB&iZIf0y@G^q=!qPhgRfmknY$42uq*1R(zyiWT6{(8se-Qr$%OS( z{qoJ>{TuWHZ#7&ovO2?)zaPIq)UD7JSEsjwJ70Lc!ZJ31Zser`yG#pps3#8+c6vfm`c zAg~zO+*i@rIcYOez<~&`7{?*6F0K=BW|esois67-%ath{8y2H!=UEh~-j#3G_Q@x(<5*Y>CG(NFYo~A2j4%f6-D27@yMvfQ)B? z4?sqxIZmXuz?T_#Fev3BGG7i9$rpA<>GdEBu^7^Erh~%`fmgf(YnIp0hJMfT0Sbo2ElqNv-Nrs>ApjR-~ zXdPA`hTzwIM=AFpzt2!*#}#Xt#G1>nTq)ovU5)Sqke)7`RjeIF+mAsw@OG4LL$K-0 z#&AbR@mfhQLGW4%COTh(Gx>VDojEAAcoyd|Aq)vM$2)@n7HYph&!LNw^|$mxRh4xy zD12FqN*F@sa!6}bleMU zue$60+BfdCH4BeCf$-149E3Rn^B0&DMA{LAVI9jIa$ZJ`i{(hVoEgK_L(`{dn&Wc2 zzuY&-8UOEVeGh1Tm+A1g>hSkNmf;7&@RHgBn@=%bQfFbC^vDeYZNl?8&G1HEYAa|H zpB>zaa%d!S(QV))*Kc}k{9w?Wfk2(a#qiY0d@%1OKD$0Diqyw@Wn{S4I1k3GkKw(x zLm5&QEV=*mW8*>3AZwPpz-BmZ3*a6k?oXwBj<);2?hBI((+_3<4E;}qJp^Vb3?T&x zXGq9ELJ<<8kg$V<6C~sy;ROxkAYlp#J4l#9!X6TKkPwH2DrEWG;(D`!u!Dp$By1t! z2?=#b2t-0164sDVh=emFT;h8Rl734VL_#GJ_K=W@gfC349*|2YMFU?*ctt`O5_*vk zhlElj#Nrh1>Vt0Fk6tiCVJ5(EpYT$c%VAn!ICb0(^EAvWFh^k8UVo8z3o?1(BdP5fHJ6ej*ezIhc1)G=7BL@LGMz&H)<={`V zII<>-BYDkwP^XJ?F|D5C9!hZ#q@_4ZBa4F&oi0x2$l?r72jq~7ERM9a6srJPoE&Lg zyrpExI21N7&}4CjpaXI;hzwY7!yqiHp7xQ+GPry^YZfO-6qcbP=13rQWE_c8Gp7=o z#W^@xoR;f^a{x#d$AwxYCro5<_M`(&&@7J1v=oP4jCeB)QYm9oIB{{-#PFO#>F^wy zlf@yHW^q7AmW-`oetaN^AMui~96#By4@v7SH%7gT zuTB$bNr|{P0-6!Qbmz)#X{^UDT*E6i&6F%OaHc>y&i4sY_1-4j@b zC$J0~hLub@zj0ViakafHMh`uGXycNLhj|+thSk(n)Owdx4m*KmSXo<-qqmN`z)oNp zPQp^KW0zUS@PH?<43~Lp%dt@Ft75I%+pbxm)xmay|66#5WnWVuAzIZ%LQD;?!r99-PhI2y#|nraYMU+KM$^#-G%O@ zt`v8*0$N;1Aj5IcdOgt#y)J9MD+S1l-2rUqa(4l8;)O<_%9W6C0ivQ{T%QalJmVj@ zY94V8oesEjx4P1k-A!?WFpxo_e~F~`L=JWWW03n+aNT_mct6p6%xb>JX^i1tODsZ7 zuY-(N%asAMFcTwT%8daJxLup?(sHDWZF)!-*z}O@55siyM!4H`xHRy(Le8X%^cP4p z<$#y9`Bp9W8}JSR>(I!N{;8IGK-+g}``fl~c!g;J>rnJv1OB(PKJvN2mGN8*{`EFK zkJTW5y0&rp+vaO+{-ZR1u(k)lf2+;^6wn)Nbh4Ji3zyA&XN5~J0{;vL<9Sot`-oX+ z^WUTSPa#~hjsF;EPRnqKo(Hwu{owPQHpBmp=6@6XRW|uY5SnI z4`_QgY`kuF?u5;FpMZ@n)wxacw`%?t&A(mqZ`J&7Y5oSyU!(cWn%@K)NpvoU&3I~I zGoEVAU!wUJY5oGupQrh=HNRN%3pIbL=1ld;~>xXH+)|RwqPH!e}5TnVjr>( zSgHBkuQ(h+CC z2au0ZDLXFM$KweV3H=xyCj54qk#2i(v5*#{W!r~=Y*#jT);Eb_=Guf z9TU&+^ig?$HN6yVzygd1 z!4;`vFLdCMYTXJQc&r33yFNSCT|;G6V%4e?Bqla37>R+QoG|03FQB7TjRTODWdz1w$)`DGx7R zN5;A@0x}NKeOku>=xFD@w2Nct#AJzS-_MF>yTZ#OcyD835cY(Q;RySOW9w)a3$YM7 zZikL+OokZuA><|E7MU`Yywuh-HbvIc0CcdP?$A0`&S|$iWQSuc9K$2f!Taz8bVOXX zI@U3c;YZN%2qts8qjdy}HHgdB4vyjdrvQHg(w7a6NQEjMVHzFn;TV3|7Yp8?s@af&n<+RdgR0 z7M?_u4%SwBL}J}tg+8(n{2AxaH|&bi!A=a@T`MAWJPRGU2zuLb=x7he@K4b3FgmTD zABT?ia18GmqtelcXH&#w%S*>NhI^m`Rm8d_LI>*q8tOz6QHIOwIWB2vB!~30qT(5| z(BrA=575De@mPcobocVSq|~vn5dQ)lOCa|gbTILrxhifrZF%V!3-Kc07e0&td6R8{ zKx0~64NET5Ua(`nl8nfEn~6#C-B=)T7&>^3LOOJR8cat&@Kr~^5rK+}-CiwZIcI)i z9)=Z8wcf0l0=S@343!`~guiX~8V@~`iM)n@!Fop>C$JEg%Khu0O#V+`A&w2OmMroY zdDcFYwq^pVs&DTLftI%%j;DB3xi$K!w26CtMb8l;@6nNH)oqVHjdmH>fc6G#L}8Bs zyEw2yaeRAxtB?8%o@FQV zih_NuQ`)N1>ULJ84J)~UzE!y?{(^mQ zx_t|Bo&JKOK4_|wh@kg9>Rq_isP-dnB&-J7*M8h|DO6K*-cE)&l>hPL>P~KLZT^Dc z3Jy}>kS^{8ydMW6G@T4htrMBXpd9iOE%(WpSj*nBEAA}s(S{$O0-aTaTDTQhkSu|M zEx3hg>;53s2$6TfXoT_j3%0;=`m%F<&j%iX2H(-J6z}_F-%mfqO3u-H(2FGuo5KIbnwI>A?TwB_kIG}&veKthrI z*5ZT2Ob&>y$gP1!K%CgPt4xBAgp8OZN zH^iDXv+dDC@GTDXQ+#PVLzJ7H%OMlarNcclb5FrxHX{j-;D;snJ7-9Xl;H0xw{Mrf z!0jst_}6j4KAH(s0qV76ZpqxXN4eOrIPi!_=J@ukZENc7Uss1X{MH`6O>Q0!RdWM( zXjKG5O(_X{GZ+gHR|Bhp)ZD;wqc!T@O+SVLCZL_iCk(?0Lf9G0n`)L3K!|UIW>hH<&M}QOOP7_8iNFv#mNXM3pqRuk z0$R+{$~iVnA{#iSfEp@{shu7%m-xuT|-} zLRo-`H6T!cu8qj05|Ida)J-kkH&-rK$UP7ye_&)r1d+C~)}HD?XC(_FjXiyN3!xx( zsSRCu83ITt^DkD;ItmLA+o-gjn$xdJm&VspIix+6)@q$nbK^RI7}g0el6IKk$U;1p zsJ(QxtiDx%wZe_cQOf_enqg3h0deeIrf&C$fq6socst2C?HEYMkvA@H;h-FKBfeH} z*65%DTmGVM_E)QzUoR)^RkC0Lzoy!DDq2vjw2BC1XGEpz04k$g#7E{k-&q{I;v)TX z3?T9pDfCg$_u1%M5Ef56xhVe~&>!09jTru#*HHBT73lFce}2QBW}~^IaE^`sQ3RcU z$w&_TkHEHHJMkVd@~Q=o?~Y@B@36+_j~t&jX2i5nRr$lM6^giG;uIoVon2M6dQ>#D zE|Ma7Wxvn&xV+f^(|r}n>}t@N+R%^hi}|iL@}eFL!sIzJ0RDY39^~`oEV%37J`MNa zT)4Tfrx|iPw1Fi$zZF9#^T{g*=AVSw8~*udnKkUI97!L%DF%n{zXL#bdP(Utya8NV z*+9VTnx%D>OYpdA(kEC8Y;8EIEk2#rED2{#EpI%xva)Vgy%*q<5q|2K+a7f8KLl8} z7GH{U!ZKrU8D&TkypdtmA;^ufxWF{Wj#g&|!-uWz4082)2BS%%_y&)utZ6K_Ch`O) zIW4?Q4R{rzUCFZg`ljmI%StNBYb$lQb7#ybwDirY0LZxpzf+K<8n1MA{p{+RMvVko z?p;z-Ur<+3zXT6W%`<5!s$Wr4ITvSopb9hz@_P*MQ`~a-OoTt+zH@xNtP&`T`e?w3 zI1Q(^l4z6qjKVTzsI07tsK)^N#G;e3hRVjuh83tDWo47Sbrr=;4Z4n5E6Qteu%JRt zRv+dOf@h*zawp}FIxya^Y-A~DSt$`}=ZWc-imP%tP)W6afw=izxUr(4W;xaXAnwIH zMA6O)rb`e4E9=S^*CLVi-X@@$>VYn&8aNA%H#33*kb84y3oGlq%Pe4PYR07v<;zPf z{?BF_D;o%hFH;_?N?G!`O+|!>z_QB4ayomc%Gh`WHN@fWlEh1EmNX%YQv?{_s;;bA zT8*+%LvoW+O#+aVaMRYZ8acty9*eruHn`9Ug!TtgsIn{2mZ4Qu2c;V@*EP7`$V{kY zBtaGB71fnXipp2kEb}f?HB|V>W<`)MoO-}UHqwStWZ_Q#<}HnO(9U(Njx&o z%OTHn#4ZU(;mNA*i5koIzX0ksi0oclS+^8770t>vtNf3GzKuY`ozj2@f)&BUOuaIa zH=%ZUb$Jw~@(BoBSurPz=X94-s?K)N2)C+}iQ#_&0vElbnz{c+LEsu_$c{j7|B0x$ zA@Er11n@1MYhP#g)(PO-6Tr9sp}@DNU1(+pVUr}h2@PTOV?5T;JNSjt{Tg8ZV+dRA zMHoIJI);{o5d)}Wh}$r5!*hwXt&!g#7UH=Z#cWrBTEr{gIznq`qvF7DDB|p}_Hlvb zyN1;fs4m|^s*fO;<&@`fs*`77O0u{TUq^yBNAkRMAgRoS+ptFMfJS zk++G{BeTT1tUTXpYVcN0Z!Z?4AwL)u>JHwt>e0-s%JL=F;`)_y)$~P=_gEsKm*+fJ zXQe)&L1qAIwxN!q(4}erK4M}r1syh+wt}F;aM zqFKnk_#YC^BFU9tkfL=LOq}H{q}?BH;J~Iu7+Hr^LhCHWg}+?);C}>Iaafo{TX~xo zj@JLe`!g5^a4z)47kjsfl44rl73WOj`#q2kDHbih$zyuj@qP<$O6g6TfI&zuE$**z zSaWC%5@#{dgRWD~yI{Ql!*H|-9^?of9c%pvu@c`F;c4jvEH?>=@cxZbw4Cj!Xc zhp}bjU63Dyv-tM&5Da2D9WO_@(b5(n0d)Hd%d8x;hCuT!*6kd3{6(Th?y>k_0 zlOh1Dk&9%7RZWpm$-^PjDMALU6csf#=cPe0_HilDYiz!` zxh*C<3)-@KJHot9(zM9+*5QOWIU1OHT802q=eVpmpj%JN7=cut0wN&%GfBzAHs15N4bOHz3&5vtfv?Js3?S}^x6xq;TT zNEvE4u1M(YOTkmn+1zpvS4Hw(%EcwdKL*>1f1a%PxA7kr{|OoKsYs+VJ{SM4_yYVV z#8=}#(Q;k_?QW3wZk9ZOt1H~cx{kKo@OpNyn=;``t~ zTj{`#Yb*X_*K}BkPUjxzxCl;HXBSsmIh_fPI@mjUxjcz)!7r{al&m4AXQC%@7S;E) zlHNu|&gIt(K+z_BW(YvhCZ(W$h!3D>lZF@qP_#)iK(GXQ0*W?yK8U?&!#xFDHTg;- zsGw-wcOt@VJ>orynQ$;dLbXzD4?xi-wc3c}%^*tf5u}Geye97rC;u2uW+16H;V~ee zK$3b06m9a{aFURIHs5cBlicVcDH1H%#?-GYIh+=u{UkWKdx zN!P96P=d8)T*Y3~nN_r4lr-b0@eQ&i{ck53a?Nud5nY9S)&ejcb#NiAYD&i_XzSk56%V#|BrOz!QFjBI5(8^Bnbm#KC zJHSpMRC@Pc8j4Wq-S-=cQ0d)S8ATGP#VOqn8H!Np-HG-me!wiw?9RI*lt86Be}JUy z0?U<}$`9!odO_+p_j<)S>4GEadG#m?$pz`v#XQ)!OaGoDTva^d4?23 zX#uZhIc4JBpxc=Mr;vguom^;0g(#gm0&%%NMWoKIlS5f_K&lE^?8>7ur0&&&<4O}` zfqPk<5>x9Kat8jK-O49BXemUs+<1cX!gbn7_*152jleAx8pm6W z_7RG8x^I85E+E;Np1I$q)3XfW`t<}o1g0+rq}B`(xdg8MiL=Gcj>H;}MFECvAX8ie zKv{j);?GB3KR!Kioy;jEXGf0GOEJQT^T2QTG1Go4LQ2|)hoybEr2RMWe4KHNp=aMS z5rJf7w2;?={Di)9nF5uwv63^+XgNjf`zSmfrO4<@;Od`vK-?;4oM82x1F6@^yqGEn zq(2mjvpkN0T_#AwI2bFv?N=e`Mpky$WY-G*o`z6RJB(EcB4WvE};vJ=5 zK<8`Jd56O>C>=Rq1&U4;YK&(I72Ls6&;34~chNbZ8v6PY$730J_epf;g7lI6zC>rG zEJO;2Kym6~I6CLUNR-yZ>)({5>d=U&Fixa}5h#Uk0ia^;NbJBVlqe zO2SKH8GaiXw0Th_at0s8LmA1ouJ~<_c?c^$F*)z|^Bi$kTyo*X1a#( z@l39~{gsU`bYgAa0w_O**Me1U?8<{Nl=fQ9}8ZX`t-Y1+zg!|Gd?0(UY@v;b!eA%+f zo~{QBVQtvgQg@EF`@rrClMB-ihTRwtWT zLe?cPxiGjmKqZUaw3gy)60+EtYAL=hA&U<(Ej2^ukpnaxBVS=qimyyGi*p*X_^8yn zI5H)R!&EKBc?MaWerWZakdVbWiVnyQfGqa-Iv~fvWN~<`19GfS76<-XiW5AtIQ-R8 z@>U6~Dj3b;3d99Lj0fw?vN##j0XgqOSeash z#TlU%<|CcLe7e{F3{PozH|U<+U>_O`W2+9L40 zSHkZ`_%V%Eu(U54;%L2%4OF4s5RW+;n8n+W>JN#O9jq2yof%@W%>}rlZlj$8o(NF zcBOCPlyd>Y2RBAL6Q@k6tOuxA!)1!ri_byedG~ig>1GBBu}@(s*3zr^&5~;s$@G#* zH5GhxVmqPYG*&JvUtW#o1`<^pF`X#upca! zHYI_hFYKzQ22@%W`LG)%QU4IaGaz z>&%4sRCkUmHNOA#P(HKDH735h`!Uza3Fo99np%BR(na42LV}T32dZzivNt4fu&`jl+GTD>dP~ zgt$Q&uJ1YGhNZe{5F+UsNhM&*<0rWHB9*%>B*prOpyF#>j<_LNE^DD{NbvRkSZvtqO4$|GVT&lL?;s3!HmCjb&$S=@yG95sj z*t{3t1DJmDf2sL*YkMyIci8-=gWh7JCxYIm%a!4IpfmM;2~7E0ZE|=|u(?>LmvS$l zBc~j&?!~?u{`}Hm(gAFH;ZFm9rHwxX^mDfOJfL^jXf6Sv-aiBLz1kM;_n-@H@gG1M zDEA!rQ*HdGHUBa2iPdP*^DyZBws;z~+)`~Xg#X85lsv0LvF1+%f1XYU`M{=^cwfMD zZ>o*|H0ZrrKjnT3n(x4I31<7Z;b3|!}fi}6NpiTZMH%rSE zf^YIq{&>v?6j?C8-U1sBR_9%?F-uS3e3A6^n%(awH9cO_qcokT z>4BQg(R7xkJ(_lF8kWSz{G*r!BOl)s1S22sss$q-VFV+e{tQQd<`)lKd6$64KS>S) zoEurvLA>eUr9t(DrO?7i)Wrwnu84=Vvnf@3md7Z5~Zae!8|( zwS6xNg?wV!(auFWXy<5~`6E46+XJ=D{E!bz*~kd#uAuo|r#lSu&X?$DPl6MV@{z8S zuYwqUHTp1v5&sMA=DU(&?dE%#IPK>5uN>``?_iMY429hH&U->P_nHsVeC~Z;tNGk7 z&Uc+@$m0RXy`tURLthGc{N!r0x!Jx9|0MKv#(kwthCIW6)+V#V=H_`FMrMc2T_ZBe z=OddNACw`l_&>1mACRz$&$CI4%pYy;7@*i@Y#tlYJjMtTJ6g@c@8BMyAgH+lWRHX! z4;yF305$JeJ~q^MxK1S#LJto?!iUSX4@n+VE~GFFjyzm8cKV`AE=J*-A$=@i+5T*R z$uBmN_SNHNS$xp57#q5qsvGLPORK|Ik{ihx=bksQ%z)-cEw2~fX>%sbvLWh6r);R& zCO)gO5qpF~%hQQxB->?W(Y(SdE)U_L$AUp`DzB;gM?$5eAnLIFTMBYnxo}UL=0{a_Hdm zKc%03FzS$a`~a9(}>XFU-o>NbX3+7wVd~9(uCO)LefV7 zqQ3^@hEr8}T!eJ6UO=tKNNF84K=u+=q>knIg3qx?%4y+cYQodjIs_^s7Jm8$=wO7o zT1WNwgZJ2$j*7;n2E47&iX-pstSBgfS0p#3W1<7;Xd7 zp{sOIB{7ui8k=l%c$qFo{8Ao(o@8B{dVhGGXFz*-5Z^j7FB_nv7vyrG!+wS5MRm@= z`HzVOe-CtAjlky|TSqWMk>!y)7~g179y_6fabJYITxd@a-1fZ0!h+8ls>;Z9W40EreTEx8b{aCh*a3B zzR}Sh7JU5-tR6&%(BmiZExQ zUx>JDI`Db2wz5nx*dc`aF?YhO$w6^{HR?Ai`G8P!Fn&=wSX=2CspEfYRUcHp(gY3K zQ99bgf}gugeS81#ICQj!1%Cx}@V#93%YyM6M^rihb0TUY^HPJd%ta{IRVHZAw&~~? z3%(UPSiJ^C=s^8vSIxc|W!Nzm{M*nm6>?Wb=tuw$?<3?o78d+q+*8h}_Cf~}zwN=` zngUy1I>v%O?1c_UH=`p827<0mUjYmLcHC1B59B0!Oe|ad`825h2hcFwR=@VPv026L%`$xW_%~G;7?$|&z;k9WN?5L zWs%Q&$iEt()E+`OKZy3|D>&>Mn;W=?P9P{}k$*FZJqAws$sUwC;$Qa$hGqVuY~Yh; z0$$w%T=f)x(P5Bo;%ozJnPJao*r%ydT!5XP2o8Xf={X9{{5D{RkMplS_&q;Cy+qt^@~r&$|WEKTh@60`YI5F3-*o34Sa#o9)P0ZIzrc{ExQLBJZk}= zPLXV0=zqKojR@Grz$SJF9)c(kl7C8dk2&!_b5`5-ctlKwBOWb2Ilf)cKQ}NY7-mjjs19?WWp_$g2C~(C z@-OtPeJyQG8xjkxZI7NujgP*F|G?o(BsapI4n}d{MaA(I9BrN5%i$|M;(u}$JbbGI zts6fWK-lfM#epAcp*KHy(|6QYa3KHV)(vq3Ayss!bwd|%9BysyLkDo$KXn{knYDK3 zl~X=UJC(TbJ6n$A_?n2#e)zpE;Oz?I9U^AA9~A)gzy`JN35=3RbKdI$r0Roh-awo8 zXdqW5Wb*l=y+^z^6L7!iKlPC5ZcfRZQNY zlsSQygbKg^3Uhyvf3;_ATiTkJ@Swn%0H}JXU-CLUa3un<&VMm6ZOuWHF7i z0UY01qIMJeF~eySb^WXz(C6i=Kiet7WJ2eDC`{?`HqH zO?a#6-`ENN=3s$)>d8s7ac%&|S8%Ac@EnJ)=z#y`4EmMsLx7aljq#{K(#U74a|xDE z_=`_o^BqMMYR;f<)TD z)8vUWMtcuU1=Zd~i+uu4%w4ZD1wOi5ewDujJ+1Z#!AU^5E5 z`4o(5Z58ACK|;r@82PW+>cnM`3#$`{W7Ua2VT>15Cs-lwSo>Odg+Oq7g+M9WE5yXn zZ+dT9+vfWanQhAS@e~bvjhKNNaTEtoyyI{@t+_KhXe-?1#Q*GFZk&Pe3XVTOJzM}Y|FsX(E_elL`DN=&2fW^f7pm?8 znE6QJ1#iRax2T$L`Ab2j=Uy|u<*B&QM;m_VTe#D|{%U+G@L%^CpEBm;3nasT-Cu2- zqZp0j1}!|mlP`SUyZk?KAe7I`+LY3|{uGRqSiMlwc-}+cDTw>8b5W#dOY8c4<4yhW z{vN%H?ppgy)7<>me$G7NHn%oUpjg3PQ;pGaNd3)*<}6*46_Pa?bgpGuIMA-{SLU~I%NT;(-r9T`1q=2`aL=Sq(U|5<`jiJn?1U;F zffMR3<>(sL6Lf-9_sM2ijk9}QX=J^h8!NKQ+QU$uN!U}U9P%5qKZqteO7u>4j@clZl0ik`L`B(4w+e&!oM`m#1(qJBgQZP)g+%bO-y<9l*?g5#7N)Wcw-9 zRrvE59~=|204CUpyowu)u513YD2}4Nrf~T9#Zf6}SW?oep@WBe6nL>(dMSNwjU1<< z$_T@iyKLft`yq(JnSfS$R?&{MYo=lckKCANqY5Linz9AEdCM<=6OWwc0=8Fak^tId z)53k330Gv}RAcQjltMu!{)#*}V8iDP_}9d;EDRK4t3jK{)If`qYYE#_u=chf`=g1s)W0!NK=V_OJgQ1G5ex z@WUc-NT=(9f;4{F^Rtlpbs? z3gEaT&#ak&^CY~-|Kt$He6(fkS#b@EG2ZlFf4_+CSIwdM6;cKJIE?k~F9~#3!7v>B z28Pc2iUWVGVmds&g@nV6K6))08eY+yde}1?Yt7EIwePTp zfyl-cw!{vzg}dCw@2&&=SOwzoV$M;%PyE+iX%qTjiONnqgpnOq=hpQfbBu~SZhCwu+#(Bi-DoA__N|`(0My`X6O2G2NoU>T7kqE}@3@)iT!WQ9SRmRLXBo9=JYUfN;R2=u}?GN z$xxa?%{LBAN@vi1+CL@BKZ9>wQg9d10rLCRs(S7JwCvw$~^McRC;594n1^k??) zIeW12?xxg;T;ChMFZ`YPvUo$)?MNd-U{wk9pBm7bw~$gx}tD7wACu z=s?iux3}7{@MkWHXscAWwwPA?!9^jZ_9mOC17%5|1I%h`O9F2OH2usL$lhdM1fTxD zrCqRJ1u{)`gASCEw?`IgNrU|nnJv;_{nB7JMK;(gsS7%6tl z`Ipm2wbzTNZhdrn9j%p|NBe2hUZ0~QqP_CS!Ub%qY_XxHDs!{U2OVgte=I{Bs;T}N zPTW#72X#;160iMC?n~n2v?TDXI1kdflL63pw^ZhvX4uYou&E zriI$%%Z&VZ)gDUGKS-mdd{t2Y5u<;Ykcj9{YnZWp}_`RVi*D4fX^l4(oBB~ z_dS}HIe|?7baG~^W-AKOvk!nz%kDzX<=#z!8^^}YDfW9){F5_zqp}%rvb=;%7iTuP z2@=S;NRF1IxLb<{76!#%7pI872xrS~Ek1XS8brvb(7zfZ32%~&J)MdEjq!{Fua?rC zX@1geRFdR#rpe32atO{1ctx9MR&m>-Ny1p77>mk6Cta$6iaPX82A@3XZa(B*S$LEY z<9tgO!r~yi1Ri8Zs18P&fX15taoW%p?xk(0R73p>Fc zmb;+kui|DL&oAIC6R#jVoIPE@7h@Em*PY@Oc)cL-deI@iaC%x^eE3^@Zrm0O?9sL8 zq1}xT^{?JtNO?%vLV!n`e%dVU+{M%N+XG3;AZ$rAj`C3qW zoVYC*Zt4?E+toR$U7Z8NbdHG98A@35dkLr8=I@NW3Zo!&E{_K7}9>Q{Smr7 zxHtahCiwVL;uh}0ceo*wW`A)?kMYbhzBr!~Nh^Nd#P;~g-`W}Ozx*7{Z$5sz`5c}{ zZ@-QXu~W*uU@#VmL+;=4putL>a#C4ag5%J!5T?jm+f;)MOqC5|{^7?i{tYKWhSt1J zXvES=*}^rWO4d6nkbIyuht@)xb+KbQ0@qhZ&7mg)>Tm-N&rye-a2X}nc=F_vF<2HD ze(qu87<2GS2(`EoYX;2`QDbm~Nu{L9epU`PX0L3*kv-)Nl}p<3T&}jPK~?ku(}-gr z)mqXqQnzYwHWN<7w7DlVVSUqLZxhaK!LGE6Ev=YGi&TYy8Z36U+vQj5pXbN|50`BXIO0^PGZ{oA(v!oJ>jFw>Mo-LDH1UsW@^0_mP?*vVI zj#1b+wv!5v??};(gu|*|>?#^@d}ox9s*h5^Vzf?MO*XY#SX^?9d#&SF6k@8b_tq{s z#uDLBn+j?yLrskpxoypPRJv9B>qtVkG!fD1MK{T{hZT6~eWf zS1+tjgc$=f6Q&X79++Ri9EAA{W^gvvb-)zC%z{}6Qx9_$%uO(xVcvjwALcJGnI~D+ zaG0?$4%n9Whs3xCOULB& z8*iB{S~=>_lbi}1YKh@%&|i(j+w=W8csIk$F0vT=bCy|SOY1JKtG~1^2T&1}<17Uj zVWO9mS7FeN(Y`s$JnUq~(Bna|Wul=cHJr4B9m=j4_Up;)3`M(}Pj~EbI)6DqhfyUw^ zxkxVqjUo!tt)MaN4$^-Gjj!xMI%S~Rk4y%`_Xq7(-a-!p-OWZ%295W&a!LH4JvO=~ z!v6};_>vuVp@^(IyJBA)%trWIc)i(vI}JaSd;IVbJfVC1sPXy3d0O}IywI84a&~vv zaozd|?}kNHqhLa3dP{H|@I9QmszzB=qv)`vDNFOGjj}4NDx5@~f+RX&%2ANqpR)z` z|61+-ecbVmRZwxQTNT%8Yb~v`#flo0w$!aut@)m3&U@}X_vR)9zy3e{e!t#d zChxq@yz|aGbLPyMnKNg`97_@Z7lb&bqW@PY%S#Z4*T%X&{62`^=7j#JKMs!Lv-=>! zAID_R!v6vM9Fx5Se`T~e9{UsgQxJ*cslUU20)CF`zJ~wbC{vEz=wFEo_XuR@e+LU( z{v`gfSY+?&gN=A$%N6kV68~QKIrby|F#H_<(f=C!BOnt4|9kLHgg*)XuiRUgev^ z6S9l`KRrObZMVgLjsJU8IzQ?D?@{S>J{~d1!_)tJRQd%zt>nK)rQ?+W-U>AM>SPcW z*r3n$+M=}0y9jIFKJC9prO&P|McLtn6vy?}p_k_HP;K_1X3VUIto2p}Zz~#ncmvQ- zQ>XR{o>5s-vbG*uLCTq)fqf8x*_eu|;x)dR#kG9#m1pgZs9Aec7WubJEW#Tt^*+Yj zJQ9QHDxbOUW6+7^)MPhr_+R4$#gH*;U_2XMEX+~pL2AN;|M#f${~ncY z8^wR`Uy=p()&1|8?0Nq^ll}ksw(sq4qkLv#ab3d&+@w0NkFrK~k*~C(_&eFwyM1H* zcG+w#n7^>1;d^GMvdLy+U~{XsKoAiSmQIN&}D0_x|%9k zQc~s@u;$>~h?xC_j+EFW+SOv)ZmgX$G_AI6>lH?>^NU7S26bakvA`s-A6b|*%Yqi` zbgXG*$kLvUrB5rb{`2BzU_N|FnR(v)By~7F&aMwBn2v-yPPI*LJ5m)UyB&#lTnDgl zrtMB~VZe^HoaQ33m8ZSxti!gTetktlNqK&a{ca0cG=_`S87XWEGj81feOg%QgTV$i zh+kK;)(4#>HMJXy%6*mC=1zhDVrf`IT}>$7apLW+T}1ZU4eR*Q$;v6SW?KuPSX|*3 z6rRdH-Y2H6@b9QXHMb*m8aB7lV7|dRWkMp>aZ2IWgRSg168qS}<=N>7Z8D?Qb$t8i zW+pok-+b413PGt8vdYe1M}(K*r+Q`uKatGGo;}=tt4e5l55+dYVd55*RF!IZvvbth z4j7|XVj{Ap4hdG4S@Q+HPzhP79d(tSl0u?bhV5VD-U@bjM(g-Y!JSt ztPDjs2OWW#II0K}LyPm~gRX&37MWUBF85WeDQ^&!ja5s^OaKcVWyNN&U_IKC;w=1I zouySbR;~8oS>=Bwn5%;7tt3KlOirPjRD{V_L(jKWb)HTYY z*Dy)Lu#x`s*ZJzO3`C|mmg4xFK(eMrnJ>dtsPd@^9>h=!lEW-MwzN(!EmdRKM(#_@+;_q7|~9C+_cx>p5T@60v6kbMI$lyz-6Pa|K0 zce3!BQQ-x21dfqOkHYEx7w#$|W9fMBE5Bt>a2p(BknU3o{mJp2?-;y*gc6<`*A?$V zZTh+a;+cAkO!^NvTUKz8g!X}g{K@fP_kO`j$i8JlB)#xv*{L<|-9%3*oUWZovQ~MQ zk*qUOD+^-~>pD1EL3%Tst&DTQRx7B?im|LMbRHlx;u=e;HAid8Kb<*Nh(a#G9g6OC8nybu(Tf> zqFaJY=%msfuP80F)mR=(cZY&}Rt&N~4Tc(#_#S0|U+TiP&~8AFDJg%UJ`C10sN7P| z(%cK@*2=DN`L1#O6aKH^oEn&9FV>U58JY^S$02O1`&^;Wq9A{b*Z}rjI9zj`)C~6D zO9!xN!gW{(fjfj`9M+Yf$V*ArzyT)t6w6OgJ|uBiSwacYS&0fJc^8f_=^m_yu$AT^ ztbKVM&Q|@o^unW3&9!nf7VMN@=nk-Vnh*(>uONvWE5^mJU>lrG?|!h41w$=hPXt5D zVB=9ZTdTlj8++kUmZ?~^!Hrpx_+#o)kTqwQaEGj7>p}aCOt>Cpu$I)JO+9H9DHrGf_Xj z$sghUO@Ja&AUXjx+Ov79uC;86ou9~PA8$e%8ySO`CO;u+6ojJ^bt^R$IXWZ`M7(j( zhjlNBh?Q*MZ z+l|6UcPbjK!a|&YdDywT4=lK(DRy&H?3N}}-(DV#8B2z7DSeO)TTpM|m0TZ*rNz`bI+Zg0kRu4B#F|EcSTVj`r zlPO6nCd;2A#g4S}DQhfkqwES;4x=qGDK0}Lif6qe%1m-B%tWan_e$-!5cy~p?-`0lYpNYbje82~vd|I2&-`jN zUK^@7O=|+>K}A^Bhb2x9J_z)?@XzIlaQ=d@^EZT?AK<^k`85G2Z%~($$A}ot1^DlF zR^fky<~kq2o8i^taSR#|mxHSGJ@C6+InHJVIUmMe!O!K{->Ba z7QpN5Yvh4MxLhwlhYwyO)~Et;x!ig^=%Jnw@exf_mZo{$z+JW&U5K7>IUY}o#Uz6H z%3`{MNx_|@#FD{G1;hOI?3Lq*oDb$Rbl!SKLY*VB$`XuH>?Ojw4Y1D0>n%1yv5#4- zN3nkbOTBKYa%xdm!PxtHIO8Lx!UM>&1`lgm(IXmGG})NQYrtHDPDc->;u8<3&HH$!R!gJ%BG1bF4xlb0hBmdv0cD!ry1Fb^=DwJ zVp9>qqDY*k*dlmeBs-m~7IhdUlMy*2KH`@s06-p|%g(eS$D=TK-nU{VE|BK>kfsB3_xJt{-k2}p*IhUdPwR^edS)8wECAgb4gImD@ayq$z2LtZUN4?@ zTKsPKv;^wqVem*@Q<}U}z;)4+5`Ka3i_DOOU&4Q}^1Bi^v^4#m1P&lCQ@A%_A<`ZW z^BrmNTB7kPLJXIeXN4!}U4IPHmBplaS*cw=h4+1WO1dSx&g%YGc#i>codYwvcZDJy zid-ukX`b$*!Es3FTIophcAp52hZMTbWiqb6BhshTGu-thyshv?^)VtKWO!U&$n}NS zHO@tQhrt`&$F%`QsMa}0#Xf@qQ@o=fo2(at@g%Ip{|6xjTM`=leitl&&~*U3$vsF? zyz$*R7Uq@&-UM3yh{bhrq`A63YjKIp$BP!1#C-h9;<_Rq-Fab^mTr!;r0(xoTz5xW zvgW!AraS=1i18jqN>N|K@ACEx+ywE+94nYN1zZo_VD!ec*wh{*p4gP`DWGf-V|z0%LoKck@}j9HQhz`(pDKfRV55=ft$=vcdGNd9 z>f<9W1c#_v)JBEG2TZ&KKpFB8*M({S1ac!`W0%`p_rW^@-h_3o$KcI_H-5JFDR^Uw z;Mct`!yEN9yva#6eJ=xGUXps?j{Y5(v(QQ;^(>G6r{(We9vz9O3QsAIOoE>`a1yQz z+ULF&i%SD`FeMp^YXdgRVsUZ6PPSNF9kfE;bCFim2S~`(bxt6QCjgWoi(PY=Mb^D@ z5zmNo4FjgiB&I0NjqBF>!gR9%*AZ;LGZlIDOtXIrJo#J?prr$#ENbV9jfYX6{;rdU6 z*rmj0F#@A&>5q}0^D`O*J7@#v>-2(5l=F+U|j813p4a{WV;=0vk+_6OC+8`|pE@%E*rx zFfa@M%#7@|GQv!7c1!m`zD5O&bz50{+5`#ogX`ZNNpSe#et{#1 z!4bWbpU)|60B0-Nnd{Hbye2Z>r843RfL%-c2f%ZQzoN{&8SDzOzf$adU@OVKN*3j} z3jg{)Yw7xcx=%teR2>YUHsUmD;szX+S z{V|Q`rc-jrwcu5ec2&Gtrr)q2hpMWatgDjTKv^`hW=U#FRvYjd?v$f&Lsj|42}*?9 zBMlh^`5!T@t~v{ISi}L7QKdO>A5|WO$RkAOtH=X)5yWY_W-%_*mCf8FS(W2rlWzd8 z3Npv!F9-h{Dp{gIJW&sT_&oaTn>jKKwOAV?*~Okl==H#0>~~msS<&>;-5UjL#3E^nwI5 zmFuaao;u!XS4ZZjj9;%m3)w8RGhYYTfloo@kk1e`4&PU~*PCUpWiSEGR_X=o*lIJ8 zi;#%bAh)#>dgCWk#YL);F_|F&RvSrWoKw^bR$}Dt-UMZ%5^eN-Kn09c5r2+=Uozlo6@Y74hMM03?L%I( zbpF)T@s6eQPLpScL+QNR)Y%h}RKy6}wMysDM5i{|`nXRo*bQ^tpb^Vwaj8 zukvW4`3WFDSIU%YS9EHH2DDeC#OZvCW;`2K1Of7@4IbW$4^hb+7 z3i{k{utM~NDd8&>FP2jAhEg%`Fe|}gh;y?P_wQ9D7_t?7FMc3*%q$;v^2d{Z&n%z2 zku2w2$D-UePyU=S|7cnSn`jSbNA-e-VAI94>F>1ZiFR!oaTkI(wE;mhUyRSM_w<4< zq2qn(I7uDvwy)!L1aU?Lf=b6Y#^+amdch3TgIt*0Gfo9{RF}1JjKU8D^@5Fvb{V53 zb|M<1@LNK?;66lqh|#)tA{wLcvqQb$14R3r(ULn6jZyf8qF&GkRdp;%yk{?U={n5Y zct+u)NiR4P(atrabrfX+YKt|qq{Ur=NIjs!yA7V0-b~;78tTtPj&i&=0-SU=Kv&o6 z^!Nz&rP&8oBeYj28|P(PJdr&*?;-q~NY?vn_$IGJ6-q~2kZlc3;YVaW+ZvuK-lb<- zLsZ3k^lT1OE6r8~gD*XsL)ChVkJq!Un?T7Y>Dg?j*gI2vvYyR`%Fn0h*;X%8g{SJ8 z_k1XuqI)-hOs;`&JVK^g<47f?O|^!Sigiu>5yYOfZ17CI#m;&))jDXs@YEU&$M?V2 z!&yJR!*#)RhdT;q{mw`8;E9tuP&`0-%S1; zPDdH=t)%rEg(unsxFxs?lW-SVKMUteK)y<|e&^yLQ3}VmUVPJK{kEY7?}Xz!o5xYV ztlzx6>GO0jC>HbraM>k*n65su#Uv^G*p$7M=E4*n$)!FWM%$=xR1^&@fjVLujS=Qo z&CkE_)vT5Z*AFfYZU9{VutBjCZXP)>{howT)31u~PP}YS(}PQ{yZg)=4?R2geaCgb z+H&4qg}URy3AqpcsVZyvO|R~Y`1KVH>py((y!D^GGotTHU$pv;y)-i_>x0s(PHZ^qmjB5;_s^|gUwZJ8 zRUf>4;>P^^lsQinJ-7VB>IL;>2UcBP9g}g>Z=UPY{|@Kj<(J0&wtj8$*t-rQ^M~NL z^KJ{=NjMMcLNeT7xCwCc;0oc&;Wof+huZ_U5AGn`A-KbEEpR8{JSfCuICf4Zz|Dgz zge!;RWZ8DOJ#hQr4#FLRI}FzXcM{Hnx|Iw!7;XX_n{SwT#2=r6M9={4F9?4XH#pB&(1aZ zRP=H9;}eLyWk1_k@|OLa%_nb_-!H}fe@TAWFJ!otzX_7QmA@oO&$>sQB5$S7J|W{< z`npSg4oP{li@@+GDGzo!$XnqYIFh&YuL+UoW0c_oVF!P#7v!z$$NmucizGch2+3RZ zgReI1@i_=5Z`F^XB5z$UP6;sFs!vusLX0k4I}%ksNbN+x_bMn36_@&HBlE?&!SZ4m zvz%DA%sdi1KTi51`k`cMF)yS{cwxHZa3OGLvyJX z4!VIcj`hQB$EkJI2C`Zahe;|gxEvarRqDlaMIFh?_K!0uX>fz!hQbYl8v!>G?y&>*ME4|$ZXeD*A`yZXa9)uceWSMY4Efckn+vYIW#O%raUZ|a{FfK+eDC_`Hxq8$(zHG$_Sqr5w@3f0_PUF+ zHgAu<@tyPISmv|8teZNZ&#!NY_pUo|@`y<5e2~%o69rx-r*$;g5MQcNY`$=Qh*p*xNCw_j^IVUsb zvP)>F03I!2K4EZQ)mNu_)|*aAV-+!krCQ z1-BXQ8o2*~dj#$kxIe>v0%xG`+5T}#c`DqQaD47w40knLGu*>)FTwp0?gX3@&)wc| zconP7gj)tz0oMfgL%7@F9)vpt_ck0S_gQz@YeIGBZ!>s898e3yo)jT=t5}Qi<8&_K zswrVeaiUj3IBCrg&JQDm)7cWjJ`2^b10xV8B?)nsQXo$H65>>;q|cX>gxE70@#8i;)8(G;Yd)}l;V30fjHYth*Qs^p40w>_%=Xvao(R0 z-y;ab_YH*j8bTmWXcOX4z=|kR9PA0iscK5`6`Vlq-xA_fqdp3B3R(5E~#uufa(~&Yu(Fgt|a{d=uj96M^`egAm_*h^`r8DreZmF23tPTx|m! zBJfp;gs2Hgpqx||m7JTVN={S@#8;-(d;F_iThXO)Zes+7sr_ z{#1%UYtI(^v;U2sncRQs{|8Xy)0|c=)c!nAhhUuVJ_9aD4%f2_oE_sd?pq-k=Ou4O z>DlEtE%ru88l2|ZAA)gK>bVe%6H6aMr(GYXXEGsYXn4UQKTgDiVw`(fh42BI!!O6# z6s)ZZ(#P41e8|Pv5kS`Uhi=6n*d+Bv$d7iK3w=sfE%xBZDlhV)aN#Mi`#8c`Z^DIVBYf9&t*xv>q2VZMZ3V*5xuvz0b;ln*W1Ev<8xU3< zCM*SEyAgH?!dAg=i|67jGs6!c{Aq-W_8Zfio-%VcXjY%R$(s?Sz#h?BaI9wjyj}J7Ief)_^coZ*8`C6Zmv^ z8zrynU&Y4Yzq((MGd+`gQdN|weJ1KN3rlKBeIsz_d*;jSqt09O~hVT^`&bw8|&*bE2>K>8%uqe z>R9;G+M6mfucooC#FtsIB=0-<3fOLak$IZ@cTtF^_0e?ZJbbHy9ml?t0&CyWCAGfl zxjD1*0$)xC3@yMnCiR)cBT=X7*EZDD`gb=QUR7L=FIenHtTEZ)=HK5PI70j z4)q)BGrzZ0Vs2e=ZFxmWeYnE@4jO^>Yeiu1jPJdv+@D}sMX9gmdt#}*GFtooU|g2B zWc7J7mo`@83pwA2a`u_5T{2ZOzo7vj9vwxE71a%+M-`F9({JXYd{Z91%Qcm%r9%KZ z;#Oq)2V3U$KqIO+y{yv1XN+c2Y~f9x70=vu2pDAXrE$Z!F)B$sp2&#-;4FFdHJ!OZ zkr`>`+!@97%n8O0Gw06r)l~T!>NcAE;=Ji~b;V>bD>`%8jK;DuUmZBiN6lQOcGeAs zax1XEt{w8Hs&>9YOjtQLM>az;S!;tUGZFh9OeW&rX$dU4+?Gb!XitjDRGeF2?)JOB zh9CaPmxb1sap5Gx6uQ!+x!jt8i-;+b7~SX+<(QIW#Je5Kx)@RJjfUa5+UVgfGYog5 zF$C1>&N1{`4b9Wv7!~!tG1Bc>V8nTDF~+!mXN-K;7=4xz=k^pr?69FDs^;k5!-$N6 z^uX=L0Jo>iIN$Az_oNzzv%UeILq^Q~=j|r9%ZNF{=yINMhn{1^xVM11AEL+Y7}nF+ zqC4vu$(`zUb}2LBoy$F+7`ih9iEExDGlAS67=tGnxt=Uz#gB|accHQDQDe>mW7Y!W zW*rt8ZqJ*>`G<{K_X6WOz0jyEG|q#{GYX9<3y{uMBQ4kHhp?Ut+@1+Wlk{6w7b8t;%BDa$3pDBssp>v?!fM2cDsjF8bdsp#ypfy zU(eY_>KbF=dB%MACq^bRbzzRN(d`*woVUQZQD0z8T3}q@c5d8a%tHwbbUUMNVV)a| z)oy2;C)RexDL^=j_#p3(NjmXW$1&%TCDwg4H@*KVwIev80G35A= z_DQ%5%Z2(+W%y7?h6j2+Hw~ZUcE+H{W1JZcFnwW}QR+5m!X zDsTg!GLCl7H`XpRDp;0hFEDnYEVt^oW3JUvfns*K9qEb2?W`6VI)qYN^qf04NqvT_knIUB3S-2$j~TJJ>tfv56#23VmnYG=9Wq^j zB=G)lJ5NI0K<5tt4nR(N0ZedT3fn$!LRk-V?sS$RAlnx3sTpvUieV4<2Lt*#cR358 zyPpx`__dx0MSp8TJCg3a7K%nW`xN4Ou0}qbA2)emJm73J2`CIVkTPSq^Ev<-s3ZVB zYC@Y5sgR+j$VU(v==`yB3sj}TV&^KV`p{JMW5i4|U%j&3O|9Bh9GCP=;yFn*~Tk zkypAsZy8tX*+$=Nqqlk8-ci@>AcT55*Br90+dECTM$X%S_J^f0K^N?g<^}r+0&N%U zZFRwZ3NZM(95%1Zooxc%G6U{z6YwSj1~~6UfO)}QQy1(FUa+Cg2XMjCoF&=D5LQdg z`5Lnw2{_vrWESCTD4fyG{Qxp3H_DWI)s!QgWy-w@xeVt400SsD%#?e@lp{RElzRo2 zWVrJ|02$_0d)d5dM5F?|43SaJhX7>qVvNK^foU%_eFDoAYHE53Vxyf8BL`W|)r_IU zUNlpD7_n)Yd4&(DE6mFhX(oDzQfbad6{70l^Xl?GCO{M}FRxXkC)LfT?_*KUry*cC zf8j*AX=TA|72As}qcW>=d!{8Cd zkTP8CDTZ;DF<6N<8d{DqENU+V7X#P>!Fo$@uqimm6m((bm2+3q0w{je(C!N&_nO?# z(JCVBo+zj97%E7wT@D9kKVo`lw{s70{BCpM?cS%!0sgO;xH$rz`-U@|YbAdPo_mXv z{{{G;f#;s&2Tm$gIHn~;c9kz6r zi`*>W$u_wx@L$^W4HCH|;2xWtA^4Yxru}~xdQ9k>LSGbmdm`#5-^5Ef+yp+~R(_X> z+(kmqM|iF+d@cChHr^+4XA50|@D`i?X@XA>IvC-14+^A@4;PwqZ2D5b@3QgTB%Utx zUtP53!#4fLu?T|o@0ifT2%l$*|BB$x0Y7Am#|1Ks_j93lAbgfB-j4r`h72E%;*K**2VOJ(=D(;H5TvfZ*{$b)m--wB~Q>1LgEC=A{|`ZK00~Js|Wa zkhk9lw+eoh(2Ing2f0nU;(!0q?X7x7y2 zUu^mKD;BgcAAbaHzc1bdzrtqMW8nX0i}!%UyB)awKG^~OeVg1Ck*fo4zfUT_7uxg} zirgZhGlY&8Iz(t6p`XMB-#5p>+wYs-VzCbM^{UXP5pKV49s_T`Zypr6yM*3^aQl7p zL%}Z>x*p;7`{sP`_WNcnc>8_hlX#1T&Ox~SzL_ZaNTCA|ZohAO2#y8)LHCVI@UO8z ziTOPd8+_lqBlz!u+wYrK1b^X{B9%P3w$5BFUcoLJZ#0G^7S?_ z=I@YKYko!g4-0`kBKSU`*CRY#^26{Q;H~}(`3t;(ejxetCEhB?rP|^x4@qaF$n^!D zEOHk_V`+lmSfkLKV#7a1814O)&}XBy<|JGA!_k5M9rfHVa@RpF-X?b?cq_k@TP1SK zgytZ;zm(e_F`+t3@QFePB7C1b2N)hB_^~L{zM?3td5LSnKNb8Yp;rsVLZ#-GA!d0}&L{XV;PWKE#Q7O6({TZxV8g$12g;dppJVEpa_<2j zY?H(CB7b>N?s<`W6u4Dh#19C*54crc#BT?0l^6Lr;3r5qkmvX7Ot%?+Qmou+-fRoU zqP^xU8$Sp9U>iR`;{6qG9vJ^!p}%(p>htHA>wZJ<=Y{S^c(UY^;rD{K>K%E0&P08y zfLryA_)@`V06!_^PaL1z_{)j>0Fmnf+$tyH{J@HOv6ReTPQ-QaRymR1g|{k{JI{&s zPV!593iwnTKOB6rjgOajZ$p;xUlsbSBT%m%!do3KQfD|8X!`R_d>?qLUXlNi$XzTH z3q6|;OTHOC5d0w<-y8fv8y_k0@Y1MxpAG+~9w;yBIR;02{si1AFXF!z{8ivq`4E2r zyj9Q0|5)U>I*ocR650s4<1+629Jfn};LC-ciEwLN%W$qeVf33M_j!c;h#H5HEP%EilgIw7)J zFlf@v;L)_WnuKl;%BG7r?If)fS}wFy=qjNrgcb_T7n&N_nBWdk>#JYVo!!E*$kCOF$a>Sw*7{tUqf3!W}G>ka-~N%%**;z1eDE4W8+ zm*5n}pX+OsBjrzmQvNe3*As#t7raIAV}c(Q{D|O(1%FfU*9Ct?@I!(>C-_r>KQ8z| z!4C+2pWychzEALG!S@P&li+&<-!1qq!FLM2UGS}fZx*~s@C|}D2wp3ArQqd)=YYne zoaTYDUX1}|Ic9;f95X;!j)MhH7d%z)6v2}PPZAtDl^(C)9>GCWJ3lqi44))4La2P$ z9ZuM>Ki&`X5= z1&t2nxQ`qu#*vEd7kazUTZHxy+EwV^qD=XZgkCN5N}*GPP89kpG$u^vWudI6e7j+E^hDcdnpwp*mrgtA>CZ?!{gXULxreMf{I5_&-BUZFdM@;+p|QlYs*vxQps z74I9$fhhVBZaVS;pV~3hg$%*5H1I95!_<9C2&k{7+eP2 zaJUh0nQ&QfBjHBDjfUfWKNfBr+<3SNa1-HZ=WMt+aDT+LjfGMC{R`zx{|E3tg*rq3 zKDbEKH-$T}R$l!4Cg2wF^IL$cM4sOO+yO^&8!{$}@64db@^epZ%g?d5<^KlP((+@@!SBan5x@V3Hr(7tTqUJR z8>X1WHksROabL0F+!M@7t1I$l`S;rF%(dC`FB{HXhb;L&+46WjQn&EKwse1lGPCfF zHvcoqZ-%T>`b|IkDOP!M<15S0P|H8jR_2wqyezT#XWC>iH{*|cz^3yf+&h-e%WV3) z*<|=(qb2j2P0vc3{}Y>ED_T=IySjLFrJSy09*?NjD{4hcW-ORlG&5&&jkQC0n#JYRKbQCV%BuR+u=nw>x0GQe8H z`E63Rj$%2zxaLtDT2WbL4NfztG|MBsD0k_S+@hTMdHMb_X`AhU^!&wn`O_EAoLz*H znm>I8)|PiFnwe|lf8LT=or~d5s1uRGU)nI)Fa_d+UYK0t+VLJ?? zp$fRV8*mR4S5${jsUzb@l-JZ%T!2qyiYsOLuCLO(&CKIK3aTsk#mu)*Y@QqPA6Fa3 zUUf{*f85;8YLz9jXe90C`offYr_PX7twV7mK61msO!($tDbAd$t2WQOu{Ryl10tnCGIfpB zc^j)sQ2f<3jrElqmsG3oMNo4}%tN8iZ1gqaptW#qTyPa_bMkW7I2}~h&M62=RLVba zQdHnT=hIBRBTdo-s{&?2{l9UJol3)3Rok$!sDuZ*qn}ad;{kU?Gw0ye<=Ip?_p%NZ za%Ls&m!&>@HR7u-frN@F-6ai?D{;yaaeCP)dv%?TZ}rVO5y9+` zokFm|b}KJxtZb;j*QCC>Q$*?@JDoW+F6ex}HpkAH&tIIO*ZK4QtU@_eq|-htvNI-_ z#eAxyk!O2r7bxmeM(orHlbtd26lWuLsN(y0=52=tqrBT5F52O-uY4%^HppqXH8@8P z-Phu}Ql4hk=JeGL72&hiHC6cb`ahs5#3ujwdH(^UI@T4`YUVZK^YKyPpK3zo|Jm913!z zj8A922F53jMW`hWfmlUF`Lhf213Y~tm?L3){^FNoVqOIZYWl8sE%al7>tk>(Qyw0GBJ&j*4}~bt;)q9gjmtDnfRO4kZ-wPx4a2o=mv%I07B`)9w)+`(Ov_ zIDVmaC><=2&^pGACqJFJttHYlip1w>S?1l0ds^f?0s2jvH zRj~bE8y&@~SJ(O0wbjvU0OqnG{c$IBuq>EJ8#@MJ-6F0{5gTp%rlCx+R)xPdcGMMD zuko4pOHg@C@Dd!Qp8bJtCs(1C}HQWI*&<7b$5>|D^1 z9p^Px)fP2yrkYYkMe`TsE?Jsy#W)HbX<+UP(SiEEl`?405T~{VU-NU*5%mkz;hbjP zFTV-Vf$XX0B_r|qQiZZ?C~B-;k8@*-igJQ-?u8D%BRm2fEX2X9xObHL*~-*cjMqR-Whn;hUaDNA~VLWRsQzFZ^r-x znGFGZ17=!ym8Ctt%6va~Y&G67p#YJtdhUW~UBnUNy@S`}?f&+xGB>dd6~JpQRqtrX za8(Z6F$D+z*7+9sN-K&f-;T`m#?p$K{F<7|)ioQGOe$o<>6t%ketSBYj?!bL6GlhD z{Dl>&6G1z|gi{9wKMn1rab{z2UBd;GLi~2}!ceu-0z^8JQL{6aOe#Df`L(vJX-`LB z^O6qInX}l}pss?*gh?mQhhw!X8aB3<4)bH}=%Qo>x3!frLG~0}@m}8YWtSdLX@RhI z&W_ohD`vOsxO7w$UdhfrzGFu?07*ZQcJGn3fC82tZmJkL9*hn(U6p9-!n!$98z9Ug4U0 z>2dFwEvqEx(sfG7(MylJTE|SyUDh(ers7EJ{$EpVx`nx}-0=|Zvol-wW2wHD+Y)Uh z@DNy=c85O#l(se=UDomr)1`K&YD(*VzGq+7;sL*+=6>Jk#j7uw=)!d!cc2c7)cre8;xW%;;J`aGJ{$ob+kj zxi9V5_6UTjHDbrM2jSh}ir8`0ZSY)q-7nF+UXia%$}vr%J%7n&Nn}`saOv@6RRV=H zA%4dq&yHO`N4?tNP1vz{2Ru+c3z27~yRPu2xBNs!PFBT-s%^$pks2Y(%6?x3Jgs9A zTDAs>+7dAfLPc6;Cg4qADhaL~yA}gr(z|BBbLD0pp)Ex_%b$;Y)0Cd=={Ga+B`y!N zx}fWC@G7N$fal81eN3giQp}mCdwDX8#mbq@Tq%=)x?3%EJCwRV8_LEIbxj?sn}?{+ zyAt#ryYd5yb1lW$O7W_&iqmY0TiA9Ls*-dtE;5^+;8GVS5VV=w4F2Awhr)-$!w=eE z)k3NzvD&%3Ew=4OpnejUdF0!9xh)T2aR}}y=aaht1I%0Aa)*MYQ}K$uxFOZIL2bb|v!bq~(q~TY1+*zSWqy!YF8g#LQbF1{i;`DyfiECqmV_x( zTwjZQp_X#DK@>twMQLgk-n$MSl6qmPmEf4v`tstsT9wC{HI+4WsZ*>H95rijoBU^3 zfq~*3GTEkVHSDSLm3CI$s4)6QL19OiGrtCV)xk=Z*5Ec5d(?;x8L8pmjj2OZZRL?V zEH!Jy*wo?be^AH}fBI%2Vq-7NEtdG^)YVkY#5|#oMPz}4+g`3PSyCoL?V8FWz7n*` zxvFBr;E>YKNNrPs8L9PEH8l<8*oCh)I61QtArE4NRT(lYz+Trf{5A(N!mM7T*-Axg zo1I|DOwz)v1TEg4o|a#hu{dKHRs*!D_QB$+j%)cB&YY`!Q_9LNY8%lM3dv_k5`Jq~ zgr=d^n+8iVOo%=AVzM1#>vsrE59j!1I?0**Ptg`~oWLK$_k-v7fj{!kgHJSB#q+U% z=>|2=mw_jz{dWN4_Rt^aYB(3inS9NB307QMYEGC=Qt0xEhL9J`ys+j=wMiO;^NZ`& z_!=e^^Gya@#GD#)-%$i|%QnVevidwU5cQKZ%)ie^N)^R;@mL56=GU#2mjG*IkAI4W^Zq zV|@GJI(B{NW~+Gx=7IB#{L#L5;pY+Pw4H0j-MAlVFTW?B#(NX~X!zH{&%9CQW%!vt z`g^)GZJYQj;K%p9S}NqZp?)*`gW!J#IM;DgCl5h*S^V5t|84Q}bYkWMx3u;YjQs#O zzlG=66=K?Rz&-)C+=g);IRcJHy77mi&|U|h3Wx9R{c+y}KQ;tA41P`shHtO6vqP{~ zz^{R;5`DCf4(4hf!SfAV5A=C6;P`ECG28|?cENuFcR$=#7&Zp-g>YW9LA*vhVU@ol zLbswUr%jlaHEE2tZd4X28gJgYY`Z5^j2x$}8##(_*#xajOU=nywg?@Ex_Yd4 zOC68>k+V_H4SQ` z>P6V4I$+J>8Ve6#3i0Lm${IqkrRbR3z&Vu_waf747F%Ff21JR@Gne++VN+dAI=+tV=nfsL7BA|%IBJjh4QqUFdqYs3SX&O=%kEVR9wGSv-XGeUy$$>K|Qej zGUh!o7pt>s{g}A}tY$93%2U0`%8hxr1U?Cwv1Cb(CN-c0;{g$!zor^ra5?wo60nlxT=u& zhbN|{W=aFAv}R%+y3&VXOSLTRD`Gt^!eV7!J=W2pqBjYgxa|$u4bm?tF0+1m+;xj&)Mnv zlDdjotWrbTtMO)NtsU~)rP2wyvDijxKD8np*>7yX;8OZ#e7%o%yS!o{2s&WWkC>a| zt8T2)@J394_1I!MPvif5TJ5W2R}Jf5i($M;)GItQAq+gK@Ft7f^ZM(B9jm8pW;3p> zuP8Q0scmu0W8*s+(DRjaC~uSbQj>osdYJsO)ujp_}Dx&B`E z4c1C5g zCpj*d=cJAqZcD}WjKn^9KROVvfHeoU~Ro%m}T!Ln^u|^ zBuq6gGkeo$hG$oo2I_Zkw=;N9W$(txmy=tJrqz4|9;W`9 z(9u%TP$8>2%3jLC%3>{bA+hzdZJ%c>?hD=v+62r^py|h=K-oB2!{-s}FvebrZzX(O z9jIYi9-12}H!k&+_$t-`3S2vNb+xjJx_S&4aG~wh&MbIq#jt-vY3u5tvX^S8B&fgU zx*sm^Eem?25~;1LS%dqA-r@!<0a@LMh7b=+wamQU3Ra3tHA;u&RoC8pT+~ztmU7O` z;jLmCC^vgxHYFft3aE^Ul(oElHI_WDQOj@DOu|xRWp0jnmxct*#iGkm(Y>tib6Q+U&ehI7|Y6=-ggKwM@0YQDyKJ_a>ngrqb}E}}Hnv@a9cHE?m0jGGs;d-cRe!h$YWi5Z+WzU= zmFBE+DBO9KfyUID_{8daBozklq|(*?=GoF1?z@F{au_tnZO%0-bHd=AGzWPJifleP z%uI$0IBm5oDL#LKRQkcrtFz5oo2u+UC)N1ulijNLI$QQZG0ieM&8SwEI~&dR6zy!3 zpw|j3L*6pTIBrq#TCS)yN7=K_Z$uZc#_S%p$%S`|ay1-6=b7_sG*SP58RJ=!VjjIAtIT6nZ zc!b1X<7!L_gy;$SfY?OC85{5J75mO6?|Yk~6Z9^adv=V`oU!v0&+tx)o*eDKB))T? zHXkq2Fdt81B-OZ#vMa(b4e6xb*pnRbDGOY-2GPVJVmckK-JEe4>7QlRs1$ zlMrG9lyosuQNf9(?Ra-!8b-6bChEsFd6`_duKFNY)7?<{Oit9zTw=!Fo(;UjP%&r~ zHfjx&26nvY1M@Cvirw54yQK*;^u0YAv!0An>(d9NW((>oypl_mc#7#a0#~MsJ}s)$ zEU4%~-ua2RKI$cjBZ`-144AaGVoE3-M;GB_7E=h@N|K=wymSM>LV?8&8WR*cxUEKN zQCf$z4U>?eBaks(PrsSNa7KYbm}CYk6NAZU_o7fxRq^8@RxS@6N`l{IaIEI$YhK5G zc(BF z8}UCr_GzMZ7Zs`)ANvKA^fTZMjLu~QWL8CV);#?_2>kd-kBu6Xw>cpwom8CLuOX(dF>b44rw^D(3o zqQRVHg?Q(=JnO;mMDqkUA~`&pz|z8m2(sAI8QL-;hXk&_3xO1f9FMGLTFitTPr?!~ z^B6L*Fk(GuKK+vra4S4bWG0tK`~dB&ik^+=KLW!|QzNIK;d1eW@@{%}Ud--1+#a_ku1fSr@V*BZQIeb- zaaNDx@D4)Eh;v{?k0khJkz3(N^Yj=6-`V6=I?}v7Ccx(-cP>+jX5c5(Gdy|4}~|nPxQMmf_Gg+j*2~%0#jU#AU*Zv`0q(N5C5-)gDpvy z`TZ`bEC z{nX1Rv&*IIDuUOW=)!R_nsEu?`1*MFEAT*rX6#Z(e85s_XWJRy1tz#C7yT9fJ%rjE zm)wiQ6PMKENl;}6%0}z)l*OTJT-b*UtnoGe9ZW$J$lakJ6!8Tfw2YDxXKUzE*aXH% z3zX6w%m|A~29pbh#-#MZjeHIm7EX%U1X|5lifRHiqdQg$-Pg+*?=FOg3GPJu$OL;u zLlaloT8!r)n0xS&zLxX zzq>RE4rU*)SoLW4a5pa&Y`5`B_=8~f>tHq>f;M66>C$bY ziaP+IyxY3*`RDMA2g|*=y77VM@c1(@Rk5=X!lLLlO|e_yb)s~-O(&~GpG3md$X3_e zqOsq)wh7*(baS04y7f?r5aIuC!R*i4IS>#o|_^`D|yo z_SqY!nukBr8yo!-Sirs!w*LM#Z7#t-S8`Fj`xrcks2S@Of?-7oM1e%GqViTuj%U*p zixRp4B0bVv6mYS|reL6;&Nvtc`g^$Ex|>Vy`Yb|+k!K$)10~+~p8}9c{mRa8+c%0b zL`&h~A$vq1XKdp6LA@S9>1A+NK+k zA2Qx%Fqe_h(%3`hI8QI&fd>;9Yn862kB2fwxw}o20Ziw22+~)vRu6Pso&1#I_Cj>f z0tEh<>}m#TX;jTsTzbKSP``ufYjwXtZM8#P{Bg#wI~{Y zhn8jyQT2jhXr_B&38#KRN2v~|Ls}}?3)tJ#(m1~5!ZN*}5(;XlU~@+b{AO=fW~VVO z7o+I~_aOfBjK8f@@wb`r8JCOJ^n&Av-!&1wot=umQ^g<5xLoL_7mP$rS%LUn5_Q#) z?x@@bGYZ$l=>_G8b{(U|o2A`hG)Cd_IlbUkM0qcL5wrY8X2U;?MY;QazQBHuMK%Ch5A` zmUh@bO^$VX*uMjQ&3g+NhaSBPmfQ(1I?UI?8+9-Ju6}6LREP3au+BIq?>}u`-t>9E z)mq42pt!#3M@(n09Y5TY%7=DLtw*K|+649OBI=S_gUnCp`Pn!>b6)9ceE8~Rlb%`o zgVoC?Ubd$x^0#ZB|BcV{Ms!B@Ih!1VdKu3?dUp2uzUzLK-LPf(!M7h+d3{Y}v!1x% z4Bz?3^7B*XBqn_L@1^5k-}=rycTfH4`)}R4y4N+wV)E~*+PHDbC)NK>a~xc|d-zMa z5k+H%3|FIA?uDHLw*sybj(gJXgu4mu9=ONhUV%FTcO33(I4?4l0+#`o4VMGA0pue8QxXGIs7Gmsqj2ojJzeU+8^-jEAjU;v8O=v@s6>lry35(S>YT+GyGA}uUaPX zR(@U-`?Vep#Kng-Xr$-s`A^yRih8y%D-xF!CU%xYcjr-KQ;{Ht^9MuPu|L( zYIwl^R`Qo4@)o}zVU!;X$DdWViP1?k<+ti~?6W^?$UqopC73PR%IilPnJ&wM<#jC_ z)1hs=ezck8W|f6KEvRXeRx5s%47W8H4Ts`WKeXAUH3PZtbOB&rm^5UKET_62s!i`&+)~CciJEZsa=zrB-cX8I{?a?>BbABAlHL842`s^?3 zrk=<=5<8&JuWyL=t~+q@iL*bt{}--zrresJ;odrE^pA}{m&|Rv=*Y(_BH!KUxMhuZ zSJ#_cPRze`NZs4NUfGhDFs1g>aj#yJ{Xm2JNn_X8m0R~Gety(BCo|^bh<=6rYE%C* zYQtGtItq*Xcr1V`h2t40d*HYy?~`zEz#W78CtMT?yEj}G+)TJ-a20TzEBPVZ?Qjpm zac+Qf1b>6WnJ*g0_8jR?f?EW)3Xa3-ZE$Rc@Tp!Ns@tWetxjR*ya>b@8bX}7 z5r|`dLVV0x5k*Rk-VlTz2Q!pXqdSF|&rx{UL6wN+9>J(2! z9t2_|Lx@jeiO8t{LYx;6h|>;)IKLnepX-G9_!nL3Fd{&lmJ%sWA5n@kN+QJ}86l3; z#Cpylu^zk&2f?%9B;@ZvC|m+3DmnNe#F3CdoJ%0YxeI|f4@!tLx&m>$PKXl@0&(Jp z5PM7lao&m$XR!q0Y!@L8&cv<^@U-|Ra6r{?6<+)}sZ3$cF^TZ|Uzf<)xlln@815|MLkgg9|0QXDT5QbTu8{5aMlq(;UHQB!+_*kVXTHGv6; zLm+{y=K&@8!{bH$$VcFLz&87{Q~xBE#6^ktG^eFf4Z#d>c8sGSzI(vWFUOJ1un>&n zmQ^7bhayWtFb*$5F%B8d3X$V5fX^oU{OPif&wisFV+TGIWA8i^V?~;di1xf$&s6<_ zrJCO4(c`^_I)fzza&)gh+1koMrZzp+v(+&p#x-Y~ak=YKC&RMg?tiMamE{#0o(yOO z+;va4wyLtT;sayY2Dk$VQ)L(uwi{v3B5W0?UoX6jcOP8DGp((v{6gZrg0M;LgtZ{7 z3Sp{@L*nt((_IKtWgQZhim*EorphuTEE{3X?SvH~?A9=0EVl-P-GH#^@cZ*8<;t7G zp$+6+qko0N2QV~(G_Sw@Z9aneE|y|tHrCf=R#dCc=rZ|1!FOWB=`C5yoaZaX>gM{> z`y41Uuci^p+%qed=rrMW>j|~9T)QzZ>5Swt`tc7jlCgQWQ z`qH&QHM4$WedhPF(Aq8;{7%cP{Tqo_*V=$5u%7LEY^>VZ=zC(R{ob{f+v8{*`GCXv zEF{dbw-Hr*8d!%@j3{SUPjNGs;1+nz1n`=V@K=c`ktdH5iqHAD& zoCQBRs%*C5gK8_Lx$Ykr5--BX68v@x96EvI_;r@at*KNE5g0tftjM;{1xyVy=gz=Z z;_%~fH*@Y>AHMo&sM~1r@);5so8jj759$*-Q-h_tqmoj_THmoC8s^z&E>jD@%@18H z$o65330ca`R3*V2`H;Y5?O#yaUKTIw4W zNi?KBaM7GS9B)_HIn$g|b)!p^r~fm~4P{2W+f!y3?#qon?lL3My~ya|_S|9^$BcNw zo`ptl&t*o6+mme=o-IaC1@`l#8NC2Uxg8_A0562^cX(Y??pfnG%kX;24IRU7&)G(= zD9>SpHyX)~X^F-eKQm^zJq^aWWkyMv5p|1E(qLq{A2%Z13yf|6+-JeN%h279{z-;* zxnV?krouiVP@$b|c%$Aoy2DJvgAuU%913hTdI4~|?}f1{>fl65s;E6x$XQlM|3FB$ zc0*VShI=7Ofm&^GT}aZoWmBOsGzvrJcTDntjkt6O^uEVPi1IWzhM+Ho@5gbYV9v-` zWN5cPWez}Y%K|n_@NvNTtvP-Q?*X3Qg_DP|ngjfs!hel>@MD*DJHI(+_B;Q76~6@L{l>RkXmF5DNy z2LQvYfL|~9$u_;@v%p*SlTU!7p099T?`LA)TeulM2XEO&9xFfm_K|-Fyp?bA&%ja7 z{~#XcRcOyTV0*zI6uZg)*rtd4Ht<$?kzWl*J!d1{0g1N|*qM;Ct{3_7A~yhXH;G&V zuoRmd`7d#MQ6J{R{N*193}-v}^GE)-jzIp%zXaYYfAV)i-Z{<87x|kJZe0)Z=fN?Z zg^=S*C;V>W43UdN!Gl}#&Z&n zdLn`EwBcXD2I3zI{R5^Tt$I)U-Vpp{49&LN;ynlcIjL8aJ1BDdfgiQWH4Bb0X!BMZ zzC-YhNYAQA)Ke>Xu~3Y8n~&JyVVv5$*~ZUCeCxV1ewM^bg-L+#!Ca`ya2+~xycM? ze1^L~`+$P5&p=kuY*6$CT(paHj8NJ~K0_$&B+qn7Q-yL|OrGhJGJR6oPs#*IX$L72 zCI#{1{lvahu@7_l-b1KIwErog2ZbI0#Y5VEKJ8xcEU%k{?h(3M=q{nSAC%m7p;+Op z_{~C_gqDNib%(1Ily7D?kp5szpErK5r{IK9}3VsL_DqPP=_*0-v=W)Rg3VuNF`vkv7@O^?e z3%*zIn*`q@_-?^>3BFVC?SgL=e6!$9f^QJKLGW6^D+MnXyj1X2g0B#~Q1E=ga|O>4 ze4gO51fM2&w%`*4A0v2{;PIfWS0L)X_yUE_a{NT-FN8iObi2^4LeCVsNN7)?-Gu(Z zYwF`VTG2xALH@*kXq%>@+Ci5Xp&G6g^%`_bP#yT41pU8Hw-QV zZa7?Txc+cYp@HJrnd*niOF!o_9~D36byr}pLwp+iQv~Nc?uFv#{B0)Eqzvb6PYTZY z+HInr^R)d$59eoJ6#r-NbJm}6IUjpm22_hJiwSVu?0&2XE3 z1)T!&e|gkoxXFOvG|dmOzJ=wh+kAu8a)u_mGLabnPk zpzR*(C%LqatW#{z>2jxeu3YCngAV%c^t8TMH9w&4Tq+?Sj&?3mkZGs)No?EZx3izP zev7YS#ZIegbT*}Sz9;Wo*@S*oZGEc!?PB}C$?kM?X4Z^lePoVrraK+m{$=%PM4N4X zU2PRKQVi-1$eCbRWA$y$^O`VzO8OA=tskREj3w<*|n`jD0_cw({rlxypBN!x}93B=y(%4>^4w~oY&Oud0xk% zgJYKsqT?8JP^bMTI@&$YD+%KObYZoyCA#4uKWp;z0 zs1Xp&Z$d29VQ|L2)w_ub8I5@@US*Sw#d zo%w!e<~#GwJMa6>%=^C2w6zC#)Um|gF&7LGPypSt>%fF=_?Q?O_#)xRN zX(w!ONX0Tj+thoSTz75*`fNFUii<7v2*bs73^p=gyKc5+FJ!RIzQ{LA+SbDXrj?g) zUB0dpHt>j3mnuG@G^K; zhz%^?h;tDhY_!kCl|>u4e(Z$}He%{Jtl2PQ&~a&>i)(fso=w2U3kxinU;xW+6~Yq! zbU($zVmEc6ZEDQIeHv>yS1gn{wxS*|$<2Rk2Sbn-0^Z4G1o!_@q#X(Wa2cLWzy`|o zb8+EvAl~$(4$lC@H!bkOZdbrg=)IK*X*&as73t#QDi_DEoi_O|;^Hdytxg4HQ)`2> zKKrqvEu&Lp7s0v%&REnpYR)cE`Y0_E_D^=dHOF!Fw*)|NRn)WB>{if+Ph&SFq z@%PDjulX7fot$^j*N{&CC0~Q1siDR9lNg+rO%3mYyk>ht%c6q9g{?oCi_>9AORX^L zYC0&2Io7gH79*rTwk)woueZ#WQueE42HTGg?Yk^B7yoI#8|TAVQ_(RnWNp9fUR0)F zQEN{BmL!?Mch&ze+TKk>KgMW~W--CL)5VVauDa5a;GiYJFLi=z{0W{gjK(txTYs_$ znk6mw$po+r)e@n)QL6T!f@ISA$qJ#pL?;AE)>avAdK$aAq~%;C9kEbmp`luk-&lq~ z_OlDIweG$LZP?o2XgO7+&lEgEU{*^N373Oe&3E8K6?5KzpW&KfB;Wm# zr>F1g=^_T)Q+7~eot5jfzmsB7LWb7v^fmF*JVn?9YAy0u9h$~ANS!Kxh@<3j1;@_fpV;+50y*&+kS7ykNQg?O+DW_FYzvf}jH%Se~;X`TQh=r-BYF zFBQ=}e3$(~nzuLQWVGypEep>VTgWL}$VZ+p-8whigUfSM(I?xBK3rJP`dAVyENVGd zaOIzkxl9(dNsY0V0Z0Qoq;Sl6ed^CY3AwSuCB=yBn zNEUo$bA{YwPZlNeeTAhhEoX>xfF<%ph@~xmkP7PoQQTB)C3Qf^QdJ=fN{mGTxv_TN zwpWnT2YM`&oR2tkm2k&^2i+seaQUuWg>=5#k1}IFRw`#eYfdujQXuMbrby=}QS*0q z3yaztIOg0#5Rkoypf9z%Z}(E#8}G}>_BB4sF5%5^DuOoE8_BWu0ftlljvdajFJRfD zE&o4cQkH8YTE5k!{%rtvxhL`M`Q-0LurnyPC@@p zc7;S(mmC8?%adJ#CmC3WUe~N?MTLcPrp+%doHnl@Kd%r3PZI--S^`;_yjSij3sP;^ zcq>$GfOf1SS~3y877HnX+Id!n)@gMpgBQr8^ui138`yh=6c@0C*zip-YQx6KV*l}m zv$v8A1f;ggLP6wFV}%OAIi*BGq*q~G*>%O#lgx9SQzFy z#T8n0nIX_Xo|ToWku_o?xrX~o0ACguvlIY$`$TcFdkLPk$bGCc%yfZ{WT8dtM0e4( zjK~P56KF0tdCVopS)hAcv$IsWv>DnPEmdpN0o!M63s2ZK>Yw6k!_o9Jw279&OaAWq zc9_{J%Uqevfo>Vt#}J;phH98apU=t68kL1!=Ye8)2W)wvhbe0{J0$XtJF)!PIzO&Y zCsO_xl|LICg(s4Ktj>Re_0Q4yC!ARM<8=NLEPuSte}emes>+{rg6%&+=STfR*Z^@j zcy)1Cf!*+e&`5Pob)J%umnqBh8Y6HPh@d=)gHnVczhfrxL{G)}Ws9}8#C?`X231iO z6G~%nBUc{R+lfi2<#`UnxYr(#Kf!PaV*#--Jzp-<^L@$*O6Hn-Gn`%skvV`H!4L66 zHm<*NZJbZ)1d|?FB!Jgn?p|VHg|IN{37QF!03R5XSL1>rX&x*|Bu7AdMl2~JTG4lx z00-W5br>cEgCF}vdBql@_305wU`pNikN{*Vyai4ZOemxVJiEbT<;0`eIhrZO58v$9 zYWjyjjO7RuV0J;-%;^i5yrE7$0s?~yyUiq{o(xj%b@B-us^d4s)PAjEOPEwA**3(E z%nafE3q|uaXpfb8=p;t+i(hr(}MNoa|3SAq5SXj8G=pLl^7*>ms`~R#|TfwIm!Azi}0NY zb3a~3nD4!Ff8Rs+cL;NzKS!7!{<96J|2e{J2Zr%og7G}^CSp;~gD~471>yfe_=wWq zgYYpG-it8zho}0j*q;xeAB^<8MDVh(6FM85RmbN#DIvOM$V1?UTJr9OoE4&b0P<-e zx?PaxzztJ*aY+)-I9NX4k31P}9Ng(}^Wm1mt%th=t`TW=!ySg>CXNa4TDa|2elFT& z>X;mo;(}0(C@7e$GfLE`TUG|WbI=` zjLPsldc00@bHVXL%5RWIkC(pSE{{*rj_c#(02Q2m!NzLSda?IY=lKH*BstlMaOkyp z@y1$e@U>qRr_XkMjqGCGvohq#P7sM#?;By=3p#?qqb>YiFpph}fv%cWT1h{t{zj*?UHowWJoHN!Kir9<=0rw->EeewVJM== zjoL9kT-#X>9+ds3t(i))y8p0s+_ta$M`+84RC{64w^_Vh9cDeZQzeIA9bO%2)wokO z!!9Iuo(C|@{%VVQxaVJl4p?my73O1$@Rq6Nh*EOe`K9B^uNL3^#Dsb=zO(JcQso^! zPzxn@x*pb5e^C*uqH|W(s-_6{$qB0%ya?xFa=E9S%wQSxbTS8vkPWdKuubA&K?nSK z5udK86*f!!63as#6&vXRPn+m4dD~;|D+7Tz?uYo)O+CcxEQg(n; zB!~x=HNzhl?*ZC^7jO%>UdxSZ_*}bhOTkC&mvAu#`2O72a$#F+)C185MwVz5Kg>P? zC;9#u;v;~ze1CiZz=i*|g?+dA{@POgIoneGb+=IcfkHtt^nrbYba)f+xH8pG_16>6 zGrnVdf5F^+8Epyq1W_LVwFC5jz`?fC|Aq4XDQZ4J4H$;t&rkk$Toiw2;fWJ^CpKb} z@U8Px=waImXA@C;+8p&TM1EmmvqhWH{Lack@plyZAc{ZW0ttX`N%8j%qe=1i2?Cqo ztQ3D=K(=X$zkg5=1bakG0mWZGc(L{<;;YEQ2bs|=C|r{Mt$>=Of3@(9Zd>qg>vkjl zqq;qS|LAT{;osivW&E4nzQTV@H-a{R^lvBxTNc73{hI>c)@=d)qq?0#UAHFuJGy-z z|IThd$G;-|JBlDk|7`ETKin5UX@qr(0%Oh$JZrxa&)#es!J4!{34IeGEQ1h>7xnv+ z4Un$@GFjhL@F|@SVJDuEDT=2nf<*%MTVj8ta@sCNanX(^w0MaSNj4?z3h@PqEYsFV z5xb5n&+a}Tn`%bAp^AMOkxbu*bXo6P1c!;Uj>YzoG*rWaMUw7VV!grQEfDW#UP+g= zCs=$bSo}0t?5XykkL0@=9wZv(SnR>&Y1o4S2w)E!U!$B9>_M8WXDap~392-iJrg49 znI`G7W(JGZT9o`)+k?f2Ans>gMVB=PC03<^E^8vL(rmoj@y*E_C_0sNS;rs@=d)MR zWqqoJnK-<}6=w}oC0*7?1X;sWNtd-7B5Rl`>9T$kEPkLxNtYFeglyPUNtZ<~DT_EU zSmc`^me{orMFk~YRz1YCU_DjRWo?D{7+k8P%kuAlq|3SnF>H#|so3u*$8Qn*oT8-5 zGMAxcf_NRvp171gR5YAy3ypGN&H0rq&!0Y%P!Xi6)9Y2L| z4cb%iI-Z3TY)i%KNN&daDN0^P8-{4B3_JU2!s`gmMnDle5@v-Ym6F);JV=u$31UZ*78Fnt#E!Q>T1iO~J7ywS1Qm!K z$0AsQAc!4_t^;DnJZLUqEeLI36cKj5T;FT4`j?8^06P#v02f@C!$00aUevN-0 zWHd=ii$4rv$CsGao^TuD;$aZPj`T?Em=528gDQy~NsTBZLF{;{mISdQyP1dsXIf$( zV$%o-lxfaBWUUYq7}HYw@E{3E5(+9mXWT#DNcm@ny(`I3Z> z;y|%teX6yDdfAQi*CD2Jc8vK%E+O~z20siwh~sZ1ws)&pTky!K=(ngQ|8h_!98@j@=x%SPfun@vZFfFoz3)@uC$k4MrTM@sjxQAIDl6+_3a}2@TO~x1)vpvL% zfsw(yqIbxk-=#%-*dAS5m}UPjoDsl&ldNLBWT+z zvM$WacjIhDL`$n?{x>?xFZSgPk$)KT@_jm65m~SvLH@ppHb%8)#2CgbeD%&&l#gsj znaybv!)^bG5T>6EV-~)pXDcGtRtmfN#!i&RES!GXib&6uhirXQJI;2>dL$$#pQzXH zbI@v#xNpOG8B^gASK(-YlTRFuQ#LaTIQd5NBpH4+qbAwd2Z!Gn2pfqvAQ?FMrXf{7 z9?U`ZnFz)YVAwte=U+5017bih2fFBFKW`bQ@crR%u*8P6STVuX9UIOe!4HEjE8bHk zR}3mD-oL~vg@PB1IutJGW;8e0S5wY7|CZ9LAD?z*Y~rxyr*g>8_u}}wE}mMr^@%+R zCw)X7zNzPKdh^z6pPxG8&l`;uH+|3MeD0wIuPkraMP9!b?p)Sy%&=8|a1_m*K@PrY z19w07mshTMP3GNEGTj3sn+Y9$AxIei#BF{yj7qU*zi7wNZtMbKd0J1JmT>c%~gaUkpZK8&!aFMMv| z`U}5R)o+~IKW&d^skOd76;FIjZfB|ZjjH~4D_QSmaQC0)T`YPY4o{Lyy}Ll zM<9-?5IEID+w=Ia43^8bVtv`h+)wTc_y0>c)|1CBTzN3nraYc=x=v|`&xYeU$PL{Q z^$PI(F)j7<8HcMDv26v80S=SECg6EXxRL>IOy^Sm$?ylkWxx%A8wz&{+;F&2aHHWg zCm(t8$oEIiJaYVzV~_lOVWKk@)-jz04Gk;ji5eB|fTTz=&2 zBL^V41j*}1K0a~^lFyHvf#eS)Zy~R~L2?U{!;d_H_6US^2+<3S-aI4^I;Woov54Q{M3Ao?Dy#epvKx-mO>x=B@!$wgQGao&%kIi470xhjoHbI#X{SmhR{Egg3ZPPP1kO}kS5PXB z+o|F}UfJTbkt$9im5P&FsyOFW895cDic?#q;({GjoI`09M5=P(lr1h~P{o7L#fTLVXgO0*Do%u%n1c(bI7L>4ah;ErxlpN8 zTxg+cJTj?@bJ|K3XS2#AC&g58hO9Dj&P)|&nkp41j4YUwN7Rx7WEI0HA7eNaf{K$t zWrpj2G{cogrQ&QDz2HR#Jn#sF$ZHx#pyp)T(?yD^;Ml}Zn!y!jdFWzeJWW5 zkJC0Qe;wsanN}Ahrge4DnHXqmGgDFL5(tAaw$wUKtoB2&+T(19d9CRPYy_O`Z)HVomn<4kb`;@BSkyt&(=(;<4{8WC4wjmz6+zYJ}~`0L>IBYwX%-ohRD zDD-Qe46$v={{rG4M*JFU{^lXQ4s=%w0 z;b^~#JfQp=U6KvQOnbYH=X7zsS z<1J>7i}9{URACP=-!++iV>W{h?%g#mgkTLlqFl4rNZp*c#BnX#W;}nEz{UYb(WbdNcKPvh%yHVlD#SB zNt?kyc)CbUzP}XH$Y$~@&GRfb!o1WnB`>SzGgc*Iy#SbtXl^|vY&w-1N z-f zi1B|frFTNV)uP9{7|lbJJ*N8z+gZ&3EA z$6}D*9_6PX_qXJ`0Xpu_|3I(p&x3BO(pN%Xr|eO`#$t~$*Yub_1NthJj?VzPL)PU` z#`Az687n^idvEFZE zUFT6tx>q5uvee`EkWW^}gZcKUe0)a0{LRYe+?Dc`NUz(6=`Vn+`wL~vEt>_ljjI2d zkcoGLP3#XKmW3UzGt(ZN@Mpuvp|nqhKNJfi6O^2#WX{DI?@}`7tdzMcOz%)KJR#fR zqf62geg=FjHwjKZ*b9@w|M;v6< zbGP!jhC#U*J|08Zcfe=6T%r8SmCw02^^MBkr2Gxa_bPu4eC)J+6@2dJGWeL1Ayz1vfM9J`*JOVc3PDFn9{$l^e@0i zR{LT2%=at!tnVSEKcMvclzy+$?@{_km43IQ2( zzg+3JDt)8UZ&LaVO7B(rI;F2t`U<6Ar}S%-ewETMQ~Je9U!e5)Nf?6y(Gkh41&psHQiW9$=O3(G( zmsA?A>$a#gT+h8srQtg6A{FNP?Oqk;y6yK>Uar?Bsxa4SPgCK05PlVo<#Jv20r=!g zB(~WbDtrW;jqj>cZ{S(&bMP1@=FoL2Ox&TFNW*a;U$EMNdXuk@V?>?<40GI-uEHF% zeu27D&+*db*dKED@t!zSg*m>nt1!omxQ7e-e4xwsKa=73nmgZ*Wti{Va~y(XV(V)O z^HUS8AA>sTFu4(RxC}OQc(*0Yaf{Z|*WpHsooY+?E)kZg`eC0mcVDqZ|GBWKEVbnc zn_s9fg4$)x3NzalFkF4`nf7sp7(vq?#o_1lQS&;rFRsRG`Rv z)qb|llF+r?y-~rKcHv0cWcL^q46q@Iq%_A|xNMPo+NibuulO|PgWT~sU^Xlc@a%P9 zL3Z{NwP5-7uw4_X;Z-BZuLY$55XEwQ#utW9&)Ur4J`6m59I&wM(_Wt#RUE*l2!iQ2 z0ZSS~qhmYm95D-uVz}PY5fk9Qk>$^NwB(T$AG4pp7pa~4yqBF{cHK^vVCkuy%@GRb z*~xsY8b3k^=iu5)h)%ZeA~2q7=E{*R&f#kPQyX9zAZ1E3jqfoH}OQ_){m28|!k7%gRQ?m@LL- zXJw7g$$>N`X97HIYvT1SzEHr<�}gtE~a%uJx*;uG6(@6loa0`RcuYU`Wk%2{HEL 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%0DE~=(5&m^XX-!6{%|H2T*3| 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�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 z

    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�hni z$@4(+EV}uHwy91sqRI9mc9WC56XX`A&0?(OD@4}9KCB-Bu-aXRd}y&%*oWPNz=wzs z_F?~{3EGFvg$|Zb*@qnhk|k93VebOT5-R(!PdLf9G%4-F65x`Q;Cm;gopxeVfEG=~d9oT9Q`>;8{{D=Cr+{xVt9(}rG3}|PI7{ioDEXsDec3SXj0mTU86~9 zA2!Q}LeYSZe_G%?c(4!K5uA>{L)ep(MJ&a)8GOc@k6@>F5Vmq($KM2ys8LIFSzelF z>Fnv8+Z+A`GA5U4H;Aw|cZ41G=N^af#eyHmy#xNyI9J+l?GiW&l+WwE4Bio*t~bH! zx($DTFGaRlKSi(ru3cHTZtYI#ejr2*dOFvpR!wHY3MnvFw}Rvif9|qT6BT)vidS{s9G! z_Z|n?9-d!<@aH~`e_m3QC3mkK_F92IQP!J9W2PB!+1+~5gT>hH-QYh*R!5$|5KYly zZ1*vmqQ%(m$7+feW4oWADO!x}K1Wlu7~6fJri8`VEcUwn!3t!1{|V2>QaCKet^1CSD7Gr!+k#_QjQs!%4ne|VY}S2{ zqdC&to3kE)cMn{rm03^2dmIiHW1oeW`3(L%-dFJNI|eto!(!|dFnCI|7@IR2#0gLi zi?KPU>2S}=9Cl}d4~wzvt$2qji?Qrt1Su`X()1RqOIeJ)N|VxJ?9G~#7Gp&#+YMfz zgQ%Qt=!F8oEPy&&9AJIzyjLR9cNf^gV(bq=iCWnuIEKYoT`R(3Y!lor4vG9`v5ZR?aAye zJP-Bv_IL*i$|vJ87}saAN_!%Fk&kAOK$<`!qN?CsS>CPi znY_2h_ftsqgCgtSaGr&%hDkt7@to!HuxIx4-wCP_1EB}zU<0%Zc{+)_e@h`Yt$|E_ z59zZ#yy}=G!bm0QHG;PKadyagpl9JUBwod++mwD9nT?-?mBrEdW(q&!twAvJHio@7 zLXo9yN#SG!8Z><#jH87>TJj@JA5BB}=!k@mJ3{zSDSS*ntRcHc_N4{N=d4dUHC^)R zRmYw%|F;kCyz0Z3XJ0Y#ga?~0yY-W9JKO#G(!Dp&T=K-PrgZwr4y4%y_eZ!raQoqy zc@A6%ZY11fxOs5P;BJ@E0yu}FSMyZh4`v~7R4V#W)ISf-EEz9O0zT)Jq&xBthqy-Y zwLE9Ej8dTC7H6-dUx4Gm`7Pkr{uRisxLH^uH9X>zh0}cYRZ=W>Hn) zQ23m6vd&pHt=~*fS$BF~CoMy8vf*$95#hn>W?FqDk7XbqO%zufLj@eGlJ^8|0Rb$Q z3!ge@36eT#zzW}C2!P}ee74&`aD(BFgku?KJ&_h4X=Ra?8);RM78q%1k=7Jxh4HPW z?O&rcN1iV&Hqufftu4|rBrQ48S|hDE(pn@fLDJGAEkV+HBP~193M4H@()uGUJkok3 zElpnSd$~+okfilUT85-mNm`Gjl}TE4q}4}Sqof5%ZTXQ_AKycTv_qx$fExxk8Lk+P zK>q9CE{D4v?$>Zn!o3Xl4qO10NZ@3eu`7Zrf#b(87r@bY!H?i*`2K0Qy>PT;$Tb8% zcA*i&X>g0+B5-Tqz7KZ`+%MoBgL?t)-*6sWsGe{He4YZg0B!{w$17e-4q&`qI5<}# zixVfs;+RJkM+$sd!-E4OSsXnTi_;6TIA>8Tj3@T%N*QMJN^rMzT1g zSLrz_lEuMNvAF&qiwh`~kmC?p9O{%5?*X#dSt%(_BFN&5La{hEV(~anf?7_!RC-Q! zM2uuHtxCflnrb-xR>B;{$>Qj)Se%oROqFu{e__i&ICH zBj*5QaYCS2Tv?OF#daPX4$ei$;>1KraT!k5<#0+p$7ZrPP%9}8&SY`4RxC~*$>OY1 zB^0x1usA3w7ALio;#^m;#ApE)$0)^OYo!#Iz)C%r$7FGur=gHYdGgaT2YhICUk9^I9dv$u3!(`YQFDUy{YCtV+m93@h4bK(%T z(sf$#E!G_H2IBdM5Wt`A$`jcqeDUss2dT%lyXUe`xa$`O4^pQcU%0`0A+F+RoN1c% zXPjKh{@xe#fIIp=YdD@GSBKB6tv}=IZ%*#(XSk1_CE^t)Uo19^Sd8y|!oz`|Ibs^2 z`D+>*zKFLTDf@eEesh`R^&8DH&cG)^m65WBc(>AFxWL7$8ydsaBZ?x+>wy_ELVWeW z`?~?nsy-}`;=dv#HJf6r{XORkvqQ4Ir@zD!_meQNhY{E`$cJIpHpquTm58%2LWkj6 zr<7lgfQM1fX<#pjoj#pdRQ>X%ii&W()bO>jz32GuQI=hwRI=|ToszB#=rrEBq^xX5LUnl(ypwcrde4RGXyx)XQz5vYodGHuCZ9->S{p$?2|1rh& zi1#bE&-t0m?nEd@lD%KcxJf%D)1$P_dp=cC|Kx zCT2JeVP}gIY^G}jpWpgxevRT+fX_Vvnh&V-ZQK{2>BR^z{XFn*F!(b;bKiiLo2umS zQfk|84E|`)+-soaxJ;)$6mi={27eX!Xwt&26t*-3Diys9K53SN@hFF&k-wlPD|)=5 zM=CmB(IG`6Pa&V9XuqQ234L6ir$ayG=yTpkpYrrMF{RIR^l^_0AD-}8<(T>ldt#W| z3VUKmE9{8@Yh2h9V?5I{p6T%{Ow4z2gOlVV1)&#{N{E{IOi|7QjdI@J@!0 z$4B0Y@F~ahCx5KsvmVH2`I!!$&_5K)D3`DNC*>N*`@#_^#*WK!^gT?E?#SAX4t4+&daZTzc(i24h3T)vKzAqKaTo{n z>7yk(E(b73Oos5}zOo#<@F0fcr+Ktw$7MVQ8IFPLln!eyPs4dAdm#z!xXgr(d?eYT zbcCQIwj83ZCbZ*H2OZ4!9;IU$bfAiOuz2Dy?3To}>2;Ii!HAz7!DCW2KkI->Cq`SrHu&dR!OOe2i%kaVSx$4SMu2RTT6HKimksX&Q z&=EwAn_8hGksX)0LtrBmeaF>fWH}x~owCcq5pyny?6{nz(*Evvnb7z*bl^EuRk(yV z3z|CH*vV7oPq#&d4%}p|(ZRch31f7OMgIf-@Ay%w^N3%LICfm_g^oO=O*_GJG4m{kj`{tHx!EA+&e8@LL2MgbAo?V&7xg@s* z^B8n+U6oU4rv)X}Rh1%uKYhPo-({FQcl!uUK>NVSS3(Dme3S!Cj)z^2fgpIkauinO z1vL+{TyNH$gmEEVE7OjB*Cn%oIvuA1Yn)YAGI+bz4b+31AHv-u47r7Ni>lirhB z2q%G{aUbi`jj2^sN{fl~soHhaQm>(Ni1Beupng{}>P4XCWQmLHqH5vKw4J+)_C6*obGA z?t||(`Oa7auYA>Ua`|4l9m=e~?}_;y0VjAa9IC?JPr-M<@eY2_#%iWMzMtjM75=?& zopBA;f!?7UJd1iNl^kh(#KX#Eo$?65@tfsvsHkYsY}l=;7ben<84iTm`4Js!F0IH=JBr(-;MOEhud) zwVE0Lk2weLwb0vE;|*@TK$e|WTE`m?xWc%@>lM~=3WgTo(h3PT1_*UV5qdWj8#A?! z0-?&}@gPu_mzJHeqMkjpFpoJO{q&3?34`p4nt`#g#&R*IRyBp)yeU<6DHz(uaJ2SY zfSFY&v+|SJIM*lzLko!RxfK-+z@*kdu{O+X3WoN?80^hsu|Q}jKO@ObNlaQ5gl=^A zp*7;m-yfNRp-sWi;tQ_X;qpkS(GmsZ>)~jRNp6|MFto-pQug6(L86VHxD{Zu6^@-N zNg-$1X=;dkr{G3BVR#D8V=cnJI8wl}Uk_l}tX2cdW;uan1vzM}0XjQ4A!e;Wmy%Bt zxk-_q_Z}&miS=Fh#L$wD9MkSV0G~f%?=SFYxf#X4pM3#*2mUN!OD-o<;Lq-5i1@Sr zLSPM?i9h=v(4LVBfA#|s0)MqVGys2=PuhS#+Yg@1yr(aHA~H`awmIW{>66L1(B>@h zr5AuBabxcVo4B!0!MB31;olSd0RL&h08TDF*dPDi;Ia7k1()DIBX~Ccfg5`wMYk{( zxUo0D_XK~6|Fq!m$qT-Le}9m>B6EU$@vm@Wry@w)*c0LJ=#i0=5n)~fpgl|uabu67 z7C@hl#8!eXcrq(+V+#$!zZAq^JjYeIvFn`VZBFv{PVya)#B@=(u^sTuwLuPZl0{Ck z3Zy8J1b#iwL0Z1=;S2;z>Otb+P4^7 z;@tzU(`@`%x$Jq~MTmEz#Ety~6mer$!9N~nhM3%Q5S}E$-rVomVSnzG2p0-IU_;^m zON5CVy8$u4jr|rFz>Pf_Ue~4gv%GAlS%hc12@(o7_I3n`v?Xz4{{ZT@qy%p4K2Xn* z61cJNfO?gb#Em8X>|J01H}+lx??Di_vAf^_H}*+zo@eB^ES7yQg20U>8X-F`;KnjF zuP$(7-$Ag4rz8ITxq0~SgsSCog^BWBGPUXc4%vJ2WM6W7+Ex5Dd7nHz6nAqX;{2V_yJ+4NKt0 z5=D&dQ{cvSL|`x)q`-|0fncMNxUu^|?Lk7|#?m8h>_6eNuamg3A8AVB#)c5ViwxY@ z_u&CImgQnjXaL6`(l-HNfg8(rYiw1%ZwZcp8#^Bi4uTRlwt;eRz>PhJ9vpCEH^Iw; z18(dk@G?i@&*Qxo|Gvxc=fI7<0Sum!z>Vd0S?-`BZY;s;L>RcSPv|gkV+lgbJ5=Gu z?$M;gjeP?ot4ra=60KU05;yi^O)A`2wz9tHc7Pkp%4uLQn8ksg11xZ3XM^Kwht5gh z#+HB*wbD~?4BS{# z)J(wG_{y!U9>^n&dX{+mBAA)Muy+v@*?_UA8nH`@mB52>1Q+Fj9>+q@=KzT%C@7kY z6}n@|)csk5b`d1@!<&yTs?Yn=im5{iZ(guExRao<>maiQZY$glxLt66gxdqRA5K&b ze9kL)a0=a{|fu$5s3zN}tZpg!rRe zyz`HI|AtOO5y$Bt>w;;ueltC@aHnTIX&EAk42R>JY96f9)&jUvFIueFsh10%Ixrpn zLI7Ojfw!^_zAgZ+|HDPfMdcn&09OtiY)>3Xc)f6N(n1zzFp9;&hb;Ed>N5k5P-Jl! zQ!I}2WO4GKSRC-!6gg;u#i3BC+=>&YFsJj1#Sw}uPOVjX4o_rp)KV-i1jyn_MkVBc zKo;k~N{T}_Sscfe6lWwX3uh-NDJMKim{SZ9BTLE2hf2fYfoeGERl*!R$>Nx*SiIrL zVo#+Ka&kx(=Zkspad6s57Kc%lP^>?};<{9^IHjf(=Wt3F2V=50GAkB4Sh5TNS56AZ z;tWAaaUDz6<#0+p2T8IxVk#+)l4Nn%R4mTp$l}1O5{hXpSR5V{i?d5ganh++qW1=i zqlIE|=}9TBMU{H4Q_14IMoDonC#wKXNpYr07N?L(inC6#I1$Z*kAt&MvVI$t;vAAJ zPB4`eXPsnm4yx2^K7oi)O2nGLHOMtmhfaP|KF=nI#_T4%{2Qd4-Yhi2f@(G+9x zTw`84r666y(v~$~Q!z7gd~_sP`tw2gjt@MHnYKx4NzN%Qh?EgO8d$&JU=Gy~t_B`4 zdMS{29HDin4-Flv<}DQ8KqdPIQDv$mW3QnT)%9b(i_xgA{(cJ9RRoCZ$^d{}{r%d6 z?79$V4J;QQCx-MjzUyG%x`yP8>SnH_xguwLv-0;S|If;QNcr0^V&Kv+_l_HB{vCt z;`V6%IMDnyUejE4Qy*rE+paL=#)FTEsdprNJi`g(D>|fTq!IBsipDfd(C~yj=aXnJ z0ymYuSJ8|ojr;^YDzWYG;6dQ7B8|XZ#cJMxyUKW`M}rg7R7`M5TJ#yfuzf<|BXTi^dkLKeIDW6qO8lLd~!I>*){nUa@ zhfhOTuN~olp)02Bji@w@vpQdeInUmPc;cyYKf@nYcrwDQSAoBZ@H~Wxv&!%ASE(@f zL(oJJF;V&U@LCn-t4^AGA)oIVD^!?oAz4uT#4*MQlc)LpQ8pd!V1&;!AprRVJ83m1vyKN$xM@*VTyEBp`Nwkq9Ns_|?!D^hV@j=jO zRuqLbzC?>atmrp@!#a9=D0;Mv!+OjyqlI`BhqbUC-x1f=sM$xY=%4=Z;lDmb*UGU* z^dfxh(Hi{K1=G+^qCch2^mOb?d9)RO^@iDphQIn43j0~`SBIjno{aJ~_7!8YbvGWy zaC|n8mhe}rpo3%3-Ac!M&>;pbLrF{ct81Wx^M>6@N9Vcm%8?v@bsKar-+fBQ0_adZ zK8q&~18+1g{_1w<*bd44&|w}JdhA2#fL-+X_^b0UjX7)Jkj%dd<-kgoT5T-I1o*3y2Fp3t zhEd4bdBo^Qgui+cbiC)mJgOBs65+2F4#8V6^gS1kk%jmT>J%i8m~te-Uu{rn@B0k+ zt3n6Pr8PPd;jcD~#dSr&@52Jbbr|O&u~P*OY#jX6ozRho#2>XnMy=b(f5t9?&! zmBLY{vK)!DpAeoNj_^VCO!8!i@E*)t9>!}q*#Q2gNe{~ad@Wy!Br30@M z?7q1r{8g?Q^C7<%I(Q)h^X!T+u1j+K)!opsm}v{`w4lWLtWpHquF%SgLSB}Cmg6qx#$kH!A$+9lO0FQOyA>ps)K@W-$a|{C~4~_*% z;jgX;vx1V;$u}Nyz0!Hk3WtKYR_#;ce)i~;`Yg?3CI6*HVMz+XMz zj`6CPNr)jv>U)GOjpDCfMK}CH9L;@A)o(p$Njh1j(TjyaQRO*TlGE`wcmK$o~cNQjJ^kH0bbI`xpDp;5y}Lehlqik8>a zXbw|LbRb_fekI^pQ!PCP#W;F1xi693B3rs)-3jC0PO|Q`Y)rFnZ6-Ql{7jRVHF5tj>NR71s zjcMt|Rl|A0YBYv(-Rkv4vRi#idAJkCT-`XC=mNDl6P++=CN?x#+s`E?Y3nl5#cKWe z*cs`h@iY1+^r?wEV!M)JE@aaF+fJtI*1jyM`CYhd^jD<^cg#_3ct3rqW9|pnuwp0B z7dcLX)EJQ(Bf`^aYwOD+HKmPVb0D(&2;JW7KBC3(E+%PA%Zr51w!=YofDm7m!POBr&1ubE;I;A=G#Qo67#%FcN zPfua9e$B91)#a0)CfPSVT1g6*b!t^@*%^3G9BC-Ue+rj1h0B`4Wvyxq*Uzi3T>%i; z=w1vlw}}9b`mAud0F2bwXGOIuEGKLlIdw8UgQbm)^^xUGjj*z;*3Jz&S|}>6ECnvD z(4m77QG^sOYjop_W$uEp#K&w3*SA=2hOzX9q!N37Oi81HL6s=O804$N%bO}HP~9ec zs=n9`UQF$qu`$c66fUa*Q(Y)+Oj_8U6gjK5rm?gtE~=^)i-BG}Ig-Ll@GF z*5JdkJ3aA!)@Z?^TW>9U3-ed3uy(nOvVOgASsiPMwqUZxCQRY6PQ(M0tRt*hx#_{< zvLEh2eYzdTreMTz3`N(L#}7vT07z&YayJoZoS89UK^a1 zOWC)`>X-}hi2)JaDc3_i_`p0H%vrhP@j-XzT+iOM0W!OEz$2C;x_AboG+lit4L)qm z_2_K7%OupxWIaSOsja6}D~s2w4^*GKCb(`*@VqtHtl8UdF`^r^_34A`ji|ng7IGn# zP7wVPf~NNOiIR^+83*{Rv`n4`2_Wi;%JVt#SOw|8W3`S%>E-i4H|pw{IDZ3m^)`_B z=n*I$?R@Fnf?}Yq{uz7+>gtDJTu!DyU44-uqOQJ(NeSGQMvzs=<=1lOV)7nxRw=qhY(|zfyz>%n{+_^~9)%)OE0(;dX zuvgQ92f#@W266V@;6VKQg46Mz5u{Bkjk>yqu|Qqj2;URD9{*{AW>J3f$v0JolTC3y4np@FECECfNwd>Ap8X&2pgkNS1X<5#ZGdkll&V< z17`IDC)oup+lU?OBp0yV<7sbqiMsl22Z;^PI0Faj>I7_WF;G_t!fK$d5><|8p-@*Z zaFTavQlhRt=_LOJ(nMX|h^!r`t1scpdK-0h0Ln}tC4ss+Rue>BT?E2FU9AFXpsv0R z(m-9!Mqv$dxF#j)DvM*_s+Kv)RZj9ECwVhSQ9y~h`ZJIQ>gq!v4b)Zp1SIMz0RRou z)g07}iMo0>lVa{JSFPtEt-_5s}E|@KwaI1QvvGg z!|*ifst+fiP*+DYc)CPgJsM#vmpxB>)YWB(*Ql!%2y4{UdOPgTJsV+-x=MId!kwiJ zAnIxjsN|@t7eYdzu3my5F{32v>Mud@Rf|Mj{R^ll>gwM>xlmWH0862+ZbcBNtJ~oz z)YV;#l&GsuBB)ST*?B3{)jbr@sH^`2;m-{qZ;iS-*bW1AwF?U+QCDXn2-H=2L|r`< zeiU`JN>c)Lb)}{R>gpOz3Dni|G$l}1FV&PlUA;zAQPkBiSQ>SecwY|G)rY{aQCHst zVWY184}^`n>Q{{>in{t3qJg?fkEp9p!DnA5QCDBnR1|gf8L)u5`Vu^ay6S;Wjk-Dj zVJGV9Xu&a1SC0dOgJ2YO^-XXT>gq=bD%8~gN}*9#yCJMlSIQ)^F>gvyR7^tiFBW$3q@_nBmCF<(aAPv-2;&d6Pt9vzRpsuzl{VtgwWV()YbD<+DqVzd^Cdu6iL+8QJB`TBop8>B0lQsOG@fB zTgr{PdOfP)TueGW=?WaR|9hbFF@6i!)t5kYB9Yex8?PY5rZo`G`X3Yd1la1JJjP{6 z;MIP7*(iZmKY;FgDK^{yUX8Eb%Ib|=UZwEq-u?(?{)6Gq2Y9t^@JlOpg|1vn;MJ)Q zKhyQH)%zZLV(PIU=Z)P^)*9edQ9n3k4TQ>BAbvLR>hmlr=ofIlJUDM8eVd?E9U!dZ z$!C1Niq}vWk1P64rBCN)Lh~^l+W`-THSp}OpX)bcC}_?A(E*FH>io>~h>A)7c>}L< zD{(FyUs+>D{DlLr^4#BQ*KhHG`vJBu=CLoLR2lZ6}$2>O0Sm0I8t0`;%uX2zg z%K%>G2t}3wyvnrzSqAVb#{{wr;8l*^WEsG#oRqLEvB0aGWr!FQ00lRIS9vQ@jRC33 zL4zy=Z9n&z^j}&lEsl!RnHqB$>P#fu{f(Hi_)t0IUbW`0Iza&O4f~V zd2l#5FCfbRUgc7jEOyvRJ;zD1X2VzNIZ%>i0IzZ?N0tG+DrUA|8NjQYU{cBeUKPDJ zSR5}@j$D0G$^c&FQk5(Nc=gX9$tr+T<=U#$^HM5ZoOn{o0AAgtSe(!*DNZ9PWdN^o z;z^bPyvn&ASqAVbClqW4vB0aG15?-lUgZRwECYCz(-g9}lv8ElB#x{Qu3;X09DFE2 zRvDZ+)nvVMTY*=h^;5XdioM#a1?<(F1lX%%aqejrr+6vs)k^No`21fG;ESIa!*)@0 z%Y_Xvp*^B>6yDP`oY7cYXPdtsR$bbFSINW1j==lj>hPJh^{}2NEo4XL79W-;^Cpz& zR}w}v&I^KQO{cI|!_^~-BFpQ61UW*y%x0Tv7!msd>#){Y;&)ZNx+(0{Lwtd0-n;r! zhXkLnrf^rkcDSpK*Mkz06%SiDIkM8vOZ$>BR~N|1RGTqZiO+?@##|+Cn5Hj60C+LJ z^_bN0+j7n4RGfTbu3pNwItJz{zeCsbas(*17;;w{a)6K7#_!a%+)O10xT0;F47qWj z`E9$F8?NLqN!)g^AvYd;RQop`b9IkgrFdUd{^yOk`ggg=Y7uj_2x}LOxyp46!+hLz z4XzWhRkV?NsVHZ=9RPobJfx9B*0sZCu3$8e-}k!oK>ejB^Oobz*u$4rtnpxsH6oEdNjcp~4>X>n% z=+O!s)p28mcoat!D6Wpohu6y6od1W4r`ms-#8ah@ZdW+=lRVmrr&=`|kG`1DYptWl z19*20_{h0tg(N{QC|tZi5%BnGVi_L2d=@;_-FUJ+8M*=rgLM5IyxogtAwn(Tsd~|u zu_X9K8G8MaxguHOm{gF;;HV3 zj_yb^9y-h;PB{|dsRl4sb9`P9lKD?WIWX;T97cV_#Zz4a9efG0JLE_v&PQ{Uj)Zus zTcCs2<$35}`PV1DE(!5euYeBL>5I_eI*d9^j;DG9bS#AQ-dG)Wwc6N@3Gh_^Ge|z| zJa&|;6!O#rQ|m~Cr|KPyITms(YK4wOc&eR-SmM*OC1YecE<&AR+QuX1ToU1_PE={v ze+E2Np#%L;Yjh;SQ=K^0vL>V8>sx_^ng~yI4Rqu|$L?0>NQ9@l6*`Eg+T02qiSSf= zV9mpFEHA*H^DwSUay->Z(1C8*+ThZG_P?GgQACUd$?;T)*2o*dW|Dx*05H!vuIiBi8(1Eq3^%tcBL2=-Hf29uV`=u%Yp6Xucn1qubS}0TO zi}oLOIR+w1b_5)WWdXav?>tYeZ>_N>;XE+!N4|%Ir}`f9L=j?+Vc_J!u^=ft)fArU z$&1e4H?*0}q-1kp&iMztXAa!F{=#=adk!4jv-!fAXv-2$wI@QvQ~f1wb>gWO*fAaz z^AE-VPj#Lh^G||{BF!U=0iJ4+9rJ%G=2^rL^YnhwQ9M-wunIiYzcJ95*Ll;@yd3xe z_C`$(z@_hRF;()s;f+=EA*nt@6HoP1 z(gIKQZH8j;R4XGZD(fVIs0(f9Fu_hZW6EF2E*U}td zR4qcL-L!EqP_wZVaDmOV*Vi(^Ol^#hozbsyXgTEv>I{t53$AFnKng z;l6Yw)nw9pQVXH35H#*%UFw)xMWrO|0Cd8bditjK0L~t!We_oUA7iJ`H5=2AQoT%L zB-P8Tz@zq+;h4tZ?9A-O6mx&K*lWflZEaS%-L}5xw6oGllV|1X%-S-iaV6E{=ihf~ z%?UePeX4dX;ld?OWY6FPcat#9C_|eT(ADV>GhomE$ zmWvsH?F$*xVpRcr<>Psyd8lvTOqRv>lzjjDb-_91JK{gX=`VEL-xl!X&V|G23rCvo zbK@NWFj>vi$9JtfUPE{T>jc+e9q1j(!4rDMDml{nh=+B`I^_|9`;xFu-BoeuaHmmC zUn=6MJKF^$X8T{YZ@i;oHEL6V3jH*Nep*{U10!RNwY;?Kj1~3V`!}t&sR=^3t*M#3USm@NwnM! zKIVOD1FY45Si#(>-+GDGR2}ESWcd?t-}sPMKF&eEi7%hh<}H;ys7a zvKyF_Bfk8tq?X>L`4y`lT`Z$^Qs}2&%s%oso13k#7y7AtInfpX)VOIsBL-@?9x&Z{ z4~zqreR^&Eg33sPT#{QG@nGR8IFGdm|Kjj;^b8E<`qBYd)ie0Y+Q92;vpRY@;Xy{) zSb?;8LV)m{Y4}t*eUQKe^>z@RFADl8uthU^flXx4b}kH3Jah7!*rB8GMQ3{(>=dz? z5}`B&ftnNoHEVESRxYlOWwiu>n&pH*6{Lnh6~y3#=&IHrTtN8{(G8Az7Fvq|j=CKr zzGVd1hR>JI{UioB>R-WkfTMDY-sNNpaMV{BA~@<>2yol036A>ika8&L+l$rPRrTdY2+B}x|y*6N4*-pCwM3R(}ItX7u<_~e=rRX zU2}px@UOs8k4KQ;sMFy)!BI=dF~L!ZOKXFpo?sCEMIZ?6qQFtla*{VW$%mcfK9C0d zX?xs!207SCPIrffHc5So1EnLoaBv8awkYpKnadYG*kl|^%;-`II4XD z5*+n4#2VnJ{ZTU}IO-j!83#D(Jzy{|0gn2bCJ2t24z31AJqlqP9JLsP21g~zkVsB& z)af8>a8$x0u`b&mC2DIJf(AJ1d?&dAqydh)%1IIp)rhsxP$f9(-G~)Mkl?6KYtjHm z{S(d$;Hb~R)8MFGaS{p~wSd7>Bsl5}gst4S@E0E(wI1;r9Ca1K8XR@K9rovbA7KrS z`YFOuaMX36l7pjO3kd~|x)s4FI4VKYh$SV#QU3ud3XVzyRu?$x?O-WzRMri^QSXJP zz)}CiNC}SmcLWtUDmyO)j`|J-G&pJ&a`or-!9Rhka4~a_wZi~MB~q#aMYbX3f}@@ZmIg;<4LQJ32?xif zlidq9{>LC}aMUbtZE(~cs?kKjQU3;6fTPkQIO;3#+1E*M)b}+N1xNiSSO7#2rF>Zix6~xqh19D zFTDUqy#>SxP)=}E8xR%XsJk^E;HXa_Y=EQwO_LHF^)-+NIO_dB>Sral@R^{)t% z|0;a)`x2*=3=*LWP2zh7VfEUgD4nn^;HX!sv|Hhed^CfE4URf3C`&RMJ|p6TqrR=A z-nXUP;HcN38ZPgE%m0yw9kZu@0K28~Fq(S?q+J?#A2CFI@Z=2x+w&0{)<8I`Bgs$L z6b4OT@KXk@!BJq;ccJ$w>K$YNqsG^5WpzguA5!=fZyy9RKV`Uez^DZFWY+XK*P@T^ zS@>x876DPuIPJruURZL{cLpB!H_s1#v$A*foC{_X6!qmJruSY4nJsWz;da37g8L)f z9=QEw8e?*ZMf0WctUI zya}C0KHC5fhBYwig40T?hJxno51p?lo7QipM^sFD)|Zy)iumDhd_T>D^~gNZv9r)C zcF4(m$w&W$7}8 ztGnu)#TWG1`TDh4f7zM){+>5?FTG>Qxc{y{vsdt;rm{1hersv_*M?WV(q(npjVpfk zp!bzIx9;wm2o#ldvgPR0*8kt-6Mz2HyXzLd@txJTW~?7PW}^3!E1UPvx@q*PQ><;T zK7PlL-W#*7_PtzoT61y7|4yk|P zPyOmbuZ~=|F)Mxgi0tcM`A&!9Z(1<)JzNM*>3hHpgPROj3|9@e4(@U|Vu1b{?n$_p z;r<7gi%J{>cPtz+S2#~6^ydX|*TDSqfXdI2@c4kYxa)av4k3bDoT>>{9a#o2Dkq&}-HQvB z2Or0u6pI&J<;W={r3_$HPCCglfKfTmBg+6rAB~rK%EL~Af29B;p?=)my?k;p_4C=G1uq035N70 zboO=1^mhi^|Cr+XF;@Wo5*%<@e4HB6pP>A~9&6h^yjH<+b3gF7CTD!J^7knJ&&q#D z`P(pOBiu&19TyfhXLvB3yn3{g$@liD{>hp5Z;{CkwQE8S5 z&CAP6!e+xI1)p8yz!B$6KhyX&mM|J0b(RYAsn^Yr;o^t;7@kyN?qA?@5AykK{#=AR zU|qoP?^miY_d)Qv0Wnee`tULp=DW__D$Ey+%T$=JAwNP|WGRl}22QV- zt_M@|pEAOq7~z|Z@C1=ornt%oA3%9DCTdv7OPSAxkLvDw5+Q6ol=4@Hlb@KZ+}d+b;#AH`4Qq#qxG%91JY)Ofh5&FHtSknDTP(bvX1sxa7j z(O1%^2whJl*c#l_A?Tl&o=4qOh3DqA)(Hmw3{1banR862@l{ z`tf{7&%+xRrrTd2pO2&4=TIUJr6VEcX`|AyO6izfh?j>tu~SDw6AabYhbtP~xT!Zl z2Y%L8rDGj*s2xf`8xQK9<<1Xl+@D8Oz2)X`D zoKRjEH=gZppaXLwYZr8wN1W@D5c8B~KzpGAo>%4AigP*2REDt8KH_4Y?)O>N>5!v+ zKl5;wBRMwj96YV9K;rp!4N6T;9RklbA#N(aRKV$2_do~J9hjc*+9t$Jy$3qjrhelp z2Us>o<1Yei7;M&0!O2tRBQtgEf{xyp9PPGK=onEfL1-OS32;+i;v@^lEB&Nz{M%Kc zbtJ+~rH(F;ZjFvaxT){pCDkK%v-{rxssuCaiijykBHYw_2FkR*8DX4-3>rF0>#!ZF zMBtSo&RwU}u^sKSH98XErY;+dc_?(3C&iI9%7Ksh-Q~C&I`W|7o>u5cgq!+2bUcN7 z=EYX%NQ9gE!(p-#1u-$O?qBz(%H1MPo3^`VHk4rSPro5c`=q&9V=7ZgL0^T-B!tFC~rwwLPoIvd>*oW;TO$9`O$$OUmNq3{X89RX|dLE z4T0cBk6qA1Iro7o5^aY0r7%yw@tCKCJk4olBU!w8wtw@w6VT+`_?}zQW=wp~n@9_M z&n*mTe9wiOUN5G)UP9fen+yG$3Y#~dKbaZ}_np7b517(}JKw|PWM1=pBs_n2j?~&= z{S@3Co6kRhs7-}?AUW^gPQKD?9wfy!Z{E+S*)N{I&wH>b=cIYf*(&0`dDMRP-pzqY zo4k|G-xoNk`QxEN_2%D{2Y9zbM{m2$8}3DLGXgiBC3yvam0g)zu8 z*o9SE#raZcdAVFy9mn8;()tzQMg;5YOILGsH+T8B!)1*P$646oHmfGm7%8oi;*zx> zTo0fS%@b0zSi&uL=58|)F|)Qla#n3kqdRJN*{W3-kT3ykDr>a2$eGEFt#1yt+A1Oo zWR)xHDT-{{b~uacGJYpB39bNcF5D8hD!8?9m%;ISnT=?`=0WSc?t|+9uCL5vEC>wA z)uB#Z}cc@?s-VV?~xX}jhZqWQ@h#x>|xqCp5 zaq;}n!FaAu%HY<*T?MxuWn}#n!10p{p7Y0WJQk~S+W~*__{k%W8*4@3Mplj*O-{vl zYo&~;P!j!h^*ZdX^tUG45&GegY%TqA!Avlm3F z!_x_pVVz+RC5uX{BIQoj%+iLb*k(PSdrQNvxF}pu1-qlw&XiF|pm?#fpic0^&Q!C2 z`Va}1qa;nTgtJQ<&aj#yHH~9Nmo#Eic0*)EO}HEnvl{IiPH)+sU0V)qx}D6a)%++= zaKc65ibgkYKKK1bnbWHxb-LSga#f#KS`}qWtwKZmbS{Btx9Qd~YWzs-EMG_zr4`|N z`ve`A+vdu4J_CE->ulcKrbg^xhYs1xW7B)7HLa?&p}~qi8?YKGYn!Udi>qsE8!M|; z7o%qnt8`Q6&MmT34VP8o*^CsOwW0<#K^NBH(Nnl#K`poJ$zjDRZ7Pq{7S@#2mg8xj z;^_-8yLM$Hd~$sR)^)8$F$yiHm71{aPbss|-bBgphf&EAHh80(^iv=p;kk9hKxwcr zD63&G1p-o9Rv9k;(m_Dbj*Xd-m~lntP9SmP$tx76nO8)J*wGLJLJ@a_N-)ki=SKQ2 za}0-eKY+Iy3UQ#ZsXkm>%3f7JZg&gmW;Ji&tm@JgVMPKPqdZ)%Zs}=@=0yPCFtw?o zB3wT|TwzUHBxFrSG+a_LZIPs`y87@+fNabc%82}+P&cYp&kvV{BP+q0U0YLIR#{(L z4U}~DT@{h~224y@n>5J1T;vIE+aXWp6f3B#s&LJU#!7ZB28>ow?FtmHb_FtFu(T1j z(Uv!%gVV?#4LVxPBP8~g(4m8}NZ8xVJ9LUp50D-XPO`w5-0}iUtF5g^4~gzGDkcTQ zi7F`#IN^dcnU8UIMo~poZE2$$*`$pSC@IJjamnJGdHlI{ zA{Z0bqEGj8&e^>c1q?}nofJn7%~*K~>?C}sRhQ&@>yw&F>l@GF$D#&Ui~VKrVfjKm z`8Tbz!{w1uqpV*quoK7H2+P7qqe3egcB<|=VnrNZIk+FCB}$0rWqL_yKC?RRG(Jg- z8)GF=6&9?Zg;if#9%*W@YQkrV<-C;`%*E@Om0KN14`yW%&IO+f_PY24FwGIU9(|Hs&GO(?n@GVrz~i}S$*@PT z4^I2sHNkajg6FNlcL+WG7Hg>+HUstQ<8egwRA$c4AylF-0KO>R88~?;azOU zfFQeoWIA6vkm;F6Y0^*9$|^@bV{^PY{*@}97omxdh;uS$dfUGR;#+VzSs*^tF@c%h z%x=iEGh;GDE+LS_g~?$qX;v0-V}|;NkfikgN{$ZkA zCpgIkARndh2oW20l4m=~?}HS13M7uqn>8trI5Hp5q(b7j5GD0y9G#Q71%Y$nG6YnL z<-G{uE8u*->`UPVufw0mdkg*_gljj=#}8^VJlQ{i*TIX^^5o?3_0uQ>vmZjB<5+~O zPSpD>97=8pP1$=u<$5}I;-1D|Km;+J!U%`p(gt`tea8;_JFP)@u;2$ey#@a%5zeuE z)d={!*+b!V_H^Nu@4`14RyG@icNT&h;L^&D=$3X$*NZiID)Q?33sAQ*a%tKCf7d@F z^lMV5r40yl{VPJdNu8cHAjk4vis0oWhk0*+cN1LuKE5Bq^ZC6$f%hO>+Bh$Z{(HF0 zKHhv3;x?XDkx2bA1&+_=8;EWmzBu)F%EFc8+f|=TX%ZB z0y$lm!2b?e9eDz0Xo{#EU7IvT)Q+y-)f7=Xx}K{kqIPuMqA8+wbiG`f|>ptXI)n#O~4}JoS`;k`{06MkLL4e&*mqOHJKTS+WO-=*B5_S=QPMN2G zWC^>79w~Dlf-GSd0qB&OiJ(CqrAg6CWfp>D#dbMHoX#>QNqi?Gc9WCTeSa4L=#)vg zCpOV86NIWAAb$zhWuhSM6A*w-nGYa_RncX#i2Ve?4@gcSX?ba@;W<=B=bOEMMz9&d z+?C$HBltfAI~8UVxFzVrpC|j@_|IB_zivkuP53)tu=bAVjuGW-5Nn|Rh#r-JALww; z%D_)`xL0N7y$EvvIRbqGF6_ga6hJYVG$hfUvFH^L`>ZAfP)z14nv_5>+2E{lX6=?kwP|Q$xp3VFWOE444j`O0AA|pn-dWN6wnqe814r!S)qBzye? zVe)?kpZwm7FhJ0E)(X!j<1!f6>)R@A z6MT`6W{^Odz;7VcqZ{U^EJ=U(jOgjhep={Kn$v{TZYA}EE#>A8B%R#s?IH?>X!{=zRtYT zR(~eu%XH7eA3(uwDmcnxXSpjTOTgUZbY}Xa*uz`>nU*izJquq#`VJ_WZ*;5Dj~40k zn3gZK%2!4o=C;OK;^Fh2EmPRDN#kAVrzjegAkALtO(mxN^40iy|kAifA%ZD2eHxq6#TqWEpxQ%ev!12Pt zvmU`kgWv@f}?yt<)hOT-;oZ4 zKL~EH;vWfr7~BXr;`R_Ph?qS0%{dSt4iK?@h}T10AL93DOrL>${&XF2eTW4_Y$4+M z5J!l3K*atbrVp`#hzmsQp9A+VdGpuL^_xMQp^n#|w}#k3#2X@J5HX2Zuf!s{|CaGX zh)YC#A>tMhBZzoK8Xt%lM#Kmrwh=Leh*wmzsH%{7Ml+huelZ8vWdPhbxLI&Z;cDT| zgS!%LJKTM6e}H=h?mf76|Bt5n3qGI(bZEdl)R%x}queDVx^>wXPYisQFw%%&3ZLR#j z-8W z{4RKYj zW6{MK30a(<2#adT;&e(fa+X8Z4RMxwf&dn$4I)L0fl@RdL>K4NWN}g^EVe0GoLWi7 z)u71=!&kt=aSlKhTTi4oJ0goyCy}DnK^BcXk)p*x7R?VSkw!jQwEBg`*&|t;w}~#A zU}VuA6DiK<$l^p#)N|@b7H5N!k=7kqH2Oq}6AiLB>kwU>PLZ`4p|CiQCQI3Q2;uk~ zg{)iPMc0jpf@_U~M_x`3eyY_77bVmGX#sXFDZ<}7KQ&EURazukj1%=usEkD zi_`oHgmAQ2$)X`ErEm&H7UyG~*piNK>CG^Qm#Ck_lq8F$ zzDRNYM;51qQWs99$>I!Mr1<=TELw}Ai}OLUIPnt}C$?m94lNluwPy7=iv^35ZV{%r zNnzTa!lE%x7H2n-pHHC3;)5=cGQ&C9boSdwe*i>p#hlKkEWI&SmeHeVK9RHI5z#bT z3wb+_=2jw)Ce#qEH>QvFQ6i7V&%6YE=6>WlZ<*!V=yMh3dOfrWxDT7Y<%vUwXk%LQ z@_k#f=I42;FZEo8_GB8@f9^s$>m5s9aH;n)&n0fAp8=oysc-V4s>Mo%g!k z@Yf?<9fv6&Jf__Ne{G61mU|HXDx~pP6U*gIHOm^wzL6skOZ`s;W)xrS@d>&7`hTImqO~d9@d>G^{i=!MF4da_)sqxTk6r_gIPQ#U>2T$; zp7to#h=YZjoOzF4iLD-3&juz;2*Y%|TgFm!m?CENvChrm$*D&#HU5m<6H!}4LBJR><=GYmY7LbO=Qnh-rns3^E?gMKLc(a*22C%noyTo2AaK8n zX;6#6)VgV{!6Y~jMODu%WP~7QzK&IohGknBsaZyyUPviL)X2&)O`4U7pir^JwegRL zX-;>zt)Ua|>3LYN(Tqk})#*?yt2X;v@Tto*N*oJDok`9$Ryqyeqc9jwepeC-lh*<& z6QG$!5wU4Zv3GFxR&Qyx@9SQ#?_%$uX0JEfcd~bg@AF9Tod9OYTcVlBafI&*Zy-Bs zY%%zg5WCBp>s#k_0a)I5I-_5eF z=iV4N#RmrO_1ptP`dP?54ElDV?*+~GgVcv9YAoL>@V+Sgjak;-PLU_S8*-*x(lG2} z`bl$&M14ou^l@Jq=lUFWRb== zr$QD<8i5L_52J~PdY~hhdN75{r5?;3h@!62nV;#*h%_~KLtN=$$aKI(sdPMZQ|YLC zZW+!4^%qL$laT8+kjKMGBEvV3AA^?XbqV_ZH@UIm9PT_AC{w9Q|if1E2ma`rq%ZUoVQ}_|#w+O#U_^X9~hVWMkzfSl| zge)-TzVD`ntaah`L!3uIj`R*GMvwIRRsB*$1j&S=kJ7G&PQkD zUd>-goKMn@mH4}e6V944+;506LdCh~kjT=+O^d>JLf5Cz`8clMDshhK(;!~}KF6bN z66aX5L-KA#ya{}e%5iKlaX<8!I71UB0=bEEE^p$4aa<;@UdjkXjCO;S=2J3S>a$9Z zj=y4ypJ|IHAfSmI)E~;4h9O(DV&1a)I1HN8B1%}9of^2zX+ubf{i=2DYe}uuVYFC+ zuvWoOS}v`xSyWpW18#HFI4-zoac$ka#g*0dIKD;m=GRo$W}E}?a3?LPN++MXy3Sf? znN%=yPPz0Lb1CKG3YRTOcg_;}fw2L#1*x|VrmvktO6}6?3P&4S+pT&<@RPVtSUgVax=YmW8q9rd=;N)isqAprojZhub=%8|oXm zi%gWXb+4(#7NxWcZ1u9@bgOwCD`G#qb+@SwI=%LURm|xHu~<3H`r>}`q+H;<%GrLk zgcak^X$9bb6L-waP~06BCvMiX>C=^X948JKb&kF-P;o56N`)7<7vsGZ(&K3e<98}| z1ztej1388iq33;zE)%@CF&Jl=pRVqBjRAlg_$I}`pA8QzC0-o!UkSP2;y!M7V8@*3 zz%ptgtWjsxyt;X@Wa|KgLm)TiD%-{?nWJn8&ZuctC?`77;>A4=9lWRS79Dk>L$cd- zq{WNla!A~!toudBmC&K@OiA@fixiku zNqeYzq{53UhYs2<&$BW%m*Tvn#fzH_9s7{?9jV9dI2PJVc4zA!De>Z7fsW52!(L7j zY%WzjxV1ad+8s^oAG2{%cwXLt4(6*nG3|Lti}iK_6tGR-O{fQ0w)3KKr_y1)RYAv8 zNPD;_#OY#(6T`0RXjBr3m|{KBfHP=JI$e^EbXafH@e6d!Omw8fdRvIe)E?N*IU!w% zGtj1NAGoA?q{Di9HKgRNn~v6@?cb)uhOq{L#P*<$hr!Q82k&<*BT>h9Mrv%1j`2)& zxYYGXf%Wz#bW|Yg{tR@a!+IMsN@Kk}oq>*YSZ}`@tLyPiE-Z06+p+YI^%fYX=PHjR z=)n2iLX{X-(T4qFy^Vto&XxM0g9YzK|G=e8XRAm5SZ__x!FgB(?xL|wpmD2cp(482 z_0rlN*0d8}@p(d%D2j#}F-psuc zmo)2RB@YW=iaP*3c%GZ&CW6C0!}12O-UhJV60qLBgMN{S_4aFA-gd0F7f36tx5pSe z4A$Gt)ELKl<64HLeP2SxB&;_)evMhEY3$Wg<)^UUN#uZE}`p$_7oZ8o6;xVi@Ji>;|DTWVpx216{p; zpl&S%*0)|oV67u`n-KaToV?<69&gu$xhr8ARF-Mi-fQzebJuhs9+Z)b`Ah|;UrC|d+ z;du5pR_kfk2WRW@|0>(49)0wQjAXG65Hr9QSo2%wl6no8e< zY|EpBue+cuKXUStpv&wiSTYi(f-bX*r2xxv6p|wS1A%FwI^jqy9zzjDE;WQnGK!TA zrOKdXnYSu2Br7{ql@W^TkBOyFl|m|&vZNAis*;tpV&Uys`f0#@SoFTK%elC#~%;9mfw79gqsq_~XhgmM5#y~;`e zk!5B!)@h;(lq=K`e+@d!V|a~Iu3)09z}b*jKu{;LsL@vNWyreltc^fW!T$kK3{N1a zAYZ+x6aYc_M}T-9kM1-Ol>bPO^-v{1P=N~(S3pox5TRNwgQEa}pn^{sf-V{u>c#fbk=@pFs+2l21M6Qar6jR=6C-a;CHpm=^u zv+-x;u|s%@5ap9s0fOSz>BS@!5Y%0Wu{;d~Md+u^q!bVox0NAuEg5vi1=imVZMTjT?g35+Y071P3PGB733JB^= zQ0!EJS&9P`9aB@nsNI57pn;$$msbu}pbA&}ZASnIY7!`wbrm^;QQ{{?zzM#LrA(~c zFkn9g3Bh6rKR-a+f)PjqEcvH7$y1%=1x|7=$ZqCUKv4dlILTi-$@iS(2#kEH5(>%5 zKixrEfs1hjTZiHZ)*^x<@Ox2d4lF|z5R`v7$nWNW)Y+$ke8j<|}fhcQOqJW_MuR2K|QdFt}g7S|7$%ZXaKv4cUPI8%(Y<7}n>@QJ3 zQ2z6g%I;mFfS~+4Kwb!6qJW_Mu>(**Q2uL>!lo#hizd(VKZoeuBn1d+Co0VkOb)uv za}A;oAX>c6^G!sbLbRwl?^Z%xn{VC$6<2D3Zg7W{^kOBm?2xSG%2GcVb zKv3qY>IUN$TvdY=5EKVL0!RS}ir4H6WDy`JWf0`#eUVCjh(FH|0730RL|t(|Qyc(6 z8MWqO9io7s9zinkD#}LZQ6TRi;(^bh&)+uOcHIu+u7FMOH^48zt33cg{SK1lcOp*y zeF(`P-h_1-WRMuqVkg$x2y56mLYa)v=r2cq2N2XzDsWLhfS_h6%B$0|nO43|@@__` z$}tQQ$dk+OtPiWeqA%8D5<(^b2#UCCM|eeZmXdm0q@IdNdGCgl4G8K_Afo`X@#eT_ za=1bOf*OO>D__B|K_WLF#AXt9AgFO*T+LiXhs!ncXyo@6@l0C^2#V&SYk4yiJVgZt z8i{3I&0?Ho7JdP|K}gHH9FhDXh-qk~(X3z$8VOxrEs0?Z(cz{IpRFKlNE6D2JoGXZ zC%h41jR=1<`v(Q#jYA**&WOLC_tzGrbBWMa_^aS=hQ9;;E2t{-KaJL+dr;^+R)UW8 zLO=jNIv$#xW?PXq@@#RtK0D?E`H9Ctoz-8fd~yOp+O|9n)`j{^nRXqNPt?ISFfwIG z=V~mznx><^!$Ae{(2C)i2V0obvfdF0L-5o+Qo_*)E8xe#kA)ux&-C#KC&5pKPX!fJ zx2hqM30x4{AydepbZ|kbpn_U2-(8#uT+qh}6~t{lpM`INPX`tB2GaV23L>(rfePZ4 z#s0<%To6fUW|KvmTM$WTvXVucSEOjllSLC>SOyn}cP?SkLZTGSCDFwJn=Fpt!lD^V z7L8hA(Pk!#Hn`}bX-pPPZDFbDBUq=y3yZfIO7Wf}x;P0Vi)MweXn2!Fi&`>r4oX%S zz5*Uj?*(#z-O!e#6fG#pNGqExn&6U=cQ3MNN{AHiTx9V!CY7MENEWR}VR05h7VUr0 z#alU9yswKCX9i^Po+;`%g&>Qw3du+-fh-yiB1IdVEE?pZi<2+1XdH+XC(&fx0xzta z5e3(v2XTHQDV&~BnD-80(J-eltsk&xvP)q!E-6gwSXi9(k;RE%1wuI5G-T1#5tTI3 z$$BZSi#9x2G($v+_jR&(lNa?g9$1$MJOpWhi7>5A3e(ONVcH*L(I6BlP8!IfO;Ujn zjx#W_*hNK(lU}lDVu&tIBFN%wL0Fs(k;TcCWaNB|)w@sY;!I71Y3@;&_OA%DiO6~t zUZl)$PBxu=$j=-qXfbkTf)g|ka(0{`bMr`t>$CCc{&9V7L3)3EOTw;`~foLzX1NjHoe4@A^$#L%9wVcKH@%*kBP|M z12*~Vgufen?r()tm^GJ!CiJMG`HGVHqu}3Tl^~Kc+Ow zs7IV6|CD|_&r|70ROzT+?jEF5|5XxRi4b-1?38dlLd^3ORtxLd2^!N2g-JsGYS84f z?a5z?5U0{pgOKSbNqUv==L-J>;m;QSbm31Cej!5E1A(f4EtFC35($eXnh&WsL1H=|RB`@Oyb;2!dKViuSWd$$ip~ifXl!yKn=KWf?EQKYr<;+eNn~PpEroi8<2Sq zar~59gMSmh&lV@o@I%OB;yeZuC)%%x-=gB0nvC)cuE{nVUr*|_OxVV+wZ#+gEIuf% zNzzRogfGJ>_k=7Z7#%8?3> zqYq<{71HBC6ULoXE`mYXgK?E1Md*pcK$i&~2QibFpRRMh>{s?!n-l|oHoS$DcpS{n z&4&|t1GPB}J259Z(&BN{V0`76zZ5q;=6j<`-H*6$oVOO`L`PaYj;QEZFFNK{t9z2k zZr70(k7GA<;Aia-9h;y-kEluYNQ=j@2MTz@-YYt`LI;|NF7a5>;&JSQ4hr8UI#lk2 zKWUG&cpL|yqYQcOfeyP%abD8mad71YzX|w^)MF2hg)e#R&elIt;&Jd%@R`W)77QV~ zbJn8~5ExvVu3de7UG>Vkxb$K?D{Th3EY^ZL&8b6;JE}cWVS4a+D-OrH13H-Rods#n zZCXr^JD>w5i2CGfC+SFs=|LT(kj_L$I!up00krNx7_e`TmKrRKb@HToq{H;MV~oywV6yEfbkwG! ze@qYRxEcL46CLR=Jywqe&I`(I;#*UvOI?o?m>#!7M+NfUk%5kMm>$nS$78r=p3gu> zI!uq7ChB_JI?H(=plrv|Kc>e|p@T1fA4|}I{=bDd`-@$NEXgj|>}ee~V=Tjc(UMMRc+2B@L!W3;LD^_tMC*TK*2yL&o)(N_Ini zN$MIhf#c^hkmYKMnnkET1`w1R!}Q=dPmfDly*N*}1%exQ_dpNj5*?aI^%<5ofax)S z>5+ix@o99qL`;u8=reXqk8hAxm>xSBI}E1BTxyJCdb|bWWNF_rWK6>Jcn3+_s$T@G z#L`3ixd5;4NG;ae`v#M2m>zkOa2KI{otPf)PEe|QFL_s~i(`5`s}l^S$4M;U0mF-7 zdhD0%chxD)c1(}!df6@7c5ulLeBwSdZuJht>Ls=VAY>p!>ZzUA9~TYD<{ zQ*IvzoipP_eJ)-U9}lRa1|=1BtSX9_vJgm7)KF(ps*shvr}%m|@tNnd9+#?tjs0sI z+g>qs`2UW?IIhW4N2_LY|M*U@HLl5hiuDoWnxy?UeR>?ogipMi{fn9Gz;r(9NPMc2 zQd2ryQ1yYrV{ygt^ITQ%OW;q3kHB99e+B%l@LSP=?T(nhiH`FC&adnax8oRw$y~(E zqkG5P7I*AKycNz%Qn_3(dFN%FIcK2b-10AoFGig8b>RleXLzhPEc3wBJS}GSRu$yyRo1%cv zS-2q5L0#&KnVXbYd!)7%{HvZ4)LYr;_*aE1D^ z4lpZp*w}$D28j^HUZPekYHw<740i+4r?V$2JXNiKAtafUcc?V?8K-Sz&Yk0S7#kY~ zAZI$(pl<7InG z0$y2kMYt>43N%XCsWF(b<80r9Nm6xEM_224_#kFN7NsmrT3U5xXtx(`{}_w2@c3|@ znS8?f5eI42H?}odwbeD2diRX=4dF&2Ya-HYbu~1#_HP=SPa2lMIa$NQBb~ zCcxO&W+#^e&@SPbKj5uEcc7#x!=RT&&{Ko|9^q_3_M|b{C_hk zfb9vCq0kbhC;*K>2qYI&3T#i1XzdENrv(vK|3-uqAZ(AHOQjV-*dDIw{5Pf?yVB2f zpWkPkusw4@{3nUyTm0j31S$t$d;EM#{C6Z0wkNO~#71}x+Y=auIk+*h9d+J!}n8D5zV^~k)r8{S;f@*6g*nfQkwE! z1Vz}MdZZiJo-pDe_^i>M;&WngU-3r7$0~kq@qZzFOvM4)(}oCOdnOJdtol#k1-9o#R0Oa+%>8Q$%*o>$h%y&nocfA`IFo$4iWVt8 zG8PAHPYDRX_GBaAOHaV|Fd%Ht=?Kpus|cBftTmK^?ddU;g6$!QkCIfdJ(~@sV0(5N zO2PJg)lhNRo+hvW+rwPJZ{ttF_LxiIUNG1R3ESg;4H5Qb!uI&z0pUl#B5aR8M>?2> z?crMvW&&)F>cD{Q`8h~l*&4Qo`)n1ZVSBQW`yg0=?Rg%7!1i!a31EAMG8lzF1=}+o z5q7HJRK)@2iK*$aVBCUJpkaF`m&Yq8cs8!~+sXm|(F{su-9*k20KFN92sp9f>IlI0 z#D*&p0dD~7|L|hx2nB}|ILb*9iouo|b&}VByp?(NsB?#te9B4w*-4s#@Cb#w6B`IM zX$5aY#kUf8=mvcRfpHi^Ik0GWp}<^_ui^dKFrB>)Bld1y6`z*u=NHLw&wy68=-zMV0*4L zalrO`$HdE90(Tkk3UZtV0)fHL|t*j zitv;Hw#TS77i*btkO_e8c|z$D%~?w7evx`4CguGLq-?M~M`L(s!J1ib zz(te8Mc5u+k!9Tl-6V4V2dmX?B4LN^S&dx1%vEx@TqEQ;vK?S;4M-7NIQej`!rLJDHU#s&k4XOC z5Yr$LTlyL|J?PD(nAD2dKh}1 zf$xKV2cF*==l93Q!Ow<234SGf3;cTct?*aDv*8g~**qw?-w4hAOh+T%o?a>G58|ZL z@x(LT(CkR0FO_umXVL{iUz$Mk3^IL=l*dy;+LZrxfr4Qd+E+xXKTc4l6EPAIl!*p;I#4E#R{eo8?ZU}4piCS| z*#9_u3-${qQDkvO#nTMO2?<%8;D{6_YGiQ&CoJAY$)a5%EQ8a;o3ZHPjD%90p9qU; z$>MZMGIEwf)(vr%dV&C!4S|Uk1Epv_h%U~j$)bfQtZ#@ePL4$VYNS#s3||2c$2kC5 zY(0_U?1(H*okWUO2U)c0M2Z#%Su{VS#7%Pb)9M!%XOEQPyiIh`1S5;~m`HI(M;2`z zQO~I#S)2_@Mp}1d(dZK?PBh5ktV48hIz`rIgu>!Hnk;4KA%x>|6tZrC7hN|Z3a&K{ z9(g%cm6WMc7n%XWq5(@`hG22_C53UGK+T-!2#XVVvN)%&KnO?klq_1UqLTA1vN-vY zj2wT+QZ^$(IF5>B{X4u!(GFx?BJijOjcHNIi35c>Wf5VTl4Q};7b(vF$f9{E)#GHE zEY8qHiq9{|qO~ZxI3Fa76F*^bVoMfh#*&d!YgUi5Sg<(h7Gav36sGMdEE@AnAKIjrDGn|u6XCLx22W3LW#qgQnGOdN29hZsbRw9ok)DXzQnR+RcDv?LyXC8#? z`po?(9nMqB6aC{n?Lzu4mO3xrwAYN`_we) zyw~l9zaHu8IE;Sqn05#JwJFkA?m_sgkj7(8ESERcENdkDqU-PZdH8p+_VBLBT*HW0 z8T>rkNA)(%jvZ95_XT|%)p%d;$p-MHKE6KEy`g*ZC$gV#)BD1j>e~3L%8#|1^xvTu zb~SXiv^I8s;w!rVivzLk83WQMzN&nozM{1$-0=yiseNQMAOFI3L9Ws~W?Fp|xIq~6 z^_LeB$DMI;?UJ+3u3U!InE1XTSTGvQ5*&pdx1M=mLd2Mko&0UIn3M{<2iCdyV%Vui zFH!~%vh}FQ%;~BkusldfwLqg@XW8f73*Pyuv zhBWbX9tM58(A>Jl_k+xbDQYa=D)7E2{Eb=G-cFGxzZ-I`I{}u<_>!pIBQ=C)So}50*o$E%J%A#gJHAdu{pu z02%UM0Dq;8PpmES?}OQF&L8y=Ym0nLIrrAsROy5NB8}A<9rR=OpCw*%w1jvKV5VQz45ajX;GJ z2rv&WtES&D{`JdKgkaFr`#F>a5a%Hgegg5c z4JO%h66d^s77p5AlDQ?$dHp_-;e4K}A}GW69Lpun`TO_5BR(1TYW_;%2chFwiNA|@ zj>Ng&5MzXr=bl51PYTa03Ykvm`V=}J$8~{R>oH^Ax_qC+f>M&a3Fl9@ZEm>M$v#7SNKBWy87hJTswr<|y%If+R z^Oh}|Hy<;!jB_L+pgAg^(9WrAksegcsVhD3SxUJ$N|^)o%qg3?Iqh2q)7Q=+rPg&8OQFm~ABtL&Ma=5*`*b@_{MVr)=(j)Rz#W&?q(N*_ARnxg_q7;DZ{ z$BNhwZ{6+tTh*I{-Ii{Nbozb!>8qY@f%7Wq3JC~txbMONC+?V;8X`{p9~LKW*0kx< zm1GDt855K;8p6h7_S6CW4vZ#f`x@%lve8 z$K!o6BOYrL13DWXSW3J&=D!khzr}sr?!b;Y(UBG}j##lFNN>zlwvAOXN7)jbQPZqY zPIRQjizA*V@9DcmN1f=9>~eFGpRYAv8NPD;_#OY#(6T_}bgZ0)U4LF0wq|+toNQd=C9lt=w z%tS{ztha@jOznZ~oDPM>?#xS3^qPy6I>g+Wu`i`p0^sj)##k6CJ!o zvW!Ihyzh+E*c=_>nd)$<>yZNM?M>*YK-T>k=+N(UlIt;Kl*W2{Is+Z)u-<+*R@dX3 zTv+0CwqxlZ>n$)&&s82t(1G*2g(@+w9v16u9CUE5)CV0bcsKe7E@e7fJ^IIbYl05W z!zwTViDd$fTSW^M(Z#NpG+1xXLkHhM@8%>1?)Lb#A5%F7e0>q?nEg2dfNx0FRaCSdsj2bhV@n>33m~0 z-HG*fyd+%`QR?DYZ)G~cV7=YO0z8Hn!+QJEk*a3BchSJxc7Yx1?IoRb$?Kj&g7x-* zgR`H{G6d`GR-GbPZ&4&1+J8GsyuxGw*4x!OZm{0Cf@wwHIWd7#`#MbA(_8)Gq3PL& z_Tv#YWKJ=Bpt~)ND*-h}sB~Cw3g?Vi$#I;sp*oBE$47##an7<8>m$ZFb4=na=QD|f z2Ok)_Xv5EdKMsB_{K@bu;Ms}Jhkpa!?heR}z|NzsNE_VlIG30XZyqEh&VM*?CgO?F zZcXKA#xjZZq)kc3dUJOXpTF_F#Ger-o)}FmkP6p-HzMzXPnu&rZENE1mw_-mgYU)r z-3+9&4y)nmwoAx(GQL+LoEMJJ@o>kE=!G=rY210P5BN>Q-x8Pn*K$>cErBF06rBMBpyPX^2GXH2&AA4eilWI@&uL zTe`4NqpBg=VD%6xY%ykcYH0_6%NDgYtO-{(bP@y%Kx18Ptpqevt2O`z)*5X!lwgDD zq`HnpYufQd8VZ(o;-MFSoSIc0NOf1YH!bbz0Gb%fO1Qh5t2psa6uaaHz_bRywAQY{ zdZG5F%8p1!*Stt)OM}(e)71qqG2Qu8FIPZy%jC{zP{eAZ=!(n2d|9Gau+7IO4c6LV z@TyuHxv;IFYXjCz*$DMmPA-Dla2rJDe30Hl$VbwyE^?7Ih*Y{ly5JP)9|%m#j#Xjri9#-K&7GGRQ-Ap+ENZrmf z_e1#4a{q=rw+p#_ZfXSbNS!QNq{~BI2l`GT{e+}NT zJcideiyCbOUxus;&)NtC75pC%#qb1z3i8#9N&yg*e*}o<@#szi zLHUmaSr1hL1QoataRmf51re&{GB^ql2r5WCBSjDhii@MqVal;9gCkJz1&k92Y5|BF zNF3i1oQk4U4gf&~j|Fib5(xz5za9kN2WucGe+ac@y)+P%zuHNj4)SuQDj+ETS|@pl zll%%uRi*-h^50}g1q9{4-;f#zDzF1JB@mQ<7b1(`4G>fv;#b212 zfCmuNBM1NlwGKf6SBV1%>QcnHz%j2Ek)q=evx=$r>+onzOKHmETL=O{5&X#jL9Io+ zPf2--&yB@>#TO&~N5#)A{vX7@3ZFF^Kv3O?00`i^&b9x#YH%i2gn8x)Pz_ZKv2U#00`>mNL!33 zfS?!<2x>J#b{`D{#qF$$Qb16Ieo~YIg4%2-1q5}Op%f6*E<-6GsA~-s2ZA~qEC4|* zLJ;7>PXz>JE`^7|U?(IHRPc|8urCt`D)=6VCzt{ts9>ISFbxECHP}Cc2M`nkAAq2^ zGWBkC~zfs@<|vYUAo5S0HXPV(1I@;xUx0wbTQghF!iPj`@3;9?xX)}c6p zwTR#d{9aU=1IthaSmhrM^1C@8b@r(sc@#qx5R`w3lU!#=1q9{adCBvU`^(ASnM1 zkQc(2C?F_*>;M!Hl>Zu}uqjIBqRF%T&mnp@Ndbb|iAwVWlY_4FT!ZKXh!(H&d=t^9 z5G|_CyA{#=mk|eS45EQ5{FRm3y6|E!*m|V|f;t^U71Wmk2d4|Dj+C7%i|SVs(_&U`wgjpp!`2JqyRxJLRo>c!SoCU5R|#9y1}>wSJhwz z1jWIR08#*g;x#)1Sp*1583Z|bU!;;B;?FY#Ku~)SQCHm06bC?1Myc;IvB^S2GRUAM!yD_|4+4e$%_Y7anAzk_7?orsfvA42knH(|LJ86-xu z*on0^!WwptP$nZZ`pePZ0R(lF3S86=AgEc2^6Io~rj@UgyqgiKatwn6^5kxT)UXOH z`eIEcA!Gu8poqJ6gjY0YDXGUr>ZzEN_ijkpfS~>aG72CYZ;p#5hbsgis4-Z*@)Zml zBy#gXY$jm`f*J?L)y!3NxLhNTMt*M*&$Ok0plB|-mN!GeQ&eD}kyz%{EXG-8;TOOg zgtWZN5y>Bdn1)6g%?ie#kw)a) zY&+5>za8^|{KVs+&R4Ga<(>%$Y1`szQFUQ{Q>I-9I*(`-2K1va5j#;+4hz#tU2! zNoZ!1MVng?NocZ?MVnWoXv&jC6JJ;c7l?N*VbMaO6wM{k#Q~cvj^M(g8A}$8T4B*< zCW|(>=%Q&%7ENtosp%tFr^5@2w;4+Do+G+A2_uVUg|KLNlSPYKGI9<|Rv5kl9*%}1 zSu~eKiY7H#w6{fyw<@w|H;5E(Q)Ka;B_+}_B#Wk^usG!)i^jg_;(ePe-o!iKo%_pk)pv(7Oij5#hDgav;;(oGiI`Gffv@zh=OaNf;gFx6wbvc z%o~NUXoXXlrVd!N&!sS0k`$&XEG)gb$^q}gSs$f15v)K6N1KK$nmSSnjdZeJimRs$ zPZrG(k>Y)wEZ*d$L>dpQUIZS3w7^7|)+U8%=ZY}x53*L>HcwjZb5o~xIUq0Q{(G=59cS#nuz}ae4UQ2V<#Om zsk>=yKhKy`e23y=1x~TUW~epvlb3ggySgVgOr2a6?p_=1=$vep4NPon=*A+2iPI-H z^K)nCc68xDJ9@er!;@Q=)LI`TG_&QbLb>T=yXSi!}ZPm$1AKJ;RLl5BV zeE2V;{?Fm-B)$Q|(o@{G|JfjR{snP#aAF(_mnSJaBXd_sI&F!m&V|i7a~x}@>?1cL${?3irfzXOaGt_L@KV#-jSm@*8BDZ`MMGSAR# z6wH|GgilNvrV~@^)$UzfSnO z!RP)~IE9^aIcTDh8k(;tnLi5tJvM$Aw8xfjp2*FTaIAzdvSa1qS)9V%fEo`Uo-pJ? z5QdmTtB}?=X&9y|gmJGz1S+gRi04NNLk1606ow3*11Ss{=x|`jFrE1^rBOyb;w1T} z^y7J+N=Lm^I{tF^Af5X8;ELgu2vHZ$P6^i|#5`YNwXmL@pfSBrm?Y${22DQOp8TZ< zaVkAE2$_D8q*n=luJBI~{%qk-7ycCC7b0Xm5UBdsLK*cgk+4`oz7iq-c~qX^GZI!H zAL)>U<0NGJlaD}!C!i40z|&C^B&GvvN6nwm4=ipdGFT~YoPWkS_aWXC%qww7Ul+- z8kr(#bWYgelNvPxxtybRhRU6riPGwJ+)XlqE=fF$6qypyOOmprt&RhCL5?&IIZ_eB zPf6049>ye{Xk4uW$s|cUbzSv3Q-$Z(PcK3xs$kxEyz5oM3*sjSKKyG)6quCI)o%^^sOg)Egok{1shS zy|PZn`F{`c^G0!y>VSI)v`fTppe=G7o{PQ6o3YK=^+89oT?zK) z&#Rjk7xrP?o(r-ZHwWf>^dxm}iVGkH9YAM}#(0T3mO=;bK~2!Xn@{c{7#T5X9XT96 z$a>MSUFtC%IucKv=tzqXvIja?{_Ub83LSccm+j|Bv*BT+#7iNj%Zre^13K)^*{156 zO^cVZ1^tir_^WWUWxkE52kV74AzL}AM_P=LD@Di6qQm5~hoU1b)(MwIu-rRD$L{p) zkrt=qX6PVJ$pIP;HkYD3Vx1(hf7}lpFCyDF8DFYqq87qoNY}0p+ z#tU@tb7#iNH<8r!NP$x_cf5WvQkQ{_bT}nV(7{!P>od@i4yWX=xL7Js`#erYoX&PE z{o|AjpQ>?6rY7h>|KCED9OLWjJ3D}*jK|fwkox*Xrz~BvtWHywbv$(N!dQ}^1Gg=; zK!I|+zqFw(qxC)Q=eD*t)z{Zlk#AfLbZiH)8ai0{2`B6OHKMj-=^yLl8R+OkhSx<0 zqROG`wwQSAnoEOqat|gnH{;+B0%wV?3H6ZsOROHe9Q8mzt3p?hefvtt@_baC0@DNy zhjL?BC$t0Tp;}!#v4I41qKiNehSMZB5gh7gMFy}={?B8b)Se2klX7-=>vO%;zHQZg zy_a0!$D+FG*LPeJKx9Yn-_YH5Ebm+T*+cu+p+_z2dmTeY45%c!y7!W)xMq5N+fI3< z_pb9G0WgpqmkdMRrKcX6p5J$e7Vqu76lvQ$`6~HnmE2qX3J^T{b{Pq-SyB=}?bs=$ zJaozHpe_)~j^TltSE!n=>^;TTyYqaA^cKHaP`C-t1FeE_55HM(W^PgMZ3j`*n*~L= zQ$bf1d3ty9@dy~6qTZbsAV_Pl? zqGsQ%ZOfbf5n-r?pwa?w`|TrrR7WoE3yz}^)4yt-9@S1 z;$Bo}*JSXv)l~Sl)m3To1?n@&8yhm`79khT=V>^9 zCfh1L`LTcqrG10hE*e@FZk!(KlwG99hY}LhcG#p{q{oMP+FP5kgD%t@>1c?CqT%)7 zh}sdEGDUBwJU+Az8)Px#$RUe>y%B{T6z$GPuAxsvW* zc}Htgs12~G)ndt9F{bAZH6YY-LtD<6+KU^DUqTXJ4r}hi1&aQA{Yd1DRhfq?d?w9e-*xk_9 z83}hytI}scffLlh#sfG(T&OMF)Y{Y5iSryiCWKknx{gQ>w^pChfTsoP;~laE-LO-4 z;*Opu;1NVqs?KYZJxuRNssC`NJY}ZCoXGTf`srK9@sJ zr&Wzpz1`l{6ApLPA2q4#co|ddhyH$)_j3?7?Y1_`P`NEfs#Bh*TdMJXlpn6<7Y{BPvBKyMntKT@SK7eW-b6+hZ)XwRA0o_y6JO2jk~&X{Cpsv zlgax$^*O<7VSk@2589ai8g7TMP-60Lfu?85zT{w!`mWHNq*8-rF0OA^Vp5w5(XH6RbACeLb(!-+mrttdXfT0kb z2S|r?VJ#@Y3&&Y)4eN=JqG1{YFQS#;4bh%X{RkDvCFDZ|{+Bc_n7_o*g9J`pTUcd@ zH?M&zP#oRL4wky5I?e%~qx}m0zu?_C<_M0z6Fv&RUfROEzD|C=iv_rlDG^U`K8H%> zIB)X6mm;0di0FnPek3OT&CM6gw(JBG ztyZg9^%>?3!GArO?8UxU0!#0tT2g1mYj7qzUBlJod&Ct5ArPatW`aq zv?Ag5HPIGGFJFX54r{_)xEi`!*R+S5aJ!6JDNEx>6u*+B7*j2SpK?k^Q#hV|afji@ zd5ROJ8JNgZ<5HZtAkx~&Bg97yBTnu~9bK*G0er>A)>@T@)cFzwL`5`N$JE(VSnJN@ILTDvt`l-1DF)Y?(q-q-;Inl-{R z9p#jcb*$}2O__+?}qrQGYPkZA4(Afac+5ZmE8Nj4qa7ZVwT(PtjhSdC?=4Q;>!p&CY z3S|u28S!|1y;)z!xy(8kDa({HzNZwJs>p_A;l^<5I)iuO0Cl~hWPv`E~W+Sj|hx`bQWG*+wi=W;ZPRVsA-9nkhHK1BXS~h zJ_gK0p2h@A1e*KgV1)hu7>@DJZ(5@!RxO$TnacVlHC6Rhi)xq7tE)Vz9$(?9TT*x0 z((2kdQ$~F(YuD3%=QLjT_y;*Zjw)K_%dj6u;r(p9Fx9fPPIc`xe0mcpIqkVW~BCbZ)3`2}khIQ1be^s3M4X^7Ny zs9ARX{Em)@nuSkQ|I-e0Y-YNSBQnwcb0kdbS0&B!`$MwQ_ce8|R<)g^4<3it*wxwz z=r0_rX32V|`l&HaT&Vus)@TdciI9>V-C?T|abw|Pj}x29kh;36Ftifx`RX}^n#^MX zHeQnU6n@#$Q}Sib)Rp7ZUhipLVOZ0^nhEc=n!oH}q!m7!L^z%=Nr-s;i9$W#5o6tL zt@*Nt5tfuq0-6}tv{N&`Ebx7JRXihHEtaS`Jvi8O%bmYy(5G{c3mzZL!m|Un2A}d2 zSc|X(+na#vm0b=tA8q6$1AO@sLBafkA?(hFW;_E63_?LC;0a1F#>Eqg+zN0{4Dthz zc^=oIL2bG2{9urE!BdoRNGr#3vw}gc*Ds1C{O%&86($r9R*^11B^T>zV??UW{O>N15LW2f@5DVTm?>0=VViGOKnol-3H9e`liGxE z>__7p!-~g(#_Mvm^n~e-N=zK?nmULFwK8}b@?p<)R`yinnH+R2$3l!Lr54-WdKaez z9ThGS+>B4NG`Jaia@H*%k0ZXV#i8U_d1FDi z$`JSD)Z|wnbmhkmX;Fcwzoc_%F9qogP6n`%?w3ClPKe1IF5BsKMd- zuEWFQEId>$Q}{r>{Z8^hklX-Xrr?5nPdG@+`v+(vZUG|55R7#f>y9%MawZ9B#x{1d!tjPX+M}rX0I6=OTo+G7jXp!kZ9z zlEm>XIalEJp>hB@E{D7H--7o8InL)sjoFs|@v0)55zRwe`X?&#n@;jBkUT`cLXPu2 z>Lg!rl5c}lWh&%2pAT9UsgUD*V+^U0ZrG7Z5Heo)u)u%8C!Bl_Qv$Z0Gq%Qw^ZCkW5Rxymcz0sO*HM1vbj3@DXGG`OLJLr@fOpK^y1YfVu^ zgB$u6Ljm=vWGFG*RGLDA3v$r;DOkCAp7T(Ww-kS#ykYU~eH0k%Sb0E$%UOyD`)3}| z;Bx9gWTCI*0Szvv9R&MO-ls6Q27d~QfEop%BN+G!%7@NC$N{H-XmCRp8A_qS1^*6` zhCu$Cxs?b!9#yY3h~^IR6r&99HnI!53$rUgL4)PJN^uI~HQfUSN8rL@R$(#ZmckFZ zE_fP(2KeH2!6pP<@I}?0Rs?|y@#peH@$Y>Re}v|W-7kI*1`mnQT!n9g;JpRVT!q;f z4pjVzmO_prDqh~=ZV zp{x8?i1)z65qjKCJZU4W@@IuI8KKet4QL$h z3hYyXi~5JVJa?+VtJAWXHsS@z`x-)3j$x2Mo?H&=<=bI6uxh&yGGVwYuN)+Lq}H6J zq-Mj8pwx*7wUl>0$dOQ_EO^)Q9+3R#rK`@xf!Q?*_*!dVs~wNhN#rgCF@}USnlJEZ z^ShScgj^ojovsE~EXUlW92G1kg8Z%qUOUzpX69R3*YeLWbF<5JB#NVH=xVN3WsEg1 zab3&RvN(#J?HUIuj+Tt%s)#j~Z+bb^a4kOuhkt#7pmo%p;1nF^a)puVavjZ$9Uxhc zqo0e%t=yl3$a0OOD!zzxEx!yIxP`;jsia-wv9#M_lO!MDgo#Lcfz|J#;)!#R^#mwU zyVklVEkkMzSPD|gns6>+uTi*1wT3m4<LuB&vEy#m-vK_mDKj<@q6t+k@f?UCl$yV6TcBYKD7N+R*zT z^EXlF8~T`y%EcB|l%-m6HJXQ$MNaFCGpI7iV$q}bDu+WxFU8mbN1!j#%*Hq!buwgE z#D!*|a78me`4>LhI(nrm>-;(AXI*ep%e^lY|M{0&n{Quz*&ni|+)yz4`6hz0eSgWW zTYo;`m6@-9X5Y{5-GBYojlX&I<%f~~8TdZ}m{##P_}TC$!LNjGfnN{575*xC z_D}@YciBbYW(vI%7Z+U_5}AIZqBI5)>2X4<4uklMl7ENf=Xwb`b%7!@`qX6(`gBP@ z#LM1Bt7`}}F*NDaHHwf{F`W;MP5FqVtBb@&&y{pjA9J3Vhd$MLT6fp0)f13LyPfBU zbz^;5Mk+lJNz%h}XUgIpRIH3t>j@}}E{w9X5qhB?W2K@spM8Lb#=~LV*q1o(Er#cM z1a7ez49~SC90TlNa$`Ur2|pJ8Xn5A4`fpt){GRWAgL)UwiGAslWYN@ZkPI ze}3`z_n+}^r_X$Q%kSSl6eU0#f!!vxyi`gMxbNQWd1>(t_Ye86oRKTv`O)dWC-7U* zH5YHZYwYX!IZTZ=kPxu~z;9fgt!wuP6#vVf;y1q9SePi1C)2zKO|Hr=( zux?dfZPA?0H)rnn`pMrY%w2bTq~O0^`q9Q2f6v`ndTrY;OZO8zZe(ZZ&@w)~7tMIqL(+qta{x|S% z!~1d3j)tEJPpjz+_zw7s;b{V~f6*qwESiqyH(9jBg+()pEE*p?t8g6p$>J@dLUAmP zTx4+=lZ>>;$fDUM8EMy&#aarB1|Hf&8Hr%g^ppI50Gq;_@h2<}$7FGA78Z>(vN*dG zm9)^vqTwbi8bD-m3Med^s$|h_6T{Q#WmAd zB#Snr6vmkkS)A%rAcW(bh%BCQk?I3U7M~{wi}OXY*pH+{TAF0h>=YIsDUijd45FSE zFIhByMT#_8UxpX;v;fJXIVe&z0m-6GD6DBXT(UTKk&HYLvS|AV>%WD?8I@5l=Zkib zu=v1%898$h79X{cRRu34a?V5+r&1!t`4d^3QdJ;?<2;Hi&dWrKvmvrLRjQy2w&e)x zX9z_-r!17>Ohz)&F6J4gjf_+p=90px9EC3eTUeY&lEoQZ1wuGl+hp;Hgh+8NLKded zBE`o>WHrJ|T{wc1Max52W>6-Z&VB>P9R5w`wf)l!wd1^zz7pOGJI{#G(%cSW3~W2Y zqiIP{P`DV6R%9ZNrXahnJugkQ87gZ$FYgg_uJe{zu8lrdVXoK1dwV%}^uC`TI>fqJ z^YVRLvgYS`7F_DR%yWsG_mdOg_adG3j-^*!>Sn%`@a2ykI>h?N(yA}@T!yp7yzAk& zB3;$n=mw8z)c5%mY1Dfg{KZJyh%lyieq8V4V84KLb(}W6dvPUYS-aRVTz}8c!@p{0 z9I5M{65x!Bf<9rd-BP`&j$`0`VE8$%OvJ)BE^_Lgyb>#^!jrIVb8=+|mg}`gyC=ti z&X(f4G2EDugm(6RKP6*FlB?G{Dkpyo)kwc6AjO;5cuRi_HMKX`0Q6qGNB$px-uvgk zvomWhlV9v({V{F=25kp0X1GZzs&ZLRd$hGJY*>1kFDTr>;_5I6t&f5Uvy`E}tewqHx z4c)9MCIOWT7l!d=(rDKPO$)>j2vpoGvjYV)(6J`Zux#u0G%HrBTCWBksvKKRr%C&V zAHhLEvClh##EjMGNYVaE9}FKf4yLqES}r2Tjq>7aKU0dm!?Krnhh|^w_4=Oj4rvBC z$Lr1ZUFpZqj5p}}lBd8s*!>@_X77ybeIA#0c((h_3-9z! zLLFyjFZT}rvUkK?Ue{N>*4@bPBkwTZC0Up7Nx}!UK}QI}-ezIOT@V<|hAjoJ@vKNcdym&FvAnRp5OeH1{qr zAL)G}hmS^G&;1LAzY{d~JsA2jkvkXocH3?I2TQNmG> zTg`_YsK>+j8w#5Cv7uoh?_DT*nf@0%PBq6t`gfpBeMvt9)Ab&-0i4qJbI_)pnSLug z+vQpbzl8jz9WarywhI4z&$$KpJB7bR z_?v{!c?IP=g&z@qi|}zCRXePd^g2mjD*PJZpCtS$;m;NR3Bu=jVLMJ2{uJRCBII!( z;ElucTbxVEy(HnC68^h{=SbKl;V215NcdMAEc5?a!lxwsg@j*`@JkZbOZYhn_oE)T znR#YPSb>oGLK3c*ut`GG4m?iEjgzoMLIjF`gPx*$2=($Q_z?U^_)+kq;VF;4tmcEb z4z1N_5rZrEti%t1e+xP<`5X%#h0jN2IZjL!8P1m%N}TiL?@FBW<4YvYdGQqHMTg@4 zI*v<>b6?$!D1&kCw`!L-_gp=PcmYlj_uaAn1xV+3^AF@@oMXj)=w+Pa4#s5_=h)z; z4DxbsUjgc0fI4&0$?qtGI9I+Wyuz}FLXx{vq>e?90U$W_uB3mNbV2VtsG5pdB z+UuL%3NlsE?d1RwOrco-3gfB|mmzhXW%pBZyPA3$0ka&_w)isI)@jx2g{P+j9#TLE zyTVc61bmRQYj!s1%4FCv)E3cxbLu0Qq*t7p9U%4SIOvFtsBIWuH*Z`ko2S&qfcI0h zRiAQuV2aI%sRd!j+qRp?KEnDn5jmu(&8b^b<_>l|1-x^!wZ)|96QEDp} zpq0C$4cKz5b|9<0m)Hvw#!jI|Qw_m(WHnMQdQP+Ix!)DmdQEq~B1sFF`<0HZieA347b5%fk>gE)||-AMP<$NZ$jvk|dQQn2QJZD~1%I=e?LN6Fkd$ z$T2_NyD)fIBrKav4Crviu}YhJytGTiqGbNTD6~;@h#05QF$W#}Vo|O~e%e$Ui}Wjn zs$+E+Q-BD2UVm7WTcHEDLTkI|sDloD$BSzbtih&+XoF%V;uUU(4%$LHMaLP?0TavN zL`PaI%G;$LcZiPN@p|wOm9t?Uro^JW13Jb+@&I($owH5V)tnZK@H(ImP5Z}y+yn)SVXJOQ))70L z7#>|mqdM9|yuzPjaz*zG8nsTBq$3>$By|8kKO-IKFd#R>_&cRBC)e z+oW~n$WOUMHxUf>88*lOe&hdn{6^vphWgk^2%Wd>ls9^}-h>Xh?Uc8Aw?2u;j!kPx zRsn6WroyuWP=>$)jNlsC_Tbb*pMN_V*fzbQubK2ijGf9DFcw1u<%=VbY0xjV7d;NP zr9kiarUckn@ty7o=@9^-)E!2qizs-96T-*MG7ur|N(N#INab*HXLUrQ9c`IOWm2xz zm#*j@!5{1w*v$!91_Ug@g$p&}t$Da>5#OF?0$LVLJR=J1%cf7)l}DAa&UlujCQHyflP0LJ4+WgZq%kSv8iFKHrfeuF}N>ng)W(FGc8SA$q$7IqP2^}S|E;BP}5v{{H zP9!RtIxUlSab610kqUP(cE%^fPrf6Hu7s=?@K#GlJU~9nC`HKU5qse6t}2Cb$GI(^ z8Sqioso3c5d{k&d_0!M=7U%Wmv2D6%LM(GLJnd$BI?lsWIlO~X&p4h#I_JoAo8Wm+ z=D?VDN{YG*4xOq$#H|oK7bS&5H8m?v2?2CRVU^CpM^&eU#$j6BzGmXADIg{tGxews z^u5v8w@lL=`UgjuOQA8iSvr3s{dhCcu`XGJ>N*8rduf33j8;)1JgJkbW4$0>D)EATxGacV`BrD5&D zogIxWl3uOi3K}I5J0$+H%8EhYsd60nj_SopxV_=5NEk?ac0}VPoodM`&#;_X!)a@k zhwNAe6>jfo12U>P+vj#Qbk25{*97aBD^4qZBP5;jl_jjlfgwT~I+3ok0-IA3vSuiQjvuRH_om7fglRgetr zRcM3uDl*Vs#c^n_K{05r623Mm)zDspHMG}|IJ8%p6WVL24cZGZUvcEIBNCv!fIVTL zy@n@1dl{%Nh354sJG56Q5oId|?KKjRSTSfX>v2q!^_wY=3zf$UA@eryVo)xX#D@e~ zx8V;jbg&kDkk`$n2R0zA7r}P`VdX&A6=W(Ptk)PL5Z0d%*$8idur5RVZFtuP&vpcX zcNzCzi+`@2bQcD(oEpG2xm4vk5^fT|5&O!Mho$P4FRvT_g?YXBFSk?;xFb9J zQ~9nRAlx(*s8`&4sQ^%(A*T#G0sc*Ma`vGO%d+9~0kHG~LlgjD={^ugqpbu3>z7V4 zmd_8pS-x0KO%hw=`*?p=7GSF7{VR%9fLZq;0#*+94zGn*fLT`}LTLq@=ytO2uP2cQA7h^ulkQ|GFN+6;0tNde5_hu|H6Swp~JV<^C^`Gx>s zR>4^y9%2drv%Y{(VPpX?tKfSe{>}sdW?hRnoGLp3vu*@Yj*2S4EH2|^TMA&-c0^~O zEd?;^yH4^!kUT^I%)%ZGJNZW^>4F+nrUuL!WJnE|HN}t`Fw1`rYC09(R~ej%0DxJ9 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

    hvWdPQw_07W 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

    pH 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%0A6!Jo)y}9;7xNOva=P;s&?e}5 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

    awRv1#+&x?E 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

    Ox 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

    *kRU%c})Dr`}j+GH=F@FD(KZ14Hc9hSGVjEJ; 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⁣ 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

    }m7*{Ma(J1&EP*qWNk_oM3 zv!f55=0P+0C^#2bBH@#baDO`dcsl$_I`pP=RmMPW!5%_2(yKBCatpo>RGn8XHky+K zINiX<2%VwOIsII$PYKrq`D&x4_!S~}Wq)5kZ4yq@gjQ5yjCF;jZkHa4* zNl4%mcq?Z42B@Ehq1u}@iHYL%0A2C3j_NA@rstpBRs22AU)fdgFn-MoXXy@>Q}9a< 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%0A0)jKatt}KP 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%0Db{2Q-`^x@wK15 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

    $cy00dhOG z%!IML7Fb^;n8dLQ&6}AY&@0t`SU+RY@gM!le)J=Y=u75fr&pEp^=*suej0LY?YxEm zfW|zJMS50H%MLH?N6+#H^3{mH=eMkB8T;SlgmwO8y|L|Mwi&7U8Dl*#If5(X7ExQy1{1FmG^sEcXp^ zDDJ4<4b8&5z~r{L)U!bW$<)vNhMO?6Ir~`!1oNS*XOvd0=8I#GGOvhN^V+$`FmG79 zglqb0SePf#Fgs>WqzF2=38dV)O0f@>SIU8MqpzPMgAK z6NFiWOr18ZiZ7H~o7cFs{bU+~8c)4uikFN#|I}+t8^^Nd>mx-!E0U`Vp7a^IXcsgQ@4!DWExR}%F<}&|kQ$YLuB;uSO`%Mdk zD(imD0>O$Z=GzpP<$icVn7W&HF~+V}Cw2)N71EoxLkGkk|_ZZ#oks+d&Bj5;jE1!GNbG zCu|U3f!VWW2nw}5G&5meXbhE@In&_M@^4^J`z1^#qnSj{#;0rvqeEkgAWiHTBM**j zfQ+2kp}`gs*JKes)Il?8!r38ZT4QD+Oe$9TfthD&8tO;&h9pN z4PdQ`=GZ3sW-E6SazwBkkU1BcO+^DzD>{8y3RMf~%~AA)xPdC`&={ZlKqAGw|IUq$Xkc)Vb|L$u^X ze+wtQyO2}+<~_rTkUoY$VBAH^wOuw(Z=s`SWhhX+pV4nw0)^kyr^X4T$9$gxkf z`_u3?ASYV+ie69rcIa&4?}Y|Sc86%ii(ZW@B)=wn9#us`tM+?di_=OTVSt>K0y32F5KVy;zjf1&BUK3 z{(0zUeet5V+W2q^{R|q6hKPRAcjHvgHsrRDPe0`J7ECj8qE!#k4aDET-Tn>w|7z$O z;zcW7bS3e+4i}NW4tg2!-gPNjUq}^@58qJj-G>}+`R!f=Z#HtGrAIVawB|aRh|g1) z`XYRlZv^Q!BUeqjQSic~6RmWj^Q>GSB)zMy$ z(qH$%dlEU(9NYHs_hsUrMo&sAn8?syBwjSfHql?eNza4GsokGM&sKO_kn_%i=zECQ zbv6P$pN77hc<;IseJ4(O*ks;28$J8cvmRa>a-uo5t>^D%;?<9_d$_v+x|(>eUyELj zlb#!pyPR|f(X$NR668d4Y+J_PbmBLlX99X=Lr)=IG{-j4A0}Sc{n}Yz4@2{GEpmN` zF2r3#K0}ckExq(}`jI~E+hJ(*i0(uDdh}M3PY!ej@uE4liB2J2xImvKy*Ahqh!@SV zO*G}yOgLDKKY}f(NtQ0MwDM4V*wWG|TKid&PqH+gq2)7-1@rOK@bmC5B&c-o4EF7C ze7hfJuxb_0Elf`)Ny1c(be^wrFry2Ow!X?ETKeUOt*?AUD&{7sgBujOyF{0)}B-tyO3ew*dDT7Hw|*I9mz zktG&Kp z{U+*Aw)gYjP>t>(Q7Ywq}eY*_QDYe_4<<|ukBqwqn(<)jsM@;<`%*|6@P zKel1r1IOC1?$6sOx8ya)*E~sOkX`Rt){A8FRxC_5J|o~0Bk>%!zl!D?f-bgYm+FK>URgJ2KX z!v0#E6Rz-C5>T4y^GX*k^-2;W?jpi=tW_5xUDYW@ta}{cuEe71VlaebL|u^1o}hL8 z;)PKg>0KcQ$B23-)ibf)B`$7E3S(DeUc@UFnn$Gy0R*L_U7nhWd0nI#8m9upnXm8E$DAI7ocZd&PB$3 z?>M=puXz36vmEqZ(R0sU`=;88?kzUewsvbD={?#{ieljUdv631rQ2+5_wF{nLvQX@ zF6JC}D}|XA&x}=1GT1aSMyfD;)lI!ngvA(xB+-*hX(t0*-Rqm-x1C7NT_FX73w-g! zaP&AEF7UWZFPS*Oh%Za=M&WB3xgHy91<|~!zN*=--)kXnt?*joJ9Z zWN^YReT0QXSI0X{V)ap-e2K^nw1Ve?5Bzm*#7eLG@uQdVcA?S+o%Ql`oDCmX>7QZF zvRsAt9k3$D+3kE*oRc9WjQBnTyUq`p7wyqdRQhd(ojjHi>r$RsNT{ zJhwe#`wEv+{o!(Sba$K$+xIh8#}z&5Fzr#RN6Nyp1*dK*to;8fBezL{6`#Lx?>(I_h|hf$nYi8wZ;|1O< z%td-l*q_{lJL%{S+xPdp-KX!J?;GmsILNuxSj^E$M|ar1zaHWy_|$0E_x<~HU|F@U zYN@W376dxBhjbioR9AD7su2?gs(0=WBcwzhpyWt=!hhOru#+?ub-M1 z{NQ#h$1Zdf!@t4m2=j?Xyqh|r($mo$w(kjaBq#Bl#MWgJI_$k6qGLEZ-3!pY;VVM> zE2YTlzP`2CeKVLXfe5xQD$TX56uM<_Np^b_NArx4(J4|pE5GyDzALKKI6bt<|I^sM zyPk*xzqPpi2PGhG28!D!EyRyv`?gP?0^I@IH~9FJlhrONX?xmLQCwe;WoyDqirYt+ zG(z=#>3DJb38Ptvp~BidbLs~^RNQ?A6?fM&!b2VN2PgfjZ)XM@{}dm5q%8Q(@q0Gz z>Q|Pysq9GR%7JC4z^T3JNKtBNQ^IG?oZ5c;$|ITA-&yu4!(Viy=u^dIL(skD_^c!2 zzVel_5+pAvOMIxfy}6k3JKs2V=u>SVj9xOosPr4he)G9~r-Qrp9NYhZFkcg2DsJCk zP>S0qaoh0`hjNc)ro3=EbN%b5vvE0F&z!0|UVJ1ob-gMGWJX73$uqbJ#15@6s7HCClQMHBIXV3w70h5!NY&K!G@2&HGVU`*blX zTN&g5@rv5#x7d|z@)@2G2hG~9KzO4rN~B;TjnUWeS`Rp~a4pD{<1d+5SmXh6u4yzV zrN}il7pw)wa*_ciboJ32NdqOon1(HFibENPdBD33_3iAX6!Pm0Z|Rm}}9 zhG*O8H3nDI)crOeDy#5WRh4MPW;a%#*fvR5c$y%kc51Nq1jpIAS%jMli79zON-p%(2}DaDWr)b;UQ7&mYt5HH-g^i?iR*FCfcQIb+9QzD zp>ka*itLQ>|Nvf z{g6SlLh zGKbbT+YtQ8=)PH8@zg^2FK85)TwRskqMjmfFxFha-0<%rigD*596<>?k6v~jy{zIq zdYR@KwG3;(1voNvU)2UM1z+9GZd?(;EQoTN+;0{XS>6iZ!E#V2T0AuG7J*{xlLn*6 zO=NU)A3@q_U35wx6>|mLXDjZ+-<$j_FRxg+qFE!bne8v2 zD${10$-2`aYFaa6bw}nDp%!)!EU9a%DF;^J%7)75_~KNoVvoK7v@Sg@)yymw?8|G2 zh2X88M=$$FqL;0JdPoB`c7c>LRn`xJg7PS*}UuYU}T+b>#*OLiHW%GS;ulxN{xPU-FV1 zMdYAu;2^U1MGdmFksEB&86w;nYGg*1hjuc=MLQ8R319kjmh|L?S@aPXJtY?EWO(Of zeyEce1Qq8mJpR;9kK5JsRBDu=uw#SoLXBuQF7B(4GF%o21Viz955osF@+$losF46E z?i15Mjr>+2L5&VoxlZ>g7@O3s4oYSKhM8jl8?_!&B99zrb$&GOc;y=$ZC3uuz!r+X+Zv1_@@tFxGFHCw0+dww+bCUoR_&&tr zY(VCQFgO{P^sl1_ zL;gsyE|5h4 z8z76>Y&lY?#LKAApK;l;H+lyFl_Og~7JC1{5CXE;1EIQSyFeDt5e!qiY!}F44nZ|V z_9dnzSH_a}dgMeC%eS4*w$WDEpm{2fy0A}Anzu)5Z)8)b-L`3qR2>y;hV#NhHiPz>FAy`CG zgJ+SGO{74044y@f-mtF_bz|JHw46y$4We#RHp!O})MpBbW0K1V{+(dTpj5qxA4*DI z0%s7x#EHo&`zT!MpyW3wgvOu5*(SA`6FiHLA)6am43X65X8v{3Xp%m6MZ!TRwMDYQ zzn@C`?sn<{bAZ zEG1{>ob)JzXOXOd^Lwz;(hbx|D4kLS(|vdr+^tNdjal2POor(c}czUa>n3qgWXGb7C9vzW$-MLcM@?itc*W_z(oOqrd&%2 zrey`cM`Y*@u`|K5_&Jn%RcMpp`0yvTz|dVJQ+O81XONSL!>nz|DO}A$nCY`RS*90n zCfNJRV1I%sGSwIe4ks8oNHC|bPv09bRHeS)S@aU-3NKtZef!t+k`Y4_9#GROlcXjL zp2Yydx*85l>X9-h9+x!5BaJz0$Mmu)cxk;%- z1zcVrp+C_BlbBD5-y2{2LE9}u#NbE$#8-TTGhnx+yo6{>o{z@7K+28A3rK%nAh^bvBKb`c6j1;M;G+anCMX=QIz$Xg(>cuR#I%JuNJf>E zv3zsxPjX$= z@uxQ?KRKE>&GQ(`O<9z`r_-;4=uSG+Hl9pB;>X~!CCDLtenZ2O6<=jhdvcOZOVg+I zRiSBLy%wf7EhXCrpSK=Om^T-V;cvYjHU!5oXWDTTzKre4*sl!m%DAr#@XDC34F1Z9 zungzQ@UD#O%6P7f^~wOSj0(%huMG6caIlO7%kZuY`pTHFjQ7geuZ#xE;IP_C#(`zX zSB8mYSXjn~WuRC_ePyIqhJbNzI5lb(ZUj!BlIiBY6xWQq3x^pD=PNkPC0@oI#+|~Y z(BK1cMYyRr8IP^St;78@?hCjlaQkupj{6HvpW*>p>0E--?M85YfYk?)Jg!Tc>4dd=N|Hs%2?)Cze)*mZiy`SaYK7 zrRlL)nl9KJHE9$}^BK$1JWDK1;w;NE!mOp0W$B(SDc#_0j+&Z?rFn{FX>K5vmQyyN zauUnjVDLG#wiZjv?R+uZB8sKyu1%Jf64B`CcC{$;#t- z+nhZ-ne%rkeSlitT2XVBmmxn8LzsGtsqkFvS#p!`*|UU-+Oy;?;=Mf8y**3rf-&|i zp}VtZ$tt#^JxjxiwPy({lB;R2;qfmym@Ldm zKyYSgM8Y>iSu;Ypv#lq>=mIw@hPZ_Uwx-SGedpjZ$TF}8M6|`hx(R6WWqsSlTC>K>g`EOLL*ZGaXH-l zslXSo0j76hzaH=G{vr(K2s=b`Y!j_VdMwE5*CMC)Xb&Q{9$qVQq9rH#CLB+m>Uqew zcRRD8GUTp<$J4vujPzdlMc;q}ZL0nnhO=1cU@(2ob|8Bq1V3&>0c}fd~PD0Tq*wOqgg$ViJ%b zYKT}-u#L~+14K((vDTtu>kFkV?Psm;B0lQZQcGLp5ir^$J_`5$-)EnhGm}X|dw;jR z-@TsSth4u8d+oK~kF)olwVNP!Ho~DZ_Got!$MZ08d=Nj!|GZ8`IGnR#Ib$brJOLeD zT;TjQ{Br_{dE`#wbSFL)U_mx!z{E#-3}q5`OPn%^^CO(@4vE7MI897$h0Yx`7on32 zALv3S7vd&#a$znjbaK(1{^`yrK&F^-BDx|*G-*NaA#j?{0;j)S(tK2!J7A)T+uC3< zew(Ga1}22snqbm@Jxuf^wn|AalXR9N=|wPEjS6AX-)!lgC+QwZpC;+dFY;$gdWNLC zU@|^1xQJon?d9bAo;11LM0}<+xmQIzMw%#pdKURex*Ir6BfK<;50&ODB#!P}7@3R$ zpuQhIw@5qZ^h>3k^LeyiB@P+Mv;Xf%JJ0;HU6Ic7>igk`_V;1`p0xAadOmpg;m`jE zpp6K9bm<89dI znCNRwbh;ZnR;0_YpEU9BG}(=hQwG4Bjtu^DO!ntY_Loe4?IwE!H8*{$)QLP8gr4Wp zb!ZrxI3f=*5d!Xou@C(^5hHU(igwP_XSl|l$o?WHxG&zI(wv|IqR9NcE92>tKNvuW zR-VXy`d7~r(O-JVk-kW(dh{cj;d*W6E#k@5(tqlY5;#4Me}Pq*l;UIo5vR}tT4ic# zR;vmgeSDc}G)uZIiB5J(sEi7W$x;+*e!S3soG_@1Z0fnz|KP=%?{OuSvG9r^GFufL;?2&&$XJEh~c#nHd>V$e1|=icJJ( zP_KzN#f!g{mDkLurb6^0oHh0})XFlgW7iW=zX`8?SKNA^#H*VkJ!=t9-ULsRECkF` z#B(P4P3D1<{@L$s$KZu77^8*KLW56#`c3G+9AiNP<7#@)H3pvk^qcI0e~yd$G2qkR z(CNAv5CBVm`c0@a4#S9YNXkfq45KeMejb)GG9W`AEe#2bhiEE|z3DeO zCgb74q={*%55|K@6pu+42h|)vX7S7=#fB^9l#p>Q&_qtWOiyT@>hb7JzsXQeQs8%* zjK>-o4-CEG@xWid8XF_&CK(PHV<5xRe>{5CO_B#0m5||=@u2P+4C^6}DL*3WCV3Px zSg&6@gLw3&n}k=dGe7prcbgXQV}hN-*3j%d2bCs0yQ|?%I0l!074dN@J zZ@Kw%eZt@kE*VHtl z%4b4D#U!Y-IS=MIH?A73PcyZN^aj*>+3H0c(i@<^B}Byd=}@wA1~Pj0o_!|X1JyKQ z44`zUpHu|uO+^2h(CE{TfM9FwJtdR-&k0>j?;@u3pBtw3(z~3@tp4*PSouY!h+a{z zB+KzX=YOJ>EDx_G%TY^0W%OT7bRl|*BKq$qXLSF;dJ<7aKbZm210@rCbES7Y79h#*OkARU!;d*u5}H9h3jv$ zw*Z(dnKa?ICW3#dze=P5?DF|H>7ME{1O9a#RK1D)Mi-S&S2QJ>Vt!3^{p`Ai>i?&8 zQT0|8LUmG2UNc!vbQhIFjT6*4>H9r_lR{zWH`=N6JCBtb+{uBF8!xKS;Z4nr*g5k_ zEoO^^9WJ~PStyvQ@9h^(QyveH*8t^{X$$S<#8*AzVR|Bb??zWz1wjl!mX^-m?= zC~WGhUQOyrN7dlAzCMqmrPn zVOa+-D+%Iw%gsH?X#aoSCiMJ)T6>n?o z7QAh-KfzmzeG6}U>}PlzN`iP4mP&#K!Bk_i;XjP93*9`wMEHovfMp2sYJkwq^F3I|Ep+ox9gje$o96(K ztvCT7b@Lnp`dxt3%~OZiF@{n%&+Vb;69%g5=Al0J^T@30=J|6d+8v7WguRJ*luS;d zuA3(l=wZf6*Ugg))I-U-Zk|8_blp4);5wJC9;DmiXal;QsMO7K7SbJ}n}>fOXZnS1 zo&^R%-8|O-`7gRaH_v@Ae@8oY^ZXo^uZTc5&*L~VA-q#J56^xNM?{5gp0i1&N*&B+!3zSKex_SN@ik=EZT@WL})OGWu7^tqB=VAkux_R~@rXB!v^UQ<+ z-8}q*x9euSpqu9pFrK0{!S-hu@sz6!V&m(CjdfTwHyh7}P&dy(P(852Wzb(?_X@jh z5dT`P+Z}`c0XzP>0iKva{2Mm@RsuV9^R&YSx_K@E0lIlEgE6EOFU7`s8g&({0|>fq zo;XHu{LK|H-4+Z^&n68`WDOeMUPK??E!wrCLo-`QH&GRM< zCIGs57~evG)Xl?Y58XWUT}FoKHvaj4nA(iDW6);22csOAaK=ivLpRSoK%krFT)0tb z5p?s=pl%-O54aO#T{q7$0~5M=sAEUC3Eezj8<^0|V}T#xCUo<}8<^0|Gt|I>x_Ov# z=;nC@F4`o#LUi*`jXx`v(9LrdEUceGHxD%?jYC}#x_LGNVbSZlc|HR+8vxxrG^m?r zK1}vox^5o+|65?XZl2L_SPT+$^DKiQb@Na)0d(`^z)|}i$<)nL2#mE#drDADx^$ig zf#ZO#n}=F=_`iMV=AkOF>j2Qrvl#{fx_S8D3g;HQRNI4iYhU6OqMOHtR?j2}-8=yu zJkZVKhJ&G-C(E!yH_vp~*+Qjmp4kSf>*iSil-VV9^DH$`T{jO;Gz(X$n}@aR7SN!Z zhne$xT6Nt#9Gak;rwA0S4xN+G&9fYs$d#J}#iX0Z$Q4~T5A~n@04#=XovOATsj5&B#F$q9p%SVunXZjQTG~gl--xJcEKK%7<>A zkA

    Zg#qzeN_784do&ngFpm+VyHGPc@w4sjPgA&=>Xk4d7uX*TLjlwti+RR5=@;- zy9!)x2vWpcvSb_3m${aIkIIf&>gMSHg+ryTo2LudUSd)Y&TnD=ntl>&Z^7!+?{GJC z3qXoO0E2i?Q1FS;6Q-_yC9dSjJNBN+xQ6O(@<8W7=Sl!)JmgOU@DVYC*@|HJ9A~I7 z4crJ*4E3vbpF{eM*&6ynEr8qe?=9I?fD%CsE&r|{%2Lv{Qs(ohI3!m4R)OJ@H6`w zk~p7|Bu)oO;v`h+*f8|Qu+x%U>{!Uf>5?RIBtz{Jg9b<(d!b9^QN2yIA0)%Bef)Pz$S@3tn|o9Hc6ay%YccK z#4iZRWi%s`=9bUkO0Eik^vD5}B#x$%#90$bdtu5*a7sWDCkT>DOrk(yXCy=9jDuX9 zgrvg6!*Prx4sVi+V-!h$hACxnh$D$3pXA~v21zD`HJr+l#JQ97$l-$|jwh1DxeiI3 zJ4sm{>5(Bzl3Q|d@*_!{R?s77B9g=bnIwKmND_xIk~p5p5IGW)#9>*II24k^uLtRo z69tkuJf^~=6*x&-0g}Xt7)gwb^vG!%eugR<&H|+i=PGnLtjCzM7#Tiil@!Ctreqf5 z07x7kB#BcJa&e9#J#tn<5+^%GD2u$aNh0tucfTf8G$gZ^R26kyTuf|$jb1o{twvT@ zlwxMgH+p8i(KA!3|94^1zeSfz?+b<0S@MmZnZoMj4LBJ-No*@#Ti0-P!Z zGZ+2G^zZatX5Z+U`Iq&~^tl55jlLP*46$7g%`W(?%f0mfsJ@xrj+r2EjJ9WVDokg^ zw>2jMiuG<)S3wg)6*TG#mKcn-`lJ>A4PHq-6Zn(i%5<3c+7Wt3c&=?jbWraIaXb&F z;WY?)NBCdVui?)BQ^C(p;&=jjNBE!Fci_(10wxVRiPN1prW%}}U=kvx4ZXN5c7^)oHNfC!VWKcG3*` z7{tf0Q(uQ+Uv0Ag2}FZVT_J`&f(nX&?u&rZiGq2HioNr4XO@O*g6Oj|k)p#@V4R7c zpyGz0W{AH1^{ye}jQj-y4AB(Px8KMbFM4a$5pvpS;=Oy3x*eME$0C!ih~AU3~rpS-t3M zm;${GQw48OU&E!k;5ZR zGEA%zNzZ>YZ zk@^ST<~@2}3XLFMH83~B|6_8&NKv zcn$H$0FJIKJRX(hP31yvcv>dl|J`YD$v9V+QTTEoErOpfBObl!WhjOWcG^p%jLndt z>b}F{QH{Sq3YYMBEP;$dxLhG+=-xx${prit0U7)pe-tvzPiUT2RN;U7I5MhpgvaA? zEFZSPY1ddiKki0aFwTZN{pri_Ktb3+_{bZl=S%8dp+~GA8KHVA+^iSK#MJS6JVHE6 zM3zghIwst1UDrkGgizn1`4On65%ojNf{gbNkGcKJ=v7aJJ4IgvNyWs5VSm0CZCzFn zBW5^NiYi)BS6)+!^N`}d`yp-4fl68idJHBFl(FMCdcVQ$!gyqU;AY9Dx|-_7rtq@$ zLk7E)8Y$x#WKb4lgx6D%r;%jTLk8=5la%o_WXPnLWc01;q6sqSXANZZ_VlOgVwIH9 z+@}mtw!P}QSPdBtL||=C8K$)Kt?S|j$an&6rnRRGX03So({(W+ANoh^=z|s-J_2SB z8NKPc=tk#p0Se~pB>}&NrH72(bX{cPK+x}zmh+bBUTv@HIwyejkkOm2ix`Y;Z^47> zIwSaiX_C>mu8WT#V+{)C;2FqZ2{Q!L^%CzwWTbqG*I<4M`;rX?C16I5M+99Lj%Iz~ zGv?-iU&GQvMsK<<+$mmVi#r76G9y>N0!3RuJJZfu78=F@yud6AohhCQO zw!aTDIOl%_G6J4}quK=?qn=jrSU9NRd3vx#QQVj-9Fj72ysqnL0c${{A){A)87Pk% zq4dJmrUyIW%|QPVkZ}&2^ahBG!$Svt;}n5+3(WchNK0a`=CIsgj*#w43i1m23dc)1eT2if{8M^2BIFBY z7z=J9E)n8-iLa@=rjK}-a=-U{%b(|K;_{;*Cqg)je7N_xx~W;j14BckJPQfS+quLI zO&f~0BSmP~Sd#}08-ADnbXUjAyPmQ9WWz3R=kUxI{nX0g?VNHBOszTZ`aDaU!*6Zt z_K)?eZI(xsyH9t0c*2%n^Q5Y?+id<+tzhwySL*P!jqR&~KuPlHm z%F5euXCv%Z#UJOtF3*CRGR!|2ZJ|c^x(aD@i@aZ6-JJJ!x3YaG8=w&m@( ztAY4h#ONg(l>NQ;xwHit+%-Swc5 zvE{gyUs3%?wYQ_A2y#UGLjKD5S=t)iDr%c@@9C}$$E~PYEyr1AHypRYzV^6=_nPB& zyqgfxQ$m8doK{=(7_*!z!I4xBTy4&a^Osj|Trf7jtXeO(D<$9Qt|D-Ci`vzk7YiS3Y|qedZTQ;(Nbw=6x~ z<%a2jIUGJ6Me|SIK>1iIV%;mNR_|0&a2N!=LJZs+iqz3`WtzMlAJ1S+6lhe6E{X^5 z0MWYk96sqe-Szp4v#U>cefpvY@Aenj-Y)63-F~-dZ!VE9-i{x5;a{|xL3b9yvO2`cenrC`DwfB%fz?c zd0UUiJ3W5SvG{0%8uj+9&Lp=kNkRYiR=2HX9kz=zuyG6-vJsu-u+Wq;* z;;%M*kAIu|TaU*&XCI5-WKi92`_XIDf9tWW$1P5?569bEk6S~y$G_$6cr8PZfj*x3 zkBvGwt8;@0*V8fC=+!#DUT*YiHqonTZHn98=FVT6H{cEjdbPr1QEfKl&+KDSs9$-< z5_c`@wrx7Or|lW_C*F>-OdE4dEkmhCp})ySe&q$iEvw#hxDBN;R+P#ZQ7WTfq|c4J zkO!hi@^mb)G_!}bpbx9ycmTWAatC@?uk{XPl~CQ8oJ`C%$#+ScT)%iDyp*NxQu8Xy&%{QTAc?9>vJtF+%$0Xn(qEvv9fXC`Pf4 zEdf95Q(A<}x}zLPjtH08o!*6O@NW7n+IF72y z?9PMUmg7oN%W>7ow13#GWVlbbkRMq`^}I-j`L1{4jM%rm9aCl8?f#~N-j4J@N^S;r zQbAaXr?Xbf3XFN2w`07B1N&L0NUI(B)_tC+Z<;dUdi1jAU?y|A>&qjp`Alo)5pTz% zQr4IdSdnu}-+Fw|ZKu25ft)I(tNj%x zMj}LT0eirkkt9@_M+C0mh1MXMbmgFn^*qWKzKlFN-L(#3l!^4{eN*O>=L}Wd?C0x`DDJc}Z%2NJt1VA;bM99L zS9h5{mt_qaF1a*+`O<>tJe@5fJW)TvJ?BXIQoT&`j(9pd>lL;q^pc9-o!53;akd>- zlN2}V$NFTI$ zfEgHLPj|UQdBq)J+7mLm;bF@vpSyeQnsgKVxTASk2ZP|Mf4;p zdJ+qI66>8d^dujDqKP^BA3ov8`Qaz_T`gj6#h-cLN8Ck2h8($?c~x1omIuZ+bE^{C<)`j$;_J^qR90d1>&+kh=Y z54N0ewRq$_b?=EHN)IyN37fHP_9@o4Azc1Kc6dz3TgASg~yk~X$0&Rg5n zBoh1uoLonC(~bM3j)E$6dT9C>KXZtL8qT&l-J$%Lcx1ygBadc94{j34wHojax%iGbez$fyus5?ce zpJmjD2lXD`R3lbf`>GM|AJ%Kc{==*h?;JL21ir|$)?KZrg@5oc98bsI8RC1u;^{2( zt`%PfcK?Uni5bm#E{r?(V@C7TVNYkJ;AZ=Qn}Yryw7t57&gb>o+PQlM)9mSdA{VBW zW7pce>(Hj)qii^24fao7(y-*3r5TX9@$mf5ThW>}9G=~=4`vJGZItr9%+$Y7n$e#z zv?xF4SM`Tg#QINYXIFuDg5ZU#i>=nN#5M}wf1o=&`0{gzly#%$ECFr>vULD~d`vYo(cC8qj49ghTDPIrwt%vr21O&P7r z8-7@GW0dFjA0$r=_+&~j`vWai&=@P`XB*OHIn1y(F7iYZ3v#U?x z``?52iI)|3{VZb!Xv=rypX&PS2~X#xnTWfX`+k4v_64W9K048YQRGzD`*730=(nS8 zM)^;5y>Y@L>as5Tzg|YVMXjRij3T|RVII?wp;Dr!1HBOPZj|!r@EA&bt2?m`)xwN4#8~|6qPJ%J?b~t7Lz3-bdZa-Y9?WG1rCQcNgT%I2J#C zH^wT?RGn|n@fRL*{nku#papq49~p$uEYW3a^M2lK+v~yX{!~|y$jM7YPR@Cmxft3n zZbZN6={%yqCr0i=fl(<|tWpeugbd{8Me+Q4WLlc@oc>hwiDQx86u2yL(dX9V_S@KZ z4!GZr*-j?h5>I%JWkl2NIGu6(sje7-Z#b^p7Iiu!b_4nVw*CPJ{rQx1s@-~@WlMRP zyUg*p-v7j)|2es*eiqA~!1Q@U`tm!!Re>8(j*H#Xk_tL-sGoF_GT2kaMc*#rBpx@&1MW8D(l2L;JN}8#)WI zBE;~n6SZX+IDhbxr}HD>${OTZLhjcBIBS%rb8`UK-FF4?OXU}d)@d9uPj&fT!WUK_5BGG%2A24%bV+rSUz{AwfwGa6E9+_t z@Gt6sOKx4IuOUZi^g#zGRH)!`2`YinRVd^r(B)EJS6kUwT(`(qu{vU!;+P_5KwrnRGKz7DNsrg2!y!4tf) zpcYHE{<_K>Z15nDa;mCpd^y}ym?v^H$I!up%*;`6=Y<|OsE+ZiK_=B!Qvr^|P(EJd z`f8t^KI9y;Lge<0@`|fhG(ZJSr8pI`&{vrw^zh|S4O>omO})PywWh&W-sH=}jd&8ZyLd_{$RZHzgP@9C8h+RngKvP&#y>it`lPVrj>vMTgf>P_d zR)|{YE3a(!HWfqJQcihOuuKZ5-p3SJ(6JWr^{z%eU_&U@BQN|heZm{noCNs|Y9J|r zV33i)hJqGSx2mSHU_~u93>Md8zukw1UF@%JEEejA0-Bkw#T_$^m(Y>&tOx-q zTGI@3Zgp+t{3?;z4EPcsyP5z2#l^6ZLhv`$Rj~JIz%B?5Y8iL&l&?bNLcdnt=#x&l zLK_n_tohIy8~uv7ibU^9O$`ne7S})INiA5YJ3@I>L9IB9+Q^)Of~uNJ(6iWoVrM$5ojd@`?`arUIgJ_O|7B2jt<3WBKWvOGPYGSJGm3ot0XlgF#V0$!E zNs{f};3%qVtY%jn=+_JfS>b}Mqz8wn5R%PM#UmmuI$xoZsv26leC%q4CadK=x)~*m zG)s&pVZ<5egu)rU?2}|y!;rjs6ViJEsh}*7lc6_$DLiv^C153B4d52QHo#MWJ%C>V z-T-_6_#@y1AQt;oJC{1xyuAbPN(%mge3Q~<66d=Ky< z;J1Kx0LK6}9C(WX@GhDufO&vQKn-9MU>o53fX4uP03L4cnx2E_nhizPB5|4M3iC<=%1(pdJ8rWdfiOPy{FjECJy70X`k{f0NeBs-oA$9`!?!HOtL$ z5!&TeWhg0u}MCLO<)P)RQLauS}n^I@@z`h9ZY!H@hIWY)S5_px!w53SX_S zfepIWjs7OUQdcEz&q7vIO#tZKNpZo1h2}n`crauz(YM6JZH!H z!H4*dfunkghxk6=tb2Tje*m1v+4vCu0yvJ@h=+J7DkzRt2k=_p{5LNjx^D!IBNO5w zz8&~1iPHe848uW=k%0S&@Nkvs84CMP;O`kgZ|>8Ppj<$2?%$8ad2m2)?q{Jt0}7QlAEUcfX4hpc$s&kGMf=x!ByE1An>DXC#4h@bROR(NjGcIoV3Xl~tKpv=vNM zR!^Qn+jSRDzoxq2n(L=lPtH*lAd&Iw1!HJ$5-$K~g+=paOw|;cs+MLW(i5NeR#( zlr8UKK339ao9s(rH^SolVV2}s3Azzh6YL8leVvKE5%#5$emCr8 z(te+bz72LG{ySkeWHPNP;29H*{V>P+!|3;p1F!|4`~zS?2O9?%DNV+gGAWCBz_c^X z2Z1w}SJH_5~BuLCeVhC}(3OL>%I0Qt>nxETn? zEMweq!=2}r*KvYmdYD#@U7Sa@j?(R%Oa2J<>pW=TqkR@Klk-2?e*`<{inMD8oO8)%5Z03zi;Vm}3+=$jW9T(fjJ!V= zb|a4)VK?&rCfJSqUWqZu$nUcUVU8&CbtLRY9*>6I$m4Ti|MgHkPshUkJK7PS@4|i% zb`ekHK|AcMGtYqjrR4b)>`n~qq`wQhQJ#N+opWrK$=_jT89;=>{{$p}{~hqN4`4mt z0@^6h_M2#HK${lE*92No80`wsDnL7G@>>R418ChQS|w z&yD;5>_VGjyGk4bBAzYh>gI)R-So&bOc*V3m>IfN@k<)fiEiA74Sb)8CfNe~MF_|I z@Y^W({2$hvUp;?O_y@^9^)-ypiZXEqb=vnSHFIi4geV23ZgTOYxVhe^ z1nz9c=bl(n!55XUslwmWp-3t#H!Z}R5ffIdDH~e67Z+g7as^gzLlm7G(OSr|z^5VC zf`WqQ1xhtY6P!MlOE^uGWRS>AGBP)mDl-!2d;=MvOATBf(9>TSL$EBuWgz>d7Wn*{ z@)eEB)w!2&MN=T9mzLL5SB8>imp9J97QsTU3FGrRgk4{HT8$6VD(Z4=4t1U9TY)_5 z&6Vq*!WZ(>9EAej1K_JfOjhZUx}?1EYK2PKg);la1&e$uv8-8LA+`%@n}Um4y*n+g z<@#K8733Yuq>)aicl`S3&E;hg(&^vI=#I6Vbz;=ov1JK78!LAsa0~l zGb>m4yhthvrJNfiA}6lS^%inRhCaxE+|vm{QV3;+xVSw06@BSj{Ow3zHkF$KxwH6jp`ZgD&@5m z=!?W>irIdd(uBX|G;-M&u`4$0lk=37nVEnrz+^zSvN8*J7Vs?KS->X)$M@mN$-pNA z&jy|iJR5j+Hg|aNj}X7u+EQlBpI?aRuBi1@x+}2hgtcdV(@UwWTZI+-Mb)hF)s1;3 zY=zwGVC$_HuEy?%K@m&Ms7kzw08(h-r2+bF0s1Wg20f56Y(Sur^Mz&Z8T$5%+@`?w z0k~oTe-7ebd71SFU6g}?;BNz~*#M12C#A+$y8>4q81DLw5C)cuEf+)&H!`42RG>=N z8CNr4wYMj&2ipwPN2N||6(W1|Jwt4h_$nLo^i}KmwR$3Qu@#0YT8X{DMsH&?O1lBO z5vv+&niXH9%FXSgYa3ZZ&GkNf=@^ww?s8QbRwT3m%XbUQE2~#=1FHcmmAWo^-7feU zTdXyK~cvZyzkt?z9 zfqvG9t;yyZT$9c%M5R===>q&qw-H++ReHTMI#HBzb%os6T~&*n*vd>}C$6ys>!YGx z>Om@{*P@+69{Y=VNa1Q<3AStMuEnf{y_7LPa+wz0qBIuj+s$G$t*pDGycU}X4IE_Q z)4;f0S&v?=kXqX@>Q>e*^sT_3J@qwMxlfGhML&^Tg#X4F%`;b{Hlw~nO5^-0aw`q1 zY76V?>N!|9Di!6mf(R4aqIDu91S=)ehTUc?l#oIO+87&dwPKH*Rl1_Qp^{s8f-@35 z$Ul$$3kB+I0;TIExbmc+$+xn&x=G3jrIeCs5&k%PwNgs&hSi)BEC4O0C_Oui8t@eLBqL<*MFd=i8QvFgArLo8<~Dr;N2Lb6I+%(jvO`ljw$bY< zSf`Mm`O?HNaH(!7F2Mc(4v*`-Ab z=NHc}URpGB(e#WI_&(x*_t(z-5>cM?Nx$0=wW0W%QZhNYjkKhnoC4jBo~0B>qeom9XY1r+2}_ zR3S$Wml-q6Ufjbox343G%lbZWSX!E$9hPBzO6xP%dOe`XNc47gF)VcCyqMjYYDM5g zqsZ=FUBh$5kYp^jMiA4(sW%zyO(OUYA+xtQzn9d6FfI$tM7`U(q#PYynC~9vNS8%8 zS{mjjFujj}V& zI4$epXgZWBEoAy z@=KMUsr-he$!}YlrKLE14Lc9N`ASQH>q#@xfi;UT%4D%vhXowD^oIcfh`fjr;*C3E zb2$cMaR-YmO;|1r7n5xq=;xG6OiQY3QJ!MKRh)6*8XuR5^o4B$!?H~-R}pKu9wkoS z2T>lw4`Sjxeh_UiZ!XD!Mn5Jl;>_(Cxn-lQ=C+7L#1;uw1)9PZf4D3c`9|R0Zvqa@ z+4DFAg?HNln$ZW7AaW->|E4G+MZQYmTF*mB!Uldl&N$YhOarLmq^j7(C5gMpxXiBz z#ud7?2F6<5inn-(ZULD5lC(jP7W@FlQ@ZsRFy7Lwc#DVVM*#SxvD-rHV&Q}rT{{4X z0*$AH>k`<+L*~7LR74}uPR3%x^&=}T4gi>9<+R~|F2F>Z3iP5-(srP{dr4I;HDski zbcPULL}LvOnwUbO>onoIU?Ys5>ei27bn4bP@J|qa7G%Tl=vGQ;(XB=}L~j$MA{vhg zYam6>1N~fgH9U~CPmmTEq;WV}kPR>;ayHNB-0gWr7=z2Mg z2LTr4`r)s@Y?pQ;m?^;X1g*g!3A{LrwgdR%08@1A2!Dr&L!h8}8PPF8DxxtJCv!|0 zOjnB_Ef@-8gl-)JBU`slfiX?D=E2C;aRDOC9z?5E+;shyBNJT)e(z$5dh7(7o^xg^5y#P&V+i1DV zM(a}mr;fJW3Yrmvlc4i{3yU~$u2Y9YS_%N(*Ml_+*6bi^_;d%kTELYa~f&BIu{LSR)V<83>jm9 zW(ZOdjap$16f0eG1Suenq%1*NNMnky78&9ifUXv#fQMF~`vj@T;38?WAO*M%0KF_e zB#QeXK;@#5C9Hv>@BPZzbT|!CJ1qpw;G3L)Vq6JyA6>D5U0?8KiH#SYN*h$ESn+C*bAa)%gV*vslpsF++qm+V# z^U)VXje!Nx8v;Xw0$Ow`WM32=4QmXo(a{&d8f$~kl`%vi41~BexUuyP9EkjI4HSan z6I6rauQ!5e&~T8aB8CYqH~@C|Mm^5aM{mTCl^AQJA$qDa3(SKlNa8subqpC=xKz92DY>Xu3m4 zB6LtkjXEIW{~-k#1u#~I8sHdXxRWUz8BVwIPm8Vzh_p!On^{6Ov1^v0sRheMZ`Na6{< z^|%2vRX9<>xrKw97|}}Jg~LLeC$@}M)sabHQmxxTIt8#yP&KO?|247hHz<=q@sQGC zP;x*iBV`~Ca|&NxP+CYyHz>0~*-pxQgEAkKy`(f7luJQ5NXqvO$}&(CH)t4 zycJ9RIbJrKE$#qJCGG@Caf!$yi{e}a!~-ktYMu*YfKB(Y1a{oj9Jdmt61N_2HI8>H zTjCzW+ZwkQZ(H1Zcx!Rpc-!NWF@YbT#J)=5>9FIj=C~YA>fK+Z1OEcz;F0!00z& zXtr1;Mg1LJqY|NPhyK38+Y%RxDrAduqjrx6Be8LkzL@-~*L=D+%uxYAe@Q_~t6XC?FaQhvwH2O-X z+fiU5Lg&-18yIhri}I*x>X4zZi3HA}+ZbSivy2#THx!(Ha?UoeYGPLaV=axU1Ls+d zz(nY))U~k2MGd*hpnQjtwi(zKVow31`sAqH#CW}_@VkfDAAsFRw_m6+!-l9RH4(d4 z=oV*SZxTxaCOG$#a||#MpAYGl4ot}W8!<01ksF^gHx>aCIr@c~7C+>213N`*rQy$I zfxqj4iO`1-<1N=Byt6F`??GT9ycD`U2JAO1|1rdVX80RNY#*?Dn4)a@I|ytSv3o5D z@9)4w4(}uOB`^`sS1pc&Ay(8{!Fd2~iBZ7z(_flihw~7c&3T?H@e)|(0G#4VaAoKs z*cSj?OYj<2f|u&7#+wk6l|;i8lb&1;leIi%667Usf{pQy$-u?Wit|2LuO&J(iH0L4 zF`1Jb=0yze;!VEQz;G2W8ZR?~mt97G=G+gXjePDT8jhIZ$=`)3yq-<3ysled;#y;; z4Ylz@kYa}=(eT8^Cm)s^v23o%$4rQ4RlD{@#iOC9rVW_ci z8=A~O4QzO_!@!U3I&Et$VeV;!m^XyCTwal*C`Cn zX^N9A@H{|VZZz-lw5u+5TdpV+Z~S%;Yy;7g8GX~EAh6dTI7n3$=Vb73eZw-vH5Jz3 ze}r8*n{|Nqu_M3qa(6AJEC*gTSAI}dJP4HKDx@sl+Qa@eD$&U`k9K;AaeW8IurKgZ zo!jw#6LoS>tn2%*MsZbS*ask}F8=E@{xGbzgt(x5Bd!T9$WI!`ZZ~RF^4Ty4gEcCJ z<(UqQqe|3hRGs8(U>6`BQK_hS$vME>*oGH6 z5J&Ki3Ms++<`gGbpT78K%Wgoe+%?mbae^WEAcgPKB8x#C~M-i zq3C@Eii^tO%CCAx$b#w#^p`+002VejYvS9ma#~^BjHvU z9Q7UdAj?^{9LF5@dTs984c7a3DRpkbLwJ81;CQgmp~T-#$wT9VHR(POM&K)E=tW+a z;u;NGJc~7L$XP+2r$Jy~L&mD=;GY9wREA`H0Gm}!_{<<=V@OsZfK_40g+O>)76*VK zGt$(AWFW%d0#!|5I09J+iQ^4q@nqPn>R?{@EnF|1DF_Mk4Z>RZU11>C0l5(f`}H9$ zqtt|N8_0SfTMc9rke?XH=22?m&w;S_A2Lj2{%Z!BB+&POiby95^e;fyA^V057wB+U zgz6nzVY!HZm8A}&PLnT(q$W;rI4k?z{p+J#DU9yE-DHh95MF3VE(?s$I%E)m+ zPxoqH1m-c2E|e>%CAR>58m^YfDrZo*#!xMa_`Rl#!PlC;`BL&CJbgeg8xONgrxx0cCT5&I0gR?v|OHpwyTV%U(Q_AlFRA0 z9DXP4hJ%wl$I82oy>FcBCYehnq=i zNj&PfNV17f8A~_rEU6_~aG%Nmap9(F+Yyq4pP7@OjHicb!qXCZxR)_xmnUL)@4b2q z$uL7OZGvPG!!40wNFHugsU=SvF*NZhW9i0?BDG{c+}AU}ZH(c6hs5wJa}3inQSJ^d zfjq`JQu<7wgM;W&preVt$c}O%cfq)Am0kn7s91aSiZzzOian>2`Dl{AWYE84&^LlH zSiW0<1vC$zyI|;Gq>~{@wGBmw5X_tLzyf)5KDT~1Fh0pD$1=OR=nfNR zxnAhQF&r(|+nxxzLah`+;}(@#G7Ck%ovVONB1A4J1w(8#hnV#qB{Zp3Fzl8)hQ6w! zoIom5DU8FST5^QKR#Vso_rSZz^wsJyFssUWWEn2lUP8Dc&u#^0&pabjieUU37)73$ z85Ij1xhtlY#3H}a@E>=}W=KM00;7=V$jz&U$`tzGZkbwgF?><0f#nWH)%J8qy5BaZ z`}{+|inzXdhstjmC??KUzqih@^g778EhQi9wv8W|e z&=-rYMZMrcco$`}O}!j`)$EN(OU`#F<{=^GLU!YR5G_Acr_BR*E^s{OQB;)>*NUPR zW%xMa*Ru@C#JxeaWoTwpGN~CQ1`}GgK1j&oItOqzw=Ax5NP7;a#W8NdhJh3k z#TH|U9a*!6Df)>a!d3y!U>0#jC6MV8e+rM>d7S@s6#58h1@B^$8Pv|pFZ}gDksBz z`J#_8!q*Y_N`pcO%dh(NHHAL7m#LNvM>xyr>(#zuhidqJX2Yu@K8l5Yxv!~~l)?W? z^#4vEXGbH-!JPF13*_v@tSQej1NW=S6iV1Fq&xyCzo(QxgvY|R%Ix2W#~)OFIx8Of z=4Pr|au^acOsLR}@#C|voc7Yke&H(#VNyAU-ieya#UN-vLh7N*iR_Ew9DQgO_zwbH=i@c(5MHW_6BO4hSmV3#vL#0c zK1r1*PN-cKcqI+T$T{3np2+zbr<;~?d`YQ^*+9AZK-8utPBWnnHE|Zucj23^F>2xh zpdU%pr6wA&rE8*^XjCbpLsiA~AvkkY*Pj^rmGJ4Zlqau;nF1h>lKh|vvn4+aY^-#1 zBvS#MfyF4%w*ehsb1~+w$*?CK!fU8yQ!qW7Lem4(oF1U&^Z+%d2dFtcKogOG2N+JL z2?YY@br00S!Wh7MSoOf@f@R}8qEW#K|+@>^n8aAjc(umi-FL2&W}V8Y{-kgGVK zgF`zVCp!1R_!2ODL^QQiX%4X_nFQ;ADb6jZw%j}$P$;})kviS=DcEOT1p81-H1Y%0 zaka|y<_GE{ahsYSsF1`RYJQ+b5|2^y167i^OU)0|N#e}hGK4hqdc52iJA=V(gR?m} z;^yFpn}Z{64vx4vIO2(FK1Xs6hzLtG0;Cv|L%<-w5P<#?W^5>Nv$p4p4M?99de(nT;4E%A`1a+?7U=Pk71>qI#%AM!D}m}!c;mr2Il zP{AZg!6+&CFkUF=EQB5TsNl+F#SIt@I2S-a=`be&G6C6usQ}V*U|tBA4!8)A3z!Mu zr$PZ>4qzU@ea)pqJ@3Bp!wX)_aJ>CcVfN04nl4yy{=UzXY|qbnb=8ovt2RHiZN_)T zKKa0~{Z~b=yzQMS2aEpr$IsGRm;B8>rtOo_SNSJj((FI1KK#Y>3v$)i^BP%BX?gy*3*K9L$#3Rw zd#T~_Uu3;nG@x|u?a$7=?zE%frUm2Q+x%?d<;!fVes z0eOI8Kqa6FumNy4U{&V;1J+*02iDS0jYp&KpvnNPzh)PYyjL1*a6rL*az4T zI0X0{V8g(i3g8L>&%gQsTry!>`LRA97jqTj9?T{96iIisXFlAxF}ri^jrevpBs^RJ zBR&obOMLigPW)lnX1VA?yhMg~T*^ORx)+7{|00aP1Aghh8o*~88YuC{WqkROPCOd^ z_`D(GceRWkCq8svE%`YeCjL4bJsz&;5I53$Ntipo$mqV79R(gvD2e};odupTGQNjo zc#lbWFUtJmwORT+Tt z{SxpX()|EvZ^Hjw`iGC0qtcI2X8i0T{)u$o4mw z+z&hP66wy*2I9BMIP*)9_=Pf0IlU*Yf{zc^Oo+dTc=OQ@T?Xs;dKq4t?kpzF)qZHR{x>(!WvXxR6JFqmA;zpLnt?uW>RxMt*t2@^gT!Q%0NM z#~}S1>EjwDaifh)l<_g@s9T0-)KRXqkl$z{T!u#Xs%%1iyBF{*xUw^(GQG>I~%(H_F_YcaTPiH1C+d^wy6jz>Qns zIFcs(vYoK6WL~h3WIxEhhG}R1GR>?vEDPo*>j=x4X=R&c9hFBweU8V@AC)#~IP-5ogX@3?9ap^A-dx9uA$HPg#-EHU$+D4~IhxD+-b)=2A$C z!YYQS3xCX71TVIC!skxoK%WRm2TTHF0kQ#%1E2F@zrchWb1AwlJG?0VFZV_7zhL+; z_A`$&S~f;o?p+)|&GzkkE*f*oo;~Z%`|5!|T{Cdr_x7DN^UH>do=*7t!6y4l+VqEt zC%9r(?|$Ug5B_oZWWhtXZ=3tj%6A7pJ@)L4(PJBa|IW!tAH^Nncg4=v@0#{h)|#ct zeV;s*d5`zC^)JlpjyckKy6Gt3$(L<^nqL3el#6YDo_h@V@UkD2ABWj?-m(qP4Sx6d zUk7ilYzMyN<`GZ7`B}^26R>Yhy<(^RipF0j%)RHLYj?c2{*!B(zxU(o-u>!}`g?Dv z8F=(h>Ha?r-t)-Rv7_qUA2(aJt%&Y;=CvIk|7PcHd7po6&7TzeQsa%ki+`YX-QAeT z{t)myU_an*0IrM2qHx>*9th-dz%syE09T~91D*zO59tHIX8=12ZWv$!;9|g1Kn>tq zfcpTC16~Ha1NaM|8xV~Kb`D@FU@m}*+G_w@P1^=|67XBV9{`^MY-n(20Wtx3fD*t} zfa?ML#`qq9e-Qc&fZrD<02WlH!2oXLT?m*5CWg?p^7vo6c>YgO=XcRI- z9HRn>ho;be_^|zvnF|w=#6yiFaj7AdJo=tHNn#&gP?W>)KoXDFNRK?B!%%oy2i7LI z$nd!$KxQr{NRht+N)iubNfI~J>7RS?@W}0UDS10`fXv)fmLz_mlEiOa843?&lElSW zN#fZvl6XW(dgQk+N&Fm^0rS)V1Lg?=$l&6b^v^RrWajA|N#Z9oN&K>wB(XgYQaxfU zNnH3L7Z1@&5)ULW6dq1MC_KC)UAP5EX6_ZrC~=-lW`3Z8i&JG8e;$@4GY_3gW>ylC z#JLKXc({l|5?6GjN1j|EiAQ22X#vEN#Puo}7p^^##Dyry#pN54xRxVHTqjcV#z~1GL~G^ATt*@qNL@SzIF`iHl5ncc=dl6&0yvKc znDJB~SD5^_Aa6Ln8~(WmZ|2_}hI4Pd-o(#sbIv6U|J)%r`)7Y{#`#^l4RJR3xgA|* z^3R>-N)ygaCv!S8T$$=60J2=enC&KDXG+I5)?3nfSS3 zh3pN;=XR7iKHO+B|r^K(n6*5sd?JDe99`Li3iIsV*)G2{EgaPF6w-MJHD#<{hT z1^L$@9TsIKYL}{h6&H&)PP&O!sQ#xFFwL*`)y^uMxhSZ7Y0_-m!Hx(4*W$)xC|As*C*4hA@9oI#dt|l8I|k-rOL=1?iL18!NBwL%&-tE_l1d zS6N*isSy9eaSKzv7pz?W;dm`rRo>9FmO1x-VWu%!&{|yYudZnPzc6}{^a=i(3)bBD z8=D&^87=W&xKRz)J=BPHobKnm$gFrSeIDM$%`dM0xBSlkR(3BUofr2#VEG;TPigNDJ;x=eeEm~ZL7ByRoE7YPU z*sHWuyI&h^x1({NCLB-pa8#_{K_uMP4tzVuzo5lhexN2Gmq$b1t?-g+?Shwc5E!yN zs)Lcf^~UG56hWRi30xa*OxMz_-Qb!CuBZcK*$9>~)-OOCk5gHKMMuxIBjyIzEs!5Y zu8fupEfxPDx84F-Q6f__QDJ!c#Ey)fqm8zH4Ovm}48jIM_=irg7ovbsC!*5rFNoZV z566xrN)+_5_ng*KH>lQDwMw_#tX65PhiTR*ONy$EvaX$@rDfCH zrllhqX{}oN9L+h$7Nd={Tc1V+L3Y?IaI?OC!!|7qa)skX!VwOIpd&MPXrmm95NskV7hmw-TH>`PQmc|luDsd!f)DMZIZoJ5AesRdb*EEcI)qM*hX$Eh+uXBM>-$U zG92e4cPu%BP|N3OD!$yU&8Th8xu}ENwAgg}O|U!<3zC16)7pXLf1Amt`jdRYM)P6io!J+vZg;e4H>r4Ojy8Ksq2uEsHW%nvgdJsVM3cA19I$+ZIy@FsEnOR{zpJziSnP#b zMhivLGC|WaH1#I-Vj9wKbv&s>{S2|zhTNoCi!{5ipLLU_7HZf9KG(TYb3UU*6>8_A zacC&?vyqtb_6}{<9BoLImWB5mzL61%{bp^fvk+VdkldSKve#4Wj;D;Ao+^4GR4c{0 za2trNS_-6|izs{S4lk&;-_WXgte>H>rH|DX-vV;Fws@O1yh`&N0H32yTim4$N9}ak z(YGnqO*cG`>hO2)vz4HxpnuJntDRS%oj+HbT|=Wli~2phpu)_7f$S zT5hwTtAl3{It5`E$E(o^=37-kVw}XTZLHJIP@F@tI^$rlCCW?SGL?Y>3 zl%J-gJFO?KSK){XM#}>hw#md73MToqp@@@a&sY!UiJCTvEqWL%K+&{RWG_lbb6S7S z|NC2`!E0SLhc@&?lSA`6k@;P-P0K`UkAmk+Bs*Qp6kXP>*CSrmF3TMB@aTHd5jQ7l zHu7pQDvJl)<65;Lt=eLgOS(2LT^oV|5t;QZ_#9&W5Dsv>pIgB>#(D~zq8|ijl{T0Ou&%$pRU2$Q4Hw31Btk4i;3MZ~g(8U4>tM64x6Xl6 zx>g7SZw3UMJ^!h7@MLX;`+60zUwi<=@#FS_n>K8hi9l);>lfgPvfctNCu@O_`~@VZ zS~r5GIHo(TUF%fqtyUBQEt{>P5H#fy~v|=PlL5$IOQjooKv=os~ zgY668+B`=aEX-DIRH5cxp{1?Y+;g?GiG0sRQ=dFXo69JA?bc&Av?AVDqH`4l;Owsl zqX$Kwh!Rpcn!m59oLI5;!eAx~1Ann)&2>4G5GXRlwUK7J=E~O1WKlo$tT>GRef%g*}zx+-m)Q`M9Xr`4xw zR0zDNjxXo(6Z~bSG{B z+=*}wVV#We=KqFh?u}QTO9kH&_@m-2>{0I|PJhIo1<>DP;5&(QT?D=-Kzjsy#K}i| z8-Vh@4Zd}tA3{3r2JJTR5howaKfK`da7i&LI_3bgy-k2w7i$618uxaNv|?I*XvY=b*-x)X=~wC7%F zL3!09KY(w9J8?V@6JIUk^&#T57C6>-1MwnGO>c}>8O%1AmxAAoc<%-O6`(ByKXJ+< zJ`X_te3*=X4*1#rE{#^6{9mlS4P4b_nm7JCa6mw$qhm(p*b%KkGXpdua;Edw;FAo7RqU@%&c`=pIK|E^=X>MTBg5GtAa>p zopYEL@c;eZzw3869Kd?^+4J%Cy04e}y082FmHYQ2(B?qiXph9RL~arw!=(y7PVjGV zf1wfd&Z}@x2t8Aw=MrdVuhI?>XS~GEh}@@;O9ed}a;HH%1v%oBBi;tL5>-{2Ab@ zfYkpo!sUMtppN1Wk^?*)H6^pr#IKH$5-Cr&=`M(_)O9|L~}@GamIC!hG^ z;Fki&-LTfDfNubwIQhi+m%FrQ8RRyBo|de&J_K4WT58MSlaq@}V z;5I`~2ITmy&l!-*25ko9h*OSuI^3g>n*_-8r$F8UKF*9=$AOjrdE%5OZU(;z_-5!! z29CdH4VNSFUYs-3L(e6^#{oM5{{rx2iuT54gnI?yJ^}4SigtiF^%6f0{ubbez&{22 z82H4=Cyu|peS_ZZ zN8)YZGvD!SMeC=)Pl9ih1M&C3XSo5kz7PBe_(nMrKMX$0{W$o?fa4r1Tn~sJgk!$E z1jzhwL7w$~Hu}9qpyBVk!|i}L-r-c^nh$(l4C+Z97}tnjN>=wb*P!00e)&zvy$9Os zkZXWm<{R-B;5feE84o4b4Y@6#ZH$m3{9^2fMYrwfGpn} zK&EFZ!Zo8jedDxNKHoMG;fT`?;;G>CEN}+O*9tfeeB$I2PXYf#1KLrI);a-r68OaN zd!9HCxEOB``)sPe9Id^PfOL+(N^9ktCTB-$2Z&RiIG;V)3Hj3^-v)WsPw7yY?c#b08*Fk#)a>OY|{3SS?53a#` zuWG)4KMrr*2wENFjQIlb8n_LRdl-=EDT4f2#Mc1%QqWdFo;dXq&jr5*@!&kOH6J)0 zpFKdFeByKAo`9a|Vjsq*)|sH)6k#86zIWRIxn$9Yaj(?^T0(?A;$}G7)sv*>n;Y|q ze(YRcN*c&F;@#lyhn@RjH(%Vqi@OJi(=Otlz){b8kmLN~CdBt4Xh$Ju%;Si^4yWcp zkgG(xjzF#jH2jhD0piq0ycv%5V7I^>fYe`ya5GTf_J2=nZ2+wX;fOOF@lxc{C5kS3whT2mm%)}4ew8e+X3+`IM%NjfQ;V?dEUFmMWEK3K${48 z;?z$(75p~n+YfzHfsY5DIQhgaa7?t$; z^MH*14CJrD<%FBj{?3Bd4te5~Cw>b2MX;wF_I(Dt4SeF{6F&+5N!Zg3`#uGZKTtnF zoP6R(!M_B2=2-MIz~2O)IQhg|z-NACgMSD(o@ox}7x8Ae$6#j@;3mK#$g@2p!`?E` z@I-XDeGp#+_m_~vd|1H@K<3YMfl~!e0%ZDApwA3_=Mnz|(2}5!IPD{DhGTy9Gyp#HpWno5=rGsC|4YbC04*7E#F=lz6Tr_$I_9FD zj|XlBpE&u%H8{rq4bEyf-gE=fj?YG6JVX25HbHAW58B70Fz!ivC;lP$u!(m`T0a4P z0(|1sOZ+(a9AA3sus#KT418m}A^tiX<81+Cd@lns-Fp!3EbMo|-e%C65RN$Y65ka|uI@Y&!S=^{Q8j_H^RIrhINVIQvpS|Mlj$HaN%i~ZrTczs>m z1AQkzI}$&zE+&3ho#xSCnh}ok@i_?h5@>r6&X}JQ-vPc4@!<}8>u!btpE&gr z-$EMnJO#Ols5j51YOPO$wh?l~DM!2t{L_f17<$$LF9)AE`NT`XFNNM7@O{9Gz$Z>V z@fC24XBp&aa#`L%K*sl#8S5qF$E0h~ ze}ML-8S5p*tzXkJ0tev#iA#aTT z#9sxU<9!P9;VAG|z$Z?9#9xM^eft1eAGblCSG2s5c&vdV6BgKS9rX(A$sO2A5*dKZ#!A{Ch>}JrB8)(DNDec7gU4 zS1{;bG71-XNuPlDXjplyU4aq1&p1O8#?&p~|r`-DpHiIY#9 zcTH*kGRPeQJs)y>jVBLs#3@JoUO1NL0)bhO=eiz$C)An^+Dyn3r#$iLaLk{nfYd(@ z@-5J}4f?MGEd}z#DNj5e{7)M&?mmY76yP!76UXm);{7owXW$=#p9CC#gK>a3e$NxX zgxe8}uM3dzeF^!4(ElFd`wFx#AWxj~#6J_claS;52K#)iAA@!Ra>jgz_;K*}Bit$I zX#;)?eB#tYd_NrXWuL%3fSh+U0De+YbId?x+?9MhW%xffv9B9uoyXm>-7IQ0;B!_iKgz#Kq^ zn~8AEknND(_09p#2ITXW$2L_vk$M#PNHccsuxe5dW*N=PTf+!6!~WaX$D>d)feL|53=h zP<|UQZ+;)NHz7})^2A>UzX{<#hQ9ZJzY0Ea@`=9!z76tqoOc6%8GPd86MqSg@$3O) zyt@S7f^a*i2mM1MXqypE;Rr{3lgMp=TqERCAonrk&iA%Jt`77sA%}UQwi$B7@q3>5Ch$4mJBEG}dbI}djdcX^N;t+}3dr~$0%ZL8 z5`QYf6@Zo-5kK(-aEw0#a+Qd04&>&5HUo0R@q34zvWw5yy{zvZ$HCFN59!#A8up%r7M#;uGO8r7=@qIf`>U;95ZP)&N33(~4!5 zrd0q!pH>A3pp^k00Yvv|J}mH%z!rfA1@0I4g1}~hdjvKK+##@0;1+?K1#S}9An;Lv zbpmSy!e(U`Y*f%EuvB1?z!d@u1m+9O6}U*?0)Z}pHi2^mW(%AxFhk%Bf$0LL3bYEG zC@@vvc!3sy$pRAungs%=bWvXl@}GK;2g%e^3rIaRfYd`i!;{bO)qnu1+zq%H9>|y* z0M~;LS%p^$?i0L7@B+be1z#YzP4H~NGXzf;+$wmg;IxnNA#N2PfWl7$V$0C{slZbL z+XS8zctYTDfyV^4079qvARxP;{Q?_>zD4lO0xN}HCb&;vuFw|=zCd7x&}RsqF3=+M zWWf^zoAH5>6$0^0x)#(YxX5kQ1B9~O8>V2i+m0{07iK_J$9D%>7{O#-pb zQ*^BF6y&;&`Zo*QB(OnX86b`Y%v_tXePjKmVHs~O5PH7QbA|2_x=rYFg`Oew8A4AN z`b43p3VpoL6NGLSIx8vTy@ZNOd-&c5?db$0y<$2v&aiS>`77YRLI=($2)By^k5=L$Vr=re?# zF7&BFPZj!jp<9G*7P=<%UStyOGm;gU}xp zdY#a*u2Jc&6ndG^eL^o4dXdmq2)#h)`9jYX`XZq(5V}j~HlfcIdbZGK3q3>VGlZTl z^r=F(3Vou`Q-wZW=oXP82*< zaEsu{f|~``1n)s6(ymK@4BsjES;5-{$GS!FPYK>8_zA(ewqW=pf*%&VMeu`ybKT)X ze(Vr>qrfc!Hw)x?gLX9td{khaz#4&-0?P#Y1eOXc61YNOfxvu$xdImnTp-W|$nnM| zaIU~?fwKi>2%I4>U0^C8?H>=wd@&2I3EqQoR^>aO%6Gxf3f?X_=N060K0*05!A}T& zT<{};9~Qht@PmTCAb7LjO@i+be2d_l1#b}iQNb}cQ}I^{?i0LJ@D+j=2%anWBEemP z+XT-Re74{-1Wy-yA|SF#&GS`03f&^~WI)mrgwA-`{^km#e&W;*Su^z#r(VMG0;z|% z8IW>>Y_9;So)Th6H+SO^657)#uvOr%1wJBhy})?_?E>Qk#t3Xn)%Beeh<$3M|7n2> z1iAz!2xNxPj*qX=;fDhE2y7Dgu)vi9e;{y*z^(~;czO58jD1O^cZa|VfvW{t1x^(B zuUG5x|03`&1U@40W`REt_$OpI?fzQeDS>SQ|4!hq1a1=8AaItzTLr$0H6!)CEwEYO z9)arxRtvNUOcwYDEH)YbcLHA$xKH3(folZfd{D{rt|P-?KS4qM{W9@)$LjEHfzJ#4 zrNDZDwF2`6<_f$);PnD8qoPyqe+m4Zz<(3?s=!wS@@^jG3j}f@MLa2g}~JUZxwj6z;kFc)c1b`z9{f{ft3Qw1b&2e#P!iT0)H*=7Xp7KaJ@jU zz@-9j0c3pB1Wpxb6==*uINzXL55_mbvjRUActYS|f%^qE3EV8OPM}XS%IGlJR$I~ z!2JT71a1~sC(tLbK;Qy_*#grArV7l*BpxQ19|pb-?isi(a6gB87VfX$aJNuPF(uHa z{WI!2{p^>Qi+=sBHB5_HXv+}e#p!P z{WJ0N9f{47t_AS(4kl&zenheO`F2FB`1x*xN$fNuo}*C{HKL#IM)ZrF zd^6$(q4T{6+~H7haUgqU5o8MYUp0`tyf`wuV&Kpjd!o?4Ngzr*B!ejEIJ`kwwG`2St}4e;aqSJ9i{ zXI-SsG5EI&y&e7+g|1ogEEI~0aaq%FpAmf*{Wkc=ihsrwP5Tq-y`sZ!7rGCA&gn@% z3_s3Ml>a#V{1ON0x#%QwBrT7^{}|YQ;C*P2XkI-XAS`7M&5%hf#dUi(G zz^}>}@(Uwun2LNe=oiqI4ZjCzH~jw@VGlp}Y0#@8WbCLL2L1aH_V7hAgUAXL;mj~bRLPIYlVv)cRLH6i|k967EUdU z{F{EQa8=p7a!+xYcbT`U##?8vsj2c8+pDTP^%82~GJ75Z8God|%!J$VFjO9)7|4GkHHCTe+ymLV zkR>~eke;uF`O9-7%4sCw5ldrGfJJu4yhW@gDpMmeZIIN6d{kW4#mb7R8m*9zTokUU zUbPf?QdnJ61C@g9 za&UA*GALRgB5%U1Li@6NJgdEVF#CRgjn7_P316P4#$U0pyxL!?7+T@#dG`5>TveX+ zZ27rW6_sfG_0Ed2iYheaH6G;Xsxq=wM^H`7>GPJXj%e~rYdkfziZkC^9$6I?&E+ja zZ5%>|XoQLg$-z|BTMgIm6ju8;co&xE`s=)92#x-#rnbuKtf;6e^_P2Uyw$KiuL73& zE6Q_bR?+9p^RM#NXAdR*r9RH>RC)lo*gWJ9^g z;V`!XkIi_iq5|MKo$6|4NJaSqPkCusSYWuCTdEI_ku8F;MAZ9emcw6OI+!+MB1L(G zGU}#+L8Pcjz`eC=ifOatiB?!xSX@?7vbwO;TU}D+udJ!4Dy&&ksTDfsFGaI^z*|)z zIWSxTJp&!h6{P$eUW`g0-8MRFkH0)BbMITYw4}=GHORxoSnMfTy{f9Bw!Bmo=lpLG zmrPQFi&UZe%KdzJ?F#lvAoP%{Fu)><_y$oqEUWRN11wqXV1_XZMOCK%3d)LUYc=!I zu1}sEYV4j@SyAHCpm|ZnD#?;+Y{R9DydkR7Xh zDD+ipyyZ26C8J6|tYEm2AWs#Ex72|os%S>6da6JdvXL=egG$t1%T%DbReMp9(NUK# z^OV&>W<+ICCF)SpRkh_y>&r`!wDOAD>azO9<;yUPRiH@FqN`!ul3MQ-wHjquQSE12 z)n~Z1HCHl3f(+?tBEqT}ha`^`z+O`0U+0w&M)M1!Wo7Hu%q&?`TIMfDybAN8^_7-- zOJ}aBD6K8?Vop-M-d|JVn_0s#nXPfw9k=`>T=tmiSgX9~#Y<}OIG~qPALHq-2c_Nm z%hy$`Rw1+IM1?G=ShJ?0d||o2W~lJ2j3{AD<11=wmev-pLnPHh17yvL3Q+3xl%XLE zm7H~Zlw`HHMm0cImK+cKrQW)nq2XrFjtW=qU9Y;bJiJ3$Z?DP6t7{_%S4HDpQ(04A zSmG)1U8$f8SNhA!?!n`X%x|X~ZM(Y0gO;OOm$M9QD$k4QwYR(k5=yU3GOtjJy=pmC zdIgE7dY3_!_-a6pH%eS=r*DmQMox%J<_7&$}wxQuk-lJ zSR%yt@<9cP`1-Gn4+PZA0iY{38TYT`zmV7N*AswM~`t|Whtj}`4#y- ze|5g6YL$1Ws+lEqb$VKBONMfzDzJ9*;ARB2w@MZ65EH9WFOB)-5T@jEn%XssYim$uY?nhMj5aca zAvJvn-RKX7l(Mw`h=dHZ;*o@n*}}I=4(?Q<^D-28>bpLr!}2)p zM@+5ILFKIC^eU$qLvoIXT@b>J)ZNU?%(`Rv9%^Q01~_W*8L`;RoA0n^Gr(}u&zW~9 z*3jM#u_(^4J>JYaZXdydJLZfSQ)bp}YKLS&g);6x4^OKZ_xXN?@o z9f~(hV(-WtG4{;NEAVDzj2u~JW(NMQ7r!Z)w`OHq2Y#8eZ_m1I&h2+(&9+)^%g6*H zD}&t3jEp(6LCc&q>-O8`kW!RnOi=Erz-;0EDnHgqGb{A%Y3;*rF7#vTSHrfX+M~o( z0j&r7n3`3`d$Er>-0vtZ_m4+FLTtAxH(3M=)vA9WRAFKMyn_4zoW8?%;P0Fe9^2H~ zsbZ5h2795n7ubOR)enOwMoCU=4ScW;hW{=0`cKXi0Rh;K4ga8HWu%hALYFR949s15f$EAB{KF(DR;iK_kY28yO^~+o1 zE5{ZfN_%ixPB`&59oSz!y?AiI!D&%-wAx!% zp$WK|j$^%|=2?qIGmb2lK&PsOvZl z9WaZ(XgmDtJXMMjt>Y4OyZ}yu=ukpY|A`$Xoc|4HM-vjy^Xh}5;|%P;@fd#*c0`x$ z;Bsk$4l4qj`Hpt5aHGq%8#-n|hq(y-TWk*d_@eQU`Y{DQHG>dtCnVl@-zX zu@X9%9~*}1h)7GRx43o{H_eqH&~d*#&mA_q96C~S@pqF$b%d)3$4u(L8gN)0PqpHY za&UgW`|Yq=!!tyOr?|Mvi;Eu7cHH`p_}gI=jPqZOpkX*f2lIm5XdRPJ;9FC7;d_v$ z^stvuwr6$k5FJ&X@>SR|9HL`9F2rm`;imH<=HOq14m|Z=<}GBKg^D3M_9U9L7tmp} zT>b4jSi+1ZIxRL_&`C$|{HforL)lU3DT&tMyVj&WL-Xj3->yUdtiez_wm=8oZqk~+ zgAUAZm6~Wf7W_cBW5uj1*-?%ilKM5p6=j8$sH@O1XuK_hj!NWH19XH70yu{8@Xx5H zD|uK3YP21vp`!r-x<$wAe>L&$CVyd-h7Prp14gut75ETjaXRh+@S+5MWgmz8kFbs# zLDw4~XE(STBX|vD*0ZX}uTHz*kINO9Gc`YR&! zSRor_kJ7WywQwXIYEc+;8O>8I7W(N;M)*TGD2FYLv4i`@eGr1lu`Sa zhKv=SsPr1&Us3T4!@mc+vt>s3Vd97=y^(Eo-|MYWr42<)&oJ>U^_J9PLSKKS^ctU} zP%^0Y(P?3N2ieo`n+o@nEsnslwTrv8lw$#tXij{Uwz zv;3|nq46~QAM|LAAM}`yT@HPDF}9`Q?e5>i{{1cIv@y@NnB5k4?Dl8emqVv6Zgltf zE{EDK#<{comqRBn#=GYQs;tnf%?oH_0ZnzTdROue&6nsK)0n*9y!CSE&5LF?tVqBg zpLTD50&%qbof{Uk%nR5gX#d(2AA~kWcA%$lkz)$ea z3#3fe!x?x?6dqJI)w>M-S%t^$u16juH>c%VUGs`^-D8lZl@~qBit+!rZ)zjzD%1aug}vH`cIdUH~^peFzbg=-c2b`t#3|+Ae4}7p2IP>CN_3u0i5FwQeN%DkK+8ag zaThJ!m#?z6IfMI(ZL~3FntOxmawuNuGoxf&!7bqs=?L*n*StW#36jX)L|;)pY296; z+UEtn(oD=Rq*C)u&d)%pXbmX;E=S;jTs?&+!X+~=aCA@#|0)TooQ_ofSfz40Qu*U~ zfo7A1xqz6oG^!6V3XjKe*n8<-Oe_iPt)@ae9NNbyUGOHM9m4T|%47xSVq%wf7~6sNL_ zxn8F@S#E~1fw!`Y`CHsYxuP!WS%I8z*_acyz*@-(Sdi-s))ecd9oM+H+hMDB#W&(9 zqDCu9B4KOdw#y+KVlXwu9Z1?Wx{>;_kpj1h?{lP0FUto&pP}MR?`m)-HC+x(?fM+G z@*#K3FKNjnWyy8QlGHA?hVflCcS_6KXSFfi;r98LXrHd&bXDTWhb4NAEcVyC+7MHs zFAsTmIn;B(6?__HiWi`QHC2ESwe0)_liLy4oxyaL`0HF_QNJ`_jBhDITG||e4VmDW zT*3UM^(?vAM_ehsYkjj&0w*ur-Q*0$I1PzJaF2qE){mICdB~?tDB0$` zo+OK-CrOp;L2xx?S21EX!P+EP+kAm_+}3@n!4>=p`H%a(;Kuoufa?q%%>qSQ(UuEE z{%P)9MSorBD1T^uRfUVxx=yqnfYzoV+?C4OQshPaR%dVna)a&Sa_9l*Djy=9tE3k} zIu6n+!qP5Cv&P`|a722tmGm4)n<4$9u=I=z9>12xRM~rytSEnkHmlIC;KzAPrO_8S z115#DrH@nEQZ6`y{WmqR2Z%rXwRY9xuGDwjZq}Qa3$cx?&;6a~J5*e*;O0Tv(EdAF zHl3Yu?h^k#zbm*`Y%-yjI%=i;b*`AkC#)vaUTxRq(5IcTsGp}gS(iWVG{gU4XB_@N z*%^=jPavj;l!nN1nvlj6=)K)xNNlqMN6(Pr^Y}L}ndUC?>*dxzPM5nJdI3_EA~gn5 zu3$=*&Rejg$UoMn%g+?OmqS}1?@;orTdv@jQy?9i=zGMKn_J|+mh#qIRsZWci~J4C z(f$E#%SWj;^!C|q+vU*1M;2ftTXn>S|4WZF{>Jq88&!*HmRvCT*zyVx)6+&?PG&kd z&f!T0j8>*bA0*tJF)fYZR=KU^NsOBD82xfOlNycubp_kQBL=2~K2utvZ*-4l;|OyT zVra8KGg{~uXmNTBXu}xi?BGuT|EA2bzb3~Ow5oim$4HUr8|V8;k169PJuy~Suv?99 zV|T!|oos`>9cK4flu%Cxdpv8nloPiijP~Om6LR2uhc@$mj3;NbOd0bohuS+_!Jy=T z2K|^Rx4!4gbT`g-w4+Z|cGj_nX)bUtfpsT3Sf7q}#JP9Arc;h8$`Qox3KmJa9#AE% z*J-PJoNp9*%9lG5cE!7y$1ioTcJ1q!fVQ8oH>FM2vs>wD>KOH0mfH;ewhqcRc7(dL z(TPoqFKwt!*aiEVNAJ(;%((t?Xd^8DMq@sX-d*QP{)J_a$#+##?2eemTzAUeF~2nJ z(so`BRdyu(5|gR!j~eX3Wku}yT)_q5u}<@`pNjFNtF%3!ELesdv0zq}kebDp`|em=t;xA$`B^m%7sZgIMrWh_y%j8jTu z+j*A6hv!eXx&nKYCidO5>Nq&Az-C2r24afUXoNmMZ$*dBQ|8t4H@ap0t2yf4|e5%uk3%`P=lL!I7s-WAy8p$z9Um;oSt_TVNPOVJ*D z3jF~_t3a@X8Xy&`p+89U{To_R3}#THRcoq*j!*Pl3!L&8vpCH+3T^e?n9&_t5<0)@5zfWVfZuGW~KWPvybA=i?CTR6SPY>U6i}i&Zl;hf3v-&hNfpN^%AI zRV&Q?#W+)w}GnD0nbXb*+iRU>hxbFOI?ooS_cG`n`l%y*#T`WeaR;e_` z#A4Q&h&khRzMGMon$q5X&J~!W^0MBQgtmqr!g96y$2~D>Fq5&TaFarP5Q%Fcvy&OqR%I5iv4ZsA;Drs^Gf&mym3P0v|Z;1$vJ=pbF_ z|If1YzB-H9a$tv&aloP}Zp;M&0pzPb7qA85EXHi0?JV>1!?Wq`Sf(pZA4&h|uq*JM zH26A}JO2s%Dfx3r6vH$vxJq z*`oQTux4tt7W9WMU5rW3K)p)N&^TAp?1AF7jGaB^S7N!Q`jRR67N0FJD+W@iXE!3> zPFfg3+lqX%qkV3T*^Yd}nx{W>;$mE*AN8z1bo^pmQ-A2#MdlNC5NJ)2vX(PLj0|do zas{?cQR}Bz(@l?H4wI5U$yemR+Sjmr8g%TtXiC5SBUfOCDyJfq%Z?S>-axvqHL)j3 zL@%LcdXD@@Tt)sryRP$bC!+!B+jNoZfrjP%p~s=+I%qjR79mWAmZza5ew+!lON(&@ zCMhlRl$H&y>wRN=$DpGaI$VKECWfnbH7v(|1ZIl;q5Ixh;O`IRy<@}wi{HVhYtm?q z8io2p?su48uEs1#gN^I(zz&sT_CSp4uT7A&1@L|Q@IJv!$kkUh=#X4BZPid>FN`p9X>PqND~>vYlh#6ml%B8adH?cO%z>45 zuH7(F7wEFfk9NOZIiGz~vO5mi`$M^1abKru&-+KEvF-JT798ce!K`?Wu4ez+XB$EN z;Zb7`?LAJ{sayEyw;t&(HS)6Q98}m?FP-*$1&vQZp>v3 z=o<5v49GRr_DQzz85lgq}s@WeogQ<#Y4?LxMV!iI&;TWiUGYTAP=8L!C zRExe{)xGSkcWlc+o$C*MapBI!0(a4$KS-K$fO}acq}cZ7e@(KwKe%AKxj*#bg*#CX zPhu7NNs(S6r^2%c4ZTe|TGA1<;+_L*9#=AYiYs5U2lP?h@m!tDx!d&%%{PDV=RM=M zYCiX#m|Z50>5cuNy%)@GNAPhQwNFNF^@ny`V13_)IFlmuSz4JZPhH^un=Tyqqchl> z%P@>>+6rx&8*3YfM{lds^RZ6+1!ngRi0|FFj)eI8dJ-%(K5ZIyC`}3Pm?mp84!>hc zOF&)O_Ev_^u{*hO^tQFWPtX^C(v#ehfy=E4J2DQALXVu<@>4Tox z&9UeWKku2i_4A(8=cU(fMp};bhq5nZH6=IBY8u@*rrjAlEcS7ASJ}>xj)TeDKj@ip z%o%)OIc!gy?EACpRF9>-m_3_zs%L!jeaMq^thmfAn|y5;A7cGBe?sFZgi1XYw`2Oj z_l$1*yyxJt&wElFy)SDY$LOp8trTI(!<{h!y^4u|~nWkNO?Rd6xBf@OyoOEyr#%z>-r`7#{ zs;|!AcsugYsJHI{I)m9+;HW)X(tW8De8vuKx;qnEO0h4}A1dlJ` zPrXLF9_ai&){gz5WuSh4e{7@4I_B&Bqhqk+r%g6BKH%2CwM=0t_J>@Z)0;kR9sPB3 z5>h$(fu7{ineK_IJ+Atv?jsxfbEoY815&1aoof2t zPCL^5!G+YDKj`tnwjfrF*n_qjZ6kd}E_%Fxb#i!Z#Wwq8M@;)4F|XJ>pSgOv<9lf3 zpLYD}>s0h!13QoR^q7CXsl^#QJ=x6A*!!b>%v8{*=)+M$?8A>>h3g2ME~1t?*R}1o;5W8!57n$f?UGQO z6ElA<^Ry=sQW*+3j}pa|)F2sx0@<_vt|f$gTE<$CSSKaUw8R@eO@uKyi@ ze^cS7snN-e-IA|lPLbk!etGkf1jywm%d^3Isgk*13tr09XWaF!7nf_8WB&pD5jZh7 z6*vM@l}x-Ekw>W!SwB%oQa$;2XxZ$E|2tYVy0PAs;hyehn@Tu88m%-Q+&mTDNZ~zg z{h@ELKI{+mU={2L+#g|W7gmgOhgf?CYgd#$c$!%2jfQd0|^)*K1WRbq1o6K=nrL_W9y{F=>L_y|MZcb z&hEGMnWQsNnX6l0WFOi(E$2+>sqZwtjeR^7lQ9#IX(jDPc_yxFVx0Nxi^pOWKh;5e zgNy4?eQtUYYtsHuC)T9>p>xXrmGb|8hX?vaXTZGV+e+kL4x@#r(bgF_l{I{cym{6r zkp`Qdre!LGULw1dZP6w2q4qypBEd|=jMmK(sX7~3A`hQsiTKVAlt{6%cW8-xk)d1v z;pCwuvf!*yB0Mb{Sa0ejawsdhM7E_tYEX&Xq)K6mDg~?Ze_#2p3zx`d^kEAE@7gw_ zmRrs`0~?h+JQp)rJ=dcBpY<$X5VYl@_Xl^6MYr}THRCbPk@`Xbb$+aMA8&95QYA$> zk|MqTw-)q;+Ao^i&VYVifSF7ZW6`X|*Y<@zzGw?LDw!V6Pi$)J;Oav2C1Dj-w0xYe z59@zhU}jim#;`K4Kqe+EqYW#w=b|%^i?+#DynC#k>jO4Et8BC=zAdmtIXTOX+rA+1$5`|Bv0av& z*zMS_%!%1<4<>xiwA~i`<5F$AHl;7L>|*oszED2a^@O>IJKfzET6ED7)M_D>dpuyO zbp&Hf(?PXeB*hVoRalM+Ip<=mo29cL*lq_m594EVAI|?X+MT#H^?jk3izTWSFdj(c_2K-V@%Dv+ zT~ES-|80A6UhGE+vLES?)u=O2JPt90cNp!#tue$mxcWk$;mo`*^huXJ*yxRCZ;lUh zKZYGfo48Zrh9Kl7Ev=ZkPgLL(U4l50><4oKU%u+JO4kPyZiWml~7MzO5 zG};2IJBO|7+`!gw)9^|-dc3l8=>Cbp))ES&y9Uo3YB zT^LWZl#I3wdsYt9HZ3h?TfHlGyLoG0sJx4NR#wFDa93PYA5Q<{ael{DK3AQe=~f1p zd7|5TUnsB38Hm?tHA}3>Z(n{#tNmJ&wJ+qt9)~vBjW7hZ_LwD-+&ndD{`(uWXQ+PJyMh59j|LXnt1F)%>R*wUs*%eW6iD zTQIxr3&kF_;eYL@k&cH%HqPf+zVHo4@Bx+E++AnNJ1^)xMqlXc1xN5ikv3UR73N3b zTBcc}>zE$nhvBnMo|nQ}rP&d@X^GKJx4GkS8-t_si)b;gUuZymS&mp=MO>e#^c!~U z2c=BHPYQ>R@ik-bZ6A80rVER^AJ5e$YiWQ>xw7gDJ$qsCrHx4W(+Ha`VIP;Uj^OLX z`dDO~i+l+!>n_Bj|2&Q`l?XF%&cIscyAX#nslHI@1-9I2@I3^XuX4=;IRXv&puL}K z55#lK!sAx@Jj)R*@Bl|yV^4H4+I0(h07y3Hs@q7|V~uw}5<8yO0=0StKjT6iR*&Yi zzR>gwG2xkOUua4=SKkZo8CkY7e;>+i46oCyE3#W1!G|Rep?Af8;QIN2Be+Rs3`S2m zuy)g1(AP(P*E7Bmd(G|GXKukRbF(A(Tbohxld)r>b^m>XBbc&8-!nj20e`>ZFy`We=}pY>R@ z&w9pN61LjiqZ;S#kKZ1*jXMn7x6rV*H@C#>wCo=93$*{v&wIL${c!h>esR}xm_2Q^ zH6?CKa*y6+!VW}6%ZKh1tTE=o&YQxv-&kOExv|1ZXu%FiLmPI}xkvIr&qTP?2JB_D zn0LkQobzk!kF=Y%;%37(k2`TUO1~3U!YZ>R!I|AQrzsJ;Bd4)D(vIDcGc7rL@BF2t z0x3v93X&U;3JX%9CG5=j^(a`a?*%a(iF>g=Or5<#%Ik`dh3_ zQ`#NDLm5Vnk8Ag0-$dvC9DMGZ%x(C*CmU8|z=9bqNln}tn2gkEQyh_dRnxJ9G9}@i z(eCTtGWi_7Cw=ex;?%y-^!=lD#_x*TzSM2r7K@x_twi3ob63iO6nA&r44wNMEQq6} z8GAr2pZ6Sr|8V>D*gsr@ozpg}VISii&^-!wOX7Fl-jSbSZYzF#v|?bmE@jl+)3 z_h9k(tyjb5nH>`vui1H3Q);87=~~nm?$LbEQwEzW8@|7*59j}8cS_UP1AW*5xCWL_ z=$L^2$K&=xU&u1TehhlGvHFZ1%KJ0<@h30}bPDWKnpf^0$kKM}qotXVeDsWN}c)fC9^u4-3OB=hBv#W{c zZS9UgrNp{zNUX`{$G&WGYt}xj{!O^)qfJ|dHs@{QSlJiqJvSD0=9_blK&Kj^xWkj^ z8|&JN8RS;XAhpRH+hZCzgT!3eX2SV;f(0LZu@1~9KRY+}my6}j+Q2PHdtiJO#~0*Q zj9Jz1IE0FC+<+BU!nPum=+SeDjpnZ>YDMVt%=@_?dFsOGoAn*Zl$$L(`>+EL=RSwk zwIgsUm$}Z_Kr=$_!yW{B|8t43ea|^lJI4QWdO7H4irg=FhI5WUzA7z8pg_j`$X&ZW zod2_iJopjT43neRU32JvIN7ZuXBJ;2R zY`mJEe{$zdpI-0@dU2d|9K%TfPCG0O zwSF_k*yIL|m+0Y-p@(n83Q(<&@BV0UaHfTMn(3=^Rry}S{S1Udc*`-(SL+|xqs9Cm zC+qgWgbcluzu&$%*sbZ-z=|6fT0?k-rVh)o!J&7n&?l^VXwJ1d>#aa0cxNY*FLKN{qC~0o*3gOZ*dzwvV_HTw}xM0I4Xw zB9+2P?~ImJl6AH2)8|i14r}l1evZF4?&6$#A=c?=|A)DAlZ-P!l>S-$46rYBr=s#? zurD+xOwBl~S@jb|o))9@kwQn{3rV3~ev@E-i{u#A)dk*MecnCpup=-xlXZY?*^yg0 zzY;CTxFimbOxX~p^0f_K#^ zcLH=dL^>Yx@57MZH_zRy(SOu#v2`bc|AK|}13mO~KN(SxM=T89i7^4XvtSv@^EJ#_rg_tY;75kTyU`gtKg^M zb6mW;GxZsq2DLZ>4{2k*&Q3aZF;`+dI{`7rI|4D2^Vk;E300lzakN4QPHK39UK&HI zGkhuA+yQG=qVN5HXIwJoZ@r-jD(>+YM>pEt8Mryx8%j}>q>KO1bz*c9dal=1EXpEv z%d9uli*z|T_u>QG={NYXz`u&XO^xxGHCvj|vtZ_# zj#-b^vN&)^Nnpm?Of7l1$CcdFiyZ)_Vpmr(W=XxFZP*X!4K?B>d~aw=S0eaNcNM_@ z6m|=GasEFBl!mV4UoH+jthCvK#@;^q06C{IR)xGR*NgQ(^{>QTe|>Jm-DiFG9yI{F z9$!^59roaf@aVe_`}Vv~(;Hd@{$Anl3G-#;x~w-e7kBu3ar^&QUt2kk=!|(rKSRS_ zikd6fgYg(gp&z>!`hB6^(Bz}`V3lw?OB5G7S>#@eavB%DRq!+1luA=`3d}8irjD4z z=X#Q@<1l}}zRe!AL~@c(gA>!87?U`C;z#yiPq7}O3Pqm9)SYNboObg^ivzxJ-@+SJ zyh~-Akj`tz-w9bx$sG9!?^MpW2aA@ddop_8ov-)M><^p6ec_m|A59qVwrsb$IgUBqV|Mh0QZL-F zH@@S2?U;u0zYv36t4z1kowBVrlzica-KOcKe@JOcJ&2Sv^!c=}Gm@~TZ_%(;)v!i2 z114l#)ri$*0IO1p2cp!_?Dx7V~od&xg}v2+CR?Jc>{!J z<;L3efu7XwC+s@vql~WYHMe<}1*_h1uNbj$WgLS$#fEl6FGhgQ4EGJY4V_mtQL8C~ zYvQD@i_nR^@Q0K=WA~4Fj&sl{XgPaeL2sz3b8OSVE=D)v!ZGcAnk=^Pivb^gjQuJdmizzd8S2Ks^wSgv*} zEy&G4hyIstoKN(I&c9_3<_-#F58A>w=NI;1&Y*OBgb>ps((%9E($B1L|6RqyJ8WFz z_lAyi*zwmS1M3>nUIp#VDB6C|o{FOF1?|-++78e*M$w)IttyJvFbr)SXh~6WWuOHt zgY7E@Ehb8?0JQT_a`%GvMHI~i+M7|d9MIN9(K0}LXb_F3a=oFcZ{a`v>t3V*3}4c>fApJsi;x~i-Y zFBq*-?*UnVXeiBcr4I=?!(a|P_&RN7F&<{T)B2b;uN)6Dz`#X#g-`zj+e&%xPg9B{ z_JN?9JnCr0UvjUumQ}3EvEFFYXbRs>v{tKU7Oi-*tkPfR4fFLk7)RpXdLJGHt-jTh zd8^A?y}G8N@>b({oLkm-s_`_=EwgV8|DE-%ODk%tO1!uF7cUKqMZTi5Mw@$I`RekD z_2pJPFSx9(^GCOuc)z>`1lNh)yP~cbJwb}*Sg-ve8E$4>haxG zT4s)Qfv413Q(-N|d%{*I@bGW4tt!3BhO8?|F!NC&cxY~o6|X1Y%`(MFe6h*nrtgbD`lUikX?YO#PWzBj|m3O9*-80wmjYz&02rc>pk>3_VMKvhILR2YM z;~K9OPoOdD-HyeGy>v)gttz@JBz1_u(4lBFQp>lc-Me(Ddh94|M&1l3n0ToJwKFUMJ?f9= z^Q-XamzG~L5kWA(~0-(Q`pP*h5xuNio0 z4DWSv5TXX77=@HJ<0e&h!wBPi48Iej^moGkMn@H1kc01}MBont=X)IdQN9}Z1RYiQ z)4<0^;C}=Bh6wx};NOqHXWWTzp+w+!0>3r_zYln1{A+;YSta#j{Of_wjKE(4o)v-r z9{A)4{J(%(Bk+lH@%{P;{O^EA#{W;iBjvw}!bkmZaQH0XMt+D|ZIjLL4Zw-;-U9n) z!L5Q#nrVPXUn(5G6Sfm>B>w%#mMtmPGQokWG8y?g3c!v&dI6m#4f^QQ|gByu|D|okEf&Uv+oVVac3jZ#6 z|9l1hpQdQqf58nGp6UA)3jWt{!||Cu|E>7GIowG6TJWAR_{cxwtxMHy-j}y1hfk;G zV4U>kJRr>HL}k8_qr^3ID8{Rk8s0U+hY9e&<&VAfIhsCt`Ky17H_I2Vbn@Y~ z9IY77%ji!=tLKF^Ovx}$Q7^1S^mEb$;Bhk56(}LTU0JE27g@?63daWAwOFevvpP?cKU}aEFwOT+#3LC{rou#F^6zYPM39tymv!QhBxIiz+HAHM}-|UwMtc4CUvAO0^KtC#`yM&7J2?jIvb~YpIjb-mL`J|(pP$HKkU;+{=|vFM*CGC zBEW;i=s)auR~@aO+*8IEk?*59XdY`Y@#m+42Gur6VMG4{cn3PPs#31s^qf|lfyU}ae~jje zV)U>W9rbt|Jg3ZCzN*HDMvO@$IjSQNe~vaV1-;U%&kUoQNM!C9kJ4)+K7Jk!Ht4ei)xm@C8<68`w9rJCv@SJ#4w+c#igctHhr-ho*K%` zVh~kLD~#;{g(y2wv!j;XNE;qg=BOp3=s-OC#LTo8XcFO84-P=PRLVX^)Uq11)mCAy57HG17?`3 zkbKS$qp3qaxH34DF$9Lc-W8rOM=4T?6Y2ZplRYc_Rnl07vVy1-*Y1_xI5t%!};MJ zfqNQm7u?HmpTdRUuAUD*Ts2$++_P}MgnI$*HMn=-{sV6G0_a_y6<8YO5o8h<~x5C-r zkkuMY*YJ$I_8y!Ct__ZR4&2um5BDkD3AlfRYlb@ocLeS*TsGWPxOBL=aJg_N;ZDQ- z6Wsf7?QsA7U&A{nCAzx=8h+w;8T)c-MArLK&7kSMR`}C}*R0L#-Zy)!wr6=q#H6ot~4e*>odwvTZQZrpK)iFpS_+1{9?k6QZ;* z4N8`+)7382!9$PW%U};+BJ{(@B)WkOeIe)(*|H;2qT*NVC^D_Wmn_zW)3R=sO5eyk zwb^0eyTaaw9;vAGU>W4RCvt5B3yrKr=D~z;395X(LKKQWl2W}kjKs}0B4Lv6(sQH) zU%b9|DTdfI<&onL_y=!dM-xr-MIyOfw23 zZN0y=#+SA-&FAIEDAQIxrY&UfMKW-vY5oXpk(HTQn1=0)T5sCgv>FUn)g_)XZ<;@C zWtnGHb=tx-FFziaw)QcEH`>wM#Y+n@5LSBdF|k4vQZ3FgkTsCF@>z%87h#K3TlZs4 zdy}0MejFo?i~lb`{}=IZg8yUj?}Y!f_*>yWC;m_2KOlaNGk+F;JLrc0Yxs@0I5u2! zpB`@5c}Hq z!Yze+2(ARK0(x!w;b5 z4vg!LQTlx1DbVZTuZ2A0d~S?BH=xWv;9%t$&>JE1i>okafuHn0!GBo%B{)Ce+~GCI z)WUxP^rP_qB`W=Ckr{(Me$EpZ_JbSrISl=ur|EMC`b`*6Id7mnUigi&dh15yiImUt z*ef^6?M3*F^7$NoquegQZHm}m4W$^l*wc88|Cu^{6_iw6#oB$&CG|tgr9Sk ze}_HK!9V66y}ms^3+)$v+W8LrQ{eA}|8w{`hxrEnj@hW!$P?z<KY3tp>D8&_0i#)q(a{6fFU?XF%%|IrfuNLE8!1 zsQU-fQ3=}LM$sMx?NAhL259etmKYH>12lf4XhH;SHfX(3v~19B%pEM(0NQ-eQX|5e zL3%0Sx-T0um-KF|(C(KOHwffi{? zFY3n0DB4`eor$8Y0IfTUmI~VCDB2d##w{5fMD+P^hG?JDN8rx?iZ8K>1BaRIb`gVZk0WDIFb?a)ltr%gDYxV3QG;eG*k0PZ(%{{nXk?n}5% zxFj3eIouSu>2MCX`{2H9F0cuWnsbITaMz=c=ti27AJE6TGb=#E&swB_HV%CL_`M|l zHW%n{4`7Dw)s72|s2TF(F=kq$#!d1J`GZkBt~UpMc7BJ(%C8gQ%3c+ZR;;(roHaAU znvN6K@>RFoo&jX$tjuZJ|M1nd|0{J`_!GzK7GQW^2{Yj#$E=!hoe3U&iyFIl9!(t? z^H8~@P(Mr74+tQ19}h!T;X~KBE#_ZUj*D)7?hs)+97i!YbyXh*pTB4&PZ>1*|7xrU z`Jo!kc@KAm+?;D`t0Ry?983F42a~Y1>%b=x^Z1cxY}OAF&sAGt>u~(U(=&WgV-WXV zUN*wTy5YGzlU1R-gF`LE)il4iR2`5j3-9q%uhwdjxLH|+HQ_b3v8$&(avRR)d&6I1 zAIN(p>0N{m-bd5aXXpor{G`2}bNCENSS6|QsrpE=u2pFmK3tT*z}M~vRO=%6^gD83 znOchBEO3pdhBplgGY3A)IUGAnooTBA84`5%6?oZK;AIMLewC-b@O~d|UJI@it)&(%Dpjn2 z)LM)CMlGVXB36Iz_nDb{=O($qem{ME`uXFRSI#`=oadbL?9V*&Y!{Qrbq&~39yAOH zn&~StcfWMNv-aUD9e7z=Tsrcy7Etl-=|Ioi-PDl}_TFQ=4Hx|96xm}J4p}f}aL%^! zonI=8Smu0VE`JacTZFJ%1pPfWNu<_cxWlsyEFG+^VXFx#4g^Zg)zLW(Etr99ER(&^ zp@aewZLQF5VI{Vw)E6x)=lW-WF^kJ{0a7+_1xRa2E48V5nH@jVPHG+YnaHZSl|B9t z=G9wU^~^W9DQ?-ZenCB8-(uuq*IlZ)3XAPM_1wJVx91Q+E_CK?uU0ohuBg(HC@XZw zcqCxn@{`3?f0#}Mv&{S}o{p?@Of@4!^S9twlaMXg1ri7%SdO~~>N*lD;d=kfmF1O{ z6@lC>uE7SMnua`N8_N0J7+w8ZaP9gsuvw(6gwofXyC9Ec!Lr|%lXoL0j*vwYj zvb3yGS<;4AY7RHsa;*VpTXs6CF9!1Mjm(-^ggsQ1^&NO&I9r5WlN^<|_myx$doyyO z!W7j|o+iI@!?te*4&RicTD47VP~1WZ6*n}VDJ*-Wo+)b&9p`tjOsG@^ONA&S#E8Eh z-*GsWXQ%)yZ_~0fKddjXcC1p=*tu1BOSSjG3Osh3RWGaKD?m1sV!s)hS$oN%#+u5e zTCA&_K@Lp}pU}Y;a?4g>r*koS;(5)LR#kT#uK5wt9W{)AResxq3b6>$sXT*kCbpn7 z)?i2wGA4OtI2^RHb6a_}6-C&>6DlGL&JE?0R$E_&%}n@8bY^=Xd8tbm*EToQ*Or&2 zm71S)p(OG9n-xuEOiFEeD4Be84`tQZWE(QP%*vIW3(Q5O>C{5{vc)0uAuoUC?9x%C z7{GR%TJax!2LCaoBTMm#(uoC1;47*ViLqz2L5a?7j60(ZN}Sn7dZ#g^jf^u$j5Vlv zIOCwKI4`qw)JVLsnp@g@?;^f7!bc2a>L&{=_tcj(MCwL3SDcUR{E zjAF@!MahLXrAE<(i$S*-N#Y|H}hPD`Eo6bPA@wm`@NGX**+FI(UY zL3GmAX`z$8#`Nwqizaqfv8hjiP9r$6vnpv?=;UjI0&F@Vs~e^rF;T^1w{x3t5+hV? z@Xt5%ID$2;;P1*TCG&e3bDWiBP5J40L0mM@AbR}BN#iEAWy;=wth`ivL}eP}N9tJg zx4&gj#VBw_K3v{d|qzZiXf%bwu}PIu3%a_ zNXX*Zqe|0M!MxPm^tpM#`NDJ{A1j;eS`OwOb}ehepV^5=X;E5XPz3Gb zE`?U<{PyX$Vi3}+i1X6^2^TXasd>R+fG#buTb(6>iY>F*js(}{rUloejQLqy|ENP9 z4UThdc~b+g{F#jnhtAwiommuIR5R-_`&^EhZ?p$TNLd+NcVXMI&Ksv=Zm_zcY1Q0D z9@1{^)HknoC6A%bZNaQz=aL!A%9s2IG0wWLNW&KImWBrW-d|@ivp)TC0KTyj*B&)> zD$KlVYFgIVQqJGJJ&qfh2@dd{48ZjTaLK`F|!CwCX^SdO(?H1 zN*dM-D$D8v+i%LTDyMK|3*Tc{glNKEmE2{Ev0x>eS0-Zb3bxkBP98isHEwUScOD@L zJ^`6FcW$m??d}otA&yj;Y-=$CWp37i;5&)R+nj_fE#>~A($Xr~1yowfqtQ*vu?$sO zI%`>dd45Y1F#Awy1Bt~vEbV0ZRb)M=%6UQ2oFa2=tfGMzqT%2hrde@OMHBV{HDLWO z!+&i6ym%y*>tk}mgkzRDz~r(G*8gzI60@oSHcz81uWVXXw5+-sN7qrs+xyv7e@>Cy z#Dk-PrVf^SDwj5L*`=nkt}(T~93`eWGC^WoYDK@)A9eq6wD#xSqt;<*bv`Vr8 zEZ8g8&!Jy1l}MIsoUaS72QS2s+IwYo{P6-gJQKY84mGzclfB53|tnDT}VdTuwuWFASc;En0=^ z`Ife+2lQZp*5b&giSY)5in68(Y!IxV4<%@WcfNEUx446u5Z{lV&dGqcf z@q)BX${l{WWs588aQ?Tcb~$g-D5ZKpCf{N&#Y#afm-}(C5blX=&I_VN$qLif==h3~ z^!fHUz&^Ikn@b8StMI<-*pErH?;J6&IkAfk+j@gN{>MkCVzW&W)T{%tpH1f>`)>CP`l=%D#w%#7O~(B<)tA$tS}Im@2SSz23< zw+hFAvvVtPF%NFEskRs^uqa=o@L7!PGT$m@i&3g%k2d;t?8dW#P^?R5owl$7wsp#V$sSH)K%Se?-RIv~0|V<3k;D4f(0X>6xYZg>#GN7N46xvuN7L{z?jG z6R?wo^35p=I5bZ#YivxB9v-8Rl#I&dm30lc?I#8MU0YZ{%_+6{+#fQxD7n#MIi!j* zasmRAaB!r#Vo8cQR7%OMUCiM|ij*ZsB+V&-*d|x8k0+sL(R5_GTuyEDXa!EQaEc>s=HxLy^j2SZ-J^$CE=Z}da zcJs1wYFqy6F_Tz0Vm0D?`z7F*OG)hb(yT=?GUim5$l?pfyy8>&cZ^h7A3SaE0}W+7 zlsrb6<0t(`0=8ynYU`I{QVeFxas6W{r#32^EH5xIox@8k+weOM-@4&)k^id8j>Q6> z8D`dV3NiSOR5MS^PmxeEAu=D=7unYk1@1Rn6yn;mj^l@~PsdG=&<&!ICu1i3D8=CX z{V^)R7q7JqIoLNu`pp|EIn9Mn^ZM#V?QU;F^e1*4m$s@uCjM=%z+BYsa=4CzYNN)c zWgQW~``W%avz@Vy#n>Q5{!fAlPUnBr8a6?795Z}8bAThWuI7k+@}dqe(km?;JNn0) zXq%M(XWisc<3mNg^Q-+9S@Vt|ul_479XF=q1f9Wf+qC^B%%FV!Gx13tHEHC3$W-ZQ z7#kI$-UQu`ipGr(@RmwW7V(DEj6V8KPf`QLF^=zYzvAw)+y zT|X5fa^{EW8LnwvWPQJ$K`cZNo!xu72zQ&VkYT$_z^9s5==v`{Mco+HaY8#&Ym-y| z2_wm)M~`Cl`X9$8WQP>;j#p;U%9d1nme%?nmSevmG8~maKE)lMwv+8Fl}ZuP_Y4N@ z`G*dywevcIDNb~BU?zwi!bH0}Y!`KKt!>A(Cg`$T_LLQY58V)n-twh#Og;1~;9YPuO-`*Tb03jl8 z%pVjnlNBICgz1?0?8K^d+peU-zInIfVhX-{d{NuG$U9aFTC@%ojdlyBp#;q~(Do|d zkkXZ*?*5h37KOMMxZ{MhStIWx%)kKGye3!zYs(B#X3mB3PJ*x&y&d+0I3bLOScUE+ zoWMN1yf*D~p=JdPq7BPLYrw`Ic{3Fi4fMT zzPPiSmOBZ_tazPn$uMK_V+2FQ&|XUn6^*6seo-itB>TE{!e;zB;D?Bgy*HwhK>Sxs zOMCHCAq+}w3cOV9n%RkcsW9y|9JQ$f&k&&pT}{5I%}wROXV$soVy~+?&$27&v(lPs zE2{DBUWj{)v8MtrJ={J}TE4VGDVmvUZU+KOmb*E8mE7j4J8)UQ;n>t(UH31?I=0Uw zx7(FtZ`7&7{Vh17h|RY)2j2kl^JooCr7Q4}&M6|UDmNfn{Iw8!+fRo1O<|LbSQ@r} z+{OM$7rLdTeEBrBlyY*bwA5OFbgY^Amv*o(!TyyHzVzj%`phLN?l&w~T9!8Y<7mfv zw9*i`w%-35Y$rAb+aCC1F@gO_wt=zjWXG9Xam+7t|MI!)lH%S+n`7OZtt^(GmB2Ep z^uU3YxVhF9u@1I^#Ur!ao3rXI`%-yLoL3l_`}7?2Qgf$_$-!@v*oahNlTa)fY?9$w za|rP}k9QzQ)ey>xrnz0HSrXHXbt{y8yY!E5$C<#vE^JnEOBNmOhL9CZY?vtGZ;7C0 z<1{W1ONtp~3$!ygu^nepI}Q$5+11f5DV(Zm#~N)eQaZjmiW|5!#9DB39%;5%=0}XI z&q!(3a;JzxAFFp#V(r5k)1EcfTqG`CY}SFs!0*y)nnLmDtim8y(hR743#E0mcm09;{PE= zbDskD?BHfEUR;kF#oxPP`Lxl^$9^xTD)*GhUI!v`u=1wN!yZ@cA~Tyq1Q0)_*Ggk|5^;p~a{qm+zHWkr4ij^JaD6xW6W!8^Huw06u5 z#3)d*k}KR`W93pNHf6Q>1(~vP?0RAuTHS)VfnHe}MB?bapJN@x5AIAHnSjb+=>{>K zVK_Ye!sbRDr<6`9rf9dQlfrWDTV!)C zYC+eA*)FdA259W^Xu&P>>9bf#_!8zHE=g2Wxes1QJ|cvL8yU^NG&s1%ky3Ov3u@hA zh#L|?l2DZbI$H%jpUz7FmvX85UEGcM6@d6aTy{DZKzuUX=@t%A`AfqSS6aeaAsya= z=!o3A8gB6ifJJ8$Zd_EA;s@aj#eKj)AufMobw!yBaOf@uSrg3K4D#k+);Ay>8n4Tf#^XaS%4vD_G!t&=ACDscopU%oCnmeD)&Cx{tS36R0lL!{jxdwoI={Xvg zU#0HC8C7E}<9_Lu3CV2$s>z*x)V zkF33-=r72Hkf;ilx((#rCX3DqLH*T^zK;mYZ{sVF-w7+9POC2{m+0#iRzU)s;U-F< z^(Jb^j^tIs%BNEp8)T*hc`MceAhxY;#mtBdkI?>jcfWeNTe?#$?e+=q7>n zhm&ohwqPO1^MsX8r%q6R;nH`3unOpyzW%&w1Z%nY=F?dxsNZ)Z$lFX`I-hrE6y|*g zXJee8*TMO=hoE+BsPn$)6!7llDA6gn2+nd7y$;U(CQ5@52Gt8<;B+<7S#a`A^bR=B znP?n>nk=CfEQe!8pnws$&E)Qcv&Td~h4ZJnc`A@qA;786~yUUp$ugx4_o}*aIIj5I)WMM2xcg=h`B&J&%*u2!tF3` zgpFGO9%YO7(ve%-#2H3}MPE963-8pGzmwoI9G8L(v~Vx6aNBjrpo!YKg*>~$|j%A9zlz3-~PQ&o&ZFF&VjQe zxTA2sGf`Xc5PZ7|>pYtk#rx&~(515@J}9d69WA~EnQ(GV^gK9?Ci*p;1kov=>is5a z8z;G2Sow5b5VZIxoJacvg|i3bUSZ|a`Ns797EVG!klrNYnTH zfbaRXZxwt^%kym3TVM?wz;OLNAz2>+&_r#iiIA9XO3`^!P=6iZkL-8=utDcSL4$m| z3#%XwPJa^}24|v)+JRJnY!p^LohJuLZa95cw^!IGtU@}Eih{p(^#p0!m~Y$I1J*&2 z%BSNSEFmPod3K1P2jRSs6cjFXz89SW3QiTBf;2d@O!O)^cbn)DIB%QiR9LDIqXpaG znDz^3|A@&w3Fj*lojep{763AQ6P(9QG#>F7Dsd^83a7JEna=LYf-UY#_bOZ5=WTJHzr}q)kQJuvJ4szWo$O&jMe!)e=Y*9{ zXXx4DJ0H%0;X#7efpxd|7VM?3p!1Hy`3~Sxn(SC9Ut2s!U5|mS@nX;4B94N5-(=Bw zGg(6W7|wYqK>=Si0>9t@aJ*w$AaRLE70}t(MginzVdc}gBiMHb$OlbdI!D|4J}WGL zJEg+I!YZV*Q&4|0-U4|{Sbl}iL4Mz!by8UV!K7y-Y6}1joDMFd23kBB&T)|w+=p}Ggo2YH+7LYrIl~1R2lmxjR&Q)UsbqdCaZ@~;W z874XhPO*tnXPb$-pc*6U1+=owM4gr%mmmx292C^wcQ8Va3ag0DZb9=uhV!YQ^Nx(h zuQ&iO))>iv2pGQE*1IAKJtZ3XHj9a(l%{On1M~-DQ{EB3KDpG~~tu?p!7RJL#G|`E0E-=x}aCVxg9qy+fzY&(-B3YlCQs2XI zjbnI)J~)XcYU`4mBP@T)$QmXrzq#cgFELryz`4yt?}c-}iQ48Uc!#k3^^_9(gq42+ z&Pfw>k4Me}Pn^R-eK{4HQEym~R9rMoGs1Mdg#;RR8r!rR2VzRoO6E!(< zN~9|S4QQ~E)eV)oi#U2WRf~y?r00igBk?MX2YVvK!dmf*6(6sKD*ZlNtE0H1#T4m@ z5u+g-9tUA9h763!yTNyA6n>#*Adu;ik>EuoBVJwA84(qxm_8&5aeHqqq@vAuL04z2 zVsypjVMNEmuZv00k5ToF6+fGdRaJ7k_Cw$k5J)$M7a2JnXm>ZfmPXkr!Y_mjg&Eq~0BuAV_!VDxebgFLGXDnoBGqwqs8W-c&~`gBu|ul0u}`Ipcp+YqU~ zL99>K#zEcB)bZmYhDz2zUCL;X0f+Qpj4PBOW#sNoEeeo zJP&?FinZI0W11~4EJqti_eTo#oRP|~CGGZN2R_qEv$TgYf@Z;|SsyDk-RgLZif6A!aUAlI#2p!<9 z;SkNlXBfr>YRprhego?FV?cFz3DkQzqReRl-^ZX&k-py*GX;iYd%{%L6g<3&)(1}b zP&^2FOyo#7Zg;owaJ*sNYv8EokQJ6|JTi4m5s`=TPHIJbgxt8^6f(>7jSrMiQ`HpB{QZ zGiH)^{LuAo<3baI?@xgBG;YN6_v>G~UNe3HEYbKqp1<93=M8S-9bkXF?#ip&#%c1_ z-+6;>80gvF`S|Gd9wPnyng^#HL#D4?*n!ju+NU|yB;Y6cIwkVZPAR~ zz;+)yxGT&!YGT)i8K+F_#W156dV?q5JqT+})oCM@)mj!^{X;~b*_&PO@M zdN?2E7!ShvAjjaM#``(ODL8-4G5VpyemloF2hLw|j0@l#&QZd*BQ|xwyNr{xEdv^p z(32UaUJBgp`@3dr2BI4G;^{JeO{Q@ePp@$TPtn+w?3>Hj|#F=GmZe+(E7M$d;?@->u$~H6^muB)@L+hvLJgk zV?GcGbU6?S^kyKJx9&sp6J)<;ya{A|>jBO9PLP9|kL5`wt667t-STD#i z&A1oH#@6>WW4|CDYsRO79M_B}ytg*Cp3sbBAXl`0r5X7^Hno1E8BKzGrx`a2f^2zG zko9ikm>`?nhT7eVb0QFl^Ep5+Z@tECTmWQ!>t?rcsc?{rJA{MCKMh3U{3Z~I*l8e} znDg<5WpEM@F*qNH7;FY21~&`mMz`?`;oRajUIMbA^$xf3k$532cbt_`{eVbV(}lCm zZ7dYd4!6PCa|!(x@j}F&6fb1vA>lyyq;MeY>tP8e1KH4ezuU+a1Q~vjcp+Ce0a@RQ z;(kcHP~5MG7mE7}AX41j@w(s83av>%Hnu*Di~@2+>rS_ExgZDK#v|f|@_Jo3D3ou2 zNdEM}thtmzoXW4XgLj-D z-?@!-K#*kJ;9UNu*7dr;Wn{?x2L9Wq_2u#XvYTc|G!v(ofH|7X(i*7Uua))l* z0AzjZHr?0-WJBu?-8cwjW9$98@r57{>qb}1*>7y!sT*T}T+#ZtZWIf$TQ`;o@{DfW zEXZEncml|#)_uBhNRa)y@ee@`=tdmo;;(Eys2dXmIiwp4fLzgfR5w-uX>C2=Hns_} zT9FsbZ$S9gYrQJb-J&D9R5cER^S2j%`<}=64A^6DUURj_I8E$@4Yzv?Un0JWpL^nE zk1-h7wih z*F#~(<0b|x&jb72ZP#C=8-D`!s9>K1J8|^dt93)`htbHfC%$wUX90Uuuu;Gs6D$+h z2XFoyp)CUT$^M^z<}q4;eR=%1uzVA+_nzAY?3chkmN@?&*m1%B3hV>Hz5({3U`Btu zm;@UI?1W(W{c`0?!D@k>d~?I?Va6(8?|x3~8eq?DI*jqoHem1V+x4=?*ahtR)&q#k zi@8r$N?ybznFu+UclY4_Zbu5;vIvh%h*Jo@fe<7 z;~1W?iYeP~AoyJqjL~paBM(oPQG=(ZoYmt+6zb)`!^f$SSHtzH?!#b(AH(BT@|Q<$ zgQL6L$I1RD9`};&8cxkefOhK}9*y_qlR(ulcUPdje+68L{{W9cATd%`WOUv~eI6d~ z8(jj!{6B%Q8m}#*f37#|8=DvaqRSx5XJD>3VGM}tC^o1j;YQ#;5FcCgokZ>SWUt{;Je5_yC&=lTVXg9PJ!r)H;yqPH6d{rmRQkC z8_B6*D}nbx2WzB2=s^(Es6Dc#?_%4lfbCxXe}2a|uY$wU!;ALIv& zRevG>9!!18HB? z3a7u?3?Fa&Mm+h6L3=;-<8H<6_WgSSW|Zu96GSiMI$LsF7Kq6p zn8|T@su7k8Lc%HN7watn!CZ_RBH3RCQi2^SWVJ1tBxD0fiN`RKiaP=J^=A>Py9cI& z%Mo|*!(ImC2H-t>n4)l}QD!t0-93HnWqNj{OciAQog%##^6hf?AutC??RP)(Feo)-shq6q=R5Z=)Dj` zp-n78eJKOMP9)_BS->mUGcpJnLicJThAg9>(#h(Kr9K@X{()bx5&H};e8lMVcAP9DE@o6B&gJ`0GbP$Cg zR*}d6u@(fU^WtZMxC%roeP)5U69lt5em02vK(L>PXZpA`;syqq1>!{z%*^eY9ku`9_ypcD(^B1S{-(WM~riDtt$3p=*FQ=|YO(Wg4~! zy+=|NsIH_ga1HP&;a@;(JOxICGi%a-_DPUgmSS?phjU(&^O<3}B3no9wD6&@unuTn z?=U(&`*umX5$*=C`}!D#tq#haw9P?zlkRpoK=n(QNKAK^qxjt4GLT--?b*-KZw~;2m7rfQ3>H&Bu&Dc;Rg-XzjrXoeD6sMP z8t+2j{37qymCePw+$PO&;#!a#k@YjjiQFL~q&ZH!)h4A~D(-6`saJ#P?%C|~@Wld~ z<_z5x;OgDnzof*&z`b2(_;V&~HyB|^XxBWX`WX;iNuV(%909=;bj`2nt0Fs?w5|nR zfX(rG-+|{GN~R+i}(1=gL zQ{6>G`yvQ6yaH$zu>Sqrwd9tQ>uv$6UklVdK=&J0+*gzR5!l{=1O4oTZ^2*+240;S z=ElgGujhd`rTW6UfjAA7fp?|){I8RN57nGK4<1bCz~3wZmL7JwP5&X+D{qlFjF<F!9Nnh%eNDPXAX-avK!4ybT&cfl zHK`B6PMTm-7`tQIxET$e>k!^B=?Z=hU%iXF2R;mRZn|*~JIkNkFm9~j*T=AU)U!b# z7C~%S9}t^BuwoBO0I?Ya3t(7ZwmZ)Fa2w9Bp2O(G5A!9>g8MpE`E8X{VpC{A?xZrC zLId(9RofKWPgK%Un?m#PC2{MHSV8OQo^-iQ;icBoY%}>_>Cq$ij#8AD0iOddAB|;I zRec+QkNgBU`Cr2|`L3_QAEkQeJ^I=)ruWTo={+WCtjQoTc7&7QW*1tbk1}$+McIn5 z7(ND5QKQs|8RAIrqg3}Cp>)&FL%-2eEZtdfB^;X}rbnq!w?k^=pDn2mEU8gy^iHQ` zmq@J|XU1wRT&j;!^&^l1Wu7EaOCm7C)nz;?&}>z{P}CUuap_EU^u%EPHL!FxUM)NV zA9Xgz7!%$Vl$Ajlmxc$Ai>M{%!(cHD=Gq1^f^-8!(wmljB|2M}5iw za@q1h`PlN++`phGlt~O~co>6wkwH~s5peQOctm88`U*1Ylms2yi9A@6{u4av=y3^6 zO+AiB3(3_&{s3|{$u%UWaQ#WNxZPtt`InK8ziA9`v;;aC(|L&#;CHR6PFM3ea)MhR zt}=}>Jg1_TEQZ{;Hgd{2^y6U=wd8X6=h6R0Bp_xGLJX`~ri1dYSt{pHf#)vNlHE{h zq0)U+njfUJ)~Ph{dr*>V_pwi!n(4wsR1y>)<`8^pJ;)oGz<_?#z`Ryxd)Zp}#T9QQ#e6*=*dSA#$rRu6ajh3b=85Fru#8UfO zwEzQ+_SGPRLOh|OmRtlusRm9#C5oOrk)oDxgLW$eMW>2rjz*w?Y{+*;bLRWZ;&_#l zSxOYO*P|@el2>5iHCh-T7RrMxT;{Z(q)}r&id-%6PQvqSYNS618A<5bs<|yLgCYw> zY*?a|&`FSNSKl)zv{(d-ASelS3Mx_bY)>j9M~uGM=Rro2}+cZj`F#{=Eze@C=PwGO?eP8%rRUIRoaT-Dh54V@d`Ec|1lf zsf4iPhzPIti$u{|&YhH836YfyxSj#W+y)tcuEe|o%AYS??nCD^fhnw4Zy19%a1=&( zfW;SyelDFJm#CbC%j%m0{6%#vn%0b=$O_+D2+X6v%_88#Y_zh7^qoR0Gd5G|WpFFV zeO%pve%1FW=*^^`P&qr``xoeYNI$7^@866XD#fB_iez}tsr*EnF$2u39%TGZbg3mzF|BKu)^skvOE#}j?`1EbWKbkt#O~^EW%C9|wy$&);tZ-aE=||i|Qb@mKnPt_m5&OzcO%z1iXDWq~MX=96D>Y6* z?5Kh#wwfWp=@5`tpszzq6ym8BwWQj%B=dg+@QDpOUj9S9U$oFXfBC*enBLVyUK>6(}Y1CjXK)z4IvyK|++*Ts( zu+DXtnV}TX!3wzA=h4zqzm3bIly$%mk1gHsSkJ>bcWTWU!Y1m-f(t0bC*LD6gs zie?nIdGSbwT5>$)j;s&lET8<^p_)@My?|rce6_M);S;KxC>@mLDd4?#)4Q&7pE=T#zb zmu+dh!%}7g!ZwH585G+lqA%IDD4Kb#UnGa#JeZ=EoPQ@+Vq}qLv(=DVYn+dTJI+R*ebLS{S62 zLycAm?@DNGr&hHlqx#?saV9{?p~iaA`VF+cp;p})wW6r8QMA5*)}&NuUEEnlA={r~ zwqLCAD?^E*E)U?SC8N&9sSoO}`Z4;eEPd+AX`hmdq5lT;*GLZC8CF1_#p zBe7T`R=P|8y_d0Cqw!m9$_W_#b~Kve3V0l%$JH8NFutomADaXE8jW+>S>F-AO?w$l z8k>|E51!RgOE?dhoCfS!P31xj%K0v+2FjWD0r=yiL{W?9chr&z(40ff=Oh)+2WcI3 zY9S}N(hfm}pybH;AAUoXtc8uWwDE!_qfdnXS&*IYopzKQp7Ti@N6lYB^Db&0)Z`Ng zn$u8Bfq3VGa>Scj6{7ifXzr!vA&K{@AgybhS~Iy>0Aliql|yZw_fbp6jlkqFEgaQU z?lI`3u0~Nq4h@x5Ln|&F(r>k`H8FQNL+!F3l$7~fX3fc={@a}0DETF9q|?TSnvDCA z>OTj?zl+b2>Mj#W%@uKeCCrpp+J~CF;%hYRXQnvCdw0eU}WKhf?(C*u1%=&*dy zUug1$!DBxh>iaH%#|soZE{b@QFm9hq{N^U(3kLBs`df`Ss9Ota#kth@UbHqq>rQG7 zJ+l@ycyvfDc^Xo!h+fG+Q<@DE>IclN3e?`fq>PS%^nSu$A z3BNANM~%gz zbr@PNn_8V{AV_=rf|5%`nNBK+8;R+nnFumT<))iX3@CZjST8|lLTikv)rkg!#6XUA zm0T*`EXr3xc^#F9ojFKq$X8;?)6m*wYIPo@y$wUjr6LcSsU_b*S($|(ho89uQR4;C zN*;x!E>o*bkTG#>Dv-UaM9HP<5mCPw>T{?*@XUcy<3rK92U=H}T5SVOY7?lv(Mrjs z>er(FA=FP$ebgBP&7}qp(Wxcze6P%g)@YUcpxOlNthq`aHRP;a$sA}+HnpG;GZoSE zcgjwkx#z*h-eZN)C=Bp)o?5a62G-KR5Np~vbRUvOja<=s9$I&qT5Td4v$9PN*}Ke? zT&i9m>Rxn@2dRFx%KbQPOgQ7MO=!I-rlCBPnN)v@4?jIq!kAh+D zH>k9qxcgn8`qx0+JxYBZ?r6cHi{d^7_OSRY%($r4UVE#NS`9zdYwtE9=~lh=h9i<* z)obrLA{nK6x$S5PU+o}$s+T1%s|O&vt6qQa3KBMYNmW*J1YITymBZ;a?lD#L1 zlsl;aGP^9Z-lRniDoSzlD?no??!6Ex_#=FKV$wFnpN_676O!Uj2x+&P;!g=_ubSdd z3h5{{#h(_^J~hQ(jY)S$^i%LkEI1{>o$UzjY|pR`4tM_9u;xRQGC{m%V9V75Xa!y_G_LZ6Jwt%3nfw38FH*$^AIch}FQ= z@aKU(2F&-HVdD6Hne;o5+-vLG1v5#11obI|e2>yf?AJi$bQcyTRdjoQrtZ&&(TVci zmGqIVyPdlKw5hwHo22KMU!T5vkUGUZ3EKb8mabKhM>fbVy~_m0F1!k3dH>@L`N?`blf8x z+rJioaTGoyx^d~5pFu0Y84>ONn6cjoyeB491F=5^YtGn{cE+BxGxnsNu_x_}J!v-F z67=^4w@7dvS0FeKSN|PlMcNr0X=iYxoxzcI21lB~y};lel;GkV!NtMb860V6aHO5V zk#+`0+8G>a1~(4#gayBr;08E?8vt)-aHO5Vk#+`0+8G>aXK{8{2!1FyDiWGfdLXFiAVZB<&27v@=Z7 zsO_A%l*UGyJ@3yL{9JIyVj3_|f4+dXGkDU@;7L1!C+!TLv@>|p2%eLpvb&o!8k;{l zq~j5t!I)ntSS!&nv_NzWEjT))ozWrfj1FmMbVxg+L)w`eq!ArXbaIvx6O(4!e*)1N z{t>v|*l5+iJtg^Ta5&u%i+v|*azviFaVT~OscxWZFq0fRp40$PB8mNlYVv4XG8NRk z37|Or6Pu%E0oByxMK-69(ygGHX=xs*J)oW|O{e<#G6Nq!QZ&y#hD= zG=kuF?AG+srT6AXKdK)MUZf|LP6 zPmtcixgeA1+Y4lr(&J&bqVT*aj+@4g1K%1x^hgC>0a>40FQD7q_r1GtHIS85#(5ir zbO*@wBvlFNL6DnCx)_pqHtQVUtAB&t^g7N{Q*M(!vMVG?_q%b7fOzo z|M9{<`!AFnuQYVZ%||z|9B>I>HDDuP6W|&EH_zPwxEa9BbN2(D1aJ!7{^JE|ycmsl zh4FGU`|tj;yTpagI(U?JcFKpB9t{Hp|B16X45>fkm2E(SCKmIGD+E&*H$ zSOZuKpzb=$T@UvPK=e;aTrW;slOEBs^1x+(*)kw^a$;7~UALAdO!GAMKK<2-l*4aq zsG0STX@fr6`~0M5MtYy#6*qh5Kc+mf$i3{T(noLYk$mTsGu}%6>ifI4cD-)Oo}W?-gxUpd%p4YSY3bapkIF6`1%FakG7OedGpk?N$C;2s!HZ;{h()`n||1sy7RoJ zHdU?6n*PqY|C)Z@*3(a1GV+I?)_*+swzpymHeMUO=@)xTu5l-ZFM4;%zvgtg_~(zE zUbfA(ZAV(H=Min;BMV;bd2ZRPVUH}^yy}iecKp38J6%;P-~QXzb+|=QVt~=jhIdK8s5{TrudDiw-=|rTWlexj`72<9z7}i)A?P?GFN}~ddaFEQrFzmE%uXt6&{}Wuh#V!yDq*mZs$-KNI=f;m8oHM%a*^I@v zEWP%#S0a_y+;2bmv+i%l+=IVpjpjW*E@G#&RzyZKpfa8Gg08waS@qpogseoL- zLO>m0HQ*Y+9e{@c&j1bp-U1v4d;6gwnpcSwgunn*i zuorL;a13w)prC*E0TKZt0W$#kfC~YQfL6d}z&5~6z+S*Xz%jrH06QQbAQ3PUFawYe zxDde6O)FqC;1J+_z*hh_I<@YAfdILh2W~N-0?-0j54aJq1MoOtAK(z+eZW@$cQo_? z0|8?J8GvFy1)v469&jUI2jFqQKENTs`+%%r)K9VEQ#Zl1w}c%&{0c%ZX|5^(y}?TF^QoqP&$CT`S+4}Tz@laS6SVCwTdP37*58zuy_P@^ z@a2O)S!0CzzNOF8y^LRtmHx?i!H_;Y6c7B#E*7}FP?dk2W~F~WzNGN?%?y*~nG*hS zqMH6cj1p4$-pY?UD}1>l2wpo(Z$&l{0som*9^8R|VpnpIf4nevN+LGo_Cvi#dUz;X zhumBMPiKxooF*dvRYL%X@1s_nWi}T!F0kS#`&mKTaga@xpn1xkf3lec?oVNhf3l_s zx2IJGJ*Jy!vi%392B%qeghBo~tB&wPgn4kTWlvUTK_^&sl1l^h=cSbV<7sWuqpdQK zoh_i_kS_koMpU@XR(!c`M)^aQ{QEOa`fjTZuCr*njmV-e>_HZpqtiMmFNW{|YOAxTM1Py=dhp7Zyk_x5AfIX3$40dy_HkM1Q+Y zd}Gm1SoymG11|bsmxu@cWPc>w3#~R)ZTT-uq%Xc6Ax!yS3uUgFkha5@{X6ut>gNY( zro0^=*@6XcyS{KKkovqImVb{}ZD)MhR{3qQ$~Vih z$CWzz+x3MjTBNVC>@A#O(sp@r{fz#9wd$8_Z3O*X}eF8Js0q|-*a-n1GHV{ z=KYz0I?OdW+OyjvSHehtX0;Kn`;)fc1F|&>wEZ3!ZG~_5`?9qi{&t(;qMg&;eefe~ zXMgxKleXU@yxf8QcAJ&mn4k+$e*ELwH2v-L|Ju^uA-;-IYsJ@oPoA>m?LJ%f6+za{ ze>v0v+I}x{O`i6jvGTWmhDqCf5_bU5-+ph)rZdoX`A)Oim^}_SjM*>B+wuRhjeYLR zqrcsUbBchp-N(rZ2hc9750V`!pzU!_lU4uhcZmIsN*jbI0RK$dBlxc91^d|L@p=$M zPu{tVFY5^Nf$fp+MD~M>7t3;CqFHCyx3m2*JuEZ!O?>~cJ}?j1cG+LEk6@m$Z{`?) z`OUEi+X>${j4#v3ddmKe<-;_w+}IXa-}qkPyNr3w_QW>Fa$(uCJ@7rozKZ=1`xv$v zwo}#}wqN#p>}y%KS)W-)?RMhKCuT|%ANaHLiQlre%w+Ie0Q`REp9bLfzNYAkTZt4N z^;`hz(Vs4J+Y1N>P$~w{1<(}`2jEZ!r(S))7q$HHb1(iPJE`f7_dBl?-n4ho?v)eD6K`5w*X6T!%C~%Q&b3=}?)uwV19ts-^|;efn~giyo|XO5 z=5dSGKRxH0sCPDf7Prc^wOSdF)IGW89pll`#bbYc_r#=EzigfNhb>bd{ovNfL!R|R z#zY-iQ2)urtM2L7nE38_hraLbyWr{R=fmxD>5QCZPo3MaD|*q#MX{yeooc*!&4490Z@l(*@80u^pBz4&*!%cTcf9-J z1J8eZr#EN${i9b$Zl8Nm^SiGkoAQ_MeI3G|CxD0S3;6A_}z#jm|0AB)lt79Ty z3}6=ETmZkp*8*+;{2Z_w@G{_Sz!v~F8d49yFu*iGKA;@19IzSiAmG=4gMjw{UjxF? z@Ztd}fP6qXU^(DQz#V{J0-ggL27C%wfZ2fa080V<*4_f(jf%elybkyf za0(EG#@!ddyP;;OCkcnRQY&Rwz7IO?{rRhCU~vEq&gmLVaGXVhQiJQp|HymPwwMraq5ZLy;$` zEn!{fRV_)YS(K3P1vZ%Mrck}USd7K>YN$l^X6i^cC-vbgAFMUS_WlEn*TEf)7) zkj1lM7AxMe#jQk^EnZ(rDXynjQan*k7Vny}Slp_?ba8VjSlq;6>Awyxg);yaiwj(2 zaka~0{m}}Tn|~};9vTg$c*m&~3b*Ny#XUQg6tD6ji@TsK);25k$52tNZ0Cj>N^$p% zCB>uUWbs^%WuC(jvUtOW#o{$=Wc?bpEEadqkj1SumMw1KAdCAsEEdo1lf|39EJg0L zAdA~BEGceZAd7n$ESB8a1{RNRTZ-IuK&g^Rekoq+!Tjb0A8wQcBrRc1;?swl#KGd~ znPr*RHqZ=j)3Ahjg$Y@_&&0~AVk;AP1&JlK-IC&!FP5z|ONuv;SW>)Uh_<*9*<$hN z5?Q>&#WK&$L7)^~V+C8>Fa(FYWh~1Bt)|V3AS^Sy(t~DrzlSCD2}rV511u?Cfkzha z#IsmYRvGi|151$$Z$v@*?XBMBHLkTk+y0AC`H! zwi;4*0xYSUt*qjG4VHQC-J>mT$Rt3ehwZdm%4S&85t z9!rY5D=5XS7M2w6MDG$GwN|gkeFBy(uKH4n%fOZtHxsZ_IQ8yEA|Pz}+-k-6 za3Cjn%MkUsE6NI(x2=%Ht5>X0xI#=8_mx_0R(xWnB~LIO$u}S zs}*oRuqe!fdJyKdIF|4_{?{DFf#Ir(x;iE*+8-xIAPr#0k@z-bpH1@)jcfKt|X!Z(+FCAggV4b21VZ#%-5Gw2R|9yNFB^JMuQ4tbs#=cOff_&gk5G zdpl{K?RL^U!tJDaV%uq-N3)&wc?R1l&!g5(nkTEBG!IZaX`Yw%IqKtE{V_k}i2uX^ z7yvqG9#MAc^CYs9W(QZ{kgovE+fw}bgO}cDM|ttAud}>(sMl%l;Wjjn>JCN)vF-5$ z?PdqfL$OYMo_%%FJnHJKKRnOsqc@{ z)i`M$lX1qE2Vk83Jkyem{J#KW3YT&?0`E`tG=6RYTOz^b%T!I7*Ie1uoKiL_1wYZg zq@|%TWp@6&tfghul_QpxHRHGGM~qFWYARb=xuT(INlH<}vZnINl-jvPN=j;DV_j`| zSxaq0eRIkJ{;qm*Sz}{LdP99nWqnIC>@BaXYiO)&O3AM)YpH5zTH2gan_tsVUpcoZ zxzS=dq>3_f0s@ng$0RpbEJ<0`+>}yVUtYJYqB5mn@kQnTOTiYcLeiI}ctJD=HiQYq=4+X{FBpKhU_GHMn_IbISjrTAaG9qW1q{xv@^o zZYpc6sV#5*uT?8&xmDCQHg9nAL%=G#BwJR&@(w0?KAu=^w{Y;&o+T2{(V#Tk9 zi=pXxMP*AH>niambBZ!*%Q?Kk5Wwc7HZ_%5 zM0#FYSu^t$iGXNXOPMV+uaM!3h52Q5%P0eaNgF>_BEzK3wzM%ePM@7xRaIMGS=>}s z-^_s$6u`cCS*7UWqkVR6ep5p=Mj`OQH+%Yg`%Pb5xe^&vnO;_2!(fnucG_gjvRKN) z_Jw9pp=8xJE@Np*$;?8yWi1#4mN(TlGS%>q;&BvgenUf@8A|$m86!H2u3e-o$=S0j z8vLH{0LIC7Zg>W8BwE0 zdG_ct*XdEo`phalDqHYuUG+SzE4g~t2-nc=dT%Xmo!(WuXdSU+V#&m^O)T7VQrA8I z)FamGdZr#RQrBDg90ojB*Q+njN~zQnJjsyBNzwb5kLa*u_H`RM9XtIeBmbR z3%xD+S>FBn#c&(Fn|0lrsQ27M^`71Zbb5L26185m35&h55RI%9@RL125n3-sV0~7~ zW#sAco()V}{7AjqZa#ZMLa)+$9nps&mL5>Uvh^f{GE_p_tWWZ|26xv7dcc~5FkH!9 zJ=#!YvUjJbrI|2=xRR=Q4)(E4Q)ONQSqYl(iWB$Jy=ZnhqQNQ7tW z(Vkqr#QPG2Zd|)gFVT)eD0;YFlB*B)&^J@xq>j`FAwHYbY<*BNoGQ~vhU3|&5Ab*& z)}ym^#iMP8g=p;rEDZ2eA*z3Z)oZ~UsC@}u4D1br$!yPh@UIrxe^`7||LV0Tq5rk; z5DQcZ4}RxR+XT_B+BaZ#gNd%$EVn^oWFveAY2U(!ksXw+_pUjJbJ5NQs43QY3wIZ>xPwUaHd)03G+1>%LcY4h_{cLT6nye2;U}qyoPcqS`*X+@g zggq8N=%{_WCRrb+ZG_ZVNQEDv$hQy~pq1d2T1REZ5vsvG_qk@uPVK}R*MR#^;kzNnOHKhY&{bdVf-B!EdhAHO-*7!PmrtK( z>mI!a__1i6J&^OsdXi@cnhTl$T1}OngmPV{C!xv02hCde#KA|lc(&^^w8$zwdK27B zP{+p71uZUe3;7hcRiA>Yk$?nDN!AmpbaX>g!RQOd)MUM{Ff@<1KMMUpwL99~2YR%3 znjY`{g|4sHi?swqzxp!0_;S5^gkGG&=P+$9V#0Lw@p${`<6tU$o!%!~ABVC@CW2>s zd>n%91KDxedLQ^#+0ShK99!G8foC3aa-E(h_V|Phdec5xmm@TU;6WE7NVYylB(yWBQx54>Df*Pd z`t2%0m~sRztgwIZex|po9`v09(3zdo2cR!SV`sm|;FDSOI^P`Cy5hY-pBkZsvtPU9 zh~D!~Jv_ye?a6WNRO6)dkkY{pd?yU_ z&6LO;t}6UM z`Fa%FI^BiROV(XmA*3K&d)S3H+c-Vq3g9hxXJ~k{ z_qtT?udU*%1cajPzZ5L(F$hK{$(wC@m7XsB)E{9YU3-K+8}vb0dUT4s0|t36(_`3G zz6#A~Z5RAw5HDtoWDh#DS1--BZNdjH>2f%|D1u39Un$FNw`39X7=>Y`z4W;o5Ha zM4&Yw!xYb55!&yO@4sRJ5P1d#pht8^E)UQLMtp_r!n?~Xbjc~J=<(`hexdJCv=Y={ zGsB*d4BH3$y)>ppi(v*&qoG_aOQkRN=1zpRXbFrAd!o+5sABlUI*RUWreKd9_RO>Q!jA&Hr6u zQzF;K<}byj_;hIVVX=A0VUzjq(ZaL&(%%m4XzeeqC9PgS`l=(xx1+5`pjV8BXc4;0xE#IL2tAIS>q)#F4xu_r^FGV-TjbTCyICHOkM3l%(C?f- z64!o^>NOk6cxlZ>&aT4{m!52ZmuVOYz{^0M3j1HH_aNIZM>M)3C9&BayzUk4I|#>W z>%r}V27n<(ANv`Nq$%qnw9~6qZG(o6gUJ6!+xx&}b>4UXN8qMNjUk2@Vyq!b46y_e zi4tcVB0;oBh!R7c2_W1E2?BvzgT^Nh^WjNZ>SKAVbG-66i_T`6*;Jfy#@W<4=bW?F zrPi|4`Z#Bu&1_<=v(`ELdwKSU_Kcfi4BY%iK3q6;1tQq-_zJcN_#8m^=QK^B3+3x>J{lD*Wpd$LcKmp2% z)BvlN3f3|Fuhjp0E|b%r1nyCP`4jhm`~>IYv`WM|d1}COqFL>3S&YvPjAJ2QscXY{nqs!*j3+oy&o&31XbC)<;vSkOsE`|-9eCC~N~-LA z&4JlEO4nbjG}rg#2h!;)`LhGFIgd&3L=~~hztBl;_Wi5%*T*@1~%+E%*% zQ}w@`vn^&S1N5`*EWrTH;pU>26ZmoWG)BUb9Lk#Oal8(m6?l9+Q=@CebcmJyyH-Se ztGvMDX@Nq|s?fF4f7gl#R&(gp`4nl+>_9$@p3HyN1gTusy%d=IdSGfnVDh*?CTowt z=!lX2Oca41Uj%Eq{Hz0T(j>QbRTQdssY!e-WqER{}Gj{b>8oj+dYxL zA4t6t2)q$+SfBlR#h}Qq1n7B+yvY^)qp?c@vF~Zo@hGcp^|S{WwjN=v@H%u@WH zt^ZsFI_#B2(?PY1Mw`$(i6B>e6%Cutm61g0t}eY&-Y`nn|LA-!R-ccIW%mG!=iQO& z`I8!(o@ZNuODx8|hyI7IuG*LozCq+NC870k{viJLvT$Ox#06D?yFr-nB}~XYx`X-j zlvbGwSiG|X5X*Y6r^#bEE3A>DBSsHrieM!(gh^k^yt}l_OK`6iDQSYcEaGa9&UAlt zMAE&1^oY{?10(1|)L;Y#?s87ok0YYzFacEzXMx0(aD2qr1oamN824b_r-D8fk#|3* zS!JLyB6}Fx{VH2BP5Tt-lUbQEzgN2d_v$}g2m+7zNg49=zBwBe;KxPr@(92GfIlQOoqA=O7a)-rkUbuo>HD1 zV_P+p;(RtuTACV|of;@*66JrT{3qY2#Mq zHxy%J746G`yNh++>^B0lNHTkNU>12*y8l!4|Dlbv&teWP%LEqH^YR(Lw2z@nrcak^ z+x36LwFU9JRL|Whd%|7XC7smP6Dv+C_$e0|BO?D0LnrcImq%o3QT~TqAd7jLy)48j zYjotO%6tmXiih)xOzw%Ccar|{xX%6(c4%YwQxuRDuiFcLO8Vr;|3g|^R1S~+f3x=e z8Fif*xt@$}yY@Z5Tx(yM^;-LWjJQ`ZX_pa9AlhQ#)zS!x|jdny4PC+d#hh|7To3UM}dcb z97xHdFH}+nC-R3>_pZo4Q@gT-+N|q^yDHqcd+osHz2yAYLYZMGx*#xigS%#SqGOiD zMt*P6tJHD{^FcC6UWs(M6Yzx0)wO1hkXq=o*b-eeipfZ73UJW4XlrQefye19$DANp&&T5*X2}zCMDLxc8qD4rK_| zx_l5jj`-`&9Pe|;2b|9o_1*tj86;PlM)!8&wq+Ao+6~30yr@DFx`*mJV_0V zXSvPR#j3!Vn8v_eGXrC&-^{?cg1{Iyv%VM@^QFKzF5$`p<0eQlZagzh?k@x5W{r>e zyNHx{_UKpOYEH~p#ZCrF(*t8Z3OoM-pfh&jj+*$oojD0_x?}i)O7c>-Ca?7E~hK&uR+nR z>}xIHXx&S5af{B~3SdTJ`f+HL0P=f~GmcVo21$2#s1AHSR(V|xd_KAZeUmz~;GT^x8=O9G8}F-rsE zBIe&4csL?EE-)@F@Yo6ce<%<2?C93N3=FA~VH7e_>Ey zY~&d3*rWwU%YeS%;xBvCf9p;AXs-kwR9f5>4Ppx?1$U863?n97s5}^d9qkcLlJJ*- z@un-NjC_<0lxar4JSZ?N@=;9F!!wK`NhFu5_rz949E{+3Lf+}~B;QvUe#;z7w1$N@H6E8Kp`Pk(l{}{Uk$O^F&mz{XN*=1vwk33?8)0vBGDt6+s z6VEieRP2(GU&dcLvSjSUWhb6wb|bJ$K^}|0QOM%46PKNMoY_TV*NnUYyI5oncH*)V zzriz|YUj(D&igfHcNN*iOlO<8?8No;GufTSt_t}o{GCO{_d2$T%TD}+*&V^I1^G_w zjv+gUow)48_nX~r>~fI5f!$tYJFpX%o%nXM+l*ZW^1ax-jcfyU;<6KOH@h|16(Ros zyS2z#u@je_c#GLJVYd$Xum_#a*O7&=6PKO%ON24hcahnR!>$q;&%}1yi7z0Gz;3SD zO~GzHGM=UFwiC}n--`b%^f_>zz1=3R{KV5tUx+>fo)V@PPbTnPizOq#hrl@OlSv(~lZ2dNIr58Voexdn459e9@ZQ|04A0_;fue=`u{{~zS{sWj}c%EnZ z{~q22@_wTwM~!cI!g)UmKc!!AIy;c9f5O=&F2CX{(W{@HK;I1KI|AMPR=k0bh`%cA zG_D`Vt_B(3E$ANS#TODD#4ZQBH2U>9>Y0Zu3p;V;C!UHv4?jakIh~W>W6_ICFCI(a zTcJxLuscXPzJt>ljqGNIvrSxf;-6%Ae&*umGT(#XyAa)e#7`5{K2x#V{^%g5>X%Mu z7P3t2#N|gk5q%>0U&Buld?b2t>BXbakA%lP9-S| zZQ|04cM;SsN3q*a`7e^sab$2IJekAEPP_C888n73aKk-`h>Zcp=w+#Lg zdcWU_R}$o>7`tTB9mdZ>WOK0-mml#0E7y7a%!khoE0=gKLFLNCPV0iWM5l8qvJC9} zb%J;r;bH8?fy#FT_B-ZLFYFVM#bYn7e8uC?Cs2+Xlq&%qi(XuM@o4lb=?^bmaXN>> zBhZUWFMcE4E0=!XT;;oD__5(R!_$UchQ~pb^9ZPN?n!svZ^G{`^4X7USGu!JT=|Hv zN8bWJkNz$ATJ+-5i@$-s6@DH4oA6cW#ibYLeLC;gz&}C10^WdLTzc_J^!4zFe{(ut zf-gcZF1>gW`oy{PLype^cp-Xm>BVOgRG%DB^_gTm&3H2DkIthXJ?wO*AWI^>xYCP{ zK)+`$?;g={f)7V8F1>gxLH?sa`M)~Bd4CuB-Pm8B!1y`A*(NS~@e2gmp9N)q()e-X zo0XpYBSteHBHN(!Rvz(o^zHBqly^IP9eQ#37jHv9g#2D4|99Xm=*6WMZz8Ba)Pl;t z0{b24bMRM%tQ323*^4hAsJwa?lI(K~CmD_<{dVkEs{N3SCcU`Qi;qI@z(1rs?;>b@wGLFdR%5?~eB!WgL&kUFwuviW z@nvRLVK^WA4)j^rFGMyMdvV!|7ob-=Y^ELy;Iq;D?IJ!6eJkb59^-Uo!>6DZS9iqwz66y|lJX({nk4!ovXRQi$|D|+e#f(nyObjl z9*16B{yO15nUR?I#M+o1??-uMj80Ris<2*;kyUVtT%T9bf`dy?OelO!L zd@Xu$>BUzQ~(dW|+qaSfP z$HL>#i%TyaLr^^(Q2wqy&I^4=KLvl+AE&=P?ram6z4%3f&inJA>`!684n409>O70A z3wv?diyt$)4-9vK%I{snttQ_H%5S^zHTd06Ig`gao$HXjiC=N~6>l;7*Ui2j`+ewn zSA6F(WW2L|o4D-7r=iz6;u!6a3(rLFuPemU(chrlyU^#rQ_zbmy?8SEQg|YIy)S+= zdU5H+N1?BPPfhhAKM#Ptq*omYoIwex<%y`cQ>ApL6moxuMtWZOwEuJq!Y38S%V z26g^cVc#}`^55@tHX$p;UR?I#3(t(-IC}N_`bRl`;rwPm_jw?Gh#A%#kUZY-+JseAisg#24rio z6IXuXYtUJQnV#=j}puVdUP9L{wLvPsyB%U(Q07r6B(VyD7-huoIV^c(U1z#7^U89Qh_8OTf+_ zN5!MjXHkyy$Jp0{^U}xe>n3sDo9XUzEJPm#zxr6u{)PCd$Gm!;G(2v21bl>Y?gv%> z4#QUb?clr}p?x)EtMDhTa*K!1>-`AngSak(*P|DgUc3gq&f8HpS?|NE(EI1Hcm?4% z^p_Vwr1hw}#>@+?tz%CV85_bN0 zC7x*c@J_4FWcbLie8h(n)F0x&vEW6%`>yhxNap&4`mdoqP9r;>%=L-2hxkGCdcOoe zq||v7z8}4~$}hefz3P9O_Sg&Gf!=Qq@$KkUpL)u*3%(V-UqA7+=+zJDf1T~{HR%0* zDZYYmjP~T6b?&-`^P)2kSr&F9tsTWj5&i+YEsrukA>Z{yr*rG0T!%mEY!g>`#or`+ z54#jl_MeRP{EkiGd>qU9IJU>H_yL0K^01Sip^rPA1<06RyZwr%qmM#=1V5ADsp!R( zulNXpjw3HJaF1gPc2UT#Khkp?#jif%^%v&z&YO?0?m+MN7xDAxi}Cvs`j6pf(Tgh| z@ssGM!e2!H5&SrMap}c(6VyMqg8u<-1Y;;yE9o+@>mXelvQ?xLS32?6&8{B1%NWsX7b?h}CvexQc zg{%pCe|{7Xq1XAhm3&vi>(Tq?qj)J{Fn%(zi^1+Nc2kk1V<)bB#Zw9YMtze&m2(94 zD=8Q2@y=1mhGQ=-dvUHu-mfS9i{rU2fk&ekmtOqF81Fb=1yzqvK&{_SkMY(aYe;t% z*+*k~)*<322!D;;A?%v)w-vji$PQp9F8|`Y2`cA1*lB%o0XwewoVT$Pm!0@#^je?X zr2XE7Z$$5}SH#y5ZjfIKb}LDD2|umKnz0j?AMp_3-?3YSo$48##`%EkMeO`~i!UIk zT>04PIL)X1<|50*&OdJA+30ngJ|e%_@M-A%<0hU)(0MWr)cBqVsvToVS2%;?$Nt3# zWYMG(S2@LRjOIK9(^tYz)A+fFV1I^cp*X8X|q8czZ~p;GKKfsCNMuCW8Y+(xa`F<(05RtMU-y}JPp0L^x`S# zk5is?lrIyWj9y%N@nM8(^ru*m#$R&nVZPrBe)zC=o~GjWB(ft9_nfEVhX_|mw-1cO zeh2pIrw6g$g={m&075D}8;(RuVpCzchPh!`^ z`0^I@_z2l?UR-+d4ubr&VRsNY@1pBmhwM%4#APS`2KxQ*RP<}$&FICY7hg$`pBn6T zAW5cOv-zOxWn4tC;vHi=Ios2$T~ zN4rg-ohBhmksX}RCh=tSx?W_@zB3J;gkGG_Ch-J<{0zZv19I+fbPhungPk~^P2y4L zHIA|$+!+UV(2MigB!1%|Z$7yUM&OV874EpX3V$CXJNr=2xG8>`pn3iJBS4Ky z!$==DgY$^}%Hha{l3rZp5RXQ$_uEZlJdXt<(2GkieqfY0o*#?heitt}`(RYhcrLyj zeG%n*E5qsB4d04hT9gPpj_D?W*!c1#1+ ze&dWM86O3zJaPC@f8gF@XFReY`0@LPI4^{AueYa>Pc;1c7kaL@#XtUnw{I4M{u1vm zJdgf{)kpjkLHQiRPW_>je7N`P9LCP?AL0kmtAEtv=O}zXdU4f9d@DhIHh`+vdQknN z6;%D2Nq;=s+h1!zwvzPXN-rKlulFlXqklAk_2|W=7f(a4`Morjc?h0@-k$LhoV=#&r$w(cr1Fq9mJ#2t3M1Q{V;e0dcS{&UmNMw@BB!we^lb< zV`OJW_Vf?&Q|R;XQ;Hw%c{^R`#Z?aR69n~-J=m!~aNoZ317tg~^ZSQ*2SM%l7N~Yz zjeR}k|A>6oB6|aSarqVJIRm$ytFTMsyxYw_)G}lh*on(d{6+M7@8kzuH#fnH(Thtj zUVvWhn)`XydvKnU=x%569Q1B~pX_wz!?V!){a<`4LFJxgn2dc5_2l`B&J<)x*o!Ma z@kGL9#>)ikmQUpc+pGt9Cc=rwPF!~4LkU{f#DG7>{`!O7c);@@oi`t3+0>}tLQue ze+Rv|^x_@p)qea&U*{J1Tj>3MD!v}Q`or6ldn0@;dcS{&uOX=1t%fVGufqO3_OByb zhP}A*6K^1>{a(Uu=2X@?v|l|ko;%tmE<5p3g4%BZ_+#wngKC$2(rJI}B<(U6Ssv;9 z{W5W$r*iEwu+w;O1G`LQso44BgZMb~8V_PKd9DsV7QH_{h$o=e`N*?aog?A#=>79k zJcgipM}RsGH%55ZPZz85D_iXHHXvYNVQHU%TJ8}6FpJsMx*r|PQa@;2&8;70W-r{4?t9^$) z$-WzWGjCe+&T0JeY^HPKfu8$1;>XPX zu-WsRr+Z)L8ut5WR! zo>zNjBb$VsKktjDqt`e$Yzo&&@Kp5vxF`)dhYKP2?*ABtZf zDBlmT(?0eaiZmA9Q|K6UeP!{h@m~2Z zff~Qh#(U#;EdI_TJB|GntB?3c1hwx8P~-Pe?28y@UuQr1Lu7}s7gzno4-hndZ^lmJ z^_5}lt0UWpoj-nyuSKtZ_B#2lhp$2J_dD?xg4(-D`B9z|)Mq8K2IXhv6R$px1lNGug*VgvX;7mtK4* zdiC2k?qyvHk3sMEWAP~TI?ob**XbMrchLLio%kpBdgIV2^q24Ddf?ukaY+0;;qPe2 zk3jXm!`LsJ$2^DqQOU3uS9!#Dp)ZE>;~kxQ;5*QZOE10={Z#lm^jqL>p%<54d=)|M z)MQu#{+xUlf@-hXpvIFa_)$I1;U^2(B>edG5>F-QxQ)dwpW~$ZjYBpXJ8|VFKFaK3 zRc_inhkdL#WYH?O9S8BN!#scIhOs^)eKGznB0DpT^_lq-KZV|b4@3VkybHa!@)JKn zP`M6Zr~c8B#X1t%2iW=jMSL&%sdE``@pBZu3%$7fh`+6TNMA_$?eNXY2QIz%TLk6P zX1EgjJoE>!Uxlm*dvV!|hb+IHu5aBl^qWY=?ddwxbu9UVJTjoo5ll z88_go(fj9}cq{s3>bH*aw!vG_iz~hO>jagj9#p$kVV^^NPf-6FWc+r*HgVaDzevz| zQ4A{GTu|w9NSB4(71HG)%Oah)(uq$oyJYOtzeZ)V9z>Reo!{TY6Va=GMN{5%_z3iV ze-j^qUj6H1^uypW=>7gC?hsU-t8pHljr023Lh`$S>~vgDe-r-*z5M6n?;`vJdOtt$ zL+EdyPa*wL_yP3ds+ag)g7Vvfo%+#Q?A}4P5j($MiNA$j{iv0Ew!_z>_xqLj8uZuD zmy&)R{7v-Y%13-9LG8W_R6nW#)&Bf&&--cgm!s?pmLi)=I&q~FpN(F>myu5YDFAcP zi%Tz_iC+ETJo!$O9eTfih^L}ge_C`u^8!2>z2CpYlhAA295RFJX80)d{x~W=oS^oJ z#ZL7dOFl!9MPcXHUz``ryX}{OpBVU!yL;MC{LiHFeZxbMfWep9U;z26VSOVMkc`Z4-S_(Jslx>dZ0pnUVNQ#)S7E+1Joc7D5x zPa~)wq=PEoDD2}n?q}II9fxcL_Tnm+cpQ52((l4_4hLh=i%Tzlb*OioHzx4B-caV_ zp*_c0{2Y4qi>W!BNAQo(`~5`xB>H&tY3R?ukD(WrfAJ&e)t^VB{}6r%z2CpZ51`*d zKRZhPC*b?giw`2b_)db_e*<Ad@dkp9!y?0lpz@zhx*XPbmucq$WVxghmtXNI=)0a}yd~c(_$2h= z(u=1Nv@Rb9%HJsLw@{9iPqQD0Yy|e=vKJqYUiaDF#ouW7F!cU?H}Rnal`|StKe%?6 zci&CryLlJoysPKFoA@UL<$nQG{%5iO$rQe$!}|3+veVd$D}V71(RWaugOsleehj_1 z^x{X*AE$g*Dc?!>A@t(Xi|BUzQRKGV2 zn+;chDt{H}lR2)tIgYi+Do8J`^x~yvUw~acey@_xTx7Gc6PKNME*1V6LcZznMD*g)i;pCz+`|py3}Zm$69Fop%R~770sZ{=2(G_} z;BN@uKd^o;ehU3@IQvVTXW(7v#dThYA4Pu{eg*w;_+j+o(u?mypGdhDQt$onJ?O<% zPVt=tm1jGs@~k)BX1u|;eymISV*It!4wGhb{{>kQ{>0@^yb%2^coF)A@I3V5(u?O1 zq*!kzDcry9~(w(FI)8I+y#pOplk)ZaC#ZKp~$}<#MG1 zRQ+yz-piMt{Byr|vlsiz$j*PB>vi)heinTK-wk|!Prn*@ z0=>99VK524;C)c@h* z(2J`b#K)qKp?oJPUn+bwdU5H+M-f!-7}=5TDt?9{b7W_J#BaoM-AOs$pxn{$Yq4B+ zTDirqpkEDdK_3ObgkD_jCjN1(m(N-3ni+T2laGE!_cV6mDv$U_X7?d>+bQRV)cYi| zqu7bdPW%J(s%H-MItbs3-mka#ZuF{WHt7$*ccS;}E&eV+$7QSGX2Z7(*MVx6H}SJB zi~h+z^%`U?_z~x`Nu1vYem|aav{H^%_)7HR(u*%6$WIM+amY7dSC6a;J8{{GFCwTs z3qc+K`JmDjSpK>XRfH@rEPwGFg3?VjoCGS}Xwqd&XWh+yZ?bfx6IXuX@#r<*>HHc2 zk3;Xzf8wzOl_Lt2ziWfN`ET~-D`8^wJRWFhSRaX`G*?5oUv0ronN z`AxRYQe^Y7_s?tbLbIQ3_L-dRAb|Z#;GwWC4*J9Y~WIyCIsP^vym5%%3Zha3M-(&inhFeYE9>aAN5liKF4^5UR?gfKSCb|A4`7c z;V00GOD}$$pnUdYw-xzm><%H@hn=|W#P^_YC*R|g;~;z&dU5H+cM#-f19mOQ&tTVq zY&~}3vJ>Zb*4=g9M)G+Jz6QO&&J%AXsQ&dJ&q6PG5&KJ|Z>9Y!kS)MoT>ix8OV9Cs z6Mu`~bEUWAFJ3@UxpJ_(NV*REt(-96^3gV;4{VNag;)S!5q!CoVhjBk0di zzM<6X82k`=ap}ePq0hi?J^Ad1??Epvz4$JI@_84#U0KwH`zJe*y@Q=NpH1TH(WjAa zEq>mDuSG8|z4#h}{JeqPmMpF_DDRudR$(X3XOnmc{VB@#BIR8HuSYK~y?6~l?OSPB zYPi6#$gluZe$((5MSFZee%Z*T;7?rs#M9At;a~k|58$Y zIqc^l8>;eKJ;h_uYrfcvzv1v`^#1%I9zjs~uLr#T@o~VLKWGClTbASH!t~N6Q{R?f6YbHcIy9SA3Y+MPaue`A+O&kvZ6j%dhy2D9_*3 zDDOPkP5#%BU5@HGPsGog-D&K$WYI6NJB#ci?8NzO5EIdt|Gz6PG{nR)X4P6)3+euy4ttzjA-> zbz~vz#rbR!uSdU&d^5?n30{LBWWiK9K_BSFt|Cb{e$I!ox{Z(Y2L@~y@U3i%!fvR&Bu$4`6*LG^pba3l8Z__>VV&B)rZ z7nfi0waOQNH}JOszDD_4e-K}ZJ_+7|z8Ss@y|~hg7o$&ve}Mi)_+0ej(u?P#9|=E< zz7U>^UR-+dZ1h_>jtd@PT?wCtUR>vg_!NTbJr27B(w)aoDzYT(#N|hPl-Uh4yPMbz zM>aIfPCS;N_HnRVM?0+MJcvSeV-VLB)-K{#DS(d8B~bPk26@+?o9VBgAUiAjEH8iY zF0(s^T^oM(;`c*jN3av;vq}7*+3mruo${Z2mg^{FyRZ|No%jy)t4VhhKl|X@(Thtj z{x(77>i|{0b}Qc%%C`a8y0G$zFGJr-`WV_}CA=QJxcrH~gg&19H&dQkcm;ZK>BURY zYkxU&EZ>8LFGTO}H;We&besx6o!>dwYkkdJ)R~8D8utErTYQSyr7qCx6 zHXM6@{VpDhJ_dhR(GP`3qZe2C#IHNva|;o3S&t&T>hwIfApS9W2m7JuKY^b|FV1I^ zco+H`te4qS>tr5wK146hXOs9b^xA(Ph5jV`2zq}%Ui=V2$6+USEwt+q+Ics!?bwO) z*(AOd{T2Lhudj0ld<%MUKAXhfB#gw*GVGd_j{2?y8nAOYcH*_@wZ3n_&kFcU=>7G+ zcm+YnVWDA>Axkf}oWn`K68{VFKN8t6(u?!iBt8^P_N0hMXo* zS>PpZXJs1K@f1%su45;jU_8!vjBz=X{u(~zkGRV(7(Zj2?Z(@Tw;FFY-ekPqc$M)|@rLUE z;zJB|9*9R7s#4-ND4+0};T6M6h8GPl7@jjcV|dE2%kYHZal@mAhYb%J?l;_LxW{mp z;SNK_HMe|Q4YwF}7;Z3ZH(Y1fX1Ll=$6NK(@fJ24t~6{i3>nrN))-b9Rv4BVE;KAQ zEHW%K%s0$4%rVR|oNAb9m|>V^m|~c0m}Hn}IMOh|Fy1iEaEM`yVU!`@wuAgJ21m)y zFEoCF7eV;Iu=2TPc*XFN;YGs>hUW~=7@jihGCW~;-0-NO z_HmWZLBsuq`waIO?lRnAxZP0uy-L5uu)}bJVY}fvL-u`L`_+a`Ah$}RLZHs4dXOfF zsxWz}$rqZu(B%0h&olW{lV_Sd!{o^(PcnI;$>U8PXYwH?cT9eRPO0)-167`jpvrl{ z^3t?5n!v$uzn4QROGiGc;f5zk|On%(tM@_!pSA?Fy*!T;iYdJ!kSWCO>8J<0e09a_u3?o_$8w5BrO*AMGnjzSZPgOx|JgbtZ2! zx%Lxf-)!=gCT}u1`-QImDwAu!Q1-`JkI1pOdezMD3d!T*M6bOa}9Lc8$=a#$>bMJe!=ADOn%1Xr%c{u z@)IUMZt|lhXW!8Ef6(OnO}@|MdrYpqLX~HS$+w$)tI4;Ryu;)hOx|wtbtZ2!`D&AE zUs3gHF?qAeSDL)ZOrB%%ER#<)d8WxT zOrB=)6q6^LJjvvVCLd|?1e3>`JkI1pOdezMD3d!TXP?nMF4sV{&lOPZf63$*O@6`T z=S+Ua{2w&=ev|Jr`5u$+GWiaZZ#Vf?lW#G3hsigXyxrvM zOx|Yl)h2H>d5g)LO}^6PO(qYSyx!zBCa*Gig~>}zzR={wCNDC1p~>@2o@eqLlV_QH zs>w4=o?-Gdlc$(G+2lzkPc->RlP8!w-sEv6A7b(tlSi4{G5HM^DLO9KKppohpvHkq zCckKM?Q=?g&g5rIe#+!sCTIWC^>f_h+V7PA!zMpy^8F^?XYxHJXCKtH-(m9YCf{oE zEhg_U`394>n|z(g+f2UN9O zw;JDKe1q|J<88)Q8(#^s|1~6J@_NG>!z#lH!&1YAhQ)?OhJ}XthIxiLhFOMF4Koch z4ATr#43iC$K$R2oZ%3|7{hB^2kAIm0d*YC89!sZ%lHZ7M~xpgzTfyh ziHNMbzk?}&~dB$^$Pc@!tJk5BD z@g(Dk#uJRk8y{jk#&|KP^GJS$@+-^$v5iVLKGINrq?aFI6ev5P&OgBIcS4rdQRNf8 zai+v@tl?c||Cs9G4-Nms@Ee9p466+%8%{JFX_#R6M~{2{zHT_r@EOA|7(QV5;}p;SM~0gW z|JZP`VY%TL!-oui_C+uKPYrh(zH9h`;g=1+VEBOHPsVxa|IzSI4gbXO6~iTlzhgMr zaFF4DJm&e?Ww^tz!m!j(?@!e6A7c0sCxG}#!@n^6bHmk!ym!;Jd)aWYVYcBk!+_x+ z!wZjk>CPFhHf%L~*>JI8w&66x2MzBxTsPM9*Jk*l;R3^_44*WNH;gm<`6FKXpBesz z;h!6BFl;w`-f*6w-sh+GN;kaAaIhio*K_rHub%Aw+VH!E8w}eGmm0oeSY%je_(j7< z4S5fp>zDV>x%f|GJp75_UPHYvPWgY`@N0%I7=GE1_lvuBdS{yK?=`&J@Z@Mu{-NP} zhMk6bf0@#?8U_u^4EH|l>3170HGIWzu3>@UBZdzfI)*nAJwN|w_(Q|58-C5O%43`-4T&U}h-zRZ#y5UoX_Z!}8_)Xq9qx?4+@;)4w*BBNW<{Ks(>RmTVcbDN{ z!yhpbO8x`GKR5igVU8j1b8+o{$$L0t|Eb~MJ9@<2iP{EA{!PP4U=)9JTUVZF*c9z? z?eoZ9`#VDI>j*OqlMNFLwNE4cwSb2g47&^u8}2dOYS?brYS?60Wms&OXP9Z2Y?xpe zV|a~9sT>y!y9^H-?lIhI*lyTr*ko8`SZtVQm}!`7m|z%VcrDWMH|#PzY`Dj8t6{rg zt6`I2m0_`Ao?)h8vSET@jN!Ei%iple@UYxwxhOLH8hE;~ehIxjWhRKErhB1cM zXneQ*4Z92v8}2dOYS?brYS?60Wms&OXP9Z2Y?xpeV|dN_@dd*!!^4Jq47VD#8@3uY z8CDq<8|E2i8YUYi7@m#w>Rrk@Dux#L3*>tU?-TYC{*thd@EyVjgzpme6aI>Dfbc1S zXCR!<6LigS7eUWG+)dE6$UTH%gnJ3PM!Ao`GZfDK1hs+Qn>ch(3|<`PamFIWvx(>M zP6x&HY}G$gMm!!%=I1Tq_cKN*?G@tx%lx#&@$ASL z&rceDUXo92=HKHuXCzl%#HU%>Ma0ipIYY#GFNSM#nYi9Js`Aw1XAtF9T<;F}7b{!g zy*zJe{^t^Z+x*uP*SqtS*BiwD)qLvx4xg$n_-Vt>-#qHs==~*nf2ia;kbjlVp|r!1 zM_YU(@zv(vq3l1EJvPzAPvckdA;j;pcF?=2cn7ZQ^AbKk&-zd{dgoWY)hlfV?QeC_ zJJ)_-Wjl`jE0*tQ?Dd{%rA;QTb(7+$#P?d=`7VVs#_aWOzscq&4*zQ`?Jnec*R#@U zPVTU@`-%UD)$0&(J!~SIqr|^z@l(|Gkkw1;nii{9A^x?#ll>LszcioMi7&Ra4zh>w zC7TN3KZz#Jgm!!$Wuwk+dGK-5{OeufymQ@cw|e~lmDNk{T>qxxQ5+-W^T|VL-$s7e zj>UH3->~-7Z!L_H4fbu=YyBtts`0!Z#nRRif7jB6h(B+~=uP7PZs$}7@f%i`EyQ^r zp6lln@iL2FBp$T>{0Z@+c78>3jkn7B#!BMzE#6H0lBI1SzAn-8`3CWCaV%BNcH%QF z-;RlVpU}$5?~yrrKa*@u5r5a>{O+1F()=Vo!5Cxm3gZ7_V++42=bSX3TZ!||d)E)Y zapwfhp5McBCR?1}&U602jvc?V=X~Gf{3f3>-SXmh{G6*M=ePfy8k6&WIH%V9^BaSD zudACEzf0)+uE|@7f5+tf{-HD2%Emj|oWWM#-NfIuwmn3AtJUQs@t>KTceFVv*0xuP zAF#HK&ZMo(hTolZS}ZNUQR)1#m4V;0bjFyR-@xP{Mz5T;#LvbMXN){v%K58)MPJIx zcANp^F#Gi=tY~sJ{IA5`NBJl+l-%k8J%d3mH?vcyq zIpV)-@*xYDODukFA>%M(x@;0D+Y;n=!w=7OoZmzC5b4*=8cB>tww z^NHWIcpmZe`#qm}uJ317h9csd<2-o{@vjW=;+e#+n>>y95tFA7UtsmhApU^)X(1j< z`>Xs>#0OhmZN$H7HaWyMQ!kY{j`(|^?3;<}yS0)h5r36BNKtDzhm){#J@(_WFI1)V`XR}o@h4l#9y{D>$ygK7hZW)AU|g9 zP(}PxYyTMHU$f(W3i~0FlgF9qtTXNFuY&j<`rAWs&CWvNU!#92UQGP7 zmme>r?tc6^)<}L_-#hi=`0g;&eO;I z_!f?fAOCt-8GaR(_Fm2f-{$XWLq9%|W8%ka!rJX892Z~S7-kb0R?e)j_=K=Bj|nS7 zVwlbEgq3+a{m1uzG^}jZoR7YIT$uc+u=e~?n9Zs%8@_wlo%S!n+C&eh`aTQ7j$KMv z{LjM5|3X;%{C$}G$*|)X3bT17tZWN8m;Jm#VeyWzw#^QUe?P2E-U^d9hLxG`{C4}? z6jsNUFq@x+mFGa1{R?63vmxwQG=#-}9G3RqDZF3)&0)uAURb^>7+ZXsKM3>lVpx1< zSp2!LdYuky!#@o3|8iJ4Z*so-{`o#kcl>ymAG&9^{L5ke{AQRu^U)p~o@MT~Ulb;P zGt55jksh0UVesKQf zV|_nQg~fTVMz_40Jbar!4=YbunEk4-__JZ{=9JVeda1l*aWGWaP*)#p2rYL?UY;?h zsCr4TAh@_JRJ|-XtG2Sbwpxm3vS-gInUOzz-n^2el7e}2mWIj})dX{@%R|+5wPg*r zT7;|Id>VW5DXAq*sBTGhc}aO)y_@a)Sxd?m2eX$}Rt6isJY&&}hB;-ShU%s-1<_8Q zKclLwwl-LkU$(q%X~>nmJY#-gbyKj$OOY3>UR>oVrq7>WT@kG7B`H|CWKpo;nM!lh z=z9pub4FcFT|;3*^^&rN>R^8cMGa-OjTA0-X{}pl-$z&}p0BP5RauGMLWB#Rt}U;t z2sUI_hvt@rf@U?ZY)O4huv^f(Qm*IRx`riXp`zvWeiGO53|y6)56@y&j!S3E@mzY% zGBX(RD95zAb}>h@ZhAvQ8BMyl=IL4;!1)~ZVAJ#vZN11;?vb7~fBIYw^vuHN+%}q1 zx2!t&d_#38*pOPXq=(F?t0j4;PxtUs^{<^ie|jT*!Sgn&wtlIf{5E-(^`r=E@83T0 z^raQmb-#Twx6Qp|HQt$!R8lzinWATAJdL6(VVA?@}9{lDf)8Z(|0zW zRWPq;dclmROT1JAB*>qh{d9g$F?tSGuQGHOv#*{mFuywZYJFY9XK4S5>c(;owNo-< zzSpzn1w(Y2vhu1WL5W|UkvqMnrmmcmx*;c6S+=wWp?lUZX7S_& z*3Qg-dR`IzW@$r^E?QL9z!+qG=r*080YAY8vkpHFg(dm3<`pq2J+tVgV0p+1*Llb2 zmKJ@c@V5574%ctvx7)VwfN4eZ#JHc{GnV!)^(}|B+oe@2?1*-&O1xov-qJ;(hB8`! zgPYS(_NseEH;T=u3YNc|+fcS7xX2x1=Y`5bOVRWiML8DPWsSk<6%`G^#=gquYB|0y z53JAct6f|(Ggv#Zb5Q_HNjBu7BQw_r3vXVF#m_2iT<orgDfTJ4==aZPr0ZAEX{ zou=o?>V`%-J=1DfNj_uly;69Y_Y(CQEeh-EYGyP9SVg?KE z9BUP7d*^ait540X^BSj5i!~AW!gH|JKh`(_ke3*z%*S#g{v2T zhK$R#G@tis^@2+UiQy$9FD!Zx>wdEM_X~=^Zs%*p}6B_SP*btNASM zv}{)=aVum?9k0G7VKu_?w;Wk;rt9@qIh~6MRo(N>IaZcc*RWdpjMgPpWsU9u;iBcU zcrWW-7HfK4KBKIrX3=L#xJ;K??qKs3}8_Ak3y=Y3=mJ<+bGuYqfO@ zj?15^wQIs>mj>kogL${p-)X>edy)CNldW65&uH6cyr^re*2(T&CNB+9aKF>p#g6MX zOns-a^!9I~*^D~(pfjQV7M_^dYP4BHnYc)+FAJ4dmAsvaQfL^p#w)zn*tTMczWPiOaJSujkXB~CZ>=cXm~EX(iQ zWh<*|f|?)iY-zJ>PxamL(YsoBzA9LoQ&)?Znwn)xQp=ZAFwuMlpN*lihLDyCch0`9 zvXVWI&t_ZS5L{Nx>Ef2~w@c!#*1RM$=HGgyUBFmil?<{YR#6eGNL^A_v9tzhNy!rv zAOAhSUxzK-6NBzfk$;|6uW(mK{(#;1f~~NsYnRo%?E0BFxqm-yb9E0;{iMt6KV5lQ zZF#Wfb_oZ_kVPMp#B!}8bF-hhHNz(+^q*mE@Kv`V-8pT#d(@_sv8JvFHch$J%cLj! z_o9tcjr?v?J~uaiN+Uz-6u-w#VIz};4Erb{#`(tn{HFEqS39zeETL_nR~9qs{Pl=k zi1gzwBfWoj_1+xpb~bOdeM{o$^SLB-&$DNjR+qo5{^eGRPU9~0f=lW{%S+1H4dVDO z=16Iu#=GX9$K=7jt_G4m-EoG@y*bj({@jMTCGKvcQ&QOwbi2}wT;>b<4YRd7qtB>e z(Kt8AHY_V$EZppEi>Z6rZRhx%Ps)<|vZal|iaQ&6XTWDLbmt>?r zIrW#&8xYx&aY~l3EUPOwUp?DL>fSniwUb^_6|7+=-%d$M?HuT%=)Wt}vL!ct87ocg z4BJ6*d;JSe{|VenR&OKM=JkOrU*!-s&S4dxwZIbYE711`vh}WqW-YE|-SJ$#rmDuG zx}vJ;MsMqHpk%4#O-){PmzEFc`wnB-0QIEP`5V>)<=+2A+(6d1T&E3WSh2Lh9c~BG zv)#vC39f+#GAQpJ8r*A#fy~0MF9x#dbx|>pk$VQ*dPOjh`2ZIX1DU(tZ@p?5$ee+w z$9N#4KGV_wU7+tIG=N#3!FixOmy|VCFIl?8+jP*9dmux9bvKaS&Xw*(ojZ*8Ueyeg zw7Rj-9sUN=+n_g)x+3TfM+2$3=qS_3G?1PX%G>AE%sfD2_L;v2u=3Wq{vo|GRMYwY`nW8 zx4B{EE*H5Ha`*Lm?nT;4Gd)M^)kXbm*QZXH{AB+t+|=}muBP8rZfg33+bAbY&Kx+u zjDdCO69?8!@N~DX#3{;cQaw3&fZ9!%>}vY2-Gq$WDAOn2MmgcO$|olc+%B1}uAll% z$QVeIK5-z;1W(iN5l>GWFx8V!sC)yoNv5mp*X4xt+ayd+L&@VeVNV2wJ%v;47#5jv#v5Z?a5m$ zy}7gJ5whO4{awMQPI%I7hyglErmOt_y|a@#fmaX=d@eoVD*tPaCKZ{WtorLonFDH` za5ep&&FLAg?mxeUmztjLdHOHd{iK#@12Sd=ldnt31yYDDm0r)N)=%ZTWs*iY%>sRF2a!#lGUGYZi>A9#_n*=y6XQ3*^o|w%wy|Ch*z03H z8Z`hl1S=a$N_zX)gAX3Jb>HkEAN-!L|I92;#(E#~!BuNjt-DFyr!M>Ov6sZ|OGErb zp#1qCzZ^ks$yGM0ZoSK)?*S)Zyr1WEm9CU>@W`~@`O>!>)yv8nT(^CFwBbX>UFO3z z>hsUaQLepGRi^K8>A=T$(&#rO!$1AhMePxC@2~V}kMHB-Rodi!p6w3*^y8ykJGipx zTNi!*Tkj5Qqe4p8MtgiW+?kuEoIQNq3H3gG>rzbL`ZlVLcr!5QT@H1x@;Ywt^Q_{n z<>2?zoKob4_j%=LecC%u5O;s9O}Tsv)z$D6OW(RwVXS_+!+adahsuDs@3D1{OMgD} z8*(&P4n~T&oKgo@S!yP_WOVzMq#_d<(c&LvDAEg z=e9oFxu3_S7YD0(thjG`EW?M|^jrx6$H(NMP__;`N$+}!SRzmAX7ghRLb z=svt!2+D^x#`WpzV9`1JQM{e;^wrCM|-fs2rrcPR{^?r;#pIdyWEo9TT z9B=a7zOU0DA0~MoE^uu5I)Fa6_}~hAG0!62;^PZryad6=Jq-IF=A*2hM^j34-s7TQ zABXv_#b@!MBdk37*5#)Zyczl96Qu3+>AxKHW#xT+1Rv#lZ6y8HXYio`sK2`W0Y1J; zUH;)S_+X-P-SjO-{1?4)EPSF@Jw(FlQd?8fxO~Z?x|))D`YJwp%~6^7(0SX8kM2Zp zhPUpI-%l%b*^9JqIi}(xjego43yG@IZ1K*ee26uK6C_YPFh`hjA)YY3p<&yJovd+F6> zb-Y!O$K6JFwXWf1=UJY<4Xv2LjULJSw~^L;5DxV~Htu#z5f3CTs%vs>60z-*m+NO% z&a8oaNbmZ&O+K=5cZ+>~Dm8u{{j^(d-O^enH9c!L zV4KXyEeM9(RyLb{%E|-IOZisEak@t*ycok3Zb7iNPI z%X3!b@Ni_9a1G&x_=Mlxb zK26Sz*sk2F7@~+lB+BV^)qQ5D}ibvp5M*03&pd#xu?(Q;q#?W>gL%+;xXMkCdYaB zH^0jK?iM@2IdtwPjrCC9PaE@&*3sI7blg2+-QTU4;w*I^>34eFW6(|bUKbEk9QO%D zE%kW-vA1!bXCvf%!22hp9N_M9cd}l0M7pK7+*omLxqIgHy3yy@O|gM)AY<(|fYaYi zX=Quo`yozsv2xJlPg z*R-7czQkive1lDk`YF&kdVoh?Y4ZduvXwVC%CQgC@qF17hi94V_4S1!p3C)%fOff^`$x;>sk8mUlG1XI6=5V_%%WEuI44pX zPjfxZn5ka;RAnX3CQS03&2mj&3sZWDytL)!VnVv4<(W>o7t6|Y#(1hM15Z9B)5-D* zIVCfTLS}h+y99-wd`yp{(SENO-7Uk({AHfoSsuLj8c*3S;5a_@-z>Y){ za%J_~AWpfHHF~PwRK11~|ENzJ?aZ=ccCU^Z>$ghQEc)C-yx!vX6Mxm>BZqUz^Q-;(lI#OZ3Q~UDeV1ynLDZs`{?3Utb_BA}k>^5MC#I%~0i)Po+~EsP3w> z>Z*Dve4C)U$VO!ss;nxbQ0aeeLFMp2Dwo!IgP8PnJ+F^`6YZZZ{yW5nkxrlIh(BQQ zmx-rY{C^UE%Hn@Syujk$B(5^*^EYAf?}f$B5?^RG%Ks8U`6(aymtXmlA3w-Gybk{p zqDz1O^1s8%-l7H$`>3wN2pUJ!KJxJZw(`#_O}g9QRpNfV|A@HX9{-29U+>S6*l&-) z#QiqVd$#;Gc$m1~24jf(^?sDNU+*sxf6U78--u5puChH&Jd5~E;!hFRIH%({2lU(W z1>zbH)gDVg)t@Ae_J`&W^zJ;G*OhI6E8RnOL4vun4p}+j;V`>)_!5GCXTeXaX5@0f z>7YMuBYZ^Ad&z!5_%-29{kMh8aOsxsdqg@2`aKgJpLT6V^0@@Mb4}5#l)2#(PSF^6 z_^eZu)iWZc%uSim&otyuG??CLAWA7nna}ot%}o9RM}GzND;??*lxZF~0jU zZ2Y{sr48l5Zj)XEcj}Vg&Y9yqv6x#^wz$!;FG9Jbgf9+MSM(NfS3f(*w?uV0!-JT; z%nRM8?!(?e&`W#E8wz@9_0*ys@(2Zc`<%sdvem%~_bUu;q2`n|zU(aJ+n5v6OF}G& z^^K%pMIwUkMT5WooTFX0?r)nE)cNurnJWqA2P;E;WpnjzqSxW>Sshh3mO1X~ z(s8%?{57DRE*wc$%s+kQ+CN=p=BqKgSJ>IlJd^KOo0k87?7aCY?4i~ z;Wa>j1tJE7BtS$&)C59+5FtQ#QNbjTgpGzI<^_XBjYuo4)Z$AmRZ7891xqa`t$^54 zOD(q-Em}({wO+K;iwcoO3e?i_|9;Orvpc)V2JG#%_xJyFK6~~#-{(B%IWKeO%$aj$ z&J)0#cE>|LD<`(W6=LB-6m!6&-NB6&0P?D8N*lBa^&e1MK3ECQsO7_OJyE{ zz*89T}nbLyuBme3;urgw+fl0GRX-lf`Wy#dO-hLiC47MghVuvvhWAWg<1r|_SRgu?y%{M zh#887ozGuH%S+U$3+jtDs}W6EXOkogwa!AL7TJoVx_R`2w%1Cd23=HH*lbKFV`1#5 zO4?1)EbL&`CRz=J&E_nOnB0jL=^~RpD1dsIGU{gqQH#>iEYZS_=Z>Q0?Na8HR25&s z)Kj!XtdXq!rNZzl18u>249Dwwb`-Vn4d%38be%FHjxK;?CIw$3w1KEehRqx;jF?E8 zKHD0-aG0T{-ME^m&7M?Xjz_>!vv1bGKz+ZWse7FIF3udCYWN5e-=CU5jRrXY7?XuD zU=_Y9_Nzap(1359>M=^QWM?ZsLezM%LJe}uYw=Z!=$fSb=z=2WLD}(`Z>3sa(1XEi zi2-H~IL^mbt9Ujo3=R3Qg`{H591b$h^yY(L4^Ifr#J@TSYvF8h$-=Ijb}1}wYE7mT z$>Yj93;*h1=t?-7+9v=vDOMo~ENCON2tIW%^f|bQ2u~~4ERtuHH&`6*M$H|lZ4t;a zH{1^9V?0>d;ZjwAwc#v1Nxv+io8e6Gx%(!(d$0G8_r@jZ+|JtJ(x-M?>UAc>#f^)* z1`{04G|ici5|0Pbp4!xI&IFTdq=I{0TpR@4-SiXp1|z(GFIZhtAUYOR?`gp!?D2aO zrgmerkM70uc1%2Cns{vNCABMlO<}ynBD7X$$HhSjqL2cnb7NM^$yzvt!Go z?3a6|c0+~z;a+47d)+(SEKL?b@Ai_GTpt5DVcINMUqp%x!4wmkI{KLkEz$n%RZ`AU zJD`1VD9~@|#WckbRilHt>DEbAJB@Od0;d%xoio70NN{ithjUuys)yqy!tdbEIa;+A-%@T&^z86`-2)aSAw} z#lOS(WBfavzsA4Ic>@22Gal)?owVH5#nd+uUZ>BkPY3PZ#qI0D*&pmC?pXl_cNFas zSK#qH0nkF=)pgGnfCmZU3p_Ee0DP0cgGi1TE6nHu=#2RirW>imFcf?gkZKG!p%z<) z$S(JlzL=%(S!Rx&Pem#CMybr<`#~t$%9)eFxWX!t&5l>UH zF4pT);Ci~bSQp#jjhSft5X7y=Jq1qeVfbC%KB2On0OL49yeTMNH)L`c7~XyWR>8gf z0hS?z1@{inbhBor(p-ZPz%71bKQY`0 zak*Sq0u6%Ko9rV=@%oZz`)&i+-Xv<6WTCFmkTkgPJJJn>!Efjk5E3pnol*v-(ti^RJbZj$al1B=10gEF{B zDS8<)2zr*=LBIyIuGNC9h|m~wTq%zIvm%m=%L!%O48sg_Gpu{P#O18AO2=XlK-f#O zf?c~|Zi_kT2g-nMMtr%_C7Krge zC(?TJ9>v>^KJRTre2Wp2bzM)!n}RCRpH!q7;gJ|Y-MZ!_AxH5LG5n0QC@fNoJyM^m zk*4841KGZgyM4nIdKF0PMNPbs>GL=rT0(7?=?v2K6upo+SD8rBXWH`32A>-%Ryg# z)*h-F{Qx8_RijN+RKvTfK97^=H&E48ov7;b8Wml|%Mw+isZ3pERt>fIl_oZlN2uu< zoq{OodtoL0v%RERZ$=uVBEEo#zhuPhPO_l&qVNzE;W#4D5Vw)5vkQn`1zImg7^Whz zbuMJ2sTYgXn-PYqNYfE%10zlEBx|VXU$cIuGc#I$#^mrspZ74^DsJCh;-sNRJy+TQ z#wbv+eu`L^o3SDiP3CC}HWt4=%epUU{TX$Eita{3yNS`gdJ7qy)J}iKs8X@UBi3Dv z6)&~ZNmd!7S;eYGtaWCrh;)+sLcpF?>t>`4U{p?7>+^U`yoTt86S1Qw=z0Tk4%DzS z(eSdOU2#7^MaRDnb|2ulkKpn4hfg2K9>fJ31KLDD$KpZBjvJHm;k^zl$Ia}=>ws=1 zTEL!r4bbgG3)yo&4%AF^3wmzNH5J}MupA>?Mer_wH@?4724Z+z72q^8aE!{|DtHt6 zD?5VULFOC{?fdw^FWr5Pj2ZsmsIu`D z_l_F6;5R)FH@yGqgD+m)oRKlR>i7Mh-S+2eez3abm!JIQ+N&pC>-gJ8Piy@PXUuQe z+xpY`Gn0lMs_T~Y!QUE6uQ~F}P0gDQ9~pZ4^r=tQC2o4G{^~ERZC>bVe9`@!bHSPq z2H$#M*K_~z_@w2(9doqszouSj@*FL$xqN@}#O7z;Tld>lDBxPS&2W6#dOzG@xZ`l= z;AqH)H|R9Dv2au1=EDWxn&4K!t%chRw-atZ++n!maOdE-NKB(dX>eoVrohdI3&1tO zt%6$%w;66H+!<6XlGUC>U&7;M!HWd5Ph>a^J@H`IL9FBI=-@=>GF6mB7eNL7~U-D^Wr8R zAoA>RiLLVUzDm3gb;E-_Ik8nArzJiO-t(9!`u`&Ge~3u$ZxQ+)m2j(mH~^r2zMRS9 zml2qkA;Ycuzd_Qs>WBRa!>#hLmnOE(2M3G9R{i}XqQ2PgFx)B+yHaB7{P6ZlY@I(2 zA&9N=TGugobdlFFSlY6*89x~g%JDp}S(cUcOC78So*U|C8ClOf7ir!t$~V zEGN&km0x@MOe->d_5qd*-{I#68P)x%{VOP&3zAVUa598(+4ore z4hLuKb2y%BaR117^4;4L2iE%Et4jRn-It#lJM=HLkKgk`w?7}9{_TCeeBNa{KDd4P zx3~Y;_3rUgQ@{1$z6D!YCkv0yP8!v8qqgb2|JbtJv3^Nr%c{7qte^I+p>@A|^N-(% zdu#p|`oA!=->SHmrl0d(`>mqkNl&h5e(llm&oBLTj~Aw(vTuf~hPw~$F}P>ocEh~} z_up`z!tvqia=3ADMQ}^t?u7da90&C;z`Y9hTewf)_!!U|ZaCcaaI@ezie=xydk<7< z9PzO1I4DjQA0$#0N8KsN;;lxccz+;^_ZwmH*@rAX4oO5lJdqW^AFCG!?;B+CDv*eL zDuJMS90H5aD5|wR80SnR*a;)9^*;{Ba0-twg^3xvhH zu|(v(l-a9-Ls>Y$l@LDEF@7?ru=xB*Rtx@w#Zd!Ue8Ldc?IOh|Ut#fym{M2ZPqMdN zSRCnzR0+J4Dury0}hy8NxV!Q2=&r4U=^yUO_d{B;Y_#kA(qo4DD z7G4Iw--aKDA2kyU=fg;q4f9z7xeJDSA~1*b%(|uD9}&*MxLrTT*>=n!v|ayjU=Cj_ zed8lA$FKHqj!f;CV@^BfAd=nL57AvZv=@-HuKzV5p2J;)u=e%OXRWKTzAmG(dT~`_ zS$RgW`4z(FlW_EP+YT1lGNxbyNWARv`7GaN*eiu^0DQK$L#$U#Dre08ha!GXg^Ydz z+AkV^&h;NXYit|VhXtWE*v~n8_U2K)yxzKQv|{TeoAdy$U~}aKesm=2ecXxIvYCr5 zV4;V#UI>xRYrsS=U@^lMweWfpx(Vx*-tgGrf&mIHsZ!T5}jK~dp86z z#|b3}^|@CXN$~n0+h!!}HgtD}p#=<`F)}UURjGQ$L)l1+r*w+y8^G-0>VnDs-S?&& zb7OTwYm0R@>c(7W+#y5DFjC0+#ONy_^}5m58Gp!SAjYzEBPmvQbVol8yOeOF@nGDd zYrFVPqQ|Li$3hC{7Pb)M*hq{;on3rCF%{trz_=G|A!ayniG*Xmc6%8x?j6B!;zES; zy~S*Va|Rptnk~ePPn?Z#PSF)0JQsL8!igD9oGIZ85S|4*+!juZ)v8_mzH87hZ95m2 zaPQng%=pA-V7iX!J%RY2g4u@GB(3y`Tj55c9^MDd0DT+st0Dh1)@!T0&*>o>k7GB!7G6rF^-MISb$Xd zN<(-VFvd2)d=XEFV>u>(jsoSxFZIH|i;qwf5N`~4!x4`d$425*xJ<}(gh>C%+~nvUW!4!%S4a{NKcaS6k5fva$; zMqboV$6*eO*oC<$k1!YINhv_ec%*QOf|%i8P%i^W$t2}_pz&ldi8;g1!5mhdx$KV0}}!cP^xU-&7) zPZoZ6;roQ|6~0IKF5zp!KX0B~7pI??&(okR_bK6XC5wDcQIUU4_(z5Rw($8F#QJ+n z_y>i5K=_>MqMm)i-z)q*!rv+U9m3xx{H?;@Ec{Kv-yr;T!e1-=$ArH|_^XA#O86^< z-y-~G;Wr7t1eEP^J}BE|Ht0}X2V+55{w$%HLWc`Y6Pha2FEmAHve52AeL_7#U7)PL z^Qa`I!|6ogQ-V(jJ|_66;KPF75_~}Le!+VM?-9I1@HWAl1#c3(PVid6YXq+r+zdJl z_0b^wTA@`!147G$mIz%SbiU9cp@l*VgiaC4dlu^g?1O}6Y3S}5qb{&7t=p2{n#SizZshYL;>>=&FYxVvDl zV2|MWpuCQ#my~)*vp{)Wr3p?EN<9px9#R)5+NV(Q~}NTeHtt`oXM=whLGT|~+8 zn;*)*iGq=GMVs_Kp?3={5IRMu*o}03D*g9=2>qGRH9}VlO+`IXuU{yy3u3l^Qnqu_ za}s`B=wYGzh3*u(S?F4!tAsWQ4G5htbc)ciLeqpM3w=e(#UUo^fHt*xyo>swpL)26 zNdGeUmx|2e@LwT(&Igr>pL0QviJxWTB0uAD4yZuhf#jY@EfBH;qx14Ui0Mh`y*U4%Fl0*Afo*I z4rw*~iAZk^n2)2)@S7=)d*2X0$MzVLDn6f6MuDFQ8IHZ#hcPbi8Gj=`QPUbR8ySbN zL<~&1H_JN+8{loxs^C8ZS^Bwm4DWLT;##z^@blY8`aSU920!!1V;^KJ|L<)6fzWU9 zvuytRQ7;z%r#3xz*!&#FSu!CDV6dwdVJIx@Q92~piK(!Q#eli3DKm0Irp3bL!!2!D zkKi52Ku^$?UdM75H5nGJHcULs6j+CHq4X~<`~SYxNU0oEkbj$9>~P1^uvU`Z@dr=E z=7&wDfiU$Qm3)|QZmAe%;HV=DE8%I_zD5#Vofv0{h}vMj;2mlDL>WS9ZzDvh4>R|m zI6(^x7tgEp1!c6i*rR?=5&aGGj$hD^mVo)`Nwm<5d?XM(6A^E%N7EniX+t!z4nCiV zCVKJL{^b-$&wIp|HPHnx4va+qD;PAai_drKBLiYMQtB*(>;rqJr9Xvjlxdxi; zB=^2xeSm8o_B!oougzrW!2GtB0v+}vygtmEXtcdHr$Wa^I$q_yxQ<|fBI`5@?K2Av zYV2UMJ{F)XZT1YokNxF3-6u1ENr@83RpG*8{!gq@a}x5B5g0h6K5FZt?31}4Iy{g& zAUd+XWa`3Y6g-H_tkqaHD9v(Iwo$r(R7IZMqVd#iL@`3`hkgO^y|Yp)~N%z}Fd)+|=Vjog2*cc!M@i%RV` zzFlp!(-Cc-%(a-r;{H7AvM;V9+CG^-y9%!-;<@=hCYm}5aBf9iyL?33Cv)Cp#Kp?tPMlrV+?neMc-C~;oD^7#Ju#1CcTa5ymcdWGf1mqnIc>E*?vJStYRdi1InOq8 zr_Vzl=d``9_&IF{lA3}$cE$&W6y>z-RUu8eu5-q=oVFcFTEN^%Gxwaf!JoVLoU6qX z$Z2~j$>a_xB3f&qLZVM~hUK(vP6qWX&pnqrq%bCM_#ED_JiGSel7+R~bK2h15T^DX zHTkPQ_MN(rm~gOU;o6sS+V(|+HmlGf2XoqhV_AWA>@zCiYw3ku(fIIEPdm905#D|)QRgOsuR zPg>&Lxye7CqxOewYIUwDL@64e?bQ-$z>-Bg@nu689*H>@z8g%*`%FtAYbE>4utiMY zs^bf1kDO%7aJ^A-8bf?I0KtbW}nGclB{=f)}3VATYC~a_nx^)bofQb z^4uAx@Zf=T2hI2APQ+FE8m^xUXIH2=_dr*H%HQ(bguq7Z7R)QE;Uur9T7x!4xm z(g$jTW}LcbHum&AIpg$->(9D|_@MCvmA9%N9=d`&ekgE-D%5?`e+?ai4Pbtf^JXe3%G0?1w^Cz;; zj180I`OZG`d^^eaPi(*$K6ZlV`REA)xpxh^aQ1D)e`O@KGGA<|4z?uY<>RMNjstr_ zJ2ay;XEHYlxMuq0=>c99drq{V6i+Gs*H1czHRVn^(e38FANw-3z}eQH=4a-vIjQ$q zb5e^P__1Te+18)Lo^5?)*q>YXUh$_^->0C{F0^WWYg;$Qoo(HF)07{dYF(^CPPZPt zqOo;jU&Wb5+0(7>P9s_rNAzOr(Z1OilH$oJ>-%EsyH_|q_Q(5LeX$qL)}6>ckr{_R zW#mg2{9VlY!k*IzyM4ip+mp}veV&h6v=_-Z9qwN}hIPsFh%;pEUp*W(#1@%`utF7P zwaES_vh$dpS<}7tps$s`N*H=Mi0ZX z-LJ~FS2N2}-2>EU%Dr29k7ne`Cwb5VC6&1T!C9}Qtsdr9Ro*@a(f=c?r_{<3$=#w# z=FQxbd@jO|>dZ5_F@eIu%Z_HBF~=OBkuid`_0k2cOX2*NF6g}+YjWCjlrQIu$ETr` zsJmg>z@%2+xC>{8KzlPrTr5dxCF?A<$ca);L9UZu%Eo^WoV7bu`sgJcp>}8PsP2A= z^})V&l+;F+G>)-j1eLZ(^fBSZoE3{g) zJnUI6>9n<)TH1ErZuMXWYKr~G-Vd|e9=e@1W%ZIfKhy@6+*msE<>TAXZ*1G0-L|_< zT|=t%UO4*}MEL?aOA`V=dE4%gS;ZAiSs%wkS22p14gDjRiGJ zxUZ5eJ~`NzG?)mnInm3V!RHj^jg@3ISRJ6nS+Q1+-CwKAs>;O_=+tUhKM2&6jl;YO zwsIO*0o(KAX!BxvBey&sXWI~VoK|Y(P3`lM^+HPuzirRI?`6~aKLP0rjYpWEdl2A7&>w+OYN zHqMvL_UlUTn6Mlc%^_hvkauKGR$By-35^x7bFaMhh2?d#YVME?`*SL=Ri&lAvz4vR zHKYAe!l_T~ngz-qTfb>?a4NvTnd z+}7xAP2Ftbwy?048n!|n+=nq|84Li^9K!@x~$cPhrs56l?C)qwT%r{Gt_ES zCRwN`yUUsawrq*1gYq&v4?9rvno{;J0_D==lz_%%5$Q8bzuK9&raIU$Dz5Yl6KiVf zaN(n82oF{(+#)l_?4`8gcD(^BVLEyYd(MijYdpM0)D9K*;a>9EL^ zjl~U(^P?^}KU@|ZRH%7HE<+55%Y@^cDQ|z>;kdMLHJtsZm8vw)X}c=aq}u(w@nBcJ zCFA^;WoxJ$b=UFZ#)o^Ee{s#yTHGXp;pUAlTIm01YwYkf^rhPPIn}pS*W6L<$Ckq7 z*JpA%0p*AsT=D)3pD5EBqY)wSWme{SLEFL*Vy9;k|a)_kt>dsZ0d0sma$K9sM6Nneq z;9E;&VnrKf87499xY!J=XxZ0WValuupk^gCNNp%SsA7=0iTI$3yJ3`MF>IGuFOb^0 z-$7&-NIx`4tHi6r+1IPSj?H8r8tGB2&+~W<{tw0fEBOB;e%k6hC;kuMcgTfdV4X8j z{KMh@rO0H#KS1~sZT=$ot+WF0Un?@r@LOr!5C3H0KWO8B9sU`@|2F({#lP9c{~r8S z{&&J}>14l-%R$>`|jzgqlBsP{+3e>wcmia!Vb z7sWpt{{7-Fh2J_K_u2ekviaA;e@Nt+{;hCKkLgf9^->@8SdQ}cGDO-h;rk*yYOT)B zgsQ!f-J0`q8(|RoSz;D&fAK|y^=5O#@b#noJt3I4)5LSJ3fuCcBJ;*~0{P7ql@I3woed|E@e+vJf z;m?4dd7g&v0H%tcws4k+{}1pt!v7n{Z-jp}{Qm|23-DX#4o#18I;`05k)!^CFtpbnr zWakCI+W@(dwz#YtoJ#FyxMmN*wZa*w$RTj)a2LDASEABbm)UTWa30u(H=+Hq4Ik(O zCJ&hd8ILd?d>@I2pN$$v7HFpF)fNbkFdgz+fp^+?A{La-jks3$ZeZx3p@q-EW=hx~ z;WOJzsfRH+Se8^KL1622a)D{%!u+qtF424`!sc1KYTWijaa`HAfyIPO-bwgtV=V@~4>PnXbnsjju%|*(r zYrQo!tY(4DxmJ~cc-1^gySbCe1*{!7wWU5~+D!xeZ_lLIUVQqu?H(~Z)R941gR`A#UI>o`*GosbUdL-L<2o6}f(} zu>Fccw5ZlRW5?fQbru@6Kv9>pF3nC;c*Le25n=7MY=rgat?HGftlYqZ{hzIH(u zRi;*DN|D#H@+Q-)kIHr!JF1cnJ~V8{iW)g=l`p!Trig0o+ziuavC|Z;xTDp>i`r=l zSAp|$@wLX!Zl@_ck-CT#;Ds1PXN`<@m9&$V5qD+vvYOk<5p{7*?egM4c~xzBodki2 zA$mhyO(Z{B8hiqgC1z{QZ()ZEfzcGOU0bVj(gcGrYU|-rm+jgLts^e%WQj3a4mw?W zTqq0Yw$#E_CZj2}`k?T2H~R;l;b#`rFumi&OVwtgghj2O4!*W+mtN@8Q6z4Gs2anT zU?WXyMOgFl=Z*TY}TH#&-ol|?M8nILdcCQSS_ z;t7L-nPiNjkAI6s)5pI>Bk3E-7NQocVeh_@&8TK6_H9(_0@$i;>8*m$ee`-U3q9zy(vquwEUlEHte5kE-by>qc^ID7gcc; z?B3RuRu!|ZB87_Yz)Jz_Gs-IKvG@wRX7F3j_IQDS-G&7@i8chzW>kzUb3I@t$#p7p z4#`|Nhjw@JAmrOY@`Zb(f()C3Re z*R`81OpziuTORKOYzb#Q4ahCiY*O3-&fNWEj-@LZvzUH3NRg~i-XeQwo?^|M1rjj5 zRw#uZQmjIfGR(c(ETu8@2^Bgs4_{&x!oddG3Xm_FUQ0~?@tRfKnIzn1M^{y=1Q1_d7 zVS25&Uj$sEScN37D{t^jG4u(=nrV;lh+@qmd0cr5t|lyhdmPMv9+&jF3tg*Rm0 z&d^~P5Ct9xTXI(+sV=5bIgi~cU`)s=U@X0Hao0gIF4Cl+*D@&>&&8$$)81dA-IAX# z+>&2XdlQ3QEfa&?+M5{c9>GE$de{}x>R``Ma?0vpFU#CuayR|hy>V;Q*r$hf zIeP5ADvagAl1zkk!G0m@g8d_`3l6Yb7xde$3l405E<)A?2idI#4mQt)Wf?FvPMIad z)?iuc99jG!JcAavJWij3jwUTjOR*Uo912Y~ILw5m{lP1&{Fq8E51JYrZcm=p4o6s$ zVi(b{+7Px{cEp<6G9qQ{wi7ek2U;pdO2G{_xKR;uaa0mAb2z$va3~Pp?6as;bERcP za*Sm~@+zA-#D~xj&3@R0nJuMhKu{YO-Mq!!J4A($_JVZey1Qa(H=+eD3E9LNJ;@|1b!@tYB5dVhv9{jt#8}Z*o z^Rz*J2fR*S46QD9amCSugMI*iE_Z?VFoBo5B{;lYP#-SuW%&1aX*9#X9vH(k2W!1Y!~Y%SclEv|==b!_gP$f~U=gf$At*8JfhFX^(??I32GUnwh<{J- zTKseWJ?eWf=yz!`%K^H$Ja>a|f8^MSG2aAn>z=QIya4C*Cz5!)DZbsHJIJD`O5c79 zDN~i|8rch0+$WwbXxHkZ=#s!Q+LIewy5jqU8V7dRR;N84jiXyHfF5x1u$|fMPIw+C zfbGm~UxJ4<9Z%bt9u8xNFeo{ZBqiSG8w>g%S!^%9sTQK;OW$k@(ekD5MhnsMrH|Gh zRXke0^i^AkmM?vc7E+ckJ-i|(fThPPFMAxlTf);IJwL!-a)K{ZtWUsTeiM2Zc)DKz z;4UQzeFEJFfGU6AKzDSfravXn1AEtN^C@FC@G=V`%V_UQ0a+IbY-o-ijTS_v0lA}t z3PrBbTP9o$+%pk>uEe}hmXg6>CzV)$Doj{NnaPy#)%&{Ez=OD2&$)_YE66QiFqW?? zEB+fm8{zas51ZjL@Fw+7Nkv1?fSU#P-*EjL`X+?*bGS+R-+;j-gSlBNg9m&d3s6NHVVT3K?dYn_>O`DskNyVybj31_3m9r-G(DiBM+k zJ0jK35q}F{umBDvbv4G5l)4_2(fc`!l_9B=UrO-X!C=R?5j+s-Xngk4=luq-9^*F0 zW%`?VgGkrGHE%jjb<@FZFm%%y^aO4{j?35=4t^K`w)0>6&@No-4( zy$HxxXB?9i`~~0&!l{I*2dr4X2mj0D7m$y`!R)DaJZ~B5>j<+r4|h!$pKwF>L_Xt& z?ui3=n^n(f^S+NrdA!v=tn-G0i1i?$h!5K%4*D~bemD&!zHB72bck>x;Sd9_?>HX4 z3euNnBIV1vAou`-pBhMM?yCJp5MIulr{RQ|$1}lz%f1ft>=+CXaJ6Q4e>2inzJ)b@(b zAYC7(7Y6kW(`N>?X%0rAma^AOWmLomP<`GpDEkSOy&0j* zUYtSuspw5!2&f!QW$R6|a;W9J(!_^5H)_RkNT(pmdOobIiD23)h>`xTA}&G1iH!KW zPO_j4q_6|0Q=i92!6rudFP+z5cqQ2Ltqo)Zc0BsLHxTI!Mmlz}NDfBegSS49#@o81 zNjN^}Bx|VXgRGwqm>F##W2y)3dAW$aoU#9;bEtwEp&hnhgK=>z5UPY&-*qb zT|knyecnk3z@)t9=&kGjjUphU9B+g&x-BfDnT(~L-{%cR%PC+?j0_O#r(v<)wZ|H% z`qKWYX=s^@%_n$$UO6<}M-7)#Ls)B$MVA<=o=nPbP;tJ2IIlC#aFuF5$c6HHO<1f^ zjPbmR^((}}Kn&wuT@CBPQwwW0qZ#8B70W=AnQg|3$e%q%mOjfGPHUqWk#iBa^bz?f zM(!_dF06od1=?uF;B`Nqyz+OD9Ey%L;V3*~hQp`z=7{(cK#oDw7+4K2#v;s_n6Mp9>`K1DTfkU7;ptTf zpWcNx&zP<7x;&oI@P7cWH#w2S7u?V7W(leh6b8VG_djLBccyCH@WR_#78}!3O{YYQEqj0FcY)$53Ro=<)c5 z+mKgF;5DwT#oeD%vQNQ14Yv<&KOE;+-+|+_DrZrxe!J4zmyaQu4@&^q$Weigo}?y66@`LWekygPl@j9r_bT>Z`NfBQyruPZ07 zJ~H{8tM_DjXkD4skmodve)c@BY13`@uVT?_|Ap*WCj?9qXa>!ezr1!j-_)!nMGyf!hGL z4Q?;oLAaxEr{FXUrG0RIxJgz}3Q;cTkMw&`t6%&`Gkbv`E8w29)?-HW(cL z2}eAW00&2Y#DBqkn#XtGh_m5%@UBfU>R(67yFA%NIAU%W{Z^OIK|eCQ*#&UasQRQ7OwB13GQKaQD+t@gmd zH?ft!dda_a{vL?PFQ0=cZ?zXb1`u2Iw_WtLNO_M-e5<~#{+Ds+q#Bgp>VJoR{f4K8 zBaBm#TxDh5GCh`&=att2&j;&-?T%?P|11;JWnHqoY(ugVw5P?RvvA|M{0|Yd;zD%THS7(315)SjB$1`O3f2 zx;3p|Th^>;@%qCv7aHDO^-)h+%>Kp)&yJ)eZSR^M-=tOSQ$xFE&~i2{Y12|REo-0M z@@zb)5oqO-tLfvQ5j{{+qA;3$18R`n2vkTGhTf z<(0RNqZ0lKmwXFS(9)S3b48aQF8i5Ea>6&7bRnRiZtg5?L{ImW@6cBPvf zBJz2GEY1-~#Dx-(54|GAXAeqoCQhWdnn4y9IfTU#JXsvnONx9{A&bu~qKnHdWN~U( zB67S>7M~x4^#G*sQ&xq*;I;I34$y>SO|;V7+HJ}l89;^8Z1s-ixlUe zDa8qCky2B&U~zpzq_}8BDNbrhxwzm&R$GY0#}l&npd%6a@WMjyK?W)Cfk;BQCcqHR zzktQn0!g0_SX9ILEfMD98d;o+ll1vmN0uif#c61=I4>=__ChULe4-Owe9&XUoI?bQ zkANa*nxIr$DH$|mJa%Fg{*~n8NUz37UuNmX&kV0}jE$PB!tc3VSDZHD!2*NCOq5v#mz zL{^4+U+<2Zy4%Fe_~&FT+-~z)Z3g}iZ84%uqVsFjO7qpm`i%LDYs$*gu|ar-+5@b* zp&n&lCg0~2R+TnXU>BeIjLO15O?CN<+3B^yvPpILnTkEX|F&zNK03X=3@v6k8qv~> zg33jF6*MD{uYR&A)uZzN57>8ze7R)A!j;z$4?qZ!V!jmBZZN4hZ)K z`9{(NHuLc4_HCx)fizhE6JznIG#0gTz;sW`F#KR=WEj0jGL3GYag>ewmeB_?lVSe7pu)H* z--v}T*&Q&-+@7t**Yp)e*$R+!qgT4!r|{SGe6o|>U;GTxJt~Zte51!9Bj%9N(_M-3 ztT1}!8!;G12#G;J1Ci=_Bi_Bl82HJ>7`;C+ z;(uerIG)zK8T~wijsA$=FCP^+-srpA7~;+_E_bIJL%=y?3~=9X7*mY_8HQ1Aq=M~7 z@Bn1PXfyilHoWdkL%-k9P8%_?54>okAs_}-lz_U5fpA~sN5>SFV@NM!1kRR$ltv(K zx-nwC`d`8SK9IiI?O9{=USZsvZ}d(#ZeFkcmA@A=F~jKf1H@hreQxMLq!{;?49^=z zOu*;|MohZV4|V9CW>!}^a;@qOY!+bS{f5KoTVeR`hc1wOV*pB0VGPJO{OSC6R3Og~ zaH;BEx$G90LYmGGq-DM-%&YPbu&W#%j2z$)EfBQJJ? zk>X7BG~7ScoxUPH-<>ganma$=y~~~No;Gz_`LwC7*mXxOv5O{`C;8; z1`HimOTj^~b_2+16pZ=*#Hv7K^kx;@4SXGE71BDTGYv0@;r8I=5%)-o7gVJ5>9IWw zZM5Nwb*8Q`;+(haMy`07Y&9}*GH1h|nQsimf4VUamtnqYh zPufWLA;X74WljfhjO&WDoxSo6-w0fjhCU5%2nH&Q_}DLazK4^v+lWs$lH3Juj~^)w znPyyu6FMZ{xGWvHb)LH$KIbY2nlI`Bydmm8iRT4@D~u!+I2ajBbx$`IA#Q5Eu}H-| zjkt@Ps}Yy&9K6(YBR$=?9-;`yH?Bmw@V6OPR?riVM#=V$>_GR&h#c>H7?IUAfYM-P z(RuQ2-TA1a!t{ItjVvBD>qVmR`Gz;$h_5hkf;C+5M(h$J=8J}rXT*#$j79uU8ism6 zl02OmQLilX4EIJpa82O)krU~T4IuUk_H^K*mido{nvSZM3#hmITP_dk_T=5WjX|-x zfp?%x`iaq(ur1cPNH_XA`yX;S3~jiP6kFj4U?7ZMn6Dp~V(S{b@wIdP1%Q{0Wfj1D+3Z#FQiUiX2w6cX6*6 z%DKTiAFFL4rW`Rg)mHgC5v%RuJ}z~TYXc9jPH!Qm95G(9-o?FN9zr-LE%6+%g_z;Q zuS)oOg#Q8<&kezF;vd14pdNlG={yU$-QYcMONaP5xSJsNw8-s-+_T`}IVG4M;&pHf zA@>mI&7dnGpCbADGI*Fs+(OL!5jTrmE#xx6-wC}9;N1#2V#*O$Ae{Bsig3Pbz6jw~ zy%HB9ocrRujqoDie1sD-K5;f2o+p=PfihodkgrAfbsn5g@KPa9OnG8I!uR1x`Z4Gm z4xEB;VullY5YD}MvJl@3>_9j%!-@YMqwN|GJPP4_>mD!UZy{zl@hJ=im=C=3v1>T^ z*^oO9-aC*ZrW`R|@mJ-(6XEXxLcC; zR|L6bkYj%LL9Q9RTF6=XC$2&`^ULrC-~hs{{1e|K@sA?B1bD73KJhF#mM<4_Y0!gD zB(~>+cOB%2nIGbD2wwo)GX~cm@EC*>Gn{x7+-&Gc1Es$Hkmq?=4}F8c>jQb~ybwc= zlJi0?6?%No3#WM?M@+rME|G)51l10zA@_HT<4$`*?SS|c!uKM*y-1Jt5%F=x7Gmll z=BFR5|2IJwgZ=`P=izz8qfNQ7UTr(-Pkv*G zN=?(W?VEt{naLJnh7+$sIM3@g_95JAZ^Zc4M&+Xb;U_RxgZZ3bK8Oz?dDU)X*G81q3}h*=-R{3?j&VJ|52 z`$Ne45RQIf`yTL~hdeRmiJuesr$KqX@ClK+51@bCj=qu~4F&H5#E*zv732cYa~g8B z;8j45n0kp9A)My{{qXi%ffpd$Ixoa&2I6s zEYLARGeI$LwR8~T^TUAW6SVC^!0V6r#Eehe72!qD$M&8K4BPNqh#5}ohNB+59KMTR z9PEJ}zMy*A(6$g$j`%pj3lZ-Y=xGH$ig03v6Tb~N2YTLw9QRAR2XcqNI{-Oi$`S8} zn+~}jfwG>SgM2c=7eW4c@HRu9nDWGUCs&>S9SGkFyaC~55>C7h?gr?240HzQYS2Q^ zJ3*-*i`u)oL;eZGUj|+k;uBLpaX{qo=CEp)n<2;7nQwxe)h>zW!f{-JF_r4~z45p% z!NZq?!G52348pUZ{|xku10IENVx~uo5uM6cD&)N2zXQ2p;Q1j(OgZ8dI9@kBg?b>* z{dcku+o|y8)8eB2tKgHxJ%YD?P?eZYp5BX!@9dT(}h$&Bu1tE1^--PgYfZs&; zcnK#y07reVf>IwAk#@Ndo(=iE;O&GwG4&De5V_5es|9~Ad$pEl4jLI1}MkKT4d6 zaQ2(Yh@S@RM>sLlBj$^GJf99w_G@RH=5=xtw$BBx0Q!ijk9Y#YPeK1C zq&EflI)oE5oOmo8+xaL^>Kg|6CX_2L5#vwrupqmInDWH^5q<*kUxhxtsoDqO#0)3q z3m?pX0w~Y(-yPbn)yU5ZIfu4|nDWG2ie&n&piKWb+;#jw3%Fgue}p*Xg$qGn{xo9P_subOPw}kZ(qQFm~F` zH?6U9yM>tY#GB!mzo$T%zsDhe4EiQO|9bH7h4L0+$`f;edjjNEL9PmV-iF@Q;H`ul zG3AJx;iz{RDD~b7`J>QtEA-ZZR{?oq$`dbwn*g~5kXryfXye;Uz?%;_V#*O0!clKN zDD_?kdE`OWR~~rdAWuwr;&hQ41i8cDKa2E-f!7~$#FQiMBXV6KSAg_Jb=9`_1TO({ z#FQg;i`?IJ^Ewy^w4!c+=}qGp#KQcJA(&be09Htn0kocfn)yPgxo>!+aPxY zJbbCYg_v^0zkuWU+$VG!AqV9OV=OXSXJ=6zrvF`U7&;p?> zGvnt9%@#Ud=vbjyLNkR97n&wCRj6Mm%T2v3Hz~_a%5syUz7%EoiQyCl3G#DMALQpr zy-WmUeISmD^)MAUAh<*@%gb<!<^$HngrNioh=dN95=^$R_Z0#pAvp{IrNr7H4I2t6+J zn9!p_-xhjU=vzYfg5nJw*B(&*Fs|0{Naorq{LRAOB>c6)e@ysmguhbwEy8aWey#91 z=H)LS`~||FFZ?3mPZ55u@Uw-VC47u~m7d|k_X|Ho_{qZe3g07qm+;SF%)|1Y24&DG zP?i_tTE#yq{I`XFQ1}OgzhC%!gpYBm(!&>RsAseAF+NrN4Z?p6l=i+7JifPISwViR`^xI4+y_Z_$9($ApH5lFA{#C@G(wR`I#d8T;XR6f4uO= z3O`HunZh3~{50XG3g0jM6yYZezq{~#!uJZ_BYc5q`7qn}lBi%KO56Q1%nqpxN+_ z1!exSgk}mIE;LPOs!+es6rssNy9@OR^$2x=vV7-}S*C+=q{62JpAdXZ@KM2s1-~Wu zfZ+Xt_X^%4m}5ig$M{j{=Qxpgli+oNIVNO&Fm6=g7%wW^44Q-bXb^s_P>%bkCm^&; zXo=7TLgx$R_>c01LJNdW5t=JBTj+S9V})i3%@jIZXqwPeQ1;h;p(#R>g?1O}6Y3S} z5qb{y73S|WDC^;v;G=>M3w}%R0m1tP?-jg9@D9P-1aB6+N$@(sYXz?nyjt)|!7YND z1UCq-5*!d*B6xw|BEf}%rwGm!JYMiv!I^@G3r-d67o04(yI`+ikKp;BypE`slzK_C zKq2c&6PzNHdKgYUq%Kg(k!CBe+3o-}UMkW@q|ldy zz9{qyLhlpG9oHyNTVAAzLgR$~8goqKzaeyo&}~8=6#9VB3ZaXHju1Lj=*L)-qP~xW za?Otz>w=1YLFj!#xu(W&%&#ljS7Dr`kbPRg%%5)A~aWMSD^_)_u?kb_6PYF3Qb=W4s&T_+dwa?tu><9-z(8&oS5v@vngY54fi%pc41sV%jbK zx8bjpxO@i~^Xn=u)Q|~#_NJI@4-J$(&D?muOc1t&%-}P z{C|fZ>#~Z^_j^B-xO}&l*9GPIUN6_j=syNJ8s$wu7}w^OOMdun?^nft5cGHAKLq-7 zDGT4{Jt=8nty!)AQ|AKs9~b@xP}l=%@V@jzj3D4Hb?p6d(S##ZNmbKbN?)q0(FUw54)F__UqE`x@iYUdxl>r+wP} zr~>k7%LUKw%1?VPOU2JGGS9)E2)%_U2iAAA0dN64gZ~coNI#$Vzl8dve?I*8;e61~ z`P+TM=bRDV9Z-DE4|7Kb%2bh$Hbj3J{9JdWpK}D5Th|id=X?NOrBQy)Jxmw*Ecm-2 z@08)3z!!wS0Df*cLp>$%^B&Cn(`N55=ugCZ@xMm7uvV%iBK$4*IiEMc*PcF~C&_4p{T6~VBE&m5L`N=l^Cn%RC!!>NnzaM$C z{I}cqT*J2bu{N2$Hb2*QEEzr@S^o95bhB)Eo@LA1R-4Qu8^5PbkMy0Y?ELW9(%)$F zlV|bA+VY%(^JVdQ4O{+ZTb{49@%agZC9~M3A0I9R`8V49S~1`DEM8LH0Bdg8F1ca3 zaIkf*#VM|?f$7egrIm}-#>!gpk}7joUDKwdX^6r!eNjAPLjJ_!i3K^cXBVdyTW_3N z)|#u#;MC&6Su+ZY3#QI43W|ii0ILNBr%s<;lrw$eq~f_bv!>=uD3~<+l4IO3sc6cK z+-UM0XEZz)rVRAtL>4GqPI7Asp=d=jCeA3Zm%kJ7SudKmG%VxPLFclYTv{s$Y&6wL6^Hse@r_tJ51-gW^Dk|&h+u19SQgoVHU3o((jH`#) zLbhrM`$xCmK)PXR?WO3g3^USfcD-g=mlB(1fYenawt#{blP_L<%F2*w!wC7GJ{vvq zVkBHXyPUBrhW?*-GdVV!mBXri_1se0CM&LMte(BRdNJ}}UDH@!wR}eP z+{&`@8r)PDm)F-Ln=>2BDR+q{ubqjgON`iw-6*RVD)T&VIg1-Amz7HlGA2}3mjz)} z)v~4Oi*&~cQYZPk6#F*OqF<{0s%Y^S*HqQOuvCHA z?trD3Xp*RnDArOsjbk@L(}`-!P6{mVT>Oq?j>aZTo|O~c5zcPJBjhMP=*Hq0JThbS z7=P#(nRV5uE5}@Q^{6br|H{mf2pE;g(2<#$W3s@zYV4JxOzDzXYk;8c?C6PMFQpy> z&GZ^7m*e$MPyQWKR~jCd)w3<8(D;6|ruj{ri)ZAHj_=|jnG4dS6sO~JGmqlp1{lFK z{U$D&G`}c>EuUJ@wtz`nEC^FW7^zu^I&*W1azdECCOGQAbcwdDues?L`PPBEL%q81 z2&1?-JRgkz2Id&}j=KGzKI?#v3cHfXd=#L5xPDNGIX1@Ik9=UtAnf2>3b(-^FH#5R zA$Sg2M8~-f%d)7lfuC)Qmg3@qg1I*YRhnPj1FnXSXb18kBM(y|QU~YLIPdY5PIai8 zwi?G(R#((SmgURP!Rmady$+w1FPf2B)VQP=^{QCVF)wFUo)xS;0v&&ad%V4l;Hj~6 z;I`ADj;~w5YCpnQCKU`Jj$ZE>Q>Tg32Sy(t;B^1u3rNg@wb1 zc|2ZgINIf-uC#gyYzVc}!JR&M9Kee~5r<6&KIez^qiTFz4iz2h;GE>8=-?SZS zvZKn1-$5Foy%Zo6rQRpzO)qcY&JdO!KRglnm|ecOv91ym%+Yk9&L-ED)&?pU*DIN{ z_BvRvVfi`zx5uux9Misf$NnEZ&{NOeJ@vr#Kl2yM|L6-Jy?g!W z(Jx%z+cieXSUN}iCWl*Lp|TB4uQOvVzcVaq`@DA?d5M37s6sa$ zuDmim6K$0j-9LEg{O_D3c6vDW<5tgSi?7Lzn;73zgyBtC^W21RK0hpgtAYz1+^wnH z&k;T@Pxa8|zY5z4W%|<=S7DGi;;Kx5^wA@SYX8uVP|+R?mwq;N+HDa}mSZwU=9X8K zHdZxY1DlGfn$iXs#N>Z{<(=gmhIJGpud%9X7Dv8T)JUyYWnLXE2nlwovRxo_X~Bu} z8|Tbb_kERm=oY}KtI6yk+f9}SXS{>!PL=hgnwr&A8~zmI?9|t5Rpr%78Uom+XAVtW zFTtWuV|9Jy60C*5Qg=gG`oY47C0~%!Ve*%d@hCBExBEdOa@E|#jDp%FvJ=)kL6 zPSfP1%Q87>*lkU^Q(@`wx;UC*>_V?;YZ6~i(%N5)X`C`P!pLKsWi-+oVIdOtrT9n- zkqMSX$ixUskJxE}IZQ@6NfDMFyV@;1cC%Z0)N*leCPp)+!v6}Kp5Xok*{&`JK|Ea?zXdU)#T!obQ1-VVr@P_gBZ!0V zLVg7v-O<-@@(IpE)vz#Pu~Q6ZEjd$zoPLIrb9oLL5!?@t?(iE<&f&$p2IP4Yf3aUj zn9IoX#r=trgEjAu!0^KvwEY#kfx*rzeeql1iG_2HfejD4w;2gJk`hX<7fIr>f z=C(hBbNSo{LAtmcG^u2!J;!jiAZ-Uf)HFG_8P1j9Bo=~0!-V(1aUW)%!#x+#lDNe% z`71!l@5;T7$sp*~+Ya~zj1{6K4iaQVgvOZF(CBl-enSzR`h5=9Gm02yn44iqmrLAH zpeh}UL4Y{k(~wI1xkzzVmH|FTd<-(?bBJb#k}5~(n5)}BO(`P-P_y=&<@_2Q=T~?@ zGn_dqOFvWOKC_6fDE&M*L*sqnmc}2vspmg3~~u!Q}_VeP2zl6LapF*dyT}K@5fJ zn-fy?{55tf_&b0@m;%?h|Y-XSL(fMboHy?F9e@ysG~UY zu@cXY!KW|l`Ldmm?b)+knC)pd^fK0Gex|&Xs8OEk!lDMtaw$)e=DS1IYG9N%i8`w= ztc6_k?ViZ^eD?0B60LP^E?)-5yy!t9Gf#V2Y=WeXa%b8u2S6<3#sNkYE)|$fByALBGukrJ^n0YC^oolYMGOl%qj(Wa8P*+}2AE`rKzz|Nw&7V3_ zCIzn#b`$Cl9ZSm_0$fT&zQWhc`Ryj}!)ew4LgG=Mby)c*uVOCLx>;CR4nmmM{AtNY zD)Pbc8ZOz$e5eVPj>>WxI+%szc(W{3(7~|lom8SWZ@F%bgaH^LGFed`<#hqVmf zLI<-VZ)D3lREH2^s4uoPCV6PoQ&TVwOh8AhwG4yubv$Mj#EXY6r)nvHLp#9t4w1v)-Jh1nzVH~<~2$5tKvLFme(U$j(?qG@~zS+;r8@la?7 z1h2W!dI-K7c+m&_Ml`kHwEPK-t@PsWOd2jBQUsIb0TD4IY=LS4;CKYtXx-@WY$zHTymlp+^4`TQ+}5&Ttz>- z@}@2X{{iq9<()W{T33}AH9vg4OKG_c{JEl~ZOzt&Ta=b<2e&QM{;r36N^e(R#$wyT z)g?<7ro!(p!9A3vW0*Dwn7XRupCvagT)NOz^XDUm@%#~E?GInCJ$M{KUUSehweawB zO8V%jt4drodEf>Q4#fX@=($I^Y(s3dOBHzAvJB>vvFC7MlF46ikp50SxOOUW?!m&T z$-5r<(8xUWP~qW?lDqXCR+qqE^3O_AYYG>1MNE%@o|2ke+Z>!*fmJDuGwSu$vs)HyQ++@QJvrvlotI zE3~NRBfmOAmKT5Q6FdFb*XBEg@u4jxJ`RT80r!3oj0X?(=G?*6xbKJi--vFd690Y+ z{$TI{S{HbCfGDx>X#a=0mRos{XL#)6uEn(;1k+iFi#9MBXWBL5Zr6!q8CI$IPI~fmM8p`hoN@!VdgK9^={c!7$L_F_%>jIbq1j4i1PL%VzlZ zKe$f7@!{i?omMSCkdt+$)>bTQ#JBlbWtituL^(Em`K#=#=@pHWeZKm+++601aGRsH za;@;qsIO*CU2XSyf^Qkhek|7+P^WxxIf5k$GgxzcRch;*iqx!%#^pvcKG}~NS>9y- zhHpM~b0fwquFMX7pFbgB^20pE@s;|jEeilNZ!VUH>kLn%dR#kX)bmn>>4VDb|dr6%&;;7`?Z!C(5YclGQ2oSRaq3Pq)ya zxXcQy@cZUt(InPkG^xhBEHGnPy;=krJgEUQE?8uYvZuy^_{Uw+s+SzzWmp{G(nGeU zvdy!c2`VqIR^^y$I?Ay@7{|!1KshZhpW0ksIR|Uob>YH-I__oEgx=Q(A7e+ONY!E^ zCsq>TA9Zljw~@IZvMNXLBGScAhvjPsRMv?56m`#mUt?v^-+*~8guRseu&k_5yi_>0 zg(%z-WSD#E^mY_^sm*R+VjG!<5gfd^IZXo@Yw129TGkGRj-`Ge4#m7$cSBGgr_@)4%eT`@h_4^> zNzXY+#lZH83q7@I70t-y3RI0K4`nL@+<$ClnsiMfw2Dv!S4h2qPil1W$*ONOS(O@W zBQ=Uo*7341!j71rK3P*n1GaZyW%O|$s)0q+(A-qJdake1=U)L<_z|dwWH@ho zuU7eoj9Z4{8$P7Xd(Jv_9TeG-3Ji(q=YE zvhKOjbXJPBTDDKi%v&9$sIAS@N?8MRgyjK*R~~C~BM3$WRGLM~+!4PNyV{qjo!x4c z-&`ckT+|ogG!5H*>x~E|ii0nbS5(_jQ(J@2X` ztD0U*#Vzq;r#0S&!PUrO3*kqLd85ff``hTloNSe@ zy4FTQ^K}Hxhi&6U<+jx|PHtPpobtQ{_mL7~iIY637#YQK$UX$3mkjrmWOfU+sK0xwEUQF@iD6LzK*P)dbsx!usQ>a*%RT78Rl;R;o5Id7*Hu8Z7Ay zxm!KA5CNmy4BD1U7KXJPTHpZ&<7rBN+vMCnqcb#}FCu~b~*3FyQq2_^u| zf$jpKKA@3dQ>%xI9BwL&svhC(Z#tOc$hbqp=uTer@X?e(Gp$Ojt`$-cHOKNQ*X_+b zRj-go_Prblv^pd83(RZ_M(TE0)lH5SB-k(w`v~)VO;c&3M1nJv$pp6QFg-%P61H-6 z>@-_7^XhhfMWdedk~+vlg?M4H;u>G&@)C6a&~>P?M#t`;iiCd3>Qt{( z0%oK9p~Fz+s}DWgsVG3`;e{6-7(cD#l@p7d&LaM4C2#0JXQ%9mvsCt{mAvLj*saXC z$d$ZdLjf@d(Ru8>pQgHx7Lx_B#ql~0xBX@l4|503{Df3SzcQ?r5MoEgHWztX#MES? zuNLNju)f5YH>FgMtie)iF$`Fk(4$~ZWA(x13VrBN6I*Q+>%<8Fd=rA}i3>32rEQy@ zs3h=@N;x?R}T8i+px-Bz9a#)Yu-jxlRB)4luhq??d zujZO(EI$~Cwbr@#IOVo3#`c64W2a#Mw9%%6>(g^WzTQ6v9=+z;>(uDA*J+V!uhSzI zZbz=yhQ3U_(mT9LTQApEVP)yKVMVUigXO;G7Ju8}Hc3H2~AKIJK5* z#yfX#nThOTjSoKEDId%Om;nvP4D-wpE5l(c(p(vy8?iFHhjnFmPwUF?UirxVY*%4g zRfpuZ^gbYCMu)$hld=CC#4Qi!B&Q^|ozY=5h~CkXrd%J$rD^X>OW$b8(HW*}KP{_u z_SY-raTb~R4K#9j`gwSsE=)AzC=?cmQ%LT{KX+1T@JP`l0 zk_+)a*KqSQTqSN@y*w5&x5u|AznWh*Fe|kEO(ao6w!sV^o$;uAJ0mg?oLgHE*=7xl@0=@ z^J$li>FzWh>30M{W~C^#1t5P0RasP}pz)F1xNCEG-Qg7;qCQ(r8 z&ETZ|#dI0JAeA3!_<_JX0S=tCe}u#_HL1l2N_n3M@5h698;;&%k=(mLEWza+tRjLV z>{PtGLlrsSPI5EeEfgN6T+gzTm)ptTf>dFSP{Q|{t%Z63|YagpifB4fivU!c2Y@ zX4BCDm}rJ`49W`J2?&o&EFBy*GO^?$Z@NBRd&6 zaHqP@GCb$w#^cV+0(5kB;*;;hqrr?!76|uH+|tr(Qf23yq=j96gWJ+SLh?ye(sT2kMPE}!FWJE_G#2;Zv(6=zD&JpI;MmOj06DHKKEv$3_`i>AqY*HPVoL`w#M<(ZLlj?-zblGlFos;@@>~gzF zbxG=*W4PH^tN|-MGt)~jE5X|~x6AuL*7~+Rn3iu$swdK7xas&QuFNky{{Xn%DqcJ|CcQ)E zci^P+fJb+`#w;&a+d_kpK0|S`!ZAG&47OYCvJr($%4HVdUwSoa`+Yq;S>BnTl-D)n zYkkCJqtHrrQ&R5CD1(`nnqZNwCNze#Ojsq9;K<)PF`jw@3oU} zf#edE?z)-#m!0g2I9gnB?6;L%0FqJeuG+-3dK+n^)9~@eZb-oqor1LE5Dv>}HyzLU zASWT(-L&`RAeoA8UX_ZU+sR!fsdI}4$Ca=qKL<&B(B0B?=Dmy%YdZ}OH~N1ABOA&) zm7w4az;Ybse5WbM$pVv@if3{P2*$9}NEHVjRm&K5QcYl5GHw}Yr!mU4x1F49lB!uu zTLh9>*J+#*UTG(3T;1Zj#ZH_agiz4mG)c5VAm0PY zCZRK$A&`GJNwh;CkC-GHB1Av)HAd+sFx_3IhO6=Kz}Sfl?ZPc;sWmei}!i)NkZ#g^bEljw-DwF?AGPp=G>vd8UY$X{FK8uF>hS0T(i z@1?ptMtUWJy{jkMC$nmu2?h&pPhFQT1Ie&@>gsWyNvgIb?N1#3+a-ed+L~Uw39rzgAo(gB0I@t!4}sVlhhqI8VysfI#JyYgZ>Uz9>!63Ez)!~UXzjZBv8azxYXs7vyC-uA_}x9CIY~*iX|JU+fm+JLw?{81 z(xb!q4}iQ5uAWpEdxtJp9^J0W#%d5e4Obp||HgHoenHCU%>g5agRc1p;gJVKdX93z z6PLZv(+$egY^$d}uDN%?#d8!3r_qbPIeK)>9|PH5bQ$cT6SOR~X=%1^XJ6K4h;M^<=GC}qdo%7_{h7GX{yr2}wPu+-{tyT* zv`=!6d@)c;4aOhuVC8~(Z_HWQ`SAGjuUd0-#?3oAwEyV4va;N%o#vH4Q2$-uq;_9^ zy?-raHsRWWYZtCZaqY$R4z5GEn0*ZEbz~)fe-Qe5p_w^!?e1;Kjx3&GQatp7)SE6fJlzg!|jP&4@=$LU(yp7i+Dd=194G)Ffbq2NL<`M z$$gYe+sAtr?Kt7aJzXZcFS&fd`91IC9?Mh4ezm^t)lPRdS1y0)p*3Uv_0YD0K`(x> z_N0riKmLZ=cAxz1rgxv&@!r+xue85r-I|rTZJ!v_V`KV18?HEe_}Y!>+^3mVGoatP z5^s+w-vlT1@A>ktvocoPb>yK_KHmL^`)|kIP&OoG{eV$ddfu*_)_m5RpDaqsl@Laeyjpt&VhHE9R%W&O<>t0;X;`%GDL%5QW**uqc5H6l8HyhVdTpU4c z#B~j>+i*RGi|e>Pz{NADGw}fOaE-z>71u&swYWCmV(2j*n$#3d}2M6y`7**f9J zZacWDs{$!@=*5L^Cc1D;3l|Ps#D(u%s^LpmSnR@+r8)&b{P+qdi#;X@pFKRX_yQD< z9Fvg6;g3kMPeT^FI>O@6i7bw*`T_Cd_>?RTS%t;116dqMh9q`T7$UJ7tt&FI8AOkC;>GbTSsYnP>^UGJ zi(@2Var{CS2Q=c5eHXIWkr5ULNMvy&BrHyJkj2rmusEtEYi&40_9Mw+_fn#|8zlUy zx{r8p^)P8 zU1^cx*pe*PNnvs5PZsABM7?=J4SR9IV&{`m?9Q9hnZ&zuF)J2K(<0}8t!&1QUU)sh|H8;I@6@7< z|61Iv<=tFDhE06tqHt~DK`-saJ>CosCLGKaG}xGr)gDdSl0%qj?hc4pUyY^pc(vK> zL$Fzacf5#9?|SVTc#ti}f`SZcZsCkH0}t)&(Sk5DWq8=%!h~>k+7?gWHPq>H^4PN<$O=~lRUQTcEo(%B2fS)nb(n?k@1~HGco!Ar{UfC;PrzXX@*Za4;S@! z6Zy7~KLGdVAm0%@e30Hjn)0OGxG?8X_dOU)--m{A|F>{YOEPwU2HpX~*g+bDS43O1xoD2Ee zz`Ggp=5r*yP2{f?+zk06(6g-Ico=h%hn$R6|l>9uS1mLqyyZO+BQkhe(e^>LcP( z2ng{pp2{E}(|IZ!_|4b{n(^2x__W|2AauDO72E|xGwr@rkk1lncH?;~{hNSzow?Tw zf35J>2){x2wZg9v{vsfY`vP$<6Zbj7FBSfD;g<-%Q1}ytUm*O^!XGaDEFjYXQ299@ zDQ9@|1bYg06MPeir29U>8wGC=><2w`&l6<4NSomg6go$+0|KY}tti7h>zBVG#D@21 zgN#(U=lJq9k>S{q`!3t!!5jeZ_j1pr79YSr`3rErL+-gpvPteazt$J>?NEsJ0l(lq z9t`WuNI);#bNL2G&g8Q$&lCAify+R*L*d?vcyV5+9lix@!TnIk!&&{Su`m3+Oau%$X%BJqux&{Dl@7&MTVyF_!zjmU}tj$2`>3+&`qx{c$|Q((y>3 z@asLY`xm_~&vtfa#L=%Y^@Kfz&f|opZw0BaA3dX3Dh!y}43r2}e78ENrw?#L1j7Gb6t;_U_~u zQ3~sd>XFJpR_1A(YDcB*%u2=4&N0t?6d5^C(SBfJj3W<~7u&IgiesKEnD|26L?j~? zz9!-&x-KWS#@2aRFHRS;CNJu|uvXbo8#!itK|vmWPIlCyo^Z&Lnv)&1SMYK+@^srd zT)%eM%-Vh9GP%%Un)_0EBkg2mq2o1>E--q7 z*O0LXIxvQ}{lw;1Oq*~#f1Wx9LI>mVsbf4;S&3;Aj%U>~{5hgy$imROkKGvcv)CSU zv$+4EG#BbH6L?dT{nz^hOg=x;RQ!FVB0BI6O$p4)xUfk$F&7ah2b z`dRI{IoXwa1v=F85FKT)^CPBBxP8#k47CJZ{{8Zwx2=N#m zks8Z$akL3H9i9F$@Kcay_vjQ49$esL&uuMqFh3fggZ|z;#i@M6x97GVI#^$upd;3= zC3|k?i;m{FI#d}`8$g}TrrQ7=tfwoYby&(+e0y$}K*zg~K08`RC|gZiY_ZO!Yd8vR z7~-*H1pe87Q95GTb6YY1{Z~lO8EIDlDoRHzdv1RngmxHXkmoso!S4W`Eyj)fMd^rT z&#moP?cw`Ejh6ow9r5kCQ3uBjiRj=HW*Cun)ZQP5ya4~T$(9)CTjzK<*mE0OpzG~X z#VzZIWzX#t=->kJnF;8?q@q$2nU;gc>Ug|8JzhNOYs(u~*DVdymN&rGL}dHXagrWz zyJuJ)Ce)=^RGQ_qntL6=kBmnibZh}XOLS~LRgK%J!IG!(ZNfbY9cQFsP6ImldlNd? z7T_1s(I14afb0!uhaBJ`$PNbn<22M2IAJ&(+A4$vWd<({6;+$h`&hpN(1X{0)Nd#_ zY^NEKpKQYYWD_o;41_<8p?uIL+`3&whbJkUYek2z&4z`sq@u&?#{fO6OU^1WU>C0F z@XijPlLytDS@JVjimQRevv*-3?xH)3zuGegE=JMelSizgtuxnZSS-t|NvRn$b<4t{ z!yA;oGhxB(*@H!g3rA>))S4x8wEK#X`vY+AXK|-hwOz2)X1rtc=lxDtXiM64=%J#+ zNg=7CMaH1wm)71Ln7U!t1qZX*6&?Od@5!IGAIwmSKg~X-_^X_`Yd>>!Tg{jy6&{|J z3QR3J{8Zo68r;Dy8|>b}Qe1Y;+Ru{G&i%X5tt--MsIiR^|s=#b`?T9@}zo@$`gcG(EFdr z7jRvb{?#Q(HL1!j-LDt?@b#pF#b0ey^0f8ls#)SMT97iR`#x8nq;FiGw?9+{_WDw5vTKSKtc8Z2$hpJHUfimZj_(v5eycshDLTB@LDmb|XGON?@EuCh zs99aI)Sq6{e!<=a+N#_?9-i+1;p@*IF2w)O9%lZYi!!ply-V5MEB@+*@hV4=t`)ie zWZq_^)_hx1T=wP>Bdh4}^jva^4xi8y*cSHphJRo3ZOP<0Zyhl<{ppDD4yEQCNgY1t zNZU=Y%(v->uOIx(wQKD|W;nT_aH>P$WIKfOPKFNW74SQAi~4zjKoc0Ws%dmA`8BF^G`k^MofB zhk;SraCYb5JXqeb#oFP}&HUArW4d(2a0sCaD!Nd#5L75@Vg?e9j6JC6k`*tgp_VLf zbx_g8vxT6-aaN`;Vg?wUfzf6BKM|Cq-kyQc6{UrsT6k6nB%E%0P|>w5UQkl9;$&T% zprWg63qghB96vzYvpS2Wv?~3Lu)8Fu_NrR^Q)}Dgi^v1jEJQzlC#mR17k;rdh7LVe zt(~$4gLaj6brKT7+fz+3<>}UT&J3(ILBSZCKeAv{lp7pI<&PLWVk}~5Ywguhu9YyD z<_mK6KL|l-LUGV>RKy&rJx)62DalHYZkrR*6QdcA(l$A9ZP6`tl(yo;wM93^QQArp z*B0I0MroUpxVGpfHA>sm#I;4Yno-)OC9W;HVnk`1p18K?3S`w*$r4Koo)tlVqw1~< z9B3_rgXI;j!xKu%fKc)bg_36=l;ojMk_STRGz>z=XL$aIkz)qs4b8LEBB>8m{@?;s zC~KUK9-cpbbivqyLFjF0zAoY5j~X#{jJByXl%9xmhLRJ(52eOb6qTGvhfsP%lj$LpoCtm>HKIt8Q?ax$ zPzyteC4QPJ_2JNYBo54h5yc8ULEXewqND}t(N@AdDoz20w6^;g(?i9IWqkfsfu@1c zfep!H@fegh49&PruNfSCGrQyXUKr1JJx-Hlf|@Go2U69LJVpnJQB5_Br!T*X|UF_VU^S1Eh)MKCtF!lx~S$_iPGSxbKhh(O>Rq(q;_q8^He(_l0uLb8ZT^pDCjeA{S0#aF`j!sUlJkrH0WPP@K`k%hs#jDuf=s6 zt_N_f1&?{X7Z-o(8z>WiUz4C0;T38_`h^8BsXvw`^?#;~JRe(KeHM8UX7>HCkY7n1 ztRLau|G3@z=!FoiwR|5kw;o;6to2>jb*xNTC%g-DzA4v4`3+)03wP5yL1R=I8K{GY!4I^Sr_9xr>KiS@w z?JH;xLiYF@@oxXg_C7Nt()RxU1Lo-My~zI$&Cf@keIRE6=ysCbTJ(i+(u4U9G&|QZ ztgMI5k+4{xw{AQ$)M}(+eRe}a=ICcIbZd32R-5d8vZ);&Ht2!H|NYT~Wd*=b#%rQRmmmb%w!yL=>OaZ{~^+S9a^bWHDt zEw*Pw+IY`2ZM?UQHsjtdB18m`WwE^8g28nzVC|%>u6Nc}*SmzRuH%$@W&*Q-cG_WS z9d_Ea)%9-S48ZQ~2&?P4VXNz=mG!l2+OAuJ%`ZKzR@Zx3t*+-qTSyOEUGHtRx=z#T zFu~4f#W1aIF{~bz>u&~N8g)0NjzXCxce*jiLC5;)ox&z;iM3(FFX?$E7X2^Fu+>oggQWa|=)MaiH8K z_~-c>@7zN;Zq`sl8~#qc0QXfH1W5ai z_o>(6e>*5h&PwO@eOQJc0MKC%_9S;i*cnvrnh&$(&{CVNjY$xS2;4-av@D+lH#u0`y?^3tr> zCMgot9 z%xzvY30PtFehz|Z@2IRWd)vUrh4iJYFnf8+w0Bfin7!NW1KPX@q8%cdiqiwUv@*xMOjV}`c<%u@5SfswP7m;NF#$ z`V#JGY~MB5{TgoD@5Q~5&GzOakcf<-S{U~ipm-p_zu?XzAmEbi0&ldscW2W^roQ)P z=ivSr#m~sT0QaOT+(wrg!lmG7TX;8^#E5a{aK48oiJTmDDZGU1Ph?%hWE zF3P%7yTR=MZZmVb5ppxLa=rqd4|XO`1juOvWs2g706FbViYEf(bTKKI;?BtFVNyI1 zAZLh4!4P-H9Ok{!qD}-zWrNK9jv1Nm%MlU`=CB>^7B1ejJIa!ji4y_ZoDYKKGZQBQ zwAl=z2MS~+P6TLkBM26$Or8jk`aWbTDVx`g;BA+ib2^Z%b32|0kaM<4sS^QGJHw#? zthQgIuL8K;Dqh#(Hlu@kC>%WxlbzL=m2w;?XfQl{dhV>Oa7&aHYq*sdWg(32oH0E&H$=#Oa=+~$>@W(RQI<;>O+yrb!CnN zKcqQHNv**iEyi~pklu4$9=<*Eph%Bg=3fRf8+}sO~~5jm4g@lOgZw-2v1w zpiU*#XCkP%pj?-;6c~N)z&|x2ng1&EoJBp`U`xBV4}9u4L+LmVR7gj^W%R#|mC5K& zzd2|xT=So!-yQIK)U9w>Ntqoh=-U`Tfu2feJd%=w-n#22-PeR(cD*NoKgbd@;QzWR}Yt%1OAwu9bT~oQAmEA2YaX5L}jPM~?XlP{HMxF98)= z&cl!yj3TW9%X!v9Wf*QgXPdQkEPl|YjetlnE|w}J4;N)=`ISFZE46Y6Wz1OMO8S}i zn3?B$-!I;5jC|(fk7}OU)MxjHJx;m)=0#^NS>(I;ldLUw&%WZ8^Y0q@!p#?**SY$x zB^SK)%D$^Ec&Mq@uy+q%&?f)LO;1D5K3pH-I)aPCjT~IC3Z_Q#(}4?c)!D#d#Q*8yU)2}5&lLJpiC?q$e@x`f_^Emb`931gF%rYS2^W7HTv+3$>KpiG zc&gC>ZR)og^rb%(0`=p)`CQk*8u}2>90Bo3(=XFQos8GVxXk>q>Z77aeJmHI3@sK7 z!zGJl)Q;6iYx0Z-s-X&(<%!usoh(zx8d~#G{<*NHGcK-3>xQcbu3or$<2nl009<^g zgK;qqwC+x;@3b0!^+!8L&>}pow9}$IEws~${KsGY&_oOIv?Nc<^0f3$EAX^9PfPB! z3Qz0uv?Ncf^t2XFi|^0>YT_NVI8Q6}v=&e6^t297i|@2PPmA-+Q`1sBEz{G=Jgw8y zVm+e>gm zzQL7=j2wWAgN8C(v_f?zu8VQ8L(QYFp2GEKT%Y3l0arFEb$?t1xOlwSVq9n7T94~W zTsv_+gljLZ{kYg`OhqG*i)$<{S_WT)D}ZYqE_R&wOxcs-OAbGF+R0)MURdmWk;P64 zpDKQA#>iruCQ|IQk;TSbq}cT(i~VU~u@8vEt9~R{>>Y}K4xTB@0ll#L3X8*OVX?WU z6x(iLv1>;b$D|Sp`*mcoXC*9lo5->lk!J^&EcSLq7yIpu9{cc!Jo88Vvm;Iy_Ibf# z7hU|Y6Qu$JiZHvFWU=QdtR<2b4x#$N2|tdcD8-(oNU4b!usA^@ERHfM#bJ$v$o?r= z?5qlllQd*;-bU23pG+1z%_7Aa9kSRr7WM2ml4Y@N&W`9784sFQdh(|oCkses= zF$s$UE=qA6CM@;p1&duLVX@(&6kpGxp0he+aR?$(e*;NY2`-W1;EODd$wZ0+F|s%| z>j%V-12VEWz!NDBtH|P*OQbjuBa6c_QO~y}Su9WDksWM4^m}l@17`}vg=0brb5JQP z4oJ!3P_Q2mKX%*6;!KA~aZp1R$2lVPF-Wp1aYtPQutvb%OP1=x~0*?4CM z)l|UyYb`W8pU+xo_A`WK3m#xc=2P zlifY04VUZ3*eU-nm>XA?KmOa+yu&L3oJ>-m)aVN~4yzb}@4=1Bn*t5P%vEna-Y zfoSOHVffBe=UW*FF1Hzc=XzEgX5WN;b&bOoR0gVi`7oI>te6&~>zf)a- zZF!_UdBxJ7r(ypajeA(H#k#!JKt0}fAp`Yzldu_uPv|jyhHS_qaElFjyecd<L3v&#ju>ouNkNfWwwy274$x0#-<`JQgo>VJOtzvneimj^uE zQij1uI^1Cj{WVX{1D=eO;T{(b=XubR27~CSDUgEs^wgA@o}n{6sWUzKDaU(;mwLKP zQ@r6RBRr}1%^2nxUgJp}>={17lQZ4ZX@(~iLc=|&Yx%$P5PC>W@os|g_T-Z;ybDl7B~*~_VM(9 z@8Rn_JwWC2e|z))2*&c^`0hQf_KbjkctfBspAE0cw?S`v1gcdTDL+q3{^QxMye~R)XzQ zhIj@Khdij6CKR(*`IdnafN_jZt`f6`aM{ZaVOh5s#}aRl`a(sU=i9v9=e z7;@aJbOPk6!8-+Vq$x-GWVkb4)8SqN8ur~o@g!XWccy;@+-HKG1a~t(NKb$};@bJ>CbRc&s&gVda*Zf_W|(!0y#7Nr1246rSC1c!-hN0HwdMV z^t0lA8165Ce#+ub`f*$g=MD+yTgY)H?>0*~q<6xd@oSrH?8eyu#?5dy<4YPdf%oSi zA2&`kc3%W~J={t2IgwtAi_fzja=V}hd#}{_1=WxvO}Qq>EQLGmWmdx-XC)Ym;7*$E zq!+-Q&u16HSppi1gF?@X^kiIo9ut8_14je-Tsp&F9;dR9zFhFK;ZM=fOZpp_aAkU) zLb%^U43h<+^pQRU_Y)vD)i8E*LC2?XCyn1$(jUS-7xBtD*4S-;ehcoT=}!7JxU<~- z1^V9y^98t@<&g9}aA&!~-oD)rfX0|ERL)3m$HjDUoX7NRf;{VMKge$e?;^;X^_TQU zT+HuvkmD2{%l`)O&W4!<{sKTS=F|ozHC#@~0GZA>7S+M!Epk0EB~Qc0c#P?nF2v z!9&?Q9M>u()F#_K~8o#Z1_?HcL?xV#%!rj9`V-|AkCVFNVCxb4BL~&Dl@7X9?{U8ldF!gw6%xv8!_qh?qxU z&x)Xs(*zlyDTjM?u0kHLBk0~h>Zd#P)14kM;|iAg0zi^;8|u6S^rMs0(_V<_LBaWMc5G&Hb(DJpx4U%l#>k{11hHK=}KF|BCSU z3V)CA9~J(C!rvwQTZO+}_}2>mD&cPy{zl=i7yeq|v&v6bm5l>zfkxSg&S4FZd(L0|L*zMkwF`9H4CursjrZmLTeKl*a^J6` zdT%Nj?lb-s;{bW?HJ%O`p25kz!%Rmni(h zb8(V+@3-&=TJC=hU#84k7J1s8HTnFyVBWug_?Y*cl{N2Y>gTNEVBzOkbiQHn8}mQ_ zHS!eKm?sZJEzZuj?c8tSbcJZ&mZjYiwDo8Na}?eBSj9IyFnjXM;_}EdEh4tw#y+Sa zQqWLG&#$nU-_K5vtu3!5|wwYJQO4m|H%94vrFccCoqDR93gL(ReDk-g~4VLn3+Q9g6bwXK8iK{}2lHT4R z_Cc_5;e>gZaIQrBec0?+xqLG0moIlNi*cTn)M{3Gu`+No6r=BAYwP zm(@xpji@%tgU$8xR@Yb71OxSf=EmC9v+LEtlgOM(Ut^=ce%Xo5zGiH&;q+N~(AS#N zN&chzdsO(gqfW}pi(%`iz7ZyTnsm~NY0Q7FPwW-hPYc0gcHSfOZ*3B?l-*YC%u%Hz zQ6Jb*RTj2JIH9%PR9Ff7N?@m0!uzKpw|vDqz$Fd8z9WW>9G(~cjTk*{NC^@Mm@|+gD&ea+BMxO2mj3&e3_aXWK zPs5FfZi2eF!i2v>&S{|>{YU)PnsoH}DE4z&D98RObs!3kKfFEtP5f9UuI1&Wr6_od`&~=tPK<{*`%9SHi}^F{=r_U+KYx*S^e2GF^U;!`b)W~Sf2NLDXGWYR zowokyCrA9Ebi_I{f;vuw=R|bGIy2%n=m)quNs3gN>TBMb!J2lk$f+1TH>D> zK^+SaXd*h)mt)9AK9^?b=m-9>Ea3K^B`ubCIGh>5GwrCOA^{z-&Wv~nI;x@L`~-Bw zIx~Vxbr_FN;_8ThR>L&t*a{u(@Ju6qq5S9%2ac0&N^G2lgF=KJK)+MYATDeZRasaAr;^E(>vna=(z}cL*zl`EA{o$Cd#`?Sjg5 z?Kpho9G*822l&)48#-<{2-sB|l+d~BOPl?*RiW?t`I?-o`vXJ$4cr(WXbicluVeh$ zFM=h$AndYL>9gL$V!FYuOeg}O1q7jwRWKjLR7tm{xxUfAtln3ZS6NdLG-%32oegB> znFycIT({I0G^zs4OKW{bVE*H1>xqBNkI*h}^_2^xgDdD}6ZFrlWK8a6$ zIWApfIN!?ItfL9|-Ga-N^k@7Z!8?3CQ>}aQv7mTX2?RZp0VxOZ&+BUQ9idH93e+sc zt@6P68qYHPOW_O{rqj&TIt-E*#{cTau(^bi3v2_m{4h_UeoT7g5>Li8@6==ex#hQi{AVHD=iy>983(4Bl^j22 z4_T9O2`gSq%r#5bK|IO0lAeFeGNAut=?{NxHH$yfvsgvYa1RwEuU%4}I{S+44Db0H zhKutpd_S}7v_oF{)i=l_%5MnkI3Zw2>-W` zBR@&_gM>a_aIN4g;?DjM@Rq}gmawWh2npw;A4U*Xt${6c)?o1TLeEATr2U~E$9~iFJL~D{x1=n zE0`g;2j70^ex=}Y!4E}G2Z>+4@c)U92<4vAABfip{vfzQ za4F;pYtoE61(*S>+|p}wr{%eF=*oZLi+?C7c3M^ z6TGuG#;KR38~X)^2`&=6Krl@(qYu6hS7sQS`)eE|wCgBM&lh@kKTV$_I9V`9@IYVf zey+&hA^5If2XTK`!r3qW-Vl1SxHkyiCfF$MnS$d5`$+sI3pNkJ+LkXfjnhCA?--!* zXMz*NJxTC|f!h5t!Nr0D1gDF?48g}l?>fOxg@3*1dlr~?W?S_knt1=wn*LI7*kDap z32qa7T`+5ic3&x2D)_nR9VvP;hNAv@+8ML*HD(JwE&R&_=Lr4=dMJO5$UP(U#$jlO zE^B8D8KLpb;Ti{y)VN;gQG$OF`9i_3ppX8a5PVtmoF{k~dc0`tN=IotSLhpsE*JV4 zq0bUb8?EI(7Wxj6>nrp#aL>6u%kYlXSSIwPf*r?b{t1GY3O+4(jQHy>@=uLJx&1E7 z7%KP?+)3XgczuDU%LLmCz9G0=JI6!RrJY1WN?F2)+k>)N_a61)}Ftq5lNB0WZJvj@5XI z;8B7{#C<2|`+k{iyeRmc;D||@e~RF_z_owMHnNY?_!ps%6?(hS?m`S{I(0Cr!6&{Y zxKVJI;CjfdI;n$kNbnxPfhHDd_c=nB3H=0dTLe-3tV(1TPW1L$F&h z+TYJQ7_WdP{zLFp@ORDXXq+p!Sa6cyZo%VA@P59mqp?TMJyEcu@Q)GPC%6Reg~3k7u<06K7P?I6 zB*9yRf3D!w;P1Mxld)2;!wlr(=bem4KodU@EC7G)pw7ld!Nr0(GZCJ@vvHx|d_kVc zN&ee{Cm#?0w{$i>f;;i|g8hX5ATZ~f&c+78vQka|S};ZM6=1>fU5sx8N6pf7wcrlH zcLn>MpxqYy3Se+Yf#cNF?T!E*#}f_%-ouEzI*uM3t5t`t0bKFaUYU5)92 zeFa|xuI<;&_^qIKfu^qlE?C>mI8AW0;GYC{F2wufqi)7J!G3~<;2godz_o+A8yB9c z@if7)f?tUHgj2Npa=~i_pBGFL`JbPLaBt~uEL^1VHSkH_E%>Fl_g}2}T}5u6V1~H= zTIl12-Yd8Y{+8tD8XL%434=%yH=#{y~t>6>8R%pCU_^Sku6-*L* zS>z`!MLqp6*C>KNqE~3Y;Pb-2LGX0J<0_HPQ9X>!kR#R${fN*%2$ol2&1!QGW2oR} z!N(v^{+EL3K21L-?q>)+P4F6#yAt%FPkR{m33jj6^Z}vg3%y2g&oZnFn%&d*Snvk$ zNe>nJbD^IQyjJ)%g5&+@7v0>`_;roOR|IPW#|mbOTw9?p0Da_}o<^nM?ZAR1y|8#y z<9tE?a!vnL=pI662)$4IJq`ZG(Rs!df(Pm}-K}2Z^+J~k<_NxAtKBaaJYFzGaCZRV z-<)TBAvmT%(d3qR!yyjObkHeLXqcoFE~XZJQH3;G0K z2Y&cSZ^PTD@vWf7YQe68yG8CUp}&WGPS-w0ev`&01*-)YiTkevpB21D+{X(2chK*w z?qlRMYdlHtD#1SpmaM=y?CCy6H^F~^Px^JxS?PU^TES}syRFjvOIB(u6+A`we-`>; zp|gcPV>Rl*>b^$4;OB5Byz5^*@CYK|2IOXUV`)+1C1RQYy2blq`L}zNNB&vjTc-k z?lT2n7yJb7t4<$iTyUwzxq`g}uN3!31bv$@&Uj*=@fO^PR|x%p&?!QX6TCBw z#;2f(GlhOq=v_j05j^vkD1S|ZjCVm3|0?vYf+>PUf)&5Qc>fQBjLQXw2zmrB+>G*? zd9?9+!2{rvepIlR@D~U+UXF3(lB13Npozx`ohG>V3iMlkd$jQ{&`daKZjh28+% zn>56j`D=|ig6|3c7Qw(ZNCzfK#t0@0UIlsbpAmdX_>Dqu7kbrotS3W^h1YB3MtIVD zgnzT}#|Zt6xZf$*EZ9xtMhJaq3)+>Vh8nlupz#g3lU^$H4}w1zxfz08g#W0}leZ%M zR}3{?7raTZe4FN{3pNOUl+ZneKKn-0iywv>KL?+a;m;HL?>C`;v?$-$ zBltS_q`ws$BK%VXHwiAg8STdJ@(qvRmA}#SD50MhxGwHo)i35@a*j-Qs#y@J~WzXeYJYNRoDx5oa0F9EL_J<9lv z;8}wI0v-yCG8Wyb@zgss9wm5<;2VOSMeY}ZX?LL=d191tA86t+LRSmEE&O{yH?$dT z>=(RLu>5Yr*it;&$P^qc_&eZ&b4ME+1z!^!bPxJ7kB>GM3VsJZ=?g&TC66)o3*ISs z?7iqO6^$|43)Tq^ybt-YW{h#F;OF3z-Xr+5@UId28llJEkLUEx7^9=$7vPiL4|-p( zvBrT1G#)Q_pJ17|uNS(#;2PoY5}f%U^fit(+WubSXu)d1n*`q!%oF+c4Dk2 z!$RKxde{Bqj5@)|g3}(;{0zYrg0G1CtB>P(rWP1G1#g5q>13fB1)mlEXrZS+VZc~U zf$=?PVsD|Z1{Q2CFzN)K5uCOMdS5Ltx(R*_KIuzAKiz4(Q7`zJ;1hxapVaOP1 zbDG~-@GaqgEB+P>J|lSB^Jt&`HNjZ$g2s)4d4eB^dxPL4!F0iW2#5Zg1h)v5y@=;t zag4D+u&dw!=q3Li!KRl`zjhpBd?=W^SJUeS_ro9ECy4uF!oOGOd&J!kdXBhvc^T!R z!$jja!R3Mv05{H^Xk0G%zF^LuG`~o&2AFfzL}Rny9>FfJfdBqP5j zlrIwZwt{1Xf1k+RE_%-woGX|o_{Do#&mO^x1uF%|2xbWGKcMAHKhk)I&^3Z11P|@k z?!OZ}S8%#uJHdVLYPo9!s|3dhe)l)+zDMwE!S^J6CkdS=m@e@eB6vvh<3Yj81b-?1 zlLTM?7~$MrWLzP5ui!7J2mI+m-zW3|!FIxL5L_nw<$p&#&6sR#6Wl8}@iWc8MbIO- z;S}{;J+Ym;A36jpvL!w zep2XP2pWg9`xv3S2%aK%4BQJ|o^1R^aOCHjUM}cd)Of6;iUF$a$AoNMX>Y zwjp8POH*^uS6oq9gFQ&`{WJ%0N@0`j?B^D|s3pbPhEF0PG-6?~Z&@(V9Al%RvRbyP zDIaoGzMyO`OF*$r{-nl=WxnbD#->1UwM0L>Bd=d*HK&9X`PfQBo7!x7WwP_jkz~t` zFrI>F&(*LbHv;+fA?Pt>8uTgJ@zh}HIW|e@rxHi5qNyq9UyAeQ8)F5=m}@n$BqTPm zoSWKLkaHXE!MGdo6pw69^rZ+G0E`!l4~`#ewGfrk2AA`YNhQu>~_>aoO;vrisU|B_QnJ=MuDQR2&+R8|DCL85d6-^bWlq>uQNVZE9SJc)n#XeKJ<4N`0 zb{ck56*x{Yi_@@J%9WDJuc&Oo_KO*HXj+Q(iJYZqVOq=|?b-4qTN7raw>a&7RD3Od z%T_n|)Ps#|7@{*+;+h9(O45`uC1D}tUeI*oz#HB?Q1Lxl-2kf6G@Nu>~#2c+G#y2sRb1sPNaa^v_b&8EVX0skW>aHQM*AOLs`x z80=|}6mZ_u4#C;=vnu@c$|Fy|M0S_p^~0tZ$#B{p9~D$W+vgoya}}v#yi|iRiljv# zzr4~sOBsEKK)v&GisNBU(1(rW33#i*roLsU*a?WLwr6f)vNeIA|4a-NP%&4}@&|)~ zAdVlcZ<<ET`X2rIRNaXDur8xW|i_>4Q`l?jb=SO&JU@y6-ap6fPx10{CdUGn88)J1VZE@n8 z#$R7iU+I%(zU3fvRr0ZiiTV&eFx~OBV-3vDUfty8YLp&17`!!J;+QM31%iQju)d-; zbU1v=VKh!{uB}Dx&c$Bi1lp3?=GNv|z1qq{)HrvwH@f=#N8 zQbnfBUzb2~ngVF(RLm$}(#(e{QEa&^tiT&wSJ4Dz6Rl#an^%OJm*S{W8rOD?H4ANe zN+X`!kJB=%0uunMew^Pqfkw<#1nMI@=@CYVVx|DC$1;pAwHoJIsX?ef$ zqLZcEsfM53UtL<187FBtO3YWjSdNOVM8*F{DhZh;lTiN6NIH3MMf5D*LlFy4uVD_N z$v4;62r~jz)|`?u5;^>v*W|CQjn|{F2%smYrz+*S%U#xzMMcNmf(d3KK3Yubx_EJT@<^HJ%>ZyUbz6R7g=VvE^&B5Au?zTCW8I4mh zi`|Ifd^|5|ULb+qnvMX^vPaIA`s-tKxV4xnVJ-K{qJ-o0$3!-PewCJ7?(;R21_BM} zdBjV8VjVB7k}21vBwk}8vO(VpKTOK$5*X?V#fu8sHRUBiVROnWA#qMBhvoqzno1pE zb4r0tzT(Ue`qAr+7vUA`sF^c*iIp~67owG2Fda{uhE{dH9Q-HH?Q-yyV28`eXS}YK zgS`3XX;mjn>50=J!dXJLVmt?Zs}{RJp-zHR?#vXTRP8eO*sf04i4prqVKph~ zoI{bK0rlA?Az7Ga#QXo`idx!mRgH~P;_U&%&4GBKqL$zdjxsdYoX3hUjrAHWeSXzv z6!B{*7hcq3b`;~~qS}U<7&GQNCHWB^CWn(B@#=S$pBD7_V$85Rdzc%miz(tV;?tC+ zvO32`q-$5t^;P=(EARlr->>2{SQ1vX$}=S=?O@zl6`QXFU+i{2@m}dRNr_JE858I1 zsP+dNn^byKPfst{iCeN%?^}k~Ee!A^f~xk#pA$4C8>iG)h3A{&#-mv;Ie}GaHJN}l zJ?e9S`Z8-a3$g2?#S-)!3<{etU)Q{>261BRJqnhPPD8ZN)(QSyYYAS1yig0Uv>ilYz*Ll7s6`o{rLLu6!U}Dd+Q9a2Y z`4lXk6MhU9KdpKW+Fy(|%&7&iKYmL~U^+<7I#hT4nvd+il-1y!rX!&0P>e?sAr-sA zjcSzwZTMB<+&ZsVToP=3WsOXSr6MSW@k+CUUzF#0)>b3I#M_E=qRDPzf)g&&k&zAi zj#H>(dupLnJ9=zQv5rt+E!ZKaRu}D+0lpvg`#Hvwv5MqNEspgr`46aw-F$^(YKumK z9WT`WSPJ6x!eV=qyiT}F=A=o_1*#GouW#n$RldAQ2esAxB%4ZkY*7uL&N4};d3Z?z zg~icFetCEW3Iy;?0JhO%&ag`SVrarLk0u;`UHfn92}g)ULn+e>0cKZM$NZ8IH)btp zj60lYtztFd{hy4fMd6Q+sQGCAQ#l$}-+wTgmc++x#hgoIR4gs(?2(MoWs&US_d3Ul z7FjoSEu0p6ONB)sABQrl9SNFe4xb!{j7lRtV0Eh&PjvODEkMlvb5TmIW;$o6)kC#< zqa+YBzvCFvDN`-#V@_y04#T28;s4(o$BkMw%CS5-XIL!h1WrY3!K*5*tqe4QL(d{g zSjDYeYg{_7IW!p6b8H(E3gioQ;*T} z5itfREA^76;$T3%#bP!h5t)J)j_QEM_Lo4(N?1vpOin;Y>q}b#N-d?wx!ko*hrJ-Q zKC{C`>feh^f~B(M#97LxDg5u0Q~gojIc?f4zg%~NW6$%7oEF2>On76J`SNh8fZCUY z9Qi7p9P}@%X{yJ@kff)6QN__EloK);UiieY8q_;)?xMtx)W*YK7wZR%eS}ytF2e z*2KQvrr4=0Su@>Ij)a|f8Je;RpViSpjaN3gLR1F$2nOM(x!0B$+CO2BrD{Qc(UeIpdX+3eTIUv`*W(zQJyXNX?06H zSLaTf94|LR&UlN*{J?DyS{D1OwnYkCkenYxScak5^CKc3!=ft81Z5GjUD7F+L#i#g zOJ3r+I(=T;Tn#y+`@k&;k{M2M35kkKWS?w$bKJK~$T`0zv^paqBW)r@Ri`&&y^a2+ z94}hoU_+mUsVMO*nir_8z;3;`vA4@$jD`7otm3VWQFRz$nMRls7CtL*=XS=o`+K_Y8$Z& z0L^y1JdBj$YAAewR{osxCEADnPSYAM;V|r35|NWpL0LkwdvwanNZ&dyE!@QOa(YGl zN)~p{FUQJr9Ccl3uH%YGl2x*?HV|v!p+(HpXHRf!wMwg9*eQ3yAy}%aVkVv~^L!0{ zdxyv=q-d$g23QrH8Qf26?-x61bC3z zZAI5H*W)KqUNe!6f-w0+_3{x_tbSzBRt>EQnT<3Ig-I5N7bL`+5siqwrMhv&Z^+eD zda}c}h){E@*8H~4OGvt?va-3ZxmM3pIM(Y>Fri8u@|;lYu)sJW502BOA)nKH^=L_2 zF1sPQ$c5Aiy#CGd9@1fXD$x;fez%2kE82t8GjvRJQSr&B;AU?rvJoi5dF92;Fbx&2 z5fBym9PcXOIRSLJ%>o(GVwl2e#G9}*#=MEkE?a7Dy-7Se$`FAHqJ?;){>3&r5|Lec z!a+^v1#07EinBlFyYmu>%Ifs4j|juS;*O>fV`;L9NkZ8UwHaYa z$ClW!v6zmJXSMu*Mgx$6mGK${M^P*bGd0AhW-+`qs_PlYcq3nZ%1mlvt}`66HHaWab5`o3NK~8RshE z#U@%VIy$h1qUviz*-pf(xdhiKQ=|RINXu-l?u;0TM8w4=l3yOsKAhuimle^Li>l3= zrL3C#Ruopel;N3@ka<{~;Q?p@}Ky(Gfs!8Glp z{KRM+Z61OZD^+!hw_Vic!Ln$^p8pX~H`-Hz>r$*9Essp)t9HZUs1|y^cHxA3zG{e} zM$pcWIP9KZuEy?4wpEYUqQW{_RSU7Cs}MI^6ZdacyvdjaOs%L27-q zdcF0JNwM+*=Tz#gG1-` zJxVa{Hy8)S`Q@S}DIKPIXlBpj_SiSROaLiq0 zOr+v?pMBmeq98>GVWC7_Ab=^GST`spP8J_m#!tu#hxmp&0ji1_z z%J|=pBSQ^E(w?U+q|GU+b_GrkB_eD~9SOT6{=%JK0~<1vD{5Qn3`NUv)oNV>r)#iS z$+;nS^n@;O!qS!y>=_f0vkn2FS|#u)I@+TpKW&bQXQ^s>n4iiVUc4TrlVpB*kOnC+ zpVkbc=z;opbGeTG?cVL#=2V`Xlvpw$!a4D5C__XVVR$<3G+`XejmJ zG-Aijb(9~!vi4on*nlOGb2-PEpg*if(=i-Xl9-Q*YV;I+q3{#)1Y^-PoT+c9@mI!M zM-)=4OH6*WKl`(cr~;ARLy6O2+Wk6}g9rtdA`o&(xQBoqzN`Z1|nzT)CQf-=~Jt=7$nlu!loTkZ16Po0Na=Kr5(RRQi9O*?0Er?%CaJ(BEJ8bN0MDGw=J(JMX-6 z*_qiHG@HO(mE7RFWwZ^Ks5xB!OdU=P20YtvvK=aJe~KhW0K_tHm}flU?4 zGkh7qXia}#vNxy>aG;>MBL!DUdmEP%TWup@_U+7S!kNo13-O>;9lH^eS~5DL^HQQC zPMaRJzo#m#kut#wZFZ}Bm1xUb2Q~(&JO^#qF`Qfq47odJU0urdrdZY5-ZeNd%&tN1 zM3fJ@eZ)4r6rK~WP3iV9PsMw7+ZKnMV)nvwj{_~m2Gs*ytvLE2SbMp6YDB-E-|zVy z0pLet>bx4;g<@6|wTx_#8MGJm2wAC8FRImPO2HHV1w~Yi-=(|F%va%E>uWR?HH5{$M<2wcDRB#4QSI?l4=`t zelg=!tp%{MRdC)|;j21LPjl5HHDOehi$4OZ^&(~-)nK18zZEb3f|~VY7~AlRcX$K$ zptO}yXQ#lYjCiofrupCDV5Z#3A;_R|1@W*a2a=~bSzQ*doC)23X~Hl^HwM44v1TuF z-_FZnhF%E@OY5$ymnYlNAP>vliDo5NyghZ|-J8IvIWX(sZ`Kz(k+MrmS8#vJ?ygJC zg)9N9oZKALx?Ajlr531qaB&)p%V^!q%n{|#+`Mwj#nNVTRtSyG%W^E;TbO3%jbJ3M z8SAH-I=ecYi%wmsb|Il+Nu|@N9#vnfkJ`MOo*c3cRl(!!3!7-*?Ob;-hKntYH%L;B zAS%`%4nrO$4&sOD8n}~`_Eeu&HoGWo*_;gtUv}_;J63>fN_7vafuVr4m0p+}ptgw5 z!D%T;pN+~riEXrD2Nb;c*fih@4zGrWRu0gHskCx1t+JC12_J7$YJIZ1u6;wYHkoF( z7GrY(S>T6_k2S#pJ0B){H>5kg%aA{<>i-A5x(q`a@T%fVX_q&!p7iD5=r&q!8bKqQ zzN~Btczd!a1|AbyUd7i>3Y!&spoF(5Yw34rs|up9t(f*Ut3YCFGQz1=FSP{mv8l!f zExdYaamt4(XPBH1E_+^5hN8AAgkbEqCG(0Dj_y;ZG;-KcjzkHnGHfyg&|*$JwHb%P z>b30Nc^#IQtvvk)7zI=>VFiM!{!@t?d9@Q#NM{B(3yiDJ5t5@V8~$VLJSw@jC!8}& zobnA*@&fGGR#P~Ygk3Rsw5h$&gfD;RC0jSDMK<-l7_#AlVMmGc64#%^svSH~!i!YX z+S|J|bPex^%|+gUz1u*-Fx}ih2F)WFc=Tn&oo0{F! z0VU5Dy}TnRnJ&xs=hCe^4B6FKZ%dltP2NlMzH-?NmN;f!^0;!ZgEu@!;RCznio#2v zKq|`&ys^T|X1&-Z+r3!@WI;IE@B<}*B9vQg+wiYM;RLf~?63r$3bis}IC3^?{GJf& zhzIaN$Vm3y!4jweEVJnvZjE#>=CO)?eRkFW#+jo zZ24jZdY3jU11vnRDICu-S<6YUFz>5wL@Q1mV0L_#r0~8NY$dq_UefyTU)k$pHU9V` z;7$V`8Gl7Fk{C9pMx-9>&FaP7GcU2>m)5PL=jdf_9=MhUZDFA^HHT*SjLIPiqy1bW zKZSa#s19X1jJ3P)EY*mAXtg--hgXRMJ&Zb>1S3)fG%3_!jKzg&DJ07!v`*Y4!>h$j z5k@mPG$T^ZO01t9<^{}wGO`0OT%?<@0Y|tKFPwz!UUj#tWpYv^Lz=&X%4hTh3id*C z#qY){4#Tm&6FaDnSUvCHj%YYNkqR2QXJ zQb$1HGKgTx9-Ahh68rG9mv)_!+De`oU`uZJiX_exXRYtk8t`>qaK`xKk6^aMH_mcS zaI#Aru+MOS1U$Ig8kqg}*aXfv_{&cT222rxryKlP^p13zG(aIRf2QrnpA%~`lD)FG}S*GmL%lRts^d5PC5LC$sPx8XjPkS z*y3T<=(w@WuXU>V)rWV9@h0&9L?;KoJ-dd|T*8x1_Bpf5t0cJD*i>l?3N~A=a8L4J z4W~N?igWK^Z##4nP#ZywZ!WeuBpLj@tCK1__sZ=s!pD|9Cnrowve=Foyt2q4 zp73@Lc$mB8tweV}_jSyRrw_jMlI;!;Zv?7dUOd>3Ub*|d&`S_+bW09b@Ce1IO`%&n z0y%Q=or2iH!%I@z+P^UwQX3w)mIU^&5yT$wy6cr6wchwyDO};K7+Wx{}@UD8y zg;d_5Mhobh?nI5w6(rf7qkB)UP`o^LVw>$ zeYf9nLOJnfsr^r`4W^ZAq+OY$w}vr%G~Y+NNZ>xwEUE zO}GEnPHuU-c$D#~R9a18>-_MtY!{)esk1^P;?R9B%FuSR&Wnz@3Q0iQ$cIiQx(kF9vr=9f26$ z=$06+;P7H75yCbrUdWaRj==B&RJUVUXqXn>jc7$|1%!{ZX>fg-yQzeW*%RA}-WeKR zhFa|G#~nGsq}>D8ir*dL;?L1e5B#houJG`ZV3R9!%RQP0SM8jO7f{T-kg*wiJ-3wM zw5;DOMvg4yIrYQvVwwBCm`9VVS1NO^Ug|EdGM+20t%h*~hSzJ(?uK3w+mWoiq$jpi z#PkfNd9mtB1a}W&HKJS5)w=>J3mkUKL6aS@&CU0{D|9~^?4#fBv)ii&i8{D2Yy_&w zHDz)(ckcXlr`p^PT1hrSLM5M*#w(967~Lw)$n{gr~oc3emyb}GxE=#Z@x zTf5b~%*u{xh2oPXU6=vL3RNC^O8^ifV=cB!0vdkTIzuLcaWJDv*Z&##da-G@iF1tF1U8FvVep|fEq&rDH zOSQKw-d1PHI|A!Vb#H8~O$Bb<)#$+C{7$+FYXGxVzFU7z{49Eif}j@rvh$8JQcg|h;}M+#lF_FKiq5p}MXaxjM}jUK$q6MeK0|CvWGfy%=a0BWv5EDhoR4_iJit8qw#KG zZK%22oz~|vS{tPmhm*idBUvh&p(@YtIn|_&Z?SXoTJYn>8g{cAPl7Ou3~~r_HR-MV z9K!T)UnqD}1gx&gCD2O^!;0j#Pp@2c$Kqq_HA}12NRat?uzh*H7gJActDrkW!y6B} zM|iQv0-B(b?n08c(4ZpcrckelCc*H9!bNN=8QGBVDQw!@)!!YIIvWDs8T=QDIq-ts z5FCg>{dqg0irA?eR}Evw4$)b$qlfKT+h}ZBH+{oveDPp6HlgAn(D>9ZxH|Vl4e{pY zLl=}QJ|sc;<3kcKIO0vwn%!PMFo(UVL*%tLp;xZEY|5K3QK=VFW?{e7MI_G?vAkIw`)fS$M^%21OJVNfCRqX{ZS zzBH1&P04zE5wXRm3+F9l*b?Ovw^uH^>Q*1h5M|1b(wSUmQ{ri2o=LY`m>VIyfi3OE zH=GIPpz2k`5rGF<55B=lGP~Jx3!u84{uY@_tY>Kr4 zMxLZqO3Yb~lm*4@!nYKwMbP2lC27HFe@T4B>=41FTqjO>Vw2F+1dN>f(s0R!cfR3KVZNY&dR^O!*MG8kt%ZN_Q^gg238OR8H^{i)tm zSCEmov9KZtZ<@iMDCE$z4ff+B<}|-9_RjJg3d~j$+wT;!9DMbKJkASnf41Yw?OeJf zj%<(*!ZEqklXOg0kA&Ks@D5xJoEv+nuU_0_wrsZrd1ky-lVlM?uNPjP8ffim3$hJ6 zh72gI?DfuICu)1w01l_vif^9+j*@qhsFl+rA%F!D-N)dZ%+nMk=`*$NKvjbvD|-Wr zxP!oz)bNCk1cxWn$qrA^*VQI@=2hd^6Js+x@%A)2&*@;PYH%{kz+g`@@Vh8a)G+mq zHzDgQr#8IO=}Bu#usb|_%GLOw$37s#4i>Tr@~5+kwjclS61H?DH+vUbhLk5dy1KiU zr`ml!zBF-$Zxs}tt;-$|<9h77xS>Ba*lX^+s1_N9N5^MuU3>`b|83h-1_Dl2m`K z*(e1hR8`6DZFIb}tq}ERKElwm(qX~tHjnRas9s#xkZ4@BvUz3A%7(<$#L~vqDlV1L zzE~@oR<6Go=f7x#;TYJ$EmBhe_cY$})TXZFdHp!}-lt=4L%=}8V0%}pu|Ea1bE~o% z>`1|a=B-T!WjoHe+~9lSnFAFY;iT|M{Dua6wAF&|8hnm0chKN7uWHJM{V+m_)00g$ z8Y@g+`F0B|^;C`-L9Ky5*+^@9CnuH;wp#YBlLBlN?Gaw;LKNG;=EN>SM{5_p z<;U9nRG2CR-KAvn*1ix0S)I43veniU4PT7A>|c?FK<9U^VGDW>tG^LRqbP=N{O$Tw zB&%073@>}CqXQL>|Chvet~fkwQ&(zGs{5{<5E-CJRD#3Bf`JSy4R3Dk-{Akkm~9yZ zJLnr>dlCk?!aJNC{I2h9)m)13?bKX~Fl5c8aM=%*EcWXC*b;7g(NeE7R-K28$z5># zzuIGxTFx8^^0sXU3YMG(_I+H)=^!g|;s(}iPSl_}$ScGDBBe?<7>)IB++yR8Mnfvc?=~Ryi3a8`S%vt)2>uDnz^M zl#Ts`6)3ezoS-*jCs}GRjknXqOIKBgNrH(z!YDAa-iiglP@8+q+pEkw#QR?;^BYww zf%h|f+|A7%=2TRo3CZ=WO?I>ncB3ok5w>KoyL%OPO$rY6Wihv6el8_EvjqAL{`}P~ zR%BV3QCl=rL;tz$Tf!RK17!=_c_rt6igeXd?^r#@ZK+diV}%2B9A_f=P4@Ys54%=1 zn9`g94W4%L=g?*)LcMC^T?#wFo1a2T3G=dgUw%U49x%z``^Dm_T>=R34gGKnXNRW_ zSVS8{Jn{o!gSh=$>97$8j&Tkvz}r-XieJ$>qYpM0kL*sI2{MIPLh~&c^!F?p|gJbX)!;R}0+-r)}qvzlI zt}(rf#+q=9xWUulJ=yd&5-cBSaR4L|&2?*IUYYVvBxmn8pboH;kezn)M|71_n{j^d~z8-26(%o2Z(0 z(s3rgX7HnUxJpf6{tLgJWV*8#Ep|?NCkemn3QYVM_}Q;Ky93W!z9dEjI|k@>ruWt| zli-lh-EpER--VFx1o%aBe+6j5u1}tNRuRDKlo?xO* zV!e6 z6PCSr<*(w$40fk?k?<2SjX3z(uiW&uVWu@(K-}qFC;YaH;yb~Qrt<;Fcf6gkJR?6k z>>1+bcYp<(m+(7yikaT-Pr3}n#M1UhdrqsNGFSOMfbzxbotodNrd$8#rdO3;E75NG zVv?v`OeC&p(@gnZf_&RdFUP+( z_ruZ_Jcay_I>(b=KVJaM`p+TX$qAERquAe>8%?+E-^H)B52MrxmR;6^Zuth*nUsgv zh~auqw+U_kp8ROl#BuY(bh5f`HG#1)ThztJ@Z_iD!-t}7eq*{!GF`2d4Qe(P^yJ6F z>y_Ra!fyZ#1+Tdw`Jqu)EZy>bw%6pN<-6@t({1~A$=AknA==W3!QRbXz3quaL#++h z*eCqfiG2IPFCPf)Uoea_O+**JWM`s-FUw}2yMCS~`Y)3Ft=MkzGqDW=T_DLZO)upQ zFX8lYr?=ugCf<{yO*rrUCj8zPt@_0w-zf+-D+p5n2C|CZ3w+iP&)trG7ZBJLYsAfK zncR$m#f9zqNU!N2n1-A2O;`Haoa*0bRJUN8%3k!Q&=*xKeejm^)NOqB*u6frB?#}_ zL5z!EiZgFT{e}-eVkn-98D+xlC7+rRcEuY5t}7jiUwv)8A0JmLedDWHvLcyQnn4`A zC|3-(E54>AmP&S|xBA6LdCa+9(DL$0AMw<{fr%A}hx6C_I=kA;-kXnHJUDG>LtRr) zd=6c#j%S{)KCil^dUbVkQ~b)8CdD(`_Qi*ye?|Kd&(!U27^-?-86J0R+t-l!`$38s z&+MtIJRHCJ$?;eHn9dzh(^mn(cu>Lm%!BbA3o9oWMnmQ;<z&Q*dU( z5X*y6efW`v%whb~KR#4NzsiT=nO~dSh8DJ@bHlYiUSx{AAU5Rc@R?ZVQ3tQ z;zMVTiDwGNfK_~G;WSbWij=?8X zx?lVaBW-Go4_zLEQbr^3@uA7YJp3@+uN(n)=0WxRboSZgkume+%DqJwtUauBOkSqs z=6`id6PSD-gveqttv>u1*qIv7>_OO<71L*I{`Hv$Y$|%~g6fM*$;sQ~*Au|6b>#dO z_8@B@%25GqkF>FUh9YItYs&Nns?)6EB#BJQ(88lk_RjzVdbFk9GKBfBrjG{V%dla{ z@dF?>WL_~1rXiy=V2e(dqej^3H)-`lRTnby%;Va`_FCq9SPa(|=}=XN!hWV9^DJyy z@}(j32bBfzJp`jH${OY214{8$to50<>`_79xA3-U#rT?8U{ns%*oPJ#ZKmn~uxw!{ z-`QNA{|__$tOJmK^2@wwrp9u=CT?3&vikd7dNL3{sR&;)69)H<%8i7fT zCshxsW2aR8*Z%jVdK{W@O7+hjep0b4X3N0?Ry}ySt_O#zc7dH$x~|=W@?|o=_6Zj2 zY__RvF{{Y?tg2_>V%7sgRW)Rit4tG1!4(}8g}Ul(BI@yva;`i+)9 zRCNTx<2xqa$NDy7ul}^8X60&&B*U_)s-6Q@x<*~6s$jF>&<2;4eC>Gxl|iFW(4X75~40d(WmLUm1VV{#VAI|1f-hi2Fw` z7QyFX_}quGR%&l*`q8De>&)KN`~YG1RPV?t++C4dbzD62rHe(85Kg z#2LoDW8!H_%DVkhV6ArW!R1$@EgIYx-!XY545xm49ZH4OC%RvDq;D45iEP9G+$O@)b-~B3NsoV|n_|WQoPz_atR+oB4@*mTD>-Os;44pl;K2tCj z=40!Bc{H-@tk!4#3TuE=%T1}CE^^qI*(t0a8ap16eXJNZ#%?^aN|kx$?D(s1rO(j9 z2_}QJK!UFR0br{aU?uTSj7`R^q?v}A>aiHzW zzgIp4{h}x?&m2;#P zsu*R>k2|x_Cyzw+@u7lI*^1dR6{{}MyqtaM9AYIbgrf<@BhOUI%i;eMkNnAurSk8v z6{rsHG|KMi_y6j``r@>Kwec8cRb&0e06u|EwyR}Bw$<~p@EpV0oaQpu+^NwOa}h~R zYg=d1z>@Ro0a@@Ob8&`H7#K#t(!;d&#u`c|;sS$SCVO+UTg1-qJQiqDhp)mmSvvd| zPzc^W2{5M&&g)8d)-@+K5R%cpob&swxpB2obOy<;5fvt9(?i#bz!A0SM*?g1rBJzIh~|5u+nn? zaoN|YLI+AFiU;JL*7O1ciXS#Z; zg%mO{*O3QeBuiQc(h|11uRGP+u5G~lt^oM@i=RHz^x+daqhaz;OMg5LZX_i8@ZeDdtzcQ1+vX{X zId*NYJ40JjQ$fkLV-c^C&+NBK%EHY3l4^YP>`Zs7FGi&WSPIPeV8lz=F?36{Z>9Hk* z#*EbiSe`MXwQ@#na$sXR)i*=OJG}?Sn(UuGdxkZJKEph_YX%O~v(QAU@*d;t)x8^g zQ=5BZ_&z)NPGhzDFfNu(#bB7R)|j%Mm@=Q(W_(u^OLrz?Vn#8n?}^EmK(Y1s_%UWy z7VYJ+8njG6?HY)2Vm8%|;0~BmY-?&zF}8C-fa0naZpPABZeMN_!(A#p zIqOuD%ByVZk_&>m>ZJ{me~d_otO{Dj>+Oj!nlE}!BH^9Dh1^V0&Nc$ZK|BJsA9o9W064Z-ZXPI{o!qNNzme~*JAN{Pt8(xRu;CmZ<{rf z_%;tvE;2pId**B-s1^`@tk;$gruo@IZ5KLisa|xxrWiKw>i+&#<->ZY$?Ccg$6hnR znXTCrz1g4jsxAWsBO|{m2RddkU|wA>2BFvcX!Yy<#|yF!Nc-O+_-_BN`uOYq#$Q}~ z_6YtPE`QzcC~&Qxds6V-{{Qsx*Zr8WE)RfoJF8}#H{%gelL>K;heDJSE0i=y; zJ5`b4uhv!XXn#Mb^GEj&-TK!3K(}6X|Ie-08%16>{_W!bPFMO4h`*bU?#H?1(fv`k z|DT0VgNwiJ&${uWn2_S-mQ(j<-T1nH>y}gZo89;^@GfEma+OJZDUpwBQ0(ESO87NC z;fo~vW}ol|3BS!Je6@t%?GwIH!XNMn-zwqH`-Jb5@H|<6r_;y&1P8J+Qm@`5@F9Uu z3mhd29>)uuA+S#1Hi6d*ybAVD{l#(fY8Ja6sr{SO=6?*Jnyb5F4Gk^JW1Gw+*0H(e zv(TZPhGCrE4b$gVz)?P{^7Q{?Cx1lm3w*n6H>@sgs<$nfz^)Lf-VL#?UiJ3rKhC6U zYTeV)on!+?{~9%1E! zHKjEeyF7|!3|ot8U}Q$Q&5G+@EB0Ry3U5y z^~r7{(bta!&}pn5cj7dPcMm?5>f&(&$c1*~y*hH!aw{US5KZCz{^9+~f{jeE%*{KD zO4NI=nJ*yPB;D^TUc)F>zGnMA$XuIa;J-M|g3&N}sbh~1Rz;)IHpS;Gf*MPs+c|V* z;QiGc=3Jpxm+Ap7`>>hzv#HA*F!LJF;5ZN$y$v|8Vym}cO`TmG>1Fj& zFL=Z=GlwDciTz@*D_L%LhKo;n!?Ni2HG|yyHN)EXEfq)HC4gS=xXf5yh9VF3*eRN zFUMAdD#V7|RC~^V8*e_^`+@e2Gn%$ysIF&5L)ZF#ykyN#C60qq12eL+m#g|rE%^K| zh-m26Y8R68@lmB9jBT}!?x7-zo5E++|3GRlb;K1%>~E*Tf$m$*<@v- zU)$fhnWF^G725w>vfCGr+r*!Kf$kGXCj@=JuJl^fqcqOU36#DV+PbxR5SZ;=cF>nS zWYuYA{gE`*tId6^?yPd6*Oy4J51dGJbhmE6UZM$3Bld4X_b8EAGT7VJi0^Os?Tk4k z$FHIjCZ)~GB2gWHTuIS8@$H(g1;g2MM@S@>04-y;WorAV1*^lEA0O8u<vpkD_w!*L!(sSnZaA_L zN@jb-aEoLMf-JLV=jzERiw%E-LfEPb^-klK#2rp?<_{;1n`l^>2JrS4yz&4=dRQDI zw}z0FDehGXYuPq&$%;F`lZ9Hl0|O7cfPvgcO5+hR>Q+>1dKrYOR&8z%0>`=(G|XzA zR;oddiqCqjb+6@su6>tzV??h8lmvQ@f!Q`!egW0F(&A z_%lBYNfE?d1t=$Ri$0Lj1@cVjIfuL!osl{JnLQ*mPD{WqMhnX zX*8C4KUtY5M_(zsh{o9uu_DwW%*^qbmE$uzJGhb)R+SAKFyCBrQ0CQ(S zwzgk9hSIv{iz*4a)I!OL zOQYOmp)@;K!0|~5`jUl`!{u)hRLTX{xI7Z2QSvR6oQUcqXq|DlpHP^8AdGZcxms(UgjJHeBwH8W_ct4P!pIa!a_2c^r%!Edai?S&; zpET987FF|9!JcVRHNQh17iYcN<#A)yOGop$te0POzqFz|S3kaFdF7=3&l2>Sg_4tc z9p^zS?i?-}<*x)j=|)UTC!5P_+JrqKI}297X?4 zTW%;S6pu*)i;PWuW{CEgY>_ae{e~j#F=NpYTNbQhCohtMd0t*d@>M5=19~Zm^JAT^@McUnH`9rht z*X~tzf3SMDxHZ%{l$FeU(&>AT;Cqx7jnZqO194B7c5D}ko^ zjYZXbnqXI1RLz>fm$F`27Uq*?wA*5Iu6}&T^2#w{P4!I+WtD!+QZ?zv$1JQIMq08T zSQ4(*kGt?C5U+@Fq4|*g*HquNsG9ZTXp8D1{dl{0rJt(xkG7FDx;oMBO2s2}%;7ZR4!E-#RW^8<&|UQb0p|pSrq;F zRm&?UE=_fgg_2_oks~6fl$1sDOG*omEBWo^W1qi#%n^|z@fwv^j-VqWi$=GX<(DiN z^Num6jjb;O0`@JMZRD5Km(ec|WuqW!5K&$lp0;3=oRP!{0DQmqlK>d~ANnm@(w}`^ynB=6Hn61NX7pv1IGuHM4fw|+ zgYki`PAtWlXeO3&Qu3qtxysQdu_-;4uAZtAb<7DMeBWgy+b=7*;xg#}*dl{elR$Oc z2@uW}biB9~-ejRujuWUst=kjJK}H^@jYU4hkjhvTacEgiDvLaK`BeJl_N-V=TW45vfE!LT1lpPty zSu`8%JKaSbwXCb$B9BtTGhB$u3};gThEb6lCLxt(YRF)wX?un-%QOkYn4Pr^)0?sQLI!-yC z!y{SdO;FC4;bd%i6O}U`ok>cPca(A-0Vm_kJ6buX!O2+jCedk({}U2YlwVa^@){mE z(vv?20eQx#Z{YbK@XMQC{2e@&M(`IIwGaQt;4Y{sX3C3yiNEph!r!z}rCDXv!-Io4 zqmF4P8n+IPemair9LGFV&&PF+`#=4Bd}ql$cxHM>9m&W`p4HAW<$Mv&ry0uh=9O@; zNjaI`yprRzlj()v8{u9Jio!)j?*_<=6mN#l_&z)r6)(vOxfLEaA*8qgNgMSUJZ&e+ zxS}C|QANeKlj?qYjUFf+b1z)rZ;XFL`PdTs6g4?fVs69pJBe_@krXGw=b~{Zl&z$r>|*@qm0gYhe505nI^(~B=hAVN zmK@pG=5|gX^KX&)Y$m$+ZakL$41ST~y?o5aUu4vy_@9ouT!=9KWaC?O58`B zP;?$Zv>;E9$>>p)NXrDYmE2Y+Z>w9f_Y~*P(~?~PawXYi#rcc0WM{)OD_H_Ar)29W z*?TR?^7J5#9%+fRdu{foFCVbbKp!xo+-|6)RBL|5&6EH$agaGp={)O z@I()XL|RG;4P#*`ux^OZL~VI;V{!f(9r-qJUJlH>n~L+->Bu?il}-71a9Jsz$Q|c? zJ&|l#2vq&No3h+u$x^I}r5--f10s=@Pa~SgDbN?(0)44Czf%kJ0SH8S^KLE9@6!VP z-XYNOU}OoTBsfF~ZnGrF(}N{?_#@JCJVrUVA5GrZ-I0H@IDd?OFmED5>;<9hze{|W8@js^Q1^lBbgCOI|PQiak zSq=Wjm$l-5V%dA}e?r+!_#a*NRs3(iV*B>uvLBmIyNb(RHlGd@mE}W7gzhdbn_@m4 zC^km1nyQ7fcuFyPYsRD#@mI7O9)*!nm3V$P9*=yrXgxqd(J@^BY1|*hy#S%d<`vEZ zIPPosqyKjR>3=-;Gp7d~lP|P85;li%Oj2B$@EE?N+BqSLVvb%Mn>U){9LMHG7~!#b z1sMgRW>_J^j=NZx4Fal&wFe!b8T$voVZd^&dsaRE4v$7LyJ4gLgh%c&U$(RO zRXm;)iA{L}PGzYl8&kON3@g;UlZ&Q|LO;%Y9y{eoJkLU6^G+_Eay*_FsOL#WvFcez zir)qI)X3=wDV@T13%1#4M5feP&qc;5x|{d{iV82Z7zoarABmj$4LHZMKAGRi4xe$F z#`&{_`(;G&UE;qZGA*)NDPvlsSwZ78ji#rxA}vn|>@f4ZjA^HhSv%+}}eAWjtvQhFaFS7-^| zd#x#f#(BuX?F36D!TUTU&}h2z5NY|SmLQ96oTB>_=cDpAb?|peFa!x+)DjFGG9}PB z2@Cg+T7v66B+zKO2N7vG2I^Hh$f6sk=#GVM*CQ<-W?Oy>Bw&(NF5I#P1`#=PuSCpd zgx6X8a5(Sd>@VQWTXzU_8y#smf$j2bV6+N^iqUOPl96$WZomI3oFXl^6ZcNw{#N7O zIU6sp=#^?5J;WVp`90Eci1^=+oXEPxUV|3w2Ft8*7r=EUUxL3+%rlBn)w8#ncP~3; zXOzQP#nAg1YMid4(4)?gmgUHederiHkHFS{2J~!!{0m%GL`I&b(F47amK~t|0BL^} zq5Ve+CZKxG(l3L{qMvvJT#G5nuc*$655c+Ga-MZDAD?8%Sy%D#DKa!p*Kz65+(^s6 z5GOz5%=-)EJrWgWHoiDq+4w#T*DmnO`^%LmmS^fQXg$z;#y*6r(Sujb?9J10=&|5P zOAqX14&!<~!U7#Bc+nBxNvO-L_|D>+dET4EJ2Q#^UV6m%jE(S6as9)LYr2l($ATGY z`8DE7GOqlH+0V1*xueybu8H)RZlvXC*veN)JRu^IUJu4u&FqEClGK>43H88fq-6~l zJV*vpA`!mcM+)9_FsMLXWHC7N61aHjk=$~&iCvaOU^j2;YQZhZdBFn&|!rp zvIcEi&I9q;CNV5)G2*gfwv$$FL5LoaF=l9bJysiO`5gGXk9;PWt#g17nn({$MOvN$ z@n=AshqwPo!Po3U6tJz!CVwXS;KqKS7LUTitcUSrOyQ`@vDDzn@aH(os59Vt24NFo zvk6Kk96#arfTyBpPnZm}2`_2a3Fto=GuHtBU+^kki-*z(E3-*#ri**vo_!MB)AHt* zSlzGrU=b;?dSGxCMM|tr7@T7xC00KS&eBK;yJGvnEDz2}krFDI!)J8HB1Z9}jAs_& ziRI0oV0Ft7XiTs=W^ffvXaUYqASPkyg!MKTx_InjO=9z2d|+$; zJF|@MbTWq1&KOQRV>s=M;RNGR9OC&h_)e@cI6%ltFPh^pATRwwVY;&aPlJ?~Uj6e| zaqB*$8Jhi1OD|0?;xRW4HVob4%VL^Oqor#zL10Xv?w`5ww@A2Nz@nGI=-!kYU-z!~ zmd#7AIMJOZ(>MFCJ5gU1e7z(@cbu}A=2N_>I!+ayf_oWmX<-cdMGR9|w7mwm$*1b5 z9{Qr9Gtkvg+mWD&RpG=zTVtTAF<@f`cNgGJ0zBo2I~|;e`y|{`a1(bb;56K)<30=b zblerVD{;@lJqPzYa9885#k~}F9QUWso3g&+TkGEc{XI|jc0cu@FMs*l&wi!o)NB4# z{n+S5D;M6_yriyt!Ord@PP*gvuQq;r!}O-ZaMddKRoKMKe>P92fy>yj)5N^`Sk}re%*@ZHaUXVTyPZ~qb7?(e(#OK;BKd&A6Qp1k6TpQN@u zz4`gd>tB1JeQsfX&rJpBaZJEnfqN0|M%?Rg_u;+@_eXGl9yf=OIbh7U)4&6tcKbW8W)c^P^LKf%qb z6YT_X=YodUX)t!WpB7ra1JOMNuNu7AWug0W!T%wiS)OR;ow#{%u$ee|`61?QmHW4d zpBINI8UAymj~8Eg=>Dk0!B;cNdk^qm!}C_qb7yE?d@Cd_w{z!ppUCq)k>?zVi=A#> z9FHYF-@JHz9R74yv#{gh00-R~pB+oO?`FZr)dZR7UJN;St%E(;!#Ti0w@w>-Uv#VE z4gop9Mfdw8K6d}jKZvsvQZ1Q&8^TF@CxaTnt7l+A7_Xfgv@il>NE$73+w^qVA>d$cP=DQ)? z&37}pwVj>k3jegEbGoF9TSO6G+YDbN=uU`DaVC^*ZI>KD zq5Bh(Z=8dm`!bQAug!Gt0Uj?7WYVqef|EUT>-ahIOE>MDSK5_cz7jB8m!ksVukDUw z<_vETeRJZ1?jMRgzZ8DD%yL|b;o9!Fi9Oxgj&=#ZQNoWy3=H2W>EYlR-CF;g1g2Zt z)#va`(k9%E;Ppq`8z9SbxH%v2irCw!BA3<^UunqaO~l8G@1k_yDf!CxDtkD$(xO|Z z^TRHDzQr(HmtPJ_(47S2^+8wp;J6gSPk=u!-QLrWw`8|^*6scIm;7bfSqS6wId>pp z9x`89Mrgm3jrl~|V*XRdEYGYHST3nUmN(`F^*|eEKGAk*&rCbZ33bbQgSw#|&=z&N z>~bRd968y4&^YX8l;ehK)Ws%@X~{=JRA4|5T&!~;w(7T#mc@V}Og~M4*#lJ@=w+%t z3wJo<(OxIvo{IYv-0Z8Ift&Pa3aopx|D9tWThseS-%ambbM*<|{J|&I+;wQiQzf^& za9ic`w~TotcHB!J{NvsWzx>C)A5OoB`z73Oee1SYUj}T8-FVrKJ*2 zI=kTd8xJ0;|Mbi)=NnUhxnga@v=erpKKa@)YY#RZv9RyeIde{KxSVs8~0CeKZE-f+)*fZ z67Dl`zZ3VlxZ81W#?9psoIAb)_a5Aj;eG+PnpB4EOu=1+JC2)eUN3Hb8SoL@U&4J4 z?w{g5fcs6{S(iwiS^7nd&(i$iE41ebi!i|apxaJzVM!cwqU3lWR6UgAXqr5BA- z2)Vj}UR>@VUR*^$FTQySAqR!%#ko82;&?W_IF&12x57!U+i{B*$9?F<^-JQ#1t;|4 zIu!BZi!Hsl3`T_D+7SHIvJ+snK}?9li#0Qm_u>|0z6jHc(`{1$ad9+&^qi3c7VSxp zxjKT#y8#86ODO2Y@of?5PjJ$UYlwtUSGn}&#p;t6-J?+DvT9Tw>W_1nzgQF1$X0-! z+mtpbCtS~YcA6A9;reC20pSq?D^OgQo-vd*IVW6C5&DJexxq&8J;~rf8O}@3{rQFK zxxHE+dOd%a@(I_Ia+?tDr9VBj_PkHHo^oqLIIbM|_29>8KH+-O%uhdhmdr0)&z||k zuLo27;@4AVe*E`0E)mzi>Tsb^-M3Wk0)xaHmgrBkC1i z>}24|$v-{#<0ro!1oETTgF$}udgiR#Cw@KMwHV=E>C;nMEcssctEZm|eZuvW(NR9( zdYT8-F0UN@=$V|Y2yBhy=Y;Etnra{ZdJcv5<3+EhNZ4t_mBU}pf}DjwFa7A*4L^E4 zfpLvu9?9X421Q+wOII0@Ev1ptv7?H10*mpn!+zHg>*2$Pbv(DzsVB$-Cj9$Iq6A2gb(ztIFJgJvG@jd~(M+J|()us6@zS4?! zF9O~WJSh&I{9Xdy<00@SApPGKJl4zV((%?@S#UjKW;)IW-fu$SwF57@!_-Tyu(R}H zveT$yk*XOA^vl~|C->lo>!L-KGQV;Eq&Ydro6OU zb!mKYs`LZzQ-UYu-&61H!26`&1?3N46y6g8?_0n-KZJZw0q-Lr5&c1m3u-&K#2|3`rTvf#7b3c{z{dx8J(hfMy` zj(L{Dmw@+8!DD--E-lBBD^*?2_&EVp@L`i5+cgKCOJ2rb3;c;UnD}jiZq;wXmw4U4 zYZN?buRP`a2=L|$9_3M&meXdR-vi#l5d5A4-l>9jjhmmeBah?7CQnTVV0{Kg%`v&p zl;e*4H#X-R9O$3X)!WuR*q)rBx5RtfJ6r!(cA>PVfO}WZD1Te>|5s!m*$$&K;@q#f zf8f6&s$I>A^wvJ?vi;w%SAUJ^z16ZCN&Z*$}=_3Pp1AyB(>-4z}A5o|C6~( zr7i7m?d$An8}QJZ!9709J6Vmo_724nTIikWeeQvRK8f1F-W$7<*sMlOOlv!PI17YL z%_{67&r`4zFTH;~Txj)Vr+L$n&^yY*iI!nQw<*uop5ZI4GM7QPaVJ{K)ZN25it z=m~{g(dmWDqIo-`#}!@$oT5)fqdTLM($Oh}w?|JZ+(*}m>FC(PuSFx@jT%L}qQ#@n ziRKkz0ZZY`=&_?$7DS?_<&Vyr8!5<(j?LftDY)~Cj)lX>A4CLa0{e`@j_B#HM5o;o zJ@p=t6@4fg9lb1Sl$&5?bR2{oTUhiMBqH0QqSExJQM62D^r=Okjy3}0)KAeio{vtV`l5U??lYNv>T)yZU$o0})8%UvpWhor zYoaGYIg^!P6=EuLmPz(uA$!eEcAb#DLb9nKo027q9zVKhN_2A32H0yliiIa7NGd*| zS{9wx6+H(gJh$*k1tWzkqF4tqMi~r@3ik3V}%1< zu!~s!kA|hS z6~bPR|0?xyPT@`v<=qM#qv#?KVInENWLb3V==?GJAm-*YEN@wK0?bP+u;~2gG;k|k zR`{9d*w28flE_CCbpZR4G;pg5{|~DFRCE&3Fs`uZ#t%owVgdTmi0y2o=?}pEd9*l% zV!I5b_}$cSI(pnb9^l9ym^?pDBa@rl%D#LYz?tKi-#?rQ)s-ZA-daSsBX19z{u+W}X=y;j^@pwR$# zgSZz1u7vw6@jnT$hbJ=w_VQCez!eDpGX{qUxnKk19MgXRNWAX@qPCp)O~8%l+J9Bt zUjRhCIq^n7^5?=0gfFiF91H&{K+>HF*av0%SU; z19kw$0EssdkbFx3$(O>A-z#Ix^uGv5ye9$A0iSyTFGlz$05<}E8z4v~ZUQ7;Hz4WT z0XHK2BJn>Dknt=7WcuF)$nfbj|HTh;{Zwj zPXvlS^dADe7<8Kf$#(-F@%gDB%R{ZW=K(TZ zmEt}F5Wk7X;g9i_h<`pH>E1xIOn-jEN4f)ml=D}B0P z{Uv~;zgYaoo9^ZOQiOc|ghW;%zJq|kTmCE{<9QO0;g0|^o(BN&{yqJNfHQ%A4`2o0 z*8oZX1=HR03Ba@9z6p^0xR{OnGJxcF1t9sQ0m&}~I34(%fM)_;2uS)S)7`TWkb0d1 zcpCg?2;{;!rterl@-G7<|6=if6}>OIUjpm|-m`#=my7VIk6%dmkHr5TK+5xNz-fr* zYk;Q$?gFGf~Pou7kYy0+R2y0FQ(J?SSO_B|!Wp-h@B$-2sS2 zA(OWQ5^uBV?m@qX3tT6!1;k?4$y^{qzNZ6{FE%UT!j#EJ1Cs9%fcQ=1ANjt9&L<{U zCv!m&@qTN%dwvOsndZq{baMpY*8s`)DnRDjW9(X}~1ny%CW7-UkSN3;O{Z;0BG+j&R7T>iP2lsTc6%Ub@qPqv+}c&H(I& z|H*)ihYQB@0poy6uqI<3;CjFcz>5G;hbR~WtcJT3kl{su7Xkusk)DFf01v_qJro`g z_=Ldy0{02rE$}XZcL=;y;4XnT3*0I2T7laIZV}iguv6eVfolXd3XBU}BygU<3W3uE z#sp3hSSqkcAb?6I=@Ez07j&=mbsk_0{@56-g!CfLxC< z3veA^0)^8({)Yfh2Rr~s`u%{UzYB0Q;2q+=6>uuT zcLBl%O0ETD_;x_zZvmVP|2{y>ZI-M7WO$>5#{sckrDPEx7PzSNGCT%1=_digu2p)G zRwWnx55T__ZY|etacjADiF+p?@wbb+Pu%Oo-6-xw;;s;POx&g722kqy6#}OTj0v11uvB1?KrZYb2R;V@;Z=A5a3#|( z{`g#Ui=-zWaN0T;rb^*{0N5Pxo9 zvjux zPZR%`_)h|y1OHO-FA{$PunPXKqg+w`Lx4>0LBR3wKOp{3i2r`mU9wO7cZ>gBfVfKT z5dT}ne+wY$U{%gld4hXB+;PEMBzW@xXT!fj{HKY33=nm9$t3YF75^f@GvIHC|LcgH zavuUb1^x#CRsM3;N$I{yPCtiK+U7 z{@cZW3*cDz_W{zsQ~cKfj)DIg@oyCWI3V<)>J#G66aNZ8n4+p*=pPgRNr1>IRlm@` zNc;g*{dzw-aZp9!_XS=naJ#@o0_O?L7x)i!`bc-5zhbJPYJwO;Cg{)2%I92@9m_2R^T3i-xc@~ zfgcdqDR7;@>(JPd{tAK11TGeMJ{uGKCI~!C2Y!5iBi(+19~FOosL0<1;@>2&Q2hUb zP8%OFFstbA6POWy3>>R)jJv7uI)R+GCmr8^2=@ar{(S=b#ec29IpWXv7vc?~e35RQ zK-68zzf#~dfiZ!LB;J@nb~ef9fbiQbaF@XC0@n##Brqn>5O@HU0{QF~xJ%%6f$Ib= z5*QO`2t0twL(vP|C2+gIbpjU&j0rRZ9sseT7r0B{c7f{zE)p0MXb3zY`q?dTm%!}; z*9lxCFeVUyEDFDbOdza;{g&WCU+7aB+;L2Acr^|7$#AwGybg$4ul0Qy`N43#wwLdh zCE&S^6)djDQL&QWq-#v~{Qz{w#Qg^BoAi3^?|9*_*ZLlT^2u<$w)X;Y>$SY!6nwpQ zm*tE2dadrMsCVdQKZe)OP*2dU*WykRw_ba@2<406dadm|)Q3#ZPD#%PDKF%oCi4Ff z_C$AuxW7Pr&`*b6c=d`~uf6@6$gkJhegm|`*K2F}!4%`$E%Cie;+rS@Gq4}Vw@BP4 z3V*%!mLJBEpI&SGti-3+*79RZhU>MoJR6?z9g_GuB)+)t|E|Q>DDJ705A=Gi?aLCM zUR(Py(WhQZ`)%R3M(A0NDE~Tfb3GH|Uv!MAud7A>yMe=t^)BPnYir*Wd+HSWzleN& z;{GY~8#LR6-wf~}yMg_2SlRR}Ubp1Tt@lspySjvB#LC|Dfo1ow$D~`q?G!l|moG zOCPU1<`4PdWsuh<3EwU5lf^yhL^GU~67gd()4dDs@!+u=e!M=7n;*zL!LP?~twuSc zd$+jT@l5wYale85r2BPoKMnh$`;fT5BH;(b&65lmzE9kUUb**+`v)Qq^}y>+#7`W3 zZFjl(-e30^m1Onj{mGHe5XtPPrBk??2`8{uJDIk@&5q!XOHg@SA0B##vaZsG3{>d z)@XMRx#BYt>R9Ibmg-fBsR_LpK@M>%cbw3*dZ2YfGTt?SW0rCBsv@gtsBUTko!6o5 ziBw;*cWFailQ2`qjjB^yy-BP4`&+?xL-*2Tx*n&YZNSm2!P4O@RCQ{ak${}Or>-&) zzJW%!nUJYGi@GtK%rg*WrgQ39WTg+4%HfeH*${ z>s!0wzk-Dy=R&5FOO@ARbuP2rzbW0?wo$y5c&uKMI6g1cyFn@geO#Z*q_nrwZg@PO z<7`-)*{GxYOeM4qGMerr7EhT+?6tIZ58`-bn}(`KgwpO{6PQy{YpMFsuxbz~Im)*> zo$l{iKZt{@vnO1u1#JoQj7=lqy`ro}oxo|OLM4w%ti`d{JSQB6@o%3${coKPO9B4f z(_F#hKXA-2x%?-N116t;`!r^sBspuU+^WZQ%x%K7-egZ-dTXMswXG8w9%zUiu2WFm z1-x-}eGi&^TTN9nJXc4TAp|}eaak)XmAlaBmFfv~v^z9Zvjla?K)SUzZI=9+ZXB4o zD%p|jPxA10Gx0qG8=8{6IM6+)(J#kgyg+fP*H-C!hTF7YR^%oVXYJ$BYB|uHZIQE{ zav=Jh4(=&hu4QO69L?IAZtF~#l?P6$O$_uU+qycs+E^E~c^xIsb6`WAB`?(&dURd~ z)*>}t=N)^Y3L~!|&*R>6PlFCPTs{{$$TGZSFsoeHUK%aE7eZHWm#4quklwW(2O|3# z;PA+9YxI)Ks}1+WGn1xT9)tYXR0>`!hbw;pGy#P% zfXc6AdXeZ3<&xYJuX7dXK7Kpba-H^)Tk5?O$NVAZ}+bx_k}~y7s86%V!}#^;f0Q!z)d)pXX$IM?Xged8c%? zKUozI|MrT0whC~c9iE_4XIB`bah+T_V`fDxdsWV!JF{xe-1${=W3j4=N(7j}l@%3p zX3vIe?(A7}6#BZ+*4ssS${I`h`I|4l#o-zZd8jcB48<4+`4_{Di$ipGVf@7J`eMBq zQiL%_UfKM{vARi$vmwavLGIimF)x6yLTO|CBmw~vrjI|0nr_3A|id%=Bp*y|nWNdb~P<293 z%5?zpi7H(DR5hW}%M5nQ7sD7MFA>w2c8uxP|GDy+{Ma2Qj$6J8;dfA!H4pswxCoPP zNzK#-ZT82{r*iC%$MErbj|q&JjIE2)Lx0)yc4NHKE#J+;PgfPYz>o5Et_>_7U3?kp z>g`Cm`R#J?yVWHhSi9_{J-L2xLjrlMk^p|^Rj*p2lVjW}{MuxW`JvHNEZy>*wa^qq%Qt&zRxo*T$=8*`h2 znLEAnBtJQq%4^Yb6Rt~G^@~HkQxI%c5bTAhbz7?K=>$Gi^+X$ZAc)mLBN1@1isnr} z>h)yYBfX}BU>a@;GhOLtbEh ztJ+B0BR+oj>xh%_dGOIMJjUvH=K1RLs#~g8S2s7suY74*JoDrF%v%jZ$}ZxW$Ey!N z9?#V6j%S|1Q+?*ahRoo;_)zpR)GzSg-!L?t%P!(Ow(V=k{OKTKGwL&Y8#2FJe)V(X zui}n94Vi6sfq)?oU`Lnu&_aH%6(6elE%Yt%s7S#2Pka~}N8I?(*<<3Ff-wz4s>Y~3 z{1_-VnUr4wWdI3ql_0`NF`*ue<&o#X?h;VnT{%SgpJ~Yay&?0*hM~IM;CI#T!IJon zh4qNPa<}5pkWYIu?yj(5Kie?0?XKmS*AGu*kkIf`H=&WV)@L4AJaqP~>Y+hHu`(UA zr<#1tL^Wg%t8{Hc?2pAWPsFd>JMDt%3#->wUsRn~yT_3?jrEzI#53FW$A=~}UgXT- zhnXEiRb5CAvf;C6ks308pzmHmYRJ3>ozmy&c;-Pl0A_f)D0i?UgFWs=oN%fhZGwBkKGD`4z0IBR@qKBq`5!R@b2?^?U zTgHo&DT|V{E5%fC)g02!MH5IU#7E96MM~ODnGRdp%B+QDQz1;hN>SBPu+Zs`XMQc( zKK!swKG*^I7mR4AYBT_|;Hhlr1Bm}*75{5M;9)`Wp|!ig$<&e7&L2eoC{7d#EU&Rg zJXCcrD3N)#BI3y9TNUH1{+Y!VZ>4#a7em|jDaRpX!=#{WXvplT&iuSS1Kqy`K4t-^ z&)kn^B`MOfkWpqHG=t)qJq?*Z>*uxm;#WU8{;It&o7#-2-s()j)cB6o`?yfTsC-C- zuO2$vEG2wE@FPEX-w<9-fnt0!a^<#1BIB?69-bw1?+>ohq4Bo0dl|>|Hz8OHg}l(1 znWq~vZ-}I-5H&|Z<+K`RiX3f&(~YAg9LP8G2d|08>@Wl{Ilbz?m950-CL!Kh-X%Ga`?vrk4G zZ=xlH)taHGe$E&FKhj?pU>G&*MOC`BLucm;3U_l>29E-WtTD?sSiT?r$TiR)XINL< zr-TKDvt%AtaSe3YZfVsT%gDbQ_T)FKfBYmz7@9M+paVGAA1*)SR z6bA9W2o3UUEn1T)*By};^D1{kuF?ytFEXoWNhMTalafuUYEVn-Gl!+(su?=_G!;7^ zAn8*M(|ro2``#X{8)Uo2qS^jM(ZN`+fiDKtnZ|~nYAx%_AfbA@XNr1?U_}J zl?W^ARWdHjwl-AlBwC+oI%dWxJ-V zWb^;%;)IFO$|WNPJNjMSGKjo@Zx0L1k&gvN4^}BGMo$#;)|kZV#AMm3wBD?65e-2%)ArrI$evj78Rss059VML|Ys0O~zdZ*nAb*A3( zrl8g$1c;Y2fRHu?EUx;m~M=eECv^FZnXo zcq#xHGeXlRMZOl$>n7W-Q*774N{~}!N``oGIgVR~MqPMfTmy#IkWuGJ&d~duPvRX( z_l&^52>iRiM9iq@#tLi@*dlPVK>kex-R%Nt2!-xRfiDSsTj0k6a~(FrFHmnD>HSDK zdTInDe3-y|ffEGA0#obJIF<%FS_9Jk0!~Q<+EpJgBExmTX^v&>D~vUGf}G8*^-IIV z3~mpp`kKk3W{j#0siE)+swp0*?^+r-YKmeHXVIEC70y-?B~m1lr<$YidqTZswjXaQ zI=z3}-$C799ljU~DY^j;aDR0;|JH|2wig@(zdHQ;-xB@<3D@OzAz4ni{?+@Q z6T;|R1k+6kqhA<YX7K{{9TV>{Mk6T?3i`LV+PDdAfrKHDi~ zSgwo5lAbPBc>1@5pCsYiJmrTb@4BH9esK)_Cwxmd|CWv}JU+)|=Hqthf4>y?l)%>n z@^1p^c0w!*W$;2hR|yQ`!UZr{a?p)tMs=boBQA z27r`sS3OW!SzE<71CPiCP99S@CO4VUtSK;tQW83JWJiHZFHLCqeT;W$erJ}-7zD(wdxY%z7KJ!-B zl+B6=m|nlSz6A%G%H~dq2n$XXJ(4P_XI5ehwWT0}y?WiMC9Ta7!K@G zy`pJZ$MlNoh-f;Uu@ND2TbeKj=1E%2gFTv^g^6eDdF@kX6^tDhshu}8Ql>Yw@R*W| zjv1OC5sG|_%^y2aoK*r^ud|deaMssQXCu`emv!o^Z^%S!^30i)M&0Dr)@C(}*6Sh8rS$B}z~W(f z$BN^go`(((5aawYM+3ejKyzoc@c--F-Shom;OJ6y>UCyiXacV+!=BKv_7oO{Z83x} zhHf{2HIxvdSjb+)B0bp1)`V9ow<#7GYO}&i#>NF=VfVsI)H@lAf_oa?VA+jXWaw=f zZ=h!jLLIVn+h*7n&m!(4RRs4dP7T!{bfY9fQf+8B4qisvmGbHpTFV&iBVQT5Rz%k*4~jW zX>KIHLy;35NNbMv24hug@0qa$Y0Y?b9UaO@dudIEF3wmpOZ(e}1~w-!_^Tzo9Wkx-e9bS+Iz_5iV&14$`5uk5mEW`CFln(OLcfAu8^QT zF3Vi)eOorMSYq1GyBO)Bl$e%u*p(DfVw&ZbF3W7~ea$GXz^R*1r-M$EO$(DZ$A!8pB=*g&l!c)TxUoZmGF>SV<<3hl>3EqM9ST%? z^?e%X&1b5QTDX=>V3ZE71y#F(YC6UHgCL29P3d@-Cmnk8YvTQDkVI3{bSJyX)o5jc z8r0C}Fx|yLE{72O)k@LUDjkLa?bT_Ryel!(=~!bWmSxP@6|WJU1Iwt}CE>x?I%b}m z-aPHCb4d|(po4UInMU=9B;r5b2?0G6piOGiLVQpJRb-xTgok3ytjo%7dzTt zWE-f{HPGtTKtwCml|xJSbZB4N`=v{YC=nftS3x+jYV>U^2ZE$N_$p3UC=iXwAq0Q5 zpljS%v$gkbmlV;{wZO@);0Tsk614K$S+=+=5$b6vi(Ho3+Iy)>iYT2sC5Tqo=}@NH zTO{8P(1e_@;IEFw>#gWeT5pMWpc|`33*cqQ!gZ>6&j^y7u;B0SM35F3tx4(VRj!zb zLgkIjbd5n4?fu#%MKm!T>mrw>hF3z<@ycjAC5; zD}@_#wRf&dicravpk6LZgi2qM(X->SqY(j{?4?=kF zdg5m6WFOg-R*}Wn?{7k%P6{J|JvkLJ9hM16>e~1$Gell$78oXC&poXlJQuD{+q^#Q zqV?D-Pxl)XoC7s7`XP=dC{u97*F)kdBx?+cpodwUv{Z66G^HX71%XdlFxUXQ4Ha2M zKrsFip?qeuS5XLhLbAz=zH=gFDM=?Ha*~#Gl7nbTy(8l=MHR14WSE5X)wu&tUS^M#8S#RSv-ueQ+wv`2GK5GPi6RdLl`mK8WCR!KZH_6(C-(-vP>J;mF z{H9tT;y2AoMtbQMZ=ue%rr@`qbq;=$tPcEczG(C2L~EDh+ns3r!tovQThBPYy@?j@ z(FWh4L?iw!sF8w6RNTP$zrx!WUNhAm29V(QeMwDeK<`xGR*qc);4|Y-0A(sES@8qm zt%5hczg-KE5T9T+02cc*GW?$)4BtuiZ3;yDdn%N7;3_m*p@THqOQF0$kZIe!fm+F@ z0d-PWXr)G-P|i{u9T;k)tb!hX-?)tAHSll|;2Te&Mm+CvJs&h!V(ANS>Sp-Oc$z%_ zZ}<|5?P~$zOy8-Xq}&U?KW=KUJRSz&EtG6rrD+;I)?CVad?DE%^EO8V(a`aYnvXknj0v==Yey^d&! zLJNW3Lv*r}woX$|WX)RM_EdovoPDOG&FkNTY3~LWO#5+QJZfT}snY%es7kw1B{mtN zXnez-q0mO4M~Kc;=ysq=v)KyeEn-TuIYf;tt&yJ5nYG_X#qFhL3r#j+v*!Usp=LL! zGCu*qLCy96<6!}N;cW=beiLXM-VFAlyNLEd{qu@D`y7=v7a6^YHav*XUcA7Qmy+5` zXp-Xuo_XnYCun?$*`108lFzPbke=E@>>hmhGLU*>eo)G^p@W zU_pgBUE@u1_D(1NT7;f5BL5IIilVMH*~QJCoPD|CPBd#=VJDfhm8feSQCfta5t_9x zK-7GS+AX4dC|6fh&*8vaVcC_yXp_a>?TFK2^aRhW4M35LDDD=i8BWcD;vVpd>(vvC zs&wyQNg6p?jGoq+wVY#LO>z5BW)t9XMR_x6j%JyPEY}3Cxvm^wx3o ze9f$#in#9~uKz@*kjxX!xo-53jP=ox^nA{&-Gs;%Qb1%gX2iZf1c!dV7`=6Do_BZD ze+p9aDdi-SRT*27(MLz3F&HOu9DG$ypG17zF-Co!8%U zLC0yIKX7g5xs#vpo$^S&|M1qIyw;<4`NVNFr-~7j`uirEBq)Wce%6#|hlpBZGx8~

    *I6OZ@z^`*bz!{j@0CIQ%y|>#6ZiEi9|Nf9aCi=f7@P zJSp+g0WCWx_R9&}UA3XtKW5K4?Tp)Ac;p^rd@r7Zcn;w?iiZWjw|xLlKAvJcv+yj& zvl`E4JUj91#&Zvzy?74dIfUmZ9-bYf34#C~nkXp7GYijRJe-hh#I2#S%;Tw-C-tL*{WU*_GKTB& z<79!juAe6a|Gtzz-ysaw^}`{XxGv8Q;n(%gcRs^)d_7)}#wXf%v2)y_t)mdufV4P$ zXWm&}Y(p$(mL=N@)1aPg3zW}1vfh|?>c>2>Tv->?k9pSh=G6m9MCidWNAqy3;)gZ0 zlmLVp(A@`UqiZqLp+OZjRv}q+q>mvy&Bs*=<#DV#n)iBIL*T#GU%9*IePh?oH{LyW z-Hl(YzH;NdZT;?Bbfh|S(&~@LKmYOOxxZRJ?yLOG+mkb|xoG{7qZL11_51Am9-i@e z%A_CHjLLm+#v+!HH8n5wxm^?Q9o~0)a@m({r}LH4AJ14kWq9V{S&3&O977apz@!ESKzmP z!#x~yd{2_Z7p;)g;vJ;7@Cb?TP;&8wDvLU<+(}}tgo}-UBrfcQ#8oRvT*693E>cP2 zid9J5Cm@Mi2cjz9rzG(eDKLsaFIf+Q|ug^Me3l2!+^ts5}Obl%RE zfCkJ)>4Z3+a9^0mx(s!C4g5LC(ZcmQmA1d4h3nN~bBu7kFxwMDzFuvqzf*E@7^0wF zLM;Nd-n1h0*K4B75k3H$9U+l{oWb4-C!ISYTrXwr2Tx{ld_;H>1{J!McuY*(72^5P z%MJNEj)-u*qKFl)*9y`+BI4`i0PoI$iwM_K{aEq!Y(7?eJyVYrUr)wk#n%(gmw>K0Wd<`Lmd1r3%UEy!GIlCw$U=qw?JZzLMjR_bm8E9f!P6z?Xd-^7^oZ zjzb>pR=z9sveYT%U_K^0<@`NNj^d0*!D*UbrKRFm^+nW>`CXj&>}+q#Yiem|?p)fK zhr?YB-^H2Nyy|uM>wr~xl}$_9>f6@k;jEkUHv;W>(T?Tjl{fOX!}k9$RrSH$;Q8V2 zR8eom)~OqT{=L7?$g6fv$9>n0vVC29p6Kr!ub(mp=h>T9HI7-qm#jW44-B1od9%tX z5cID)eOe!AJTCFkXF&0nDp(=tqxy~*HhsqzWLx2|sZ;a_gLwSiq&gi4480hix{O3n z9cT41VW2&(AlvTwuAO;{o$h-XR_UL%d%<4(3BF1|n0im#Y4_}~vwi*n_6hBFb|-Ah zPb9HNhn?lS)6TJa%(FACmJWN+Zab~iTH8S*^3#1Y>_LC9(;z6-e?5?#KU`-IfCc%) z>G+^DUwcj8LVTng($gNC6qlQA=lbFbd)Vo5LwndmeEuwZu>V4PNT;3os%`pV*Vz9w z`G$q?<@)?*D!$xKd+^ieo(CBp`L4MeS$W%$k$bK^7I5Hdgwvyt8 zo3M4Cn`tLj+UZw9?~7pcev6&`3cz&aZUNv$AU|Sf-e6ns4)Wb#2hOznTxy?iryUPM zAF4U*bUQO{WQN`A96QlkvD5Bl_4Egjn(ra-?6Tvw+UEJtzLz~T$-mc5UTr6_AU*=9 zL~&2I`}zEn?4fr;U;00`6aD43`7B~I+1W{zDDOSC;d|8{ko2@Y!slN`m3x5VpJ`_$ zy$%)kfW=WY!}nu5vH9GscF*~C;>8Y3+J@4*$u@S`Js`~XU5}_M?Guu$M1R2U*=olj z)l5`L9I`Xe$zSiYm_KH?Hw32n;_`Y>U(0uyZQ@RbXYItKM_yTgf3~?G-ftV$-5cYE znD&sQ>9+AulC^xgJ;XW@>Ezi3B)#o`r($C9wrxCt8u=)$M$Llju`-#8tEFZG_QReY zZN3pN1{?tV6v6WVG1uwKg*n6f0b(Pt?+JpZ0%9K6_iN0v%Mkt#K;j<&o(`Ogdg8B1 z`0oH2f4_w975oY75oyw-k{T#I^p*Kiy^-r5ZyMr77(2~`%J*Gpq~L4 z03W}C6aweQO@H8n1wRpRAn-4+zQEjR^xpwXu#fQuAm#lYuoUzs0ndP0&|d>0tJ(KU z_&tF5pM4vCiokaT;3U8;fa3spsmnyb6@b)ZCg5qn`7wj|C_u=q>Ica5(gCSw93b`l z7$XUBwP^zUHQW_c}nP zkD)=8H#dlw&H_N{F#{0)vuW!ObI#HH(9H6t?K0AH@x%Jy2T1Z~0x~=a5dX6+{GjNv zzrc{rdi@A+JotIB3G0P60#62{jUvLU0P_GZ1w0jS9bf_AQb6i850L511f=|OK<0lE zAoKA$8XM^^0+xcl50K^XE1};7NPTGQoZ+11k$)W^^==jV5}}_BNPgM?BmXo&${Q!) zV=tuTM6kS0g<*b z9B`Px03gl*FoJ>r+ zRp`5gewBl#aj%H-w+nqUU^4jE3VpTER{&;#zF6q}g(EWhu*UH8;>7S$BF~3Iv(fHGj0Fr)4=&u5zzbhNlr0*B{UI!{0 z)1==c^jiVZMACKxl75xYcLJiw)3ytJv(VQ9LM3Hmn*1w-z8DZr*_bAM77*&01IYHz zK#ms$$UNfvh70`A@8EwHc#lBtKa#Im;8KBk0*4BGAB97{w*=lL@TUSfk74*?fg=SD z68JZ0#_)Fp@>DkQiv{wCCh;nPK7pK9kbb{F9yTZ5EO4p70RnNH(+NkRkdNuxWv-q8-B~_>*Q$scUI%fq}_YO%2KxNtmg! zu=^(*Bcje<={CWLsIn<4e|$_l%#xs7oZ*mzb}(tyG$cqHNp*Mg+?y>z?X0=s?%%D$ zEM$l!HkTv#*TmGaqyyFvS2%jdiorip)*P_xhd+Jpkn0mE!La}s44>k?Ur`DIH^cDu zzDio`j@mjYTuds*}|gOLOa7>!}`ttjFMTZLGRHp)JAPf0eTLHickV6pN~^JP8X%bZn`* z;W1i4P;Peylr3yh<{+ z|IQUIp{ayjOY*-GtZ#=1%Um?YT-MMQ;F3d?L-AC2t_XpNGu59$Eq>9?)`URNxpuZd zjAmzR9B$gmSM0E}6=~$twYU{-Z;S8o-JAmk@WAoF?&mV+Q-rXeUY9t8y)tjqIHng| zCv(q2x#P9BRW8Szw7gfb0RA2)67j}nN0RefS0^UaaD^RRxV?{ABBxk|VqQE*t$zi> z+}!m!p1Qi_4GndTYa1F@chun)yl{CtMcychHw*GGC5!1?{U$gp;qvy1ynsm940)I` zxen905GTWAO#5PoL>|}qbh|~~u$$CAhC}rHioBTi#b^(UPL@Z;QIWR-@?>6@;cz&= z9{Wz}o|W+YP7ryQNG3mrJg*BcORZll`(pdKaSHc<1B~rMo$^}^{g@P%Z_)INX{eX)ZgkNYijJ4N2Gn_anK`W@T8*b$NUwG`B?kmq%g z<%fHz+qnzvIM}ZVu}60ln|*Y9)h`Z|k97J+G4zwJEFli~HhX3FNJkGy<5-Q3!t&b< zd9uU}lcxqbReo$R;qB#Mz+uOpw{km2i$_3YejRx_)8Y9&5^y4}kdAdLD?53a6Y+@cz<(U4JoXaCh^UWdM-E=M%Du5xJV6j!zbN*~?iYEv692q)K|$h+ zD$hAe6sg}IMV{VoyyiIN#j;nnM9NF+H*nLp>BpIBYN^;P zhvoO!_R7l7bM%?#bD)2#Bk$;)&Uk>W#T8D7^XvAv81~9`Z*ch5$i!#y4;=h+kq0b9 zKMrrs0Kr+D6R6&0cVSNx_-1?%-3eLH!+mFtfu9e^JhPx4fPc%41~*@ARK{bkjP}E- z8gbdH78ZlAq;qLgYYnbFUDE0_VDbgglIMN@GmS4Z0lzovo&j1***Kp z9su)W`^p|sk#;EgUiL9cIHBwmV!|b#1LS~_tKj?=} zhc`27rIoR-)XL!{5W>hR+3!{kQ;S(SF#cystkSL`%PlDyOA9SE*uV=ZwJjeMrw_~i zLlzVoKKEex13`t#4(%&D;;1ujGP2ZNcBHE`7flM8ga=iHI_$1`6{_c=O~vPy6?|6k zqEka?m}r$9DQ@D9bu?Xlw1!sfmU_@I(zrL#(6t0*>?o7P;TStQz)r9u(%2FEP1jey zc@!@f)tsc>r|&2#{0%3zia5C&*kM$G^9?F5|T1ZYcptm5u*vq3~9Gbwg;-PR=Q zmE99)p;D}9i77v}l7gpTIIF7bP({~kDwDJT*R|@PvQ>u=*xiFsLnr%4237)fS$5|m z4Oo>_VO8BT0@9N|DoGy|pIF{-l%7(YXl*!HX{kQ`V9A_mlOeOB%Na9Ex}GfC_F?)~ z)&z?|3rNq1_oK&E`u(szcM^t?d*Y=0ClxW17(dv>cVt&7OjYeS2X$$nqg8GDrhG?V z9+as_FMA_c6c`(&0H6hph;>hTpOU)A=&l`x@DzlXb~U4S?XdT& zQ87NZK`e1BymH=bZeb}wW`H4`VN&InPtWAyVFS}N1a-gnLUg*Bu} zzjnm@14C43VL^nau--s;Y1dL!SPydq#)wq%;2l(%?Xs%th__p8*sJr~J($^2#@*12 zQ9HqYchIR5G!oeOo1hRT=|$h@`fVf=wJPsMehs55KGRzvUC(rv=J-D@Pam;2Y(OCw z!cx-D+Up7C*y75s?CLz|Dx$jXuMb@U8+xn`7z^!s^xaF5Vnz2xBtC9)4_#bN`l=PM z%e#Z1Lmx*iMOikDjE_pufinEvHTh^7`8~T!^K;N1{9P~?i8i37(@I9cXJrLXh3M9u z;tVJuS}Bg;I8y>kh!=kId#Ihhm34z=@-j4q!s!G%vi}AU(M+nk{)(1zGdf;)OWCi- z7LGyeT00$SPvMAyvillrZR&MZjzI6{6O3}dCxAv$(jLqdqsHB^VnkvwIC+wb5 zxa1nIt`$K;p6;Muj$)5Jb-)`TUk_njWv}ilJA{PrI(Qqv^Ex;JWfTQ(Jl)pIJ`c_% zx;KbrTquz*Hf;6G=VD}t^^O|Sqe6Q?n_%2BalFxSVx{?6@D)(rJtZ)CUwpnwuX|Ft z6aCzf=v()8q>9>`C;E(z>~c%B7bV4g=jj)2_r&q#Flm^rs+{7dyW(9<(0&zDW(1Qv z9XNJLia9}5Ox;CRuw{v!Xu~}*nH^PW`3t^*tw0*N48EG(%p@3{dJbIvjW(0$eXGJQ zE({H7V~v|}6e4}w0ali_pd6oEzHM*%wx225q)e0>N`E>|%AgUC2$rI29{0(rZ68+d zm~;rkR8@M}*BGqb8rH^lF$6k|_!)}n9v2Uwne_YNNzgyR;uI|9 zFhC0H$#{3_Ca~ckBx?D0Pl8_P7F$V4QblL?T zw~b*mAqtbauQ+y0Jwm=w<04+4Xx<LdN0*6;GrJG4@M`>R z)wa(tTX+$@4zmSVg>{!XPwE#F?GiI%zowM#asNn(A_eq!Ku2R3#&J(I2A=X^V}SYN z|8lg(60$GPL{)YjcJxpUf_Y~OJ2qSul9hWn=TG0N^4&dYf|L5WDwXWnz(TX4-{a#F zkd?~xvX3Fv;lPwg-ngo$X=3?fO6eXq3LsKS_qaYP5qkrNB9)a>R8|mOvQpJ`)RPBH zrZDTo(ER)IecRTeeo*)*itFgboN@EMvh5%Q_LW@{V1S;DZ!1UmzHPId2#@XCR^vvM z!FSs{O3*{`w#C3`{9C=y%e%I%U})EMs}<9)C`~m2tcNz2chAED=~v_s_8q^XI=}Wq z1BVNi$S-{2R-nO`2xhpCmq#+bp(2E~N31?8y1qtH(gqxg@-m!*l~*7-dPR4c9`Zk$ zoIa{g{zp^ON3GAtByiG-AU_y6yXXA?PJ~I&#&BmA%gWPR_AX0bV*eh+u`GR|{U-(2 z@BJu!KK^n`Z5pH!E=wPVMd`v9J}OTi^;r3X6au%oyx>t%AY#m;<>^x%t>~@_P@BpE z%*tOYPrv)s@<-ot=GIK!O}CnkUYs?5_}@S`1(5j!+wO%fHkX^>9-W^IgY|7BG@Ry1P-9+-)j%1<2lDxKK{-s~{2whq| z3(6b*z|?9A{FMzK;Z0nsTX6S8Q%QhP@5yCxf}Mqh zC5zN3`YzK@4Y#)1d5>~dD%H2;@nKkx4pRw0Gj|$6etElJpn1D57^b>T*lS$a#+~LC zTd-`bFkWYS07bnF%xD9b;$`G$f-)WL&RyaQ@jCD9<&h(nil=uY=$pOMyW$JoDN6W6 z!ReB=lfW2H0_j^{KuO4)p`yDq)lid$dlhlg>)?b&*#tYXKXv1I8ZLHGFlo30ofl*4 zSJ5U7(w@5~UFk@B9z9b^I>cc8Z$QVGR?IP04X#({!PS{GRCc{9(Xbtd=C9?d_Ux$s z&HjomWFgA5K@FT0-Ro^bO}RYN0koksBCQGbH(z;mc}-i zdFHo^PJEouIF5R)YFyH}Y*}NQYgMZn)~rv3$!#*uT+QRA?WeZ3G_RAmr^13#dq-RA zI&WNUR0-!#R=2iwv`>WrN8z8lns$b1N~f)HX${!vd^i+Hng?XV&Z8i06IQ$I5J}`;C5<#n4*ED(} zO>JvkRnpMWw8p8CDfO#aoRv-OutgqPwy+k|uo7m<=ir(O)EI4SdF0fz#*%_>mpJ{> z;Z0PuDOm>NnOYnh1`pb)T7`~nZB0v;HnzBx84|8^F&dg1>)T42n{lpqWxKHy#tC6W zbWS7M2yC=BPN9K7DhgZWQRyv>=S`WWDw>7h$%{7lZY){X(bzrRb#lEFM@l0T zuhZJqDfKieokewLeLiXuHjL@c61ZI81p;ppc)!5k2z*W8X982OjYl_7V1dAu0xuGH zt-yN(-Y@WNfgcNu!y1ilguv4UmOEtr?YMHo1m+7Y5a<_JB#?7_cuezjqpYp1wJlKJ5tvdt zE7;DQBkqC0OTFRxW2*EK)%zVrp|D-62F{2TutmEHMsqtF0~l`5^8&~fGPKmFX={RQ zP?&62-43Vz>)RUx^#M=Q9TiyGv^21;wKIUz{TNP^eRmvT4vfZ7J_Bu7WeJ0WN=*il zz>-FAHwHR6zz0S*@iQ_tn&J$Mo>Dl&KvWovZ$Y^8x?v7nqxnRn)YIr6sUAke^9N4i} zRLQIEtTh)vrqrv@CRI4ji4?{!s8Lg)L~1n3C{Z(6aYPA;(k*m93lGxg1oa_J9j^PM z#x;z^|9>r?e?RMW+OGXyXSspUznv9QJ`ioDQEa;r&BG4MT^olW;vgX*L~x zuY}8Rri0!1&r0}3ZiwU2@n@=!1BOu>BmAcl-Vh@^NzP$Tl<+7GR)t_XYOqei>*ZiT z1t0eh$6G%7eWK4XY5}vQAhr$G6bGIw^y|Xt`aN`S7+t@=!s+^b7EagiwQ#zA--OdQ zi9X?U{T>UaZ;io!c?|j;G3bvA{h_e@>i1}Py88VYPS@|xaQdG`{j@B;hAZ zxCN@;jg3vCZwa3%;ZtM8U-T{E=Sg_ECm-G+>9TJLzgfa#gHUD*9N}`{PrhoM3BJozA%P(p zG8N+(YD%2R0xOWXSF|x3cd%%I1J7$(+OcBb(t#@)o0hNW7`SvpG|2;3HML-(i0RwF zih-C>x&HHTime(n!Wux_>DJiRQs0c36{bocICCa=IO!Q!vB6tgjz0iUvKmvwKxJiZ zRX|V1P99S@COP!E7v-th=y|PeD~**hGj?)TgWS{=RJFFWHmtzpvN2llSoIfXjZ3426&)jN!ZE@M zBn+nq*VUc1qN$^?qJ2SQTWhp5bo$4`tMxe^UajBp@D_}pTsCgpxM=DXjIaEbpn~Yp zAaQ(biP3|`7GY{0P2AX`$M2X6v`vU6un5ixF8S8*sAWk3CEt>OgyRp~qVzOZ zf#~UL?PElCgY%CmyC8b-*nH7^7KWnwwx}Y)c&2tXH_ySi6?Ir}%etWJ2A#&Nc1PGp5_cF(u7x!M@k3)vYbqd5l^^HRrV+o53rgV0?Lf z^Rj5_c)1G4PQ}h?M>IBXYO#fRxsD-hJV%a_SQ-_KWhX6hRGC@L*8-ORoo!RFdpf0c zX`?Z>g14Mv>#@CQc?%ZnctILdrcG|@SXIB8f5;B~1yg;Rq^kOMzHWr9M8_bzWy;DE z{>j)qoY{sQzfdtQxwLUveP=VvEj$7SCjOWIqTJ3G*EAP6_`;;M>jVaCb?d?YJFBhGCBWKsh zQ1eC;mmu9KKqSz1?GQ9Y}qW=eV8tT{7lX4cG~RaQMIf8c-Eb>TtXgBON> z7b+UM9efvwALHhCt(K>B%1WkH8fDdEam_dWqahofzs~wD?kSIbZ+%cPkN*7IFXwOM z{s;8Xh$WGaKUj4IG%K)90XWo zL?Ol~F*dYC&WHc#YB}H67U5+|))-Pk&I~LHJ3Z+*5D6oF~e2gWvAd1K^6Wg}@ZB72UAEDAX<5?w*EJJVQ)+wsSc?Kx+% z$nYRB*yW|5E_sUb`I#S;V}*sjPhxRJej&z4y3|>gI0u>Z;!@4momHiG%FmD7MtdW+ z6zUpQEj6mkDxJt6;S^MBo5AB-)54B`EnCtmL#h50KE`?J=tEM7S0`;t?q;eh0EO$O zy1He}^~-TXA}$-m7V{cx0oT<{?QCh7)xk(nBm_xy=ixL`L+k2w=;f*vkH3nU+S##!?F;r@K_`I(Xxp3j5_4O;^h)ZPbNjU3NzG=cE*&c zrA;_^g^MlQ)(N|ZV({*@b}&_S;?Ak&#!z0Iy~6Tqjyhk4bg=Zqy_t15G=kf5T+1{@ zb7RZ$juklkhBYlq*r^m<1BIA|U{6Ke8^xA~MNY$VwW8w@5bl9Q#wmgntSrx~Z&L@% z>YQ^Bt8vh*ap_t7I5KmYl3+L_B?P_Op|#bYr#$M=3{Hc2hEBA~QV;4hPA|piXzi$P z4wWbMhCL;vQbeNMh{c%P8{Q(f4QNPQ-WS3v#@>LF>&Ol#t z>!w}$yQy)yd>u?O*6apZg=uNwP#7csyUg(mlov`5VjS}>LKwX>~|CP`a zRB_JQ<<|st_!V;e#+q^zCPIQj9iJBciko^wS!$NwxhysBh*!&xQgAxfeZr~=P9ux> z9TrX%oZ}7th6~R&GA^t{q2GN`9DcWt%{Y8vT*igNf)N~_*5xaatqUm@-yei8O6$?0 ze(JK+Xl^Y%N{)3<0zb0DL9q7HOo2m+s9PN?&1H#bgS7ifM?-XU5UjnAyQB!gI@Wxb zB|`8s5|krH2BH*&W_cwjMSFP{w4+W$+G8Y$*GW4pbG3J*G(poiM|-P;6lbiNrTzPY zY}(s|KSiMKJMs&IrZnSFc^+YRon1a8n zg}ut>&@5xouJ|Vep;aL|%UHNeO2i@X_oc9yrV&w`w#07{h^z$TJHEe4dHqzfW*K#n zNzobl}vdq=q#V#qL zFm$ZbT$YG-y;Xv)aarbS@A>?j07soJ@jekGIbp$HEr@@*Mu%Rnz5Me+hjfnP3I2W} z+(DMQV4&kmQh%cY+a3a=6muj?jpjZfb}Su~8)VVm?Jg-oV;yUx%Mwwhnq{TSGCMp| z$B~fpw`PWMhbv{S_Wl-s#!F}Fi{2cRzdF{fZmb&Z?JMtM%UH8_V=#u}i<9GvD+ESq zgU?A&iJN*v;Z#eIRxsXZ_YcwssNE#BA_bxlYE*k~!XLWQMeAWjX$Ifv7C)9qN)I(i$y6 z<6V}y+FR|CV#b=}vPAT)`4ZINvdq=qTU}ChP<_XzW1Z`=)LbCmtAeB(#CvCu6fQ^y zJ>jy<)!v`=bePd}_lozGASsrhM_oZR+Ix!|E21)nOHhy{qD37RmiJsKbG5gJtSQhf za>TnhND9|b3;Ns@R1+uMOWasB;jwg3tIIN1dvA3~)v;o&aake+?~z#IZQ_7z=C1;vk`NYMW6pv z$TlpY`j}o35ZEpvLix<^NkEf=Xm2gVAq`DY0$}ej7>7doYBrsgV(Uj)PAdJ2JTVL- zP=pNXBnN~?mQ)5Ns|>&-U9w3_O}UWaQEjlJsUv?#m<(HF40Y4BnY&?{O{ET|Gn@Ub-yaDs+4ZodI8t zwH&|uw!UzgWo?EpVEqWckKT0My31|r2z-Z+yn30>io^2m zqoW7m>kZ%Gx1WWN3&?jqcmlo}_})MC#AUX%3cfGidu^9xb;I|-p@Tn5u8@d_VJ9ufg}l z2TyhREdEjQXNUIRU|C$l{YCkf!1wV7zkepd+D4l4(f-r}hxVd8o>RU{F1M_|!goZ` zdZKUqMfpyH@5mvB)+-u)w7vT1L6*x;>3bGFBmPSi`fq`nL(O;}it9Q0VaYcW{y)&a z&UY9fAwGdcZ~hhj`1k?VSAhMk9$2q!?q>}rh_faW95Su>T*X=K!~)h23HBP+Z7R^P z9wppt8Y+R;fLQ$<$#23RAK%OR7|^izhx?|Li{Ch_6u*{53%c=E6Mk)L3x0jp_4rLN z5?-fXv?mwu%eK^7+Byu(wES4=#aUbvT2>`~;|=>A@N#JlBg^L!#QPIJ0V&Ds1hyji zq>SVjP_c1?jFekIKnx7=rkV0Q5U%f&`vMt@&h|Kwen3iq93ax)G*jy&B*6y>R_aQi zhY*(FSLn}xrl6`45*7Lq&=ZIzDfAnSrYiJAbVbTdNKpZF!b>DR(<+R2Ez2fn00 z20=zrpUnFJ^FdCc#LWE~L+XCRJ`Dj6f|U5N?@<6)gRTOF>+Iy541zw%8JR}`9{@Qy zlM+m1R$)Ej2E}J4Yb*=$GBY*SGj32y<_Q|hjvJJbIYeW<;s*819Idev;;>w?**?ES zGAXIbdn!UxvTSy-8hBHSee(h0O#6LM*3x@}{TaMn@TRY^O;p8?;7uz_^ue3{Q}`WT zF7z{o*aJa*6W+{J--iGR{=_k$*r(uU845h5hg}M93%ou0`_=&X%^qA{UyA2mJaaKP zXC;_tf~n_I@RR-`An85YF+=eZveycMp}p37kxd?i660wSFDt=DX9j?=ZphyzJUaoE z1Wh0Ut`zRc^eDu9f{9K7WI$Fz>bs5*Dw&m#=!i_BNYOkiAx=eoL!$oKjS8#lj)epy z0MptSRp`vxI*_+u7KPgo{)UB~nZpU-61+S9#%`N)A+Y7ZMq){2s=qm!11uqz&H1Fb z%Q7xk7+dp+PlI)%LfJ8l-a3tKZdxBOokG*>b0SDLk+tv)$~F3G9$v6PXV!iMy(U4S zgpruTTw+5s4q=7h2vC+J|kood!rf$e)_E0)~ejs%0beGXVK zw=;pM+!iypCtA><6n|!&P|U8~e-hByM5n2p#S?TQdOy{yeF%v?%ET5(V%H){Ffp1` z4kpIvDzODjETAMWRFVg1iF!lTtj)mq$z^%MD$~sQRHS~vqRbhIfx?w)4A61(HmX@$ ziMYMNn$U^3G;c|boVZ&<b`xBZJ64^){%oom+qZD`N@yY+-8I0g+`jj-If%Zk^rurKYzI=lZ?&>tguc{kCA zfxbg@*H4Mkc6U7EU-e6%gV>(>kAloh(yo0JG-FUci8D3v4n;Hueueze>HW$6|E)Qm zbU2K@T1&oi=*(J<%BrP46{V$WHodKB);Hh%kHPjFi|knx^+Qm@ zt){_dji;b>j3f*cjy_4qV8Q_uG%ul21%2SpAfcCO9=^OB-gy`)mF^!#(Ot9Y4NtT7 zVz4XSgY3ot9n4YIk$N}S%BaQ1(0vFxva5T}LSRAd2k1C@pVO>;A91%b?mta)usPR_ z8ItQEn*VnkFX7DET%>+8vvvm~ z4Mik#I7h|lZ1qD;j-10wfzNdCDsYW3XLA~bP_=zDOv}*Qoo4NAlr>7pI$z5g<;c26 z%Nk`;*6`l}SJFl)X+u8)&Iwn-7?ZCOW2Bba7XufaS^GLli5oo$<4iM~V?oY|=zwmO z=gb7=HkP5!0Xv(@pQe}x^1ekny>mMBb}*=VJjJQUL3WR*Er1N4nEZ<}O6Om60!G17pm9Hc|JsdjTxOQVCXPlr?KwuRm{dnE$BC{z(Wwo4Z4JfO!E+4T(P_Q zNF7P<$eFcl$u~3du(|Ntm@SBeD;ouq@+b@fZVK!RKJj2W#Tj@Qf{F z`h{F5WnjR-TE$RHBRc@>41~p}Bo2l*eLDPRK@q&ojC%@ct4T{Ng*W4u@D58TOx+L2 zo|8}rQD*7^pj?6y^_!_Ld(ad!^)S#|5SyVHX6pMu?-De}Ol96V&@nV%8i{)lRAeUJ z$K*aoSRkP=vo|IwT&JkyGIKqcKXW*+Pqg&RaULwkNTiPAC_T}_yCj3RDdZ5GZ-d{ouY`9$d_8}W zcn!Scb~ETz74$QBKV;CuiKN=x1@L23%O02bTi|H};P>~M8eGti0D%K$uSyf8_a1mM zCV(_7;Xp8(2ST$6)SFG9-fRN(W)rA4n?PAhb1;gGS8K-_rhj@Ozk8hA41Yde2ov1) zG09}o6Wj(u+;2{BTL|$KbAsDMh-a7++%`fy$DE)$2xK$;Q}{l69Vse&n2~rG{!;^m zI$5MyxDhO@exz5ZlZWiWZqV6QvC=N27`{N&I(sAr#NUIElaiPZZ~8m%n|2Aj{V){y zQWB?~!Jj z?Gw4N}U2=?|?N1b3*x-}34bb=-+pFigOMv0FJVJ58Jtqr*bR z;AONd3R0LA%nH=C7o;-|#iObeA4=1}IH;~y;jK2j`6Ym70G`2khT|EDXEdICJY(?` z;Tex-;)IQ}a{pM=dg#OJ)@M#U5V-l`q=_H@_>wn1+4|B4=9eSJ|L8#f+5@A1w0`-Q zt$ACnKkJHB^B!;c#mp=37|}3!!jC?BZ|0R{>t4J4`3K&d{M4bpJ)i&9!+*Mb;FB#E z+~-^H!V805yrApR-gO81{w=%s%--vsK5PHJ@6TDgC3D{?kL3GbJFnm6b6b*+zInm8 z>NC6V7(a954}W;^FMe{_#V2oi_>&(r#w|Vh(!$Du?=K(L>y&>z`qn9v%}Z{0b-^it z9?O2d_~Ne)Z+d9?CHp>TD0=zm-dz{^GnyW_uj{#Q&iH!XN$anCC$s-uKUh}Tu;R2? z4L@1`*eo>A#ducZ;fC-|JiGDSgJ&bvz&7`6r$fw5>jPcr0ilo=Q9m@igOEkLMCR*W%fO=Mg;5;&~m<2YCL8 zhkJkcTw+YXQ;ugI9-h2ei)TBYtMJ^4=K(zX@w|$MvsbpA2c#i!Zb5tm-s*Im5ECDd zcNg8`7}ki#V=6<(wHom>OtI)zO8k`)pQ|W_@09S#=;Xvlvq8dfA@9XG)DnMI_-{bE z#79Vfe` zak4_ZQ{;11<_+H={Ap4)S(3h%&$$x$bzSn#ZQ@!#F7>_gCkel93kO91A4++0l}mnI zSKJ^WezWBFAA;+;;Z`=ob@^}_N?f-U&bf(e`7{ebyg~ARweaiu;&Rp-&gBH_o@4Mv z2aPkK2oL1ugCdyan~;&g)n|vz$;Sah5Awk>zsXzb<6T+ z|6@I|?Xx`DrdSqCpLt-JQ&-kC>w{&?e!#ZE_NMF1s~3`t(2MUE&4bC4k%tFGp&W)d z={mZ+Yg6=XOoJx8K+A{(8{^Yfpan+;ul5 zKhyW)BS$NKJa+ATdZ;2KOTS8RTux_SL?@pwd(iT_vLTio;>Nt zHKP_B{^yzeOqq`N$v`~g@RZ{@8&3b-h9?g1 zjch!_@bIw13_SIC_?>|BHnvypB(VPA_{D-Ge#j6K=W!%)KS4;Gy^_R@93gS3L=x9c zpwh8Rlf<>6aPgxHN&F6zOCDrQB68^>5&8XyT>Qu+5&7ALB)&F<#03~hoQevGU#L*F zYGeV4b5!1&JR>g~VP>u1`P` zSzI-d#3huFxc^8JKNU$tE;>l!3PiZLZXxNHAPE;YY?&`EeL>iQio?rP$;(}W8$j^%;@wu*bEsKl}I4s-hZ(Pc5>>u*F2 zG2-j*K>Sqs!aO@dzW$sND}Va?Nvv@F;beiMcZ7WXdE~_y`s+_3vE=J-AhE*r$B)xv z|hfBJ(1`cu?!{aqnexc+<~^SlW8`jfyK zNRQUO^rrq!bT8;%;;4a_pY$T`P|`i#F7{A_n?_{&)SAsRxXtQRC~$rFs4w!(5wTW~3zecOn%Im7FwQwVmVKH{a-S%qU6A_t(9bPuZ90%=2ees-B*3O+3&H-QSCVFc0HI4##sk z|IllkjB9zbLfa$DlMA06S2%1O=atj^QOdIe{Js9$;pey?!tZHE*MhH~@NxVP;q%n{ z6X5GBeAFivA2<322p``EA$*c9M0lWE5LU^_>R?%9s%F|!YA*KsO{rz@cmf$MM}7q|a(wzuUqwKOz$;v&NDBK_D`I`Nhyb(v-G z2BN%jSR=uOyx)nYo|4L|;{|iyjT*-;FkI`pdPP%1`+s1WwXbV;%kAH}RynU4mt{75 zH?7lK=e*?bJ85{aYg}Km@gGv#u@z-sj&=dxciN$2tNVYYY7K6d#KnnCE$w;p8gSLC zT=h9-E$)<&kUTcAB~2}PW5(n)H!aCimzn3Oo6X&E*{G^-;I*;sV^(mT6LKRZNSIjE z=}T0BV$LJ?rUJo>9e1Fq3q671btl)7s*6IL@F;hDj#c%rY; z&R+l!SIlUO?8IN$DWBNp!?s~{`j^?MIK!Ui?}U))w&AnRyxvZ=#!r{1owhMA$*P!c zoxDeZy~dtUEv&S8qDS1otZ0f*#Y#I3ilhKCRsRZma8i{$!k=pgUbTCyVUEW4K=2|b zxYD+h9_~jugvP~u+Kt??=Y{o z`*gtOtRH`~X1%j(sH{YJU^z1Y3HY;PgJ=tpOu(Pc5CL&%^+&B|L7STU=KYVA$?Scp(9bisI z`qU@&)5{?K1?Vu|`Wa;Rc53(ejU9HKB1{D#6{X^{o(EHbbuXB59Hs*s=b;Ud&B=jswvCaCWd67L|$@N`xww-n(xK*2aa^rq` zg!L;3O!ZyQ=#PVal=T}BW+R2l4*Q&W_QVc*D+t$;Yr5~~0!V!nZ1b(Xkece7=(}bC z8uUUt@hRVaU)&ugKI8Z=OS10YINf^6MC+vIS#u969t}uWe1P@7_#@Oh{!qjE*+xIA z*m}vFe(r9dcS8J$#O&1X1HF}@r&zB7Kb@KAK!dY-po2igOrO>9^10X`ux>=*^t1j4 zOosK7jTfP`--bAbT!)bU#BAG2yhwGNUC`-6Do4-9P;O|_y`}wZ=VUn@G)?9yb#Wlika(9@_x!LhG%#>Gp7IQHMRz z$8tR1I;q22)`5P8Ht^7fi|h*PDR7KN-#*K~-yV%Z^I7+Ah|4qWDb~{nnTw)I^=*Z~ zpKq9F_p+V?jcqCoy+hj8y&JAa4}6{pAz%*j-3O7GNrVSZAl+cSJtE7Tc|a!vDD zC$N{3n=Rtj4SVc>^%`Q2rG_1d?B8Oiw%dL3?6g-DW4`YOJC!Qz-hlQoM&+p(y&%1uiL6Ws|!+z^%T-+d&-ksK`amcQn zw98IssqaCye~yyF&@<6D%T8Sl^+xy>Acg&CBnxcwZri{Bp5$)=1E}A(6We_AsDWw@ zz1r>6`F1ZfhYRdchd|}{y1Yv$$kW9&Xj&^9hV3oRJ~0nWeKCnZhCRU2GkPQrd? z9<~F90j|b3{9b@#fq#aL8{&Tg#GXUn-vSl@{sQo1z$*dq^3J{la60(52z?#kxe(hX z;rW1gFJ=!D*c*`YdIFw_cs3yAeTj`##H;!Qka9l+#QQdz2OFxu_c$Q=t_K_k_ya)l zHv?j?C%X}l@y-Usp3dlM39k}5&+t*+DS#c&Zwz23;tv31{GNb}mjXz+K0v(Vv%kT9 zIpuy1$oOvoGX0kT$#+1)_euEGfY_@T{X;Hi(D1bpuTlKw})DZmc^o{D(;0G9#(5nwCerGVsH3rKyM1V0;)HG`(IV_LQ02zK1ko0!}nf~j5NN3WE zfRz6vAmcv($awbvGT!ZgY=<`jGXAxIjK3YQ9ek?*$+uL(O93f|e*;N={!Jw1jRYj$ zV4?Q|q?}AZ>X86QJ-$R_#{UpMjQ3|i#(M*hdb|oqxi0`R{;vS3$6Z1{7m)Jm1wRXr zaw-Kc17tk>^}dob1`zTm4HY~K@NDo?iSa1szoj_v4}e9$`PT!GUv)Pi^|%?3@_z(K zIlF{@2_VyH0%Sb?Jt*^WG9W}}=L0hS5J1N7C*e6l&je)rctGao3uK<<^8p~^zX8a2 zuK-f+3xN2a{WN|k_i;eRzZ;P0Uk}LqoG9|O|eZ-I=TUjZraIUwEr z07(D74O|L7o}oZJ+JTH8e%{RRH3FHRxM7j;!mptzzX(Wqc|iK}HYN{fe;i2qpMms; zbLb4`&w40U0lE=c@2e{0k6#6Q2h* z!~K3>C-}ZBc(>pO1i2>0bmI9Q%y(g61b79o4D{u|t6`o6>;s+$q&_??1W7l68^@V$ zBZYnxjVtwg5lFp$45a;k0_pB1ApRz-!$0yh1Ibqdq<@zJ=K*H{=K{wAnO=WJ9}}+= zeh;L+hk(@QDIn!O2Bbcp22w89(kZte$oO0jB;S=l=(BjGm@fx1UM~XDogYYdX8@^p zK9KIXgNF8RVs3`<{zoABUIId|iO&MTGV$9$#`~9mtS>(UWO(iXGCUiB3{M@9;V1_( z92WuU&txFO5d>a<{pl!E7S@LI;fBXU<`)b4fiqw(1kxUEtt)^4>tewY;9i(fwDa}| z?iSo7c)Q>&f&+q^1$zZM1lJ0#7OWQx3RVbGZ~9v*SS;ulED|gf^a%o#JJKOrg=?jR z2XUstgL1CIGYRJ1;F|~>0Fq9<$HCkS91DaDMW=o!|M?X_G{yOTAo-~Wijay&Wa0cm zBqHfd%+)X-6TZVhnh%P3P|SP9yj#q-i+MoIy<%P~=6W$#h`ChEelZt{8KC@I3*~0Q z-+CbONPY$ILf`@_P5pt?w@{Gvfzn@4ZI*@oF$9kEBZ7wo4*=n3-XM_awGW7VnZHNq zyM?|B2wn4U5&D48Hv`K+?-2T0p|1ua|K|sVULo`aK$M64VxjwmUIaw>$oC1|68doz zE|igco>)XZ4+E*^A>abg4+wow==*?ZZ}RsDeYene0Z|X+-vUHl%pVZ@&0^mRJRkH9 zp|2JCYT$XG*9$!;^a|i~&=&~3ROrRPX`uUsUL^EF;8f6kLbrr|9QkYt=*NHz-w`0g zcNjPsbk=jE9~Allpda)>q3;v=Uf{W)?-BZLq3;4>*K+>tLcc}m13={c{LMn|6?zBo z4A9pKeYMc*fv1BW6ncfw7XT-KUMlorq5FZSfnFr^LZSPB<3YECejNFn;XMXKe$GDv zROu}ALqK%RRJkMlfY1klKG638N#85nL=&&-3(Dyb z`dT2K{MGnJdOeVO7Llk#Ve>LxAA%)=LN=3gSylm3k0R|G#V7!X`6 zSd9Ele!t*uv?DYR2(mq*xkAt{XbB!hy-oW;!QFxbf@=jU1pR`n|M8c{{^XS`VnRQR zdQ!;~+$}gDxK^-2&@X5S9)@G(UU0YIfZ$re3PHc1C3slkVNh_l;DF#-!3sgYAb=wB z-qhi#eNxinKID7$Db4c_&}laNJUJfVhj7Qxx#7d{D(%gF^~GZTsL1%8$TR!VZxplH zf4)x4X21C*VmABBKZkry`DQ=)py*@vk6(v!O?~`mT=={~Gx*K^@vn;6>=!QqVZ~?_G{^PJXk$`wTIg{oJ|2Z}x9rA@*j! z_KjjT`?EhQ@oDx`Uo85X{nKkD`~#w|YNU{+W}h`bgr+`bKlPnrHv6Zyh@*NLgUGY^E9+K`<;I(X0yNf97#{JpILQo!Eg32v;LxcvtOC>GBlh0 z$>%V?p)K*DGsB19)zEyzuZ-4x2rJE{leKxHm^V+=<~lJCPSfU}!CZg_^)NaMe9nUT zTib_^&{JSlbWhQJiL;Na-~9>U!1Y z|19J=?W^FA(|nbSe*|=Q+E=^m3ti@Qy4|q-lXk#1bFIcH?@gD!dtCPC!=;n|w=Vm~ zU1qF)r|?(1+;gw6Qy%wfJI(W4?xQaI2VC)Yt}Fc9lj@ZBKQ8+_UGZ}b>Ki9Nk3Mpm zZ+Dsbk*?Fe%jF;E%bfPN!QeEX?g~FYhIHEF$let5L|6XEb@6}EW#$DdPI=`n_q8th zSP4wwU*}4%LoV~RF8LpHnd!IFe~&Bwa=yiBzt0uF<6Y_TnoHh1SNz`PivPP^;o&@? z(?2V0E_c^gkk!;R^!K&njw9SRhszsdossC}ku4T3nNk-jX{Ke7n7ZBwcO0+m*<^*) z)wETi%7%vUw6NLWRMmsqb#aMlczsuMXJk`vPaobDXH9eEN(ZCk-old9D|%1L-rm=; zA)@bF!Zl3JYkCo^rIlT{2d)M8iOEJVE39r#-Vj~ifGdZ?(O6#uDy3~=Lg*S>`qtC# zoONv6PBc~tenUWOFFyTQWP=w z#X0WVi*4wYl8W+)-JHnYOK}OEdJ8Y%)s8G_xG0b}(sizfeRxF!YMWNDM^IdlyUApQ zop-;vuEtEUb6=?mJ&~vCTUZEj-FYXA!&2P48||>*Q>bUXVEz{%k{B^!IfOPhWp`!3f0U_+NhWvua}1-IL+gme!6;v0FvDj!j7t z-UX?zZw$BhMc@XvS}sMA#-)9tm&fWovMYX=N7x#c}Knv8< z>dwSky;ZpSlNUr%AvWx;tE)jpy%p>0aa&}+^fjvcOxdnhMRU%Az7qYDNT2S7WMe() zCB4}kN~w}YIvbbkg5=C0lF&P9^lakN+sbU58E%5k#+vc+?97@vuFcIRZJpyz-poSu zZNS;wv(d?Bm+gk=Z2VcTh|a7Sy-wb5oK0x@WyaY!PvMT>Y)(y@NXgE|CYPyavrf6? z{*;(fbM->rAS@~@JSF$(SIDnX?S8T+F5+faOFOSBESj9{oUS*jBO5zgBe*k`6^Hwl z;xIZmCG#%MYBfh$Wvp0A<}IMJ%yx5>U3xWDGH-t7`m1Eld}~=%RXDP_HPRaks~do4 z&rPjb8~QN{oSjwIxymZDK682dvhFEBMif^N<5J));f) z`LoOC&A+&Of!|+VS_X^RrL-+8EuA-auHQeWyljCY_}7li(1%q`O-T;~%k$J5uf5GF zDok^!aWK~2EFQgU`SHVpwLxnS#^~9elC|2Vmu~PFGh|x)$uu>B$P7si{e;7ffz^%1 zltk_usNd((qQevW=c#&WPQS6xuLlXtIv4c z^45wxEYGRuAmm|c!G6TrHcLXY%dKePaCK#4rEP8Xii3I~9fmxn!2mXUV9F!y5qVK& zzrIL&)GcpN?% zcVe3!f4fB<*U9-5`gQ(0i113(D!Tb6`gLw>K?LJ*r^jAdKPVOl{>eK2#Fz%quiY7e zZh419-db@P6nU!=BuvSrJtqE4pxyEoVAB8}?wjDVN95fCd9yVs<-f>de&#oSY3bV` z^Y>pBSBIviI3F^7yE>yWw|;&u^y4w*?e=Lp{)#pZS>8G~w5*Tt26(r;Vwb#Kkmq__ z`MC`fed{@Cr`RBGRprX1wv$qkcY(Otoh~mW3$hWVJa+y0xaGY^G74`J;`4*K8Xf;L z%4=D-t}lW(amyQ!M7%^?9lO*aNxx>4$GD@lTi!#W&-D`C3oEq{Km4xHuNmd_wREq? zr}Sy^<_EN++cj99yFy-);F8zU+uIchvo3(RGK<$N!A-ID90JJG|p- zw9B;`tnE$ml7x)%lzzP}t!{Zyk!P~WZ%$F3`oI=`y5-#^@_4oepW)3K9se`xhfabL z>6VvUr(GKTqE|U2=~tJ$)}9RrXDr;W=QhHjYNv~0kvAaeu?zC}>fdblSzPiW9TI+bLBvxAet!Hi$*ZZZQTAE*6O_W1E&OIaE}MVJBLhz2-_jM4m`WiB zpC9k8_-=@__V;0QlFdJc&m8ulBxOlo@}=n36pa72a#dw>Wm9EiLvZ^a76jv44+In5 z&!WE>j0X;e66Ie(ew!@GuSY1mCjMC23$;65F1UG>2R4btYsV4Fc`kD>p*mP6 zo({(M3-f+RqqAV5(7eS1yY~n7fHt^4aKEzKsafKIy+QkRUnm|Kgj{}77TQ_6yX^ac zvcV9}F|&mS6JzMQCb4LAO?=qsP=cYhDo;EEF8qgTJhwZPSe#FYzpY#%7{FAQntAsr zaou!sE){YU1Ht&C!JUhD!c{Q-D{YhRdHhAC^(!Y-Hw#Wear^yHaQkBmuByDca!utm zmEkpyGRcC8ZT{en6R~{6&t%jyYfiAjv9u-AlWAF06Mq|V@CfX|_IiPe3LQhwIkiia z{}pz@_=}y;;9^`cfI6z@NTB;#E#$O?xc<5}|U+5V4{9q82#2T=c^OBgGe;PY0e)Y7Xc=fcx>UiTc zUv>PPX~CTnE`DZR z1~$A@>3u=NOu@fU+PKDHZFB(aWFm620e<1Z>FIzuik4#t-i2lp>6 zh9k*|$fm`THQg0WuqOVGn#5Lr&CWmt0)s%7--6QodSyXjpp^e>7gQE}qv`6(L|`@Y zMo~>7P#(A(2W4@(zH-A57@tlvp$t;>#dD82_FMoT;21 zV;zGEg4;GwF6w1F0I+B$oM?Cl)cuJ_No{{MSzVL>(+@;Mo>L zZ)LGgLO1~xDs10eY{d{YwuFe5pxKgj$o4mL3U0j#p|D+Q<%5Z)gTeUI1vf8620GdS zoxes^6Xm}|zl3Te%142amMF+T`x13UNP(hYqOOohft*=@2QbF0FVLbGALeBq! z7fvSG>WA<~^_QtURmVKF>gso*ex~@BRt{nY*_5EcjI)vsCM)R^hougxiT^bif3qfW zgI`MD_D73r5*v%Z#R7*yW|uDVHz0?<8BAPfcoWwZtAYvHK1bDtingMlc*18ejxU(e zbU3)rhgrdw1}HCZY=7Xm=QI@wTQD?C1dg-tpyoKH3J+cmBNmU?g{R;fKQ)RyR*`Hz zbZ4Lx4G0PcG==ErRMWr&;hs^ukqAobj{0eTU>`WYw?CjJ2<_S~U}{ko%V2yBavWN_ z=g^G^#s8*+1`eSP+H0zxL&;7=V(Y;ZPcs`ojVLH(^x7?;v(vI#q7AxzbcCt(Sex#_ zzuMiwL==tXUt_1EKDZwC4$rRhA3dwRVAWuI!3^quKm}D=hq4o)L=@$$ydG{O8mMlf z{6!=l%CXM=wS$uVYf(Wr?F+IEWBxDr#zBM+)j72&tlh0bYU-UQf{7}KMg_s7T7)7{ zeg}k_2G}%efjzLe5f-X2A<7;{9_JQAkXMqtb3y|$IJ-rEu8pJKw%c{YZZOf{Pxq!l zdGnGAh^<0Msj&FFu&deGplCDEAp)8apv*4lqfy0PVWI~Ngb6bEJ9qo5sZkja{=T^ z#w3Wmb6l5%GE@;J#a~oqU1f9KrPGb;4Sq*6%Fds|Xu5j~GL}{o1N(HYM$|l(8Z`%! zQNs+Y^hAM-uQ_bW=@W>jeMgk5#MZ;k(s_ub^KYtjqK9giO_LyrI>gE<5hq82&{BF34IqqOGOBD^?Z3&dxrow;!7% zvB$EhTkpe)ICpkMt(La7x^>Y=-^NHEmZn!=CTXGGwzcqm+>*4gpSzRPPOXKO-h$B= z*??78<7gqg({w!#&%GEBw4o)o(CTQ3^1Y$+{gH)SXG`umOj-El8F<(y22SiWTxj8B zzR3DWpWZo@vcf!+45O7(Qg{D`b&)=5RHJ1sw4#w%o$_sAyLiV%d8<7VYwd9Ck2n>r zQ?_1MT#L6-6|~ZKQ&?I}B!|`_YDGI*`XX&=QYN_@%xubS#XNLg=0 z7m7FuQPxm6SJ~l&`_dd?ZR}BEk-TlrtkKw`cV{Wps#<#Ke+Wws##4s`?hDGsT++IE zvt9}3URyO4r*{JDus8_ZbXwJeV+@fg)xI#d&(;RyyuK}~TKc+?Crt)Slc~4T=>lce z3!lU&kk1Q(ZwQ`;u?U}w1Q!Wb3pNYhAb6|b#|3##4j;}4@Of46O+mBT$8&f1@H`$q z%LJPRI|a>czdYxM&zA)E32N#)|G%+pUd3gl6;oC;tmuh#ws&H`H8$K%Szuv0x+L1) zjbhQ&a&08q(;nM|{8(bv==B+@js(+@JH4c=eKY^foZhxD?QiCax}{63p?R$76*H%I zwOJb%Krd^pWju7`DxE=8!)*t+Sl-OKs9Dc63~S7b3%9t|DUEfhd2ylPPo2%ybILAO zWwiO(3OJs3D*sgZ{o)7upz1N%gLCVAOgw25*0a&e;xkL)VX8LT|Bb!6*c(*$oV&5_ z6Zh!DsE6P8(J!}uHwvGyofN1ym+(w^HS40rp(&TWvR-QFrhIO8(M`E?)1Q!t`jU(P zsL&sG(M^5f_ScJfOg?V@nOW%X5xQHBA2OUdyhHd7iXOSJH))JlYs*ROc|IARSF*Uj zPwfAm#r|Qjf74~pJ13}z$)BH)^nIu4T!DJ1bm0Pv^%1dR-dy5!Rm<2(SlrgOwQSyX zs0*aMlg*EdYxJ{q&g>=gO09}H%5jRLC39w58)qwF@WWzFCtHA%JAy>vRkH0%6trxpaz(&D4K>7%RD|>JNpQYyIdrMNyaf)#=3kVr;$WUO#hw z>70_%k~w8FtXcoWsot}))rL5N_#Mf!x_Y|T`_ZAwUccJkyI`lSRmFWR>PX_S+Cq}n zw&M8Xv}gq_8OLZ)(1L^1Bwa480$Lb+0uX6ay1b({-}X=?7zAs~+!g3-)5`a#E?%1U zy75X);&9AztOQM&S*^Ca*M+LX)in+Em5o(Fek9UZ*LY=ppkZ<8ly})-=Skg@$DRK> zRJ0sRkngS=6OxKKV#r>&e0S+;)N*JVs9YAZ0u8fqYB>J52F%4vy@>tpQr_0fp}k(% zes}4qbaLpJaj&-Oe4@7MjIF_d6ocw;cuwXII2@d^hq$wQW6!k_YY4gawrVqW9)kB2 z2hnRzd9*!*U;o4~cum$(XX;=$b;KW*50=(#!7fVkotWAajfmDCkEK|#&hCju!myox z@xM3#si~Ib3zCd`r-w@7Y*FbPi)W8JC)ZHEWF5?}8DgA|Pom}w5r^4jrpD9|B8HxG zT63~FDJZz$pO=2hTAt#3$C^`~7{Pa1^M}y;RQ)^U0O-ji$B=o5i5O-G&fA?DH_O>j z)!jRhwdRz=lQLJd#!4}w=hvWjN_R!N*T*_C^=S1ZoE}S9n>yRTRkdtsS5FJ(M0@(z zbw#X>Nay;Fn0uZsZNPzK4Q*CKAf!9CAYtCG zr_b6HX}Pw6_9gD`R*-a>Bwr4M`F#gF_u+7RSIhb+)x$eJVdJDPzN`x`?eA`_$A;b1 z$svn-GG%Jk>IZWT_qeLBT3Y)$d#Qx+36-NE*{7+4Pz!hD^r?TEZZcjK$f*>+;*56S=mu?}UhSOPkhCx|{F(zfAypDW zp$Qx}rdow;3hh!&ev;5xirIeBJ`<0v0GZoaGPN)2RSK!5tV0RVZ(vQX2N(g+G)dGe z51Ly_m`X2M2$94v#~nB_nw^_W{+i>=mM(WD=NVpng5@e{zSVt zo5lVlr!Gm_B~yzJ3VL`De(Gba9N844J-%G{y zGlF?m%SU|cKH{9bQZfx6PtfIq_}C$@-%OJB%j*x4B+Z`uZv@?Fvoxj)YBYk3S{Y)^ z2&xl7xz-gQ8D@V&kD3KH@W!YT1uH(%N_sWM!vi zB>x-fKj0)Fo(wt1u>8tqX?$5;M~e>#@P+a^KS|OOlmCsN-#X*K7>v@nR>Mbz8N*ZJ z4~c0JqrTgNbi*{vy1_TqJx6SHiauLyy_(D`uBuUw$68}v$H<(s#|oR*9-FkryiS#g zZg3?-r{A6wZ+P}KACJA`T$}Nq*Vyy9!uGyF6O#X%#0s|zsmEijHm^CNPL8#)-n<)C zJv`<(^|?}1ZMRi!GOsb4l;*#2)oQaen%C_%DXjp<#p({5rOCX0!6v2owO6bPq!gR{ zof-~oLlwRkZBc2}gJIbxEUJ*%29ck!kQvV>3loZgc^$Ax*O=FYO-if!jGzTJOPZF3 zlEu8vl<$%}JOw-TIc~VIkBLtX59W3~8^o?(FhiEzD^^{$ zPibplJUo=ofX$K?1jE8}3;CedFt2ymq_iO1C03uYS(?o2H*HdytA~vhwrpv?($qO! ztfnSe%Q7#=nC^{TxY0^uMmM9*#&PD ztD8^GGGMbbn%6sRQd-dO7AxKdqQlu_ULUeaX|4vv>Y&ZiWM0Rqjb6+M*O*toO-hR} zBZ$|OXz#Buuf}zT2wN!vJF^SsIlg>$oSfxGo2Ajb-er^0g8oUdy3b~5GOrKYq%>EL zh}92lmL~H$L3R{mDCx%4v$m_WipMk7Gd+L2H#fg9@9g}SwvGPnwozj}Dn_=6UgwXl8ISPebZ%VL zmB--Bh2iwM@Qc!^@fpUACY?W8@#Dq|@@po#ITM7DhJdfRM=76hjgfJl^il~p$0-0` zNY8c1!-BZmm2z_~{m?4Pc?xDsut>aMyoVXW+Ki=Z-D~3^<^0_40s@}*Jx9Ca25Z^Cw1p~qwS@?i4gmpdl+Lcnm}2$q@Q@5Mi#H(KbOh8HDgi=q^! z%khqboY5gz--X|ZEAVg3C-Be8r`~ONqkE;PF9y@Y_~liNV2l+!iT6YJy@}sFh-auo zf5whO*O>H)K+?w<0uA8G`A=9H=0RcpzAzWO7u{33HiYp#LQtZjPQylrff9%DT9HDJ z_caB1Zzvc|-wLi5R$kzubsaNZshmfZ3q2#Wn~`)=P>ixq6-t1b*}GCR6HY@Q)MJL5 zp5~8&%qwm@=Xz9@m_YjoGAYkT_Dq-x(|chmpy_m;_3Sxcot%7z5n%?Hp61snrr6^t z>Vl&WlC_vkzvoO(BQMGF6n`3~v%U%K`21M#^owXWLm$U{wvlE=cAn-k#4hjf@htRs zCVU7EsoZEvpYS+LwsO{K#*G;fd79q`xAk-z@O&PfEzg8Pc$##7B}}&ab6AA#qP~G5 z)RAZAe7KOE2~XfXFrCAcm`_Cm$6>TiGk%!Spr`ql@atjvb%p0i<<~;QY|<|tlbZDF z7Z9fo;=LlpuPc;a_kmUUbp`#J$YEOpy>6gfYm)KuJ;)DyJk7kirvklmPXki1i5oqD zjS8(vhRqDwJk2+O{i;-U>kMOU1}UEAEo5mza`NUKm7GoNLV3-iI zX2$ZwFTwa%8dtBw|I;r(?d4gu0k8fFs5bE+tj{EE9j*N!S*L#jZKWqd*L)@!CCu2z z)67$PpQl1wJd@9Y{wi>jc}Ix^)3BP+il>Lddh#Wh9;T?BD#6b%B1});)BJ6UxdTb_8?dURx#I!G=vij)QcoT5Ogs}g z@_EYoDAk(CL-$omeN3g)S{PMI-KA1Wh3q2?nNGAjnP@s~KCaVdlF`A8A3V(m=>wzr z9?#_Mc-JX&pLw$;8CHAn(3}f)l`?Sh3!Cw5!(fIGp5~cg9LB=*8AKUBH?X5@il@VBu+g1nf%t zB)fICu{I+KPxGr_`vSFi0J>ibLq^@t`5J6gVn3i0+Xyh@4NvpwNDt3m1m*W&RYBRi zQwPQHm?4Cxc?~j#3d)0?$z$-Y6Qk6;S(6N_>Gpe?Z-=D{4xF^xjAt7L)6@4f^MkKz zsmnJIpijb(IY7UKjSA2=bbyS2O~^|+zF(q{eXLjzJt{!^h82QjO)@;Di|=VJ0gDRI zL!QZ(;#~)*#k^UQ46Es>dzxvf0t6>_*^E;SgXv6pns0?AyVIVtJO~lBwL>(4r}`%| z*a%*}F+2)hpKochCvrUq?9uo_=!uN@DS5V&XVh6q9=0efQKQcBct$aoupEw>2*UzY zrmxX335I1bunrk@E;~n4@%BmZj`U9>6plP+`n|v)$Rj7BS2KN|F-^*u>a%66~Hi`F9OPs@j9w#8sVH#h0_lMdFkS)v6L_z9x4+$eZ!`+Vppc|kT;!IrYO^C zIa5bZpJ+@Ia;6qezsQ(Q$925Z=NQu&Ia7-)-wP1`dw4TujPG}N{WD%ipPTyzVE8a) zSpohr<9)fHya%uO6}e$Rj%UOIMC0fpkb7VrF%d5#qj>X-;57`>K8e?2PjTJ@K$QcE z5d=>jKlMz&-UFl0lgBJ;jH5kyKZNlPu`TrE@&1Khi?PU)$F7X(;=rxnW92>!vv=4C zCf9kM^FIx+Mtm0khd%=gU%{AUioOg2Yr}$q$(~WK!oYr0LE+f3qmIGA?@kNGP9AHG zU{83&D=<#O=nnm~;^}7s+3%&k*7PY3lg}!qG9ylhglQeHSc4&n9onYU(8A~pEsPRc z#)k(+2`#4&Xhdl3j18mTGo9TDDn;AkJXZV6qBNCy@=PYBvBHzb_Ki7{Mx32Lg7@sq z@Qh$&PkTS?{GO&{z`)}O7)-wDpQ1nf!BjZ?^A1yyHG+vbViaf>l;)e@LPY*PkZ1=1 z`6iX&JpXafnZ(F@`9HFGit?Yg-~IUv91AmoX8Fn>qySB0?&uMHpbuY;cVA&~p|=q) z@M%;ha4UX=m!K3z@p3Z_i(vQ&UJ^7chJmL^+(E;oFg!sUXi<0>3{Szp%wAXl!(kZc zWnm=@zlVXzUAP2>w_x}Bz=%8OPhKH|w>Rm}-c)~Jbov9M(;pa}{=n$;2SxR zRBvH)dJCh|TNs_*!szrCMyIzh!dvSIda``}Bxu%Z%=(F0Ecpd`n3LJa8`L3YCAjaNkfTHZurgz zvrKB3dpeNE0G^HC#SfSIE`8u1Ef??Db^ZOn++EiG(La@c{{E?3{&9TDZL9nbe|gwmpq)o&i&{Pjg2-;*1w zxb5q8cYg8Z*8hC{yK{e$Kk{$gmA4PB{NDJnul^%6`PITNtpCLH_J_WD@j&qSuQ@lt z>qffpyB@z=@%tox_v804em}zR7x?`FztI@wor52*qgjMs2*0cG>%#AP{BFhXllVQ1 z-;eP71%7|P?=AdBBT~-6?;`vb;TJ?)L!`yY3qGpD1$-G@Gd`~&ZD{{KxaFg|slXqg zgULq?w}Hm}M@8NWkr#v zWHG%N$Bb9{#rUGm3_+5Y>8Q5B>hJt3Utyzn+L~$+>6! zQQ#l&TXFAWXS@b%^?&So#@8S5KKAaLu77C7@zH<6yZ@@if8YJNAO8KT;dOJL{K%rO zK6C6ng-`uupy}23ZMpYL*FE!Q-p%LFSv2gnkImkEr8Q&XEu+>PX&Ae>_b>AbM{oSv zx34dMbM);KKDFVQ2@jSI+%oF!m)=*f_|uISjrsjAfAT*_wBd-9v+$dVUj=>*__gD= z1wYmWpT_U2_&tsvuReYqKQAJe*VzAYYKgL6gYh=z$~-D5e4N zuun=7JE-E2LnD$neiDc52a?22p>XYiktFutL>32Mh*#A+hC>d^gqb4}GIMw$Bo6&Z z;y6%9?8%eFZoQD$e zZVXB6(+G*`5=86KOwOrLN4}7#34tNB(Ym6KC;h968p+RV#kprc9Mm} zaUV(S9Se!QOp@5I77}OtN#gXs_~;iBd$^((d!poGuUQ;&$$_LF;3p2b=0FmMUP9v9 z07)FAi7XB=N#dNgkT_B$i33<6akNhohyEgqy<(Esj~6Alc0m&R`9e|yE08$!6NelV zlZ%6D5zp}^NgPLrLw2)C;$T2X3>!&z;wQ2=9wmu`Qz4nUmSjHQP!G++9epQ7ohU+mi<~^{PY~@rMYjdu) znbwy0Npo-Ju@Omp((KIy_AwNtOyM(g%B64&|I^%?31l`Tne;dF#p9#5M8W{xxg%S`EK=0&r`ubBwVW^ZOd z@5mzGOl(qrJZbuw$;@owGc%Xj>{;LQ$>zVAhs@@`nS0D8-%K=Svp4gLZO|c8{xKaO z&-+(ep3Q}x!qLNhw<8uV0zW%63%``^y;AsC52(lZn;{-~r|p>!YX4a;r0`cI^<*z*vhcBfNa0(epS8GL@> zvo|ps|HT>g91Y!82_NeV^%%a(x98nzr?$=?i@^V+@U#9%;m;7RF7UtS>pEPL-;?p> z2p1QBSDgYM2X2kRC-qBGo~Wb355E5pKGrkpG2vR8%x@g9zAAj#(v$M$g74rd@LdhQ zZwepFzj}D+Qc8bK9T(WJq!SI)O3-@^CmVEVa!QKDf>G#1$~E7ZBJucdFxEcI0v4^WQI z%JfC}tRU`p#5o237FC_`Wxl=tw!s!UZYacV^8hKM0050n4}^`0F2pbhG14!oki$$C&mhxSN+ zGN_$ZE#q~nc=uu;w`^IY2e)$cZPDfoa$o^n!{)<37%{uFzDp$q44BPg;m4Z_gY#G= z(3HyRgCuRhSQu>j$(`i!jvE>BPRbqcyWcx5cfm1_?})rUZ(+#yQLiVb_%yF|$U9}E z?|0sda+bl6`^9ZJL67&M+-Izu1s+I`dGqpe&x5vkH$j>2dp*AK;A+mP^S~Jv4iG|x z4|pe!^ey&Yk+G96U{hhVkTMXIf9q^95 z$$Q>S;5_8L06M{wUE5;b({qo4V*)tFTVMv;hw-H`|bu3xog*Wf#h|_7~M&^EC+kxD_W699N*V}VX zSdcn>WUcptBVPX@@92$)$udMshu1qYXUb{bnJQV9Gg)%StVSrJInxBe z0a4RTxDrS?^MK^L5V#!jhXc~%c2a^8-V(tS{?zKS5T@9q% zav=FG08(xq5DQ-u-^Bb7Cd?;t&jaQD6iB%b0l{B;zc$x?O3WVwmcae{ft24148qLC z37W3~`hc~-3n6zA5c(`G2h#omAmej1kn(eY)aQRkDt~K_0@vGa{oL+(|-q~K0gD}-6KFm`Gju) z>Fz-w-Q6qZT|n}EP|Vwal=nWNmka$uAj3UP%zuZF0Nfn|Qtq=r>U~hmcL5o`TY<~L z*8#-j>O^kU!q{hGHIVVJ7)W<>ft17ZiqUIKZ$fQ;`Qz=be( z0hhtNK+_kOX{`V4e`6iD-7 zAocl)(4PP@U2YZo2$1?z02jmE0wCk-eBct`7%_8f2EN6A1TF*rVIbtxJ`bcnKLlP5 z{_BCX?*Ss|C$<0)FB2~VGX16i!9VeIAfjaAPta?iKaT>b_d~!cxPK7H@P1ryE0F$h ze>UVzm=CN5e~Hki0ucohihvAHp3vVyT}HWo214%Q-vcSHfn& zhGP@(0_fQbtc08nAi_1_8X)EJRNPs>rNCnF%?47gAINwgE#^1SHJSnQ?|}6GMIiZ} z0>Zz=gTRYm|KC8$y%$Knj{*^tiE$uAP3#3S9@~Kz1Fr^>e&z?w@$;viq-9fx@`%*TL!;6Whi2Y~0mJP14+xEo0NE+7_v z^KS=YZZE%A=pDduFs}uU1y%sbzW|7)OQqK+AoW6(&Xp`>UoThzyj1w;&M#)e2cxoQ zc{vY!KHzj9GaKa{M|g<*N}>SBbq%KT0U*jl{yw4a75W|^@^Ahwp>xib{I>v$LEkKN zmLt+xj!-`GR|~yf=t1BN&=&xw087QbSnOG@FqfNOB=ka|`+$fGl@8SRIKoGNjsda$ zlYazA`eC6T0wVEL`jCD==z~DiJNf&7r0*5_9w5q%N;lGX3H^2;s>u9XfTRxyeKRl@ z^j@KN2z@OOPyTBBBY!=RdKLj0-vBPs=ktSD25p02NU&P)Ou?~&ulY1T_Z8FKX9c+f znda*Rqk^(IC9guv=LnuA_%tdXy8EFZ+fgM~aI0Xy;1z;3f@cU82>uZvqx;_pJ|y^{ z;ClpD3eFNdUl9Ff<(?a@C}*o+zhI*vI?T!*pQ$OtM{)|ki$tQkZwh`?knJGp8wA-N z(tN4lJi$kin4~`>xJs~2kY9h$e!Sp6P>yKkXDLK(Kp=iw@cn{)g2hO8+WQ69iku2T zzaTRe`3{S_LBZXE1A=P>D+K+5mf&Fsp`1a%-GT#xYXvI={eqU@VbOC?aJL}K1-!^( zxws7ZctGfD1uF#of&hxldm0G-+P5UW6UaCDurSX)gqvow?(=oL=c5ALEsMLntb+Cj z#mzXB3!2S(>-WUotgo{FM|-ngI$6wSef3r7L3^`adIl?7{07Cp1PW_D0&3P}7mItd ze%c^rvtHUP`k3`mZn>v?vmVM#Q#70P&vPgr{v8wlo}wA{X8p5A%x1mwS@F-TZyuHS zGV7Thk>|&tg3mX^{b%3@A8uQqe6xO8F7aj7E7>oky;+}pOXSsyJnl@Ty;+~EVSK@C z)+4uwJhT3Io5(ZkjU0zCyaOWdQ=*SqZ=5e?v%bjsi1N*P;$5gG@=>AtxswXd_rz@O zvmGbq0rlk`Huf;S!M|A+)B>Ymd)#bv+8W&dZyhm)UQb34r+(e*a8&`+1k{Wh2U@yHKO z_eYRloaVbB#%cb9OWp}sI_*E{lF!q8oc4n*^Q$hi6;{XWR)s1X8p6}U_94H?dEaat z`uN{e=VtcST$`Y6Ynm%pLbkDV9DG-$=AyG)GQiU)Tf-ZoII*m|jTae5a9o;8+d6%| zuqM|A8Y`0lNwGSa3XY?wc;uJdesF5)XFdVht*LWfS}p`hWyugdX~C5f%EIQntK@la z;n;>=E8JAW^RVSof$Gk-m66s+=SCb->$tALsfeZH7%|(@*^M)^^nss^ zx}pK;*$SpeL#(CsTE%3AtD4QigB;JL5_4%+f3!oyMsYM9obb@Ow2sA+aB=7LhhfRmU*l;R* zDu=y;{Gx&_ewZ|@))&7hYGn+kC9dno`FpN2&BKV&7Lrq=-5j20La(9)OilWp;+2tT zKaK-L7I>$};KIqj?leyb`#(5h6H@=LPP?S&|LX&5|24;0X0rd>kg&j zJ37;LC_&kdewL#t^e256jrjz4D)`deVfp$3awNY!B^Hj#{h;;Qv z`XoP=%)6KtX@|9!-a7RdU#`L z_E66+<;Y-a*{s>6{^V0OcmC}1dGjwWU*PwbmzKdoTbGrV&YL^e@1M7zbO8X*+L5M~ ztm}{U_Qy(kDDSB^UVEEE2@DTZf1ks}-5AGNe*ExYtO8Rr@^WO82K zzIP}bW?@N635Od4s~eMM^Y#fDKN@+xFJRu51Ce3YfZ-vA!*XgX?uOCkRC&8aPNA~3 zthJNXyrq~h7PjB?i!E<~F{jEi<5~>s)zb@kj5G6KD4p_1f4wnvfjI%rbj!Sr_Gt%+wgFNSh;abWg@^Jh#wPSpy z>gUJgJ)Z%O#>2%ryt|pBaVpX`l&xpHZeU&`0ug_<;&E-xj>Y-=eG zmuF^_H`t`*ye?V{tV?<&ZyDvatXtO?*{Je!ihf^h*RGnS;>1=~_mfc`er0&`f#~dMAv^Q`knC+?WkVz%X6RBX2*Y*ycXUd7G~LCP~7^h z|EPAkPcqE;pK(aiuNmdBl+fBO@7zymM+Y=mFMeKLl8{lJ(yzCr)h+K8kvC1;f9?xO zLGqSSp5DlsuHUG8v@4#3!smylC=Z2|-`BpW=ObuiN!Yihk2!t&8Sx#Yju8vG#%=#m_qUcdVm> z0eaY{WMjSG;*Wj275Ek7_f8))84>zq_`kE-x@bly6vgiJ6PWLH$`kTRC z-4+Wg^-xX*zRKq0?)ahj)b(18xPf3@&*q`{l6Q+KF0FqCf9Ka5edfhQgx-=6dt^uSBZcSbjpO zkrLjCPmE_k%jesIQuGbQ|5|zCXTi8uO9g-NN8tjY9Rn8*yWoz&*oaX4MCFN9g-1sr zkfHe7%6HJThM<{1Wm06ZR^$O}G1dGhRb-S_l?hz& z_0H7nGTvuX^HJ=ULU0xtzJG<9%?-ire<(GP@@R0!3;pMWc9sWOtm1z&^cVF@DE^oI zfyas&u?a8ZH?bhNv*|!^XYFI(p;<*KV$E-2F#bqz=i)_>RW=xm|0)>&f#NuNTB7M^ zu*fwQipoNv3(oe(O0TNCX3e8^0bo2r&7xp@>jC(D72E~mfrBUx6=?W^JGUM{{ud#S z2Fgw#6a_awq|{t|Ct5<}k#oT)#Tyx3XG1A8i7^aHFtKPVH6ijtX3#f!wpo5&9#>VjF~?LtR*Y5+P2$eDU6BoFN1{<5q~}ye}u(3QT|z7f?%k;C0Tp| zH=l@&G8rI#PM&GnlC_JfTPjcv(3&_3zu@NQdLg@RBC9Y(Ws-Qi}xQw zG2SEjXzM|gR|;Zw*?Qo_({|g9GFOovLe&m2bcyTy!9+uGFmZV)g2W5sozr~K2%#AQ5s^F{2<~ULo+VX z4yh{E0=L^v&iBsx{sB;-80z!SkO`ERfBEEJ#rdz zS-I-9sJ!!fL7|0T(3g@de#wrffwAnTDm_h3L)K_mfW`tjt^6NoibfoiG)y5*dD}1jPjNNero=CYWd%<>@(o|9p zi2>DA1{0?plBUw7Iue=ZUm-8nBx(^RG-6a|5t5?33l^&IJeO=VF*0}sR#%Ff_!D-O z6iWOTn__JrhdmTFitki9vy47h_EXK#0}kEe37&W~c*&=9!#WcZ?1oih^BJ~!Cuvy! zq9R^Zst|48tnATWL@bkkg*IzLjm^m(aiY93h1v9$(L+vY^IR%w{dnI7Bs_=q z%Aud#tD^Ly)Lq(KjKL%Yf+v1h_S4|@H-`lamY}&Ue^PN_*nHS{Dvb`>6Antz9F>1q z#ezyB)|#AkSUgiJa3`#g#k{=s&+a`ZGwKtlgjL$GbEC$V*Hng+U1c@@AJIumrNT^R6IHLH{VwMhq6n96S@f{|E~=3zFM^F`Ls3P&pD53_DeQpR6@H@p z8OC7zl~DW*1Ou$`pF5f<#VchPWABu~vEAP{lQ=r-m{inb9x49io092-$kACRnI!0! zC@t9k%aRai(WR9^pAPMY6d5J#S;Q6_;}!9_m*`?9P4i?()r6Y|`%f3*X&`_bOIVi*cTknbpy$OhnJdth=sP0hs=B%i6HhW#r{a`_40HA8 z>EEmy@!ceT`Zv<{R%f&p z`*IsQuurtjisHKANE>#paYKgQZ;Dk|8ZM7)fm;Wi+r_MwF0Kjcy;PN5U5zb$>m#wK zC7ZaM*X!bXY`wJv7hT6{y0OQ^u^(??3rKB|%?sfLjs{t>C4kG9BYiC~>={^v`<}5S zI0lu~mf`3^#RJ9ZqOQG8Q5VYH)s;q2%00pvyo5el+oazueSIxk=$+bizR>DMuq!vV zbarv05Emr+`yxtBUJ-9Q7K>0%E7a}jUWhpC>F;W*S>KIm@}^#FDu_fIdm1}BquPmz zMZ|d2C=OxfRbM$x739X_h1MqQAdJ>x+c7sEZ-D=ZIXen@m3C5p6Uvo6h%TyP$Er>s z?TZ~lPU1of+uxJBnUg81-S8Um&KUKoTBcTB7V?hp6^Ig*h=@x?t!n9I966%L>h0@k zjYOk*xu!d^N!+VDzxCzWU0cN8NSkC3t(Zix)zjCBE4EdDtWK_wJKQ?55S6P-vLbts z*Qs)}wWSN0$jKwxAf=6BOSb4M-jVU_pel!2p2G(V8};-GP9OHGGf8j@b&{~qTstpu zsl(<_nAfFuwr|nFj8?Ae>5r|5Y|?C!r>vNiCtPFR8c8NkWlSYJ@0w31WAAn^cGe>R zmFi_Bqi!J+Vq+(^(AGv5|xZB7#X5V><|ws5(3?=J-m0_BqQi4VKe(8 zt(0A*Qg|9R^z_6!y0$bh$wW^Gz}@C3Ss5%*=!|XFa<|ZG;d)!DUJ}ENJ=z&EvXoc~ z)T*c3E!6c|GCiuWn%os(k<*_oz^zK?tQ;(EtW;3pMq&Z|iW*F9y_2*z_m^v;GvDY; zk*tqU$FqE*UJx2Hho$y(x7D_6?%dG7K}VsYt2|@qiqf+YyOfYMRMny=sMU4YqpMK+ zBy&tPH%RqIk*ZmXepuIj8PdoStE>rRg-xV{Go=*vYqD`kPYz2jy=RSVY|G3Pv1nq= zzPLQq!N3_Kg3|?O3kC%11=k3!6YLP&B6y?Voq`Vv{z~vQ!M6lQU`m+}r6;2sR3K2>Jyp1nUJ2EHE!FJSg#?HkdfR6O}+1yW9t1C zE;*)tU+bce#?myOZ7%wBp}XV3v>zXE@mC7}9WMH6p?}Inj|tr!Ker0~t1kZk61qFQ z4+`C_|C2(0&LzjR$8P?kS@;XEorI4&9;RlYFA};tTvrPH*DifF3;n2zez(xwdfqE^ zceuVR^uM{}_^CSsAkSmMcjgRDV7=`#mOzvLOS9NNEAF$|9~Jv04);#~-#Ur?Y1q!d zC!728#D0y)C$Cgle6<#w#J=ey_R*8r-*yuFFQ3GIpV)^T@#BpDC&hka7W-GkKAy#% zTjcoMD)!uuND|Y4P4=_WjvNylI|)QQWrC{(y9DnM{HEX$!Qt|qMycQe!DWJ13*L;x zVfb!UzF5|WChM1X+Fn$Y&8sL~xWL+IaL#O+L4M!txz@(nbH!wB)E3uOE#r7-aa-F~ zd`WZ-jB1d(7$zmhLD6m<1UOhCY!%w_eIUszd~}L)csy6>Fht)9E;r6DrS}kTRa|C* zA~ImMhIFkIPxe(E1IsB^#T5H!1~mmX#WFE4Wm9KctYb>sl#WQ}`i|I?wyij*E-A&? z;|1B>dxe^rl$x@kvs=%$OsScI*&6$OQ(sGO18BrXAm{S>@D&_}=NnpLAYc%yU$`B7 zO3hZu7f$fQz;g;B{!pm7){ikRr$7DkOXif6`it@DRrmUt^GjhUnNv2y`e%+KpOxCZ z!D+|uND59lmM??37rifH2K+b(0Y?)izgmwzOhk(%G6x{wk(%CJV%SD`w~VaHu%O{UbBe?J1UzB|(9M>--HoGoeT>%@1BJZ7MaBqci1 zRvB%@G$g!8k{U3wNt&u74vrK*DEf-JhOqvayQv|t65pdY23A&9HP$o-(yeM5YbqN9 z)eej5z|zX5P@{v=)L0X$X}r=wSyEYb`LdODO)H!Zn^rW`2dZk8)<9fJP^)Siame-3 zu9o#t>sp5)j8i2#+fqrGJ6sZpbg#tpcN?aKQrPQzbVjJ@Zs#=YmQ>pnk@cA2+lU;K z$(HlgiXKUIRf8F;&Pba&-$H3v+Y-IjGRI%rJ$EyeT-(zI0Vcz*=rQypO;IADNPEmp zTge(DNnG01*^9*phAQOu@QXOR$U>2AY>a<7i63}S2s9d8*pmbSEF zVIh+Wv=NV0OO+Z>H%ZBG6SFv13ENcT<~BOI=}o=0ot(BoR!(yd#SKA4S3+uR4ISwL^h(XiS*_zQwW!I*bEm6e! z`c7u!Oj0#VBM#o^;<+q=%4MOIsPvStmGw2&wQh>}>Y*&V)$Ht6b1dvxi(-~p&qr|~ ztv{NHW-@&Sb~zbM9jm;U!RV{t>T`gPOcI*hMGd!|d456XzShanv ztUgkLZQDze3VYS&Hum(lc3@SlWnCwa0LVf%NtfACQ+JD5!_4B|UgN}SNc7sU`T{kE z6@^%2Jq~zKZx-6C9-fqie^^|?qH&8ht8dut=0YZV%#{z8jDfq;7MT6tyG_@Lzjux6zNNr;m zi5j3gmL#$y!mE`y{K`qj$z5Fh+0xLz9^bj9Ix%+1ZmB+ttxw$G#3>#g6zQ{g5Qy%0 zT8>Cj8iyq~VO#Y!oWO$YH7-)dPG?dig)Te>5U^hKS{9=ks5U>*ALlw!E}9>qyZ=+Q!=y3(jY>NLb+Pc&xr zQsos5=(Vpy#I9)2$B&`RRWN?j#B^rxt)|{c9^>+43QhK#}TDF+8`l2Y|wf*WCB3-xkcXu-EQEt`{-#8*u z;2HbFXRmv zn0M+;VJcEu<+VX5%86dUY>33z z`9*P46*fu^y8l6@N>!~kI9gnWtEaaGIVgiAY85Km(^rd_Qsr3X+s>$J?$YRy&D_Ql zwHa%=!PmtZg$!!fm;&l(+f-uca5|{Q%?>_NO!B+P8N%h@5LN7uhBFj!oUMnls`sv>dP^^>n$<8>2VN7B@63+c zgmh9;^oBpUG9xg_*mSA-DykQ!r-&^zKZ>r9n(OG~W*mEp*!IYWR>iF2YP<6PvrlG#Fu__p@Us=~! z*LY=ppkZ<8ly}+Pfl1wyw=MoVRJ2S%{&#pjEBk$vMlDC|1R7@J_Cfri+^AOEavVM~ z%W?j4bk=H)v`TQm&@9y;qw_cmvz(Ex9vnV43o{up7WL??PBlT&fZc!~_4Ji+`iV9U z=7#Fa)A%mNdP%hH+99-0D(28Xc?8P4OIcelhpzfKns=9;N+*YoDM#77yHs_m=Fqsh zrEe1^GX5R9IPvo?ptnq-_h@>_j;Zsh|86-bA6 zYtVs1-%$3AJ1o*AoO}!Znp4@PpB87*`EeexEAgHDa%7G3Gl?__Nxl}dt=s;>#OX5K z76Yrf^WK>}nW^mT-q>?3Pe)8Y-xoxDJAhO6w}ey9{Y{V3l#e$|Qb=xrlsRQ-s-?O} z)g=pa@>3(@Ly|&I=APW$N&IQg^l1goOwLSCkA{qVD>HtYkws``=5(Jh>yd3Y{+c1b z(n*V>KmQntFJ055JI5y_<|`Yg*bLU`(lAHDQCQjsEo-uW>XH`X z&g|b4p~B2=nXb(c%ZpAgY6lJss{;d5H@6Ur1hvgU6usPt1PAsMFw3#5ua_aP3dWsA*e1j| zJiSWIIehL(3Q*KNJah?OB{z?=$)<2LvIN_jmQQPFQrlC?8n}t2sB#r5i(WgToldFa z7+VFGdG%6*rPhh{lwzR5>xY5nN=#meI+A6ioZ!K@Zt_pnkN-rX>sBLO)fl4*iw_=%s zkmMRfqpG1SsKqE6&B0u*;5v_5?5R*|L0~6EBe)S%HDJ3F<_D{q8VsV(qiey&27E{g zwN?Sh;+6AQ8K_#e*ecC0(mM=5LOEj&T6bPZN8qHRK8-C4HM&DWc+jzMGhwM2ad#7@ z&X0D>l%^SMTO-3(@y)`%d}E-3Uuy_us<;r3ksL;|%#m_y3jAi902T~5k~XMLS6Rax z_0-bA;#o_?UK4|fli!ulaT>}P{m{hPt6OSWgKqQe5_kl=da>?Gu+Cpsr@WT*Lufi70>APC-v zR<%@V<ar%2#`J%Z&&q76Bd#=|K~(#f|4ATxyH-4D)EYtB}OX6 zVF^=QAVKFkEOU)_l|wq$c-J_ju%b4KE_PTtjcbX+GTV4f1QGJkC_c-Pnq#~-I-~{0 zyTc)wvzIz|@cXp{b(5F8BQE2;RL-T^R)xbZ9wT*@BUQFuyaxlMX`P+f$C$8DX>vp8Vs#%N#4Rct+(rMyc?6Ax=-X2}G z6%pEsky_(Om0c^|3`Z)gN*k%Aj?`@9_Jb8Mb#yrc1YHC_?&W1Ix#J1k)~8veQNA4UJ?;Jshdo#yej~ zs)IDhZ4O^pZ+DUejdobV`jTP^3TO#ymW^WT3W3p9<+a{Lrti?H<*y09_y_o|l<=Db zqQM$(Kc7|?p$|4vcREsGb>FaTc35T`?+%AlYP<&=l6jdyASq(T0LPrLyXFW9n&hy| zHQuWn(gNeX$svW+8>6VuVF^oDy#!t4u!L1m6Twc0B`hMt@&|_{EF#0Q)nS=!y!#!} z0^_yh-3PW6HWGPMxW9I!!YqD6g8uHXlmzl$d=dd)ipvWX#dr%HQibtWIi#?p8%sw! zEMZAEEQt=wY~wxEA%!Jkjs!j7u!L2Vn%i`X@EH=^Zj`*Y8c43cYajy8-*om=| zFgn01J6-W9xcj+JvI={+;x*MX5Y*FRW5E#JK>`muT{OWc@FqYG?}+MQQ>kUebc1MN zkMS7P;PWf4_-x#w<9gU1U*<%5=rXW%OMw`f;#cEX{^83Y!l;j2h8Pk;NMOfZom$B< zK4vrsi8?+Kl)mnc`B2cKgMtq)i&tuU_OK6L7DpSCco#Y;$r=LNPF7THdvcOZQZJ86 z(kV#*#Cs10d&*!%?4#49;_TbQHo1@*Y@cQM1J+qqzi?|{Lw|?Gqm&H@=JFh29t{j3 zA!UP{csx2E2KPnATz+x<>WkyoT#RAG5U<5NNk);R^+k~c1q~Hk@eLC>g`7IlV)e+4 z(d9oRuCT}Hai}(yHGCwhQgDdSM|iBLXwA*iADP(!9hC{AXa>X5jf%xmy{KL(&(KN= zdt@S}(cx^0X$+WPmuAY0wddkdG|TWBdll!{V4J9NoMAIDE4J}u)9NOKFnAQh#8B!G zofne~UB&7VYPJ)rM=Q;7@&W{WSeEwdkkf-%EquOG@>a})M#-2w$v>rFa;BBiO-D(6 zQ>ZV1P7P5KOC_1w;Qa6~3Bl|Ri;w!IYkl+f#mHDh; z((yC`+A?8hS?2q?QL9M46+hmn?ymcZxc-LUDA!x~b-O-ehzlbOYlr3X0j#!NBM72g z(+J$I`2=3ey$+lg!f$u;tO4lajot=|{d4%eu3fh4xA0u%QtwK3?IEA#eh>_A(i`VF z1mN*@`IsVZ_r{C2UTR1$rd#q)Z*xdw7J&viO}ZPz*YjdER%Ur6KE z?b?N3kLzvxMvL6P;P-Yt+0_l5hUMyyU)wbSzfrCd{JLB<_;tHl@#}H@2EWm+o%l7e z{vCdA*CDQd0$Q#FG&x)J4ujv@b)@TbK+83sAufL3Fv`-Y{WZg5`nv8@Aj-MRh@e4fD0X%NE3k7lpyuQ_5)K{zPO!%#sv+>&-Xw(3x_QMmq02DjUt_9fC zW2mp&8WaLTZ_qY{E&<9U`_?P;CqS8M z-xUhI4k**@+n~_<8d)?3oZKo3B7%QhN4B=0;&aqL2YVdKqLO$|DCzCF*g{K{W}t z!v7NegKOfi#eJIQ_Z$L=n}I0tG)Vj&$fc-fJ%`pLJZ1dDY7*Xt|2fi64U}xp;Se|( z#askydXC6Tn1d0@YruPs%!|Jl{wj>ndX56qK_FR_POs_l3H&O$jIZFE=}q_!U>`Y0 z&+{EXuBpI8W{~e2pzl$64~0gd(tLuZ)U&5Tov4!(8jH}sLRZg|6#At>PgZDG+$w7D z0NFEHp>F|Ik)EQ^&w=tWvuAIGjze|rg1CF8DD-Tgtb;xKDs&~#$wX6$THYnhRofp^ zj2ylLeo$jd;b)VK8sLpN$MMI-EP?;GipLkz2>NV zcO4on72e?Zy_R=BnEsO(laXmr19XgMp&X(HBwOA-ASTZhg6kJUcbcnlMRv&WDF42f}}zq zWk6U3lZx%6_$7vIcE3d51wfdMNkfosm+vP)RkUdez1*-4RcISfWydh0mX|$k;v=xf z8#OJEj-4RzwjNbv+m`nv*pRrNJSW8mc-|MDlYHcvNS-1n_nzzv=Q+7Mc@}`@2a9Sg znEsQZ+6n%!qT;u6Phq>Ty)XTT`Z&!WrY{*p7Ck_(Jp5SRVfgiq!jF3*e!fP+lUI1Y z1MoztL5T~^y4NM%*$7M=0KYFb$H|t23=r5%V_PZ{{)C>K#UFcdWx_M?v%q85=f%Gb z|C8X0-GtinJ`mQs*cLQj+*$d;Ac8x??uPtLt|EIchvY2P6eWLJ)P$p4L`pt z5}T_F{R3Jx352xXiH=qAoZ_8<6!bnDwXzZj&FXzFkVb>dM@8fV17qpE0LT>vsQ}xx zhOG+7jRsi^WSc>1Aaf58*2>D_GG@n-^|vAr+0?H-LLTXIdkZC|TcuvU!QUZkiX3AtBi-6og1yg`r3gm7gQ-RzCR2_lyawLBecfLo?R>C^E>dE5kRiui58g-N^?UsU>HdV&=K!At z+3%w@`-3oV>gz$6FZInJEIIXUgJA^VPklECOS9Z8puHfae(8M!x)Xi4WqZ4Hcd|Ue z55lRa#9eykC7cHTB>I!)CA?%SZG%gHFh2Y}p9BpGGo9t#%EviF~@GXCB*3GK$8QscWGevWYacV|2D zZ8xYM)jSN89b$hys@Y>uJ*s)hpsK-I-j`_7FG2L4yxiA~w<+kf+h6; zL-6}za-E!s{{n2QxH>9(_<3+Oj^ur&Xv#f`g#NWoSah- z4RWY2%AQY4F@3%BK~A(0?u*HA;t6OQSCdNNHVSjVZF#SPH+CRsw)X~l&!X4;J9yW^ zH?W`g52W6r7#@K)aW}l)K^{lB<$ZzVei+&L1`l+|37Il39NeB4e;WK85DdO9&lg_| zBoApFd|RH+xz7x~tES)82w*w~KXE&JQ{o>p_}}n+!rRNalu`o_%UuNj0x%3Y%{v?3 zlydyUwt!%JE8*?4pI)DL8T|bRVIb)nygbS=ZomvsI4m7}cU0cMbATx89*oNK4ZIK- zOMmcRfDK}_&l6h_h3s-!?p;8x083h`_i1=zZ-(FYz6@`l?ezNGEamUvJ@uFF&*4qL zz;xIO_qXu+;T@XqW%0xghu>Db`S1-N?Ct~VVt7aR{RF-dDXHfJvbm1vgSb;KFc=2B zn8-*+<>G`umo8o|WAwCt{8;xI@SEWWKhvm2p1*(x!w;@=^y2e^JSy7Y zi+bt!)&VkLh_72Q=tF#>IZAO2#yg5>)o?(~U894^m3A@S&`asH zfRrB0FJA`}n1Uz4c`DMZu3rnZ%e`RrMcdEzLzTCO8~RZvd@#ckZQC9}(r?p<@d?=) zZg|XgNV|MGc~OM+hyjMT4|zvU19~?_Q+cnkh8q#Ho6#<>r)WAwYmI2S68)(W9j!%; zh}oQImtRj&3{UJ4e*iCUT)wG%QXTQW(KJeB(R7y9WHgu^dv^IN)O0>IeF@$tne_8{%NUuB+X1V-uj$}Gpc{bx zi=oZYgYZR4?kAJ7+acT3LH19>6X21zBZe%&t1S z{6WY*N7+a06UZ5Uvj@&D=O<5mec_%!YUaa4C&mnJ)pX*_EP;t5qhRX?Ov9gFM`mTx z?2!{e`v++|nXZxZfx3nP-KCO=gqq0A{x-Y31}(FOkv?Pdx$Fc68yU0J%P!vn*)^1X z9tN*QWC4R80OlAx;$vVw8uC1|e`J5OzEg<4pzIoLG@9*TcKN@c`FGU(IyC2lJ)rp~ zzyg}@0j4y+t_t=8pqbSCy3(BGXpCY0uwcKY*7t0CEay$8lJ&iJ1|h&2XZDPlU0|pL z=tIY*g5|J1z7*_yrn1McFg|OXVKsZO?DBgda)yX(a~MY(2D3NHE`Jk@Rb)JZ6ut+} zKnjyl4uKSM8{HkW^N7m3UjS7_{EaH&=YihO(0}O!n+VKaDZBhb~ey4v|e5R}OdKW6~SS7lO+ zty;qt66--!Srun9b8>zLT;)|ag@ZJ~#8BzP)Qp>%%7T+@`!sv5O3Z0?nIzxvnH^Gg z`ES6lk{`rxO*G+Vhm>9ZH}DPfBNZ4~blS*HzYivUI!tkK7-CH{3iuqz%Pv0&x6||d zVCi=vMQ<8K{cNqsC|Khts(_-GsVMCPimY5CVD?(sRHMe+|NyQh2loXSgx1;8cW+iNKu7fBJl2$Cw|ZRZKZ|0FOQu_(X;0CDEU0--nuD z<(f#$1}nRK8tzMfWn`FJ;CSr>mKq_mBg!sc%bQw%xEZ$n36q)eG-3}}+8s^6u{0+O z*jidsWb;d;lcQ$BCSS4r(g2!fw3+Y+5GoL;$u_)=x6m1`n0yMOHRIk+S3VuZ^~gd-pnh;RikCpo9z08C~4GNmww zQz`c_f(9Mo7r<3PG)jafBC~VHF5ig=-AKK!#gsJX&H@oG02YYwa$qXL7OiliQDnB~ z*yX%8&ZNSdQDHM4?4azE4$8)&l0QgmZ??JGV@)(loZUO+^Py}LmEBHdbr1+x_A81H zl`+edsGs?`?gd6Z3|Lc*4zu0IF25VPUWTq7<8&?Syqe`3A+sIGE%%qm_KWKsxx*9`oUUqpcgjZ|f6PUo}W!4X^sYZH>qvem# z@;bFlP?_GjCTpq@y2lYd3SkTP;T{w9DDnhZXoUFaz{@Tl>c>Nb7VbRO>Go{1$Z1VA zvadKgE`W{;sbiAOCBV-0SoucikR$v%2yfNGoeRPMv#@GSHL_;^mR8$#@Mr+Heux( zA+z1WF8@7*&xf#Y4I9)Ah{_So;Cx6xxI5?PZUAe)t+x9;i2VWnQE}c6;EjC*e%t#6 zyopc3>+PE5Je?<)r}M5QdGX}q&8O>ZOb|T-WIOt{u4R}YVn4}Vw`+M`LIwPs59xYl zUVJtD9O8Ce2qxb6-zHOKUcyfh@FD#Tc?ny|gi74CF)!hMLtmMf@HG6nq+gtu@GAUg z(0^HFd>Q)sC+J@drFB4fo9VhP&+^_6dlG4wFTJmmgaI#t&>L~3cd_#ZehGxrNa=CN zvVq?N`w4>*i1kM#ocmAjVcUrV2LpSIVVLYp^rZmffFykYW=gP$U@$^ngY<~eeggl9 zk*Nm&&j5J@*V|J~#*IisZz{0?tz93u#ArL{te#PJos(*9T4DNk*+7J zDd9R0$8>Xl1%_65GZXy;{>+5bYXE6orkaJmJ_z%s-V}uSQhybMVZ!GiV&Hy~u0!14 z!^;gMT}OILP+*B4fYX~5H0k^e2)806D>W}64kgJ5v-;;H^n(9R(g)=wj4=MRyoA%? zzmN1&^DOsyQJ7He0*!s$*Tc&lA#uIj55UXKAKj9@yBKE$M7(1Id1w_}4N5;OY4DNV z?tTd_S?U`vBLb+*BhCnR>m!+M@=fr2Y!neGJ7MC-!w;4QegClcxLmT_*3O$*GqEGWJQFSx)8Gm=rb@vFqI|cY>5X%l!;QAB7j& zSe}PBb_e`+3g-w?_*~;X2%^6nL%s37_k3mv-uIrWO=cCIsMq$Hg?OTIw$H4^6ZP3X zF2`51Rs&78eWnv4>bHG-R%Coc(`+A~6}O?^C5q`$?|BgP*MR8vy_ag%?HOpLnw5KE z-qd#R+$FL2QhyPIVM(5C(|bQvJ%fN;-?xDTecLfXK!XzmG&n&(gA)W43F2dpN&!$L z$VneiB#6&9DnUTgZ66y#$%^Kw7GjXpy$jNBparPi5 zr-}RQK~7c^Pqqg+wh;Ftx`z>6;$RHKw&!5_pR>b=$2S%PK9uBi0T$((4wSuSj#r^) z0X+t}oEV~dF{d81(+0Tf(S+5Wv~Jc!WHGNifoBL@DsYp)TLnHV&>UgZ(t+Rqt3GoS zGN4KO&P3T8yowM<065O7wKq5*e-`PO*m$63|uT6!x;@n%a}W}I84ISmW9WEi^IHr zaOm7P*s;)+srla#fFt43;l{v?g&Pky0d68(4qPr=9^7QODR9%^3gL?2X2H#YtGH|X z^NY{_=j|ImTRLORolmXm8=d&KN#EpuvE|h-$A3RAG5h=cq%#jMoWJd?;>TwtKeDBE z-^X`ec`)|sFGr8xcgwL4kNn}jm<9JfHg(Sp$)}}EpIb6KZO|$4yLu#k_}#o?{iZzi zyG`|D53gSS!P>R36>QbnxxFzutOu@%r(f4jwi8-th%%SG`=9{iVI+>Ob6i*L_hpp0{K0$iMEopni4M znrCyXCp?<&J+<(W-yB&p|ADiwPEL4kU;mRnx@FTpPyhQlmu~;Zr2GFg>hiY5m%ME~ za$ns1CHF17VnXZYi-&%<@3!_MH-2|bpXpP_9w>QdOV^SwmhM}B{%hx_UwP9Lcf7NG z+b8bw<_YWO^m?ZC&U!hfUHJ=X&SC)xfQU+W@y2ZY$hF zaC_kP!ySe@2IoZuOomH?%Y`d}TL{+(w;GQ9!4|mfa691k!X1D+3WuGimJiMkmkyT; zR|2;Xt`TlE+$Oj!aNFT_z;Q$9VYp*(UN7Q?OM@E^R{%E;t_E%;+y=PKa9iQHOOkCT z9}}FsPV2An3QPy^;-n|T-;nV0{2Kon(?`5Go5Aq@!q3MZ;$8jt!NtW6;zRJn%8N7W z#GgXEyf{-&e7)eWg~a#IemdOfe@paV>8CWNEJEVr)G_s$^l;&Z_#5(U#K#HZv!R#Q zT66%!AH(z~FFrL9H~RSmLHsJ==QAPkzp~@N#fd=T<};=3A^f8U=9_B;^(r1!d2?m_}!AWv|8stYSzIw<_#)xw zbTjcRNiV0%iC-?|%STS)#eV$Y;t~z<3@IN@D-ds!_&8-jJV$Uo&Jj29*GYP!Bt4uH zV0fJ5A7_J!50?DkoC0y9{}ZW?BPIVhfx~cZt|H^kkn)Hg^P{E zKal!6Ug~#jKM-*Z^XqWaJ~)+2ev@xp(jacyHzy^C8+lH_5I61lfsk~j3vSvMXDrEY z>LVv)iJSh?j9W;fLvv7<#-o*gP~R7C91b71#zVd8`&h2bJGOh~1@o1C7~3WLUfR#H zW;$7hEGO0#rjvam<7b}HF18KUW41}QBihb#WZAJjFsA~=Vs1483m>PkZn)t*aJXfuv04Hk$7s~U?uK0wyD4@J ztj3HJrmOK9x+#UDI29ZMI8^-1TQhbW4L|M6hMNpG1uh>>*$-F+A8rBMLb%0nOW(a3UiZ1)jdr#k4<-hLYjklh0+gX3V z{qq6mulVMbqi6fRX}tc@^wk?;kB)jX{&4X%*-t&YZt{m0torreuFbyprgtw$_~euU z_pI;zY2x9dg}3dgi25*Y-@JPNIXU0l@Zs+=Htu}y*E472=RSV(yoYN0JeOQ`?fa*< zRGt4qzefLiAANnic~jn_KfiI&70;cw{JrOnJ$Cj-TYmfOH-DOWEbd5`e)EnX{11QY zec3(T=Iy%dlo`)_44ifPL)WLb-qEk2*x&o(s}~mU+qu5{i|5X2xTjnGznV^4KDqU9 z_uN-|eYES`JL?jTyz8Fx;lcS2tsM9M4Y4mbM%DfPf|SL*FL|JF##tA9KI4{w=icdy zTXA3J`j7YTtNrA=501R^>FAYbSu=mV>*Nbl;&=LTN%D*>d&0pt#^ucX8x0MY~ylKtF_dMZ#chk@MZJmF(G;wIt8!s+Ig zKIA-`gOFT%YKcML8TmAx-q2HaG*GvUsIy9AD7I?mZV0QWT9n{c1OMPZzl1eXTK zx4z7T<0@=3+!b&)!rcwG1CIN+55au{7l-~O6>c0#^>#2)7pQdbsUyJK^@h z9fjkD?~~xt;ikZq!_~rF40ko$op6uBJrBn%tn4?rPj?_7F3viU#K|c1ki59#o+NI+ zmzxXXD>`$FRW(I}93b_9alSt=piK}=?DCl(U7pOVDQtP+blJqOY@I3e97vG9z8 z2y%I!g8LAaaB+Ts5p%8pUarMS$S*MoO=fPr6nSpEBZ*JNLgHLBNt|02LGBnMiCfNu z#Dg8|QhCe+f;>V1z@2ZR=Fg&;TgF6&laI8F6OphiH;|7ScxgmNl1`5i79br4AIP-I~EeB4Jpt4JQ54H!I8v0aYEweP^#oc zQK;mWQ<3LZWioTepOCl{nj~(EM%=u(`o{=i{Nx2aTmF8@t_sCc=k$2oO&dQ^O~ZbYYHTBfkAYsvz;KVf)g&Dza-bk zaH5M_xs|R!8ril;;?WBcS6?!pGo38uyAqLI7!?s zEkMetUjB&EZlM0jz2pCqokh~U>!+B~u%B<_AC7u%+gxW%3% z9xafZ;6@XYcnnXtI7vtnCl7_h=~t3C7b|vgN}VK5wF?)I<&nfQdcwth!X)JdjNq&( zNt{9zE)FP3;>4zqxHXp~9y=5DH%OIxwx2`dp&ka)U@T--x0Bra``#B~lKahU~m(&CZ}yj&j>^SE`GA)Ju~iJOW=X1x?N&mRag z*EPt@H4dn`6A?%V_kJ@@ZpjxCxA>F9g%lxi)qo@}BuFgW8ch;+Pzx6iNiY^3m_RH~ zBGD4UlLBPsu>q0iiWix=ss=8ug-Hm{Vvw1qAz&!4XQV8+I44|O9-=&#iVztW|0FW5 zvrwL!Ace%8P$Y2zUP#=&OnGh&0Eru$MKiZ_lbI(Hg_(2VBynO~xVXke`46@IT>X*| zE|-v*TPH=HOEM&Jg-1wSU!pwMnqWUyq$GrgP{_=aGNAI}AqbLqB0^%}dJ{?9`6+@t z=t>d~PYBm9g~TzOaPj;IBmNQ&RGv$b5bmC*Jh#$|e1=PtxJD>k6G5Up)?FyiqnHw6 z9(1UK7wlIT@h*7K;lqTGtY5>E80$8yhOFpBis5Vv+q6Tjqk^{qMv^z1fjbK~JAQu) z`4{GS!t|Scyq$%c-MPPnd_OBHOx|p?O-4v0{bnQW>5z|~@DgVu$(DynC=g^PWUbsl}2dL-0WbC?nK^fOzbS&>^JNz+-xgE?-kKLvvcq!ghr|#X0u;s@@79@eJAo}M_x6; zD{WU;{yH1z5FROi&3?CvPV}4YYpmaq^qU=N_je*cOFB+;p}fNEGaJb|3pZQDItw?u zz&Z;z`@7I9M~r`q*wavYQoZIHd%EhZ#GbMX201Z)mgaN{gmEG`pgEW z#R!kozv8a1F8iW6mc0_o^l@Fhn~;j(pkiLoDwxT;)bZoIKdCD(9xt7k(k*)W+UTEp zu5w?EyC1KCa7A!`5`NyV)MfZ5uT`AX+YEO=_;_DZm*ET1Oa9-$O_-(a_%Zx1gZ~=g z=Y30EM*obpU49z9(XpKRdDrb)qV@j}Khv2B{?)?&ORXJ4Y$spbS0Sa;doK9C5kB7k z)MfaJJK90LKLyXbv$Y+(AF9jn=LhodKJXnAKIvBj@rR_3dO0M_oul>2eKNo=(U30= zeeek3>nC(4U4k=Rncy2Ne7tX}%h*{Gp035 z9tHnDh5x-!{xdq(PwM{|{CAdVJNAb1N60t68@+I@=I8xQUB;d%YgIWj-=>0Z+7IwC z{yOkY5kB6J)n)WWs1G-T|GaV?Kkv^S_=Do#1-@5>??iTf48E6t1RswTy&!yH^-IiP zda}XS?@VnU@89Y&>4{Je>cBtaEX^#%yj{QNoiGJXW#qu@&xKDj?f)OQekU(eI= zo`^5bgZ%jse3{_8SNP<<9TqS1hp%hDM)-LDSC`43kowGY{}lY+{RqAHf$uHh@7<{k(2)>?O@UZ$L__D$G+aJNV7<^X?pNs<{ z+V@lNt^5&u_kpkSNAPhWV21F?_#|Sye5rfZkI*+9e0_!QMEP6>zUUvpcQN=rmHH#& zmx%WL27F%&-(sl_&V5P76-8?LVgu#_Z2RBw-SDfPmC?)E|K;zVj%rwRUe$l)(KrJ6tnSqZ; zFFzmO_8MhALOWtv<#K#}YeeQK_3gI{8=CM5Y4y3GQMI#5|0_A&c@jfDwj4;_|I~N3 z!@m;#KWb>?4?_P}jSX(;{G8gT+A-tD{#R;Ys3q2@|3e%4Z(IJ~j-S2tsQ=mCa(WX! zh*n#*Jn%8}|CzdPKGF7HDZtJJe%|yV_%MpjD_390JhQ15BLa}H_yEp&`8uZ& zRo~gv2);bYPhHZc7);z%E%b$Iae+%E2_K0B2a?O7ul9xT){xiG zit+X6YR4v|WoBu9Q&R&CRGBmtUqi%4J1d)38A@JLQ>7rql~rY8Ay)3D6i=>PF4;7* zbZTXDr4gAshk2m%sV^F81gU8ro2fDxj}F8n%YjXqF1j#RF=cw*5_}x78ecc9UyhHF zE`vD87qnEjFg835O)tWS8J9LyG6ZQ`T4(YN**>M*j2PtO%2ROTqa2gg#=!Q?@bC~NR7VF(=`%9)UY1V;XUXX02STH5l~PI1wrBWg@<>I@#c8Co#jdK zZubma;W-8Jh~{?BkYa#aJ-N}|a(J>mcC_~-58iO@^?MSK$Q19ro&?uL+n{hCl6ajb zA=-PZ$Fs@Pt=ZEj+S?E5*+cY{W{)TOZcltP;aQ&k3g*C6;>DgpfWxA`ayk|z$4Gh;k}Cqvqb_MQVIDy^qyp!fG4 zPt$MkPV;S^0Z~JHdOY8I21X6*iP&KE!04aBv(3}ryM+0;!sGFt6&+R3ohf6yHJ+|e z*$*naVlQVjqBu2XzsD0bpa;q_J=(h_`fO#k9SsAn0kiij58kf-1+2TmlM1on(cYyr zbq-ZlAg@+M4YfTnG2R{sn&CNZhNtTcR1Tn)>*h%i( zfq=>p<7!6A5SjN2fGeP704k=ZRhjOOM)Fe;m==xNFeLh*XE3TS67(n&bT$*T5az9n z8q5UU=9!?4c1L@^L=BnYaWNf_f@3ujFvhhy%1Kvh^lcy?zXSx=7rK;^#q86O50E8p7hAlF>7$ul?xS@}qes}Py!8h5M58s(5s(+9i8E7ED? zdfGFMU{8!|+6>P$*F==cC{KTq4r=hUr?+UEI>Xc3m90d_#LRH}5ZPa>sNuFJG3JY? zGRz)ckNHHbQ;y(4kIC3hcA4NUfce1d1?RT2slew8UJ5u4IOijqAwL;#0`P8t69K=& zjc7dJCj#FCTn@fB0m=6Q;Q7Fx7W^T=9MFF&@OnV%Uk^A5aD~7nfHq zq#+f1J(k+3vedj7QiOJD*(yA8j$hS z3x2M^xquiZCvp1~`LX~R&q%@fqF2V#3y|^ft)z_SBS6OU4j|)s4iKa7q^AI>=LtaS zy%&)B?h^VH0+$2Qo=U;b1f(9mrIq~oLg(v$sV51L{4Sw?iLsH&2Z8$pJ}vM8f!hG7 z?{>j&1*AT{@rU}jBenr>CLj);wdV@gD%m-zu<5;2gkugijHi??7RC(**AWNPP){y8+o=KEUAoJn%gQNPF%8oCU~N zU^Bi-K*m=J*Z{l`ka9f$Y1e0QI^OpIi=k&fAo-pHMAPcC6A)Fq&+h65s>j6$Jmhcj{%vE1A;#XSO>Ys0jc*vpBb%1JbS@fV9H}$aucN(3AOh1d#XvK*q~28Zf>+Lcbf3@!kQ* z^zbEc>=)Jmg0FZLAm#b8IHqGUAnYg}2gvxkYdnYVVj=&VfaK>P4%U+=0GW>80@9wF zCHy)-H~7{7(ykVvF9KvdJRCwhxf`DP{D9Pxpka<1kood=JO(je_5;F{K7Rv5P@nq% znJ>2hGJV$rGJQOtLOU-7q~7I#jIS1u={gON=^qWq`22w6>n89!JPy#VF9FH_5g@}~ z(e&bH1>XTky$=I2oxcZU`?(5`_3jEl>gQn_+EWflJ%a_NNO-*9HX!rwD=?AoL;Nt` z4ha4VAme)!@I3I{2uM4dG%V()x$vJf9Y3@?2axoiput1F!_)F94#*ll~$&5A_rOJ>XJ={~E9bko%Ns5YMH6ly3oK zI=Cl;{PP7blJG2n!vQNH-ve+FAP;ZQ9vhH${u7zN{QV4&dJh0HoJV<>t{s4gC+Btv zze->$;9|(t0WJcp1f<;AfYe(8NWBGs)H^}KM*&iAFF@+$DIA7>B9ME1Xz#OtivV{3 zQt!in)cXfO>b(_^dUyzk^0fd`?_z=H0Mg#cfYdtaiIcYF(>P-Tq z-dI5D<&I+Vea|Oiz>fi`_bou`dj$}C2XdYSgk15XfaK@8Kl$$hq@LRVYr%gtAmh0L zunMpm5c+aZ7gRYG0#Y7*h~mo-e2C!O(?pRP`UNHn^a=C|1W@T_yy$wP7XqG(@?bo~a|Nef;(o!Yhd6-Z zr#+}E@w8(hAo+2aSJeYTKXA}g`7@mHmjeP=(*=$NTn(IhR|1{{yb%y}&9R5^Bm&O` zgbhkB`I){r;Gl7OD!vhxWdbe)90OPaI2y13up9Vu1@c89l=lnd%R`9senH3=iV)&Y z!DFZ-#E%N(i${nb5V&99UV(UyRN*@WZUsyL{}w>}M{mXt`v3S1LSHTPm4JAjiLVj* zLZQzC#CY$p>GxX7Qg|ZZx;F{ zp>F^j1^Q~CuM~PCV1LkSguYPd^8ovSULy1Yq2~hnK_4&lbfKpKrh@Jlda}@cfPF#t z3f&U=G4#)UKtBq|^d1Iex()#1UKGDy=zE2}2e3EjJB0p_(6)05dBSjy3o^v?gvC47@sV3 zpU}O4=uhG;p&vtk#`GQqL>Cl)7?ANE5c+-%joGGxoz!-tApmN!W|8D{}3*01dj=&iLlLU4X_&h2h z<#!9bM&OkKrwKew;5Vq85xJck>0>=tGh{i_wHw9iPaE-v30;dUl4TA>qzaa3J0&fsl zEs!4sC10#Seod74^B8Op?iP5pz$*k!6gXPoQB0nY|FFP21l}r;U*chSmB4g?X#(8> zzs2MW`3?%?d?xWUOG8v|g)c2k4zN(<~-zV(Pz#-w&Ny1eg1x0-;=~4 zZ_YpR-5$ivc}ITXfVer|$ax^*<~-wPqOYW%*4HHR<~(D$;O6`ycP>-joLAf`_L}pF zA4vY0^N24>`qn@XFR$n`=M8@%;pTi{smPo2g#2-4S{32yfE>f+p z`$NL-56Q2YA@=flJ2-t)P#1#n^H83__>&>_GAua!oRIk6K>H64|3!#BZ-(f*EF}Dj zkobQWf@8STLI0AF^gI}%->Tr=xQeCK&Db{9Sl!gTN+`<%l!|(6dTVZ2R$En3)zAor zS(9f>shCofS6W&zuwrIuaZ7XMqPl9e87?d^64mTml8u8RQ&^ri2l`B)?B=UjUenN0 zx43j!Lql^--Kx^6%DQSDWYuXy23C~JnN?CzR9IRTA{^i-oLO3yH*-pU1>z{on_QG% z`opZn`DF#OriL+gOnpadB_)u|GuacuAU5mJIkUpjYfKKPh{U9AIAMkrF0IEF+PRI3 zE1RpAmo=2t)GjZpY(hDoIJYZX7S}f9*H<+x#_rG#0wzIbXJv%6h6F{nuUT2K+^R4; zk1N#f#fr-2=BA2emFHJiTv*#&Q-KYr6;*YW%fYCsTV!Pw4K2;sj40a~XQ>T{KOmvw zFKf^lgzbxxM<RWvVav?``dFRi_(`t0ha2CKr^0xQk6y1r#ubyFobV6r(9 zN=Q?6GxSpH^5#ltt*SY{Vo7Cf-3ilMq0Z=_OF%l8qb5vgSk_oqO|6q@8nn$UMeD7C z^6FBm74p(L6h%oTwx1%Psn!BpQNvQxr8J{PV&8E?Jt#bLQBlq9wXlm@k*$iRmik%s z#V~d@x3iv!T7X=fiql|>QgNK1CRA}N>*C_dm9@)Smgx?Hxpl%+HmraF*krCYwEiGB zw%b-YG5jEREjP(Zz0}OAqpfUVCe&49ckrBQRHk~h3AjU1<^4x2i#w=67UnHqRbN$u zOm1jdUbkviy>zlFPgNe5{y=!B0<{f4P!&2=6q(QTe^aZMRJPPLE9pEm_1Z-(%_tp} zDY}XVrQ4yajAG4K8-?fSjI%11)=jRhUo5$M!Xj>A?VX8stC}KOyHYfzvXKorq)i%A zWjigK%$Up(=NPiCRQ{&wWvDlKb#=OTTs~h~Yi<3ChV!8kLK&S1X^Dy95}9MeBq|p# z7WPV0jfxtoRKpHepmMQ#S!4663e^r!&ee?#P0e{L(9n5rE{4%ftB`z?n2@B)K7Cq0 zWg2P>x{CT{eMDdiJK;Ii*biP^Ulp2VX16~D1KrEgmdd8ZQijWxFD_2om(+sm1Tj`R#djtWT8zfRCbO)XJN20s zj&mw%s_QT!lHw&59Wr{aumIJSsSbI0b={H*E37P4XR7zqqX=|8njg;A*n|TJh$CQ5 zr>vb0iXy13uf9;)&om@)N=p+8vbk=RwCL)^okmhyU)vl(pN_lJ@kIoQ2!o0UTqCPi zuGCrFQWYs)eGgt9K{BjKhUaZVgmFRyO*)S7!9fI89jVT|p!<9T&e~#NIWe+aX=g+J6Y_UjBRi4G3m@u6;?(6Vc1N%`&{0PSL?(17 z2^pbAiU+JZlJMFWiG2x2BY|p?*UUl2oND%d&A8>|DbF0eT3X> z!W&Z{$r0{N;p|A6sssURLn?J73nQj45~E7Wp0@9U#f2Kkr)I0;QyIh`q4<* zk;r^~7ei=g_ll9@CPcowj2t(f0g=Z2BgbW(KwoBO`o?s;|CYAkRyMlRIL4=A-XI3o zfQ(V2$NK|UM&`KDS!2gd$O17dJp%!w(;1qPo<24+6EGtyb3CBmzc9v(E!0483LXKP zDn~ZxX&CGIe|_>jr*bg;pynsA>|-6kT&m@V!_^D!Fy=lxyN1q{Srg1{@-jGda-ElJ z>guYfXvSbq5P*t`vix~v0o?c+v&9E}m@=}4SJ~EL8t1lFONas$6?HtLSXsx3G+d$j zj2=w$sH<^?)+Z>JV>(=pzVVtIs&A#(Wb3M_yYepbXMpQIUe6?>QRDW>D?~+t`))U&=-6$FM}`9hk;R3^^)bxzo~g;c>#`sGqj)U zSG)?&(&;U_6y*UN(_1DhRJiEFtVX5a9re}BRAlu*1o~>u)%xl#$M@58P={Y*ADag) z47Kke(Pv~I5`EjCPikZ&`)XHIHmP_*_3aRS+`qtUhv?H-_^;TfW-_e$G4AnDz^NZXgP z#^yeiu!}=)JbgIyP<`9WbZ2Qupm@Udb?gteoT(Z8!oQ`uWBU-Y z1A@zg4J0)Gc8I=h8X)yCWhvp z?;I^ZUfQp(R_Y7#Z@H9Fa140pK~t-0sI04~XQ_nhD}X#N?ziDpaG};$bhWO3SX$|D ziG7Vt4b2U8wac4B^_85b*|BXwT_r2UKImf?0evC$S>>Nfi>nv4Eae=RVuQXj^X5!*L{^Hvw@%ljmErn2R2e>m zQXj_L5%taeoz}A(`(${{eMrNg--!Au7cFY4UZKjjgMBG`wB&y24^s98Y0}<^`j~eN z4o&Y@f7L?s$7%T0>l(g{^7x7NM%0J%?n^P{8m4cyTbCj~B*$xZ_pnMFqOY0>RVL}+^RPtx+Hzseu@@D<%3 zr%$~FAcB2oiN4>+&El*dsSkrJr83mM?<9T3zVEoe-0=!2k19+pS5`GwwA5dSIlYRC zqN%~`X<|>VlyBM?-4ATL*5-a+ULpFbYxLx`4h-#|Yldrkc3@qPSItDNPh+ZoF}G4h za@reSxgeKz*J@k*Pj@r$o>`j-y&4FZquAasHlm<+cL{4WCj=2x~g&#&xo z#xNW*(51s&3MaQz_PWXze7uQyn;WZA68gvKM z37_+7Fr|!f!9|Lf&)%W>{NN3-Pw6Y1TG*K$hO6gzh^mY6`QbwJsP}o1p_6dx;bci? z@yy1IX7felq7q!4q>CKt0aSCHkWW1(1@rlVgxGD~e9>8aA*I)OeA8xDH>(nt2s_D# z((0-fyp&~CXYnz8=4D1o(+TpSgKcvQ+TJhVSEw*VXd6F&=a0ej%1ez%yRV=<%fhq5 z!)#v1`Sb`qJM%NXE@*wDIj*4X9Zf52d&=<_wH-YtZ-I^~?@YYGWNuzrX~E?mbE|Yg z+s0$x;S+Fe_wNTNZ2P{TUEMGX+IttY&EH$l_NvkMm!h`&cYF`lcF)mb3byW1Sk^@| zfNgw?VTWl>VcYKFwr^okaqIDfbvL7V7q#7e0NO!%g2kHgwc;yi+pS@HHzn4d9aq@q zjuQipzf`b$H&h-!G57J8o?u2qQUnb;pYwLR)lFN_{0*7zaBpEprVupmDYx4ep@Md+ zKulKVs%oL|zaXK#m6Ap6 z>4@x50ZubyKwi@(q@&8TKgJj(2U|CQcV_$WV?}MB6|}uA6>L%~D@jWNc$vhawoes% z;ql$Y6Fz9VM`G5BVB1Q>($O|kiIiEb7r|QA*!EkftzhjWtEgSokfL^#UkU4GAybiO zPZSYkjfcLX_8iudyyLGTg`l}X15$+6fa{F*?94OT+?hq~BQ)15q=3z%*`VtuTGz+Z zwUYK81-n~UBC+HL<3Z31Hf|&Z5vXW(BDusR6WUr;+JhrZK@_S0^NzoQa!)y&PDJZ=B&@p=VIrO8#CBMvx=j_Uu4@aCP}H>&4RSR|2S7n;uyHRir;@?=pJDW_ zGitky-X~$*7L}E)6fSD_=VyG9zu_}g&YCpAuWB2sl8(Qf>2N`yp5>r6@QggGs1^1l9yo$&J=QmG_c zXQ_J8rFnfez{^ceM2(pB!hkXJ!_){Tr42 zpz0lR-d7;&QYd>QZ_f0|fu5qc?fp<|7V0Pq#UQp6DQFrrLxujcGi!?5K9<%)yKdp_ z;KOTCppURLepF_>ivepVneiNg{)5c0i`%|J<6}9S7NZOj1D$+qwNQU{w|emlOP}1` z8mE1z79J3Ilk$NQz>zqlNi5iyvlI6dG_H&t(v}`$LIVAtbk(Sq(zk-ZeqJka?CCB2D!O~vkE~(x zCe7d5l7vx1!R5O+MmQ($+`RdD3-T)F?^JPd$PySwto=BxpzYrU?Nj`6S6rR#wVKaG zXn6A4h;L$aY_IviOgjRIqke zT98o=4_oBLjLqbg(*WAf@E5fYVwFH|({DzbyIb?o1#R8O0L3?Q$vLsr? z;aLh@1#Rwuc@IAhV={KAuH$fUCA#Dx=r!6e*`Xr2WRC`W6>v)Ikz8eWDSA>|x@f{n*hsZZeKU-YtpMQK%0KKdu>S2f)(q?y=??|cUjfaG_ANy3}&blAd za?*nGj=$`*xNH})cHAb&!Y7P&&o5c%ZTb6=%mobF zc*$O!vbDQ>Z04%x>Cowvz$nw6*Jcl}n!9A|_;9Apgh+a_UC`z|Eu2@ysSdaiHK6+gKZFl$N-o$K=X=%0bu#oQG0R_^;1Xfk$5!r2hkJDje?4tEQn(+ z-K!$O5QULU0^!eEB?fhCcX@;Q*%KB)!n&WMA_XNIiZ)~i=RdVO8LaYggN`W3?n@oY zspyJMW!((4dYTUE08&+32$c11w@av!hVKwHQncMZ5`~`h2h*V*A|N^jR=+sO6p53X zo|6h%Uu-TFh8I+_RFgs_Cb46(9#(NPU=qxQHYZa7F18xW>2!3o3$>b8MTJR zTdm?UH%}cd#`dJK#VW2>5a47@pqY{#7L3srC^2oYW0%+uMSq2z9rG#BX$18Kg>BCj zwtZXFR?UWcSk;{T{m7@kQQS-xZ~%-(T!h(#w%3c=K9_z<6&J=h98BG=_%U$)+}sY{ z5l?8NcPeXk7s$0hE~q=BWu>||2rj}|;L_^Q++uaIR4;;d{6{oiD9QwjlrQi8W~8hi z>E+)#whnNhqvfo!4@Ia>Vf5%@hn30 z%dZAc9u=ZM{6T}pofs=KQsHR3g-GG?zZ6gSuIXmyDU{lwsvW92ra_Bw z8VnO)t<{i4wfh#e2i(iR9cZAKg76}k?Gs^@O4CMCP#+80uVb`mp?Cy^K_nZ4l*z@d zNbfBy*o1XgK!cQPq5V$B$`}Q;(#{LpPewe6sdm|zd>vY8^Y9EN3i^|4=wrrOU;}e&@G0KyMsYE?_BYK+YHxrnU zWd@@f=<&IJKmnDd#kv-lr{v>G_kzoJ9YZDr-L6#0n-*#!Qk}>=L?n5HdxX>WRV&zq zcC1>#zTj5S*%a!2RdTAKaSYX#k8Ux?MkDLcJQh-C=uF=awGPbVB|$rssyc%F=|?q@ zTMMTJIO&nF?s8?3G>&vswJ$Txl%H-IddiQrDY$8%7%}B{NJojemx8s&?B+?B;47T) zPSZ}O&a1lFp7jgp>}ZLxRn5F?LQ|CdMGaLl>{pP}>erNoRWKPr0nxdXLT8Y9mKb|TFYQZD`Ek(9} zAdaGTB}M({_V=I{W6X%-U&tENCsL&N+8+x-bh~bS91+iIA3oSv+}<-9i!R$C^f+uV z3m~mKKqzRNIuP|;EguxLZ+u9RiUxZ5M2&8=Ll%6mqr|Leh~~|qnzsgNW*{_g>8P1^ z!$D3te;5agbtktPd>8^WYOqj)5(=BhJ3)*6|%eqA-c< z#5KFqxcotJr3b}DI^s$TiOcEJ3y$wBn($@9ns311bmx+#dq#$4sWwD%vvsG^{TR7F z9EMV5l`clDQ+2sLDT5`_p4A_~Bp_kk2ot`$H5uZ}G4Sv;ZYVrbG%IfCL5S3KuK#P@ zs&y8%*Z8o6=u=jp7H^~>(g=&%8@=#)8P>MZQY?DTSIR(>Hfjbb1F3d+KEWVOjU}8G zjCeTf+@X!!&v{d6zN|sOP#q5ww5t^qQ{I}ik?aL+PFz`uqf~FDQ{h_0Vm{~WHeS;=kexNgHXq6Vhx&O)R} z0OKfVPnPaa526)qLb7TkRB0;rR`>&h=nQ2<(i{L&?#<j#Iz)K2qgjvk6V`l&8s#(>W(CZ;0rL{5#6h{MjWi?vhg2^CT z@;2;pCd2dB9ZYDw6ER~wvv|VyP1iV;iV+~|rw-*EAk=8}1YqhFzc7pbk^;J3!Bmxd z$NyX~X=Ad|qe?RG2}Fbehw3sD)?9)R9i1*mWK2*Aiz;2REY{XDz<*>QVq!r!Rl7sX z=nYksaTZ$4ja-lEd-1Mz`7YMiKpj_;%PK27OeA6>3g6L}*Y?cdNIm-day>y^CFu7>f^4>M)q-XCzHnsW1QFnBc`5Uw|ySbstt?Fnkd6 zC!)~GB0@Gd1}ox|%%9){;VXAs#*<&gxx}(0B2D@kYD{b7lrSM=>TrN~(o?taf)!KgWg9Te_`IO;aOBrW;CX3};d?Uk7#O4p3CSf^D zw~4$VBIa{PN%Rd>FE&G->P08JE7@HH7pbITg4)1SFlfRlAAB1}quGQBA4(NrsVziw z|1^}4PHZ8

    V`%Kx(kjDFt--fh%NrYY~O@F~t`;mI6kR{$3X8;xucKJ_r#colL?} z#z==Iic=vbN;JA=g07_sBWC}%k)0rg9ZdO=LJH*?Er_*Tg7r1>N6@!slXC2hkW;l} zYfH$(Oin_cl9x?2Pm1T^9m!$Q6Gza zGj5jTNgyA4mDqk*O@*f`|xMp*VR9yfcD4g)LZT?;=R_P_Z8}I?&H-CF?OlsNFC8;SCYq$w|yl|aS ziDFH1?;+UV{QzOqBGR17SHfhykCQ?%p1?*?Cl&=C!&oI}pJCCBd)c&{fi=5&!=oP| zb-hms&ew6yh&x>PC3d1cY)j{KN;C{832cLakbdMziy`7N;p547)J^IOT{j0LxuV4PLY+KKr zWxd_0>Alsdc4Z#w7Odup_Aw7(WqlhjwAjZ@{UDEaO1Hk>OI7XQ3oM(1fIv#odU_ zA#cZR@qz+dz+_(dEbGIBvuuG%_aS~5JyS6e^E{l{)`Dzgv5^pw7qSUB?< zjy+o53uns@k#XnJsWlPhui{QE-AQePs>~SUIAg-Uid(uLkV|ZoI)uzL)3j~IdJJCf z)Y-eUboW$9R2hYZ?p_~WELY9D~mWGE@&Y{Si z^TdUSmZb;jeXFGRlf(4o-up5^=L1q>_o_wZz1SR-pNzPgb~BoM%;aGI1*L;FBZ^IP z7|4oQT3U$pTU!p zL&|u+Uth`o@3BV-$$*B6XTGQ153)T|0#Tw@nXyrXkx#cSQ)wx2U=Zpmy^{y+B@qJM z&66S+`>KSYN5l-oWOysvwh`N#+z=)G3q~uv*pt%atDQFr3CF;{=bu`7L6kfXgU3cv3>cQhCnlYWxejc@JRr&DwLl0 zncQ{5fzF>gJ-oY{5gIA^>nKCR7J42bhjM)Joa?yy&~pn%Ph*Q0q!%~@!rz? zXl=1QapP{z@QwRrJdO-R3Q8yiy&s{jOQO-4!tzu6EYJH%%6l<<-;{#!c%1P39oKN5 z5j@i{W|=O9M@u7N>!ndCvGzHC+uHQzL_F9 z<$ZHfj7m6NY*)6jU}{GSHyYC zr`cwHzxj0OLD&xY{l0I0e{AOW7p$kZ6wT;H)gf*C-cXzer}om(y@ck`D}u}&K~UZ z46g5C3QOtxHzC^wt@YIx+~ajtk55XE!-9CkS2=C=K(cjGba*bsIYeZ>wd$l(zKG04 z^i5+XPDI8~_Ak@J+7bvq?;|XewKfxsU;8lFpk~adsXk1fOUl-gb@=iC5(Q1o;o)$P0qkj#RRt*A^f~?;%VxT^!XBVC?Z>a8#j!;&>!ZsRjW!FRc{9z?dZo zwh;+?*L$!1LVRM&(L!GoW~RRvgz0uwC$_#R2>DkHB%24_wPc9eDK}}3oL7ix(O*s_ zek_#89HK2FTMvT3%|L0+`myAiM%PBBS1_8`}1!85rzH@>2T%?7UN5H~>L(ZxFNXhMe8xtOaq>dpR zd!l06&6LczbIb5HCN$Vc-2?oM6kwaJ4q=o(kq=e74ZC1cBW~+$$UK_ZKrULk5S6=T z$)sF9e3D3-RA90qiS-i(uF97xnjiVns7xMy)t5%)@$e(QG!fLTzBCcWm7s|%YTCZ( z=&@rTAWeV5vj@*gupWiG70(%f>%i{;d@UY)a~>-M?FP7u;nH@oBR?HGRsi=y$h|-`nUqgF2;%aQUMw-qS0S= zDcyZYH=$M0{kI+Mi@H3x;H#iPTxzwb!`nhv;TC8lr8Roi&~?BhEsx3L9+v{Gp`)k0 zyJ&r>x|g?owNQsk)jS2bECRQ*c?*P0f!4|TG;x)lw#u`*g>G$aYFXVQZ}b)6koOW1 zRDrlQ7eUmwyBizDC3^)L?qp*K5p}n&tzYjgY4JATB2I4w!W4(i#Vu^!0?pggNwBUDUG9(~4{R+HlbulI2BAy5)_vNEfazrbv~ycNb{5 z5t&R<-?g4d3q=A8aEIGG&w7OC=@$B`Jl%9R9b$m%2gNaY>y>cr;^r=IbA6YmF$5FW z#;nHO!iZ2Ut}6Get7@)q^mJ8;`-2N`tHJ6vTwCWu6sBvbZ^h+!NL^#2arJD0*4om3 zy2cvml44)~M8WmIMj(XCi;gIPHPy4HaIhLq%+rmUW%ccit+>#+S-7)t@v68gdOmLU z>1gCEFKB9M^%Njr&jMk-0(Hf+C{1(&wzw8o-i@gBw70;5ZH!U2!p3VnGJUWdnL-%1 zs-A9VF6wE*C9Ng6BX>0wvNPxsWmQPzC4{1sC=mL53pa{vTU$%FZ^`p^cXZ0D+|-@9 z@;*dS*1Ya^zCF~7S|CerqrB%=mQ*s8rB2A2BD@mEw=`Sy7HHPXHASqAdn4(V1{l`3 z3zrI)&{)~Q7Z%n7r@JM!7H?%wdpio8Mwg%?_i%@UqENaN+~URMobBDS>l+{|6D#UF zEQTJaTkz*?(XWA zHcQwt<8f=EXecW^>auAstlA}8Q!a_cbn!UZnp%rxHMP|pIIk>Ai`FBq-cR@Er2kkNL9;C}-(ebE~16Pz&d4;uXFD>bm z@oDmOH#A$Q2wWJqqrG)K2MF!do}g-2_rZ$`S7d8bpmhYfSXT=b zIxAPVp!!6HdBq(aUHI(*#EJ}NRBCi~BE8&X`9#Iq{Glh}22fku(%LHX!B>D&A@ahP zL;V9?Oe2bpwQ-ZpQE(nr^B_0LBEob5rWz}7QLr=}bSpM~mw|r`fs-fWThQ3T?W#}w zn&|pwqfS%PE=*$jDZx*89N&ldK?S;{TEl&ZP3TmKyxDRfQKWme6Kez!Dm)64XCs;JK8hME0 zs3^@;l0<%p>MlW9my~f9QITlmCQda)Gz9i^wb!>A1ev|4&f@;zDouzP^r zSJ-`<-NWpD&u&DK3~v~_dF+<6+rjR|?CxOqPIjMR_aM99u{)V(NS3kN$?oOs?qT;X zcAsSTEp|U=cVvl-pPSu9?4HK1m)$;gZ)W#lcHd_AD|U6inH;J8zwdpJRf(xiz`Gew z*CjBT-R(@@$?h(8Y5joy==Z7VuTwf&GrODFy^vk{J!|^=LOR;_>>g!TU0y3^`px@y zv)SKEEVqu`{p`NU?i7}zd3yRwVOOk)0^cjBnzoePmF%Xn+!%J#*xkqc|Gyk#&P?>| z0sWGOu8*ciQfQJVrL|*qLCWYt4Wk7yLzIG#CUn**boD4EWDI_-nC}V2olxUN&pDw! zX99+or(^zLg1Yd2TpK3RJYD1RCWxT`-Lp8Ms-p)#&|rvIzWm0wY13=kPjBy7+n$17 zE%40LQ`tFqCT6O)TvM+tE7I%3tl4T10s)^{RQbspwJZ?=9Mo6I#*c6z( zDW%P;@h5vQmKe-eFV3p8j_9jL0k;n8s|!aisFE{oBeN>AiUY^_=4?-O5hNC<;g|Yi zga&slj~w zVv0$53^fJiGlGFICDn&!9T!^-B&X)cKD9n$=MY1a>NAAu5Zs?La^lGS9MM3TfH77` zZ2^+Th#RS&uIjU;vZ}9{nIlCC4RO`Z?Wgr#{Hc5M?GiQKioa};Bw+)9&!6IVG9N3D zK7We8mHEScxcFUQ4*zE64-LVOT`U=~A^1a?j~xd-e@g#k<~x13X82{y$MUDopYneS z^Tkq`MMCk{o*?|oPQbsF`BN;q2~_&uXFj%&`1~pUu@L-hA88XggXL8}tT?|^K3#eA zb3^I(6Z>yOH$Q^)GJ0mQt6;)s1*saiJer$RQD5k%(-w*^7wZ(1sy~|X+n|OoF>7`L zU!!v-ouL)wOe)MSn4+!8%OXa}7DOy_fMCd0daC zv^g;|655KOREDaJ;)oyyB0`0dRe;}KLAXQ$2%=UfV=6I<5-WiM1s0A}b6<#-B9f-s zHLQIxyDQGZuV|i(*@_t(Rk&tfs3_#$rToDL9lp4n%3k^ zAs1*%ZuVKTW}MMdeg^ESv9C~;hlWO_LFz|v@Fesj1GUBYIhPibN)BWT78PkvX$sY|tcg&Uv@lTifejdJz z6UxpAmiJFrI@2@!Klw7IPxGVC4rpO$M#@B5-ee!DCn;QBO8m-EbqIPZ%PIGG`iU1xzw%FUINsk@D51XGzdu*M z2Xs8YRvx7n=hZbezo+b}WYqj$onLu8Ger4O^ImO!@@hUs<+IYS=2!gbY97sB&x}Ip zv&T=rnm6;;b1BEuUyquv^QZqdg#3LW=m$d3)jZJ_zj*%A_V*3e-{+_2A56c(kNz*F z-{42@H%HpdKY!Ic+a5o8H4pZvA6?Cx`O^>be4W2N)%@Mx{qzju`1s3*suybh&EF1c z9?oBnnioCd7j7Ph`<);C)DZM7A>w%%)BWwK<`@0xzY8IMH`D#g?ITS0kLOEF_b*p! z9@9VEk67N{Zr_9mH=#_H6aV<6fIM2V#Csac=_gBK7#zEWU&;Ki5d3!LM}**?&HTg= z{Js-ujen|-a9n4?Jd`gS(Kt?Zxr z3+lJk-+&YFM>GF|5aCZ?ekl7DFn@Ol|FfC@L6n=moq<9`D;Ca{*5Q#UwQ)l_nd(L=n42Ao`4@c z@A&o`#C+`(Dd*q5WHLX-k5A)QdRFmxw3S^iyXUfd2fL56dxYI@*$uCf;SObYCcCxl zu3>izyH~P%BfC$t`!2gj*-fdIdgrm*&hAcjZ(#SoI{rQnjTH?^3%Svn%;VEvIzE)K zMcc>z75;PG6M1`W$;+~jN^<0s~f)&3iocYcv7&5Qk%*iwkKC)!4?&8cX@R_ty~zP;EHDSjBV zrX2gMv1hBk!DHD(rUfVS@=^#cZRzZ)$IkWOo)x>M(~I3oC0M2kAy|Q(&e&nz>8bEE zg;Hk7RMM_S%mPv>upv}y?Py<}f~_=~npsraY36q{dbHCObwP)sn>0a@ff{m>CIc~u zvs+s_rCsY=P47f4lUtLlWQ&I2{`>@31vVj>s-;K{eocEpRgF(dd)mD%tJ^(|BFV-S zsGRXK_6UZc*R<1*xwka6U_mg12rU4G;)xw&+UdpqoB8W<%x$y5*tudGHNp(yHSajQ zDaYaEFb}^Wx4v#kGk#jT+WL5lrj%?1PqSE~Q{9w_`nN)EC zR!(ql&^Rfy#^9{nJZvfsrY<+HXijA?#>8Cu-K5|gcyR~kxI=1#vY>t@<%J3-Z%W7r zxLZ4$>&gDXVv#c`6lY>~2#tBUxyw3>R~2_n38pX)f0FG!AwQ@sNrC$W0Wcpk-NCAh zia_x2RqR7}HrUz6)s6c|g9V+N%`snu4iCRd{xf7~H=W!{7gU&SU6<#sn^M&BbJQv+ zF>QYw%_^!&{^vzxN*(qvdV?oSm5bwQTG;L>##Rt4v9xyw&7tbG9mf~2YRH*XR*wzV zK}=_rnwUFVbn`*Ptf7TgW|caQvPsl(xI@J#CzmRzTSjGJ6`k?Y@VlK|#W;mkOdT=x zVpzZO>As5R)5g=;t@W$P=q6H!QywkUU06tE_1+?nr@a!Jx3S~WmnZwZHJ)-Db;ChA zY78ts7tk>#9Cr%NrG7;C!dSuTtGunV75$_*Zz5tizutSg)`Nk@#N4`Wt#~%&V|`bP zx1+rhySrPv;hkw1QFy)8IKE{eiL)-%)IBMoIb!=umyj!-ExI$a;}zxGIy^JFYk!U! zWQF#tBrL)zUG8Uj_hh$>47o%Y>_N{lz!%`t77h$WC z$13LbV!!(m{9Z1dL9FlY@xp5WO^wBau*fTRa|iQ9#k3VMBGUz^q{D^5ImNWYyp@>6 z?$XB99(Q{;9e%8*!$zVeoL=m%s9*2tq5?nyDA|%AhR!~eqK@wFjy4}sbw{VbOWkuS zD%FN}H-10tbbpH4IfgM%C{}K0)LS4j6g$paRx+47CH4Bxm zZpViH8gZHnr&g+)TfFk%PS9ggD%klQYg#pzMx9%2Gklm+Ui@{VL`cut+jgES9dof zGUy_3MxqOibO*R4#wlR1=(rAol4ozNCvprTACkqUEHuZaEROYc;A4G#RnO|x9xpXV zfjmA!hA`b-G>+_IKRA%!Y3oFV)S5l5oo<|{p)?yQtP?S=MK1s3E{v3*Qt6$~qXzl6taAx65mFP(sU4>SR zv?wWpz1Y}^vn0?cwyjq2_a>~^;qAr&bwqhVl{~WyK=iIuAB)9+p#g&h9A~NLQ=V$9 zKw}6gsVFHzQdq#3QAI}aC8bD1p{D!NVMR%x2?SqOg+U>nFP1_i@$s!9L;PSeiZ6tl zXpAO9k?o9xSD|T;5aMT^Z&h9qN0aCkr_(v6s47|~G8$Wi8v&pSVSA|9lMIXws)??I z&Ub3qOwvW=TISs%l0_p@(t?tXqr&S2fsT{QzR#~X5QFj+drBGda#u_T;fX^Mq=VqP zo~~9d9CfO6)HPrnh4Z&u_(+Y&Y~zLi<6Jim7t791TuXqX!rk>$K)E%eirR)iahQ{T zf*#wbaa{l>1LSH{*p4pT96({v4FfoX=GCz66t=)IE8n_6rWMpibvJ?>{b_6JTYEgH zS2Q#=vSv~q#(cC98PingBP3U}^aw_d2xYtJ>Fj7|W`3!FF(zpD(kVrBH0~x0H9cs$ znSy$zHDEte_c{%uR!Xp_eBuOQBW%v+#@fvGp9UE?SZnlB3U82fc|5DJ#fu`*&|D|> z5h3P$vw+Wmf6Nc^)*>VU!w1>C23%F3ik0+Bmlt%(9q|Mj7Y%q(ndkRl;MeMr%_v_v z;8oHHjmFMGy;LO%EQ1_-je2;MA{q^NQS&{k(Xn+37Niv_PG?rsuky5NILRdrA8U2w z-IQ6xTdJEe+@=o)oFVnWg(nVE`3Qb8JNPd4N>3BI!r(kgqB=4vPgAQNeYQWN zzLnyKlH1i4JO7VP&SUOiqm)aW{z(i|8k?rW3kI{^%zoOh?=X_AQXC1l$oWQ5E|0GzBPp0}- zs$fB)ZB$H4HzqnznNAB;+$kcD=Y_I?Ma12Rqnzl&EefPBX$`BSx;_J?m#!_5K`f$C z9M6546qWrJ??TXLur0!|NN`k)l-32Q;J66{Crfy6=o2gjSzId)OUQUgf(cV`lo;|! zXyK#y0i~3DuA!5}V!&2BM>uQg_5h4}#5{WoHKJlRnnq9Eq3&G}1>G`M@f%yp^2bL# z)QAgp!Hx=EsLerB+4-wP)s?uHnU0fLTbHW+k4p|NQftS^d(pkPQSbKJWGS5}y_>Y{e_P`nl(bP+csUK9b|IgNG= z=c>gWC0IzIl&Iq>#>clJcriPH%;ZBR(qdjZr7e65<9796K?M6k1#!b1D|!9mVs7OGR-Z@5Po3|A-sa#W#Tghh;*Z zj`>fViwS)xOUTnNMzrOc3|+p1Zn(SzEjd08;2K{o3(z^>^G4jQBCHL=(LF1GWtqkR zTwK(HyoPbnR&r)b%}kY|mX@1qw7hY|(Z*Pi7AQc3Uji@N!0&| zD54QEqw+ryf#cZ78a0cRiq(hh|FY;B@v_8KEs^{$i>iv2C8niSx!USh{NpP|%;;!~ zv1P6MOiI=Nve=suv&6rqd>(eY{qL&eB2Jb#V(!1#_acW$**SEdRv^{f%Mi$(oIO<= zcZ!;?lA{zfAzk$;G+Ve_%o!d>fUf1_4^H`k=6~g_)Nn#E%&kqz4jqpZ`d`kgR4wgm zI!^aMTSG_Z`Z`+D@pLf@L@aA{cXjyFg9j^G(pBP$RD6NS;m308OrJpwVIIEVbUALG zz}Ip|LkO`@cL**Qx6cN>T`+irk8|hXa!e3m?n$l>iea?Zaue(E)cFf5P5$)IiIWo@ zxJ;9WHx*dnqi(i9Brqg5ghFHbV|fSxG5+(pfp2-R%lm?-IpFeI^6P(}ZE&w*F5fTQ zKw5}MtgEh-&J5ljgu1vkR91wXR9UWt z3PEf=#YBP_z{_ju#F}O3AbzP2Y5{#F&bZk^PKV%xupz{aDHoJwA2fs)(WKB6O{nCE zZ%2+EPZFV~ESIw%0rU`|{8#UgUH)Icg*HSLk+%zqKE`?t1FVO&Cc1bqkQE}0EHCFK zE#K#+sz6oev$RSjm@X}p0bqM45_woj}85)7Wi#|o$5J(OYy9Qa@ zWe@iAZi=NAL3}>{5>Mz~C+7uE#eYJZUxyxCFKi?7xs*3yaBm`NV=zVt3&|Q|nSS%R zYFE{VP<*62e`4_Xoj|egm?gLhBvEF9{}iEYb3*V!BoxZZPCT(FHUAvJUlI(K0)6k7 z6}c1`N`PF5K)6i#3_e4(tG=?Kq*~0&Y(t4yR|7)Hz{pslF|WQA>GYw5NKr@7Ydk{* zqjn&L;v*XBE*+Vn1{NatpE2beDy%@S{<#>+r_UY3%l)n#Hf90Mz7XFdm_Meiu4>SaHWAEHru~pG;F4Tv`n-{fJG~I*MfH_!!@77Q!@Dm!q7Io09+&XQ&`5PN&8mDcr zRT2r6A{O{$Y@IZ=dQ8OnPfiY=Ts#x;{NTZ4-fGi*(yW;1hx80nY=T z2RtuNeqw0NEx2*E9Sb#O5|F!zs<3uJt2ZTL52M6ZdpfYA1iN8yOsP|F=lD^?&DX88 zixXGotr7tC;4oxF9ZN0P`AjeDSS*tEK`$ugv#2{1fH0RraO`3YZNpZ$+$f{4VoZb~ zM9gF3B$6ES^CB;ndjn|!Vnx`6%3BkVV!39BJNP|~*wf_2+}Zkt?J}0wH%7PkHg?so z^}4<5kxRHYucOD?x?b}H+tNy3V{5&%FV(u+RijOMvmo`rj_ENNLt6HEyuVoT5h+Nmd3W3#*VczR0*qq7;9=mD?qzzAjYwlh}aB<;*R}X zGJS$TYg@EN)=mqS-tP6-0aZs^f3!NTHsx#TyRd}pX_A{Yk&oDc%>|2Bh>`pJ8xpc& zsxpEqruH6M*YK>Js#?j^EV3v*bh{+J2duv2&E`HtpOtBM<7qu!Y(!ChS&OI~k_gaf zUBsx<+DeEu0NP2`;w^2by-xTg7_mSLf?ERh^kGf~uiev1bxHp0gV1D#%1e|6!A!y$ zT7xuV;v+|aSy$OPEq8uCp4_y{UpUsqblRxxR*QgUp)5A)kx?3rwKx1GN*!&lmizwDP|>E6`SqChLhZwc z2Ca0@7q_6}vlJ(b>KfV_wW`tzxg#DVu_F}oQsQ^0j0~e`LgP+!Hh`y5>}SGU7j`D# zw@laIg0>Zz-v-)E5@0BX;Vnrc$fmeVsve@<<#b*_OFh_WIk zx6G^%C=EH};6rP`WS-^ltid)iO3oT`&md+H`4)LLpIDSsu-Iw^&6XdzP*EE6GTgvEf0=v|EK z+F}L%)gT2JMftkI5UEt)<910yM88*JETw6K`4+U{?CRPggU3J*UwShtLK1Aa{X@Z< zO`5J?6&}g?|7~Giee4DaPI><`M;j$TfhAE=AFNiz;K?RwCxa{SOXBnw#I^&XC2I(~ zL4q$~Rz+x$HOx9Yw8$Z574??^>e_M%nD5_mH19Q{Tcf~i@zbqAQ=oi3WcUgw=~LKu zxuK;-flCZh)d~i0ZL;@7gW!4f?M1fv|RCP9kPnjhDq$@=&hDh~V1}`>A z{=S}P)}IZL8U-FRNC7Rk@^#n{ss5V5f14!x02!KtU36dm!B1e;Y(u0*foB<{6$-45 zm;TYdf4os43kOMJkn*XtpJJ%0Zej3TlT*@@Yc`*)kh=}5R4GtJ2syL)Y=32nd5#h5nouGa8Y0#HA`dg`BSWO7 zkuRk0V;3Fhb_TC8Nw+ijm`VD8!5>W0fWb1rEOvto$5afyH)2q&VsM?Is9FVgz$B^Q zOx*#g(^)#o@D-3Jr5v+%GloYP9FQO*k4O(@aHL7fW3b#LwKBNbBwfYeJtoON3sej? z88N6H0jm5Xt$h7t_zDPH zi5xUU7Ax=@gH+?MxQWBuWQ1L#z-J873I%FIqFhfoP=3B+~ZX;^dk2840B>lkPNk+t~r!%<3B&oQjC8^-5Ph;@+Cg~vt zUp7fjPTUZ7(TI*=aE3`*$KXzrw3oqmP12_f+6>!Nr!#noN&1n&2*Wbfi44v)Ny=_7 znxumaW)C;gIEleRleCz@8%)wI3_fj=K4S25lXQ&1h!jJ841>ugN%G9M%ES$vO<~&N z9pMU5*%_u)?ck3N(`ObdUB_;a=1qxgGDNChVsQQlP5dFh&S&shlcbH5+~Mp(Y8HcA zOwt|(!$%pqBw)T3tJM&xQDAMV6hm>}zd<4IFcIGz3jEw4RVpwp&Ei!dXEG6^1_h2B zW06zHrA*YdQx({eZjqCq`Bq8TY$Tz24}%3p)T+xETxF7?`9j=yc45S63@$ZEy$s%L zlI~;hb(8c@26K%>R^Q8@!$?nc5`%dr=?MluH%UJ+n8c~3crm!tB-JsfYy&CNCK6JX z8OG)iWmh3b4dU{^va5V18A6pi!WClrtPAv+&Gx;^uyd6H|IQ>7s5>_(#I*EsW$8N% zvo7~fQ3tEI(9j;xW!=K8V`gZ(Hz>pm?bN`~PW2Bhj5DIt$eSt!?qU+svUh_*RK^AQ zATMM2m4>Q-h^vh3HS)Mdfth1v)KDd+GWa)>q`((4r4-_{Ym-8*9&dQPjlq2;$v?#^ z4lfyTsQw#+hfUJ=44ToZR?#XnqE+3^;2x9o7=!;bNf%_uIQ)uT6yqxyyw4=<;iTQi zE~Fl0@GX;+lO=V{XBSczGx(878a7T!rLYSr4_m}ER`m@5#tNuj%2?+cmRYPo(=t`c zGAA2p4j3=p8DP&9%9n~ih9N56l}5Z*DDZtIiJVu6N|dhE1?Kz;|D1oD#TDL^LM~Q7$C6Zz|^OoXi;}hze0z7p4VijsC|2-e)8ZDON}!rzcE9 zGpLZ+X5w~lQph5MSiK`$Av3r{im`)2W*bC|GE|1QnYp`r(;18;a`_aQpb(YiLZ`~~ zKNyl2q$uPegNT6q%fbv!ZUwtGt;b(P`)|s3Gr`Dr6=T&v1uYD@Y<6XFo7NQ&xieWt zwIsqG*KjVVh9gWnH8AP5EVP|no7Nqm{Rz&bw~aQXUV&lOtWrpSChA(fzpjbQy3z0# zq)WYk^Xk{^2GOG|cE}J3_;ykvuNfi%4Vn^p-Vj-=!0!yw3I)bYkg35Mf`76UE5#70 zQQ+nrmizhxG+3?3b$)*C_B~gA~xUD_=tlk?Lv&+fC9s2H!DB zN~bna1s7mOr90a2wOE0v1}Pwal&^3@q*8$@%pem>DjKmybZQiMhe4|Ix7jPqde0E4 zQQ)dPm9DB#zJ4@(RmZV(s^O~|Tb#sSnMn$z=mSI1Vg-I}kOBm7lnIr`+o+72ts(!IiA!jfVUKLn8)gq^mzcMk%wCG$`@us0Fp!Byf z>(_=zKnHw%feiIVcExyJArD!Ix|B2Dius5|C|n_bwh#k+j+iF3jAmDasgN8CF~H|} z%-qHGa2m5rH_ss7!elhj7*9>v?=C;P5oW^0EBNFuMYg$;I78YARkSMlj{LV&%W{V_39(WPNBTo51O^eiZa{7(X$_GyF zk6%Pd1E6V`AuN{~L5og>hnfBR1ME*=|Nb)p#)QLXTMVI427)6Uykv)_#rkj}G%ZdN zl%Ug44xTGc1UO)zPMYx3Z4PKDA2htqF%-99 zgS0V-&Tv7H(M=ho6KO<*NX5uOa0nkoU&5&}{vxWQ2kI*MY1RNWZHyTlejF<>iU@bC zArc{!Wmu&mL~=9zNJvvWJM{IQIv?= zUz%%Lkslp3kRx7f1So1+i4k#umP+MFhd^h8E6pL$IsHYw*0eIEURGHSwA`wi(lS?x zsdhl5Wu6~Z7&TAYzao&wocU5Y8GC_@B!LS93lB=nqVXsqlm;W!i^rp6_)sb%SccS8 znMD~jWEuJ+n`q+fqA_)9Jd72?Z(Xv$@8s6grUp#st1(q=6WD*jSjjdnOxMG11a=J` z+pMstuw6?4;V--eGnp?!#nt)P1Q32bu-Aa?MVF~Z44nn(oUqsNNf425!dm1l@Y(NS zyzH9&HaJoD<8?P4JvRD5IN{;__rbCEi}{j>2M7)y={N{ibNm}G-7%C}Xvb{4!yTvL z9i~Mc1>;fzW1_Eu6Jd{W!_j|>mp!7N<9@iB<5?m({)V^B@eST#j%b)7+%W?02uBg# zkq!^u{j{hGu-5^E$QGj5V?}H(2W*dgPj}o7Ky$o=x9<29Z<`jE8wMoYKFSeAfFm7m zo1+BpaK}o#?T!t2k8te9d!*wvyi*nl;C(C@2Agu`LZy_hk#NX8Vb#$H(mRyaK{ipuUyi5QMeNgyU5}KYa4mjxfiU zfc74I>8^eb7uoI zX?j!*;6j4eN6#TAJmwNm^lHH2(G`xBaCL_lZ=2&%qB(BI+wOQ4Z>Qt$cqeN@MlIJ+U_Wlp)j*$R1Ir8z=9CPs2H76D1M)%dv_0jvMf{IiANm z%<(PW;hHR%$>?$Hkqi1crUTF%b$IKJ3-Go%?!@fiTk5sfBJcThuT z(`0C;0Jb~Q935~q$3=pFGw~gd;T`692k&q#hODChKyYll!-=tp?ihi$%`p-0aK~)C z?V7BDwFJivbF7A|JI=-1=C~GbRNA{xboUZrfa?zc2RsB=8~8Nd2Y}i}VHEQMfcR%Y z(FaAp0Vg6n>LZZe2I%}c`aL+|_LKC(a0~UUMCafaP(t7_Vb>5%`vm!%HNlX)`f*&E!JwWdvbfiGvO5ymV3iKnO?m^&= z7U*}rD8{SWI+!afO>pyoinOE))D4vO9b}CaXr(Xe0VbpkYa80^I`5 zwjl!D2lQn^DfwYZQ6rHp&}D0HqGhHb$VizG#UOCToNxH7j(IK-VaA zsz9&tMIQl5MbB0sxX%EkQfZqg(1Sp!JlQ4_swMvm#e3<%vChH!C~l*)#3YOwDV_r- zql^_QWJ-lSVI`2G#F@G@F#;+mLk1RrF$_or@_pd6=ENIO5QX>Y@IC{K=ZP@`rSf+` z7NDvOlzI3Q@nHCY;}EJXDGV8AK@)(w$mayX9qWs_ebFkQBFr2i>`^GC*p_szLh}gK zl4FnzyDQ(BM2*2)NRNxGimjR-03HOU?M7X+4N>2MkPpIu!sr5`V|+)AZa3i0_&C#K z7lJ_H$B#ssX?veQMgh59A*nFa%RsJ2yBa^bIUyIHM^3bp@oCM8s_w>*fsbsqUwk@z z6al#cc^5ynIpJglXEY~t0sfHanWn+xv*6)YFdC7p_;K!pw=i`3JMj4N?!>9_n%0Ig z5kCP!4M4iccXsoTR=^^*IbJ{u>_XAy(=lLXp@_DrCI1xlMbRwJbN1c9EKz=2W)wk34}eVe$l{rUsYNR)+m z*?zqRl!`{YY`^{qlp39Q(SB*Jn_%Igddk2 z4|&@t=fH5}$Poc2Xs*KmhUu;^;0)LCxvMz`rs7Q_H_|uGfbED1vhkM$SOfWh08a)n zMIW&Wj^vy{yNf$V)!-UvN$1&}Wxds4oxCpG|CK%A-IY*Jz~fY4q| z;m19~m3XT{N`cTmOezE?l>_-02-W73=IetJe^g?NN4SzAP=LsaC&^}twrq-EsnHHg z8U$3Rm(A2rpdua_#MN9Apg(y5)Y%8kHq)^L1nQjzRp`3rsv?V&bSg_;zm~sn9278b~j=Rz1TnR*|-Pi0) zppAP%*8z9Z1AzZbx(a1}9-~;j2ts<2%ZOFt>maN`<|Lhr0{1NtidNF8K*G_E2xK|R z*gzl@O414-NeZch*cc_&0A##E8i5olq#1rnfm}u5v;esTJ%>?4j}s!(g}omA+k+Ux2`9?3*>sFDQSbQ5BaC!oP7*Xn4TELmP^_U ze~AjY9Q9^25D`Dw{L!{ak$BnsO$AD|DoHkfs*)wqaK?uEk5ndqj8N@Eg4CNKWr){5 zz}*3{Aq%MR?*uf;bsc%5-M;qZbm!pBkbt^G+V;B#aPl;Gqn*RFV>x*`kR3p%6eiCA zavcyVaLF@)>;ppWW%4W_2Y}F+Jh>3a+d$|uBH0b(eIV2%CKmzu4#>l#pcu#i*oR7M zatV-GK<+0$r9kEap;317Y#_Bj$kfSmfUE@aC5ch`+JLx8bvY2)lS{@-o;O0*lB*Dq zJ-NSG08asd@+di$Y;hAHJ0&=}5%fqsdMnB6(Rab=XNwMpt_XW{I-Gv?s651kK1&>F zu6N)i^>Jj3?u?>c;_m^BZWx^qy)5l8z)X0LJ_QC%3q#N3ChSz(D0|unV6-ngdbw>> zOxhS=s|Z_xwm^%T1n?iEXIvDS<|lwdhegrg%mKmZNl|3vM1aGFMV$&0)0ba#h440x z1ZG67gKROt;r21)WDk!^tAR_y`Qc8A%@PY{Pg`ceoN1?6u!OYb3PW$6lD5)6@=thKu8~9X~*9IfeOKhM2t;720~dqVn}ns_XlKPp3W)XuuX8YU zG|;I<(RX+usQN(HHzeT!?2IckER%Q!2o*?Z+ zxW)ScEwCqD4QB^Q79$u~=zQcOeZbCk~1M^XV5Cr(%R^BDJ2*i;fz z#SlV^ng{r=&@_6cYY{*@mFM_xK+s)OC{vffv+i`!$aL&YfSsvcn-RH;1EA1AGWB+w zJM(QIB6j!N+|JDJfbAs>PXf!LU|%3?jSc3)jKJeSA~9G@8}8ZRSL_gPJc>N`#mdhZoMj5*WjKS&^08;c3R1`+gfFCm( zn5l5x4*W!e*C;A9mG~0NOc+B>a;7t_5pFTEBa=q`X*~)ySg^-f>0=8!kF>*QaIS^=!pP7v6^)e9p zip(4e zn69w9fr(l=8s>~#D5C75{rh9Lz_&AULq8)%8LDlF?Ca;wxC(4)4eqNc}G9@xVM3b7(USNLx9EOzEOl%`#FbFl*i*u)g|&>_;oAfb0GCVM3lb=(xVWY z-JQ`3LA|adliDWwu zL+l_VMsKo>w~yXnn?N<0I_%LKsTr9-Rau~C0}aP#A!1DvpP2V_(KJY^4OT^dW)Qqo zz)?@a5C`ytk94^~PR_?9TEh5ior9?gKxx8Oo^u=jx*T)g0{Zw}B0|Y?!E=tcw9d;w zpzIw#(VbKW_!<(HO{;4c;M8^y5rf+ZzF5Lkzmo3*oG{^c&cPE=nkm=;De|jt!kg}d zF@UM3pYWbL!3~&N)d^oWXDkFvp-o6aVd_*!n(of*1wuJ9A&&~v)xgN+6N*(~YDFj$ z_Q*uMfS{cd%x~F*cR>(p^V~_F0A5ML;+s-)(ezE~k02ruXAry>y3sn*Xkz#XP0JqT zx)9{CwBbBq!u6=>oS+ONLC+(yMvDHd%Y1&4!uYMMkuGW!Qm=;w1o8&pFHP=@EpLCW7D0e)Y&seOZr^6 zl5R^U`ahWdgFz1~1U<(VN#1g=Nt51gf=k{e(q>-LPe@+56{)ZwT6QI4$|E#JZ4`>5 zFA|Q3R*o%vr@$g4FOqnT~ z%~r^iEjINk~L2pOP`YD58jv)j7p zt9{xcXqmbL?5~Nvnd;Y6T4A)$0D2BdPlJS3FpThXUnTQt)4m`IwJ5fgF9^zX73)@b zpg+BK9mV`=U7umIA*aaq)o)U|r>%tcsVhL-LB#thx>L^qdJUlu2=pePHxl{~q0_R- z$J3zQO0lbddaJ89A>>@+F3*xjf*CMV>R%~?y zT(7+jVqcTkCpyh7>xFuav1(ih^)TFCN}1+Xe$$QVn;8V!2rt6e1dU!Fsmg2Fq+Yax) zC-0RMw|&RmpMK_|KHLVT6jI@?4K_Ppc z?B10pd>b$({hVQ%e0q_IPOt#RI1fUQ@!>o1d&fc+|5CR%&;Qm$v9~qW z{BjTnGk*5~Gi@ISBMMtTAmismTOn=ukcyvDtxk;UwNo)H*hxV=aiaLylqYqHPp|EQ z=V!?C0V)@?!_72)GcY4=#eKkN;Te*m?X@W-$tcY9hyD}F29AfwtEB8vA7!)_Zz{{f zddMzP_Nq>U+-Zv_p`s+cBTAAs?I2MKr$Xdo{U++wr|m*ZCuM$OnU{znWct~Jj8>!~ zla)eIqDU=G)wJ0Zslhf8R_OXxq&%tPUTFK^c{O=Xw&~ZyOnP`bVs4t~GGIokrrn9w zP{wDdh|jb_BG7cQZJ2G39Gcjaa&=rrul){z&|ZIAh7D#Lh{;tmfH!~{0Th4XLkzz|#*r9^m}y)XkG)tFm3mty;)|&5-1GwB%{DjilAYjxM|g{krcp|0Qp7e3 zPpfSS@pDdMo1AVV85-1y%4Q0#1boyWpU2AO0liIPb*FFu;>&f#9 z#3W>EX;U85rhUCuOV_kNlE>AQgx3*GGYS1Mt~Hae8rW~iWUIplAkD?s0vAbIEs|8K zFBR>=>M*LcTA2#s-ib1ydhIkM)wUkNl)nnEVraTPtR2?SwYf^_aYK41A|}R^=Y<6h zD(5OWb&f!<-4A&&sImCDg%;6F@GM|vf-eO27$vwbjJ8Ig zI$*R(e~+=N*UlWPY44Jsh?9udf+!k-*zhlU6zll#&}FPtUo31EA5J?_P%&AJ+W(LK4{Dw!HA9Z0rg$GxDijS7 z;}d+6up)I<+C-o2NWg8J;)6^A7Sn zUw&sFC;rM)qv3fkJk$3)JckZ-fxcL6z|rO@zukro4Gq=%q+{NR3^-4DI?wPt1D=QH z{~XU1%9GkQt=F!B=VkD0%b{UgJFILrLN@_38X?VDg#j~dAI9!s*G=#?_G0*R#`F&} zCvJCvLLUk->%%Zt3xwL|nDc?$4P-DOJHp%xZ$w{A85whZm;=RkfqmRyID&F}*f4;_ z8DsDknjQ>ukIPrwr@|_TyRbJ<eMn2vCF=G_W82dvCz zfYneiSCZf-3cESnJ+9w$R(fB!6Lu{gH&PKE51$UOICH5Y{289b^nN|5iVYLfn=YDv zbS1-t$xpzRDfubR!FL0rIo2s?%c;ueH!n?~u8;b?{4MUpd4OrWo_}e&K5i)xN>zTC z-UhHZ^E|xCCizaxrjFaL*hBRj1$(a|WP!c#4TVkD{{|4NjI{JsPTs}NLoNAlh*d)D zFrzReegwiAG_SE+Vxki5=udt}$b~>$K*)lz+khk~&aZ)tQJkxQOpVvHH^|R*K+Xk6 zXuB1AT`vSeX^Fk_Qb4g$Lv|{{eK$$M-HPz1#{?nqH8{_pfs1`XcP0J}2$inbzofeo z4+9aw{1_9J`I8ch(CvdVwaFZgLkBMw7|r9wjwjw=U?M`3iI)nDOdVUOr|X${z(fM) z60b-}t|V-+l58f)MuoKywhq|+Xy9TyAi3~TU?P=0`V|0UqcX2oluJp|g9_V8*bBg3 zqy*ke*xwcJPlWvl>}}#brpF{^4xPfW+fTdc0a}EZQ{|%JrSRe z2wM(JSmPVAMh7rq(I515SLRxU{hP2}<qg+gfZke zGvd?2QGh6U8MGB3EmC1vpv0o=A;{-}l$$t)oXxqev?7+srHut?vn`lCZLS4#rY*2w z32BuI!?I{fTCD|3PdnLyWv8vMU{lgoDGc!|Olz`WWof5butjM!Af}Y$LUL(Zm%@;e zm1%1%SaaH$7OXSvYzwwdb5SD|wGw)0w|#7U6pb>XkzW&IT%Q1p9|TyB`U&6>KzR^|Oz{k? zC)ln|GIoz%jTGrg#s*TLc0I}1LkcuTPcpWV0(I(1w3Bop%A5^of}TXZHjP3EP0^E7 zw@qj|R;{ZcIi?1|rr54dGd7umsihg)Oo7?c)43nXcg=q>hD@?zB_;6Ez8hTYyhG&ovET`~$>`ssQ*Vpvkdf zS?wbN9nKxF+CY3s^}hoWC`(O%r{uf55U#ota5g>*vy5z6PhGE`W#kLtc0J3;7{X)p zEF)(Kcj{S2))1bcXQ>etbW`SJ(YGpndkdU$=PL^SSp=Vs?=Um?Yanh7o^WgMgj<6r z+!{RL*5C_gE;y-ncYL|e#h>9Se5=>WcMV@{LtTeb|q%MPo%Gh^(gnm_gS2-bJ^X^u7A4iXdZ(7-HDcj z{^%?-{S~oW$*!bY-oH@(N;Et4M>Ave7d=qA!`a=;uDS$Na?Ll*dePr}cH7zQVOQNo zd6aP}ZNB%Sy3yZj?0(DcQFhg3j$6?D1^c@M)sp@$XZI?0X`=xB-Nf##?EaPA_u17j zvZX(DvEO4!5px7={og7ab=jZ_=Lm=AV7(LAoy=|(yWQ-b#V$=& z)8C2WrS41oGsjb17r39}sqXiiI$Y{gH~C4-e80s0l^%81ph~wXDWNH>zlz;c*j>x+ zPIj+n_epk76fbp4pnrI8r%1|I?9RqQ4*e};_X&3GBPBhS-9hXovs=Zkx|{EL#-%Uw z-IgNZ3)$Vl?tifBAD;{k|HBaamW-16>e+oVP2z8`t8U+$JVw&hMQ7(S-pj7K<4j7K zZ-4!?&O(2eu=~PjiT|D5>p0w-*?rhAKI-nZ6UAp~y436cevrdem({8J|J3Dj{_^+u z$*X(p{Nt@I`ctaG)dgSv^5LGMH;XT5OskVn`y`RkGdl2rU=E@N29J}Fdk}Rs2NDXL)C<`oQfmKQSl~| zles4_jp!KoX&C5flzfURW>K`6crb9$3h@--DaBKcXD*%vcoyNQ#8ZW*8qZQZ%kZ3x zhjgxhTZd=8GxPT!uUvlH$d|h#7rc3iy?f8-F=x(yIrpY-pD(!V)lsM2U)7X7bWrRA zThbTYKWWit8LLmZYG>;|3xCtL=7QU1{>R41sejD2A3T^ofBUUZKVSUfPxGfgG->6c zA2J{9cX00CpS^wG)$irLe9fj$pa1QHpU%7Gjrx7heDc`UO`nf-_O-p#vF6oZH{1~S zb=QDJm5md-z8pXG$hph^koxL_Zyc=a7_;Wv&u>3=;iVtepY!sOPp%%AJN>aUEB|m; z*qqqnE9b>Ovgy9F&wKR&=cUgqc5VE8#T8rn*T-z1b9U|BFP!uCrma(MUUpW&f4qHl z+2MB+-#>Qe>aUvaU3o#|9buZ0Ed8^3&Al{bFVhL{ZGw#fpzH9z zW;{Kyw)DM-L9^by?^n@JIBtCB=;}vDPP!!Tv!4AqfBAfL^|&uTzy0jYvX_pAp^Rb7 zmW+pv_D{!Cf#*~_t#~%zxfsuH@Z5&yk9eNL^A4U*@f^hy69NBtvhYmDQ-SAHJgs;( z;JFyjZ}8lP=Z|=v!}AWFPw^bZ6N6%%j3*1vbUYP!PQ}xTX9J##@%#o4t>Dpk@FhG4 z@qB@YDgiB0q~OWMQ;25~o|Sky@odJk9nWq&d-2fm{5SD@jOTkic2uAQJn49*;3>ni z6i+jrb$BksvlGv5JbUr%$MYthFYstl2pdld9@>pih-VR=m3TVwY{v6zJU8LF7ta%T zUc>V~o^SAkqr%4HNyU?ghvu}Yo)62y3xBPsl!V{SV+dNOBmA^6#Fg8H2>+VGPg~5aeA)s)`1Ra}(A+ZN zwcG|jiUx)7p&Vb@9!K~+Jm#q!EAg)xuj2UL&*{0G^`DUnPxzx<3FKeJpVo5-ujKU5 zHXXwIQt-lGE2r-o=F^56;_D*>Tf2?@_h&xs(k6afisaL>6XA;A4~;V62RS{oABFG% z)TrW*7S{-0hIG;262JVS8%l@|viPID0EEB6>7zA0!iTZ{*El^3QiQlzvmyQp&abCf z{$<#e{%Bc>_$s|L8%DS)544$)@Lskzt;7)iChMckUxfE?d87LP2v6kvq`L-e!0$$S z2XUVN$Tp~Coc6$wACjRz+WkcM{uILG;)PWwZD=7}>7%_%gcpn;X}Rr-aFr*toJ;sT zPBU%QBm68bGc;pC_)h4dKiZ2x_=BSbsztJmRGFa*5QzT{%hMt);mW48q=_a{8x6Vj z2=gA!n?L)7L0nw{lUSzP01r{NqwWmnqUNB&h?L>mwYS9SY$tnU`C z8x{uBt|j~2G6I?4{ZUN-No%(nw{N$|==BDlgQ3QCg|2Qaz(|Q5#EjlG-k6->LpkddQ~KK2d&A zJ4W@I>`rZx>SwI!MN$INOJh$ZLt|Mlo_G?(AC*ZOSBGJ{RJa&D%lr=qo&5EK8-oXC z(&F$q@eIO4tl;c8NA0@IpM5c&hMJ8@_!oH_GQ7OQ5BnFwhy}YvmvAI>S;Lr z<%X2YH{4yfD(~)@@4dF*#wP|lS3ETH^Zsw%d7AgV7p5jZ_S&+)-~8o63%-x}@I!l1 zYuu4T+pe2;{j!d`9OIi04SN2kacwbgENws1Z^Y8=myOtc(|ZT@s;`%L!c3;Xx~>b~bj4}0b6v0Z<8<<(^w9j)Tlrb2pADGAqh+%At?zE5FCbN zl8j7d!psB`FG#s4F{0Gk9%>b%wmoSNDpjk9mqta2^-{c)qHUF9)uOeh7F)&E%J)2L zy?ZhZ@_&A?wz=w z!Mz_hXZl&uB%F>r7xx_8%W${g-hlhtxPOTIaopS%>mA&G!EHyyI2HFq+(o!+a5v(< z689F|UAP~_{T%K$aDRlGm5EznosGKy_gvf_+-TWO3sRVR20$SzI6}tPKc)EH1qt2gJp1D2g>z1xyx~ z71NgMpdNo*tSm2?xt|GLxVs6sTqi1;x%&jwaIXpx=E_&HxFA+ooPJ6c7uierTwG5U zcMuTPPtXOC#kFUmo-0flFc)(|7uTMO3pYEVFn2x?7FX3#m@Dk?$0d6bK6lNaFt^bV z7C-S)n4g2e;>TZ6LyIWP9W{i-J$}gImoo9sc^hPL5{F1}g+5ta>Mv4UzfTsI^$Ux; zVUTsSPyGWR$=ZQir1)KnEY5@#7T3j-#Sfdp;^H>4xJj0DMqBY z=9N-h04q}55{@i>hZQNV3RhAP5f(Q?Ad8z5NVe?;N!BB{g~cTr$|EvK)N_?IS=^;Z zbnz20S^V@bEPfOus~EJfI2DB~etH&NTx3cXSDXrqo7j={9axXN=fy9iWbt#UNO1um zSzHY$EbgpF)+K$>W>dkU!7t3v#W_G?3paD5@E5oxs$8f@7H9N`$}UKg#kKOn;tmvK zaf=OMaR(c+xSfr#)EYssIN*>FxzP)yxa)?5$Q9{iapAg16^_;{E^`(ZH<6$eccBm# zhk|7B+qQ(r_2^`AuCz$KDN=j^B&_El!3230H@KXWCoaE*f4cDVI#`^-Et>fOnVR`E zSy=p1P8L6#3+rUWfh>N$6_uMLskj75V$6@Zl;W3N@mPawW5C=41151l4e`%UuN3BY zSP|y*4+?XJ52QFTL|nMXB89nIrugTsL1b}f2a)1LIr`_MIRwVlG$PDh2`J1p&BEfo zfMopwl43t+NRY+3F(SoH)X3txdkKXL{22-t`@=7Hs1jih3O8Li69O)r=Or%OYm92x zlM0L5HIl`>9ffrnqC)@q@Qgoh_9HIb;DN%N|0QN{E(?V@iwdrszNbx&ASw&MLEKV9Bi?e&gBUfCL z#YNiUk=rkl#f7)yfVeo5fGmEX7b$L|N>&m635)yYki|`OL_KGHkj0gNBE^?~WN|xA zVR4IBvi^iySg%U7xp9f;nk^o=BaYa`4dv*Odz^?AJ3X?hp-5O<|4$ZYP>A|?14_5CkvNhos{oKtJvOh$oCUQ4dv!Y1x>gV5FzM9Pa21y$f?}Yx% zwW;5R>+ll>_0wN~{N}X*E{W_jmzVZJCXu_jdUQe(|KSv$1 zh;suR-6?GHVy~CPe<9e3^2c0?DPsNnn=3Apxtj|s3zOtu02Pf_CGJGwKPm41BSy10hjO+YKy#VM zzq$BrB_1ymxtj~ezLq5Xo{3t2IUrH~o2#L&OcK7i&}o)d)6f1F^R$CBM*ZB)B}6m}K?WT=XJ6OF#eSx|U?^|CtwS!;`t2 zi&Bz>Z>~E@=58)6N#<@Y8%Y+vxiTb~ySez|BbE3m{o;?lU0o?x&bOqrWu{~f9c7UQNtH$z&>GYwY$O2>!&vARt8idcCSf26~^Z)tfc z|B2%dxfcc?=Y!k>A}9TIKYfhXt&qE0nL3`Eh7lKM{HM^T(5~f&9n+sr9qpkCBhFpXt02@-yDi^3sm< zOBc%RfZQaJ+n}}f$<5lJQiXD_LvD-66~@a+`Jvnwko&&KN&V~7C;lim4rS%0s4#Mlw1m-0i=N8b1+t(W7KlH@mE598zFb5 z$R(@KjK>bh4HyZ1Cq4VQd_HkMLn*)#=hc_nA3_z|NayvxsSn&u$?$!aw-43~{ zMeZY22=UJ>hch>z^~PthGx%cdk3%uEPWfBJds(kKnLm=23%JEh;1^k|BZ*wbHf#AdzafuSH zE}7d;?xKm4Cx+@*=2W+b!k*@wa_@?uJJ_BxE9h?atO*2HhH@%fJpS3`rPUJ~OkR%D zF1sSpFHYYYhc+ zy#6|0YrQ8Yu;Plke~J;wlXyYdTyOZlDSdOimDT@Z(JNXwE70n%SLHcTEdL3`J*q(b zizQZZAm~}>t@i}}^-?Ow6>e|wpxXZvGAw!JVS-h7>b>rNkpw%orT=m@A-TC33}5x; zRhI^X7%&P^;;rMj6N5mLQxpukg($8NQxL^@)g|t*+Z0+bpVlgM3*Ej}MjeC;2{bid zB@mvkNJ(;mDxO``(BSoZYJzTmh+|lIK@3;5dX#UB!)KRQ1p|#3b;1SlDPCv}MQc25 z%&cN}T@wRBR+w>B39N-+RF*}TZ5{WD>UKZ#8pcJ+Q&dbM zyhs5+^g^CyG>L4#oA?=3Wte14aZx1MCzrq(1+I8@alog_0W2(@UF8lp!2!P`x|LN` zK~xdX8ndLTRIGM4xA;7fgiz%lg@a+C{1-2r??HAkX^~TwL8+D@h^oF$GEPpLYoy$1 zSn`aqkzXdyI$@$QF|FJfVe2(A?O|i6ZJCksm|?MxGBVOqFCArMT664kj1247_8Y@& z`;Cz{>j{UA)2&xdH%4AgoM@bCt2L(BtVb>DjZ>{(zcy@~Y#(WiY&T9m&o~KAsq2lC z!p0a|mtokp8>fejRQw!f3xnJMb;P+593}h{fkSN8v)3CVtV_ejX^WNTQ^Lk{n>A~W zVOUp&Ve)okw9P)(xER8tw;Ql4)n-4_7-G$~?=VuWwXl1z{m(|~?FP1)A7$HZ47c54 zq`nVI-1&@c3D8sBb!Q(8!XOA*+kaxq$F0`dytW^CB(^k{1yP@g=c$pVQdcSVWdk_(v zS8L3(PTFqVor27~V7oEQz8x88{pq##S{VA2WqYe}8j>^3c8_r`a8B6RjJ?}O80SL2 zy_ceoUTdF-B;0G+Zk%Dgcs+iWhM}`{KeSg<`-JVrU9s9rl=A7K+pu-O=Ou{Kc&n4y zpXwT6*lgA*EJn!N9VAZdH3l=2$AM#}*%|naG)uMZGqPZt&1Sz7M#2X~Y}T~xDnEvx zbXl!|{YHv)1k&|X>!Gz_{N9!l#^K5jT$_4%N}BckwFrEe_4brGwjDN10Jgrf7Da!! z_4_GvjPvd@hTDH+w3ZvgZ#RCBl8dr-&Q|=eUjD9;jS_dxVZ&mx{$lNV$o~iA&w(Yw zkw=QzfTFPzOj=R+k*_5l*GkBl zq(vTwk_)ZRg26%zt&b@sWaMj!#~^Wm^*J!k*Alyx1R2?o7>4?0vF<`_7Kv@bKE%W_@^Vt#PjPg@}+nH_iIs+Bw#jQg-McAExXuhN984*e^BE0*p0m zXt4|%3!Z%ge)OW9NU;t<2BwZ5W!TcJC!r(_VR5usPug$wvCz&zn}tU5QkXV!JFB08 z62V3ZEzl)kj+le`4*et83=H34q*+_SC@iSeXaUmD0rpdGZlD>?Qz5MKCHJ6f!{Q?KDPVKIE*yL!l$Z8cdBquLo#i5qMV`~ zeGes(mFGRt^JnTo9EaOSSXb$o4Y9qr%1HYLS`;*pOdFQxAv<8}ovIuS`3OY_txwu& z9V5gpffQP=(W_<{HdqPo7MuNhOzd*w%+&l*%F+~@9fkTOV;HhxC{o{Id&3x%_L6Y| z0%w4|MvAS{81q9mc<&lx!e}^uX;`(crAAuX-9cK&WGh#uLfFZ?JW;k2Xf9rH&mH(=pzcdiII-?&uB?eamh{s!4SkNV`j+E_akv zjEesb71lKS;|O5~V#NmAYO_D48uZjTwpD8k>m_iT1D9t}5q(B^niY$*Q&5}3VRT*@ za}2w+70uMwP}VZge_F3VslCaldEZFiU<_wphMsyDE9GF1k$y;}-*8)M&PZd#Ek^m= z5OQt@>*WYr>a>wYIYPR`W*@T{r5`;V;(Riy6jH1RZTGOl=swn4SA)#Ae-5SXTMg{- zb>gK){wic*xWSl(qEt@9W?6@ZjRNGW1Jy3ymU_-`!_jJtZnB|M)IumdvuJR^MNb$G z9ahdLTWaA5qsG>wY-fxDv^`DReqF5X>?mM#(@2=Q14Y7Gk8Smp$Pg9}>zN2yo4zC3 z@&fy3#<1@wyRG%pjeP5AEP$}R0Jb}9?8Kw&wYn*SI+aXh7|I1~M!9$q+0$eUK`Bc` z|7Wq~p+>O~PGs^;P-V`F-pR24hjDi51tX2KT2W%z8Q)}BQ>TtZk%gRfE2?Q~>qt1+ zr`z|VEPQkA6)kPbER5P_Ky=(NBXy-QG^acww{M(z_2db zZp}kmRSB)bSe0|vU<9-sk+YtN;(}iVHYRT=(th}1n1OsncaeHND{8iFBN{X0RW8HK zK?RtIp8s51YW662#m_w3pH;GtvDxeKV>)6x8WnpQnu{6eL~ZsrkyNy#Y1fRGBjqmRDsF>DaTQR6<-3o_n zTaz))I*M)Nc4KT9Mqg(b8!-fILeV>H6s*U9)joEEF>DiP3~_Du86!7B1vB6-W6mmL zY?E=;Tw~Zzjp27%M~7KUORQNFjV0EV+pVK_kX~#Z-Ag>lhEP+TBW&L;H!k`M%tU6@ z8fPF~Y^{%deeoSj7Hzl;T9A$l_rtvNw;N0HjKwyLTi;1JY#dH`*Es1gWUXsb&rQKN zYDfdqA#D5h660btgzN~R&VjOGn=9&!;Y(3fQqRv~?|u>@p>hSoBikIC^~_o{{b#9& z+-u}_8I>$Xw#CK-X6{sWqKN+tn>`0VF!;4$lsVBFo@ku8k?FdcS#bpJR`2&kj_8M%9*|i)ze~0J8D#7|)zz-GIUA5QO8m9RaSlp^uq@tKp1VH*$h znbQlWIeppNMEd6vcM^#%Wga-JPv`~XxlMFufdP?h+z#q-C?A@_wOyp%o8vn zc(GymK=uApAX2`=xB$al`+6gYq**TwO}Tm;;iKZ2h)@d9GMP`NXN_VB+;0pyycN%u zx56y;jXvaIZ!OYrnUS{vkXnK$*{nmsvR<(pW4e$se7A zcd*Lc2kBfqTns^RnZWE_YGkf5hO9Owd}0`v87Zk_N1}FKVvI+-ibtR#HnrBzEVVGN z{&t_-Xg@8`y_z(lzgKg@$1uUH`BQS`Q$BN&yq5fO%f$-=q<1{?e{-_Cb zo_#m;bt|_6bZZhfB*bo0Y=+efq8tf0+Gbsj5X8IY&(r)%daWlTYsg!#WY4r&Pls$S zoM+pti+39f@oOeq)vw`4F&nx0+UwWQSois*KKO0lZsc0uupnU`fQ5fvgTk9_y$Sz^ z+-~PM<=oWsMj5kO(Tbz-vxUG`V%U{g$?*}3iEll;rq`HYy%}xoEHFxU7$wNRVJPqz zTiVd7AZ_iR7_+U5QU7QmY)yyR^7Daf@w*o6nYQPRYG5(2MvGziNf&z1zYyBXmegBQ z@BsP8HFK=rup`6y<5pPBG3M!z=DQ5b8;U$%kuyy4JWUQ7k9geDw%?ePhB5Jf8q)~Y zk-f$_{9!*`vMu>W0Ucj5E+O>d83t~bSYN^ib!;c2JnlB;rp+0Y z3RMkw&5?FE_17u*+>IANzUf$!iX#x00xL0w}gHjcm?Q}gnkBiIq1iQ=C;wxK>vr( zcL9T-ZxebeunP25z#8C6U^Q?F@N2*_!2;kS(AmJnz%0RGz`d|5707u1X_`)t_krZU z1*HDhfW3Gz{UXqY6|7GK8Qvqp-zoeb02%&wg@3E?JAe#-E${{C2>@RNzI72+(jc4{ zfgZSXGil=Y1i9NZ>8l0ZKriT7f(~FerUIS}q+V|DOFIt%Y3Cjw`40&FeZg(Oml5s_ zLe~ji415m!lY!7P!w$R)c<@54_ZcAd{sc(-?*iTp_a-3iTqHOQNIU;BRpXn2dj)q0 za$jBgD*!G6P5?6fMu_{nQ#Ah#Ao<)YopRhjo#}rwkn!yR(yq(Iy-M6K7WXOQekzc5 z4Hdpk_}sG#FHcAR7tjUwUjv!0T%^SGyASvZ(&a87-;8K-zT?&<;EgNP8W^9|2qf|2Dy+lePP&K>GU~km0=yq+V`2M0zLiUg*CQ$oh6G za6RZ7fz*E;kp5Qz>2HP5RY2zZOd#ZDOcM8Vgnx$SSBwVI{~so4|L+2+_W+Rmp9}w4 z;6CVk2uQpB9e57xxgB^ma08I(ay4)R%d3Ae-`Km{UmTF==*_g z(A~iML2n0A?q*;B{LR3fpt+q%Bj_NIa!tS=11|?Y0GtO*g?+_9+C347benMsunRa6 z$aFi9qupNt{tWc9LO%wi`%WO!^(Nt84`jTr1lA$^5U?KT0Xl$-fmr!=dNGjcG#$wD zFcnBU&Ibm;KMP1bb|CZfqlw!69U#N~C6M9n6aEcA=F3{(*Wum-WPUCIE(TTuzXAR@ zAj3Hw_!H2FCScnG;IDx@fiD25cMp(qk7~N&L7}+?Gt+4ckm+t3>7OP14B^{>4@2GxWcm2h1)6>bNcv46)9E=N z%OOu9xdHUUK*nbWa46)ufG;4tTY(+mPXIDp2axG?qR<&YrjHfKbpPUfE%z57`TqsH zAM)IehIYLTq#Z8_{iM(j18LViK$iR4fj5BuCXjaB0Hj^l0$+e#VIb`~8%VoO1=6nJ zLZ<=K!2jYrtkQ*D+~SII9|6gK4@kS71+tt!1Y|kC7s&j*4R{l94Uqjn1Cah*K>A+@ zWPB@y?-YI!@H+U*1F}6h7x+`iodWCu+JOz=AI-K{o&x$I_o&==*pPj4e4}qk= z2V}b4BJ?I8{LNS;biKGQ6nYvE`ex(`ouTQ9AwvK896fI61>Oa@yMPSmYT%2oV+xS| zCklTAkm3FHY+WDU1Jd4CfHwI1kHRh|A{6YLiLtwM)|E(Kl>`|^NHzcIo;5lH_-g|-R(#;IEVSs>*f1TwsP zft3G&;5UHJLGK!&iv%YFnI7i>8K1Gj&jd0(-aAF>dmBi74*+Q&kBVb>w}|^DU^o2N zihHrRj|Vbc#sF#82q5+R;bcw!4oLc-;3LAnPiP*lPWRh^3lQEnfDCs%kl}HY8rIiR zAmuIuG9I}?pQ+s|MgwWbAYc{z|2<2G{~3_}J_1&P{|=CHz2g3qxbFtCeZL>b@_ZwZ z;Rk^Xe>srxD+f~Fxk8TwJ_q?DCu#oEf)4>1&W%7-pMbRcDsf*0TnG9JAj4e>WOzkD zhBFPwaJWAK-FZMG?J|Ir`~8X9t~Y>`e-=pjE}?G((ymp)zgTbrkaihB+V!{5+O9tX z>Hk9@?fNZ{;r;^1@E!oN-gE&e_iZ5kcLEXqjE%x?2l|lCD}l6kE|C7m0cq!{K>E)F zE`ppD$n^bul(y?#-~#Y}1El;ffs}ty=;wsq4g5Lu-!J?h2>%;`8w7)bjX>uAG9c}{ z6v%WqRorbr#^dNn9o`WjVAn9A50233^a~*4 z@dA+Py9Y@9JAl-8o49WUGF>+TY0p~W`+&52ndVn45`G!58**m@m&1LO;2o0)}kNc_EfjfY-f1B{H0x~=g5PD}+3cm!n z6#S_`+MOf(alp&K9|2ql{5(VZ`z?^+900OC{27q`o)P~2K&E@Q=2zS;{C@*hg3oFE=9H<00!0~z0Qfz0A@X`UIaD)AA);@U@34F^jrv} zUT#ZAyUzf&fIkd~ztMj?K|jxb2qb*~7=Zg;p?iSze=jfu{_VoQ0Z9GrLI;7Ay97wP z&ldg}!XFA`dJfX=6<@*_%6|r=UGL-Hi-^Y?K-%#lkn&Ff;bru0Amtwf;&1d1@$UtM za|@8=XETugt_0Fw07&`e;=WMao#H-2+$W0rIB`Ew+)ohqKMm1(xQ!t7?-lG3{ttnO zZ^b=AcLHhG)xaRqXBCk4c!88#4y0WRfqNi#3Gf-C_I zPX;o5&jvEwQ-z-{I2cHO79jQg6`93&zAN}Dkoo)!&V8L zm=C0Xr|>TZGQaYLo&co3BPbjU|6L%%?*;xG@!cu>?*N$|YsK9ucq)+TG8{;~X~Jh= z*5ffy(lm1xnkl;Z94J>jc{bF-B4Tngo{%)(Tb$It2>_3j}iovjrW3S%R5@c0qs&kNW1|7)k2+5s-TB z0aDNRfDYgcApO&w{%->UEMdWUz~!L71EjsAtAMuyssEe6Lg06S4ChWD!`TjGIClUY zz-_=R;J*PG-nW1Z@7q9tk*CAd?tTaeE$ z^tVlLtKeqAb%JezErLyg%LQu%s|1~bg@Ofwxq{h(4#6zJOhLP#MexW_ZRf{=2Y{K3 zFOcmIpM&roC4HChcM887h`dPOCj70!-wZ^5oZcq<7U4GmYrwA+ewFZ@z-sUdgr6(? zY#{pg^eo|L3f~S~0{#&sF75mnNIMS!SswY^r0f@dFOcPNm+*HAzZ=*9{x;!rJ8|mS z46FseP53RsZvwV}Un~47;X8qT@C$^WEBtI=0Q@ZBXA0jA#PeJF5e%-B{Xk_u5YKVx z2ZX;*_`Sd&_`8J9BQPo74aE2+eVg#N3ZKtk7}un?3BN`7O~5O_uN8ik@SQ+B|E3oR zKUetKKs=|XX9+)3_;%pez(0cLAZ0&L*$;Gse?a*Agx?En1b>(CcM887i1A(eHsN!- zc$NOZ72vlCzeV^>Ko9t}!mkp(6X*rMK=`@B&jv0BKTG(T!nXsP!9QXb`+>@Spbz{5 z!rv$SULf8>r0){`PT_Y0F>X!YCj70!-wdn-zfJfp!fyhu1ix1JRl;`yo4_vsUJT3y zGF`KQw95g+STa3J_?g1D11|!fgHy`$xGc(l3@iYjM`)3MQ20Dn>q7AN3BOnPJ;15p z?-Kq_;dcY4fZrwjZNlFQ%m;t7@Ye~y4LBM67U4Gue>rdx__e~X6222S9sEM!7YIKW zm0_K9BDSW%|Ex;V`kJuzXfhs?N=YxMx_y>f)4|pE*voI^nkozXf;(_)WrJF8o^H>EKrh-zoe;;A!9&2tQZ&*}zl5 zcL+aA_?f^{z_$zEBK#wW^vU4!$Oz{9At2M?ApW6GOg|v}eZt2YBOa5I-Xr{7!ruuz z5&Ul9cL{$Ra1{7kg}+(&>wqJ`Zxeot@SA|c!Cx-?TH#k|I^8M!Lg5zx(f_9B3O`%; z4j{Vb^eo|L3f~Sy7nW`j{t*Y#`5qvewDeuV z-zofVAexHwF5zzz{#GEWT>56=uM>V75JfS)Mfgp^Uk*eTrPm6-O88D7hH~kJ!Y>eh zE)Z9Gw(uRoKVsG6mXCp#!2J*q>1FEyUIls=@M>T;kn!ew0OD34Jf(Hc;2<{W?73>k*CAd?tTd+%To8VT#&4TL$ z+XPz#n}En)+j7BL!74$gV4+}vV6I>mknza`G98W}b5#6*qz?*xK?iRXB z=&eF;7P?L77NM65T`ROx=t7}$fum7QvW4#ueim>f_?g1D3;zfZI?@jSX9IhHvw*vR zEZ1GYQqb#wCBPpDM?(oZFPStZ;5ilEcA&}u+3bX?$$8cFcNV9$bRCy-O1MQli z>Y;6s;8?*^1m7F4-G3u^m*95<>jjqzo-4?CRLC0Je_o*R4Z-gT-Y(cE=n_0%aID}T z(1}scdxGB+)N3I+vd2u=~~K1<7Y30@{xEqI3DiGq)f)$$Jtt`%G@c&gw?!8gy;@~;XO3tlXk zCYUPtibKmkFLjakz77989ErJIJ ziGRT^!F7Vm1q%fof)>GpR`D;`CAdy-xnQB7L(n34Fjf2ub_uQ%TrOBB=n%9B9z^6- z`~|xN*9k5cEEIGIS_BVDzVrxo39b`dE?6k&5Cl+#?aQGW{T#G{!TyHVl_(da(Z;Lm zK@K`WKV#SQT;w0NV6^PSLmV#$2e)uH&v=+Bw0WjOrO@UX4sUU=4f(qfJ}-7Kr1{>3 z*RRAL^Gt?I#C-!gA71&W2b4F@T;Q=Dq|GxHhKPRiOa&fAM0fKHg{4B9XC_=Hw0TCt zxA>3%dGkz!yCr<{3GY016~vQ z89eOr`asghJQKht@i)%^;5-)kH~0K!`%C*X#ok9npSkD1Pw3Dztv^-L&)m~L5A7`V znS1#2$W+qip8YqRq-k@H{&A8X=AQh2m-I0A;GZMz=AQda5}vuo{-+Wjb5H%7MSkYR z+Pip8QwObKS%$-_#P4Y$I%|pJy+b{&Cu@MLhqLFcM1Kx`2Se^ z4@2J5|7LMtEcWyW{UOqW;W>mhgw7Uv1NtrcuN9i}K}c5#og(ydq2HABDirz!aW4@1 z6qFD8cM5%2%GXx0H_ZWiV1s#aJ|JnBt*#H5{-7N~2T}gVj9h0~euZYdnXc(tp*hci z?o~oRLirKvEJwUreoTg@yM$gzdAK`;o{E5?%&~Op@t1^-Z*p<;0zE#7xc5STwExdg zUZd%sBVy6?-}Lw_;=e9VzYFOREgy&r@1r>PnaKZW`CWSa7SZ2H9?-{j)gv76cX@-gK1TX!^vs@V*t7UjG*7e|MbyH^-&lq&RubyNM3(`*HaL zb7I_2j!Xa6v{?6-;`ChXIdSEe?~9}LUlErcJP$V7-5;0UzefFzcE2$$y}2)XwEGX@ z{PVqUwEJ~&_Fom3UK8W|pNR2JwEyxr_cI-_?%U(jH_rcW;?AM2Mo$kZ+kjeJD`R%LTwJ`OI9TDv4x(*yJ@5$EsGU*O zPra)qH&0a(jlNR9dxg)l5FvTmio)=^LTxH)amDzZ?Fr9p4|_sYp5Xkz8jGvZx4`dh zzz&@{w8;&tDa1+%SJ^jQ~1p0{`FP3U^&;dp=TDD*CdP`gpiO(;bKj8NiV|Vv3 z@^V(uicrAU8uoA>Tx4c(YcPoO3Yg1!Z&2`%``ER$S+Q5bhtC(N<9P)oo(6ZT53=U2 zzplvcrLHw@uTm0K%%I8X@isPruL|xlQp3yh2z2-Z_2R12y8+9Fz1Z>;JM~JXX%013 zd;ImTP&i25@j`dk*L&(!MynJIm9%3|J*Yuv#`DDi16<6KqqE2~`PWz{vP zfY{3z`~1eZ)l?Q&mb=R4Ro4{FD=u}Rz&R^Rs$G>;$CTG%uA0SFrPW_aZ^Q;|UUd16 zIEm@yMKepwX}&g*4M?p0iJVZsOM>n-swD^|PDx!cCWciyK_o{EUXF4pFLAT4z0o_=&Iquw$KAHQnn^8^Ve$+jlN=^#~oB# z>#{|QZUd_V*bvzhl&G5(&um;~d42sI=T&pp=pc70cDnubzKHL*3LxeO)OOHOn<66# zE24MnMLmkz#5m59dDZh;n^!OhiG{`0S3R5EUcYM$@ZX_F_7i8R z4WS=e>8fj5>1uF$eF^)Wkhc*<;rJ1D1zY_yJ$`g+?%+!3o>z^ut3#r*jH3}^{fHXP zui+Xzv;%F78%F22E$k zgEEWV!_}_xG3B}FD~Z&{sELd+(Ep-!3#@SaTx#d};PvD81}T@5pjF_etxROPqtx#J&7=YLE`;&lEBx{{~!S5T5Dod@E*Z;aIU z2!q~$Mg6#s3odnB+WbCQb5y7gZ-}&is$tX}y8LYP72)8H)n-3?{GfbsJ@fH>u+fU` zh1sjk^!n?iAvnH@Fh*iNH6G;w0dv7{uN#Qr!}A;V6@=J6Dqooe#-SpI2CSXw|dp&X>JL( zW5kOCTP%3853A>)zVXJ?+`PzGf^U>~5J@uEgoAHO^$&@vw{ zC}NekTy=q#c2|?fhquGh5V36IAs>$y@eYaG5!G6+P)9N0aY8pD%Pfgy>k_?uNhXX6 z9v^Lax3J7|LBf{ySUwUP)w+*W=eeON zmrg2~bmG@H$)sa*CYe<9`+#IJ-Vjcz^P}P>6EL5TlDX^A5JnKm1l)KDgje6HC%{Nc zy_Sj@aV7Jp20Xe+lnx}hWT0h0f-UU61|*4hxp>bvP*Hp_GGDwD>F6diwcdkfGf**+uUS6gM4)<$&pNk%`P&NH4jaQSXLPBaa@o#gJrVUz2Jzk&Y4$EK?UlvqVOX>%qpz24; z?Xl#{_Zi2MQT3Zoj7f!bV=K=U=!>IV+3g z0dq=j9vmj+(lswPcWQpV!*OB$|gH<8)CW04`TeX>Cm( zZT^~uIl{b5eII{J_MNgsW;XJi>xJl{7ND+$m zh`s{NjMukL^kGV_x(cC>X=YxS>JxLhbUDMT2)E+9TqQ*{MSUXML|>J#YDHh|QMJag zPf&h|z7Pv6K1hY)^&Jv@n1ZOTZqc_5`j~vUFng)*5`FkM(B$X)mH7C6Ec(vJoE%;| zp)dNvRHK;7w9n(CbxhCL_&Uzg;#^zD>tK#fzb@E!E@(_;N@QOh-x4H>Z|yjx#!{%k zl9i|R9YAa)4dV3G;Ta39vdG8Bcbn)-lT59JzUZreeCryb6~@PxYpi&!Q~xn%IA7bB zl@hT}Tr^1fc~`rGiV?3bJ6p>+G*}LaJ|X)7TQt0GiSXm~Rf#^XedLunMc0p7*vB>? z{u29Cez3sAr(c(p4@@yv*K%DgBWn7mpK6CAM#kH>OZ4p&k8RMWvL-c!YZ3chQRSJ3 zTK6l@P2;tfo5g4LMX@T9*~jwd^M=Cl_8k#@W_{z?9<(oO5DsC{s^iL^im&?8==C=Q z;`MQZ6<(&ko;ds96sND=v!b<;^JSDj=v!1Yf0p{qe|FJ#{S3|O?XNE;%6thyeHhCt z5AphLzC!Ea8XI1fYcxjvPpHqmVg*h%R_#HIeJ`!oJ{zRr++t=-pTdOtn06G2w{P43vKQ4nL&*_h_&@@Ra=MgE)Qe797^>V%>nce)=Bx ziT21jvb=&%YmEAzP#;STW#Z#Ii<5zInKj(DSJP4d6Y5j;wYclz_3ajY(hORz9H2f{ zwnXuLOZ0JX9A4W8s1Jh#r83^W^j@vUwD0BDH68UoF1~gAYEc(9QYlV-qoHu ze3Zn5=wrlhcF^6@l@T2!>KXhBg;we#yA9RbhT z@ssSMM~@!P7`~-IYj#-^EPF|Pu{1dw25UMd-1cZ<2Oo2gEPYq;T6UmqTu_Y;BdxbrQmQz=IEys zFT3|}#?qf1c4mx!%K0cw!L`nr*Gta6hKz|%J2Q&+jM(NqUcRT(+HncQ39JgOMCbu6F+u3 zJ1cfM5fi(!W6(GxFRWGJmUn!n!wX*;LZei3K zGP0k-@6(G;u~?Ay&oHHX`lbD!koGSi?LUU-w`eE4J>4g+Gw4+ay~Yeez7G5RWEK|c zHg!U%JY)Rx)Ks2P-0R#@+N~qGMcJfcWo8TWhpA_Ivqj>2rcHUzm*(}D zxq`~l`9!3qIXkcE5^JyN)<3?!hZXg*qNPR4iY_m5Eqf+mJ?=amLP&*EogK^eIXj-v z5i)+8#S*tk#jzc6-lr9tj%I9ZMo;hTREL{5JEwevR4ea1n<|Tr zzK$X*;?Kd2=aQg^Me$kZI;Zr4@7yvv?<{0eA#Le+n=%`YAh}h#6=mEyXmEKa+c@p` z3#h5+_^+a)`{Df?O6}2pYQIjkS{468bjEdzM(30OTqxc-rCG`B1tIF^c23Wk+c79d z$xEhX6|KWjD;XOXBMYE}$FRWbGIaJ=6 z4Fg|=m}<)omv?*+E2@jxqYyyT?Cf~cbbVX@Kw%P&E^f|FOIhcj!IE((%`R=va)2@f zp)G|nQ;oK#qT@@{3by^a_(SMY72;oE57Og9bW8op=mZ)qY25Lqa*h~2&xpoM2`}$45vC9i*s)`_b2s z8f6`Csq(K%kEBtjIt~YIPdV#dq-HCXD%`TpQG*e1oeo&*g_guVrj*2q!RJL_p;Iu1 zkD`67&-kxHFY7@2fz)SWof_dfFJ88JrHhff2 z*70)~6looQsq*_7m4LtC=t;_SM`@Stxu4!!x`ReL&CU|zfyhq`3zqdLbK!T7YOGPj zFfdxyTi$WaJ`~3X(Hr+E--7;1jUUQ8-ZAUYHTxv5j=qLYsaO5)VYxcWf4>90VNXGV zUa7i@32W9xn4b45bTF-_m36LlAdMy=;Mf`m!^%2mq3#b;@#!4m?3`}b{Y~fETxZ8y zPg%#yWvE$Z4;RV9-yt(O zgpTClw!NiYumE}ZJwQ|*VhE#ae+RO&W7)3qj#hN$D0cAwoX#(uk3Hobo?gW7_jsd- z+>ijaRA2yuap0Hb9fu?N*c+XX$U)@hF3CbRnaoFLl6=JQMcPyZ&wTu})lt@YE$&4H z$jj9TJV9R0PMnw5>byLx@={ee6|-N$i1LmjeOb|$w*RcW{C`~;&pGjbsxqq5i3<5e zbVec@!>EoW;}Ydl-miWi)Rhm33I%#o;imgd*$d+yq1bhdki+wj9?62gqnrnns)u*7Z|ka06MPO zj6k+fMSP2ohoW_GYlmCjtLO&$`hxO~Pbxaz|LP-Rm_j9`yYT*QD{vpj5oBOA%z@-$%x8e7e++ zNop+5mvbj;Ww$|DKP_dQmD%#_uwDgb)IlR(^cFoj9?6%-^r+}Kq&=#E&VH@<10S6E z=;7>~je@v8_MzqI!LrWyrw%06RD>Z^bpm2> z0i8Ri@GL^@g4#1WDv)*4?Usy9KT<};gxta0iafvKnWuBgo!B@B;WM!-IvX)CR*!fU zo%w^{I3JEEy;1hzJrlY^I9&>-yjPjlub87KZ97jYMBRbgYYU{y~B$wd-`=e-x_@4+^`qrGvrXO7j!#-HwS%6`@cZ=3NIU+ zJa1UudiA|SlEUP~i%!+h=yzQBxwglAq0%uZLv#5!jW-)JsK%M{cAoxPAzr!o?44Vxf1Cfw<3;}Q+$ncZHyRUbzDf!opX2%npTmy&A{#oOo@H zMa}Wz+DF-_NzEkJE4IwEu4)Q|1G340r+z_8O+ar;Gi?oH$(@xd{g|~Yd(j{*$V#kI zB|_f@Dbp-hB(&Y)l~s#K6g3Z6g<`>E(m;?ZN&?(@25DdKnT9nb!7|LVLeYq<^9fmW z_7sJ&2al%>$?Cn*Q`6)Q&+>*tRN(a&$y|5jcQqU#q9$C@aY4_C5*+_m$ zl~cu_C=|VzgQ>-mcT5i|s>zDa|DErsbsqnh@G3RlgsQN&hvm`i4uvl=uphs|}V2j`lg7*u)DfnB#!-5(31jK8s zV7}m`g4Ke4L7r{E>zji23%)Nn0w1w?ohNvy;N^l>2(}B}F8F}pQ-XgJJjtQdS>_7P z7raccRnYQ(c}<;|Ybk4Rv#2kISPwG9}rlr^`8!Va`3 z+(F0@XoX^EWDDu=`W=ZDdNk7^D%b%HARKEj5v$38o-m~R#%vJRe=o}M4tL10#^du5 zTe192o5xU5$YEzgv;|)^;u9Utz#0#hA&z%=b&A#ppwAmp2~y|w`vYN>xNd*D8I-DQ zW)e$^BP#HR-4h&chjtfrZeJ+iU~BJdhZFi7EG(I5S)Dhv@Y3AEvGb}+*-4Hqu;eU2 z#~8|S=jD`mLMy|8mK-y|Cp4pv@B}C1=R~GJ=2Qn-gLR&WNc7^HX3O*i{+0f~8ovYm zzULB)3SpYVA8^!z8Nv>3$kIj!Ml}vBzCsRS69F?HBOy52vB}};N%^qy@~Z+ZZfvv^ zy9?cnYYO_z$2yrL4Mk1;_=U+DktA(S4fXczWjc2Je5gnw8(Wcj_4HJWx!%GW>ufRI zZy%=}p1=cW^kup~B9nCSC?9i~?$3$)MdGSn58!vN&<6w$3dTc0JVWRuqBmyo58MjB zqWu4M{mJ617V|JIBxB7Q5>@;yDR?`+3Hh20G2YRaxsD{7cdXxhWW^g6i`mba>pV<9 zWCpKkHzts40v%Dxqc*ipA$J|yFKD+u{3ena1xqTiBFU7LadegJ^1kzGCwr>$A7ip>i zzJ7Qai=)=!T3a5f8+|!I6mj*5qr7}!g#$e$A6gw3PMkb3*O84STmHrg7v_SPI63dU z|IS|QD|LvL;@LC3;bwOWA1y5_O{&P((&Q$q!W~-K$DV};Ej(%_Wb>IM;Ku+c)F;m! zt}BDs!YWoxgl%qw90@n#k~g*78xCVnss2urCna^tn>y3mn9vLPt$2Acd6Fw^Y4vlr zOHVyI?=TWTXqJ> z{=%k90#B8GUpr!>_LG`#ZXAY}GsqH}7{`iA`ZyPJV{4@dOXBf{pe})e`5qq@lB~u? zn%KW8xfu30uk&Ej0_-i?--v2AcDvNeQOvwymYBP&>BCmXXvZ^9ns zJW0L(z@AYF-13j%R&WfrJaNMch<4YaCM;|&3oY>kSxb_JKM+~do`J}k_6aQ(j_k&^R@@#>7sO@-f>sk-ACwGiT3FC+H@2ftRAhE=5VTL0LjS zQ}dIBlV6b30M#%s{S#S{H#M2dZL| z+Wl(=xA`LxV;uUdZ%VDZ7uqLunn6eNqWF?E?gh zCy@hs{yI;+8d>toiD}P#Ph+dk9V~4#KM_S-STy<~8#Dgn2Ih>fHx%&C$9`Nmmjeen zaL|ggEJAe{NFj(m7CsAj`Y60|G9?z2>F0yKuRbV{@vH?c3792#yOe-k?r8`oV9!@4 zfh1C`w@E~y=L*ycEhiGn2&gQDs8~w%`l4n=JW;IWNGi zptuX1>7a{s5jH1r*SF&}Uj5AWBD^+i!rtxr6Q3zKPn{eim4Ss`g)Blb-wDweVC#U0 zNQpPJlFg~(&9`t7j{l5V2hR>F;Ni4f<142&I~u^sqKgmo^+ph}d$IzdjqZOPL?(7fC)ocY5{C zTxO734EuGh^wcASm_&>ClTSvbA4y;&7psr@`q3AzO08;7kYAodi%?rodGP8}Vu(73 zPtp8<*yp3f!w;FUJlPsnzn0Z&$wdQ`LW)Ld8}|ALnW|OqruTBM38KZR_NblvLppK7 z_&|<5=}lqLpTv)utpk(RM&g)*U|8*oEQTIC2<<68puT)&tw6do`cZx&J3)RuvLK}VIrGUiQx2`RbCF)~fT&rYOKe_WGDU|GC=NQ4%d zXo##WIp!32JQ_zXP?n!(M2MNk1KOO`sf~(p5d=ToE(Qtmd43P=`;T zC`G<@v-#+=D0z0*1kg0;yf*cjfyI<<7J3fqN&+4h3CU^QHbxRSQn43cgoWmWsnXBf zB5x2QeHw`ke0?}Kh}DB%c2$D-`wEQ+q5^s_u1P8uQxwoh$Fyp!y+MuUDbVVxN9-We;#Ma@V0@TRs81qZfc-n$;|6zK^p5ID*k=En*i#i+ z=^&3BJGS$JmJl|YH3upQ0x!pekx-qx#bb_IjwPdqFy==H^Y|eqkR@`G%e;We@8ciF8p42WFW!!ep2r6IAuIDx)xAp2Bnkv!}SC}S^lhTbbt zC{&~p@M=)l6Ukx(?!kuoeNHIm+#oGhPZSf)DkcdbrU|_i`PR7GLzpaq*<*-v#E@tO zN`y@!-sjOKeou{*uQHt4*PM_U{S=bO6Qlw3bfWWp{;hW@N({15_VseOXMlK#ZIiY$m|W# zUP{NnY@QXUYYkPaX@f}})cfjWzEp#VH`XOMd`L~#ORA=-36FezVzbLzSKw8?dV^jN z{Q|uX&)yb1RC7Zt?yU&5nA7IgwAz*q&q{rtr1{{ag>=rTNre`(enx+dGehgvuKIcnV#h&Y%e4)Co*e&^yFh z+&q>tc5mQFI2D1_Ue6*to#G)GgFc*|R1?sekgcN3qCWhit(Fs#Sf2DOF*ym##pH0g z8r16umka#@`%+9Ca?Qe=j4Estr{51)a6|&mR?>u?V(ImVr{*KI)dPCuDV@92qNPRi zp=DLXEn2^)1@Fj(U#fnqZS3)c-GURQ5N7;lu9!P1_OQfTJnHCDWT!exPbNQ^?*Wkf zaU7hFf=-*sGrOE8)>$wiQW$HnZBVs^|7$FWhbM^U2dRdZ%F>{L8;VIlYOR>#VZ|k%AuO}Aqk-@s#A}IGBVdCQ1KB@yreKk?2H1or4I(t zkE)I1l?>+a>Vgu&lsi$gHTtCi=Ya0VR&fqh&P@80dTI;>mSPQ}tpzq+MruJ-+(NhJ{|w8ni?BLaf<1D+%9Nk;bYG7fP!` zT|@tQrJE*2beocRz)s|v1A(;>oIl}}31c4l!L9PrTkU)Sy4nTnrLV!p}Vh#iaK>;;JTs&8I5%Jjd zcJV?K4-gc*0TFRsT~Jh1+*Mo^Prm1=uIic0B#67;|J(idZ+f13-+JquMZf5?pfU5 z)xy_BbY1|5hexw#@xc1CTeVfyLdQh(v~;~)jKH{(rA_04T7|98I>dvABsFp0jst{; ztTo6dMu-EOcr!8>pKAIY74-=R4JU%;zRGjjuVFPkfVCzc=n4FOm8cuheFh&@K}?Gj zE5)TY+YPpRgpAFeC!V2bR;?`~vbVZ;zo1pg{x4hG`lX;ep3zG1OsUcHO0Z)lo0_c`X z*?-jX2x{84O2pj)2Q@j)pNpPABoRWqHo=kWktU~S>pS%=C7QOdtkQoU(n97waWX>3-9pYX zzNNm>a+PHVPZZfL^r=ndtTu#8BY&nyYc;&4+!kxcZjb*jmi!028M9lzG2#GEn4loMJd)jWlC=OT#TG9OA!Y%UmseV z;%&J361}PzfM!7wp{_X+Ap5{-!fI16<}#r zet&I21%9|G)3SWyaJ?>8*Ke(Tl5|67I%n*wa~clJC_VVxg8Osy_Ba378l z?>h0lODm{h`5%TC5s_DgQ@FNNTZUl;3bjy0Y?T6`)m;LAj!FSqWO zyl3<<%q(0koWZ9+Pm_hEp#_2FpCX-wg7M>W;>xks|6REjl&Gs6K4W$!4;0Q)7cuD0 z&n(3mWh|~H?uob^CIYyb%1HQHzSg}q0@f-DqeAG4c<3PxI-miSL z@!vEDBj`B!iu=_T9>DxfUi)=*C<;CrO#z=2 zZrKgLO>IzP`cF&!>-8DjJWglsuWN%>h7SFIVDxWq8>e|>_t%@oZ%WLT(f>?*@SC*$ z8x7+$`hUG9gWJV_q>RlX{XcZc8JPTATSZH!9&rL_@=ArK-Z=AgDEN>ezh3Y&S9oU4 zzGJ4J= z)#XdeDvIY?7rdnlgnbxbU2NGXpEa^{i#Y4GA~e6OfJi>Ux1HpiCH3BkBU=Ms<^KcvRJW% z1tXmKulH%%`@+De*O$8beme`4derj1@Lq~)-nz(`iL)~-5 zoDG^jm(}2Y4nt*J({7RM->5}NFMX$oceVk$t6`)n)qjVS_ zn}-0VRWV#9mZgH?C^lRrv%u6JmPV_5xg=1-Vv8|Yp2h=gnPAMv>L6=SE~qGspiP*# zl%d)>th~ZlJnyX;Lka3&xEOAcxfZLE6_?@x1U{r$%IEg1j;vg~+sJ>5gCcW%fnalT zoLvK(Wz7<-A;L`@m*hi3VNTY(1&9y?Uc7)AWvp1ATUCb@NgBok7S_>e{$)^@<6Kb5 zS7e}7)yZUdAy&WwC$SU_JuEvL)^}kJR`~KwP&UVEN-$+UdSq*H5@!Rj+Rs`C;h)Un znaNsZg2pXYg84ZZ8x38{BZ_OSiIk1fBIaY+7}sWtHD*{Ki9+U<;1wcuR-Mt#D>{)~@p7cW^DE6lZ`qG*AxSda(6`Nbvi;P16igX>eKEY?8qtNrqU>rpaj-{{LWBsd#c;dqaLjcEWsPn{mleNn?cGZb1 zO7SMFH1XfxekwamhIFma<^=`(A_Xdl_j-!0nN%t&Rf@Q@lIz`buXih2y-&hT{*tYi zT<=z#0enmzTe!AlGuR?d@y?fVZVjqLjN-f{-{0V3OzHK3kMs*|%AR3@;x}dsRq$Gy zm9K(rmM6Dtp?hr=F0~VbYxr?E>2p6=)`z`s(S^GPy&mR?;@+$z1kH z)w(v@j+22EQsfrfpga|P%}zBlIMrQJ`W0IwKUm~vY1c-(SoOgo+Bz9`r!5m&2IcXN z@|6YiS5aMUkwO)` z%w~l&bd{>7EfS*m78$kK7AaIgH{LeO4M&g)dTmxnxs;+*TcpLjp0e|rqJleZR*Q-s zv_+<>pg&cy3ZAm1LKH2MmMyg{EL6e$HY>!3D%HidNP!AA+N_YgE|*b$k^Bvkb(ftg zr1^X%qkgbO3RN%$FC>PvMn;| zMO&m$1^;fdLL8)0?X*P-RPali71CUOkWo%~7(<3huR8 zA(tX5RfH{4pn@H3R!ClazdN_Vwn+ZfGI)c{3TZC+GU~jRMc$E7pV}gYD(K)#$gnkY z6{b>sY^N$v!5BMLNZaTlqk7pQg(^74W`(56kx_i>yk$)oCWAX|R-R>#|Nk->bydqE?r2NAy+jm3 z1=DO+h!0h&SX-n(1xMSgkQS9Iql#>iLKUpFSs|&G%BbJjB84jWiOrg=f~Ra&h!2&b zD15t|TQir8O5_$>%M=y7!)CRp_-b2ZstWp36|3O;wp56s@zS#MYzqrj@CTa}QW+}M zY+Iy21uJY;NM37Y)D^Z!{>w7B-)4ohs7*5Jo|Z-8Vl4Oel!z9kf}?C!NFh|J?zTvQ z3g+3Yd`q+c|6Cb0&lV|EL4InIo34eVx?DzWvPBA2klzfmQWdLUyLO5d;zOk<(H05m z*_6nAw&E!&_^8clQSq&|$W#^l-e!gPQ04UpTV%Ql`tzEpf?wNGA=wwp@>JX9DpbKf zvC11EJ)25ZYo{tu!AoscNM3)GQMcM6`Jc$(KW$b>JA7J3?P^(MptN+1ZE>Lr&azn{ zK2)iEwn%{rR@$t5%Lo4dr84R=Tcl70Z?jn;sqT_d&)Fh{D(Jyi4!L2J>pU4u#RnuM z%L@4am7=F@MFlFDCsSc;Z2d}q3M-`2y=14GqJsNvR$)u2w%Q_7RnVU*Uj;w0r9u=b z+ZNa*D^$Uc`7%~)7#jOj1{dRlv67{NFG>~)w|S)^=Hi>WQqBta|5b+b>1C+1G-j;r`jEaw z*;`|agtS~GQfZ46sNhXDE5xaPlu>`OMG95$d7BlIs#Ryp^tKXlK2^c9ZB|GsJzDP( z8Dkoe9#^NxBP%05TG={UZ;Rnrhf~jqSsYtVPlHsa5!#p zBdtj0_VG%{M0G|QN_bY`MZ3pVLY{G-uY}TQD?RD-@cs~P8>1gzX_rByj|oZ!sdi0R zpRSA)%3>`GM54GD{piXFns`>M-V0V?@Ryc%h|yJXI|k;hX`Mt0t5}`=MbNY^Hem|Y z@qw9}pRIg^9S&r@v5M(<*Pbp2Do|(k!?nF;GO)dNfg@irOF4@!^ zE{jK(^-G3ATHGrlCk6su6fN0A{^U_0Wnci2Dv8#NNgLQiQ~xe{S`4$C-g*X<3^29M z;b{;XI8Y-DQufS~ja6odn{>;foS1zhiQ%k{vAdQ{+-4(_;(xk;XlDRi2rVe12ayE24`xLjC1ktG3xRE z_-6->IF0oPJ^a~$dky0O@{S+4)@kgvLWunUq4vg)_}{%|-?fI(4&8y*z_F(7xa-#I zoCYdU+kZ{NRZe3rd24RH&NT4dOYO+9L)W^Dn-DtjkXqTLR$~-eK^b*WreN{Gv-*Km%@xy2yOXbFG9Bq-m8#%PVn|1 z^gcqHKVax*5u%pPnC9AilqoW-(8DfcF+$%Tf2qM`{2rli5AV6%Fm@yKu?T&O(AUS` zdL_*0fEl2VMJNNIt%tY6A0;Am^>v1E8A8Vd?;gsD&>Mos*lz@nq0X4_*s+&>IftQF z5z@lmM(v#o((I*&eTZ-g!##D;#wrlz#-%{rxB>qTgVR4w<8}PIjpO+D z7*3qYI%{qp>RRuGu)Ea&7MccWBOB2>g-p5$2x&rrWWBNgg6Ayshy9 zP&eMgzr*+f|4!o+V+;>E#_gKHPIi@Uj379SB7)OcOmJ(?yP=4q@9s9{b$~FpWzAh= zwce#0Pav?;cp3kiaR~pq<`Cu{r$EG6#wiig4xNc^^ufQw7>$3!I2Zp;<3jwK#!dKl z8IR*1M~_JT7Q*f}UgJIBu{&29$AO;!PXRvyw#SvmQJ@d_A#fV-1K>r#BfzVGhk{A@@IBynz`p^baXxz&m*mF95#*?gE~L;h&wrQNZVc^ME^m4Z!Wdhk(xkUjsf1JPCXT*aaglPXp6|+kjJn zPXVidPXZf(TY+~0p8)OvZUG(zJ_d}&iS1EfPv9fK0^q~IYT#zzEx^A3w*wynz6X5p z&Xt<$dvpo9GqS633LMSgSO)4hJB$PPcN!=0 zZ)jHI?t)uFwUp3rw5Ozl-8aw$3RC?nSU&SMw0StvgG>;XQC%pYVkUwifq%5#NAwF-U&N zB77ABZN3Lb4{t;;(uo@*cl$_B)P0tO#|s8KllC56*CL}CebyjPG?nax$XSD-#-WA1 zfpAAe#*NU0&bE3_P{)#7o~RM%F(Kr+8~Gi@@tYJL(aQ5Ih|7^Csf}(%zXjq7w9vQ| z$QjYM_keD6P;u#kd(NQ7`X`{LvOcDF-E;97@jW_V|1?D z^8<*^=m)%6y6(Bgi*nbVPzx zAa7?uCV>OUa}e<%h$D;`w$QT~_v9k^a3tRfg7e!QN5Gc}xaBQ} zT^&Wv(VIZ(sN;_PgqhDZB@cjnjKXYZj_8k?l0P>kaVu%%nI?o26gfbUBNaK2q~?4b zmR<;pJ7k#40S-OMe~fUP?u~H3^g$>f(nPos=GC90yF0>Tha)07A>0$i zb9DDaT!!#Y5pJ)A^8?9e>Fv2zpgqskS~y$0GaJDkkP9pA&^~NN$G!-z1uN`4WYVz! z)E%T|BAbrqgL;tEEJycf+*}ziXZ-;R$@il~A1EX{M&H_4nI{qCb zKZe~on&y6~sJ4#o&W=AQDu%{us2(BNj>fwb6$|4##wse#(Y;+qj?M_lvm6+O6DOHZ zp(?gbcqMX*9Drzd=Z^lyISvdqi_V>KKv#ia>+0ME#3dlu>O04SSOma&1*HabU2Ft#0?lbXDO8eKEaM_z7RvK?t*et-9#^*kfk=1pLz% zt@7aueoyK_=x%kPKHWPKJu(leR@dn$>A8w}1XMH&7l}T#)nuz|k04Q(IY{kkwLHwW zD1Hez!lK47U;HW%cj1z+)lDFFf)Lr>4&n$1&UUwYD9qROBnV;QlVQ%TtO9=gN-*9G zOC}>e7yoQht=>o4VnzG|#7Ypt zBEn85?)P|67}YKOY_KC|;sn<|@m5dNG*D0)^8gq;Jtn^86E(FS{KQSdnLUw7_5oJ0lw(V5ne;#UP3s$0pZvi!Gr}jGW@6&z8&GnzaiYd$Dch>opFL>w)_ej z&s04Q`C=v^TnK)T4}3Ap5azW?kFOWTUx6@l>(L3#?H)z+)P3F^AXs-j2C}*B2gO?H zk*S(n8MWPO72+FY?dj3OUkFoa8t99TMmUGUJW1oYn}l#|0+_nTIS1i|2=>ej=e1n; z`HcJ0ic5uCdHw7O6JpcQ+4Slj>eZM-Xn`Bi6Lb8vi3WqD)EV!uaq+S*U@gFFr*P zqfB4dTo9rd6V1g4W_s5v#<^y$yX#AeT3~*{=pJG6DzC>9vmb(!+&u~vXN_5oprMP7 zEHy1;9Q4`$6oz;`G6Y?m51f#h(VW_>M{B|0MaYB*i!8 zgWoI8#binMfK7D|%jn)yds__ZIJ+p2m=Qo|J&Pr!5<+9EJB8x#%>sm3z2cnD3d*$N zT#QSaC(~8|MLvo_0*WG9<94Z6TpP) z^C`~pT1Q$SD4gTnS|3$BwOUy(`UL`U;VkB-D9k4;SNK7ctM3eu?+KD;`M%?H{0(BP z1IJeC90ns9leQ8ui%CWghI`WP0C@??wp}2Y_E(S(kc=5X@@J6mlT64VInaT^4F=hj zd8RD_8BMZXA!DxrIf!JO(7X%eD3a|LG4>OXr6d#CE2OnHUZkqz|47 zY8$BSr1}nU;=so_JI==wTi+s(`)QW%Afkt)B8RkP;2j~ah=+dK3n0HGIgK6P5E_vh z0f?La0g_-Fq)br@r1hf6I89qkla@)7jzNjvq}FDDNm{x}cX=zJPt%LWBmG@Wf0?ci z_CcCyW6-qq!5217tJ0_i(|Xb6Nc$<%HtPCNz0giMR4=gIaE?A@Vmd|IL#LLm606n8 zdeJLTG8czd+y)r%hb9JaUB9iUugisYJ(PmHhVMHZq|m%!W+F5XQySH(V!h}aYTc;o z!`DLe*f0{$p?A{zZUa4jIO!@FHA1aFE$u7B=P~}aN2yvHsdTEf$9mDKvo!6z zeh|4^AJq#@fgOTAYL*INIs!IwQwwzUqDPUWS|+*P7ED(HYALN=^d1DSq~Lw<$V-s4 z9Xq%!nyud>gFp$7+$TJ;2;^*bN>!;&Fo$0#1FBDWWLpD7^}drq3y*9Q9^oZ6w=ELWc+YqZegAYL zd_Q8Ow;^75Y`f(#ZKTRnEeu8Zaknd6_PRdmeaKrbYX_%`kTz0@s@0QvQ5bH_ zgv*d*ye*in1k^f5y(kTW_posL;IdVa^tbVQ;}?GtTkI!NKc zeU=AR25K#$UNi$8Tikwl@OFp_5AKiZLl3?UT6l23@Zcz17;^haVpmu0lb_+iiyA{CV3lIJ*Jh&WJN!+4w9_NB$%2h2l z(~H*O7FV>o*1A3_11T&YE>R)Pr)1SyFTH37(g+_i%>%aNXeFVR9_dBLA$gSL!=Qye z_ydUgz1Ro#+Fr~o1tq-LR;L>?Zvid*)>eNG-q6M$ymN5_~a&g(%O+VrVy#jRD2q;L@ zd3l&ogakuLkJIl&4k;xJ_YiSI)>A=$2#71oB$49?wFXQrNXj@4jWJBsSKo);1pTa9 zhNV_hWkf+ocZ!VAd6|XHr%J0<{^&&`ahokFY$BY$3@Kzkp+cHZ$?leg(~D}5MpPKn z?6)PyDv9@O$=e~h2Y$uaJn#EjzBJOtszhJgiQh-!Z<#n;+#sAL@i>)8txeL4&hp}h ze4t3&a>8sqPfaCg<5XI;Hb5^r4>~S@j<_LgZf=}u?dBGES*PXP1)+Eh?6Ge3WN}jy zA8=D+g;RK&67Lm4TFzgXdPQA};na?QR@6<7?x|Y%0W=WjD@eW_e9SX(2BOU_ zg!M45fm>HN3Uk)oJ^?%YIQ}BL4#B8ka*`+N^=@J)#WNC&?+{KNhB4M`5S+(K9uDGM z5Wg^H1c*f-OkC_HkK|A+2#%d6j{DxbIIx|Z z31T0J2x=Px;ujDcFiYlyPOEfH<5+F-SP-!wcw>`14n$WFoYhOt2GJJ;$1;<1K;V0| zV(c$@LIUQJWDaAjo@Y!b>3ZTYPxC z@S8RDV*BvVV8VwygGwK6MKH2E401;dvTHgWk@yaBuRL`(jcN9?0;@63>GOb7(7K6_maJg6%nCjZX`|81_WcFi&c{U4-}n zU~v2=HB9$;&jCS?r$(SJ^=5%Of<&oNq{=~c?+GeK*Q31~U?PV_QqKYvU5YqXYif7Y zltT;um|5k4**+~`YFTBKmX0*D5xWwtGmR5Lx~(A%GeH`Tnk3{Dxfn7@1EOtXJ+)x) zx@W+-XpGl`;8}IROb~Y{Viwxp!ysttfY~6PR75evUQlACAYN6(JP_|IVj5Z@}I0>qDsSPa4m_Xyi6L9|mu6^M?Cs0Pss1nXx&ovwS*L9p8x zuw2*MO;ItI%s|M{J*5Cqrd3E+tB4zMOsxbV^1?tFW;w4?ahMGQc|Ay0&4BiTR0rUI z4kWek_3&oo|VBF++1TrWWVz&6hJpyqw% z6y2HN9Te5^b0Ay#AP;it_|E{!-SJ-ml&9m50Tkx%DqT2_#v+Ga&MOf-Cl0~n@S$ka zkr`;u?!j&C1`#tAj4Kc`xT`Ow3}I$CxSKDg2I1?-@8OHNT!oW-F*hT8EBSqVn)4oL z=jx8=c;^8Gxp<>(2j{;K?$3FiEc-tuA9oCh5_Z zkBE%8`~9W6ziH_}29^$FVCg^xmJVcK=|BdS4rE~IK&GO1K>qA9<3OgPutUy9SU>YK zZ1sPaYkbz|dDa*6%?I>bEpT9`P_jtnRQcFj`#0LOMcEU`N8MKiuoGcnNk-Lb|=4z|MlV&?4TeC)j-n0=R+`WH12WI9}j;N!ERge*Jdghx>jxCw2f`8#J@@8I^X6t^=23quigN2ft0@q zy$(0^BAY)+`X3TcN>p#Rv84U~uJ%?~-E}9yH{4ovvM~5RJKvYBgNaj&Sa^<8hS`zdU#fZ;Msd5ks*KE{1CjL3*^J0P>}j2$<{8v1Ij7k1RXHtdGpJvJoV zHd=e^)QflYJh=bRJ;VF_{gt1FJwExS`~MJr!-4dU*PcJ~-qPb6etgz7q4zaId+smG z?GzPr%~xNn*tlTkKmPv3?L%HVXYm~omv;Wb`)ow+d85MG47l}&mnW9qJn)Y(|7x}2 z(1wv4B8tv?Vg6%tu84{L^yi^#Z(cro^!yS&JQ0N+u`xl+iyL)a^fyH;Q;od*#Cvy>A?Cz?1|WOvCqU_ zfqgmltFdpu{s4BqC+bz~f5Uzp`%l;-aHY^0dtdCsvGX=#(oE?n+@@Va8F`eImx2NMAwcW8+|ZU_3{XNw<}4 zgX2@AU+qF^Yn+sHfowAzIAOE95f=hmkjJMTaCeNj+0cIn(&V#(v3&tKrh680+@8QO zNBRL=R&e`9(k>a#kyFM$B=h0O3F)V#J`QvQ(ww0s9nZ#!je{kmzmxJDye56IEZ2VY z+NAr){1aq;s$3l0WW4edC*nwdF7r013(sd1q#MlVDiu-<4h%f&ikz44f! zUe-D5nRUZ*vW>CbsJaQvlX(T_$$n4C3_*Mqc3C{!jng(4(A1n-Yfw0Dv9oU3Pf{1= zCN%bsbQ#mJYUmC&ed^}M!_O;eREg*_djNZ4XTOPR)6irzxKpHo+cY!{G1Ytya2WOx z*hgZ|z&;v#CU)u`100Jz2m5&J6R}Uho{zl<`?=U>W1ow?6nhzVrdt49i2Z!*i?Q#m zer))qsjp4C`Q|GgpZ4C8gJ1S;o8pOB^4Q5|&iyPo<8RZxufFM$`qD-FJ`YQnetFS} z*I#^P&FD>czw-Tv>aPb6cV2Vjs;BcFivHte%P;I4xpUx$pMLYlBNs$f&gpUAl#Aan z3dUZVoApD@$o0ObZ}{kz)(5^!`CDY~_@Y-mv$u^buljh_N0-I?dDgM~=t+0(I&02T zLys?hEB4V5w-xk#>&tUJw|shE+Fc*Kbnm^l4}7tQx$KFdou5DO%|oY_IH!JkwDkIq zM%|h?^WIJAKONfPHo|(u@BhO;_qD#`AFU5-1*G%K|iLhy0Z1UjT3Gg zc=_=|%N!dQ^nBi&_1g8rANg$8%zNux&zilvT-iGFfvI=LeZK$4{!3?Q)7Qp7+BW0u z4o{Tq{NjzTR~1%7eSRdN+WWz=FLQ3&HtA%z%BFuLG*{-YK{1Rbrr{lkSWaI}2A`VWk>|OKj{$FMv`17MN-yDAUIp>ih zSAHJ%hq+h0?mchB_hTNc-Vm`q_SWTSl)uA%2lmIY@4@~q_J3g4af0uJozFmV9YF#1 z1=ugbz7G2)?2lr95&JvXk7GZDy)6#M9@x{dPryDKJFjKdVE;Y#`>;QQ{cY@=n0Ml! zh{v9WeGK+#*w4ql0{eRGcVgdyeJ}RUusd|?M`!+t*Y71)1|{XXo^VBd@V zL+syTZ-omKKA)6=eKhu&*sHMfm322_zX$s^?0neh7WzZ&~(*dM|E0`^1LKga$H_GokliP(o= z=ala(?0jq1RoHLEz8U+=*!k=a-*9ELL0^HLYya5)aUr1Wc6mig7N=v_oiK=kTn+ml`O7wCW~Xli9l=|vM1|^*OuaF2Cikqup1I`oI~2enH&o9 zNejv1I6qm({pq>Xj;!VA31!9{P#}w=3o;=G7Rll$qh#@s4zf5pF3sZtTe7&?R!Z^l z4YK$whh*_dEwUamY=>~6I$0cQl16Z%Lg@0^EUqjji_46qF0S+>i=*Yz2u@g##qnjS zi?bDEan+P$@gWVe_$-Lj#l_8JaUHN^Jp_Bm%J-YfCDUYaAV=!r`g*cB2_uc*a$K^w zHdpH6_%>M_?3OH!9I@^=isZCLOQlMV`Y?tgK#1W8l8h10g(7ApcFE$>bqaHpI9OcN zE;HaVW#-8>%aX-~=VWm`x=bG}?Z3}oN1Otn6lXhRkvMom7DsZVF0S$?i&HaF7auhw ziw})T7MI|X#dW=s#RYY=n2Ybg;!-=QlJhf+;am+0&KXCUhNEAM;Yb)_ICv&wIKROR zIDsS8aD|@`1`R2${gW|VgG*tq*OjbqB&#zH0mYW0dOj?`LU7g)*7Gp}nVt`DQkWAUvRs^0BWrtt z&En&7WbuJIDa9E-vbYXWviQ^&S)6r|EIw*L7N2L3ERNgK7LMV0lpUILc`6M=l-(W0uY#cWxi-X8AJs;F1ix2S1 zgdFrFizA>?ic_a#aoMJn;=CPMoSc;AaRiYp4kyZl9L^()V|$Xt=|8eK7bp{QfjwEA z$Cc_i^38H_6dcxb>PN;LL539OvTdo76C`ADwnVZxWJeaq?<9+l^OCgzH6nF!@|Ubj z6Kobo*~sFMn@q?%4YD}tD_MM|nXC`}ZsQ;pSsc-lQhX?xEZ*|VqH;++SzKQ)rMOz1 zEH0*(c5#t9OV0)CC_SHElQDg9t3cr&&<-Vwk0Oz^)!*p&pc2#bp(Ui}!%tF}4^2{- zPfct@RNQ386>@y4m0B&ufBh@z)k3Q@dp)EQ!R?IwSbz3)r%tJUO!Gy0E_YmYZLlpAvzxebuJNy^c0VpIBLxyk2f{~x3rk0Y@uxn}I-j6miH%TD&IP2>aY?2MD+ zMk#kXJI6roDJge4J1Zdftd#pTe^So|$j=#R*?B~oY1h;EQ2%r0B6^f1e>!{r1-X7w z?sWEcM!QOra=+$R>fvS5U!^?zYq6<%XvSX7o~+OKb$dC(@_>{(oxQI@ZnKm-6aW4M z`KdlD|5wkz-o8#;kxBW}`Ioai;iE0Rr?Z!%dXZA@O#I9DAw41Gc|H)^Y5e;)$j{9D zb^khXPqtLboz7mo^h{eW<#@hml7G-~Mm;kje{zhKKhGbhlTSqC)sX*Nwk6N=iP%*6 z0{XefAosbHYsp^fpuKyU>2LIyR1h4A-PUg zrWWQ*D6ebIp@sMcUu{ZBS_-~1xCq~FOc|F~C_batZ*fU2zA@NuU<$rqxwwq|WlFyI z@MTK*h6I4#dXOGIld^rzYGGm zF~$BUTvi2s``L=0SW?Qb6W4;m1!$8mU4w<|!_0~NR4T%_W}B2h8DBG=T3=abu`tBy zE6OaXuEQsI;gj-G%DE|LeWDc<#%Y67fh9jiig*kl`--yoB~UAA=0tplx1@9-zo`li zGA+yrs17TIILe%+OyRJGFJyQ@|8r3)=Wcr0BxY(a&%phFa{ zHkIyx@0=$u<|wTw20r2nF_ar0;4K#)bj4*DI4BcOK~|hnF}c33x}Ne#&3YI-P~?bu zP!i($&H9eEC6+mEG(OjhFsd$d+_L0D4lsucoF%=B6}=ONUJHv2sg;T_O4S zpgB)HqDJuX@nw}X4-U_%1EJi9Pp;(NdKG!oOHwPlNO z&547_B9&Qz-V^0l-$aKP8&%*3)FrFQ=h4BVrAw3^k`v_9Q%|*k_?ioPO7&g?nd9PQd=$VjSR<|L+ea)y4l)g^m0!(W`c0J+nViM z?o=~|p+uMA-D5@@bLz}iMyCgi@{MK(*8^rN_i*!U*IIKha&5cOY~^w%xF0bta*sEo z9n;#GDK4ZTJHzD|CX}>2Xhs?}b#Uf*b8?;8#&y7)e5Dz8rx`xOOagC0o!Ow%>q$t4 zB8IyhJz~sWu7l?IgXRQRtvP-hDC9cAWy~IKCK(BJX0Lj)^&+!Z74kUMt`#80FIu>a@|kQ-?s`jbzv8}1QjBuK$8A}}fbu%K|eY+Vy!|a0MciLlWF5~@69x%Hbcj@C< zBGik!38g$0tyY&1C z+5e!jA0V=~D!Q5MSBdPeaM*QWWv|>IEcj&wt7A1}nzcYV;F}dEj7EoOYTvBbXk6!D zQ|l7$7|2F^)O5LanC>d{57SNe9y7`{0S9lL8HHok(XB0F-Ahd$;xceNT*98lbW9bk zbAY2CeKt}0Y=N0{liB+rbE3=9lO3%4YaE*|nOz+{+nLd8%%Sj2^lnBbuFU zTev+MheTV~+hz}7`2*%cXpKfk2;pZ}I8t@9x3N=*UxwG7lW*)@ft0_5&DwyU+rgk*kcoY@znggB_L1&WDhLw>Rj_>ulyO=Qoy}h@f{%Mefqr)Wc&j_ z%+ZXv0=N{o95@g0{UyIUkaF#TW573onCI{J9p>ySfNuerej58~cMM&oZ&H{fhFctJ!K<4vx2P>cBK%|>^5J>&60+%8F8A)%J z^c|A^J&^gWmGnhG=5s!f`4j>NA$}~7dNY93%a!oB1dHtpMENFitqu7e;4-8)fwZ5m zA|n4w;B3%O0;z|uKf*Oj>>p(Ol|ZIjCF3uW{8}LMnGd8NX9AZZ{bV51j|MW`IY8+`^+zy=`guLH7OPmug} zl7FfluCu}a4oEvb2h#2jfu+<3WP5o7NWI%-{8nH+8``34~6>w&Oi zBA;ZS9le1}*9ORRhcW(+6^C8k0%G-2m#2aBAKybq`xgP3t_Vo``$_({Z7u!>K-< zi=Oy8koLa_r2TwpBJFtuNPGBZdd6=6(vF*ewBt%(4frd8l&=L+eh!fKcLmapc0i`% z8}XU$4ImEDF1vsofcFDM{R3(LEFjZm18IL($v=jRb@JZ?UI6|p7CrGfAnkhsI2ZUJ zkoj<(6Yb(FjcC{9K*}u#!k!WJK+2T>YrvllqFxx^ z!v33qsG2S-fh@;-Aj^>qWV#MOmg7s@l#%}=ko>!VEC=5;1$yFoAnm&n$Z}i)WIi=O z+Qqk1(XMGg%1s2a9Akl$8vkmYy{H@nRDc_7R2XCTw90HUZ}YJf1c z%M2jPkpZN=t$|F(WsEGxYe4e<03`o%AoIHj$owjRv~M1e`EVgF^T`6z4mXhLer|2W z9|1D{F(7_j?!_Pau`YZ)Hto0&$oxhDneJ>L?a(EktCGoo3b+V-u4$$nn}D?AW+3gj z4k*eCq#YSRrW+*VJIMGi(OKdax64OB6Zk5Sc03BC9bC;n6?)eJktFs);1bYWm`DAk zK%|SE4ut-RIg&pTI1u^<0%=!oAnUK2j5mOk{|=oN?c* zQvL?uLh!EwGTp^MjAX>t0-0`(#3CT`9V+Q$Ani$%{20lP08;N)NDLhDE|7Zm;g9LJ zOPWtiR3rWY$=?WMd9DI79iOhCo&`YsVrSux>8DCMOX5f%(o*pf4vEWXzWWs=C?!gACY`6Ij7wlW&BMtzEQ^WDH7(lLgIOn z&$&_ZCrTU*r2qIN3iFKyGGAPw3Ht9q(ysw)VMnc`#{y~BFi9r?nI0EB)Lj!OS?5qW{y;jKhxj@Qu&Yyb6OL`O# z_KZlE{4^l*=>%jukCJ>H2oqzEqp>Z7{ByuO#BTwf1AGuT1$Y}U3pfQ>1vxix9O!Rw zaghytAD9E&3LFAE8-Wms9VU@azE&b#EYJrz4%UnS@-tPVfZuau75Ei!B=AOajNORt`)B&H*L?OMqTrAD{=wcsH;R2+#&gOatO6eD+7K zB#B;$?In67x+QX?ner#0hxnz$V-gQbJS1_i#61$XOWZ1Pv&4HOZjyMj#Pt%dl(PtJfUGa_ zSzigDSzlh@VWcDf5D>Rwk$Zu-b&A|9`S$?N0=)?s2V4cD{8C_B(AB_bV4mb>199q( z%mCt)E6PoImK$Xi<;HOzc@G+W3h-uNGVn@ZKj11L(z}*QoC9R~=@RoKW=l*3Mj<{4 z$ad!i4uBqy+FA4HU!UWuB-!$>UBOWY)JmBcv`GbDN?Y7!62a&MQo zN#ZJrb0lU+^hyL!g-br==h}o$iq~-JxtkcC)Ih7}Yzic;o~yyvj77Y9j^+ayub!JR z(ZeyldQRq2_$v}Jd8{yOTUuN3>N%NLC9R%|d7md&q*u?u4B^QXw0iF4C6A?VmDIP0 zCuhW~=UzHWT0Q5&FDNozJ=d~N+NYjl;gN%0AvcA=GA%BqNRnLJek@i(f zeS@Wa>N$|3QlEP6<1*P^)N>vm$@*8%b?~Wq+OMADNRhO9Zeu>>QATfH%O89~pY&Fl z|CiwwEna~Hk?oSM?qkW{BI%Qoeip}L6!Jqgh%FxacrSJ{&NJM8XoYb>@X}>{qWcka zhNO2%I#tpurF@d4Go-%lQr}wWW`1hB#p+KKskOEGC!5}3isRL$dk4|2;okst8fH71 z&>dh;VEnA0_yO=oU_9S`6-Z|U(Hny3e?mA={*=|f+4dd@qJMBVmG2%@{_-IC$RN4_ zngjEDIw=2|Ao{K#e@+O}R~1yAK0)zs1*MM<(*Nfmd!_{W^VT4Jxk2(*1jX}yKCpb^ zjUKi)aW5NGpYP%L43vL0s61nX?ENYz|JopX4+P177G%%fAi7VGe=39M0YUcqg5oQJ z;$1=Xi6A;ZDE*y5_Vx>sza}XDgP`~YLH<}6RK9IN`EeWuD(#KoK>9$C{!Qo)1LG$L z)sGpZ-wcZ9GaG^FwPG&3Dqc`lmsi6jd3DRQ;>n}OXBOua`KA^p7B{ydsrdZrvIUt{ zi>qs_HBwXRODf9kgqgX%{CuPgT;in_FKV(jF0XuPS%tNXip%FFlp)t90^`c+MlY)? ztIaE`nOb$BG)ZYzHp!Jtziu#ASk+ZoE3ldu4qOJdgsaJ$2&;VU#av=}mRSDSL@vl> zAxg!%u+V~H5oBdqCKfx_(M@B06%|!jJXuvUrfhymeFd0m4QR2wTCDiOl5#`@yDYn` ze8EESMFmdGD)1@G)#5uOnV4Bsz0AM(Zt{Hpg2CEQja*LWn>UXY9TZtu2{RY99G`pI z*vy(TEEAhnUbj$Gb5I3O$`=dKLbzNaR>KA1*(H_pD#~g!yLnprrk2%~UsN_PzhrTB zMcL^3`SU4)wR-_H8kVTI=3^~2XqZ7VqAEj{{WUKwobPx1r255kX@)q=O6pOsWff)c zYF<@UMP604R$N>>m!2%1S5{kEQ(g^$;=0A)`&*lJl;xokaFntsOKoM9^^41DO6ZV@ z^>qTZV!1XnZ_>D_WjsK!5VUE`_`Ix;C}CVpSzSqaB{TM~mlgFerfRW>C>|{gg)r7} z7MEas7wG&g^P;kmy}mD+g>SJf++L~IBH9gRarh$35^;wlvh*;pJVl4 z$yCcjnI#n!b0HJd@KA%(%IDQBY{8}VwTPLNpIfy+3e?i&SWsJ42~JSuSnF)1pjCdK zzl!EfEyL2>O0hx`MvNO>UWe71ve&UHpKM{bBBduq6*E#w%OV98#m{ZBQZs-pbO+Fx zRTWh=`PEpK>t~L&gUxl^fxVDezdyCC5|1>MS1!m`Yfo8+=>z+nr~1`^)u-N4Yk9J0 zcD`C+4o(!MXp&{~3abmM#+FxLo$xsq;z;Hhp`t9{@H}UhY})0OOR5%?iER3xNj7M_ z|4}9b&Lk5a2meVfX{o7alFeydHo2x;9iM0H!lCJBlI>|+_-|!8^h`26olF0nT!#$# z^;}!3LgDwxm1xuQWD(LDt)=-BOGL{Q$8Fi->bhmcrC2|Y#%dqCV`@q+6xy`n`88#t z8E1~gagA=Tvd-#3GAqy2`pwX(ixSGl0Rq-LI!47zX#IR27r$}Xrc zM>jqe{a0P4Sg2l5wvy9)@I39@D&Z z(~4AP2Ig-`G*_5FDQTs3RWNmO^Vij?EPiDzN}|Iq#bsRa!mh+~6UnF=B9w zDhG+EX8T2CCnB3Me(<1{GaDr0nn{$FDq@-~+2Dax*i529BBFWw1`lX@F3+z=Z{NQK zMT12|^O>i$=pKBpxTVuZ^59gg{Y^{hpYHWP#3_`?^!U@Ae!@Rt~m;y8F7#^yCIc5Ilw6mR1d zL^FRwZnl`!OoL6)(8+aDTyrb7;^I17E=dAVTwIVfy}(bakVyluDSh|ch4)Im(5V=w3qn zw@~VPR2p&!`T{o$M>pA|zS^=1T1R`E+ULdmGB>Xrq+Fk9mG=r9K$Zhu{hickePHxV`W>32ygVpn0J$a0{)E()oc3gYBDx^$6TD#6RAq zE$z!dd4t;?McBvT&PYm!*2gBPZ@rZ8^s@BKfj$g%hirlEnGG*K#hspQWN>-2rM}HF;a2G5@pcdF8xyElh69cdJ_Q|ee4NC36>i^Hpe;OG1|+m( zACKRP^4hv!`@WPNn`(b^`dIeu`OE3sAD^%-ubf{MtnXxyzJ<^iv<0>2d1Z6!7huHB zZqL(vQ^)#~$m5^ubGWH_Qi~G*O^VE07V6_2DL2^HMBn$r1Y2`p-3GVvYzqVao7Gn` zcWzDDl2Cm=PPS5Vo`l;1nqfD@UT$IRdhAQtIL27$ZA2O<0eKjSO3-A)8 z5PdVMWqJ#=mzK+bAA&FbS(!ua6weo=3w zT4jMY>oOVeL$msXeHgb4*0&gS#4XVR?Y%S9Ctf*#G{O3=mHIeu$4y^tVZeX0_TeHy zs0`Nk>`E)8vM>4S08LgfNM9+2K}#?`USD}(dF8y~;@mNTDUL~fbJ(e1n+|;pRzG5W z@dLpiePs(V?8H;A*n<1NY+1gWW&Ljbou$u`7SC!dRAHihyp>l9jltzTe1#>=7n5_# zyTQWjNA3QliG4Vo$`f*!5M(6JWqFV<24*~o7t6O6cG&0OZs2n_v9r6Dmp%xc`PL7j zUhK@TpYRXgOM~}T;O#bGiLaq}fkE+nZwbfGM0`^7@zz)$;Pm~$XDnq$j{4Z zIF;MjBPj;Y1T+rP(O$C~-adtuf(-1;ZDgieZo?%x>77-SAh? zISnsnH~d|SHxA-A!*ijp;RIzHc4noW%3k|!U4$)@)36(vSt`HtojQOB{O2~D%wE0A zeV%WoZl&CiTjYOQ6DOR;#3BDzO)ScXM~=tgd6Bel(_XUO7F=k* zlX4rrJkK{<7Eq+#^6#d$YtYy5dUnH`sK)>|??U(({S5nNA_rNKs5q-;P@{IOaXqOo zYRl`WIn-)y!?C87aq2K@1A00`E^5n5S!vs6of37}w3dF&jJMFJPG`n5h|h}J@?zRc zzh=nwkQ@`WWk=de%^H%`@S?Bb4dIfX0$lP!fJ<_q0lu&+EVtpGwmSwP4(@n^w!lqr zNp>T4p16-HgkhK?He7_xn>sIU$ zwUg8ELfX3%*M1ST=4lto)bLDarm?c~y*LKhBE@4!0fP?OMy8#TRVyy2a~hX-(Q+Eb zbkVFL2wDihdP}fj=ltxb%AND0=9*Dac-SLqrg@gY<=f{+^ z+fCz*bbC(2q1=W~t)#gP>}e3k|3;DB{HP>hs4_UaQFsz;;foW#sA#y8klV!#bI!KR znP8hU-xrk(iTbt|c^HILeb_}NI)TpyTzn(cKLAd$z)(F0v4 zqN0U)!hPZo9LusO&suu8X$(0h5W{*DF)B+kZE+Tw5})?LctX~iZxzi_Qz&X}TSTaK zz|LPapB;xC*+X|mt^ELAwwbF>dZX6vZOU;+t$j9t^X)D@YVCtyH0-$a2p?g*^m|^Y z)OT8axa;bZuBa=nMck7G_=~!8M@{&rmm&1+uGG4-kjd_~tj8m((Db+HS!qYp-u*mX zBr`9Z{UmQ3k)*Z&f~!yJQ8(;debO0q!;aM_9lod=cKO_|TFKoQ0YIe)pQz@T-LTdJ z&5FbsY4=(-L8#O|<)bvgeqp`QZ*;2V>ApKoMD^Vh^_M+6jySSQzj_XdG?53CNqiBm zH+SM<587_DQYXE9B5LNI6WLLHcVy#AP;9HR(*)(%{ZeS} zZfByyi>g@Xe4JXIbmI^0dt$>^vZOfDr)`J5S(~6oHk|0J%_OW6L}zWyZp7X&Cb2yN zn;GyRuqnH7;yu|7xruHbS2$2}8$OmgtQY#I_dd9C+#2yB}(1_C+%P_wB{ug znogdNbh!=Rqd_-DHyn(5Ju2%&!*@IW**+s`%li!{c6{c}T5~ii>md4_6H#Zsaw2N> zo~SL~Ms4|F$7i0XE&IX4J{!57{XXyz@Dt!+?EA34gZ;>fs2O{i|A`$Rdk{Xv@Q*t_ z!C^Y%FvAC0{m|+Ja;amisLro;eB8d(iO)SdKA@1rYIU#yLfn1 z6bDvA*3G#ME7oVPdxjZ`Ds2=Miry$3ZAoxGkIrs<#>4E^o~kodJ5U|+PDC;*)yt|g zXv3lGOLtMYrR%xu)yLcCH2j2qb-x=WY8+&sd(CYe!SeY|y$$|T7XRxu7Q=s3LHJ`Z zMR%E)M957{eTv7Q=;hzGkLt$UL~nMZbslQ$nB6$M0~&M(dHI1$AR+!%PU9Gg4aYGs z=q4+(Kvtv0dhQ6Y;YCq?oLm#VxC+e%OI#Aa4TrT863^;McsIR)yEq{UrB(a$ ztgB*34TDtL{(xdAyWzYa?b{RHd)OLu8AN3oxa&}T{@U&JO@22nTg1wFsCsKjTO%1LDMR`Vcp?h z*mDebt0QvlJ%TaFz0GoNVjZ&!#PF4+$k! zZzC9cgBg1Q8QC6KvR!a+(pa}ugfb9ZyBR?oDzrE4T|0|)LjO=V?g|^9`9I9P3w%_? z**|_Zdtu3)`#mfWFkFNLh+HI^0D%oA+>!ty7y=0-H6$_FASfUTQP(w!KeTFFl~!%B z)fQWQORXp>3ie99($`k8YF{X}T5PR%{@?G+GiOhBH)#8R-%oo!d-j>pnRen>9#j+manb3QOCn`3!L3@O8EBsJc|2V({1p7`x*tA> zZUMY{!%NZI-=ijG#FO{D>L=!ZhG{V+(zYrdCmuA|nWcWeX5orma$pZ!oGzyRt;M-H*foqX}RMOJmA5;r0(njA$19+!a!X;xkWQtpbnaEDba6;OVD> z=ibSD%eeac_?JA@MnrPcz}Y$1<1)KFq@q@4*Pflq)C|AMi;~Ee9JcuG(@W7OunWSu z#YftDqG@OOjkY{bs~~D5xTL%!`~hlcNn~q4qTc>=PDx}#&ZC?VLyh9l_XNv>@T+F% z3bv;tDg$1TBSU08?2L}Dw!bsAB>d}=@aHmCKs&&(0=uc~*`w=0d?Jrsi8?(bn}%O`*DmP33E<8*24hu_%kIxt^YoNj&Yy&cv+Oq+$6Cww(^u z+q+iln6No-sJyPJt)Zqokuv(NDOcfCR?L}Nu3pMcw`AR#`9PsgeW)-8%i^&BqNEXP zDC?SPrsL%bR?tshTi;MSy#W*P`Wu1i<_iEW-m&;4Lq%P6Xij~om66mp7Rka-e1}jD zPq1{QoYmHISSlmvye{n-#u_<`N5}&#G-q?BAxo6|rh+b?MMnFKTG0sBXcBN3B+Ki&{~x z3PR##Rn{7QA2V}PvH9eoah+QKgl`*a#hk6v6%X^Srgr0kwF|V7xv?~iT@)%InZBXg zb+s*eQ9p8cmR{uAuxWAan%epeNKRQ(W7C?tmZtT3u_Ek@Z$`MKv$A@%5oD+it4+5( z8*499^u;(oWK&Uydw@qhkvsEYF~wlMHJPOs*;@5{QH#aC>qRezbgR0iMq3P`BvVTH zsgNo!rfzkrXr}Djl|k3FGZuT50s5nc>0ijGG!p{k;Cbc8Dij#R^ zby|07HS?n~(if~%ELL50tG(1tQ|f8m%4VzqI0b%G9+?;DmqiI12mJ3bW{J zy)~n<@sh@-%NhgtR;BhlYav!v)Yb%4Q3$MWYYhb&n?ixrwE?yIKX7)SJ`~U`D~Z*i z0Ker41@f9V2101R0%*|#mto<%wP9-E`MIL54Gy!{hwBqrhl5dmr_1;!%Q~1~C*Qu%dEq3($3_@J2$mv=M5=e zW}S=)W9nZl-PFfe`d>tjTh_A}Ii}wBkD;4-JSv8MTI9s?kHRZ7Ua|ZOgnnL(9Mdi= zh@qQ$`;{2FsmHPO>qUMn-PHG%7&*5I|JE4#GeYl(p_}@BcMScdF5(Tq25uTct~Z76 zK?zU4OyddoH}OC0knb$QY9k}?{mc>G4}1rh*cNQW&8tw>W&N||tZ?Gw!rbXo3$a{N zoEKjqPsM^Qia1sLXHJ|97KL?UQS?a@qg*p5PPGa(A(oL|8}iN}uZ3_b%=w6AgB`x` zd_)5c_?#-JseuZLIm&RU!+$v1nNZ#En&EZo!`|UFTd+r7;c)Xc?~DcI3BC{99$5rSL zEK9i5>Joz$H8j^%lT=pSdP$T#r=f|Rt%PK*%5Q4KmrJctetu@Wpaq{Rbrxfj&BxYu zytYr?Ii>ZXP(y73S(7Gq>6LfR%=&c+gOJ{aUMNqTvDzB>Wh@^@`1)JQrJZ61SN#@6 znU5rOrZ~newKb)9NS(oZPJK(Pe|(4pOpLYslKSR&X5*6}&;pDaIe&PMkl0lBnxZ72bGvHD6sk?68|9_0fI z#CtM|Gk7zqGkB{gZU6b@C3+NOHQ=jgRrVx8^##2e1EGVHfL4JnR3bWtzZ^kEycPYH?q%o>O2)UQeG+i+R+rdC*eT|GY=w-s?nEmABM=(ORaD8|7KBa@{LEh@os zs`Uwpm5r^2T(nD%GiYcB zW)p`+hF!{7T)PejX|=!~1I#tG>g*;AF{@YCtDQO$lck^BMWD*Y>J6C3;0V79jw0KC zZfVj48GsYH-~xiJ3#i^z;<4$`WZC|HM4pp6y?@$h`MH1 zz4GZ%evLc6mX1}%%!EgS7|Iy}X{m{3x1(aZ<~f646Ze@#pNZ=X!nHKC#@>vJ62geB7Y z3uSy^0(8e-)nImfSH`{ci%;{J-ixk0^IOw+VV&M7u8eubsD~1=Wt2vWFU9Vc6-}y> z?x_5FVo>V8gRbkoOdH}W__f%NX?=}VURSX^qcU5VMtPanQ( zHPkk)!$x=($)U5`rpvkpdigtclU=tO|bdtcLXb({wYKpJh|Hc9w?LRued??d(-*Q|K4Pj7UPibN7 zkC{>@MNJUI&g!Xj7vb%;J?X5GwGH*nt(ZemlfV^CoGLD@-h_r$7cc6G^(rc3%T)tl zC3wig5`2<6-Z|)%CzhI5F-tD&nT3ib%*P^5neC8y7sFP?-9wS6DwfNtDw%^@Tw8;! z_9{7b!I6gj9cXjYW!Pq}p{W&{n^iO|Rhxfyrpd;)&CpR6a$&-(ns1Ku+ll&Cwz##$ zn1`uuv{tKqJk@I^Hl6CVkit|5qby=*T3@pfYXy z{>|mzOkKolbY`J;a|h0l+UAhnMb`MZi8?cPhlyYATT{iofMS`dF2f2lcFtH7VP|U= z+-ACQw%$|Dp!~jFZ}VvjGNLD%4 zK&zCClRZgWl$oO0S!P9uOy8NsP-=2HPyJ7{--2S_Y<0P;O5?1yNma(FH?`oW?v>&h z2d3JgDh&5MQBoYc5X?(im$k?^^X*V^am^R6yKR<>#bpB%=fgHjrEz-X1-r|tGR{6W zDK0J}=v7-#h2iFA@4Q@QD+`VC--LQbNJy7)9<@nvas5@iX4-<|(q-aYXS2jfF)S4} zONHU)vH@NRG&WxM*(`B_4a@(tSt<})C&^IZ7tsAF^JLCZC$*}V~}woj6?|(6>5@@Z!|V`-y0GNJzHNQTECMpw60waa6WVi87SmkEB;7PoAd#~?<6vb;fN+2Rsd z-dN-sI{|T)F)R%>ONDXr7zd75fiINr zwyJmeO$_Hqq+V;ofvvmz2CWvdUz1nw@*7IB#Gb5uHta}A3&6N8Y) zxEQ5{=5-po5p<)XwPt<>JW?n0TpYn|4P3O z9sqm$lG1O|nsfcgB^>OyM`pCHi7Ke>1zPf=#Hm?NAl(inGZM)n!~y+MyO1=P{cU*MBntudxMJ8s}(v6u7LF+6K}8yXBLN zL)glP7b=`~ME`#(EUySeQxo;nt`Ed3U!zRSa=GjPS+yieBLI-<+};>n9Z`-IHRGejPnmRSDc`bq-U$0u1e$lu1$(F>rLWy zo6WLNYaji8NW31mSt^b57d9!*@+QC1rZbxoDu>IhH$}J9l{c zS|z>Q>6+@z2KBs@6fpQQK*t8-tn~g~u6M4q1OM?#c;isfl3r8sTu4qskdj^uKQ(zG zd{TP3Of-r!bsOfIj$bJ}C)wpqiy&jHB+PjbIEQIXiRT}s0u<6-@tuEOLRG3QySCB2XbmKE??Nj@5BG7yZGh)_Q5 zJA85{bOd~pqrTZ1)gecYhbjo?6~O@{W0V(~lSWx*O?DtT!kyya#tEoV*<*xTsWCQ1 zDQ{WhQe2hjeVz@q9D0l&;>zpA)GbT75V2x-GdMX9G3HLT2=XRdgEOL%Co+koPckOa zerKgBb4+$xfF{W|Y+^aDVmpUv*D0S8%OH}b#?!^*)9g5uWu_ZOZ7d0Xu9Jz1%&;>< zg~Dhs$)`0q&j^TS?qr>s^J8+wvI=7?k1vusmG=`@rmI>oa}=u9tWm1a&USKmPqKy; z$Bz`GL{h9T|l3xw>GR=X$RvRL8$($4Rq(u(#O1ct% zu6yw3NgC$f3pmt$2>;u%+^-QNx&J|M45g3q+&TE)7I4oZIAFOiCOl@jHxO=fS)S{` zq|Oc<>b(uLZXO-My>NSy`nn$hwA_dA?{fbU|4D8iRC2rfRi+``X82>&uryaYA zdM(Pg)V&qZ<-QsJN$v*~?dSOSyE%!M>E;;=gRP|VDLfl)zqg-z3ZUgK#lOqF2LDO! z%kl4a|3CbD+&{p-*ZnK}``mxVe>clB51~0<<4N`Q1MvE_ya3#O?^*82fRKlOm&CMA z`HXjORz6>&k9$A|JA0#EMg=?UisIJ*z^ZUykW zyf*-NJs#S4C!8tgd2a*g=J&A#cxHlpKk(G|y$=C+{N4PneQ<2->&@(bJv@^}ptVQK z`%CE1w;QmeH6SYzf!@VqXbY}O>-~lQ1?;wyrb4sZ{bs$ES z3Yl8!Pn!;8KYgYxOI;23b97IK$MrzoC30?EY83`)D#Q!~=aAL~RWb`o{mDmwTuo%G zQltc|ZI)rw^Z=JiB~=a{GJ!*mkG(dGuh+ zy~I`|jqvvy0CCR}TbVQ>wck)+zae%pqOv@9!TDRtIooqToNvR~Bg^||0I%P}gMz)_ zcc0^-&OPAlndSL4lwhq#Rb%LpWGL{x0cU^Lc|bCIF2X;{G84SqcKcazEo(Cfz4{Lz z7~Ctf-;IEmf!wPHHNV?nJ(EUw`rU7^UQEXi4Az_Jc*J0RkdA%_4c0elMDKn-H&{QK z(8Ee}J4nfCzH1Rv${*nN_Zk>2{2ze8V%KZ1%axjeg2U3=YY31mAfFM*0>b^=S>SpN zb)hvq3i2li*gG(QAhY-2eo0`Mf^_#D!nF7emIdv#7NbB)?&V8EQAr8H?eEi?*?lN5 z@LMTM6(uvOR}~27!M9IOMo5d+g5pW@RDf8FD&22{j}>^}a=2IF-i~`19#MnRTo;06 z;H_|zz8g@}eV2khcorU3q?ZDcKIG3rAd>Z0C-OH3Vh#LQFcT0lb^i_|4oXXYSOFL1 z4@&bqrGQua`RF(Jw1h>+R7IL)2#geAQd!>yJ_ui`_G951l$MqaI#Q%1Cy{GVnwRMt zig4<>N1$s-2)-Ahrv6L9~V%speg;YsvGFehsDf7U_J?9F;x{4SiJlQeaA4Z;Bh<0dxkX_q~hX_YXBv z%?n@Gl3Wy{M<_iY()S`rR61Xl+R{h377fLA3~2!^%m^{>W?f6RKp3|YP8%b_x}*3+ zg^dFiCu~eLzmy+pgqU}%t|gox9E1T!+9VOSx|6W)IfV`T6)>gSB+>P0`tiiTkW#@{CiVEzc{EF_wgh0|)}W$M>5E_$kP} z`Sk8*8r9yp>Os>Dm3$ic`wt+t~m(ia*bY1 zY$_4mja>?Sz}Y!<00Wn~SdYQ9MPWp&oU7>G(8*_m@)>F@ZRSv2OZGtQSHYiFDi;3` zc8gkk5L%k3#mm|5uway`{QL~4vUsVocqtkPWpRZL|2oj+WM0mc4d-)t9noq&ZH9M) zZMPA{`jqt9BZFm^V|7BBP4Z1_6FdL!jtJeO_YIC`G#zWKn` z$4I=CiUQrc^$5`xqSn}I*nrnx1rFypK9!L~)*||`EwTQ~;opz`JC(nAd1Kzs4Cg3o zB>i_?$}MchnpZ(~1os+-uPX+yOn_;5nb#@9ry$KMDC40Z8r|W`fnG}VN4G)b_-(M) z|40xY?8YnYkqP3$(*pic?CZdCpTHj?V!O)A%+C+s0?Bt!@BS(d)xPXm3F=pmKm+*9|7DB2zE^+6jQ^QP?_YhL1*So5q~>G>R^9KQ(GFz;Dj zGl}`x#803}6}-leOW;3n`NWsuKOJ7+xCCGea-P>!0@L1B0b|JnH%=S}HFZF+PcrrB zs1n8Yd<3S((mryzCNBcxaq9WegD|?w$~Qd!WAg^kKJOrZs>^kbtCEd4V1oKEqNad-O-&$n~cEnC{yt|A7$256TrMcz~di{{y7Xd z&E;aHb_J$ER8;LIXUx;?12zv63gEs2sj{XUL1v!bwS--swAs+&+*iS@GGeyNjr?$p z+lCM`dLY7e6jAKD8q{&QBu)mgjl{Vwj@D=J5T5PCg9-;rzKOxi?Yoxz5lku_`1dq^EmCMrH$u%cH-z^F`$`&VFmhZOX{GD8G}2fz4}UMD@S3q0 z98Xi+#V*zDvhs}_GXd^e@>eh`Q>;R=+7LjS;(Nwrl znR9k6setEg)Od}{#Rk0V0yf12vS+}T@F16;F>oF2*bf$s+OZ5+)Q(>T_5u@Hr=Ez@ zegXXV8fT%f&ND*IRF!MVpCG&+s#uyE!n-W?=VPYK>Ww<7lpm#f8d;8>hIXIDzC-VT zVzSO(#30jME)L0Eqy7vvfHC~2_oHsBkh{|jyhT6pbywgP^}sLWc69@P==AuZ^6<`1 zdZcofI}RrXUks#&L8`zu1c(Z=21vF+YJi+$kUE4p7sw?PT@NILuC5C66(E}oatV;D z4blMQT7#?yveO`qKz19X3COn%(hTHBK-kU<4!K;Z2Z3CQhzDXH50#%F{c>^5^l;wYLe}(24bO2Gy*9WOg`4#^B zgXTo-{1OO!t_=!8uipVF!aZm{hQL0So|(Q<{HOdCfBqo}f(VH@|lbfXCyz2gH=Q$RfWt-xio=y7AtHMX3wm$zHE_QBh{!@QR+Kz*OR^qOz*?dNTj+bEd?EdO>{RErA>wV8M>Q` z(uxgzV^P|La33Lkb5YtlxL>9F%Ieg&;9h{+yA47=g@b1E?kKW64bW#PxRO$Rm%^D& zgk~Vh^sgZjGMv@%^=1Z0+#8ay>cM7Yq2%5xPYG52M-)qCb#sN0n;kaRQml6jqs(TkzL^n1jctGi<8M zmHaLEvW*(XNimll%P`D}p&R8Xhxb0*!&80B0MZZR&*gz^i*xJVem+hqscGX+;WHx5 zvjd~KZ=h(gD zea8?(%4Oj6kL+nDJS_~uc-$k07Nvbd#EcwXly*Pd(?}m#l(yfvbBfY_4fkx)$09Q$ zkj@!;UzX>`aB>2^+W^liaH_fX{=N!uro4+k|EQ=TEl(~CcMtBQVV;`-_ueY88no?7-0uq7 zh9#cr3fh(>p6LqOrX}9r6{Kz1*M@8wH^>e$d&dgL>#3`7R*opCE>&cI9mU#0U)Ms3P;$^PTPO+Y zQ1)SfBXOUFdo=E`xX0lx{QTUkuPnddv6(*^eyw_^&_zXwdz=dYt%d-(yey<-TO^!b{WZp6&kTy>HB1JThzT!>g_hy?520-?{FR zkET7A>%TB%_kfj`?fT~8@+kw}x#fbqx30ha`h(-%>L|&%=+T?D_W$ePOYXS7Vql+J zr)8a*aQgB~{``x)vgO~q@rIuqgHhh2VNjVfaR+ec;x5F!5cewF&A7MW-idoR?tQoq z<35V}IPMQ|`(e=jxN~q%#m#B5Ww`5b^BuztxW9q>VcZ9Czli%S+ zu{f(#fx8BG2=@-$x8S}P_rti=Ts%}Z>&G|-V-l{GffgshiKoeA2B$-b_fk_Z&=+G3 z;$M~W$iX4;krMvx7=BLE(*LJ2wZU-;@t;8suLmH9xL5o+_9t%SH;8;wUO84nvaLLX zUyBxEDmPk0o8}B_7Vd(*Js?FPwBF-Y(N2oCGIs^x)b*;>Hf6W8`z9h5j!| zJ)IhpE)MqSZ{p|d0&$ZL&aoovt;-O8ugLh0#L1?Z*CxRi3C^)C)9!+Z?$_!s55I5mD!A$%P(dUnXo4hn_71IBgGVP2XqT}Mn$vCGC z&nWnp;)V&-rScc;tQ)PXN42av4Wy&`Vl4)yxNx&NQVuVs59;8%0-YAhBAx9o+g&`b z)cd+&fZ4d&{?b1OkTw{Pdjjr>xbtyO!95lCblfv=7vY|bdk*d(Zida>c3sM@Q%44U z)cn=0?~U#`VPw|xUwijADc@T9`wcIr?(B2t?YCe1$eO^dn}1lfdh!gN^Xi-axbnd(Ui##{3BODK+Uje6_4PL{&G_}PWn+K+ z{^_4@m<*$*~VgA#Q$Yb|r4ExZ&D|Cvg83_dB>x zP*`D8q`yt#1aleB5ueejt|H#6fhnr`pF2(&7+&ggJhWop? z_v1c-`%T;*;Lb$ZAA$QE++3lu0(TQ`z7+Td?jPXh%jB1Ezl%Ewg>NwK3AjseufV+l zcNq6KaI^kAhx>Q9-^JY>b!aed&gRd=U5UF6_Z7Hr#k~jjPjUYWH@`#p8*aXs8Hk(9 za#(jc{Lco&#pO991wdl=1Q(Zoki@khXkdA9bq`5g^dnqcaYGVUZwMDhsw8npEnFPc zk;D=tF&z4f;vDjm#CZ)NahysL2dyHK z3t>p&0vRy!;*pwL6TbC1c>Vxq%%ARkZ^JUD$IOSNgs~;LE<}1 zk$f9?Ddu|I*|>3WG)oePw!*~~Hzct#h)A`d4kQlOg~W9nQIj^jz<^oa!ItPM$=O%kp`I7#BxC^BJu#M-d81ql%@X;Wx5(^n;)>JXyfyC1-@Gkehrrb?cU*Y$LYU{)xl}XBXrh;S z=PTXixbWuH?vn_TNWOVf`xfk!D1GMrDxd3#^548m9odDyd4u{3_$QKYUV<`xiR7D? znq9?jUSM_=zZnj9RX)s{$rllSBKw$^i&F98>}!T8uFDr&u8o!+G~c}K-EQ!8cyILFq)H(9OL3=c`EvYhE;i%dD*UW}>N4_Y zZTH*=$>h5i_bp$*$M}DN`@6!&`l>D?FGgR={S@~J;TQX2Y$WN^p_Lu7VUOPmAM3HY z3||7d+{b3%R&9qf$=wXTWZ`4|K9gLg?*Z^H6n@tCPW%hw^W%5mzo1>~!TR5czpOJq z?U9N)wCx(rFZDgn9^{)0zI9)MZw2_~3m@ADbs4*rY*%H6@^*l)L-^GBmSi-1#oJZ+ zBHshx`orsU|^Lcwr_*iz;W#lEup9jFd`Fb6HoShu;b2{;6;X9L_ zpMviW;p<9IraRk%DH7r9syvgApNm{0d~A=@WzyrwZ%$)QjOcVoyA;hI3C4Ci$>OJW zF4rgNY4~Rso6jfLzhe*Ww$_#j^^I#9+G=ViRPn%q)_=za^Aq%LkrPVmSGQERY?`1B zG{9z*m$XiBZm<{K&3i%+=T+i(sQ*A^%WAQA-+zdv&fMkE9{*wHiaFZgKQvS0_wD~z z6s^GCtk`_EzOi+}G91xTE9ZEP--vBf#b*MuYju6&gz@7iG}N!2fU{v5*G*8TpP4%P zFCTjLF9rO!6c=ZiZQa!RpV=xUI(On4=HI5o znV)U{aV6=@>Z<)*6Fl9pSu^&W=0Q#4>)4r*eV2it|EbS`f*buZbr9C9#W*AzTOEUh zE|cul48%(W1s;bG8BFblycQeP8iLwPSR*P<9NPs9QLbxH{TCpZ_Gt~(U;}5kF`U2& zjo3>ZZm41oUy?oH$FH|AA!H8c0t?jPgHpQ;vp(<$G)&4>A(=e83K(Yih)JS>8Ggrk zOghl4xpQlAOn0bd6L4rTzg(Tl1O)v+6UwMmN0nM@*H<@Vi)E^vig*^3+vhxjf>*=3 zvj#U_EzX+b^u!29Z@aF=tG(HcQ*WnjFtz))MrP^#vVov~>f8t0cF}sS=o+ z8(f2;QiUCd>5D{FmN-(ZvNdLZX|O4>Do|?sXHC&t6~m2W*t-z}g?xO}Xmux4*8uOp zWPfk(0AJFWp5C55|M$I_KL0Xrs&A#&^;3NNKeD%XFc}7&fuUz|DMN+qP~dmaRwzlJ z4aXPJy}^`})6;ADlCt}FQxVegpC9Wps*}$s6(+ld(N8!IKlTb?|dIL=m0DG{l!Qxu199E#Ap5c=~%&-KVyW_oTURbRmlKy@N0Erd;6lyVI7r z8)tY^*Lf%U=6T2X7JCO3c*jilra;lWc>otc6AecLcK4OS=<~cI=XnRinM&s}L{tD1 z%=3F_ygnKxwy44hS<(3E9V$mjm;)(}#W?!F&7rTS)g3w`dI z@m@CqjPtp3cVf?uYqusXa(TzOKXSqNURnql(P!CiWJKTP-c()4@TE19-aQ#Pngx>$ z@%bO{4)VW+BIDk%^=eq@Q`a&S<-3sQ0Zm-%O?H0_q&jq zpL%;%xi^L2T8o6{p|mbRVY@Qqy@SD)fzG1X6IqzH6AayVqeS1F?Ec%9dF~sM9?*`v zk{clo}J3O1&n*PHy9{}ok)U9hsX0R&WwzXPB;vSbhQ&4+@g zmZ31NM9`%9JrUU5dl}5qkaRW^oHV)@ke_ZrT65folA!uG+}-^>-Iu`tXC;m9?aggN z3BC(ixDg89JL&PyHVmCy*NfB&XP)wN3d9>tF=ryvpci7JmFy!;U?{y{3?TrNe zzbzX*?@Q+^*IM{8RVq_lK&Lmb3uN=?*WUze-M!V4{CbZF2LoW zM*tCDSvw%(U!eU9W(%EfTS?CV#2m~J4- zB_QKptLbG60A~ZA09XwF!GQCC_X4C{{D8E}NjzUD_Z2|OeNZ639V0$QU>`uHms=^3 z{t2G941XMu_^W_S=Pw0+NZ?Mu3ecMXY40H5V!$bYGXO^cVy>&;b3Dtb#~Xl@_W~g8 z_yi#4jtjzoOvg$<##^Fc!FhlyA%7Sk?a>zyMPNt@AhKx4DfAj>zdr(A0KTJuO#d$d zna@uHGM?`OGX8G@GX9A8?*L>uxI*a7fGh{|gMZo!x|0v)Bzy|=S$6bI6fv*N!1UMUzdQAl+|7gMc3j7THF32r73CMU}2V{Oc z4#;p13x2=g-vac2emfxbyjkei3!S?pP|rmIivX!FH?7Kn+>wA~fLvyEG2qMS6Vm@# zK&UiiA0WJja9a}EpG!v2?d|hbf!xYs1;P~qjs=_wcs73gu74aLm!ymatOsPcivh;~ zUjjH6ush&cfFC1q;{i_rP6Dh2oB+sAk8=Tw0P_I3$xJ@rFu;j`?|aqzjI&=8_#9vm z^n-xqfIkqN%W#NC0GTh`o&_TMoG&=`Xi_+~i&FOF#yBI9?vpSs`JV%XJ^DNa$Z-5X zo%zDGAN2pO(C-1nug_QU$9!xDq&+tRGW;cg47Uc5;VJ=P-#+sJDR(X)etpK{4}HTv zqXZ5BoQ!Z@!9RmB>CbI~@oGLE!+iiqxo-&m8$jxD2$1nUF7zJ*B8&Q51xPuU zi9hmO$w3)Za`+yNa#7}$9ORXfgSY*P&i5vi697C1tGxRIP6b4B&*g#X$Rq1qz53gl zMt|tbBAhAEFOVZi(mw=0;d=s)3p^(9sK6rv4+}gXaG$`v0`~~qE%0`MI|W`RaGSu5 z0-FWa30x&`nZShtg8~Z$P8FCdFh^iOV1I#`0{sF3RJti|DC|Tza{wvld_c-61PlOX z0Wv)O8GZ^NfHg|sa6pDbef0$ZX8|WaaR7yH6MQ4!K=?NU4gg#zbn4Lucp)J2SjEfm z)E|#JB@d67^xIM1hXGy(7y#S`2!G#3fy)3hfG-4Oz6JqNhSFJYNY52|4&VsT`wN}* ziTr-Rk)VHw@-YOE^@-t*1JeH(;9$^?3jK)C4+El%rXLXcKB4ag>olIeO6bdkz7Pb3!*9m=_&^H1?6;)0cZ=KLr0pdzuhCk950#eWZfGh_9)^Pa0fX)%Z`+hEP zgTO|C(*$ypQSxO7>?V*KoRZG3#tHWc+$)g%UDCG;94~N`K=yCx|7oU%M+6=g$bKyS zFBaHGV4A?+A#wD7QQ+MIZxgs$;BtY}1x^$wOWJ)HH7Gf+p^#AC%L2LY0de`f!uM^# z?-IB}Aa~j%UyZ;O0%r+4SKu#UeDXab@HT-r39J#gLST`=X#xWR`wL`dQr?HC^n}L* zvVTkb>jHNPyb+xU(ytLX7>x(<-U1JzG7x`E;97wf3rrX26S&u}`MD&R;noPeNMK)q zY!KKzKmlZh_kbt`b-%Fd)zpcnpD6 zc!9eGZWFjlV4=W(Kuh2;(eHr3-2%4>TqUqjU_c-MMfi%u{##)8bP&w7LhyTp&{uG? zzK#8E@|*Q+T$)GRtY5=6KngeO)pjGF=x^4i{kPy|JsNitpubsvwoq`h-t22=H0W>E zm)#3@I?B>+Je+t9lK9Q~vOK}fdNS_*#qehR*d>CS^%CYG8NXTIb()PXaI>C^<0#5g-&z1P5r@B7&s8qCS-*9Y z=xf$%JumXj`mA~4Z`Nb6|DKMzzZVZlUf&Ts$c`GWL4xlToSQ?EKPddg@aG!fLUaOn zEkeu9-S%!5{Fn3xzFTm97C?ND;2b9~e4XH9kv9D7>m^;EZ2Zy~{Clvclm9@Be+J@n z`hP#h|1UBAzlw=JgqWS-r|J4>>q9@M{|zzW?~n1nB_=$dch2zW3wOc`V&wT?D<}Vt zW8`g%Ne?%Sb@G24Bmd|eF9!cjOnj$e{0GIzv#R7(;N02}-%_S&&VQJnps1ydAHyU$IqP zhOO8bn2R{>!oH>evCh@`(0ra~sG1S6P zON^25)=(WrigQqdI5oGS)-WWFqp2-~<8U4CBArR>bW~_nf`c|g>zl2rbq#ZCabzgo z>Xp?uUo3?-Z>MY1L}BV%-H#pT^0{ah5md5UZ5x^c1y`zo8cImTMN*hT2*h^=ZmgEp3fO zt(zLx)Im~HTWiCn1&vGUYigTtG%K>1r^YU7t8J^r5yowe>t3j9g?5YwR zW?VFXR&f>TNJ-Jm(&BQvlFN(k1iYwg!3DG9ITJSrMoxS^HO-0P5Uq4`v3P-_&c<*= zD| zm%T=DM4P2`Z8)eLwYI6P5kMtvee1e%oU4sSthxbh8bfkQDU>_{5|+V4;hc(AHuK2o2Am~5orgvzs16AX<`mFHB}x#g zx~4`OczSh68bWi#^Ylb&ez8%ytY8UZH`2~ztbawG&a!_cq|xMG39Dm0lhus$Gx4y} zoze7_i%a3Jdj=}XiL*OD>hxn%uSLUw>8zIOyl>XGH7)hcc=lJJk2HQtewQ_N{FKRw z>-hL7lRCE_y#?&K*`CX#0=RK;_ovyA+C(0-TV}D)-hfK~lbFNlhRaGILKyP1F zRTag{Ds0qt?3^S{kryh2d@AR$w%JT@R8_58gTCsIfSj&40FG^V*a3zvgzoEKCdB)oBc9C~n`C{HnE>hlHP6QokhgkZ_Qe#z*zl`26gxYl9@-B==7GZaH;PqJ4>hi z*RX?SlVj!Wo~OO|o{iV;W$HbVHEyMg@8RMu$zPQpEHJU@-CL@INV2WH%R7rmklq;m zI+s5#_TW{h{_%H_*3Y1^&{3Yb967E$7m7T-XXI4~dCn_dKh@E+jTmdcI+R~txl%vs zR_gqijfuMRB#$(Q{zvZ;O~IO`>V_)JhQ!y8+eM$f66p4NEpIYjG-8^SYce`rl3sM2 zLQM_zt)W=`f>`Xr%T$8kSG2s%kjJz_p7BzA&iqXzZ<)w5?aMNecLU^|p?#_6;Hg1ne3M!%Zc)otrATVdDVrA3S9*g@(<-sn6{s*9J`DT~?Lr#y}xctO8T z@^0?Xa>n6hJg=L-uA$>Up}gwVt6OR}#LL_NfDZY%Jb3m$>X4+J3FXmt^p4f@NE<3yyE2j`fVMETmJC+_4^t+{$u1-H)EVz#kK(A;^e)4 zQiuE-3oowMKhn_gpHLoa9eHBY`@-LK$QMPx3-Mb6B$TK0Ypz}sEAKlWXhGQ`?>nBj zN}Eug{#G+yzn_aduK(lp^Dik6oh&6XR=@p{KBM3M9$%#28caM?V}7r#@iI&dRaKSB z6HV)LT;vr>1wIaWd^Am7?^0WL!5Nd@+B%HZ*)>pCYvTvHUg}$Yqmme#-rRm#UeO@UpF2|HD?}cso%9(zk&Rlwd`@LU|M z+s%b!z*Qyp2*9gxUx@pkz0O8}9NbjqY-JyQFKZPoiGEO|M0UZazEb5kiL0A7o{5j2 z-zr|k#JF%Linpz%zA08-0K75!DS0KcOS+On|02plP<1iB0PYw$>eEp&bm31q9Ex`p z&mzp_gf1r+h2ZKUUF1;XL(O$YJ~hefGLeP~lx@iBdKTkxq-{TjBOUB?H$PP$bF!*3TYEm~4kQ6Aj>PG&ItNih71+Q`o; z2|pVQuRIcrcyXqw6$}?24My@`EQGUT%aP-ZBp80WIPY|@{ngO<@OlznrI7;d@p{qe zS3r9Nv|#x4((oybKL|YUc~FRkUpEmQDvhuLTBYHC6rFxidB0d1{xG=xVCF?dD~c{I zs#^KLggqE7A};D1BZ$a!}Zjm z;$J9Ahw(TPw4F!ooJN3SrQx>YNbLb#f+AavX|c%b+>44XcI0!VE|WQ0kL^WDj~!S* zDusn5Mf8Y3#R~$#2xl*#m8VBAG7D%L(Pur_hB;C&ONTE-cvZv>srXsOjf_m&6^C2LTa6)Q^otN{FS5dM8s1VpssKt}ub@aQo&j5Qhz2GI5#z=l&$Uu^>MjmuB{-Lt=)1@8x z@1ko_mQnl<7*PsCxOiVFb{^6B87cUx7W2xC*zh{r%W3eZ;E6K#G-RO!WEcJ9a%hov z0Ak9*?$oO0>tq2;LjPF9)d0)(OZkH?t%TRQ6w7qGVC(qSZi&lxq48L72W=3XA zMcvC`JG)Y~v?pjHwzk2@*1*csBcte*PL$0=e^ocVL z`X5x9V7T}__|JwvYX5N^|Mr9ZFN)Uq@`Vs*w|1|n5~QkdX=HK=@)Y+W_1t(`m`tV1 z|6sZ_i6&Y+arpG`qea29nINVLJsoYW@L)>?*B)@4n2#O+ z-1ov=8vdU%2FlnmP%$gJ6m6T~u_#7k&w4y)jl^Oqaly!<%#v`02h9(ftrCApxYUEc z-X6&!#e1qKqld?X5_t>DP^92i1@cEx8~wlHhio2EK{|JWvTba;q z{z}7-G-IoqXrdzpgw}qbE}E zAd62Ve?DSGd$LruCuntts3^jRPQOqRK4_91Zr_N69V*@iPduM?C?5NvbY1lMv=a$9 z{Q^2O=Bi!Af{rbF9`{4Enb@1&%?Pn!9#O$m>ykuf{`n892K?5JiPZD9^h?wx@f&5*CoI4K-Vcw@HA)r4o0pBpimr9 zxe>{~0UsM6Cp*}{ca$BGn6`hI)YgE;`ABJ`HGrlJ%~+woG_o;A`?E-z4&!N9bLly> zCc2pD5NO^Yc;WFmJYuPb3YF!g(42ljXTEAHObe*{noG)cC&*!e?N8^FL^k9+>WB77 zFZ(NYYpGfsN%%8lN|Qba79VC-*oA-@Z_-#Wj&&rG|2Ceh4$-PxRd9rP8_9nTqX(4< z1+Qzu0WhN%S^VhQ+=-JNp{S5)8rfv+2A@M6J5p&$vFo(!RDtPsWkkiYI*WMMPl=wXS0O{MH{dz{4Sfr zNd9pSqas@n!Jp7rMj3R=vsda7qDKX?8<{<0}6Y(YC*Hj8j z{gNnHUQ_J=JeFPv zx-DKgD7ZN9&$iSKiVRNkvwO6kitA@pq`kjR;qhR2|2B}Nw``ZULo8P)b&*>cH_~5p z-9eDF4U2cY#p#H4ofoQ$g&`nRR-#PSqekp!vJHMG5y_>KHNuQ|<1-Fzn`)F8J(H-S zhek4VDc*59l${_lrrnN=NXhAEO3!_ec>tsK!D|NCurENy)xV=uom<*0$mn;_UFw{l zMp!#V1W`%bze$GQWEZn{q-V*yhaa!T_$KZ@AaG(=*7+7g||4|ZkHtT4QC_?_x3Cfm~ zt6H6xE{M!PeEEk#FFO4af@ns&HQY~qPrq<7A58a*M_~H_=xAX(3XbCu%5wgibh)G{ zlV(*kVbh{4L5DUlYS+2NM>5(Uq0z58$mS&4;ylfoj%kNUP_8um7oBso=k^aVkhpUp z5|Pn){yFD?AXA34l5<4B*4^D zoJ>g>?JVvj!?;TzO?1N3MW6M!7%a#vKDLR-N9mA_W=t4ERE(jnuOClB7P%-V6aV$jnw*tr<8f%(q z(IchVfoLl=4G+X=T6jrhc6MNXWb#zx%x{rOh*%C0jY$Q?nglud zqroAgWz_Y8F`vEySINu2#EXBXlXSHI5`i(8)H=WwwvnSp7crw z)lO`z!jFPIUSTLE@)yHjwMzNhpao2(MmjH*&}MeiGGhSdM+O+1DU;6_2wi>&9ie3ra)A{$b{T7%%q7- zor!!l-+&5P+R>IN!G3~Z7=NP&4^>JczLLm%C?TQpo|oF#ejv2eWO2A`x1N5%Ed2wz zdZ#H6EKt-!&*28`69avGxtb($Cll?&a2r9`(;dY0uUqmh?;}VQYo8N zC@GtThUS8)wvM792F5TKCjL%P7h@_tc)jW!KIv6wI{Fq$o@_9~2$YC1Ijk?Ai!eN9 z+R~*^%-l9(tQ8t>8n^8;+*ZbpC-5{?Ass>R(BVVbK?Bl*orqV(S|!oZ|-#ty6_ zgP$s~+mxWcQZW=3#4RnL@+|Ghb_XM+Ze&Z@?qDPp$ZR+ArTBIbb|Ra1(-?Rn6ay&( zk<}Iy)UvKh6=K<=qELS*&+W_j9F3r$ODV)~6gg<}Uf41_$R@TpH8W#H>e#gzD;hhMIdr!P-_D-h!#N{S2<;{>XJQ&tccL;WMB0j5SlDv~&p7 zA%Ep47~3@7c^FVi?p${i9V8Z!n962PzDPm558Y-hAiFbm+>(Io$!PBY`Q#O_#0x6&PK7fx8}y%Mvt@^;GE}EAAjUTN z55Pw?k{BHGg{n3Nn(u!i6OJMZJ80)j=+yX|=`#J^5YrBypadU9PgBK(yc7HD1}9Q^ zJQ%J>K`vJw4My6I1;e2f)R*2V(E2sT7%2loDO+2#Kaol>RIs&8&4w<)@KdJZ$Gk3N zYZUC<)S{R88P;Y%5fcWDMYUws`@xJc9{2lrSUiAc|NV?HsI|oIMHABvp_K7VD`Wa8 z;b+V65SfFANGdhO+hvnV%7Db;BPXY`xpu~x6!OFO#Qn&r_wh)*yf<2&ZvX)i51S)+ z*c<~!l=1HYPw@lqXIxx-uTn0N9_&Kk-NX>+v4g61Y(Zn7M;%JanBsjWdus7}A^w0Z zKC=wsFUHh*kFq^TC+U!n7Xrv6{M%9Q(a$rxsgFLJuX-oPgU3)9-5I>9QN8f8$T_9q zHdx|amCtBEqfUD=K9b8B9nFEkYG|~1Mn&>CUn5hE@W{l#E$}IuJ1^BcX__G2G{ktO zcg8tSA@g*2TcosM>v`-G)w3_6sUrC^1FSeI?R*mwDHyHk!$Aju58iJfiNQndhdQgEN37YwL+DS#tQKH@7fK>vX7>S{PAl5?1}bRLPl%y71o>wCRy$eY zr|m8kN?s;j{|?OIXx9vOBl{VhSU@WJtxR0lll%k)ho4oRtO1*Q;P^q(9#4V{Mb@Yr zC>bsSgC;-Yu*_9R9MbsT(BCw;;iox@E?B31nzPX8+taR?(}cdX$G zc=E*1*{&16`Dk|d<0tTg`ba1SifcCwJ4s(dRHQ1@aHUMKq zHM^G!4KRZDNK+YZ|4`MM{8kth6HkgiZXywFeR~c9a{6fp&x*sm8zayYhW+Uy<8u{9 zrXsX6A5LYAIl#K5469GxtG3(@B~+#isiGvl{W?Tj8kvD7M!QK0 z^8OiUFB8O(4n~h8@|A8S=63KbaZDWB#pP=V0=jGzaXU#+cEk zD9o0sD0+L;I4QqM#eRZbr=Jd5=3Y)F3J-=T*vMX_a~P@VRP^@1v5m@j=>H=Zn&nrk9-1nbYUzN|XHo=AvD> z^Y?=qX`c$B?z*<;Dt|R5YFE6GjvPgj@rW8=!wR$%>CeMEXqE#!I45D~ zKS{bZ=(s=t{z*sLilBqGinErWZ)s^=QSQ^hg5j|;%IwJgOnP+eKL*)IOVs1Ozmd|h z|3IwABS%4rZP3|Ao{g3P&31OSZm7^KSjBnIp#=#>bOF#=uOgOVWcyyo!f>*Ex4@kO zw*hu4;<<`2!)<5zd%EgB{eE?AEoPddNf#Ki;Jndsw8Blm460KU<@-?InrPt(cGbA#1R|#Awu#hoDt!2lS zNqWbv%DbcE2uh}%nJ``&)Kpa?+MMR-%%oi1oGN{t%_-}Z&P>hJp*W;%WPBzwgK*D} z%s7tu;;BlUY9b{wzonjH>K$4{x2_SDpA-AX=BM36^0ZWFi=KzdUo+LxQH(+Glfg(4 zfNB{qtSdp!U77^lCSIhXJB62qkf3vqMIhtqd}r<{Yen)uz=*Z8(QJFFQpvX-AFF0@ zKSOBGybq9zcE{z!yULELQx=T$FAb|_EjU4#=BGKjgW!9ooR z0UXa4TNkA*@|NDnTW3Xu+&mq-^fm(1IN)S;8nYX8u>l@E*%AH5pJ(b`IesBcBHK*W*a!(am+R-&)7+; zql`_x0rsO%IU9G3?{t;LJ6$Lw#ZWaU-|U0T(L*Sij+U}l2pK4Q>?Z&OG|22M7_051 z@N&UZ{x8v$hcOkCvzLbEQWZTlUTkIu1!77gxtJyT7(uvtTWHgALw<0J{mdKK5AAm~ zC8rOSOnbfMh;FrXGrTk|R+EK{ukD-Q5`tb?P#SrV_9=;M9%2Qt@>5S=g!t}lvJwT0 zu&%tQIU@PvJ5j;brxy$KyCxcY*eG@kopV8CMLx3PkZ^4O#0rhQAhH>>NWLH9HC<6I zI5b<0U#*jFI{@VT32~|}fLfYsMy445L<(M^I+6UN1e}28+zMVj!>z^g)pM>6D_M>9 zQQ2P<#kgH2uF-RrKoEEn1ghb&Xl;s#dM~I7Aq!ZdLYQ|zzj`rH=E0)Hto?K-4KaMy z(oXtw+8_)!?>)|(D^Tv1pNUxmKI~F*CQ$% zyPO_`w2@Sb*#mYams1WVj2X8_2Cy~8EaYIB$i$4k;>61f)k?SOxG+o{GS#goQI)mEB9lF;^Cl%+h%-Fu3pyRfG1~lsF!YWUWU@Sx>UkW`93(N8 zqg2niKb{2NM}5rn=ZfmzMCQ6qVXiz*GiZubZ`!GBNgl zOmM4b6gn%WCaTvVr@#L6Hp`7tY*{ZbH+a#J4EQ~ko8JRjK`JlqI*9t9eM*6BRAl^p z?G9c)IiL8p9pjZitMH~mVCP#CTyqtq=l{`FkL`!7O>G;nEzbrV@QBUC%CWarGY&)w zRkk!tCsd~eDHo1U+f>_95~^Jfw5_?hsU_4pr@GZ_!cy7X&{SPxwYBO`xE8jU{kI@o z?JCh)SKT5T1;u;flje2!?r=_1%aZ?(yf=Zbvbg@npXc7(a0xdME?W||5FqT?2&;gE zuoKoSA_C!(+>l5}VsgWxDAujE#TG?dt%_RLDqY;IOI>SSTX(Hn)uMH+yVYv#`~A+G zd7ir>zVGk%ubY4%<)1iMvf(aGzWZ(W3Fq zp%z@D(_rCJnDPjiH+DtB)2)`~*3Fh^tZdt4#mbX{)H;z6*N5y`ZP|!xaLmmm$kXXo z$k@hP#kNnkx>}q0b8~_*m+K?VTf;hi$Q)*c%JaFn7;F>nxSDl#Rn0c-E zWkXy=PzgbG7;d_SpRtn?V(NMQnOkO7S4WGXsxq~3gB%QHn&;qXB6K&yh_+VzBq(Xi zC0T79OTs&l0(IjOvs`5oE_7*YCwC`;IyyqpBFM~8q^omzqq?CDB}xUjzoM-JC4(xW z$epp5wrQ@;={(LFdykfdt02M={dbl69a0*gYo#c44UbAwO)KxILw#$FsGN*TPox7k z)^$>qKAef$1E%xG$WWB!5h)iHvyKzLr&YgMUpYt_g-+L(IaP%t5flS5g5}tz=b?p1B;bbrY?vLV1Lxo-&IO|8#2$e>t_9mnJlK&O4?n z)KcAMsy)iDBSOu*=%NGuGMw#HRct^?6Aib9HnxP#b$!jps{0L%=1!?#R(%M!hP4<&mDOlFa_gUko5G?nUPOu3 zQHh?x=wXd_h^kc8U6Ru~(dO_wp{T9W{_*>Hm2GY9EX3+IL8hbqF2yg4s#0GOLa)~V zQ1x)q-|1@yO^Z?2DbDF?#9e1jM};cW5k|xAj4W%5G&eTat7I;3R5gx8R$f#?krN3L|p@>3*A-7dZcOE6k}bKm?5dEp}E-W z@ka`AZ<88xR)x(4h^+7(y7S}lWAw@u>fSrt-@y+4$eLP|*Md2^vSPeI-@Cj~Is%}P z@TPEw>W$d+R6XRSY`9mJAdSXKUVo$IawRUx9pwSBs| zipk4$KWa6GBlS&DtSAm;4aO;^OxUKkwYKaKNz?)zhP0Rt19_!K3{>t0xrQywQ2=dO zWizT=CvInL=tO&WDms$yj5H|?iHR9^4&YXu2s#7w2s&$|7jkOv5zQ?vx(1_XRoA0d zv9_Zc9}()D-_q6D#5NonpG30 zN8t{gps0BO$_AH@%#|z6FnFpd44Zci##0B;W1EAzL-=&`X|ercxWNn|HN5Fm74Q)_ zfsXkH8`36}HQI>kCXpJ`Ge(VTvE$I9&iUxCST5F9-l1xgN6}+$L9}qE>Kqhk)0Pl! zLqH`$=jh;iI#SN54Mvx$_As=9g~^E_vfJdKw<_F@D^e4rd!|m+&ISjURZE0?0MoQbWc;Rdu zDP|&#{N^k!c6Pm@trK(BwpM2dhz%Cq6>V)D7<)PVn|Wg_UuB#zHF`Q3%T$qIU{bcF zAxxXMo1i-67=|d!(=m$4D*@Wb{H~T3^rovg99imiAKf+U3w@&q<}&A)ic!arH>S+3 zx|lMr26l0=?8+xPzQ)2ps!@T~O`^naoX-d2J+r>Xg{4>SBM*KgB|C;#y^pcV_ zO#CA8%fvri{FUN|#NQ_VY2x#Y6rab$e_8y`#P5#1=6rgKKT7;k@#l)aQ2ZM4!{VPL z{^{ahDE_a-e^C6d#P>|m@eL7wjQF#~UnTw~@wbY9h4^=i|A_cci2sK8>IaGtMcz~$ z&uHf1da^ivN`OABf*;n%37}{1M`pi9bjDBgEe({%PW0ApVu&-zq*2 z$MOl{SS_DH;*S)6y7<-NquW%^CF0*J{&V8LBmRHH&pAx<7l}Vl{A%$-;%^iGZ1K+* z{}%E8EdBxUvvIbUPoDVW#4i)SQv40#ZxR12@wN2-{@+(53bi-}_%6X85dRVJ9~1v6 z@t+gFN&MB~eFo2k@Q{ZaMW^SDoNZwsQL7etcrCz4mB)8mED|{3dZ8m# zXi-fkR%D7oCHPJH&drgw_9AmJ=!7j;bP0D%C@X5@E?0;6ivd9^Oqo;~)j__S4+`;TymU03Kdl;N*9%&ky z_8;h`eRF@NKQ`Dh;XjzC1Nx^3zgWWirU<`L!m$M_<}v!8mT5^0 zP51%{&q)y;lJKk);T;l=??5q+(SNFh_lpU2aEb3sX()(@s7m7xs z@20r;P5zniTjIj=MBdo%80Z2kTrd&J6VkVpFWz9`KmWz_GPp3$?J)K0+6uf`n9j#? ze(@#k%#HYn8U37iC%%Qy;af=zOdQTU@v!1Qd~0dh?BeNDXO~R242a%6-j;j>&v7}2 zmrSOR1u5<8py}Y6J+YJ|fU`@>tl4G7E`}g$j!1|yD01}XW2&H56`~@e#@ekSvr_!^ z$Km%?)?h_p=J7&_8n_I_HP(o4)wUdW_{?LP7aappli>BowY7(^{8F(rdIgTktwvF| zwQMTWftc$mYV`{q!;LPabZeZ0~ z8X{L_^DV@ckEN`xaQ-p*9NatWLoMO_=KRK%(5BA(Mfu_Ow)&?0V~)2P@Vmh^ff8yn}r^qF7rO|Y@D85!XKZm(}ez7 z9RH6~@c&%s@5J%*W;8w@$I-7z!T(#K$LIfTLXWqT<;f}hA5(;9A&g(?N6NT1R{SFI zr;C5M_)ElJ8;6_xGQ^fO|brMrv#!j=&6VG2N>o@WAROMpU zL*nf*>ltI?(q-0ROg%OBnDv-=x>@g-5vQk2@?m`(-K>{1#?j6CO?Kcz zAO*i!ABwlftPjQ8^KuIP@1)Rg)-B`poAuUs{dp*e!KN_an{wJ4mCoos!<1L5@UO(K zb3`6n$}E4B{=PB;+@B(RpoHI%B7D4rKbInWs)WBK;p{WnCz)sQH-xX3@ZfSS5pVxi z2~U;&lO(*a$TNP9TjtsO4dGWvc>fgf-zMS1Q|N#G8^S%awI!+KM}0&1vTq1)mhh1& z>_0)mQ{~?o-=KfrH-!K88}$GF8^Ry|hVZ{i_?Q&wJ0RhuDZ<~8@R=#XKb7#+ap9c* z^n%+W^O;WZe<1$Z;@=?tE#f~U{{%r9Vh`&Po9paxV{`ulx zFaE7@`2XvC?G$uATtm*5PUr)fk9^yC2~?=(@85DhW8_vFAcgLh7*hqq!lLv@p~;Cme2F#h)F- zx_At`{(8F=yKvMGgYJk8UB-=i*o&7ulsih~=R{+4F51%G(j3-%;*?QKL!FzgE^JPj zSXvjsMnS!cEe`~&o?s^(Z0_Rktzw5=0zp>$6X=!Lb;pm`@d`*sBIC*2;h2P6q4p6l zWLXtAB4P6k_VZz#pSEqTs8!pAuxn)tewPpX%IZp%;ul%fXYz2e;8L~8M&)sWXxTx+ zrXD1$M8a^%{*JmMny?XKQRkX)N87>TKNMbL&!O-d`woS-Wb&MOlO|0{W?sqU%5MlN zNiGJBlT&L<9#mS!U)@VmhNWe57OYAZFtL<3dL|EnNO|&*@|4W2i0AYJh-%2EXO(;_6{di5y!*bBzh}Jva}d;>dMONrp{?T6t#v+ ztt}ozvoY21ADSUk>#(thBS&I4Wo(^#P)*BQ!`z97wcOT7(h{oP)^>1)XbmNk7lyD$ zE{QqOToX&@tI;tDTXbxxl|^$MMA>Ba9ObDjDk)_nE!U@V$gdno%Aub`v?1JP#mk{WTbqOKvaL1o5#;+`OG7s^(2iQN;Nz&Fy+FhTnpB zSV>*j*3pcukkRBQ4aw!=7(_)RQAY`WT@_3GG4qeONs=l_{WZeL*94lIu?ayGjjBq~ zni8r~bYN^%iVktB(!BBom8-BbJFxgcipb>iI*Y z*u{>$dm)YM-Kd`zk{!EetDBlTfI$)OSpAYqzT5L&Eb4N2VM-? z5IWa6W`iIe1%ZkB6jSuhV28+Bh3(&H?&y77-c{lHHoT(ksOs8;U-n~C6T{5T@?}-! zJfed%Xc_D(4dYkhF@5Kcp_gO-ZW}VdNg;ki6c*P>a_St@olPOw@f&;cNbmAUJjkIp zhoqw8)1B-{HYYMHzE@zDf=w(P5xlnXID+0!WjCj~H9Fp?}rpw|$s5uQKPjRXo zhz+P>ro@u+bVi|3$I_9Dn!wky*q};>!mwB@k0kXrXN+NZG9DAIm>W6K(6KbMb>ZAj zG;D1|51|P#(>-uuG{97s*r|^DiNRlQ?ccWC*& zIqU(%ISxq%$kk}KZ5=qF$2dAIwHvY1s$hKYbUX0M)r}_jh;q&-8o}2$#J9%irs#s9oh*gd-dT^nHK-1H|jaEIr z+DEoq_?yB{o)Iyd@ z#Zrw#jkQdd*&CA(h+c)p^01%$Hm9n$&7ByKlhDK4F)BoGrU-{C$+!qF3^-cJlP7U) z6J|RNG-^~+udq6uQPilDc&YLrilw|E)Q)~Hda%?|Iya&@-CEu5o)BEYNu9jy>TN)z znBtETSB#12isBGcoRrojY2Y|wjrp+56=R}hlohpV@2|E)6I|HcsDyG-TI4`nLM^4F z+KZ~@Zxsuax2?H>Lq%A<*)*#otn#8{;Rx)eaHP6T&uUTrGO^VaJ!NB^5Vz!6N? z;Z1?qlTVnkxrg1<0K+qSDoyNCP$R?|!8j!AB`rOAYZy}$OgD8MzyyHfLadx)QYiYM zdDKBZ)fkc-@cXvM?V>YCbzaNWL>$&|X+rOn7ZNXx!0fp*EY}h^FTz%xPKjf5qOcQW z-a_>FU#F6x^*b!l(orTk;n61qWA-0LovN;w&rVy3V7jDRy@S;?C$Va5D% zc>__S!~Yj&4HsaKW!!Zi(wzT)dg9R3B`fO3mh&gfT|Q@VMcwksxpi|FRjnwmu2@*N zV%75M<<&>7m{&EkINvJbXHq$>-&wSpugis@_Vyw*x59fs(cJLXa7!DG02iSRMA&P0 z7B#PE!UAv=x=N7RIttMskJc6T(7l8GWF2*#X-#|v3k`?}Zz>WYRp%88TW<4htdE3&xgqHQx4 zC$UD^zN3!Im*EZx0ukr@A{}k<^my%ZhtfJ6htszj#WQ@1TNc)Rt1B7eBT}(9U6Q+s z;?2Swn9IPb`mN(4ii05)rPB_|9-oA7!(Lc2sq9&yk&_g{bRQ*2$Ydvakeuqh`Nm-5o7D88t!FB-LFikPC0zBqszR>17F3 zF}0$DXF&(vkWyYowN97^c6o!Qw$|RVSD@vNK&or1Y_1obn+6(3Hr@DTvD}j z=87DGu;$W-gKkEH6DE*) z>-hOue+a=x7p`wD4PmaNZq%x)-_l@J&8yUV0YFk;#;n4G@7(6ocMC6(3boXgpxcaR zs$(a?37AYbEZldv!+c1`!aC<*21O5sFNpdIPWo(m^y}2pTSug>5nrY_jVVET&1 zakE;fBF9Z&jhd{gEnYP-(bb^(DCb~qfV0|T>^CVYMcjBL-^LGo`07ws*U2@~m>DIo z*r_B4IuneNiTvn=3nZ)bMqJhMvBU_9{^qSxK}pii8O7IM8t`tGRaAvX?pw$q((|*w;IZERU#KJqZ6_%9NMfZLz`Y@j4zim-2G9{ zQ7@syCM8fNCs3y7PXsHRjR|^@5uZl*$-%jdi?`JAV*~E~!@ZcirBdc!+^?Wk^P)bc zBt$aR>Qonlx?eG3k7V;ph4~y6eN@}|w5g<3G!4zXPZHZP)SaA_xE4lD91N$v&rETu zl_5fN9T5vx`0?7$SYmvJPSf={+7KGJh2LqTiJB4?BeG)!&!Ut6i>W z;b_?017ce%4LH@2s)^<#Y!u$^vKa7fhs0wsF^`dYS*Wn^BLTl~NhNZUrdoV(#b^Oy z6y51atu)|k4k^KCqp;CYTw}nq9a4hPM(T8jrTPK^FLg<83z*6Cba;{&Z4@;-QY#I( z+aVi#`TxUX=eY7Cf>uGx}Q#Xs-}BA!RZ zx2=SWK>jH~|4GdRe-zDfvm&Jhh`E_yF*4jvS4IU>xNSfgO zHHtjlj8ye70Y|%}2?Cb6q%{KGP=Vwa?<+DYAd z170IiUTf}9$3(@;jsZ0WT$~{WSP7MFg9IJpu+$jP!Y@Vg zNzz=-5$^LHsf6azU!;dST51ef;*b(5n~}{0e|n165_f~f}V3&Y7E$zX$ohZ0k7+6 zNOc-;{~ARfIEt!w26XVn;-j;_Tfo;{Qkq1Q<3v|IPNFGwqN`pnV3SMg#&fiI%EV7H zmV7Nb(;caVN@S8`wAofd(o6(PoQP@+c)LTYGT;HZM+xohft?0vmbnTlx&aIOX!8-F z0T(%>s$U5BJC|g@dHozg4Y+@erJEeHs)z8zF`lc$M=m`pV4heCQmugdUD9I$e&&+W zBo*ItQd4bApXAtCT`%Asm-I6Mf9sMS67XY}#9w~lGfI5eHCMn@E@`8H+g#H31w6|o zT`k}sC$p-H1)SoNOja&-N!kSW??TB+Q{tF+8qkzD3e|w7y#E`8?~!8tLVR}gI}MWV zlwy?uO`;W_n_vw!3V)|7XTT`A$9BfcnZQ~nM{D9)PLiM>r)IfTg6>Jp@(&4`C^r+L zT;d~IC_zWMEC$>(Kr>^gKUcuna=k>7(LYOAvK^@v@o{Yu>8*~I1anT4pbK3V1Fn+m z3+=?w(@5RnNL7Cz;0Q;mI^G;3^>asRr2&m}k}=m7g#kx#C|Thj#j{wo!qe!e zsWISqxyLX`dqM81OiUl%V)~5_GP^Qe(i*LD~vrP?vz0xukdtjiTQVX30yCfav{=Gn?g2IA!ynmNLTvZ8;^j{)pR738nU9MUUnZOyM z9C>cQM;%ht3j&@pOiQ5{4EUqrngs2)Y&S^vk%n)r0Sknr_zZHJ%V)q1V~l8(0Y4Fv z5;e$xu@0XB-w=}GGsui_hHtF_9}|+|GswpdUzGvh8m~napFxbDq|Y&Vd32tMvU-Pr zC%dGx1az~v+GOu%E?17^^c*M0tD6M8z$Hz|x70I7d~`z#1jMzd>H#SvMbsibNXH2H zQ!v4l8%<*J3)Nd^$P*7bxEc?hfZ+vt3bfXE=h;E zfAjM+JWYIb+Xj5pA+0mzTIrP7Is=;Oj=J^cHiHb7oV2ZV1~fJ(J{_m~HzHA;;Y67* zxicm-iV4tj@pgm!!6B~Sn`V%A9AeepG=p3&mBMS)?M*Z0>YtajET!}80&Q26!543L zP1TUG<|rqQwR_VH@`cn`ueEM(nn6rlh~vcV2KihnpVxx8L82l)F(Kl=N`x5_hsWxO zx6K+WVWtInEo4BoG!WBZ6fs^jQ<&z9@3A8BEY{Y4Z8wN%t4ZD&X9$0_(~J`g>X0B;OI^G{?@2Q^Z97TI1Jbrf zIBh&3qB#rui{*3x2@wsEpd%cXgowP-G4yach)}#OrZz5h zSZWM-n?tHHV5CsXqhL-y!64m>G!eZ)F99!eNvR^-7G7h_yItBsw596PI53AoxNoh0B7T+%fH-sY0x6PPD4nYjL_1#cL~Iu1bQZFYfvf% zJkcQ~WVw;*>98bZgWcO6*|U$&+cPVDV9!@~1zz9PqqiMI{GLJt1?|}x4Sl>lr}sF_ zH!6T&j6!9Wx96fhqK8 z$j|E017HTh9zA9O?2!h^Edip?3_@Tu!UknpR;CUy^q!6`A8yBtkpdyB7qX|fX2B0j z^-|II>0?u`W%bQercZ_0{rUi$0h9apvESXrczulbja^_HFbHB~%03ZSQNFoLr?$sC zyAVN690}~XS}Vn;W|V?3P{-%!8x$k+)~=pP)8Ib#fn5QbHKd<43YH921Z`T0PsMsbMx~^wZStmyevxZLTVb|aT@6<9?YmL%rMp){452bQCgfn!- zK8%&#aL?$WT83rKq;}0P%Tef~m4_RJrs+sxW;^zPjrNp_VkI@lNSP+5%&0I_qf1fe z(m2!Z=4k{5Dn0X~W3j9SMuAc5VBxl}efJ2bLs;Nl2wJ&9ati zOPD3g3UwBuACb&hUWnSkxE;z0pYTv%CF{0jt#WHAu7!=Rd}s?R%Jdca=wnounPthe z#cD&S?ZF@Q?3t*2j~PxLHDgEZPJ}##*_CIS*S5VE0y_`RGsoNAYc17M-g^yo5vX}W zO?zZ8B*)?2`|*e>&4Xo*zW}?BnB}`1BI&o|kKgKcHN6}0XFr_Xv-=J3($X?+CAnLV zPf2`6ktzeP5ebmw3G_yi(gH>J>kll&->g6we+NM$Jno(G4()y>yl!bdCc?A#;g3JP zSKv4Bt-v2i3j7s+J%P{g*BjstmNd&h3&<#dzCia9dj3qW7p!Ui;eqME?ZA=v>j`w> zZ(86?{PhQZg}=iBf5G4UfDg_x-x43Bmy6@YGe zPNmj#(bGc=n+6x&tAyTbwIm~vU?5$ z+(5X%R<-09!aH>J*bdm=y&$j~z7@CeUGqcK`0+&A81D zi~+DKFav+Bz%u-`t)8qu4FEH)wzc9GApRcZfnAF0JaPqY#$S)s<0UHNRuF%nTi|sS z{)Gz9#PI3~t|WxduQ9( z-S8PGfKQ0ygFt2jc@Mql_&z}90(l7qIetK;KYOJ?1_I#+ClxZZ(x1}~ggwRh5#`x~ zF__MP3FAj2UZ{PxfWC!K z!=C;M{aGx^uP28yG+Tw<3Dkoe_2ej&-(8~606tqNG*^X|#GyJYyC54}`K5 zJrfi<6y>FB2vKX`$EZ-NdymN)a6NMj^{F>B(azpeP&XzUWGbpaEf5x9?`f;ESya^8 zdpZJ!16kP@$YD*{=b_Rl@fi@GgMcR(FtgI1dkv5(*wve9^5pU-5}rWD_oiK*Tz@P& z7-)Y=7OBv}Sag0Yx*Dj8vqUi;ZP1Ad{k}oVh*|?ZNQS@Hq^w-FwMUSiUXxWo&*uR5 zK%i%st(uj6Ho>o4Y)msCTOzk1P~a1Fdu2&ZIIzWE;YyqWYZsk za9><-WK+&)yjghBa|8>ToOTu*1&IR5zaSgkR3JZqmBBGhIV%i2wkd}@i~d6TI5)$C z;~{Vf0**j5!3pI#&meQzW`c#~*^`5owJ8g55ty2QgehIzH0T(>%Jh=$fR_1lxL@XZ za+a>nZ9oC2z}_k&j|a+n7GyK?pP(D_7% z619RqLkq`i48O-wOIsjNc~0h2T$!a4Cp+_OKdwR&Wje4xEHI zM)w`**0Px(Fu(hj4YRYWfpF5*cam*q9|@$KA=41jW!Po{`Jq9|hxN|B#31v4+yR7@ zpzk6eF9Ts~?z`0Pm;HfZTRE(E?w3HAi+x8S-QHXu>X(Xkv_g9TRVL}4rw>qNhw6FI z9H4*TTxjt3neV1!DF_^w`&8Pt735~cfg8!wucyn?COrMJ$a6G#o*_^FtVEvvLGt_< zJm01i{sjJnQg{-?eAak7`0}^ZHw4uuLEmr?QL5}bhE?K^6`X{>!Rh$ppNBsuBE!0E z?f!juK98Chp8;^d@xiqS9QZ51S(!7P6zALq0vljvS15;L7PCHcXDDYGV3uX(Y314c zX~g@{>NEGCVl)F`mCF3N-8-kva9z=qy&W*qnRy+$oU?%_wRbgT<^0BQJy@Q56X3_G zYc@;U3VuYZ{s1FJ=k#{0%6=Gx8n~P_sBrH9pjkOrltKLlI-iSr4SQLF&LZ z7>JUo2QtDS4L~LvqzN*I0ol!Xnt}WXU6hhJ8ps}lYzA_kL0W+9GsqSoR~n=h$jt_6 z19FE!+JQU-gn5$_vF+>^fSiShb9UPHpifN5310#7+S%NmrqXmGpf0-({snNkhe50vz@<0-jqAX9FDKA4RWt zNUwrb@c#_*kStoWHVX3>tdGL73N}Px*##R7hCw~AARL8_w)`xaYLEth9Q-SE4?G*N zKM-{CI_EMFieP`BZ+Xr=fY}WN`mN5{h~fGZ!u?lfe+c+egarnm?51OA{vDBQ6pnv7 zSgr*&v?9pKQ*bWufzN_4Ixnhce-#8)i@Y4nR^9``!q3ZX%K5i}2R7yOLM)0ts3|uW zFz1qad_C~wmKjt}RAvI@3qYQps8kwMPgIUDsA{QJ@L8HP5=4Lh&a43(dZ5$te~L1h z2ddpC_yswR2AtJ%wv#j2TR~U}`+6=#s*eT2BI$|dnR7M}TH13()1W&6Gig0nJ_=}= zKldVd=aRDm(IAHgqAKvEvFDIr2;_mMB0Q^Si4%{jZAw!Ch0mZcr?yt`EP(y40?iIy zNbn_s{$B&^hEf5&rho4iPmHjvn=F0Gk%CnpSX81Ktqx)cj$8-+Aa}1!0>~e!YiZ=m{D;p@KCKZ-{ z1>o19X~e8x4Zv<|@TcDwAlSh$z!7U9Y-a_J0X*iHfU|~odK}}%{s|OLEr09KHz z1;Oipf75i<{}Pyvz^mHW>{0Xvjm;`(hQAP5IhOAM1;-i;jV-O<6oa9y`3rt%Ff_G5 z0bk&i99mjd!9@l`L+e{`g~2c)X6xqF36h-|T#c9p-T~M@HrFZT?8iaitbgnvG_PlX z@V#>EU?8spVe=k41ju_pSntLTq<>fhd z8@Q@G=W)P%VH$TtdCmdAjC$Nr<+*A{G74|p3{{1KKENaX2?o?peD|>i2JwEK)uYOd zjT5pZ2lzVamwj2@?x`36NE2!X%dcGf0fWCac#ZFLHat9pHeSy#NoKh-I7X!b`IT zECvPv=iRpO?RnYRmm-vdN8yJ^{z&!|8 zh-CxRj|nreK2Q2$_?qq+3wog^oxw%#OYr9sTznq3^^u>vB^O2`7e^u1gewFyg3#EV zJNyeh84=~F=nFk*Cn?OQ!_pa6bdAW~1YgBt2t=SE@MmyMI5JOLQV(BSp2;R52`lt? z6qj$9=IQ}obNMn*Gh8mFwiIgBbG7((Z55b)2^r5so3EfYoc^qF=Xhe1fjOTwChh{p zWlhgSPP?sAqsAP>wQGNY(5I+wj;Len=2sG}?wuHQWwvFpC3)s>!OSW(YRp+%yY@q< z^X7wNrKmd^BCfiNfw|Vb1&k}Oo|Rl-v&xJba|qY2oq?J;gX%)Ioi-HTGu-btHNYHI z)+8g7jgFg-UE4{yux(HN5ja0Uiag<$m_<{H5j^#75LW^9baJ4cdI0DeqFoB@hW5RY z=r*ELsBr37(71)hb1Z3irkS`#IdQ%Nd#_@=r`yx*8a4*_)ylV~88&m))~?M(JGdj3 z-6}J|=H#qhI|pn}lWjM0VJXaTbKzuQZZ4D=8FQx9t~~*=pHcRF$X*d6`(m{0L>^2& zmdQJxYnE1-QDM%O+O-ctRo!rKTmn^-kT%zh6M#8pOfA62nA520I!-O7t_Ql8=#8vX zhh0eU`imwo2aWQ((U0@7YbT&P*uzL}Op=3!%^X&>YuAGPnpk#gk_k4aQ(-z;Zbn@= z1-7WVaPuoLz_unC9&>cmuKkj{w}AIn!+Xnhh2WiGPPTT_#cxgh01V@x#&hfFA|#AM ziRX7}Ny?gL^l`mLr>quxL25XRQ)17<+~#!HRpfoWX}s6 z!4CT&!52xLvH_Vlbv3lkCFkEKf`-aztTRW_?Ak_*0}ZtD160oA!0%c(5|zubaMpGh za|!kPZC1yrTy#_MeL52z!_+pQ%BW9>PI(2f9d4-|uN>A7kf3#?C(W{mRbMgwY6SJNp_t4fz^J-(QTKcvVg4?dBLhbKcLc z?VcxgM)6w}Cj2o+?}xOr*tYH2?-?75?Rh20OKXnd;(H4pyS6S*a;r3%6^73oDMV?3 zU*%R5zvVIE=3Jp&dkgqRjD#gv2eQ+$0#P+;u3hcaC#%AUEW*IZ$F4n+Vpt@yXHSHf zsthyj8<>D88!+U}+6k(Sii|;$)4THigjd;m-`^aghhJ&5K5lkb6=Hp|BpN<*Owq3G z0KZCN6u;#$;pY6HU3)(G&Y-O!Ch?+FNt|b|Wd8=P;hc|ni~@72&#pZHMNd&t3l-fH zttjntU`}q$FU-UXACrqIlPV82diW%l?+)xaMd}b9u!-dpvwMzS} z#lU|<{2Gn70{M7!qxea|x{W4P+;X3S<_PT|e(6O?}W8J#g7Fk=>h*tZxe zo>v(Iz^FF|ne5tQ5KRlC`Hc0W1rlx)zX0Y&@dsdIsO>YQZPu5-Ri=HZGHIc`;xLAO zWpi1>T418c&trD5p}&HtE@f06k9{L4X+y#3Mt2-AC%P$l9;9G0#=iN~n(m>*tXANB zOZ0S8H~^#GY?ZcaE6}v=U^IO_NYP$MxKXf!bE2645Xw^7+}Fd}%od;$)Yrq-G;0OA zlx2)O$FpN1@J`^(#QS@=q&ka-gtrnOpzwv>Ghf+u67gvs){-e%WI7g1yGfkm;aA34 z&jJ4x@d|}cxyuXUJ`gV^@d(eUh-u1QOnV(BkoS^!rH325rmP_GBoH4b@t1g`0e(5~ zzY@P%;b3d0!mprE$zG^si%A@c>9&%+NXyOvu4FG3Sx7%dn?FNtXtlyfL|Dk1{G%>#~vNJv#&pLu{78A5T>j9|$hzYa3 z%uE2Lgq_{pwG&Xv!O;jx$L6-QcOc=GG^e^wNl&?pR?NiIOeL$ASMQiR+^D)2ZI_Q- zdpOk%@aoygBD+Sl(gEIcPyn`dxZyLKz3tjI@@L2KXL~4Ccf87jPNiB_8tS_4PHIDoNL!O;xWVQ0weU1BfK8MJT~QN5NlHl z8zE1riTQj8A3@=!ZxUW?gt8ss=OBC{gva->`Ce_?DPvw@gvL0+Oz$~bIJID{{O&seNC!9h5+0ZT_>MsIduS&NPIiH??a&`?1w1HaJ(Becg6{wV|-weUeq zsDlY+@0YdMNMGV;c?B9SrIyipwc{YUV1%x7gmcEBSJ%R+O+Yc2ZDrPCBWsQ&*tH?( zc#}GYeq$aOp(h*zeh%SuI0&aUVCi|t1GDALT5P1>bhI3RhH2Ciw7H6tT9dWJ2$^FJ zcI{wvk~La5wIK4q?9;QB7+KxlA->uWbesYmo>3g{pM<$i50cg$uPAN@wCq~24aN6X z&bsa8JQpACsq;tY90)joyzU!j~Z%d;&l}o~*RH z@l`VT8vcy(;7_q9oa^kT31hw1&ULob0QK9s&aN7u0Xx^(SOYZ6&gI^kYK$8mpxJh= zNe|IHJJ%$L=xD6k9|_J;eGzS*CtTocyFs8;;B34B<}a86o}Y`_tb&Rt4BtTb{vW&y zp<}K>K=!!1?W_U(9so6CuLp%4-MG)}(D<8yJO#dS_t^-;Hiy3e8F4qLSX+J_@TjK% z7kh4Yv*6~~EC3pv1wf;-0BCd;07VvX(TGb%9-w)40hg0%3pG003LXV;WpT_FrZ>RB zBq6G(?MzvHKL%ZIXX@McUk*=pUq6&<{=B}_&H_dDTEUy4dlU!pV$UsZif)Nb5zy!q z0gX-((C8EajZP8J=oA6PhvjaV3UPmUdavMA4CMot!+@-kA?|9w>6}Xn$~`%25!wN^ zk}>7E+W{X>c$g|3wcg$U+JN5&dBAK055l3KeoU=r1NQf;%NoF?C$L+=%SpZy*nf z(Nb)%dl!LRFDb=-NcDYlBqfI{$>3PPBfL-tJ0}xfrD2-Wjc-Z8O8i-MEvUsF?+#QpYor?C+SKU-!;Jo6 z6@8zm==&fzI(p*K(G!o3o_KWh#1TDLqg3?7qoXIz=oe!OwCW{rjrJ5rMPH2I=;(<@ zM^9X$SDW~VM@LT_(L22j@jOKLJ4W}uif(39bTbhg9UbxL=!i#0M?5+@;?dC&XLS4& z7My_bWmPrGdm&!D-2y%rJkfCykB*agbezN`&YPhTx>TG_ff7d!a{++wODcS{J)Wxu zd|^^}F>Jb>=BRy*AXPbiEXA!Vr;{a$uhZ{?c`GzbJSF%Ez<#F#wuAqn3J)qyG2WQn z6x~J@QB{_Bbc%>ar-*oTiijf@ofHvAinw~fr31vJ>P$~=eyT(48Naqwmv9;2vPs?e z2`Tt<%a(NNXCpW|<;0`a z6OUF;JX$?*sJGT434Hz`{^#O0r)<~|#9W6cSe6Y?35r@VweUtt{NlRiTG1H_*w z{wY|E;d7q&8!!Rnvq^l;MfqGH{$t|*0yBza&;M3@*QSW?NJ)peyW;T_=`vTE#M}IB zG`IWre=EKxr5xOtH1vX`<74qhNjl=w zWp1kZzm*>(>5rHH)dWqsS^WFN=W7L@e~SOL_~ycc#zGw)|94?k`9cf}RuNns9433} zANzJBMwJ@U9k_L$FK_~hOv zdhGqn^Zf=N@z5j31Wy^U{h2e~8@}-OJ1&}K4Lbf0f1K+*<*9y)D}1liwT(JsNB_qg z?l|X9D+f1b-B|N^!C%K-xB8arPwz3}wLVQR?7wHrPuA@?Z~dA(E?M>E6;B>H`NI8k zR*f98{=AX9k2-tzxW5e=`PB_S z+@4lgxaEXl>!1CiVaPA;9Q~I!);u?Ma-u}ZALxUgO{_=zG%v(ONSC6uzvxfQW ze?GKv!3(dR+ule23#fFTDTUtop8J1E`Zw)cRSo8a4*8W3)dG7Z3J8y z++4V7IG#<7z?}kjHr!=!H^AKo_Y~X#I4-ub{oXJdfADbSmiRWoFU8nGyj;cvuAvjp z9ECr4_=%qQJu*i)5sj9(xeJmXdWoN#hd+4!CHQ^AG`>pYFOfM1zs4dftVc0t;c>!w zpa;<*+zK~44}F5jEr`?0y-bW}u*`M1cu4$q>6^KbPW&#h`%Ot_2Yf!igkFXhvlGI@ z?_9)J!ahC|C0+c|!lx+CZmy@2pKHf_xb{Z;-|+cxEs^+4!ADEDxkjv1!ao*yF8q=I zF5&0ew$dl|-y!x5M?Uc3!F`4oD@-pT6F2s7pAPY`%>B4?iMUA*7b1xp`?xkr+~gm3 zNf93|=|4%*zd*|UUW75c5snYP(-MCia(uWfPTb@-*WihpddCyH#HUNW#A% zn7C;tT=FKqRqW;QW#YF>{oy7Z;{TTN8!YAbHuUo0PC)#HVYn$@u8I+#1U-C4 z3;&V6bjjv?Pfh7Jk;B95J+Pn)pM4P9 z8Ow_0&pJi>*w-)}?CV*t&dswdmLKzi>1AI*yJ!pR1=Gm#WF2O^VclhWW1qox&a!2H z!m?($GSAum*k`dGu`gr&W*cGon6@09CYYL#Ce9-b&lH5W!r@DXdc63{xvtmpS-4t3 z(LDH@21mJc_4w=?~UqExPjfl4~}Ysm8a<%Ol&kF-{wI^_EKm%sOT z{+17?Paa;m>(3vbSo8Y}R^QUn>z!AJwdcL|<_C)|`blZv_1l(x9{AO9Pk;ILXa9-# zAFllRY0rzEb+>GvvgXyVmb?Snb#)ud-i7}jTz%d-J9p(Se(1=yYcu}={H4_y zVOC+&tNq>w{`P&lpZoy+hj1&)4m&w-;JZHwJhQs>Bj95?UU=fjV?JDbeVW}k|n)yZZ;6G*WeE*KMfj#{$jG!`pAMWRHzk<69?n$^e;81O?K5*PgJPocA zt`4pP?o_yo;I4!F1Ke|P@4$Tx*Bcdk1l$z3#c=E3w!!@n?lQQW;dtH40l0s{WpqRR zhAW2SMK85*&2T&6eggLkxEtXffO`$@Q#d~w&OkWan`M>5@ke+z!5s^C2HeGP*TdZp z_ZK+Md(*q4O~H+aI~;BmTo`UU+>hY+vp?6uJq*V~^&i5eWuPs>jfI;Dw*synZY$gm z;4Xms4ct9&Ps6ue}(%9&WDa58;-X( z@QCYbxXo~%Eyrn^yPX`m_KZO%6o}HsSkEwygQ+2}3GlFF1W;0<{C*MHgVL2i3@ISfMB55MX zi%Ur20VyHzgC|M+`Y9w{CO{Iaz2pUtR*}RnQNqPLOi1E|CPLyDcar$|T}V9qOcK8x ziCw(ui6k#7hmiQCg(QA<5ka0MW9oUX47tbCX~N9!CS>ME6k+DqT$1?3SGX1-LXvoh zUATBr4M{x7C?uYBCy58&g~U_yB=HEnkgi2Jk;Iegk|D2(E`B%{5)WmQtJtkoCyFj! z*C2Lru0<~Hn-KLpsYnu!EeeU3IFQ6EA4HJ%q>;ow5+hHBGLN`j10c_giac*eBQy68 ziahsckaQmkNk}}oN)iva3W=YnN#ciP(Z$UVBwgl~D({>kX$BG@g6d>5NIXX=qz3c? z?Y|Ew|5%?0h0L5NwS^$SxDmM77^raV@66=lM`sb_p(xfoo}EU`;}t-{%u5T%%o_}Znb#Ek;K!GpvPDH z62i^#LF5sigm80SFjcrYD7Z`sgC4TI3E}31-+d@n*jH}E&DJ_|I8Vwn zLEfCkOJyHx9G^XK$@0e>y}JqF$@0e>p+ogbD$ltapHXnOm6(2WOfHqYITM#k-W-MF z{_|w^nL}v(F~TMbHz&m~o8Xg>f9B*@s{Au2y;6mn6JDwGn-g29}iR;uzh zXR%Vro3mG`!p)hhH7WAP9IUc+{Y=O|b5JUkeseG?Rk%42C2L*@`pr3~$6#Nw@-;`3 zUPXAa_GJzdEmnn}SU=6tp*bniXU^M9P9bkj*i^#uWcHb(F*_ljto@nuEFs7zvp+u% zf_QKZcT)Z4_`<0v>^El-F#7RH$X|2zAXWIoMOtu%5>CuNa|Yr56zMm|4KTX!Nr>N^ zD9B0?ZVnBk3ODBhQne4W^&i7BpM?0$w*FM|X6Jq?`4t!y`J}RM!#9Mte?z$0HJ?iV z9+6LFpV{)BD%@;mPo>}NSWgvh_M)fCKeOFDRs3cv`OlDt$;J=NJ=9|#yUMb+XW3bS zZhoF2#EeyK0J!Djuhn{_nMYXVJ+n^pRAiSfBkD2y3rIk7Pr;ofe4Ll4$M7vZx!dmaGaSpQm$Rlf zKi7JtAH}Mdq*KJnHy(U{J_J6_scsTJ&Rf)D^vye2Swww1!S|x@)eD;w@BEXMjk5M{ z*~hM^R3+5y{4}s;nQ|%vLS6q9J)Gz8@&9C`UPm_ZCQ0{Ki2vj-b-JZ~B~AAT=sZUF z4wgTa;9D(xd$bv@zNqqvfbTBhyD6S;abo#g2LAb9X*-MK`73m}GY=jC-!kFjd`CSd z{d3%W{{(zX4?*7`lvK?(=wp4G3%+XM<2))R-ne`xe*`>d|3~s2^QsvB6-m+${$qW* zIAtE>=BtRS^nq?_lXY0KPvT0$%`&>o*CX%-0g~ndMgoJ`*qJZR#=gEJ^)s0RQjOb$SkF=Wg&_ zdqC*|w${#~)%9%+;lfaRdr?JOYb4wn=`5NX-WqOcYY%r6t!N2F8rwRybQU$Q zXliQ>S2b_x0;#Q|uw6o;n5*V4N#L7SII*y^VRKQ{j?PGUOHpO>#*R?Oj-vS;p)KKU zZ5^9Ci+P3s%%D+7j9np0FhZ zeH|0Zid?Cxwyuu)u=U?aT~}vEQFCj3OIJgIKLrV`{u>ThwPEqsn zs_$5d96XKx<>ubGqw~AlM=t0HwKp}_cYa5za&$M@(A?P`iqtoK$LiY3u24thShlPr zd1h^DQKMmD6Bkm=;JvhMYje183qMTObv3s}CYIJkz=4B*xVYf?g+JZa#9F!kdNsKcQNyNA~BUKI@&g2 z8V3|!*j&PTkV2&RMe z9nI~`1E@nfV+wjjTU(2crJ^>v=qqZ~+%c9EXQIe0SP*X85{{_+MH-V>3r5#aAh6DG z>H4j+Kvn2fq1H`OtE20eQxBN3`6wux@RsU@s7Z^b!-Ur9<|4pnc<)5 z8{yvy?A%@Ze3{-it;N3l^oY+&2VpS?ZwX;!`V!wU>Hht`U)cM6Blh|7A0W?9cb(*$ zy}4=zSNWqtX}qdha9cY_JBs{{XEwXds-m3x)-~@4J*UcRk=6 z;QbJU{$S~+#C`&?vEGkC8w1+VeZGF_zk;>9clj5C{%Jh@hnoJ+c>3v@{srj$UWc*m zp0jM**Uy`^&)0hs^qtD^BJbA-FVyCpMDsEgWxURilXlJUP4)fZKAMZOAeuUipU zB;xa&VYs8o5?cvLfaNLbi+bW2-`5vN_Xm;F-kB%)0^W*4 z7d&>CgF!{ind-2>P>6e0}|I z`FihwC`x(&G!NOs?8|~sW}B}s2$@JGVq-Jzo&FFMW~XoR9p*n0m}eQd()}gA-mjys zuZ9H`8B5T77yAaWn|(gR`~LBZy=QvRE2!ke7USgrRlf%GSQO8q9tWM z?Hjvf8?q1$0kvgtI`VK3nGn^L$D`eQ{{jWMI;tyGRL_e>a9nXbI5WI2f|7@3)}86| zUUvLG&|VTQUpjh_e%_6@q8$x^!5?LKe}PoL%;Xbz70LHzEc1CFZ>4|X8$WPIw&=wRB|vyDl=9ep{wWzXn7zOp01 z^X5*^6dS$jxn5SKbw2A#jQzLiK5H?Qdq(v^VbkPmF=~79vz6!#S&{pCCoD$I0W>Ln z&;McWPvE1f&Np!UP9}GlBrusI1i}&+_OK^cYPGmkaK)XkwiVZ+)fSgl)K-7bbIyAwGm}Zg|Nr;Qrc(v=3eIQwZ# z)*vPeE+)&17Rh9_Fj*<#$r`rRJa)Ue@OZNb^BHvFs=YWaH*@R_7^YNGQykgwa=yXN zH~9}i6H{qoyqJhF&lB%lYK}S2G|xwdv)e!tZ81~vV$GFiR{XbS2D{4{C734w<6+hi z3|Mo~InH;yiDB(wa~yioEJw_kR5iFy;m}wMW|KL`d5k&#CbNKj-!U<{$>z{E(1g*E z+U)UYKzE@c#bgXL(|>C&xC>qF!>CB-nVBb{Cw=%_jspW8MtQVvMeWK!FE!Ra@C&2| zlQ0Ygj-{sg9J<8yYzHG87yi~9aIfQB$1XGFuLz0hjpI4<_|whNwH$;7+-)Y^WcRe$ zE85Hj_AztKlk64SgGwBp4ycyHbB>P_s_@jE-`y<0J)!1%NbS7iSztfx?Gk&0%(~efQ9RpfBW)^pv zNnfBAo`)FN6K^r6u+>clKL@oe8|cMQs0RLA4E{-A3~+pDk8?h3-++NO&OSS4tj!#8 zzIhsIh`Hfm^E#Uo6Bi8Z!(x`I!C=t2<}mwd+fkb6q$Z$9*%DB-(d2U=Z9ikKIqVG7 zQHWvu@*;v^s1U?KurSWv@xg1)+T+nPXCOTvfMKO4X0#1S-j4}ioPC$A&79!;y_wmL zM#8wRH#1_g2O_>ZF(thTO!T~Jtce+uf+T&2RG<^7=6cdlv*6J4RcRSYMr&1dUF22E(DSozZ|@)Fkyo8 z=P($>k6FWW&c&$i&zj~9fCHv^g@X+$9@Ck)SIkk+icssBqZl;fIsF0)bG)H&INKa~ z=8$IePne38n-d{`PLKkrNO;`eG4<)cwH0dTwKB3q&Lr%ot_2(OR?di!zoXG5j7FD$ zfq$)e94DYBXs{1KrHH@sOVfN7X*rqGXwErd|D7DkQp~l~*|FCgg1ej#O!HiG@OF$6 z9@Bx|l4ZqQC3<-YaeWliwE1XAupU=!%S04etx@L}Myz(;_;2V%7(^==^6Nm6eF zz6z7K0B;AL4}1f1ZQ@@8TnBw80qcP!;=fS*j|E~)F*O&sAK|A8e>9NwVHlA9cHn-j zU4E6N~2GTd$;<$edG+-<;_@ZT=<<-i%BFB1A3 zAmr!O0ok6`0IByx%`fI*q}0O$N~t#q_#)!@cBC zK-zy9koNLROtimPaE$mT2^|Y$zWr;mmgDsMeqzDXMAHM+J z4!f#=zXpyH{}dqe$AGl!UZL*<(yp6T zY)}6juI=~;croJrGmv`T1X6w{koI*6{};l)7)bpcz(!yL@c$5g8PE%Q0Wb?V8h97d zkqTrz`4{$Ry#@RfXovpSfTu(5Y2X&{w*x769qjAC-Jpf2MV}Z2u z??W~H29W9B3uJyjBK&)Rl>0T1>Aw-k^q&P}IWz*PZwZic89=6opL4-bna=M;P66^G zGEC3&K+5j~QvPb8+k~zIHbXvN_#WXqfUJ*Srs;6+11a|>AoF>z@cI2(=%057kal(n zpC9{Vyc>mX1fGWQRX~O>15$pvrsqu-{zxG6doYmp#tQy(u%2hX10???AoV;Bq+NFk z|7OAKfo%6z11Wc|@c9kbXJBt5koC7z_(ed<&lma_p|gRM8!!Bk!XGI7IN`?#|I0y= zUqHtDvd}z%;1`JZQQ#ZUcaQLQ0vYf1K+0bVWIp{2_y*+G1DU@~K&HD^@Dw1!9SdYQ zelPm}AU^@fd`$9GSD|Ca+{9R5B8qUohS31q!}2najp@k`Qd zw^svc=Vd_Jxl!nPU>p3)gkCIk9*}Zg;g1nI4pG;nwo+0&5Z9i$Lo69gyKJ z2fhg8YwqVEJinht`(^{r1)U@Gfke%J7RYdX;hl0<0IBz4AoXqnGF|OJ%AE$>4?R^t z$}b1r3)%~O0sb~1!p-~IrNbWrQtoX*eo~Hl9uxY0AluhY;dcrDY9Qn1*&GbNUi{Yq z8Gp6#mjEeuocPbw{>7Q%pC*_Hq+KyU#{cyIt@jfk^W`9r{MUv5nBaXt#xi;Z90I9!9XdW*^dKr*%i-n&j{MkV2odRTi908Vft4*w7|^;RJ5yc7uk^q&EdCFvzVrY8@GztkD{M|&p=&4awiABca{GXO~Y zzwIaG1f>5v!1JN!b>Tk^WPUy-{tp5fewW}az|#@`4M5Jj&IUdO`3=Ap@YewwfvbV+ zzl(v4*9WA1vw_Sn9!$pg#|owaDc2uJxmY0OzISN3mw}}JDD*=>rvFz!_P199nU5QR zFC%<2kop5a{H30Re+*wD{Dr_~gv$Xk-Z4Pt^FZLE2>*?#@pIrAkb56UeXjwTA6Pn8 z>unDKS#G}uZh+jiLZ1)p0NpBdJ&@t?2vM!;6$pO@kow07JpxF%&v8@2^t}wE{%3*Y z?*=k|c(5Gl+kv#_CLq&sC6MX30LXA1K*~1&QEyV$0vXN^WVnUEYvIpN1W|q}kn*E} zluHr+IPw1ulS29*2GajsAj7{2WcYpJ|CspSD#&++>3@bGPZMJJRf0Ys)0+c46ZtU# z$asc`eEka|V|spm7Bw*P$~!@mrq{}Y1u3f>N+ z9XAPmDUkK`e4#f2Q3X@i0jY;yrf0rP5}F?dq24&be;ZogKY`@G52U`ggnkJ~eUAgF z?_wbJbqd`CWH`UzG9c|cLFm~)>hlUc4oH2NW-EOKz?0Fn%>v#Jq}(0A4B&5o9$*R3 z4WvKfGPVN&##w@h+vP#IqRBhb1l@v8LEene{|NG%cv$d|;6cFyg8K#c3hoiyEy#L6 zJv#)u1h)xp6}(8WQ?Ns@S+G{HLa%H1U-Ujf^I>lAV8(N0{Ba`7shidkn!9AWIWda^ME%48P7H# zU$Sl<^n2uVZE5tufko6sT?_z#T09yIL zdOe0JfTMwjU>Efr1XAAt;3%;613kdqK>F_j(tigKOOdWFAeIVUoj~$CfT^IHfdhdh z!Y=@(fX)Nr7FE>)%BO)wds6iP{kkgygY>CD9-6wEeBenyC-4*?2XWeQ1c8;kK6Wl6zkzl7_hhVc{tzd;Hz$#?L9^vm6{w`o8_+7%^Cj70y3h+CH-y!^FU=8>c!Y>zo z32-g=dBUG1d@pbf_#WY>3EvG2fNu!@2qq`A^DuB7_y>W?e&O>hvwHCN2!FTmcL6bv za&-xRoA9>+F|TrU3ZDo4QhzgWBls1$JHr(9#E?62R4FVA^dXT z^FHfz@biQ}OZZ-3EBGGarwQK;#C?#<5dIM;SNV^Br-6SEsO%U1eqb~BdxXDR_`Kh0 z1HVi7+l0Rr*baWD@H>Rx3|tR>h49OTUjnQJKM%MBI7|G!;-3L52Hzw6G~v5}Mc_My zZwUVgI*Aj&KMZ6#4guliI0!r*`~$+@FZ{j0Lh$zpf4A^=0Smz2A^a}kZv!p{f2;5> z5`HIe5%?X#Zx((na3S~=!Y>zo32*`U1;Wo0{w!cV_+H^>2;T#o4}O~P-NJVQec&6y zKVnLG0+)h+2*`XmDEtFJ^s%n}!p9DHl|Orc$AQ0F_`8I^19&X>UBcfc{H?%az`scN zox<+`&H=w!__e~X08R(LT=*rzF97C(pC|lT!uJBFfuA9KkMPrgIpDj6?-afP%m)7m zZiblN!$6k%Az&u>2Zet?`1^sA!QU(VJ;LYx>m=}Z34e$1yMPnH-zNO6!oLVO7W_`( zcL={3h*y( zJr{BD{#Vt1psN4C7|0(G{(j-_1=_&hBmCXM-vz|awL|z_!tVfbysZUte9Z%P!s!Jv zz6`-MK{t@`8$us}5y~Fm&k$}ukm2?U?h)KAxJz({V3*)F!L5Q933dv02sR7W3RVb~ z3zi5L2<8dS67&Kw#5ytrJ%VY1Zb7G@A$SCt%5VpPOy2<@)4fON-9qmWx=ZM-LUaB` z`3|9*g{}~~T<8L!^MvL+PL+euX+m>er^-R-BPd+bhk%qnDD-}z_X@pR=v_j03B66| zi-hhJx>@L2q05CX5js!kSwd$B?Gf57v{UFV;40LUP9Su-sCOl>0?7JT09*kl^(_Zd zUl}kBSPG;b$`L!2Q`b9?{J@3l_$jLXJLU^I1iwe;fUI)t6MS6oJi#*s7YTBo59MP7 zzeOiP`f0&O1y^&TVw#k@uP^uM+NT} z>=f(}%ojXH&>{H!1RZ{#;NybV30@&sCs-*sNYEwt<#?^S(__U>!IK2# z!(Was$4GcV?u$|B608s`7d%dIrr=wnwfrlBcM5Vp3-xe63Nc6Ug;AP*TJU_qO@gNg za-WF};id?V75tM&^IsGEmEd)P8wF1nEEMz!4iiif{1P`&jOTBHPYOOFc&p$If~|t< z1Wypm7aS&-BKU9IoKgQ*g3k#)DOe&{Ajo|il)qWFfb zPQePnJVB43A$Sn;MC#ci*d^F0SRt4v=n*so4`QCB!V7i@b_!Mq<_UTP4Z(x45?-)N zuv4%?Fi+4UXb2v(OL#%fOK4B0V1;0wphwUUJQyS41-k@01uF#e1U-U=;6X&D(l6L0 z*eO^cm?t<3h@cLR%XeeE@d)1#JSgS7N3ctpb7`q?V-1LRDVr#Ka2}J z>-R&drhg-h?VNnV-#TOcLoT|2w$4=FhQX4wb%uH;${j~f8C}O~1-Ei>2L8Mc;qPIg ztuxc>B|htnbf3g`zQ~_BP=~k9Kz~)jKOU#`T_m)12D%-Mh4Jkd|L@UWX%BDm_{(Q{ zk-^s4>HHuYx^=* z(AJscwUU3<8RTb+ybK4Se~LFjpsh2%znA)8o$<|mRP?vb^xh%mZJptLm8Ac$#CL(zFY65N8j-io?0!%3 z(_N&~cb~{xXLffx}KMMc;cIK=AWO zdaX0G3&cMrNBci1`EQ+(Jw)_bXJUUK;jJ^US4;R33I8VvZ=G>nDDutXe^~O*I>VaZ z6Jq&p75}l~Z=F%yAn{vgQjZk0-?`GKTr8Qp}nH7OX8aeKl&dQn){PTmx%l#)D_YP#Q#(A z=OP?`e-QeJ_>V;YM)_Idf5gxe=qiAh(AA0NB_Oz&kxs;-XnCq(EEkv zxI_P4LZ2Y{u|sG+AE5tkq1&W$SkIL&<#q5f}z2&EfP-$H4g2OUZmMbNt<@g0h= z_o0aNavy7G_`-<#cu7S3{P1U}d{abycre2LzemV(e_&{M!_ULz{563#oV$kOdfPS{ z{-yJe&-dpS`ASRuWBp4?i`&~O*VG5P4~**}5$d%r?1;2g`D^l9iYsvpT?fwEGyJ|4 zI6zLFo>$Tmz=3-BUscx{SkT_04odYkR^#+O99gG?p(^C;J>}GAxAAyBB~eqqu#vW{ zfZ>4-UmN0CqmHrbVWMzr>X$dx@!&aa)3mkgBP6W@*yO0b2;b17*VK8X`qVU$DqP`P zh8(k0=ri1S2%A0&Fih6U-mo*+)Y)uN#Vnm+p2Z8xe3qU_fv~JwjMA;IYz*Y%MA|mP zpTEerrnRZQy)D3_65*NO-qM0oo8cpe-GPV9#8G<g$_u+;daQg239!_If27 zQaA`u5U8uE1z**ks990RW0&=raz8HYujCnvJ@VhGK2mQRT5C!Jjn)3vwiXE2>&VCY zOO`Dy@fQ`AmZAFM2uK{H80J^DG=FK4zi>%unQuw{LO=4cVCjNV|I(5^<+YfilG7C~v#qkFCeQ|%$a=-I9evf+ErHfZ&*hD%G3$EwFN*Z7 zYHD1McD!o&in69_CBLb@sfAQ%?^Du* z!!HA1M~g@I2-f+db!P;sL(c4ssOn2f*-f_ae9D5##_Iasbc*dw>OjztqcBlaVW&7E z0U<|M_GMp-I@dJ9oUnc>!f#3GlJxmyl zsLtbTYVo%Z= zR#(%f%8l*oyLIWYNd~IE3<(QW)Q*9(vau>475Jxy&&Qd#KUssndw4r)L*;p(0^Z~#jp6Fc{wb$3H<7B&Q9Hv!8K6D;6 z9Ph(Js;srL!a7m7FO%1yA+m4AERLy1Z7iweXBkjpYsK!$b{dX8v^Ag)l~qRxi>Gcv zzMmw50gY$Vike{GgCR?*h+iEsY_K+zb|3#-zj0}!>IYCIF*vls~8VrI*JDmxguu2Dt(qGWKmSqbUm7?RsbTMq! zTGDr@u&L3}h3+xaIl5pW^Pe9H5HbE0HmRJ0Lu|=oniFuSJQ`u7v%RwZD1%sSCPci)dEJ$_|*JIwejH@J=zo-_`JsqmSO-;4*SaJ{CmuZ!p{w{39 zXPPj?6}B#_YpiRn4M0Kf6Q}k39LrA&q9%jBHr4K^z_8c z6ctPv)SF0@ezb?_-4pwsQCR&>aFWnd1QYn4%+R@bPv6Kcw}(kpyt}DK&9OS=9unbQ za1U>5_S7@(UK&VG!Csn0PeJBiSX<~RQXQz|s#;GElwcnNLyu%x;_4<>f4L!aAn75G zima-~oSreGV`y7h*H+t`KZ2HqtRO|v5Ks%U)+C#299Ac?ob&6D1&=6!*)aqwRTO{A zygr4XWO++{l+f_NvP1B0Fp2~_3B=EjX5^!6*5EcSiWKx%Gw3M3R^#Y7DEBA`5mkAj z#{W4RkoUR-^*DYML3$RVUJFudAN+L7%DVdc{91lLB#O0?<6$*5ikOx0Sbl}CzO7RO zSIz=saelr(&`}j=Zu6@L1+#nYnlooBzn?M@%*>wAhraAwct(!bGrcN=UMUD)R?5tt zJuCWflBqqSjwqSg(|Ze*ovVC$2{wBsBa3Q?_UbvTAubgtn$PSRedMh2ixO(~^llr% zmrXKrro*q-=QaMqvgQ6|e$0OSx!o!v^K)kJemT>X-%l%T9VTj);z2x=GX}ubm zGaY{F=1!(crR|tU>c3G z(pRuvz01J^E;^Nm{F5@kT0*7b`27ofWxj5SU80B2uKDAhDyH#Jhk9p9@k0NJzE;*s zOnzG<^>Obqe^yp>ioT4E!DqSPbpJ#jmfUI^^}Tm^dil;8e|*P?zl*{`tNp^-L;hR# z1?p)X^DjKTdCYA5wrMbUMi|rUg?-%bf#||w5Pem=zloOK1EMcO^p!&i_3ec|F+G~T zy7iSUDnz7xR>tAczxs8GJ|TNRsC~@9$oj%}S^2|O1NGa+M27q%TZ0@+AMftSjI@vM z%<{)~x%k^H_8mrgy_yyFU-Yqj`Dwf!^|=7g{Q1+h6Zyu574qw8Uls17xL&J&k?Fld z^j#+Y69is>ych*uU38D4Sg)%<}>@O&uT5au5oQsq`tfeeS0G8 zgX)O-QXN>+Uc-mRDk0Ff(zk4pa`PYGjpwg%jK;k^^@SywH=@*sxx5MxsqcYIt>=CT zHDivZL;gqASGi^l*6>t)3A1lqwhp;hLj7%Sh$iifs*ia`?@0Tm$=<$PsnGWxrIF*-K|JmQT4I$MoaJ8qHnRZyOWPn9|k$4 zGSa@$l0M76o2`c4ZDxdhRa|by`b)cBZ1xu|=oUr$5PcpgkG;^x_M5gzy(>)72z`NC z|5`o+(pn<>ms&~RR?&B;R_oK!>OEF)x_`m;hA&By8=2lCe7Om~m!utc$ULC}_DK|B z_KkzA?jZEQLr;zswUD0#be@B65Mbb;x)NOcVcVy=z*b`%ww3?n-&BOiz{U8cs{G;S z%<);q?vL*(oxRBEhuip2<(ei;ET{ul6n()DcPpXZ<<#;)S%f|h9hfi_j*A$CQH5BpBq@sZe#y~W3TvOYSjH1&}WVYV$V*!-byC3bc!_m!0vocC#3 z@#d!rHa}Om`9DQlxNp}e*!-sNhc^l~FWghG`5m|lH$PLf`LD|HRMF;!y#-s$-I(h_ zV1L1u>D_m!+Hh&)C3&l_hjXF=>geZ?`RQVs4L0j-GNAiQ2@=np_?|yg{^4Z{LzXBhs-7qiR{AlZi$+ zS3YWoaqFD*e7IK{XluhwU+Wx0ks--qQhoIsDmS*~V;@hTRj){MEg5lDSIZM>B$wNX zD?^_xmZ>e246h#(bnm)Qxug}XtPM0SXle|E8E)lbx50`d2CGQA4OS$w+_2WALyVt; z-I9^HK%Nx=iYf95nGyD!jyp+%<>>E`H~wJc);h`n)&4Mt5zG=?Ab6tSDS{n>mkZt} zxKA(+9XEe`mxsUUf_Z|A1bJpJf9DE5EU39Z{=ZyADg6`f_uQjn@^7C&g}S-NFiUMEI-ZKFH$7>uI`C8Ns*mIa1y#m%0dfE1x6ft@4YM zxAHeq-YVxvc@GTceUbI!*KFDvtigv!408pcnrc;(vXFKkr?r%UY+oPyAmO z{75ia?uUj6@=RUUfo5F%Ws5OCwH)(uy?Nd_v+}ZMfBuA=p~L$Q$ij z5z<&kD@J5<)m*E=jt=ct%OVv_89!x3XoKz1UR8)5F{ofYWP?px1qvFVgoA!Mv*f=A z=;P{zr>JN}u}5|TduC=%%k+9OumsjvGj*mHMCP>YiAL6PZ0T;zs?5$>5NKW3*3_J3 zwY8}Ym95wzIW;#ccq5oq+SJ}s6$px`$Alqym)Y>s^cmLsG~F-J__K?f8k^KUv_LfP z9PEM*bYLGxl%TnN_|59WFI)U@%d*kGvKBje3tQEG?I>|r@gI$>WzW&bTJ{}{Z1#-# z3#a2rSrqfKXB7R2S9bJZ&^V)ajnTbwa`93`G<7+-^A|6R<}oeD*GrITISAtGB}}i{ zpe$;b8M(d1lRK+d1AO((wUx~OXjWv;=*?%Ew-=4MIXSDE^YOOXtY`{z@zdVEAN7x# zmsH^UkqE>;dqyu7^cCE)zL&s3Z*QNvv!i?GcqMA=o51`ss)`7i?j3JY>U}V;{kcB> ztoe0Eqt=pAJ+a;)7ge)mswIDPhRpI~{@xlrVOG89Q`1tu9fw(8BR0TCts!L_n)((9 z)sQ`-pt62#G;>0wrsXWEZ^CO>QSu=)w%(P6O7)>^273-)Zx&_eu#x(-DN9TFwv2&g zq84l!!6wM+fUz8RCm7V*RF*mCy!jCQZbsR22SOt}>^8M98sY-bcKW}Y-p~p3skF@0hCe2 zm96WHc9=aa$KQtKRkgWE?~N6UHrQYNSYhE=4Ilg@CDAf@lxk>PsT!pP^deM9eWEp2FOYOAf^Sc(b|5W)FNmlhfR z`FPkMLWMPrSjJx7%oj9T%bLn+>sn1cQ`fQ>4N7+1gtII)){s3%N36R5$T$N#vs50B+O=8f)-=7`AN( zjCMqbey|C?A+Ou(B^a2AZWmiEaaW-%fbHl%gvsiLsL&5!%TPCa8D3|_?aIc|_8L6J zWpaD^Eo~;h6>;kK=kd0_3WJxGxMd!_6t`ac@OmBJgbk(;_hYcwFUi5nnPR%N|JDe| zR`eot?rK7ym!Jw8o7>w|f0Zx0FZJqDZ~X49z(IL-pO{0T=CyE?DukW+YMDy!ORd&x zWm09rx&Wg|y+Vr}jz}*5bAJzBlxC{rg;VA|H~p;H$k&i7=I zv83p3#r}Uh1cgR*XNN8FRds9Yn2Sx=8PZIXgYVKVDb;VYp?T)3F}VukvB7_uZ}nvy zro%ZNC8=^C+yhH;Ep6c}kIpDm>To`CQ8PFSg?kkRIrIysJY=as%QBDt(PS)tCA^l? zARUWxq9L^NRENrXyo;yZ#v1e$ngL_krH5MugS(m7*nwVC1W@^mX7mGi(pC)z+7s@u z)r*dxu#oW@h`3tu zE=M)q(_qV_4<)FBZoc6vvHGp5;;+KIr4eu0>zYV4s^lxzqXqMri{O$kx>h}4sTE}d zJAo=$Tcvwrt8GA}xX+g-j97NS^0FiY>@u|8rWUL;GmciHj_nRFwlim2I39;J3}&t3 zR?8_JGW#>utMbuPuVB&4$i*BB@uMd~cQ2x<>qj(t2BtgGKroT1@Q%=*xvu3Em<#TV8|jNmLtc9R_BLOt@;1&6Vh6s*(34+R@OozAm6!IbNz! z+yAUF!=mxt2l@Ji&){n+>OE1U0FPXGB!+$$7X3^OYKpPA$Z~PATBrM51Dz-oX-U4D zYgMmq4)%F7JUuJb86|jAl%1-atfKqYc6~5Ot0B^ejdNC|UaL}?#VOVs9Qv&kahlMI z?jTTu5wBT!LE0kK9;KqnH37UY-Q0rBa(ok#!MkNjgx!DxKI+P9TQGA}nOYo1t3VQ` z6`~4*x9Z6Gz#fB*dezB@{sz>t0Nw-cqT@*5a)vt-~s|MUftr*o}ypt@SPw zhcliKQDdmGx7wR-KztaZYl9l_)p!zF$J!>$f*Q=*zoWNWmaeE?3Kn#9O`l+mWo6lv1)Ta>>{adkyUcOvgH$qhqr(y8m8v?gmBhPDvF z!Ry25!Z{IJT*Ol>3>>i|j14W7&7}tam$BznUAV5Z##;2TSa)dSt-g#k-K{G)rw?gy zMk`Z`UXE?svPMXwp-#OyA1ba>-D;&?hr|84I#ESskfcLppL*}Iy125VuAyCCf7Ns3 zCM|V`Qt*f1H9PtfXWg8N&wgKg%RwEg@T3gKt zy)NIh#F-w;*f9pF6*wmejV?%ck4QL+2IFD9vO*3kk}4dmrOm;2nGj9)oj3a5=pMm< zJpLl|WjTWZ!rsx5p9kh?#RiQPKs$*BIx)l~AXoHH2Ek#}? zfT^mV3uRTc<5Y}>Fg9N1Rkx#SS;?)V#-yRE;?r&3nxtU%h_^M>eNSa0HXYN+ZE;az zeb+-MGO233QJ3TW%&jASSoe=)jaQLBa4r{u&ASQDyy8ge3{tCo26z3n8ju-2&@m( z^DW;jRQ)#gIjvcBCAC;$Ek#2ItEnXu^;-Fa2$wE6p@-aTJWgw^UYDgO-dRO;YdCq$ zQq7t>=vuS7ZO>H2toGIY7feJ!ber-&mPetch2)a8kn}%htz}k-r3*`QjGB72oIhK1PA?m|uJ{>QR9Xjh1>dUx*sR;DVOLTrq9l|N({z_NmVkvW9- zqZ@-(W1jTWLq)!#8xo_Z$4;ZwQ8pj-k&3F|All3&VO%#AYnBoZX>HE$7Uj?p_tids&F9+;Vn@I>mCX>|K$S#P7RB zEa$a+;R8RLaf;;}Ap6*ChTn32DJ;9Oej8qp3IAEzhjNoKem0}*Innw`PTc0$X$MPd=>GqT=u8hPI@NMopY3QGjFel*{Y|FD} z7=%9$Hl#L0MGXKUL85_Yu zMvM!_W9p0;KLXkMvrVqfO|Ek{x$rS-r@>4~Ln&m8Kq-WHO%z(mO_Femn4F1Srlu<|;pn%*ur&7U7MiF}J_ciI*~B;w_yy zJq1M!N5pF}WWE=#i0bCU4|Majxk&{4&cJ1pmSq^$tMoB{hnOukW{iCY{q4`-e~kTo z{ExN&fd5YWFbIsYFUJ4T_E!8KYrhHqGwjddzuW#1{@?$}YwyO|sr&9vUc19?XJfzr z)7P$uwetmbxZqm~SDL*Z|DQSkw)+7!nG8xUCPy{ zT-0(YT^}&S-P(1x!~PezzWH?DW`~^{&Hr_9@2~9kS#W)%Ts3fg`RVJ=^|N10o^ss{ z*Y1ORkRPuo*Ckil?O(!mNb!bXJM~A(#f{{L4$^n6;?Z>}T#xT(zU-vydAN+&Z;}1a zfwWDq#X6XUbdR^0NpQbI_eRG@fPS(4jt9r~CET&GMRs*azC9V+m1FFg_#bO8!hfgz zH2inl&&B`YhSG5xoc59Ze#XFeQN%Ic{shpl{~7;n_9OToV^77tWV<~J|6>jF637<8 zY4&%lAUJhsKitlKK6?w$uwR1zHv4bzKgQ_yIki7Ye`i1Y0pKkh5L`yW)A-*EGG+|;?Qrzp2aauk z%k~<5rY5)(-`C#m)FFoP2FCxX1JZ2nIuKLv&dyX9h%+%K`V)!7G+WZ|K~OBg1)cV! zB_Ju7kf_L;L^Q!o(n$Ucv6N3rbSHMA0)pj!a4^2jjecfQ5)==?uKfcfl0hs3aSy~N zrGQug;(FA!NrQ`=?kbBI2BO^}Mix0!&INHkMz~31eeQ|CrAW)940vpTM<%SCG|89p zp%r4XFXca$dy3CU{*K1ECb|<_5EG3Xg8rGYx@IDxV=ZD9^qmUgxAd7^?jDX;_!*IF z4m_rVNXHo!u48K5x4{Axd@h2Q!DBl;<`p@U9tANH33W|IG%-oZ$b{_}F;j;mFJ&R)95*9OZhaRNf*NcJVN02hE*f|igtu{Pxt%RQ+!r48=whe5JtB#uy|3$-d4RV;BNNh5AKay8ZF zNq7gjeWq^J2_M3J4ST*Z&Vq0J2O#TW#)QWkmkef_ZOBl75jPV5lYNLIBWYZB zWh(@O*`Aa;%I2;B!M;9ey3OVefN-E(lV-!`XO`GJ5Z79SZ&Z@|w-&Jw#6A$L3rU3_ zJ^{ftom6Z~b^qHEJ8@J}Qa{uqW@gd^q}!f^Nvn=FLy?0)Dw8HE5;I0^$0U+Q++UfF z5~y>!7j>s&6&M^y+(kB<5tjfPk{c|Q)H6el*yvZdz49W_moLVrc5bheo84^ z1^FJOuno+itoXLLTYjRx_oL}M1SU%LpMW7rXh25Xw{XV&fPZE@=u41cw)Kvy0A`FD zkFSGs;8}5_;FeE2nY!T}~?6in_5W6g*0mMTV(FkInMKpnU$s(FT z{0Ri}W>A~W=Kc)CN~CGfCYx;_zu>2Q&UV3Nx4F{*DovdTmthgtpxxwxQ1fGzVsDyj)F$mTUqL##55Z8cUEgU=#L>GuA`Wy@52@vcy2OkIGIS`zs z4$cGdClH)B4)%fg2n4&t!Sg{J0kNJ6@<9wlww*;{0SF%mPE!Ui1hEXn77~j<1VAuD z2QLQE1cF`KV5V;q2zC;K3qf1~f|)t^gi$slc{w6-4#w2Y8iiMb!7>``VqS2#9L@wg z)`IV_Iet!go8w+UzZi!Dx=g2I5}=>cQ3QyMb(~6YnsyWkXQOfB<8Fq6^jAc>?^~y2oNAGJ+EQncs=*p@x6q`SU^-J;-H9B5pwlpUbG8!P z5h-y`Q(_a`?)bc5&bay2<8&l6z8I;#1O&T$UzFT>5G#h>^NTuYou zcLS;^nU83YLs_VbyxEB#5jPd=J)Y>TU- z^B;7YXTZr%#Eu*lcMiGJ;I_qaAV^*fr_*Bwl^b!tBKtwG-J`|^*(uM0!4!9Jk#X0-**^zvTimVWE~3+IvbtXl zXUwn6$KkvU&T;F_=iz(+&an&QUWT*(6BJgmZ^Jcyy!jcp-@-Y;;~}^w3?FI3q?OHe zLOS9e+0UXdqjehQy{KI3?z&&xXp~v%PngWEfxI=H*{IxUMqCXXn0~NP4&e=f5y$(` zxU)h3*sRvP144B$FC)!E7@pxCc_wfm$|r+&1tTx9C^WX%k=I%j+M09Z4Hku_)_>&9 z7KN7P9(lJ#p`i^N$ph<@P7I7`x_Mmy)`$UdV-ZvGOK>|gh6YR7{XQ7H2gn$X=5+`J zZ!$B|L3|B@%^OREHun!8Sno1Ma!6>Rsz-4%=$<$`s494yH1Pyq%G2=V5H)eBFXdIs zUFu7DA8y`0OtKM$=F=c+0c_cGk+abTi;{+Y3jh1=b)v^zG= z%Lb!X_UrNmr)B+i`rJv`kQ_~q6}mQFg-XCBn0~&v31Fws(^{v&o%{=Gb%e|at@Q-Q zx)asR?LxW>IA>_N6=yH;Xp2$d~d0+%zL|MWy>KxcO=I%vC44)jAHp zqn;^uF290%^dU&NGiP=8G2{AUedj5P&Cy*)+&&QLqrruZuhU(j-S5Jkd_LUntdT)` zQ!WRC(PxdTOyW`z?_je=>C~pcoqmT3J$^6XRb2nVbsd(8CnVU0!h8IH;hH}bsQEED z;7>?!&^zM~;=NbAC)VKv80w+yq=rzUIfO9AuNTS+2#s+~N^$%q1uFUp39%O|%G7=i z`emFcVJ`%#cq|49DC++vq{dGip)HvP)RqtUG*okpl6qaF-VREcTq}~~Pe@RyoeZ_= z_lclw#mNxbI1;mvWE<~dZByuT`zUn2C_&ql8K8E8`hnC`KFs1`UqZ54?zv5QE#a=}A10x$_;}V-~3K!fNSqg&LrrZW97+EHl+Bs4t zOkyq1N22Ml%zn}y69uNjt%d&>o3cE6>qXIfokaJTL zZ7jLo^%yx;AnReHZN+s6JWB`eJs=FQmV%8OE3EZ&#uDpU1XKXl8t+{; z-`JHPSfjkVZJ6I!`Qm-bR_h)cfFGNI_eJ=PI}_BSP~kn@raGGBSTNjPPj|0m&FZ{Z zE=+?btD6^#yJ~)RH-nDRUDN|`r)NO|o!t|3U$5OS!ae#h+-cr^AqKOeD}(34;QpAH zDuWl%U@ITJ%V6-Bq449h(tE0{c3cjK3Ftb!@!H%EWTKFd12BH#!eXBB1Adf4TQe{u7%52~|7T!Yk!@DsPh-5*PYk~F-bvnT z?@m2t`w2@HuBi3;cAEE9H?KW^TgHp7$9JuK@QV-MI6U&?2l8`fJ@@y=uG;qU_fum2 zasT$+1ONRRbbWy9D_pTKU?8rsxN>nVz*UB;8dn>x^Ko5`>sDO%;d%AYnw6gPTnT@LN7EZbo(+rsM}+=9g07VC8znqj zIpybw{Ig=uEU||jE&VN;Wl7qKpKXA&l^%9Wq%D1HXQZw8ri#CnUiL)vx9qpdoIGC9 z%6#t|+Ye5GAD`;5ZqPRBW1Q5(ykh!kBjdGf3)PKaJ#@3~STY=UR^meUs(!3vtaG@5 zz~iX|RnO>Q)jd>bRsS&cFfc7u^_4>kvyoYiLE6ALXCOO`QMecvYPm5E*92UXa81RP zg=-qFTwENZ%Wq>;Fc1<2gf*e|E;0qI14!zV_^oPv3aUCr@4S>PheZ`-I1C zDBpc}@81V|{#bTno8vL_9{-x$mj@nr_w~akxtHAX)Zq52buUj$zbGN;`g1pJ`p2WE z+&!TDsl!=+a&3&+Ui0FezMC3ePrbLI_>Cvs{ny{ue{1TEmu^4drg0-)`DOV9Bkq0S zs=4>voAS?tTdx?k6|x?wI+=k|X_ZeQ)0#FC8qOymMlD(&@vihrRS= z=khAgHJd&gI_B;cwnQXKw6e*Ra0a{fF3hy`2{&RD5*Kh%jIy*#I5m2v&Mrzg5kedO3N>#n`fbMm}z z9^EwkyGx&Z@0QhvN|RPK-92Dp%iFJPoxb|~OHcuB$Mq1d=W)G*>kC{ahN?7NIk*<$ zD#x`B*V(wPz;!FG2XQ@%>(96jq1=D;kpyo zA8@^b>qA_8n4EwLJ^~kyx>|s1C9czPosa7mxbDXF6s|XMeS+&hxZG%*V{pyDRfy{p zTur#n#dQs?9k?FB^&+l!aealWAKLU#T)DV-ZxVz0%li~$5ASv`i{y`Y-0U6rxJX!B zJ|~N7>6n7?$7cv+aXCj=Tumg4%ca8N$`n~#;1XS2mLQ9Z9Kz!23~k{`4Q%0>j}NfxNU4YZU~w~mu+*Lau((%1SX}pEKrRA_F5X;`#XBuwaquOJBeAgf zV4p0msERJGfRe>!-myUZc!x(8?+!(Z4$y*8X&8jx7H{6S%^ib#0Q zX~^PiTUdOQN)~4p!s6XHS-e3MU3|Jq);*9C79YNn#pkhN3s(fl;_`q<@ji_#-n0pe zYY1dk>a)vvXY=zV&QTwSzH_zDK2P{#nml|k!#dsaUop-a&?$2E*eWft}M}F-tU6N zH75zLwwu6*8;3-gtJ@T|>q^T9MdHIHUTWrguY~9QD_Ojm6&4r4l$4GPo@zy#EG~(Q zF0M^87OtFt#Z_ww&sz-&b2UR)T%IS3k0m6PXGnqau3x0Ma!DyJC`&ASU{4kwKy?SX}-ii>rhZaHf?rT9ciOyw3HvUmq00r`-IEUw~+6d#V0#V6%rDp%sk z;__GZk4}?H42X*pnjKO{i?NcY1ulG8L{0Y1U?a=B><2R+E=FAljA&EHxX5IcH= zw{HGnAAddktsDE^!dv(5y@mH7ANcDnymjl{TX^fXdOmd6a1*bTh5SRep?*)Ezf7AAk74$|u9;a$gveKfqCZUcXBmmztNwUXGm8@gdKMH-rkq-|Y zg}w!l`}I-itB2fHkz;wNpOxPE=cycf4t-6GaW2|~&GwyZ0RF2oLrB|y<9(<0)|RZg z#;W>uoSF0Ah`;xjD*0ZRdf%n{ovW+@^*V9uf5p;}oXYa^?e+hT8GUD%dcp61FvED* z*MFtdde5%tFQj%?F&ta-lTXX7TUz=*mdc(lvi|>-!vC?l=1u&`2D#q)4lGiy2T3OiK=EX*PO*1?(}F}mu*CE&)KN}UFnk5BIM z>yK;**cXF zvM_=DpmtfI^h=1~LDu3aO~J?zzjY`d#4vGKqEGCzi0%{lERH(UNfY_S^Klj&+$u|W zFo`9EGcYWtIzLMjJcf&>Xo12+g%r;%)l~js(S@0Kk3+H`0=7EA3QkP@gXdL&MA~ZV z)tCtaSr+|lCitODtxQnoD})@zq}7C#ggS`@d=zAqQ;*<*M2FQHp7o<+$zP$5+_5Ni zI7>Lo>N@4L7?E7OIM9TXzgjkeMuMYQ3lF4M3|$F zQ{3_Z!5)>ISQf*aRaEIj(>9B%7HWA2To2bUR|kC7Y&WwHfa` z)|v99+5aok_6T0Y${A>mj*l5V*gV0}W{!5=X-;y)EE;Hzb!<0_jyK0Tzc7z=#LP-D zud%`Ze%qbq)wb>CvCiYo(GKT7%wsp0S@X@o4riNbeqj#73uWh;gYB(tW*l86UDw#` z9ox-xdwiQY4=S#$?Tpf+<@mKpb$(3#zMnh7_-=B zX2u_H8ragMaGyC%NQL{%$wC5S6HMc2Gb#Rym>k}2-HxK0h}Fhxfw&z`zg*}GfVh`Q z=VCSe+km*YO|J%KfId~|Qs8LN1wzjg|CvCBpCbOFgdQaRZXo01B00leYf50>^>hDs&xi0_0B;xws7Qn70MU^qe95b%LdWg+S^( zM(AuH;~gt}e$SNgaIu(j-(dtH{W%c##Pj%aAN9WjWV-muALZ@=Qf{a4ZxsHe!oN`X z9Y7EC)B+jrYT$UJZz+&^<^ZWDL+ErM(m!vI@DqWImv?_GpGVLNspoDW_1pwx_{#;) z7CaqDJ*Np>4jha4mI}Q9h@wbE9iX0h1wf1$u311lICFV{cs}ex9pwGL%L7Dr#qHV3 zAH6fbKZtcH^#D#G{<*e-MpbiMB-km~A=oTfD_9{&`xvf7us|?Rkap4EE0`hZ5ri$u z-!14A1Sq}-h_wJ0<*-7o(t*WL7v->ar|iedn#+lLfKkbH1o@4A+jR(t5zciG2wBGg z!9AMq;0Mm&@7N`{L$FJ5n_wpp`RnKaG9Ar8v~yR5@XLi?0z`Xu{3A#g<2ejO{cs%uGX8_YKcLaIU-)~4zXynV;o2?yUBcf1MAo>v zguhMrTY<BlCH+Xa1svjsC?7xj7sNsvA$^d7-3 z!A`*n!8}2aAV7t`0+~QP-ysuRa9F<*p+6A@#|Qdb>ySk(RM6JC<89(^tut;Ae`{UQ zCjLGkf3FB_ts9OP+FB>v&ca56XCd*oPiX5q&_jgoM4|D=4HuNJU>N*%3%yt9BFHD= z+9mO`+()7!yCwV*$dhIz;IC6?r_iku{(yv^1b_Sme{&<~ui+Ew-x)#wCW7ujr4N0zbL~0 zPy{_Vf;RlTC-K(=+Hf8u&P&6=wtjW`T7HqQwA4S=k7K8U--a{%*5@MhR9PL8sn2!f zjT*icCxHuB_?97T*t|D%0^5BoTzF(MYu3jGTGLoL-K7u7Ue3kQA&M84`MMLcRG&EC zhq4~&U!p#lXZU?9)bbirs!R*xC=-r0^;N;6m5w%qI*%tL2aS52g0Vapuf$(eSX$O= zZgI+~0M98t-_GT_HD2g!0WO1Y2h^R%ppbFcb1?<>lIWPM2o+en|$M>dQ;g>hDy)v4fQ zuRbFG|K%*UJ{3lulGaDu5RL55V5}~3Db3P$^wc@na1tLsCOa!Mz}enuGn9BmyjAODg+ni=G+{u(@1<`)`yRtK4wlg43&+h0 zOo$B+F8nYpGj_`ut{4&jZpqP%PKLqHqB#}dg?kY7^ZR*}uMmL9@3UJzSIYdr(l-{n z_-4{G*66fkh|)Hyc_O{07x>D2%BlWs`+wN`68Nf$>;HT6mb~nb01}qKBLoP0SVe?3 z0Rk@=AVNS~FofhmQbQ86u(T>5qNEXvwfaM=mbTj3RxPcyqAe{hRoeP%Y29e6l`dA? z5nGpEwfw)|nKSp@_wpW#?eACn|2UsF@60)K=FD>E&YhV%_Z-(eg#><($~r##NoR_p z_{^WkYh#N;OK%(Oy~oHqEb>fK)Qh|UCC+mhl&BMV*g~prqEY(z`W_K^oCndh#H7}* z&vlIcH|2{!Bl)T})<3pH;W#N3kr_%A| zqm~T1BN|u-q~X{>Kg3ZvC%BDq1E<_VLDdx$f6Pmyb%08yni%tE*w*M#(_=V&oM{`q`4|Hf*}YxrFj+R<3M~tX21KjJ$d| z=ujuA4iAo#=G=CgZpz2DBPG6kk7Hd-cZpfQ6>7W!*F%b)uzWCv0ZTpI<%J7$`du1W z`^QKi3gYBJPjh3Wn)e38bt~Utkyj|4qn-<>SeH;9dkxv*>zgU{D-ju2kCQ+YB$TJh z*HTj(FRw!639ueNNqOq+2l9-U*CK+<^XwHGoA4zrhG%eqX!5*a59p&#B}hp zs*j`gEqEw$IH-iD!y`_4)|>Z;8M_fYX~)~52%hzKmN%+*XmFnDAHm_H# zuv#B#I-X2d0lXSq3TOqNen1+^=mB;`@>-h?fgJm)l! zn=b?;uKwnwT{1b*69XbBNqf(lBi4&fkl*46jP=lVWHLEuC-bgdi8>BnOxc!%J6|Y0 z2m2vai^E%9U2!z0$NX*hE8A4s`E6yqzDtSUQSFfAMuiPOxkfqcrT{A91=BQyWfaS+jma1u%E)IA89nn=f z`UA8@MHj{ryhuIvbl2jkNb)9VD95ZK{GC-C?tBa};jXhn;VzwVS8lj#dXI3Yx5xRV z7rJDJyDkgGpc`Y*Ew7eDn`+-K>OqZU3y5^w>(m!8$or0CF}^BU*+p0lY1Ah)qzzx=j>aRGh%BA&QB5+ z3k(Si0*1ThB3m?9mMUadTDWujyZ<14dcYKJ>j6cW{4hqj@b>FfvhCX|k-Bsb2TZh| z!^*R_;jQ~}uDC%JXDjmxvp8FiC?U8eEG7wu;|YgI*gmTWaR(8UZd5k@wQ!fn*{+0~ z5opg0ckN}Vq-D0|A)9$!y$**vuMemkXNAIDPDOCVb5M5lFMW}(*IDBVcTN5WhKX?J zLyYTuOo=P+e6*tT9Ypa(rRl-%NDaFvShW?pjyHh6ia?;E>t5!nQ|(2niq8L0nW<8! zYIXGr=;*Jh==W6gc2+YC1t8(h*@d|3cDSoN5bmrf#GkiN^IztOD?j#=iZkzG1Ls`+ zG7?JT>xMva`F=C@@^rf@TfeO`R840pKDSxxU#{o9H_(S?A|9 z{oixkaiN__^)PUoCejAfU}^^wZnG^z!zt6m9#37QN%k+M!B{2E`^?->24h5#Ru~6q zT73>welLc(I4M-t5~!s`|JP0}`DAevRdWuaX5H?JGC?zK zGI$J}9)m>@M;`j6+m*NxS2&)3nZza9(_++S_#*MdjWg?UgP#a;u83PueLP5BvtDMH z?oDaOWdV(w{}2N1s%6W3^;5#fxh03$P4KKsJ-pkUYB@_LPAMs#Hnn{Gl+S2GVKeIL zE}c+pt({a%`e!~lR3jXE~B%-v-cxqqfctD zE~IO1_OW@g4{1Toau(+wtuKvCv7%?;t&fd;HUF%!C%{a5nt5&Gs&wbKtOGC%ZBRuNF!clifj<; zB6u~@98XVD(BmyqmLGo!Q(ZlI!iSL>+X`4%Nz18W`FM7TeAmi$ zj-D<+`r2(9uL~H;N*#eifNM8_tl}Dlrr(qCbg7CnXo{>}+({%wH!wvg$1z4V!C|SI zCqa`#0<%jd2b@?|&SRZ@o!1~QIm8RElhv?L0BGWcZm2*M$po7m(qhdM{l8wKjyfz$ zqLDh3%2gm-l|TqK!4fHjtyBnUHu)dGbsij#)6?13*(P|SkYGP*+hqm`IHE4p38Meg zg`Z|T=xpbGg~svE!~JwoDb<<~{Xda$C}W)oZ)v)lhr&w|U(_O$zq>i7RAbI5;Fv5D z+f8YX3oLA zGl=LSEm|{;aOVS^TN(Be>|~6JwE_i&hBTQqMqA6W*5gH?zDszTo%ZXRf_sU_VRL-Ipfr9n7?$}*1XH&m08;whfcL@sVa_G}34_3#OU7G3 ze#)3LmZkScd7ok!8vin80pX`5{xj>-$3nJB4s$N)Q-JVh_rsh^;7bVHLPVK!2@FI* zCd2!cIhVkKShQA(=~w1l0{n1@r55z+SoBt)Do(V5=?$oeY&Z0|$(-w*FA@%=YIikJvU{Hg(7PIcRwl2l_frUV!l%^2Jixhqb|Cn5qEt8EhaVa} zLX7I>`#g=%Z;4Uee4l3#dV!cyH}9o!z8i>+@p6CvEAXiUecuG|1-!omcnCgaikD^Q zcTBjD+#0hNaQ;VIaL<^j`Q02<&$0P#c~88UpOh=};S;{yqXD(XrB@Haa~+ zdRRKuMtk`Y13x&+4D}@lW)A2>!(>$AmPz&9eg0xFrM}xc1QE}Gl<}62O5eNzRW2{6 zX+1Ni5%BYcKz3U&wE_W1u+n(r1hRwClJbi=s)fs@RTD3pcNVa$tbXqRq+mOCC_MGO z_4oMKf;3<{1}xIc07=iMz9|xj41C#*yyiln+g~t~5E9ewgv9=y^!pXCDZjtR`rT zhKJwPY2Gu?QV)>753Ic{;g|tfrJyy`u$c*(y|f$KhMQ;(Raz>~1-?i&bkxv! z$c(LUm}MxktDH6%k#cQtEan-WL27s@FzGo6YdL4IqJvSBOHEA%zeXt|`PO69Js{3w z`hq&-HIhk2{R6aRq!l)RHfk`6w1MbQqHsfv@GVXz)6tHq2}UJo0>fsWmiE$%z^t=-P%+Dj(_i+S6o}7RgmOV7bW(Um3Of+Bz%-~Ek(++Ta z{tHqQ4cY+?(XR=L&(<<>3(K=I*+0kduF5=0dDO#K;u##R6_u8|Y6a9?E1>RL z0d?03sMLxb)&mr^VmD(tSIqvebD0zIaU%AqzG9&ppb;bnM?qbL#>ix#&& z{fED zZwSuOn7HAm2|D5?Pu|DOV;=IDFL{_YA|HLCHoEuTJ!g(a9A~{uPx(fsJ3XShrDt0j z9xR9W-LN?es?PekmG&|{<+GcxN^BYwSzQlQMV*`D$%!C*EjApBtX zq3~2DOQo|^o=b(dR1ixgw>Q4@&GA%>OU1WTCQF66tRI!$QgJPn;8L+ImCsV~ES2L@ z!7P>FzWnyFb}GcBGF~d!eFZob*HQ`Zs|ZthE|uF-(JmF>Qc*1x(o(4}mF-dq?`>#9 z&Z2(?{~Y`gcn>Ol8vF?O>F`V88{oIVbI$k;_#eV^n#fror+@)8Qh#_Z48ri|!*e#b z8J^!6ejWZn_$T3Cgy%Q>S?Js$_=)gy;Ln9`gx?6ySul#C=FWwHaGW2J#K{sb9UN!k zByn0UB+m3m;>7VZ^59!(A#uJWvNnT-T%1!&LJo^0af}oa7X&1+fkYMud;CC5;N5+{r#aa0!)F9}Is zk0#_qlO)bYh3g^V;`%^HUl9`50z%@{lnFUoEd+$)>=q2_u>vm6d!@vDu#%ZiSs`($ zKoYx#h~x~FB+grf#K$yAoQnyGk4BRCoD^BN0cFO;@JP$0j4*T9Co^XiLNdx=`9zZR zTpW{&>*YdtI4%lF;wo6UxEdgdO9LTseMJ%eixYT} z#T6AvTx3ZhxV|KbOHLt~5s73v_o&xh|08FoJu;)&&|G4uhj{e7v znRasYGoH1@f3>6iQD2k_G{C2x*8FBC+2L2sqxm@XJYV?OuF4rbh_kkMuR*usMdtJP zbHXR($KcjoKjb6eTYD0GuYzy6@JV}jlgDRdFIE(<0>0#+E+EVu4x6QDd~|VFYuu=wW0`bOH^>@i2ayb7#;o=EbTKomz)X z3P;fxcwI{6Fz&gO$^nb&g~PyT61&dSLMkLUs^>5{n&no(20UKVABrRAjgS^IA0yQL z#$8Lrs|1$2s$7gYNW= zNvGuMlo>X(pAClMGTW1}j53cxV#=_d2woWYv#-cg2pwrR2l{!|gJ*ckh+e+29lkM; zS?piu%TlldaGr0tzZr~7mNMREI+E^WQ7*XEH`X(B9#Y-u8;t^jbUw7AjqnVghm;CG zH>JS#6?=+ExYHk4?Mq7;(bJz2rY5)mw7&&brF)jl^Nd3Am&{Aaz~jrh22G9U<9x17 zu%4UW0*Lk9m`XrwM$RY)EChWtU;!X!-nitwU&j?C{E0>LK>%mN$?I*;%}{tQmAq1I={j{vdWoWVr^=<_!KQa*Kv4F!G3fF(v+7y{&Cg1WMhR_O)b|r8xsziB&B?2jzxGYlqluJA$kb42dg8~Br0Ti7$_6$@$n7=CBW4O_k z?lG)#vNs_fOQY-+fTS-2M7yf;pq{E;*n?2@LO$6c#18;ue&jz0h;a6PK+NZ|_W?ql zeAWJn5(v}f0a6|#*-lH5n3s5gz~KU^ z7m4(Tz)46WGlVoeL)a>CvB0wg77837@Lg1z{6_@-Lg1qU`8^}!>jf5}T*N~Hi4Z>| z_&$NV1a1-4**ok(dymVv0$9S{$`ZoCye?a0_qLVV- ztV!}ko>_}=Z-nt??e%HF&034gR>qsP)lWq}FQRgizgb)TS<;)eR4USDqodJi51rD9 zh4S$o0^L}NH{af00~+~v3jcD!4+y>&cn;dY=$`lv!Z{dNiY5M##P35n=pbHsh2ZZU z5J)qQFM8ZK-%PvlopE@396miR{kd`Rm!o`cc{j!3%i?gp5p?sv6o*qcqdPta^>pKX zb-yvyv#R3KpB0z>`8eDY$3Hp_Poiu`RQx81jnO(4)hZNKY9$PgBBtXgS8`81jH05# zY9~RwVx<`N#7dPCup}yD3|n$#N{QH_;$jpj#jxtKMLDT0Y@u7hR-7I%nH1_%-)++H z$K!Ew(}}T)m|iIrGYK3o=#ifQ?#+|`W&D-1bI@* zr&>FjO4~Lx)z(9qRdYvMA*QfFfKkBK2G_oMHLq6@lTyj zW%_@`=}=K_a%zgPlAMb@wS%!qP6B_J1Fvk1Zf8!>E5}Yv8Z%)sqY|Fv9XnwX<9J>* z_UP}}2@?}4l>+lWdC>Sn>7|-5_4KJzLv&HSREuiXQDeC}#XGiHKOX*By;O@iNrN+b zqzukSG5x9PrJ_+MIwSAN^I=nm1h2J;z&MxQorHRyj2zCD=r;1Dnac^;p@=*jfKIIU zsRa{KI?ie7j$mPe$D;LxYP}7QM=qwoQ77_}>dnFdPUWQetZkU&Qr_qlYHg$=UH_(h z$@FF|6M2|cDR)rhHLh^x28qg-R8P|ikr&e9tV1GC&~8A=msHQyrnvHP!N~fyuSizD z6X>}Tc_mU3=P0(|-LJ2s@=0+(?@5f_u>&G+g`}@U`8a*N1O%C;N{j~X`Xs~(f0B{N!U%s%&+bIe6OZ(lq!m>)-f+Z~FORAUZko1PPgntDVbZ(cd ze981u9i&nhIMe@@VIj@yd*{kz*H_gysa~o>aq?C`UYv{T&&StGby(!REbUm|U0zI; z9X&Zo^iusgq)T%QH$L5>(Hgq`6UwVeqL=Dd!*t4fCDqvzT#|G!p}b^zsjeKM6E#Y| z_D|OM_f}%PbsTxg^imz2q7#+KLZfx2#$Eq$6qW8RaRXp|&P&wzfOj2HzvPy|HPR-!kH*(kkPlUGA( zMHep_WIjK;^N*#+o3$lun*4uR?jy zrAJVer<4dPkeW=Zxv0t!UFt251mm?uZFw~u?p(54>&beA++CBO!@hJ>PZsoN-KpvS z4La3hIogpPGxh1}eLv!m(VlSU@1=z%-wo2ynb3_iivJa(0$pVXpxr1Bdad@0nxnEk zP;j-+(R1_w8(69TaxxJWOBG$?=XFh=IIq(?QItVJZIV_LMmh=|MsE5#{P+)9_|)T3 zDTaD9b@lR~45Kqg9i5XidiE%z#;nWh33qj%^6iB|lq}HMt578#|908 z$CpyVMO9%>qR5VlFWeSe_bUm~h$QTbC+u+(!ng&t?^cumLU*W834&X9Avpebj_mD9 zu&57XF{MeB`mk_UuY*t@Mh#<9NvCRPxp(k@MX}4fDp>vNb%B%uu@?}d6o{ctk12tU z0|oXc5J zN6{FY3~liz%qn89tn|p}HQjopV%^IWIx@E7ObNmK`QzL>D6Q(JrV*72zk|#}YwSCK zVA=RTJN(-ZF;4C^W-ZNRRP~|x+^YIaY0(x}d)2Kbs`^wGRL0mf`7?-!zteDMy@9BD zokrbxZ8@f?A9mQG+ld{LL%K4FZsQ}Qv#=cZ^#ux_4()u;?bp_8ba^# zrpDl%y<+j?@gDUc8UOb3mv|GIeeRhX+9PdRu|-S6`beWT0yB+EKWfi|E>xu#A_vFajPyVf z(fFEVn!GX*wrR~xjT!O_KLRlRx*y@dNdwou8^BQ+b z(ec43qtQdLHMdfc1?;4(X_;olSpBeET|kF>Zn*AZ3sdhW9m(ksJRSlyTj9wbkoGMziraRKzypG5sClnjl zrY3=)VN`Ov5;x)s$Mc)hckXvN+^pCNdCW6DU$YPG5_#Mp_ei)!`USZzW}nz3xK0&V(m&7FQ>QA zH^uRr`(s-ieQ*+fb05X?hma>8hmIR1>8}&H+y-?w=?sa#+Z7*hQd`#968|fS=l+OW z{)I{6nFo2Vk$!lSz`F$AC-4gNC*Cvb;pxg`-~3ejQ;F7(IWksn<|M0R(j@B5jHfqD zDn``QBvB2MCRuC8D@B~v+6hL0(ZLxn%g__(=7jD}5!2v^Q+hms9#4U1Nr5?#F@53U zYGYZuy3LHfpD3^zbbGn~LqPtI^nAL9g;Un^iLs?JI{BD6cTp)1`?^Sr=FUt&ieswi zfZD~HrrL-@=K#5ckHi?t96Zh1|G&{K3Ju3F(anE&+V}>>123$ydSJV+j6>81c$~xE z|Gz37t;WHYwn*#R2<)a+8(m)i5{09y8f#X!S&^3J+Is0qWh$&rZ^Y{*bEztG%JZ*Q zGzvRAa~c|<|IAv~TGO&v{a3M1L|U6_WLj_WTMG33cFyX$pR+PO#x*^++A!nBNqsem zR(gej=o{!`4Wp|gvuawXS2bqd96NHkrqL!sP1{axPThT=$Ne2MGjvU~U9TQKR&DyR zYSWLU{-B0{bf{mW2VpI2aLG*~@iPF0kt1xJpAOkmp%R1+&$mJvI#KIL%ZqdD>nBv96Acsj)Ph7v4G|OWPo+NeLKHlv;R@JK<9quf^Z91j=nqRObl_VE7u7 z7r?MAaagJhw~?Np04D18xB?jbn?g@jdW1`^3m8I+Yzn4XYxhu%FrtLj0Y>&?LP^kS zhUH<0rRo_8_LU4!=p_;~c^;=8cR7O2HbIlxwz}!jHQDcyR32;5bzXy*bRO%1?z)9d z%3GY2%dYbpB$~3idrDJ@&pY)qS4>1f*^fkBNJO? zDkQ;Zsw$)Ncx{v`Dnf@$)OLqui3!e6Cei38toMmIRmIq`J;YRdtI5qp7Mg zL_p9H)UA`4D1OaKhl^-})oF&*?IMno5u!pMTG0e=5Ry`WZ4l~9qqD7U^oe3 zai!DUYNsb4$Bd}5>A!3Qo*9=0q%5rqTU21^?4Z$w-NWd@&W-BA?&;{l?v;a< z?X7iTpQd$T_lfGl&T|(EU%|R`VfTv`4@XerbYVkX726}PCq6-s(}g|ItqXgQTNiey zyYgw#g*{j+vexRS3u4tzQ|q-~>%pcX@51gvl#*+lhDb^GWNQ(_3{#B$?BQ-nRF_?p zfu50z0dT}5E1E+Reb+{0jB4#M%vI+(HlAU4CL>hg#&wUAm||0Gy#CRuv?plA+EzW@ zdgw7WpoZvV8nw;a(-f~A@Z5%r{fEsdp8Ei|P4N5-;Hn889!~3=V1XmY^H+p77kT`U zd1aC1{V$+)9uTjm!cz!ndrrrHif6H+U5x*L=X3ZEdcKbT0haG8NI|W6DTDk^06-1* zApoD(_X9-ynZX?2HxPUoLGM5xGdN0WR;v9T;Cj1PFfa`PD9cQX;J%<)PrINZkhTd( z0Nx$~-P-?!Kr>^Y*%(dy4WLk#fubt(*9bD5KMklS{du5F=}#wWWn`n>mZgmd21X+Q zQrek-=fkH#>v!4;gFx$d<|ZK250!Stva~w@sYfCWTE8<7An+w3XV#~E8xIkc99qBA z?gMf+d>XWVr}sr63gOd~*6(zF{ry9tO6zy}{#f)mpsZ8cI8}+)V^KdU;EK%ys`6A? zztcw=RB8QApKDO9^*bXUB@Lub4yF%7pbS1$YyI|BB0Lh_pPID^wi3Upi zRJ5I9XSD+4d;x!UFvxGiAB4}k3V%JQIM2$ZTz(^tl3Pkr)@{Ig+M(Px0ROCGa{mU% zYY)w*xqOuCaAq#GBq}A`LxQ<{j$aNBg{M}pte3&n+dl0bfYaW`pOwYF;Y$TWF1)9< zPoC%8yuJv|CQ5bRd8G)|5Tm;9ymJt0Bt~`LdDN@Dj+j#S?OTZ8AfjV@=K+j@Pao)? z2;d8-4og*qo+-Wva^_v&sZdF3Nu7~(6+mD668r~qKZpOX!=nJX-*mzOXp{hw8t~l@ z@Hl)%UO$2X8Ns~Y13n7D8PxHeci3Rm@tt?nVAS!Q_pZUH<2&yk27^l4U>>zaDk;?Q zo!84?O2>EB2%s6G@E6GF7wzt!1c6;C1B$)VRwKavngPY$X;fbQ9mYVhciL72*u^ra z*xN@93$x*~Lj4GWSp)LU0{jw5RP3F%!eC0Vx9^)k&xX%@%TEQC-hjH*FGJARGwVTs zj9vH(rp#B^WK~eIOi#&!J*(AKP~?u%T}53`#ezz^{I@wl+^$6>xgIxQ-aKJYg}ATsDVH*&~@SpBK` z*qsm()6RvU0siz=3fPoC!0&}V9RQz>^D{1=x{;aoZ9tWeArJv`=7Wgrer=fyX!efBE|`*Yq0hU)CnMnOrJO(Vuz|m?$o>Y%QQ40J z>n6LelD!#GN_Jn$F7RNv#j)Psm!q~7GFg}fkiGOD$Z9jQ8X{Ry(M~k0&A^{9nMFe62#0#w>#DrQb!`478?y7ScWtllF)^?U0`6+p5g7SZ1rxh%hT2d+7%d zHG`rS*!EC+iBpK7c9l~Ea|IWuigWN%6Yl+g0HaRyqCCEm<=3yHDMfMnb2_G_mRSH_84Vzi) z*h^=C-2-VZcB{}to287sGy*n$k>YPcn^19ov`yXs=Cnxx6vh97MQl@Xq{@IBcP9JLITx78&nJJBJFw2;Ypt5bqvbX(OzTN1R8Vf%u^UJZ8DLQ!@rWTNkM*t)>>b=K`ln?+9A8?CV> z%@3Wl`;qo}HbQ~T+b?-nw#J!6k2{HNTx<_+J|s?_u-F5`P-f<6jWwyCb)=jHDQ8m3 z5L?YBlb3&-N%X3d_zEOmt`nc22xh)&jWemuRNP+rGf24>Qv9jMsfd;JD_r;Bo8bKo zc(dL{Ap1Gyon@m1eVO=s52!EK*M}{NzSv`sKMf#YkLU27RRnUs5g-)#FGx2NF+Zk7 zmYr_qVnhRWx|xm<&9u`wBkMwHqCq>Ild{hXnrEk*JA$zx+sfL3s0nt~e=)l=kzL4t zL7tfqk;lq2QzBx4ybHl|&`8hwlncwVvUvZF=d;T98d$DJWOkYkQ?do;s!Zl`DDk0jUY=z&Eez zT{(ZpA4=amCs_LFF+JWKw(s_P-g@u4p3P4^cwN>bAN1_;(g)w$kUF>5gtl|4`t`n^ z)&L&;+C5j$TEN>q#{T7BEMeB$7c?zXAMF=r9$JhglQ&78Tl9^ z&k^9c!ZS+p{e$3YUeyWzs{u zavIl-AGqn$-qE0PvjxMPx~6O&mWl1ax-oy|$$GJDY%k`?c41zoe(wC3QG9;9M-30} zTjtw~jBx0-D5D?HXL;2(?Yhjo#*E_-%1e*zoN*u*ValOgp8DpO?+gzBq*V!y1;h&g zhry44r!@y!f}q8SS5gNrWBqAOf>tGVef{U}(fR}}Nzn2Htx?c&1T9P$3lX#?G5zs5 zPyS)sE2q&aMen{-=hC7Ctx3>21+7OM8Ie1VmLq7zf|ev`!GcyPXu*P(DQMZkGiO{D zEl<#b1+7ugQU$F~&}s#(RM7eatyvtxb$JWkkA~3tn9M|Y1aplg-1;=$iN!(lz5*O+uaoPoFx>J6+34_;&ezzyCmZW0VN?fe3+0sMw0PP zA#sO65+0JWd;^?9;+7>7awk&~a_@{J?x_hWUr4-gk|TFu$i?j#A#qkl5~pZFQu`So zab7I4IK3km=X*lp{E8$_wj`n2{Q!xxS>fUwiCmm82^VKlByqVQT->@Mi5pqM#f?3Z zH~|wbPAo~{d{ao=AtQ;KX3{v1NJ4H3iY%_f$;CZhNyx2NlDLZ}TwJA+#4S7F;@%@k z+L^f^@o>@QLC(RV?h!04B0O(IO=nqxnpEB$c)rNn|==5~cqQ zn-8u~gKp`~w!{X++ZHzZ;+)xf;KCr0e6umYH(7Aq(wm)tWbtMTU?&nMY9F((=LnZ5 zf3xgPCf}^Hlf|0_HlJv4-O7I_p2BpTJ;Qa2H|ykN@n!{_EZ!_~lf|3mt8~?F`I{$t zynPW~Z$6n1{D9BoW5-NCbnJV$?10P$-y6cmeyW_Y$02;9L2QIi`=OS{{;Hheo4=)- z-Hw~Vuuu4<|6+<6YhQ$NAA$dg@Ub5&XZRAx-cAN@1i z|5ghgZaXm_n`nvJb6Gt5thRVlE@zCLIJT|sqH*pvQ_A+neQYPDb=>hYbeir zJqvLdiP^n$$fVHULrUJrddeh~H8L<9u8-n0+o_ncL7p+DY@F|QAqw+CRa>0V28PO7 zUcbwljVIfNJ(~)cvkAbQjDNY$rVW=~hIVHxEv2xR7{18^YYJ@2oYoGzF9&^nVH_sa zA24CMret~tq^Zl?+v)OL<^$m>m^+_p#-I&XL zeQx#n0wLcJn4Tzrfg0a_U!ng8z6p?DxytuBF#B%xzj?0D{*ur73q)0@{Cxhqeb#Sa zP3MO`zkmNS-$+#?O0@l+AT8vy1n{~)J!NPwU%r2t&*Nvv^6c6OYdM2Ff3!d{=5hw6 z4D00^-r*bOGMD4^clbP>4JjjV{1S<1D@UgqsEy^^y75-uaL=D0W*7)VVJ^q(5BvqZ zUt|Wwp1&XlHgZ6H%jZd1u8ritqR!5Z`+fPImzh0cQ_yPKYR>f==XqYSU^j<>*R4BI z^n<2m*F$XA#+2!{FU9jWD{w1p0OhcT7o!nP4d*#Eyh_*b?-ocm2l{$8pvm1e91ep( zUbM5v@A))L4tcJU$}xddZmX)?`yjY0momI3sv`D&P?b%pDwo?7<*v#Hm(BBRu~8KU zuC(v;W#XE_K2XSuw)A^$+BnuXK7F1KCcZrv&hw4;6rdF29MW=V0b2n_ zK+Yn-k=O*|0SV0e$IJwz+|vQc-w$vipdSz;L+@uX*CM=GU>6|yE)l#La4O`~2p$#~ z0>t+NV_r&C>)RP$2c(=E0a>1{fJ0G^S%AoI2F-diek35vM_cgB=RMr#(;(+5K&IOd zh>e5%y?~j3w*eM`{|kU)!Pg1M`m_TweFTu{mI97I{1iaS9|y?#4+A8BKS1(-fH9Bt ze+iJ~`LV#20w)L@3`qW5!F_;ihj%c(G2L?lzX!;6;A{Nx$af{+5J2v06awY|lHUeo zIbQ=Z6m-59WV?J7knub4$8ui;$b7je#CD-Q5T=_8h$hdU4v4199|FjB=>y1i;ryHR zd=H}`>vt3oq~3=B*q}*mi{Q#|Fc5h2#BWc zeI6j&VF4iP&$TJjjTSfnkn(y9{vI9z%>O7L)BPEc?eQES)^B6>12Uf<15(cS0GZFF zfaJdzkohbJWILPA9&M!Jx%1BWbcx>qh$d0?k_a~mzFuI9zZ`1~sb zh5?zrMBr3`#RBsHF%J0o_7FdR0DtJe+3(`Ilg_t`q#p)Ef6hKAboM*a_XDCIWV64K zf49)@07QSu-U-+XaEHWillV=5JwabD^cJDl1LAE=_6ngd6M7|J575IxFA@4wz}}!2 z3%y9_AwaZ!cAn6KLJt69!!+9x`nzaX*5e2uhOq3zfUL(Mp&tZ9Kh8cN^!-BL2Z$jj zdymj}3;hm2^y}z%K|~A#j<%KcnTy z_pHDT0%^~l^n8K61s0*5Ne>BJfr~)AL|{lDI}z!J@JF~$;4Xoi1g;QRA}}P-5_m}R z*(Y$9z)b>I2rLm85(q#M{;5*#gMhSCW*qIe5uYmrFWQ56r{FNBiTmx?^Ihs|U0j5mAMw7Zy% zdunG;HJ3%}j4gs6 z!=OTZy@>~&1AK+xLBaX;1|7#a$}1KeDEo)wFgC~F^L77q;<>--=6@H68=oGR{_eQ= z7vs|Nh^jmN9+b_E-yVlwi~6|ZACF7FIWE5k;`mqN`nl8pCQkl!aq@m17ypyE^f$%j zcV}FFcg4x$J79PI|A>pPkBd)YQS4uAN3L?w!piE3^2JrvW)H!=FOk4}+|trT<)t$# z$`+q&f_Qs#G4d1Jn@hmrHv4wGlFq6qUA(wD#)w>uG%-sT6_=bffd;ecbu~~ns!gD+ zXWcog#_AGO0yg%bNy9PJ*BGg3 z1Gc(xW0q<^K{s{!v4+nz^0C$0st4aSGc6StTD0%%1ex~LdZ>IuP}%?r4@pQ!@hu3k9ATqSG8Ej zaE(Z3a7=x;r{viDsjjAeYjS8;U0qeStjb_f80P#O&d9ssLVd0R3*}8JLjJ0&#e^vo zjMBx+s}wmhHMTZk0|C=B$H|o1!DU$DxTX}_fQ1)-ckxx+Gn4@>#}it>$c$u&VKUsC&mGz3rgc@3;$ zerDiu$;y|^zTi%gXZqiM$Yc9WuRCu4QyQCSBQO5`*cB)5KwSACI_`QL-@f1-BJWDM zAP2k4i>b0>@2t62wMx7_yRn73vEG$I;KFelcl{@nm(0H4Fu91ol2l74xg_aeLV3yT z3%)Z-C%RW!Y53_HpN;E*y-d1<@{-vXypxM-xZN69&(4)V6vW9pzJ0+9X6S@>NPoUM z92F#?g!0sp2Qb865AP>+swzo5X`Te4Afdcu_63)TJh{x)wv&{nkNtEn-z6e%G#_Gc zcb=rYWcCH`n4{&G@*U*Mi&z&|-{adCJRtH885xW8{re>PixfFd-tp}V?w0;hDcARq z$TQ;cc&|5MLg#)SYtotFt#7xF z40rVo=}PTWR}{vK$_~IrR@rWb4l=X{g+23?0x_6Xc3@S`h_ZdeROEPNNlT@Gr9-|O zF!k+x8?Amc=Uj?{JW8n$T5vw>I-a|qS?tC|Ddt7Fu(VoiCb6Vlllj`rX;+$~n-4RL zunQ@-|i|q6z-e_3unCa^I^yCEXYQen{l5i*<_vxGp450B|KUR zONRcJzN7l<48HC|HGYfUqq)!uTkCQBSuVlRSvePYKY@JrxbsAQon<@2UC4*o&EElZ zo3Zm)gn(n`F~q9pfwI%I0rNVR`K@VAW6=NUMDUR?}!$ZTs}?%q`sci;CLE9`hEa zgm9i8g+aE*$~zxa$;&$*VK1rZd=bs3ve!~|L17XyAKicQ(|8Mot{xo%SZ3N5)C{}{ zo>`Ssv>&3feumLPi&Gpr7s^4Mzpv!Lyy-LGkc{@ydZ2`7P`L&8ZU7&c=EFo~)LbI& z>?=VJZ{J(YPS^RmB$~|kiCtU6AnFdZwM1Rw*@fupTgeOaZBrFVuImGwMB(DH$LN;V zRaZmnV)AG*QY!7E3Y+63i5Jc#M&A{jR=DRErCavgRyUj zi@%jwqEJ3_Z+B|TkFYO`62c0dO0a!=o} zRnhrBypfbqPt-4q9p@I%Vf~L~*VnO}W;JP?uZ#ISp>6+Fbg4U4k7BqP5Z#XG`0fB( ze#}4_7A^0p@*zjE@>p6$=bMPyUWT#d!EjentAJ!5sn{V&8wKPonsfQn_;-u~vT?xp zQ`|VQmqP~Q=w;aYMa8<8DPl%yUXv3U$6Q>gEMKb58@8V}R%bnGNP^Mj&gb#u3Y@PE z^`Xh#Zj&Gey5s&OVQv;%jWru!NJQ^6TPvG8n(Ept?BKLxOSElqZA~L>!eIw6a!x~g zeN;iX)egII<+M10w-1XOV2Ni@WK{%8plhiR9ckLMDeg+WH{Z~-+Pra9`BBevc~d0~ z0kv63RTpV3ZxRle9sFOm9EdkiH7gsVC7y*^x1)%TNx@SvA*kOaRyCKeZo*48Z0j#k ztPBP6cwntV+T9?)|c0{N&yu7KUqn)iXt;Vnz zs_Qg*G_onOPSF=dYU(zWw)4V7Bh5>Ir45mF+Oi`rUIj1oG`X5f+IUGsZ8s9fDIs5r zlrSV1S=-Ru(WVl{TrpmJtERTSqo$ELFI-ho)7Gvl&W>sJUH4-0LdUbfbUzdLD}m1o z{Hs8oeWDv9@RI^71+Er&iNM_ge=6`-0^b+dn+svMLV*(nmIz!buub4H&2Fs_STAtB zz#RhPfq9eeyi1U6sbu!@%)V;8oMd<&BDkL4A>}mto`#<*A?0L$(9lggX2j9W^~jH- zQ+ownJl$NUp>h0=B;gN11|D;c`?c_$F6lAm#=IXe{iHNW{4|vZrb2Jk(< z1ls?ReK_YfIA!B-`i=G+Wp7JfZ!4r4<0M{j$B@D`Z8Ia0rbT>W!RA*?TxD}xLwmzo zJYrUHEZh(qyCAZccE?{Jb-K?1n z?J$;#{F@;~u+qks`Wli{N{6gWY$YMjYF^XQ+{8z5R1EEvENsOSGggd4o*h|L)6v+T zAi?-46%Fm}c%nObJBcPvNE$VM%FKq<36qdMYp#0f>(q^mQOW`oK9*A18d-zVHK@kq zW8*l{a~fLXU0cv;I|l>T{N^T@sf2ZKWtR%eFx=A%@cvCL7BG6Kq1l)+RI_|N2f;wHDAI;! z4W28wW9#sYYO3K_v0(8M7q+^!xuXRlDR7VHUZ%tm?KNlxwJjjyzS$R;HFpsfu~u_y!|H}6Jo+oq@a-_) zyuoTwGp^<)>(hGfg%Hg1!dSd!afQ#b&|8|?(6!fCvr4N>c;akp&G_-~6W}MpPqNlb z06qcu1mF{ZPXs;@_(b3nflmTH3HT)7u-d$eZ|bc2hPt{)6M9Nm2ej?d#kgnKF=sb- zpigLQbp*Fbd+UZdjSVd=Dt2xhMV(aAEzyQ_Y?3z1gq)&VYd90+A1rdsjNL(Two+8X znSGVHtu<>oEj73vs|_{__Xh4fSUARg4h-^K~%T3Dbl*Armmr*4PA4M^J^~R{(s{ttGaegowc~ELTRkQ z2R@CMY2h*2z==NFT!&O!Vzz~Oms$@rHLtVk8dj}xS<6(%QTZ{1wK{^wZA0y%xii&6 zt__b-8hBR-_8QbXn;6_uY1P&T#szX>CbGWWJi`@Y9naV&xnU$-z2tB#d#a19-u0*= zo6SkQhgA+X=uB{?Ly{Bpg1dk|+0OHFRSSgtX(v_HK?!~kB}u3o;DK#A7_&3MX_^93 zH_MJjU=O~9(P62YD?xK+6!lPV#v$|hD3{8^^=Ab2a#+qbL0b2s zOHgPd@XaWT32x&axk}Zo&?eRUPO2(fxG!{4$;m}6g#Xl=Kt~f>bO}s-{z;X1qQ8HZ(w2?qJ10S>khO>nf3klX%C4f3ZbpH2|{H_~r)q*qs@b(s8NonN)t2%fT(?!YN^rxiNb%tNq0dsQir}JxteODl<_P_geBm#h&eaw za27~ZR7$rlX$neR3v{^kOmM10>Q?jP8Lf;pQ0Z|@SGp}#`l6O9{SFyPcaURA(`ZZw4KIKoJq{V zQInVjaV9Z`xJ_afx=msZ?QR%SOkzUyI?Y~c+mbPsD{evZtvmSVoOsj&)nY9G77)!Tnm?UA|ba96#1pNqw|+sq%zgDNSL) zu;~&-tnc6*tRBj#6oE(8M-srb!JB6W&ezC2k+PEHFXPXfQsKFah-V-EQ@~{{YLo2BgIZ+Jk%-0Hk`gj0S|gp242AfP*~S@xN)H=Qe^A&t8H-|P7u z{(T-=;ekdwJQGr_lrfNQ7a$z)wRxz&-|{F`<(?}MPVwANYq_A>!4}`t`ULKm*vOQdi;=Dg!PLpNkJkPIcIu@ddAH&3 z3gBtEUb0-xs6oCj0QkHCn}#cQ=6ix^)Gv`T#7gJG=hwJb(tW@@>7#K(f-2C`{R({= zZ@gzSHlWZWK!1R;rfYMYe*^k0bh&gf$N5bNUzRl@m_}odNRasq2>rmH1#_I4?;8Z> zIJ0OHc{F3rSeD5QXapq-<~Xw&fm}%B%=*m5=#wfr%yDL(4`e+=WYHYwBS79GqRnwq zDciM3n5E5ew#A~`fHIFPZH|)~-CXE*V$p|zsywwh&Zi8j&2b(zsF>rtA7uz+z#Qj8 z2zXHJ3~i3npM&tDprsGCQ+pwt{WuWYI}|}a=`u@vZv&**spCP(fpJ(1_BcxsUXEbu z90Yo-K*-9a;B$eZIV~kAwH8=UJCw^~glf=G}`R=Qk^!sm@>`zV}mKvoZgiv^VJ}wWu^WD zIc4yCZXnn%dKbJ50y|s~Rys3t(Sz8HgRs(>IT*;5jDeNT%wp+VL0akbE(G}vB+L!< zBM9aW$a@=*<|uQOmCg*XD@4??pt_u_vSh7RA&uo#{JE7Mk>PmgFp zcv_qqk@|e1G-##r*_1H}q;Ri3QJ$F~Ftc7GY`cFY5X$dWT#t~)&b-_ZCS|5&?f}Ai z^*R&CEkN!@wR+7gvNOMF*v`fk_^v?~LE-}jS@IA<9=reJhOqQWMacZUA$%HXX_Z_R z;4?s|IO!f{v1zcKImRHHflN0@7mx)8xq7gjz5)nG!CrmQw4U^f4BAhjRJ)`K-CvVHx>|3G|*5ZQ@}d zu-$rBus{3}JXF_t+92O;0I7l0*O_VpE_$ASU^LY<5WWlV--6aY9|7t<^KS!EhXDJm ze>;#S6Y~WipEfZ!0=WuEE@o=}TY)?eL`nNrW?KIjfUuSQyI(~pJFWlU4B=jy6a*m$ zKymCHqzIYg0r*7o|HAH(IUNX_(f_-m9+`81sBHcxGcA9aVe{F6-ucUcDJd|}mzIAK zFt(?EEaTdNsREtOxXr+Lsr@B(k)3}nFjc{MjQf(|TtVz^!&y(x2MyLh>?vS=+z$R` za1J~QOy%BTzlUIUT7C-R6yz*O$15zD~2i&y3-@#dscA-q#SZkdb-)2!gr2^3DNdF>~?6u=36|7@imb%bSnOcr8eIeftq? z%IlH$CE>`!)5psDstXI`ecgox^S`?lJ`3ow%+o+iaL9}UT%Z+z>~z^ z%R2-u&Q|Z6nM!L(+3WFVd(XiC0$h)NS*f2uaL_D9Ed#+$U4UT5Y6JuQv!mmSc}n#U zVpQsP4Wfho!Fe|Wa$?~xV0+#Uj1Ol25E|j;qv)%=feY2uKr)yr#>1ygJvK9;-(o;k zs6W6k_;UDH;RmPtzmNP2R^W6f=?#FS4@t-Rh6EyoR1oSQJzR(t>LZv*2#IODB?hOb z)0)%Zber-Ar+ZUT*um*O9p`6U!2n4+98l$B2t>e~S%oyAp9$BK!ZkQOt3k;U$tj9! zE%bP@h?f8|IkNg3xQ0TIa%K||)=WX}hp&Uvd)d5m>|u=Gi3MH+8Q8P_EO#f7ckQtSjQd4rHoVdk#?0+a%=o{Fy&$rtgh<>PIQ5B zG@Za{u7oFY5Y7!LCM%T+0)uVH;44U*x*mb-uOVa)Vqf)MgFhciH!w5xI!5(I*!JFr z;5dW^Wu|_E)aj%SVpq4qkWIHppr4%(&gjEjBlu+k&9lgGQY?RMBv0c~}l%Gf@*t^N(H8uGTL_F1- zprs_!56|0haUky5`Gjs>oEqN za>oiB4>%E?&yO>NMys2XO%wA@MSo3z6DiD6gmrRB{TEpJVsl}%dG^k2~SC@pK! zD(Cg3k8h^sO0f$ZT}R8I>u!5yGp&TuGU$)m zHaK3+8q}MA89eo}atG%=cz(_M z9Q+Y@?#krD7sJnjUkcv<&pnVE;J*R?F#OZ-FTr#7Ee8W?0sLh6F#P%OP4JuHzW~pT zp9kTegnu2LdpfjuI~;x*{CxNo@NMw?`ga%nJ@Ajh{|5doc#fNW;rYB_f8xX8G(b4+ zN|MBFN+EIoj3jOt;>MxlHU&xCvk(&Z#7N>mEeS)&iX?6i2^S}s5Myz|iC`A)G+|ad z#fVu6FC;E?nV#!jNzaXBlGeZ%!ozVxg(N_vqPzsi$LqGtRCi`77W* z5Pr6Ya>fp30{%vs>DK z&(6X>?*sNe``=;M&TU=qV-t>%#%Ab?{gB4>c%Bo7^;_y2YTKemIzKYz^^_vPe@7Qf ze%M%@cKwJnRq|3MI#m2oxvJJj>ws zrMxyGDIZ(|!P7`tznry*3Qg8TK*A$Vf8mEPW4@{?_&J3FSyxTVzbeMBo?aTa`vh+#AnlVY2tE6B# z7fBWGT2~^N2gRw9l%aimpGXf3@#VF_>f}6F(42?NUhob4lP@1xj$)RdxYaj%o^R2e zFzI;~tYj7_;_@PgpEP!caS8-VK>EU{&<0T*-z6|6Iv9=M4}4yU9p!%jh-dAszEPg^cHfyWfLXfCHw~6dFNf96zaeg! z|7Tl#{r37U^9P=WxzlAZce*gwSB#@vuz2ce0jD39JpF#yOoe&UA^u%3e!7gNP6Ne( zX=?+!e&8z#9QOHc@?-=;o{p3P+czYopqH zP{nA7ae!k3s~C3>HG2ku2Y4}jDMh{fDPfvO4PbQ(Q=?$&k$yB~FlLam(fuc2TV)a; zR%7`*T|j&YAlA$IJpqRRe+#!~A?yjh3W)vt`M(6jJa_&N0MUtie_mj%z^MYq0+PS4 z;F*A!-;Ozkk$~xF|BLYFfaLozAmi@?q!Xh>qR zK|m>~g0e;`t=eK$q^0B;7&0lXFvzs$=8)&U~Ff_Z>ge=L{_ z$bA2SPKsdW+kjYa9RIT5T*G4gsi{i;4M5ysj=vHR zx0jh*!9jTn7E3%Fp{n|w1Bmwm#*YKUQt2+#9Qw~pgBtODK-91DGdU6vX{}*^Ie^0feSk1s=o7dT7cRDrnya|HSXW(iCe=oJW{^d)ZmWDZ6-4x(Lf zDNfxFh@nOKodi^VCkeNMj`AjOnTzG^089a2i_rPJhxCEy0BT4TN`Z_?Up!`RYUN7{OfH;)@NYcxIu-vR~))ON^Po?rmpYRbX zgRn?ofxrxbDFR#*sS*Z|cj<*CiYeW|cZq~lOD!5te;zuHx-mGn zMO-QjaxcouV~*g)hr|y-WBf{#m&aFe5>FR?jxXGtyAqAU<1B=SqC+2r(egM4jZXZa z;J<`?;x7o!4YI@!3yx@o8=oDY0H^$|BHxEFdCbv@@j{tf6G z$)An-io|mq@gt!~Wc(ZlzQ&P%tt0)1NF14-PbDJpl@58E9Py7i5#YAA@7(2f8K$|_E#3ZDNx^DiS4(~ zynh)xRz8W;)l;6i@el@a(U)CSj92{&=g%ps>gsdQRwsssLZ`#QFmG(Vobi!P{ETX0 z9?>p_pTRCXVL?$&2E%;+6OIJsR<%dZfOd`(y8q;YuA5?1byc?Q+A&IarTvO*Lk+%k zQ>E|Z`5rLeD6R<9;2S(3$MRbjRzST{8=FZoYirMYUFet-@m;u(AxYjxFFV~Gmc6u6A?)z%X19%g-NqsKQsoy4CK(6<$6|@`9(^n}^VWR#an9G`BmKYG z<#v7=AeK1u^#Jw4`t;ahv^vo*(l4i-icP2`nMSnboXXM&vif?9B1Jo$lLZ^qp4yz| z;sdsL%l*9B(G_nz$bDJ=aru+;r{wy0g#E|q@6D7ov;-RA^+h|8i{(FVB_@TI4<`=Z zgY3n;s=K4lZXMIXG&l^7=?L#hIB!?S7xf=^8YibXjJzA~x2zewn8sTjq?-&?)NGgWa^J+9nuU&x_?Pl_>p$+OPcu)I zH1*@Oyr&?Kc89}JUN!P{>)*~dOegYbVC@olf_4Fs`muqX^*2l8vH$Sc4|$PC*ZNcX z;fjjSh~jY8-%63kwHF?TMZfs{mc{i1=MiClTpWkIXn&0dvUQ4INTYpiZ- zYs6Rdoce9$Bp!$9A6^(8RekQ^9{Y#-h(|*Ve{|a&^3rL<(TAgbd-g}SL*zZkO#?Wx zy2^_xvh5!W7djqJ|7Yd171{D*!Hvi7OErx6k14M^e{|oj)G7N&`wmnM|pepN4HMo?Uz&^K^{$U*`xL@Cx^VA{n1Um zNo(?g*z?|9TAtAl(}j8yCbauoH~#3-Z`Rx{tU>YEeusuBkJ;l(lz!~)dVtVZ14i+ERv-2j?n0xiH4z*34ZH{KCh0aOU7-e*fo>?*IJJ#ju0$!*ke3 z7nf|Mp-26p-xP;FgIguUTX0TSc=8aOIw?nJhv0w?u8|bw(UQ=b1ErzQis6{0(=!Ox ztsP3`AICK=(rFvq)dlClfy`mhZK;2OdmM-X`5Cf@fWz++@h1)b2Jp@MgEK(er)lC5 zM{B0_Q2y)=!G{hLhhA`aobzuhcoj3rJnd`kC<_#;#KocC`9m8I+RCxWs-!1Xpy&X+ z={<-UBwQ=aU?J=pFq*tu0w-soKZ2VMeY686Rbg->^{&bmbdQ|vc=`*y zSQQs7pwG{e}!1%W^kK|&wG+? z0!55Jv}M+3%zYn|N(HJ)+p=A2^$kky%pU=9s)&C8GK8{WHlc?jM2X`tq=E-2IF8DN zK>Cr=AYB8Cxv1(#&ihpk`Sk4z$3%?sJN!f`@mqF~Z_EC)&Gc>ohe?#By+rL&5p{9f#VeufrM~)L=gV zYTC5@mg5jw<0stonqUz?I22Iv%Wy}SZhO(1&T|Fy4DUW#c%6S>V1DJKoR^i z8IEl#TI!4Wnff{a0rNY@9XDM9HL_I6?7f!VBDAecVf$3QbmsS=YN3aX6R*%CkzTW2 z;)v9_Pp8O#2ZN6qPvDbMo44-0rYwI!Nq^4)s`Do1sQjpr_PD08o^JTjo5N zC}^8e{yknQa$7o5mV_QS2xgR(M&j?B>VJZ^6XA0WooFwjH1PozA9eu`js290ufqwS zU&%rL*Jc-8E({U{E$khg`O}c%|-&l zw9UM|FAlwgewnQLA3crTjA!+#v@qBF8-b{97_Pa_eJlVPhd|e$Hn3g5VPM-e=+K}A z0P2{U-r@xwX<##$!M2;o#?A=?Q?ko zN*U8pb*w%$2y;T8{vFuRrxnjLY|hY|?BX1~>}u1F+;|z-mN`-NU}Zb6(l|mtC_{b^ z@>-0%*)+&|gVx9&qQoxZV80w7JM%BmZ12ILp$`e)OS_P6K(}O32rinouRl76Bax9S z0pUY#FL^o(#;_m3&l?222PR61&|7tscX1g9OPVStu3~iUiXn(EWl`gFB`E(RTtLv2 zln#~>U6Nx5UE~>jHzHvNx&r3Ybk*gC{iiQDV%34EQM9VE^1;o_z*(`Sq1V-w0Y&kw zPz;ab`eN#VrNII^ETZ4P04h_o5iEXr6q^NW+c(Q- zio|MU)%^H}Fm@&X$w&M%Ze!0ye|#8Qd|-Z$0Hj@6!x3~ZZ+MWDoe_!@A||@$+k=F3 z{*&}0LBtdb{W?4>%GJhnYpDJa z))G+nWT9Q4Oz$Yl2Wq4>)}f6LBlwFd@^$p@1u&cS^PmnujNz)NjkB>ftuP6g>b!&H6bkNR8u~T37i0? zZ8`Bi6YgVrorQf(-?tYu-4}igvCxn+ExIi=Iz>)`a2Z6scJAXWnE^Ga)35WHu7YO{JqW#)5mE}jQ5TJ=qVhs!oyeoY!h3ysgX3w>OHK0EV zx^xPNvDXG3AUkorHc(Img9i6E)lKW7{pGJ3pW zlqld3q;95V*#TUYN(s!EzmO776^EWz?%fBcC_TjPRDEzx8%qy<$xAnJN$3@aDl}ol z@gM6zxa~x7zMv{nADfl_((XOhN2}4J$NHH2#gwS5C=Oxiha*xPHRv44x>Xms$TmnY zd7e;FG9)9>pRqL#ZC?^P%r>VN_i&3>!0;c}Q>xwf2JyKkwq{1LR zQl67z%Psgj4Wl!Eb`Ro*NG))Miwz|0+L=GH#~cb56;@XGF=o(KL+$&KOGY=j6dge1 z6IzVZQI6l)HkYk{{JykOMG#Y%K^MPO`0B+|f#HkS8T&`+Rqap--Ae05dM zLX@JT(CTXL??n0;0aU^A{m}YA+Lf~~{4xYVC&2w?9|VpefC8#<6nvc<4^XGh{8vDS z9Lz%^GSlVM?Nqwu?cjtM9FIfjtxOD2xF}N^F2Q=}Fsq3h5AvF@5sEs-MzPPu6@D2i zI%g(A-ZIFO#^9(HS+)6ot!M-t?#}JzMBWz_uF&4S&0t5<$Iz(9BAvk}xR!L+3*J@N z8Po*JV)Az65$*}c*hN)N&O&@k<&n?$2xU26hu!Er*w#_XAE)wIr`AAQy>V4lYkQ00Rw%Xi2@YT37O%V{?7cf$hVlwBUGMQTzQy6)Z(d;i zba;|l-QHN;TC@(k6x-V1?~PLN_8J^vHBE1Bp$E9O>F^@h3}@ilJb<*2I$-bt|64c^~N1Ht;{+KPtNP1W=S z0;MX%l?ltTwpsf#qc8`js<$vNDp9*NoNm=uw^iV!zy`QYS6f%$6l-2XQ|*GfIovog z-8k&4qqo@7>R?TMag%=a&n~Tc0FRoXqchtDJN&rm%{5e}oKeuQt>{v2FoYLB?&F!R z-KgnJjHrrLbXXRwR~~y&@Y>o1;@utE7PhWNT{Q*6ZrI^ht6gpC6i0ci)t2?D7A{dv z-^BnR$uxj^r4hM`TQgK@pfxC&*pA^_190C~6VPN+oXen>(FQJd;U_W{X1HM_WGQTH z)Le8|kL{vPFZDK;c$j37O{-|*gS(zKQBXUNITyYs#jkwi=2NvNC3YNZbU|was!sW4 zn{L6ky}Z&Ik)UyXS!**k%)%*}?p)BgA;`2*Jp)x5m>%6b4BrC!n+w#MN{?nj!E{8p z`NAaBma1{hVd{`IE@`AXV_}9nT;rOH9^aHuw1H4yAMLHJs0WQhRprny7V(SKS+ty} zZKUu-M+2AbxpiW1crBM!P$g|^_S3av<&(!If!7MWUEmJ|J|*zDz|RGa#bPawT!C{0 zHVF(0+#&F%0v{FlJAr=`cv#@O0zVL#g(prtMhToQaGt=$0#^%c6?l!nn+5I^_1muG=gb_3#3;cHU{k*uzrgtl{%3O51~Uuc}6@;p0Y)TU=$VNE;ED%(j2sVKtME z6axd#Ov6-6(>q%;Nwls-%Q}GR2@kV>(x zO_OM|GJBi(TAe<&pny3D@{Byp{>(^PPhsYZr!$rrH_ZM?lje1?e<$6HKQCq*P7PD> z#FdAWf3nbzIQY*M`UwYpq0m2b&|ACV?+|*jx_(0mPo4Zf6aFC% zIZq3Hl!N}B(DNMh{%R2rb?%^>am^{;jDODhG2@z(-&`l0{AQeU@|)|4li!EBi)RJO zku7@95xw~g%-AqlawUF2H}TUXzPg+ESrXsoh-d#`UQ4CltrWOP;1+@36?m7x&FCN0 z&-9Na!+_xUvi)P$l-yal)2GhLJ9E~gDYM}Dcs770SZgOwlHfwPMqb+`VxdZ8B7j+I zK|x}R;uO?rE=AOe%Vok-&qqTPssJf^h%dhMUen ztt!X-3V5H7z6)NU?|kv8m@ZLss@tGxTL2QMRxB3G(&;LC4e#*U3Y%(|)Hejx9_N_c z#jBgpez?J{uBor4*LC_0kCE}*W_`mNXe+@M-HHI_chz`x{m ztma44*2jpgz>89NQ)+dLD12yb&6?`g7%}R7zOFeH*4A=~BSr#Lz$G!r3)`FVVqjN6 zbF16xW01@B9U9v_Ml8M!*NSxzjAAh&yVzI^p0fJproeo)st_Yqz5Lb?L=S3iU4!m| zY-sEJhLP^Cs?$a_j|>;(fwqPXsNzzzt{FliX_dG~jz!0KAHeEKI0_w+H;K`5B8Yt5 zld9FkOj6i*S@rrh45OT-v^g)qjGK!#I_f^~y)ppRU20IF6WWEESiLd(V^LcLzEmK&rx zRMpksk{qZltzOr#rhSbzQAI~-YizorV12Z;wV@U>11wA^3SQCHR@t_sx+z%N+=N!d za%TXSr)sO6O3z2`N^#Vonnj|&av9t<J5QzR-vt?9D1FJg>wGf6??mO#8565&HAHx}|~IhU)(?Wo^A8bX8xp z{SVXA@s-_(&qhQKFt{0t@sK3?0m*U<{HJ94k~u&N$77goa_P$0eNM3+rs8uEu^zF8 zzev$def0D&D6DEvT;1y#esENc>3eNp9X@~2mG(u_N2cqZ|5Q(>mYYXSx-QHUsmSM7 z-PV_W0;m(B7*S|X8u963bav5+jS{Dl5q>&m(uXNMrFA}9v+E$7e0ulk9Z%?CWR6Gn z-PTvEhjq(iKiB(GGMo?mV#{=Lbzj1m&scSX$#ci$v7f_6@pLc0PCrqM{O*fRX`Uwd z@W@0tNL^pv(|ae98J}Efl<#_ms?RNZno5P5EJ4k zSRSae=13GSf(b6z>`U7FQ>Gcf%OZk@H>YH4l8m+XUjm1eHJX~dG{GOiHJDb{sb zQD4pPQ?%f2x2mPJVXf8P+KA~gc9dAS?W)GY25%_ji8~_H40hFe+>lw-tJ<0y+k*kU z`imZqTXQUm3AzePWt3vL7;eLi8cz@*vAG?SXsqz4Tk}?{zPT-EwKTVK^~7H1(DzQb zLz|=4kGMc)@lVsudd8eC6rbY6eP(M=v#OxI>{k(vFfx3a1NRisvWpFYD=5)XB{qd| zVa$jmB}`RMTeSccl-nFlS%o`Z9pZfzR#~HSf)Wu#+;mzkxR1UJi*X3x&Z(}odbL`3 z;+o)^0Pf7B1ukt5w63?Cgrto?Fd}&4~bk>*SEEY^4&n(5#=o z)1gy%=?hENtD9Jd>`)>D+bbd#wSukH4MAw!2nKeaMa5Wki=wo5U6876Xv5V-uW`V{ zTN^esqa!u)4pA?Q;Jy)SVv!VebLm{aQRObgh8FuFfJW*X8(P|M|EL!0E1S8bkB?|! zxYBJ*J#in5@5QM-O9*RNWdc|_K#%2MpvMlfVt{R|!$-!})LIoqC3=wrBxN$VeU8|k zhALbQUut{+0nr-PVwJC<34B;j)D?p7qcEFBTFqQpxL}qx@m#Dj;l8&#P~8?uMoaLv zdVNLvYP7l1(oSOH%(4IsTJd6M0>7<>9#S7@Y|+c$C<>LS63wb?tz?G;md*m}ST)Y4 z0PI{`<*=INaR8P>u&WDu$@Go-d9BUuEii7wR%Q73#d@_m5;puiXu+j$G)#;%40?}-9!_0dvv@Evw#aZa-k=y4G>DVS`8HLS$vo^iVg@v8f7z%WH z{p~$9zD5#+M_m!P-ip2wP|G`5Pg8r>+K><}jg=+6m_oDBHd2N0h~K)y3NbGrRuvz% zs2zT63fMnVVc`nVDm|2IQ_Iy;v0B}xzlo*h=_n9aW6UFj@<3aAqw2N*O5av)#Ix35 z2@tEht+)(EZrYN%wN?j^TSE=TFq#F1EP#j&EGnm3y*5SNr>pevb!Z$z1i~Qcs*(rYQ}O`mF$u=YwhWMRBuM|j!j^=HS&99xDYR;VTmSTbT5z1P9=q6CU9DP=d*7f4m}% zmf)FTlJQOZYMA7b&sS#(gsk%<*cc}5k>I0Y(oqS18Ybo7bwD0v0wIe&rg<1E0Z9|W z|Hej++BUM#1nDDyM-0;*CpMFBn^Czjqa53e%EwEvuWd8s#*CJRNy{a8ZJ1;%iyld} z2Ia<#9tx8lmEhmQBx6~d#lkS)8Oz#in^CzjqaWEeQ*LZ#jcpC(#%68`lZ?&qwJy=i z*i67SkaA-)Lu>;nHwH4pZu)X#4I}IpEH_R6`!LD0bGT80aoP?x67VgCabjrw)Yw|0Je#jcqI|OpqQ~c;Lcs z?8g|5%UYr1!vFMd&ZD1gh+Xn3l&IqFS$-jEWJ%s0YwfNLH+T(dN}Hs~Yj+?{XB+-E zCi{|YpUX|q*s05^GQmRIWS5)ZokC*MZ!n0lXCyVj&%;Sg&{(@lI$KO%zeB{Gc93U~ zJM4Z@6;@q`=zx~T8+M=TQj-IvY{Ts`c40A9H6vY1!n$V=0Z?kl{3>lV5Hp@a2++~x@yi(U8{!OZhHcPn)Hru2X zCU}=k>M}Z-sC_oeA`=|bS7#TalbckB>{MOKWmq1xSr(e$Xj^a>yPF_UMK;SK6a2AF z>N4h-R4Z(jF6tPT**42U6THGERhi(=Y|=uz$|Ya~ony0jLNnHe+RH-&g zw}NwRmM(=_BvB1E%OVrJ(I%}h!RLg8+rn8UeB5TMFu}!{x*%lxx`cNNbXgT9__GK$ z6F!YECEx&?4ut=WszE!$%10&mT9|Z;2))zJuhQiA!!XHY_uDY(m;~PqlZ-MmY^5s0 z>gdo{BO3k@zqMHwnP8&4EEB^vOsW^{R9ytS z`nX1>_Vc(?(-Q`zzOpIhwN1%=T>O++T)eBe-vcNFQ!zhE>cG1QM>nMw_hb4uH(_F( z>>zzb8RE7dtVrMMs3z_NVsf0@7 zc1Bl5VS|%G&4%wIM>enLOM#gC3;Il>5ho{~ji7ZiUft9;pkB4OkWQzC z>R5+=m)x7eTBO^>HIaNL{=9Lgxqn7Z_tPY~U&DW#`%@C!8ITq4&cnaQU55VzcQgJI zt$5yYUXP$F#d9-by>a(3@plo9k1ug^?Zf5%75?Mgez(f6f^9Slkq+yBFZ!=U#{Z{fJ_j z??Bkq+w((!L~mRxD6U^2>`hE_KgTHd3H-;od*dE8-aQ)sUiaDfPj_?0#OH3t|9;DT z4M2y>y^|o${R@J4_lpEx_h$s@?m=kx4xbgj5n0SaIAN%#7yy~7I$epdH*T~$2xz&l z!@tYYG5@7vCb)m0V*bb&_hGyYxfYw#cE-id#=@IHvJ zx7Psovw)WSL;Snkr{R9r$T|yQZ&H?fKJS6ujre!Dzoz075_4IP_X1g(Iwrl>a8}C* zE9p-lEJQfUIB4qWUT)Lx!R7*)p{5G(@E?=MP5kHoeJi_X8 z6T*K~T;4w4vBN2S?m_q!MNjWD2vxQj^%plH%ktcY2v2xk>;$~XgJGTuYjivJw{ zKS5-CO=ed71^xFSI0K2|FG4o`Ujs(Vj$alx!rR{sflb7g$Bjto-wW7!Vk_cCq+9Xl zBKQd9jE`T4AU)rv4e>k=;PJ-SfbuRQ&y1(m{BlkDkoXSduR42)N}UFQ@db$?@Sf(% z0g~Ql2L9PCS!DX))nTs{|6?%KfzUTAi{SLW>HXIM4n?E)?L*B&2J0I)BECOA#iQc- zu^cxWEQ96X619rUL^=B3Yq0)tBQp9wV6f9ziSZnst^}!1@5G77$@>(--o69F=6@Ij z8eZSiU9Kc_0A;^@2Lm|`$WIwF1jr~cs=h;AE-StRihm z#RYbS4T1Jn{2oM{07Jj`JpTlU_bR>k3FSWh5}!b%w-8}(W?Oo%7lA>7|p(Sc|A#7!J*0YPX^)x!p_@2#p_8K4WtR_Q|7XLbj$aAr>cQ<)9z*B8=1 z1FA9`sxmtlIjYQt>dZ_gX8Fvum}|JBu&R|j!o`8u<+~n9m>F+lT)roOg)@5-Jzr%u zf+ZV{38M9V7Ie)0U>?pZSq&ZrCy%`x^ZpUE;^gcE+;)xNYv;)mX`I>V&~n6V;<=QR zy$g8{{{SgpXUaU<^Y96%?Y|S9#6f;UF}WwRJR_Dcn9t0!52DeA*Mak&KEscLoyavc6K(tOA? zekFDmDs}j5RMh9B6<-9shX;U;WwKJLoQ;;WM!LVgV*|(V$3UtnfNzg$IEuE4)rw;V6@dSpjq{?uAx)nwfpe$-FrWOFkc%l6)&ATceB!vwr4U zd@oX;O;O*0s1C4)Mg1g7)QiBbrdHpfR>Ov4s8W)@qa_=OW+}|I*oy?;rsO*zc`4Y# zlD`HltmKc3s5`YNBf>0exfWMI)Io~62crHKC2BBwOjy(`U`ok*bk!LVW+BV9cqc?< zpt~mj2%eV38@ zIUm9hZ1OV8Gp@zAAy2N7CO_?B9xmT=_z&m%VPwA6P?OHAr??jX8R@ZNU?u-v(ho$F zgwq!Qv-KXf64*(Mn90BYgnAA&ViuUylf~mufvpsG$n}&`hjtzo_f(`fYm7-3u+y(W z`rjjc|6VQ*dM?*k*CIRlSXZU3i*<%cwAN01CldcdC+i+5LIE>Vvc{OS_uDd>A%iQG{ZsU4)m`RfR;V|Y__QYtQlZ!z2f zp`(Cs1`)Tp(29Q^`Y?yAl*E@1>`jGTiGM@T%goXT46zF~eh3JqsE+}OuEGiD0O93* zKnkj9!V+N55KAL=IWSIguq@{4GvRrZlnc!RP6L+GjyT?*4H&_>uob@)sYZg9F)53{ zmocILI6z+WGI(R!-&AKtuDXNTiipYN&&nc5&&cS{YbUEO1NSCYe_lQnhIpQ+(A=au9OzU-iJOvi1$q{yA*?P<77cX z7E0^g1fHD1eZskH0pW6V$iWv5b0vKr2qyu9mjU^)L6#5elk^A>R@dMaKz?J8DzH6o z*lK{hY>-+Y#|=`CH17kskNGqJ;To~Z=VBm33~~vO(FSP*GR`1tfaDvb2}qGant{wS zNDGjqKxjFGgDzK61CYIF*1=b}TobP}F<-eBA-5}u{!CPvI*{%TgWNQ%Ps$!3NL$BF*r-1T*6l90HRi62TJMPf#P~kk8v|}x*vMoj@Wy^cKUoa?T--3 zP5dd7{gcUtG*&GmvZqkSB@E1TqK6K_Ue}_$1+ZB4-0x3xpS= zA?Es1f=FW1+ykRb^vVqS#Bspw=$sn+ehNQAC z_92wV0(&w*PjGqi$?x*a2k^vsRs$r)dHw_tA0N+WQm-Pbp(%;)BiQ={!mjvSWPB&i zxYH7O*R1ZcM`57x^^PBg>OBX+VSTa)e8bZEmjJRW4ogRM_b-dUy!{tNVCnsrMPOJ$ z;Ma(_xED7%ekX!l&5N6mxRDL`9dLSw_qEHId_M^6G{c7$Cex1)GaNp=F!@=850O5y zF!^sLoKu+mF~YBqeg=lWUqZTC3mg*v27+Ab>op)g2?ogf&ZMlwzcbGP7%{yg!b5{K zsTh>(ey&NVE7#)@^cO%m)Ody}^l_jpfXAoMXMl2j&NED*e=_KBqE`H)$m3!rPFFX^i8)Zf+aEWf zQ%Cm>>&cHS9ze|K0exIaHv?f0AALIXyc-B}8$BdtK+=6cIDm{En$j!f=Rl~|=rrWy zPI=g%>{9NO-nui1EdU|GnzkLR z-o$tgweKRBGxRKKsAAKs#FYqp<6+m{#L;1u27quKViLz9<7^=8Rf%X{D?Saqmd_p% z)ADF1Rtvf&auQK(hnQkK3$RM^NNkEAZK3wotGl6kf(csZbV7frF z?Qy)|^8|8zga;>xJj`BNvyt|fLN`0EpB4O%0{<@X1A!k4bc;Rk(J>F+gYn1_I8opv zfzt$DAaJEXr+t|{-S0?znzXCg*zL4GXZv3&{Obgo-QRt2U(92oK(hsWh2Q~!nk)SO z{}=l?mA!12cK<(n(Y9gi#cc4Oh`VeaX9_G8sHx%qI$Sz;Z?cc`Wt>h*V0zgoNS{}-*-i=>`b2|U%f-(5Y2bJiiV75{>r;nz{7=`fd1=6D$Dd05|8Li~ zdF|j|wd>2oe!n8{RCaFOx&E2ApiTamP?#6e2MWLUUU@Ul9<8aD!4$qvh zwu|*N9t_hgh;ccHOCP+wV3zP-cM^}5EIa_Qu-s>170trhrE>o=1ki_b7|v{*BXN$# z$ut>t7v1{Rw`;C_ddRG=FMIF!UxSZt`C!%X`jhi2>Mq)tQqp|i-MuF~c687SN2qRec+AP#*UnqxxAtFd)NEE>$&}oe=Zz%WyZLq>)R8~On>m@?>+L= zt>b_DeA9d1IoYqzvCoD#?RDKYXneu0C&$nG#iHPjl8W3PJ$vnmuWh^T(qrfQS0sLN z;k{{@?-b1V>!1Jj?vb|=raW-|U1>kKbnG8){UpJ&c6oWf)`nF>zH&y$bZc1H;b1TjrICtaRi}L`^7jPcM`4LVpu8CPV`JVVxoPM0#A6k!d9nP&d`J5iA zT33r*aAy~BwY?Q^GFScq=gK^kUZaU`6}#b{1>z6N_3182zftZh`52z@c-ul9+~Ps} z=VCzIFhtz&^O-;KUyD8i1vmO}rwZfwx&aSvuOWWD=*K;G#IKe0RlZ0^obM{|;P#YA zoSSHfACvUlQ$*anA-l*?AAG9McvF6E5gGOZncG^iN6pk43)? zQlH$!LH=ICf6`HY?sH*$g79-2An^~S{0}?Iw^8^_{jZmJQ-2qWKBm1sanuKQBv8K5 zx75-8+)}}K(|&wyj=0hPbBBK10l|1vf80Yu+?1c|lf+GZJ?JQ}8JEbzGuF6N_F~P$ z;}FMfvmC!@8>}DNIPH#YP5WjY&<y^6DzF7w9L0e?`SVz>GwqWWbQXgd1 zMIVl7hKJ+a`8ZLf>Ohx884~bF#AC%M%**6oF>}PQy79=h-+5an8X>-njyc0Pm|>HRX5j zbu8+0%avC&tl4vS#!Vf6OJDKxvkPvo99Q(u*0U$fdT9yk`$rGOzcMraYd5VdJ@m+H zSN6Lz?wgDHtocLc{RgVzj`f>*+c_V%eDf6Rh)|9t*ODc;Gx+YU9n{n>ACn0eontKWK|@2uws{NVCG ze6l`n=jz+Cm)$k#$mccp_j~{F?+!0LW7mKE=HpvlxioG0(TYAbH@tSv>!X`1-gtD` zU4J-!VfxYI#kc>o`jNMfUAq2zzKaSzzT?#=?`lkY^Oa#OzE^#N-n#zVtFC$awVRWl zn|Auc&&8J?J2L-!kDj*giu_N;4BncYp0f7GZL_x=ef&3@XV>^{y5jItXB}&3etmgv z$JXQvnt#;$_{5h|-+dLxdrDAoOk2=CC+DX9>Mt`&LkMdV4S%)=ipq7vjOK7IKPSWE}UGK zsTti+4S&&S?E;!6@_?!bxs`3{EU&+R{C=3XFS z<{lD~I)DqwhiYef?g>Cz?kSM;vycgy`KFVQ_<{pTd?!Lk+(1MUcN2+7KJzDu&ntzC zgC9wJnMJtx76(aur$b2GaX=Ec9|%dk0|rtPPLajeN65vuN`%B`swDBDs*w2Z3`u;x zEF`{8KoVEOMLeGalf;L@LgIT%B=IFCA@ThQlK7H_$l~ifByk70kobU}BtET|ge#GN zmCKzS(3W*2%zPn@%=>U=kO0nVw@Q(sSpWq~{A^Wag$CNzXSUNG{wwL=txr2^V+Ikizrki9a0;wv&t&;3UtlCL|F#2281i!UdU#L29X9uX4Xh7uCr zQY6=UoFa=`gh=8}L*e4PIV5pci;%dVj~a8=3rO7QCw0MnIgH^R9c099J(7mcw;97% z;6UOVPm<<`(3=@>81s(CR(wi;jVisNGn_cASYdpHd zn;qiar8k?vyGw62cz2iH?BVV%z1g2#p_IdpAIAZUSBGmux#e1y?n+Nd^lk^&I8ZUB zTDvc%rJp=$?AR(yO}{#BPVa=$s}iqE*yj0K{PpNsn!g0_;!89??Oh!`@LvIj4}_og zAH`qRRsKC-n6^R7XMa#f5At6EL&D{npZ2W|!+(BP`6(!OweZv4PsKkI{6F~;@*Bb5 z=L)UQ7ma{<-k$X1 zJ=UAT*OPuf2H$hS$9}C2Q{LHEAr|?eKgC&>@FMB@B(*pGRo_P|x+c;mCq7oqPcgSm zT*|L1PpEEbnFy!q{2G1R#JPdBfku9Jej*&91@R&4HEk0clz+7fcu)eVxpe|Qhpl2F zm@DSa>%un;zCPP(FPYfh);h7Fsiv{LHZYOyy8g3$t4#CO7cm+a>t6yzNYO{F>@Ed|i6{l!@vK*!V#I zB@-)@pM!t9LA0%JoA@7T6kQ!wg)92sFy3@;6SQ7<9c`&^sA&s(eEJVoRyhxep(#GA zz5pII%G;ahesDrP=bqwn1PCs5RdlUKKe<40P0+3f5stTzw98lW5#fHs zUgP3f5D4nQmJqG7Qp5P?)12bnMPzEfE4u=+C(@jLD8_M5=rik+hEk*o37{uX$z>vdU3p7QU z7{2!pjI)mTWUCjl(uX_UC-nmF>i0ao6Ha(~CCvA@-uLu&Z-_g? z^}NTb^5i7N<@fWXB*Yc<^?2gO_Vu_DR(tT4l4oF&dwAR!mnX|z74)Pgcqe$05`N$r zbCYLO+=Zukirra3kKbJ%^o(|A)pFB< z(0l^#qvZAT40LDA^!VJ3K~KMg1D=5iS9zwr=9!w{o#`2t;62AP6l(UqC*kKv@mniy zoC_lF-&E)RwKdcIlTF_9JtN{)Wq3wj;7P`}SdPXAMPzdRh;4SbL zcrv}`h{#_+(j(SR&oKACO+nAdb36mR!#rc$0dE~t8MM<=2`vVk@Qh9H-tHNmaKtkp z;cn09e|U-$P&ULQ#7*o62{Wn60QcNF=re65LgzsjkPkra`9a_t4tOScCwm6m?71W^ zFVi!_JH#_N0eO@rT*A4QwKaPCJ6e zX~7w+^F7eJ58u0)DnL8Pejj8|;# z4KqFCH+Y77OGJfnN`*71!lIxj$6Ju#-OkK<-Q$_(Ucc0ni#kMJtusBj?$n@XVuH6X zM9pNW#z3fh2^2+{1|<9r5;j2f4TLDnCDaQk8__=P(CkdqxO+J(*~g-;^q!yKeGnFz z>3z+!dXMK4ckN8iYWL|u&snXW8SYv@A`=r(1k`gWDaG#7mohYyp`9qzQf2^j0$E3Z zbubKh7%78Eu|o-}{?@Vnk{*PFYDyT&dRdCXT#4#qn(<6CGQqo(5d;yKTq zK_N?KA~YuG8Ha4o@E$>}xdSsjXFx$1+)lPt>Xpd46(vz^Epe?`yEg3_Y$@v1%{HEgt%FK*%R;DbimWg{URP6dAwgwpw;$H@ctA?X@Ykt1`n#c zEN(K#h7oLA)Iz4W-aPk40oxS_t=oz3+@+(BV>m0|a5h{I zXP&J0I4B+Q^g5C7b&u;e_#)r93{P^BcQv%aFqRNErk^MIHjf8O(C?F8VCbWw>D}?4 z-3>p+f&}k93ErzPNH#$5lY(CWe2XUocoM#pgt3%*ku)&Ld$z}$fYD+Qo>>lUgDIeM zWS;PNwqpSNIj9Fv4~IPcFgkmE3AaD#$#@TSF%|>iOhnG}4809W4uPky=d_&|3A`72 zJU4l=y_b1X+lbEeWN!ClCtRSzt_1HlP#M`7o{35GV7iAqDHw-6s6i_M6+9jaj!U@5 zlLVq0HVoo-qB&2*_XpK|-&c@dcGCGMgHOX>N25=AMoTPUe6k16-ufh+h?|4kU0j6t z1Z@UBkLU)(r;Y}Hie+Bnd=(dKTZ7*e{1w2#`2A7vgMirEGk8DXbnrhY_zwZ60O#x2 zjK5jpZvbTatrEXc@K%X$1Y~~I62DmRIe=&3kxCvQF65bfzkC|xpAMLhrHV|UCjm13 zr&v6gg!nfA&qBJF0m=VcK&F30a6Tqv`X34XPC%yr1|ZX44aoEx0GYlKkm*+mz66lz z%YKLbry~6% z!THRI=@S9T_c0bLiN6I%oX=i~{~C~b{Zzx!?+g7FK=N%9{7S(u1I!11i_p&zI2Dlk zb1x6&o({DKM6=V`z8J+O)uya zd>tU=T&n4%tAx&njFeL*^g=+&nJV$`;|UJa9R*~*uV}pVcY;3#$n-xE{D**Sx7!83 z9+36DRq*wIXM(>)@BkpDwV7uFBHx0+fD;fO2grP1#Qqt;(!ClMd=qdY=#vD`6x<8Q z`uPZJa@6zhfK2xsAnE&sex;@ttP^^@(3fbupiIY?j+FR568|1M%$fRw*X@O(g~J45gx5}zvgr?|PIoYw)F?vUWW5_k_F z^S@p2X2CBKoEtTme!9REfyZ!XMLqfbFUCIxNcle%d^;fJUJFS5RtdcvkbGweo(o7j z>n%9%*ckshh?M&bAoICb@ST8+-zNAnK<2X;kogn~eVoAF0zX3})4c&mxqk&jROZ8g zl>Z%}-v~%P?tLNOB0&5yi-bN>=xKs~j(ctL9ToT#;AEu#Z^5q>coiV?sTTZvK=#k! znqHa;$b5P4PI>R)kC1zMsORqh8PA8jq~9X&MnJ}23&{A5fT)jx28qXfK;=6Ckmcwr z^v|)ffneqv0uKX1ztZObDd%ya-zWI@0V($up2}r&iK$c?|AmtAPq#Q3G`QOK6hx z1d#1p2uS(r4VV%Ghf%O7c3S26XpOq#*HlC8 z@#6xI3Op?E1%U?z9uT-+;9h}y1nw5NOW+QH+XZeF*dcJ8z!rh^0#^!LDzHqTU*If( zQw8P<%n|4lm?bb>pjRM(DmUu|Lxif2@o1Ohpc6j~Nc^DS`vu=4_%6Y>3*I4ki{L8- zFB5#0;JJeP1Wy+nK;_5yGmtOKfiu+ym<`Bsi~=P8Xh4=@EFb{){->^lkz(goY8l`F zz*&GulR6a;mzacHfmwhoU%EiAKpHve+(S=zTp;(>2=twQh6ctI+vxGhs5SQ@OT%qR( z-3JI8NX-&@y3oCV82?f&p??JXV0n)NqFqyu0xI4&5J&1#{84@xAoa`wq`d<0J(tu! zpplS1;kN?6E-)mpQecU|bb*}rGTpOiG{WBqyk6in0?P%SFR-t`B!Q2hahd+-0<#Q17Js1nxqk67LYWQs69sK7p3N!(b-=eu29L zb_iT4aF#%yKuh3Z$#=iNT>?7yH@+HyOK`@73@DoCK8|7uZ*#n0K zG=&dK*9^^qn>}tJ;WvBQMhR~AuvH6g_N?71>CGOsdtuzn&+JM2SoAS_(C9mX@n+AN zThg07X57!qc(bQ$lEj-mWYwK@Vy#})+-g#Ub;Z+iI5rnSrA3v6-9()t5AAv!{^A`~F<*I=mpTi;WqY7iZLwlK zD6jX<1mTCNU1W86Ixk|iuXU@cs;VtmU2_S1(O*(kSKZKPp(#q5R|{7gHfRMZg00O> zpvAZfDxY0G^V=FMNAzlX?stm3v{Br8bJ^3p9{+ z3okMq^%tF!Qo(A}b(URKR=%LDs-(E0vKuoAa~5OILgD;5MOCn>;=35>$O zU~abwq8l)_y~Z%FZWyI(+6c=RblU?=(ZUwn6LXdBvw<}&!Sz)&)iw12TFabsvAGW> z(-hP;piH7XfPE2xrW(Z&wx`wY)vdMC;%nMgR|J|2))pQJs;~)gO+yXVG-8*|r+e-4 z?io~9?IC_b&AN3}wE~J>_PS!@TMmR=4XB?_Wy|6#`#a0!&ix5b8-uFctH{ za0(t%_8u!2`(A4zY^f)atpUXx-4vIht~I6Sq%_%6^Mx&=2c=_~s&4WISg^V_^`uKx zOLc2oAi9B3f2XzS-7vWd^mAnoyGFwKC8Rq z>~VUAvyy3W7#uQrk8Z?ZkPHUa1<9e0s;bJOrCfk?9FJikkq6~rI%Vye=CVFz7V%aG z{_Ufxs<8n(;;I{`YLZjl0g;0#oH}x_P|7lz15>l8qpGS#Up$5Cly^|%6^oEu$csFv zYvciWb&&$As^%6}7KS-|<8^qYu0E>+55g(Bqu6C$kqR>-1bMu|*fgiS4o=Q->=OMB z<3T*jn0vm^^)j}a{&qm*t%E!%ZY+5X+{4Z}(VDdZDYlD3d{ZD0z*|H7Wu0i<0Ntq~*LK@;a`wvoe90 z@~T&@Y7MMa?HeV}_1`+#8nM6XpBgbXj46+GM-HccP50__A5GTq>7Q%Zf%f==4#t$% zTHUl7Z>V&USNEz;q>KZ>$KMq^3>@z`>kM!&x&ol3u&<~1m1u&TZ3vWBMGs;ZK?T7v%HEAn>9^(`yerLVs$ zUDk5V;;6qseU*BhMn^iw=cT>0K4oblzrU8JF*Ux_n=ql>-x`_%8jtR8yZKNC$2a>a zV0lMrJiW#qU!wFI2{t`I=&K(ixonvQ{+9q>XmMHf!}PdW2As#Wa&iv(J)C%E{-qC2 zvwS$2-+23VBW&uQ*T7+&&m&{S^DUN2PFNYAgVT|o@#@79M5&`2zQV=fccgmaD-F~( zR97}PH?C@4*Aw4DEFJ_mFn678Px>jD!qy#MVS8;uvol{G62&NQY4P0R?&LU1sp~aX zy`4Kh5abJAk$T0*uOfiEss=2Gc2lpc0i}DSoLKpRZ*fCyK#j@d?LnS-Ye|VDpAV;_ z9?WZ4J;{lxi$(s>YlTY+7Z)xntgP@~^;W$<^c#QZfpsTOo-7W1R?^9SVfjPP7oL2s zIP`=+^cMvDp`wnG(3%7OPS5yBj4e9o@67*W0fO5$9yqE~JW`bRwtvf?(l$?Xf!X=ZN zsoP-QNtIb?=<||J=z&qSbLNcmL-8|oe#A;cABsXsEXua^iK6XbeRytY&5izThPoph z+@))!IP@4QWp_#Fq^_bp{?3gZI=I*0xrH?fY5P${TU8Dvp?6iKJ_f$MC7t=yr|{$< zV0$#!4Ip$a>X4FsNM(ocQU6ts)?ZY(tZ;eZio&Ypk2srhYH{c!D!vtW4ygEfGx379 zZcZxIS#Y7I&j4L%DGd>Nq_}fQPI2dgTqGKWNYmyz9uYoK3e}Z|%F8S1q%lIs9~A2! ziaXEqA&%+a!CfANZ{DA_<*P7*;?7MzPgKK*_f8iy)~at>{fOx-tBsy{ImK=U~>|$!F0ZFS4>b^H1PTJE}p@>o)FT zy`y2Kg5gCl!1{(mB>GBr;m=k;Lf-z;&`~CXF;UvaJ?ekI`ahul51xEBTup;-QBpEL z#kzq%^s;IWwybK(*`fF`HtV*`kD_=)<5zcA&X4 zXciN75lNZdIWxy@!Oodku<5B`n?AaBy{|u!WGL; z9=3Tu`4YSbq0$|=c%%J#qy7A$Uzs+-Aoc+oFqnd-(zN2x<91kbjqZ45Xsv_jX#G%R zj53v!8+zU(MrT(IUK09SN$7JlNa*FTX+Huz#wk5|Kc@8fOG)Srln?{2bU8I?7O5XdQ33b#%eeGM)KbC~jNkJEOt_``T%NCB@ThQ{q;zQYgsy);yA7kThCw{6nz9e-^Q{SM&RSB{!p59Vb&KB zf2Z|$e4-0UXm|e3nTdHHEDzftFOy2mypzAQRvf%f35ihIA9`HN-LgLzpSS_q{^83K>e6x!zL@}GiQ9|t z!>XZ8MgBAKvSf3)>x@6x^-5D;9D2Gq^t{&Qzp-^wYqNQOaFm_nOkBhBzlk`Aj<{-_ z9LcIK32nrMvwaT?`4P5|shA8Vav@Q~HKwy*mtx6Z2)erHmab;&ZU8a&w-|UW=BdlN_iM}7v zrt$Lc1(NrBt-mCAFD*UZOn(qgi3qcHl%;}xx?7d&A!`=CqsuCN=;6&03SX|NPK8$I zp;s{BGWM#abk21DlG914ASKz*9!$u9W>0cR=`7uSN{&5R1&YY~;6V;XiXcVaK1J1t zt_Re)$_c$q7a`g{q6b(1SKm6y>11f1|MQb4OST2VsoBF1Vz9d$!qLj6#~9mq0)wWe zm2Np1EGg-HKuHLF*oF81;qFb~vnsCs@q4q8kU)ZjB?9`eM1mp-fv^P7gb+wDfk2W+ zR3HZO1X4p1vmgiv6;Wb@Vo_`BhD$A4eTzF<7Z4R(TCpl(wXf)_)&;Fq+q(Pzo|$vz z-rV~<0pGs;w7>uTWS*IG=FB-~&divB8}bxl6Ujz~ZP9W=e}%|-Y7AA=D^;>ho60a` z%->0~QuGmqG>b?#>`K0GQS0g;DW8@*AwT3xUppZxoW6Fu&CSOE@W3Z;2mFRTEXgE>R5|CDRFCCjm6QGlU z{z^?59;aSMI6j3Y4l(Z`hR_=(5HD%q6w#;X zR=r&vcDA!*a)X$6!!s&F7~N6!l$r2OBkkSzge<+dsYUMG zP&0HVh|mg0#? zprSWz+7HOo6>wh-1q^8xky4eJtE&ug?xM=j%&lXCCW=^B=7Gnoj$!ZVqU+-lC#C9o zm7o?w#2b>y8aveR2IU#B{90O+FjaCPJf#JKAS=5n0PO@(+R(Zl8IH@Bz* z{dh4Naei-65L7P2xZ_HyLsUziESYpC87KL|#4xpF0ugtzu+O3!$nIP{I8vH3t7uZ; z{eLE!E-~Gx_w5$nX+ZK>a<3S?O6rwHILQ@Gb%h6ZbM?s; z<@xOxvAM@m$oRdZU}%}mKZAkAtd5vTz~7QdmVRSe`={-@eIqIQFi>6w!G&)thUhxf zoSFKO#fqVNJyc(pM977j8~UTdx7!~tY5zivBV1!M#SufZ{?suaqAvQNk8?se&Pkdx zb;Sp%D?TLb`(xm5hJHuG{&q}poUVFihf@4L$b=b=mOV^T`gZaNbU0*Zw^>TUaj(+c zlQRnU!!)JFG+}kmNFGtTAG~+@cz-f7jOK}k_paoO(*0tV46j+#2cEKg8K`kxK#x2W z<#v_gtmb|t?T=%$GOHtr@b?3yI=ru@wf{B0eV6{|;F<#PjEhIc>kpru-~LK*`#0P^ z7PUW5Z*~u=Hkh`{mz2GQS18OTiNMDc32rNDFWgSu9i~R;7SMtMv13~Mnw=emS?z_d zV}zCg4Cc9o0r=0sM`K#rAMBq1{BV(cUZE+lGxzCOvz^-Fe}LWkC(iCPibfSjg)D=$ zG5Rc|40n_VkoQY5Yv8g~v&_?gT$RyLo>jzeI27GmxC1%awYTtIogv-#wqp=!J{0Y0 zuiV#BP|;p^xTvF`1S+B*E|>-%St%G>)X_4zsJ)FosUa&lv#1<471Ea<=vhW{S~UQ| zM7e0w>|u1XGRBAPdtH-~2ovL@nh|#<;zIoK;dPMGMLBL-inem^h9>-i@bSGHT6G9* zC70qR^|4E!(sjt)MsJyJL78G?URZ=kD$P7?g2D;#(SsId!G9P&mG-^xskHBaFQt78 z;A@LEJwnRx_+`x&cY$w|0{`(7l%X(X-lWTX4owernO}wP7e^>_uEZ#FuEbL2?k|Gv zmD^Fe^-z&Yy9Pd$_I&urYC#2jl(wo3$f~Lh$f~Ig_aYuy&B>#WMw<#Z>e|rsZ>bII z59gsfp)TN-i0?JO29KN9Kwf6N1`^zbJniE;fPsO2ulG-DZ#zhx#VsV@b-cSWwOF&? zU6lBKMZ}1P_&03i6;6 zJk(zKUQzr0qTTNW)C-(*XND@0eY!}p+(m+X%oz5seKl44dVsplE!1^xj94O9?=9Sh zJfTExf#c~l=lHXLgQx_0w3%8)u#$%qZ=0Zgs1B%)geDZ1XnKJ@Z@!rGen}7@g4tK20D%w=} zo@#4#jwdbnq^%q3UjMTe>`@r=mGLwGSH{k5Dz(nYzxT6cXCim+`Tu0;CZkBXbSsAa zD@%7&`v2pliyBsXEe3b%BEGuY_7-kOrN^s#hpzk5g6?o$UA(q5Jna1H?!&9QA4AM_ z$-N6-qDJ*vX;in#i;ERI^#ahKYz>wMx_WWBQ5}o&<-PVk{HFFn$3B zIkZ?p>qM?D)BENjwdy!AA(5AG9+hyUrCeRozd}B^qz@lQC4Dkw5Yx4ij+Q_PW+x>b zizhgl@{P+RC+_J9)W#yvAw9&w=yX+|Ja%3iaNi8`&; znW~8jQPOcZ8pfOHs!KfdzU|Kz|}x z>jr7A_Aglmq%N52*Mxl3rFInHx7=EmP($m?Vt;4@O)F_gkKr$7JT&5c2^FJ@CYgrD z;mx}KFgMCKpzygKygiWW!M|Xny9Yf522#F}ZV|2Fw|`f(`{RI9YLUvN^El_I2SZd6 zWu@&;ViGE~xdY$9@RH%P#Z*#EmeJ`olNHs!l(fG~pA9gjn(|8!q4pjJZyH{FVBav+ zkly>8Bt<~$pKlelzltwd{7Fc?y}W><-t}M#J{y=XS@MSJ?;b`u^}TyHiUP}$RJC0- zm=@_?(e)pKv1XuF4p74JXSt~KM+g`egT%WLQFXh2nurEr!d3Q^!T8d20cp*6h zo#pQ2jA!_h==!g^C10|I$Tr1ZPTu0AEk*WjTDtuHP0UmVeGy|>pC-?LRV`-D2d2-v z8ngeyxda^qgt$Kv4cz_@ClK~=P4fa`_I-FFeqR8#2mN1W(CqsVUn*1jT<@gB>}WpG zJ_|>(p&fqrfA~r5mcL`vK>sdbGu+*9Pr!W)cP-ojIGHxAKipK@t_J$sX_mE3mwI!W zn2ol}Wa3kgF_N_o|7sxlqAMxW++}qjC(gnkE%>(eKffuOddiescOF=1>L@)_)Isy& zis<;F_N3?!L#T>}p*`xLld7csQ|=>VYnL#9ZgyMZ`3dlg+Cng#{SeB;x-rqEK>OG}*V3iiEtF-ftMC{a_%HPHr0rq$u_>CeJ_O~UU z-vih(k(u*UOfr@ZgoHFmCJmCIfgp=Iz$6d3p9XAuYVv|TNMvz6)g=^0(A4wu96>qf zkD)Y?dAedciGglnNzx6=2EDw?29Scvn^MG!3C{k$A0MXSxtlZgQfYSUCU>)vH&8!J zTOjm$R30iVM#EX!3urF|o}&V7lF;R>#zZ+W{lI_Im5Ru{f=Qzs)im;6lP0V%5yO%W z3|i73MJn2A!?=kVt?@{}qlOLrL5H^G6KdZTkK*s2DxUb?&HMF&7bsB=I{JDAyXCdr z=qTWn;-pf&Kto1xjlPszdRe7i< z8E5+%n``PCs#`;o0yy8Z5{JYob#{P`#ChWz>uLhas_PmuMg&#`meg03v4p@BmoQ&K z#DTu|o-qHNLZ1p9wal7a*>Fxn<9Q7MU_z%@8ZRQ1wsbW> zsK$~?V1+LNjdq*DT0SA~)GVvEWvR7%Og4gf6Y@rnTR1g)thKZn$ci~5=UVD0ojPx2 zRSX4;v)YTB>zdS62Niik-72b^al3?7v2Yd6s0XL2 zoBF4$L5d(wV!H^Ma0Uj}o~v+lhe5^Ek+VSL!}D3!`jvA-i$itGL0a0_(71Rh4qbG_5B%&(*$g2e`UQnhD(C4M}|W1`gQk@(X& zUbO=*3W@(M$Mad9`u86}DFX#P)WS#^(zR;_U^scxX4om##sjf%_ zTRVdW5_&Jc45pCyY!5$dbqxCmy_eru55F-Ue$&Eo!@Y=Nzo^axUVdZ$Nq*Qmp&pT! zmkcX6nt1+6%)AE2(=LU)T>DpX(P zkHq0s>ZzwUHtX)UT=mW6>eicFoUKwlb|)mdJ`9hl>+8-(H|d1)Wf0Y3Q9o)iW4d9d zGaJGzS6#hkORzpwPZ_GLm_C7}TioFkRX5aNjN8+MRHZ%NF}#noXdYa#&Jbh zG}N2gM#@@E)wsH%v3YK&Mg1?V+{W4poQ%$OWmuIG{)61?S{jn%;%=Enj4PMq;>dkt zv!jFzp0ti`X}HhA*ghA7hU$7cPYatb!}x*zjSuAO`#!ABH>!Z8kcbjceFgqq-7-yI zjv_`mdWI2g4d8zc*D5y;b#YD$(jY5SXIuIr6dq#ER%4tNt2WfSc&RH9bR#LbJjP_Q z+{T9bm7Ef#M}>odwkw&XRS30K>d|cr_;9(&{Vf)=)RsV`c`IlfOe3zTipkV=I zBNM8mQ3U^UDYPWitnX@)dsSSS0V6%8GgsBH?G%kF1WBcAB^TOQ`q~;@RxW;2%nF=~ z|H!v8zqJDY>dIlQSSf{aYmozOzg&J>Q87cU)9V|n@j``qYO$^4d5HO?n~=~{~6XIuZSxtwGPl=nXWx8`HS$%&Em4>Vz+QN z0jg+?6r0oJwKeI<59F&zxwb9Whd2-ADX*-T*cImrLIO;*VkP|3@XpV!EugDHNN{P0YKTGL$_kR*Qqc(d z*2cw+PzrZsH8nQW0OzR0chm9hahB^QIgq!a8!4dH$vVHWA*5%Kt_h^8hx1Prsb8kr zgW_}b;M8rXUWP^svrvetbWsD;-~eL@`f}mvC5+vpEglZ@}t&A_S zQ!_(Z=(2esg3@Y?g;tEIbt&Jewbb!r!^iX6XLL5Ng@x*|IOM!<`K|gT42#C-p$Q!d z+LC+~m`nFhR%{~e|C=NC*P`!HXF8fQ_Kac&p*x$|m^X&hb{Qyr`Ph!7-{d)E{vwto7 zx3K>p`>(P85&Pe`!99k^S}TZ)E>g_UQx{J-=iB3-){Av>81C_A}X^ z%>E+wo7vyU{xVgGgZzhu7;&ce}?&HgO*f5iS)_V=^@F8hbs|10})5!5j}G0kCr z68mSee<}NSu>Uyw2iVuz{P5rHoMb2a+t|OF{Z{r@u)mu9b?on8|7`Y`vR}`B6Z`Yn zzli-^>~Cb>@#sb|c_{35gcn$71n2f8?4=c$e0d}+z8fz%@gv1iyxY0y++pD(v=T@D zy2scNFL#)EYue6t^_l;ds=u+yKXtXDF0`5#)@F~*%gUWFXY@F0`Pc~*Ty^S{bL)!F zT{C*zxnr}`CuSh=h51~3V5Sew1Pw6~oT=RqO>*w&aYO=cS&Cc13~C3b)YK5eG18A>xY{dtlg-_f{I)Xzv7J8{vc{(Z=QF&TN1c9{jv>F;hlrRAU3FZxv zu@kZ&Na7S+&fKA_l7cVcv&zrJ7-VoYzftGtDNs6cWx{nqR@KQG@>w9X}5~F?TSC94JZ)Ex*9{jD0KhcAKfblsV{ELh)@Zi5<{5PKO&{4QIf}RQw zeXj`kA&mFtYaHWSJ$z;|-kYyEj9=@aKO+J?W?1Uk=%GKC@moCj=&{>ll>t3OFXdHQ}hx&q}-*PrCg;PrQF1?VmnAV z2p_Stz+y+So4_LfCgvl)XE_8p)(_by5l+Ub4W9b-_5@A0-h;QfKHlrWH}kmmVGn)) z)4$}w%Q*fm4_?NjpL_5*5#EE!2>1mN@Xd^m@zguX|K%)K@+bKb{Y78VPs-El3;#&= z-+%~OYa-`OE&=nrM z%tzZjc$u&M(u0?I>n;yo=COx7c$wGQ(?t{Q%lx>n2QTyA;U2uq+b4SPk=n6H?Ny}q zP3FhbJp4~&d)9jJKeXMO#(cc*%UKcdKeU~U)b3rv{Jrm;d`FS?OG@WTrk8e1@V7JG zOCPCSeU9lb_1G-{hVH#4bcq^0H!xi^!tn~DfBwSp_eY5TmgDzud=!$!xYGAgTl6d| zQvA3h#FugWlM(nYK0^G8Bg9{Jg!mgdelN?XthxJ^yEy)7mwjlABhMa=f7=!Bwy%_H zB>pdO`gbFw{|m=|8zDaS6s<`l{{1*UFhkQx`BNTf3)c!BcWq$*R`wrY|9STR%Kkq) zuDb}vod>!5v^v&8?w5aP|IEp)${*OTOFGh_t7pc)h;KNV0U-0~w&y@eNw5^VJ)2vw zgdG?^YRsstKn4~U8&=*YP=Lk<&5TUzQCSJzLkuWJeu zjWvThEaSCCBye#j19rj6MOk!oTt`pH3Zs%**U+-C&@H7mmlvZ;8*4(2v1b`$Iyglc zB4c@R%0>>7Od@&ejAi|+>m9V_syKvC=OJ)R;N^i_qblW>7ZexkDpAOLYk-}Fe^gRl zQCQ}Sn28Nl4WX7$VP%0Y&e@yf;#6Edy9BF64WoVJ=~keUWOGymu9D9iMsK;mV&a;**Sjg+_8S1?$|M1avs}d zY?dz;`N+=7&YtNveQEXL+2wN^msL0T62bDL$A!mEtwWx1(RPGHC3UT>^`XcVWBhrC zurb+PvK^D%C0mc81*NnDXL^10k{0V67f^*AL3K5qQAO1)Q?b-Jm)6v=8KM)pJ~gl$ zTimkU~9ykST(voL8pQbf)vO-PRV9)V| zDomI2>#hEc&5*r_HmA8!MlZE~ExTo~;|B}b+_=joJ6OzvSytB|rB*_Fm9Wom2_w#H zu5K!~=(mD&3^g~Pi^AR&>KwJFdPXhCwHwHkzZ*v#sioJBEcHzpfZAbU)ikzYdyl0* zFw5RNQMgr~nL)2iHP2dBr}nS98S4UXLCf9gUu2?rZ*Hz$iCtQ>O@?cQW`-J1+otqN zKbu3DPW^+wno{3JN451r@QM=uPOP~Z7tN~$I)%YzGF>ZMPRBMSXP446`j<;>wA(A< zu9{9~GYW!bbt^*k`tZiwP_0!ER6{2>!U;R)Jp8*cd22%#J3NkNQ-@g@fVrH_y~sXF z#@VG?+i5cq?b~hAn?fjP_Sm+_c8V5>R@;3w8?_f$f_h(xZzsu&5~>8XDwYfG|5y7- zOdWQXRZy>8fEt+jHk|mETF~+wX%~v?{}v26d7Ap~p|eY-RZS}{FUzkeD5C!nS~0ug zjIzS=DOp3TOqyX}Z@C+eQ3$7D_e@C z*K%wd2CA`n6#jvqig6K_Pdm*=HxV?3NqtW#K?Z7r$CAKE~xFn>mg<@)C$|5@5Qin;Ws ze*vQZ#mRq`vPLhLuKM52{AcN@baLs~>0j0SXQ}E|&84yTpW_B(Co4@Lr89CJf9TvN zxgr**u8j7;{?L>deT^Ucf2RizSATjpC|DN{ZBPxMb z(zC5s&pGfvNyT0fNqqla*qGR#1Y^Wdmpm0gc#c|?@NxS1kl7oGe=qEeI~=S(EjGD& z_pL9Wov&V`KP8`wSzr#x_-xz7mgogt?w9s)>U_*5(gx}UN4wD)!#}lIOKon)?r|Dp zx8P^A`px#|l_J#{9N0#J)=6i{L`o0*{U^6O9Yt6mV{~We)hXUD^#`6^SRh-EkNU8K z&(23Y{Xo@<1}Qvd4|_nu$JI5{AyY5#9mescKm|OSo$#ur9u1-2wvbR9ehm7ZH|&+Q$@@McA0IJe0oSHvBue2^ZTXuTJL!I`Qcg z6PZV(lS&S+NEBgtc6ItdvFwTf{mR&h;c9DFi57VKtACb7Rk#*P&Q*jzH{r@zc!DG3 zEPSFLl(VB@5g}*Z_sARHonTowv@1U(F|2=QB8 z&#O7yv1v?M!l5IkHeHokvc@-6G-=GiABB|?+`ok5ruaypgBBL|m((=?Qq~`PfZW74y5`cIdSb|xf42aYNMr}gD=X@MJ=D8R`N9qe4uqfq=T-$JcLaj{^V-} zrs0YGn)>dzSPj+XoR;@dhdaf-ApF^OUs~^t8w>ndK!N)X`>OKxVf|^3 zxMCDup81Rs>6S3vUmuywuaSFcER66@=bRUKjy>}^EwzTGk8EKrg?kOXE?bAiBy}M` z)#7C}R(WBGULgib9ii%U7mfakrWUE_raHY)#mG^iVkDXlA`cRdjs- zee$E_o5mKr+X&0T@-+R`Pe2+W&{A40zV4Av>u=;&Rbi_W!c|xk3sqHl)T2*u4QOgT z=rY_qqtR+1O*M+t5UAy8eB(eLqLv)x)IY8)Q0sj)v{?c1xM+xv_RxAZ?FE1#J*(ZF zwg*6KxlTqOndT2CN~mh~&;qJmMI=Y9&EkV@=erVdK@4#r73A!?{&s^8Ij$>KP6S{?MX(4rw0*ziBg0W}}+nTLvwPZb`qy?o>C(`IX9bE3m z-8vd1x^;k(@?3qz7*n~Vx@G$?N*SF1r|*2xeoT(u0H=2|NaYp&<9rOp<61=2g7D-M z%$ZWZ(#C{dO4bH`Zu>=11q~qR?zrsbF&iZkW+% zwWg1CSz6lHcfoiKgkyX@)Ogg?2nHHG!B0L>%3s|*pe`J6UOe5Fw8}ENu8>}dI8}O1 zXeG62xKygKNnRVx3U$;w=uw8Q(A)V!G8|DgTa|6+7`(AUqAPt}1G*j>r_jf1#af02 z`ps30WdAB|Tvv~6RZ4JyK}m=ajyJ%NR7mi1Mnzl8zqr7m>>QHQJhnAQg7^oE>VX2C zX&oq)gSItSf=;S(3C=ZCK1R>-PVhI_hb#$R$D817tI83mL%*Uu@_2s3zHOChg!B6< zN4*)DB$0M%S+$jQACF%RjeVIBf-7~RVG1Uh>GE5Br<{~Riy;2 zI87X7EiaRB55|Sbh;UkCI8_Ms6qBkVlKdqm)f@?)Z&1E6{1rz%W=MRs@^2h9-pKY< z7Ex=lA@KQ)Mi6cDZ!@<%2!z=)m?_fXRYTs>Sgxhtm>`ti?+HC zU?^QA{vU>wFK0sXnIZ8>i{d+Pk7qwjp$o}iL*nByoTG9KNu>nOFsSkc9K6{Y^y>T)Ho<_s(g;BFeJX#>0FLl8JR@X`i&v+72i&d+HFWGCD@G%$hOLRaIm+7 z@@g!M(fH zc5G|DSHX=;a)ZgdPx{lGy+4|4R!T4>Me{?u@2&egm#Fy0>996}B*sO|(HB2NU2!StTd^Z|dEI)f| zyddu7h-^)o}_GrN%d){yv&bt6YT z%6?d5Nd{hLA~BZ0Z!+E(OAx(#>AX6|5=?)NF-Zh5f+IwR*I1&<+bk2tlHd?d8s;^X zRDU90`;McMdP|8{O7MDv^3~FZIqDfh z;$ti%PZ^R53BGPn<-Q`~s1FTEr3t2rhQ3sB9Ce%_sgz)=LCu%olLqBeS{Myr5;Zar z;1h!kV|_`PVVKXAV7)>4af-4Maz67@zRHavGVRVuqsg~eFjKT=`7T-Kd(w$(4 z@XiQuzd>R=8A;* zQ5PGMN(o+TP`*?*a@0=tWq2X*BaDw%259G2=sD_(-`MhxbHFw zR7$WrCjf+G#eXA)s_4>MA4qyTd{o$3M{;W{KKpD`-Tm0(n4d6KyrheU#h49aKB zw>hd$nwE{O)T>SoM-?2IUMg58;87^?}R%Q=-QegU#LUD)E6l-rHGxe`2NP`*-< z%uRJvlHj8T*c68xD#`OI|>N6~-sr6)}33CSadq(Xu(8kCRmL5_OMkW@x4KnITaEU?9m*7T&@>xR|B{PY#z5xGakYRdGNjcmwpDV#CgYwC{o1=C) zBods=tEXY69P>D;){yuZ3&|owQX#<=2IaHk8jiZekW@gSiNspRcHpzuaG=!Naje8{?$7@_|7ZAtBfq)WJ(x4$f?v6Nq}z+ zvfTf&OUeff(Y&oO0*FLp`3m32Oj15$G(AItuNaiCFoosqCNq^1EC{F^Bg?*GDdnhI zL*iq6J4fw2GReJ$q(Xu(7?e-;0ggIkNGc`xtwH%xMGdypGmw2$5DC^A)B*{vFeqQX zgi#uksMlD4Z3Y?UHI|fp4H0J80^DSfVJ1A1@&qQbt$7k$Xiz>)Z{euB9TEwS7^1Ba zrf5&*s2oG$V?33k%8pD@Vn`|^xX7SJ61>Eqe5o$us0R&+Ph%l@-jMj- zeIeP#B&u8mc*h`7ItCc3ji@Mf(D@a1aZD6u)n7=iGfK^qV75uMz+tIF6FI8Lkoa=D zfTL=E2+16wJ~wiz^&EA%Ln6U%4a!$OlIm(h;xoRG+-XRBO=`k0o&RIm#|tdMr3U4b zEvZg7BtF?fGR%<7k>Esw^4YkBqpo7#jOiJ^+Ta(f%>e>mWAJ*@fWX(g@kk=D_;D6? z7y$3B4(D;Yf43gDvK~FtwT5C3fl~|~`M{sRsRpm@A@C449{Cn{oEr~5(-ViAhzlii3AKsOLE-s$n5K zl1Aqn-g6|l!=M%xG9!@@W|=>YNrW`YYV*pn-eHiLd(Dz3lX!y z1dw%GhdXcITZ^O=_u<-DT)^Bzu_Aav_iPX+^aXKrPeR}WV{gPx#@>g-VF;X(mYvHn0N|;sUC5$!;_S-KHv~1?68}Xc!OOm@#&}I1neIJ?#q(ICYF_!0rms2ALUpb zqitnb187IWz~1)ZwT4(3aFEAtQ0q8t85MoJwzp*kv@yxlgL~U=uT3I*4e4VKM~;Wa zsbQw$DyQM zQ7191=tgon1)OY5q6|Jttg1_zZJOyOqGHNQv@7E*3%lCM)>2y8l2~ehDv&XhSeNct zF9Gw<8EXyH#iW!NHwxNQA#n`~Am`&_ky$A?{4*X$>cm0T=-yQG<|Up1!d#=1D)LDH zT{U2`M*|UISyLoNL@VV_F*ye}%K5247=DDvlXRTvSd}h6QN0Y7HI-FW$`nvy&1c#m z+h~o~tuPiA7>$yfJ{GyLtQoFMA-c#TB#|sLR#*69e;mim)XG!MKdp~Nm950oA22O7 z^(^Z+B|4(BR zpnI>UAmt>3lI_*jP#-zQD-`KQo@f(*Gh^9N?kDUz9j*l6d zHiiOe#rTa%TZG@}v~?%&GkGxsVyF}c+G_#rOU+7&qr(sM20en}{!u*o#A&wOEgHSd!{C`( zSb~xjV0uY>{5SyDc0)`yy;1Qc0I#A{V-@&3z!6}SnxnvvI)gpYw5nM3HpXWFBxO>^ zD`FZGxWKZ`U`=OmB|xR%M3uH3;GapWNea9MAXVSg$qF?%~Rle0NV)6 zS72{6am3lC97V^c1Jq_A(2AuE{qwqya9W=0fFSzr<6)}D1(;A0KjKq@~>wVLX+5GLrWOFaVL=r@+#y0g$D;pQQBq8sJ#C?k6iS0F7N> z4nQ(M_e>Q#y)(G5GuQ-B$sDbSFBEW$0&fsd6{(f57ivEMZ4>emABGoY$Giy4aeqhH zPDywN;h_+0_l@}g!Q)Rr*a}d)`z=5)v{XwQ(+%W_5T2#*DS+P-+>h7^=hxO$e?4Mf~Dn{o~I_ zUyI;lfbWGIHnDk14dQ(2m5-64OQ7up( zZf%V8tGzFe#3v#{xlZWXdt5LL2Cw z0jBqj3F{Di4Z&lUCv+fq7{OkJF##~2iT;L`Z(5T;kL4+;oP;&uU1LICdqNapH;A_DlJfG8t?PY8%Y zq5%q3uRjA9o173tXGNV`T(_8MP&alj+Nt=yRVi^nK%ll_UsD*&;A9jers$hOrdS8M z??BRTXbcf#j6qX&3S2c@3??We>^M5JapDSu3IAjGggGBO#G zgy5L)TW}m#Fr+=*j3?WypU96=C(G)Y5Yg^ahD>M&D{uzS!1 zXoSt2qZHL|Ck{C*OjfIs;mxgsYr8w1Z2r&(X&CH1i{nUO=QJ z=4n*QCJ7rkX=ev>P#`m~U(sI4><)EecOo=**qse1o{YDW*p0pl z;PC{mQs9FCm9W)XmUq+yO@Q&jwFum-vctjtg(_#&f(d?|3>=zDE$`O z?vn%CIb+y!0J+ji8hW$o!LS%r^skimY8xYOH40awU-u~d|iz6oP=qaeH~P|zmp2Dc2+^s3@1)_?BI1sTS{qvjkMo%N_%{)Tm2+SBd62s;GdB8 zXO#AS`!7`c`b?J) zNW?HTQSA2);1?X&N)@K&)KPFMTC?woIhqW+PXUBGy2qdiHM*O5Qi)BYp{#AtG51= z@&_7faQoVehPk1|W86?pz5`jQB1n$d*g-nk@;(XNNEUw!8FVb(Khb6Jev<%|5wndp zO=$XE3ivDyQ;U^|Z4`ypf*cGb4 z`rU_ECF}|<>>ywz>?#%}LgZkD9sC-?9w1@AAYtuzM;u{~0dj%VcSU9IwWv}-4DnSb|Rq7By5{K6JEbp0V`qK zw6JdgD`7XWFcBi>6zt&35Hd)CqQ&NVS!3-7>Dme{c2WJuWZkL62+vO(`ZJyA`82~%D4KkF4oHpe#gbUNV%aLLpn{?cn#I+)CQ)B@1;26xKrh$`MmRg}7I@Z5@D>iS}v} zJqcKuXfK;cL=>QcY7@OdVxA@weGOt|qNnXYsBBLWD%pB(2am@lUWjrk(X;lsCjn*U z35{&Hw}X4ot|$}z9@(X~TAQdsLROy8%5HQ!_zy%X6H%H=4P~lO$PRQnI0QMUCT(6I z6CDRAyoq*!$$B!;3%Ze90!n3~7qp3pvog^OY$6dM+t%&ioh0T(GSMp_RwjDU{zPSa zicrZ8c02eHQNK*oJy6FL^~?4(BZ18S8VGtuz~=N!in@I1Hqz~Y{Sy%2bF#3Jed~5G z0cn&KUx!7q0B9?gOUTL-TG`ZX2d5xXS&`DT8_HCnkd54E{}Gvq4Z-#sWW_(-(V|>2-*E@2Un7qH_0vsK&Uy-IC>ppY_(kLr_ ztgZNCz{-jrvlT_eHL~3~Sb&iI3EAZV5G%WUVow+aq%}pTWVf{)ypX6r1GTjIpV_Y{ z+B~6=J=S)x8OkXW{T;4wd}sen(dG$_Y=X9fm%}2;Ja&{l<{Tu{=GiPED^F-;U#}gc zE&j?pl;#OTnJN^rm)8z{0?JLKO$^q0`h10uF;AaDa0+)Jaiijwb3np}NLUzl8ErChQqy7uc1`fCY91*Dj&E-O$HC z7iB&dy_F~N2Mpav&?&yjF!Q}oL>J8~60-7yR`%uE!Lx-orRf1yT8mVnkiEEeumhAG zl+Rqq&$m5h6gHvCh7RY5RpVTi5@;uuvB))WyT8+h&DYa}L>%sCFk z%J`{K?<;do5h~fsYX=7*e|A5jt{3WlQ5&;?wDN>XHt5>HIpD2~bSyIb6C}_^q7BAe z075Ie_BJyPvDRIOOZ~-^s#Kc7oc$^TGN|Vm%|O>+cQywu1F^Vm%{@KKj7a ziuDY|I(Gm*J*km%v5K`OiwN1=iElp;bv22qh*IOSh$iTFGniG8sER0>CPV&_P4lP)ulLiXH zdPTgIDjOVMLMG_3gI|C=9z^zqRJbV_?!ui8$SK^rF*jTT2TCe|em5ajmBEFo46@eQ zNc$m>>&ZG>qR1Z8M&gG)i_`Nd`-m%y*C>ogLEu0$08Kv!KbW`EXT9HZlD8#kM^t_x z>rNjX>6xku{wiJYR;py}9h1e^kiF@Y#a|+ek-tmL*+hE(GKxxBYVI#}%}o_%vR~2; zX5rPNR>{7-3#R>&(HvY)Y;V`yT3JGp`j1KD*-$;HAiNDl|BNzD0 zRFsSCo3M%`^&G>cFX~(lIHgWMq6(6z+9aNh#C1Ax7b?tx3bNV3Dw5Q)8`KW|99;Gi zmuWWbX^70pDwagDCCd)}0f}kzxt&b|;EfRF6zQXYOp#g%UxAdi)%Q<|`5s>P^K6s6W1B^~e91SlvKIZahphp5dji~y@j7G3K?fSN3CKK@%1oP~Y_&I1KR7YQe zhRBYW%>y>TcspM94-lAS$I}*q=a8Df6g!@F5xmG?e>!Wp$r8Sn0C9PZ0JRfF=!0wUI`z-`xGwq#Np%(OHEg7XAMQQcwo%MTi-KHooM0;O605V5uqQ z`)s7NOHDZw9B-GJf+jf0E;S`haEe`Oikjg5fWesN4d5L$G+>vSN=tBtT}neanrEo^ zEW4CGY0~#h1&>8}?f}qdPsn~L%Ylni4 zhc>Dp6cm7LRlW)u95pn{ig}O(XMsyAK0rG8evAaWiiKczz6o~cn_zdb5bQ1%g5AYJ zu)A0Y=3=3bsL&;9C>6^*G&v{gFpcd-x*^-Qr4%*CR_ z6HLYO3W=|R_zC#-=!kzB(QfesyTudi7EiF-It06|L$KRA1iP(6FswtLP^k%kF4{WF zPl9^q0-J%4osN3XBHFDU!EW^kcB@CQ+d2fhtwS)>GvWy*>->$xZ-)43`0VJ2e-Y7c z@dUfY6YLgGu-iHWyRAd8+d2fpI`p-ahPaTetYZq3;5^&vMW#}lTBEF(ZTN0k@?S_X z7T-J_RbK|FTUCPHsuJv0m0-7}2!^Ug6@sCvQH9_vSn7Cu5iEH|S?W!f_%{*l7EiES zJi%`91iLLou-j4uyDdd9EJa^LY4DBDnw>30Ff0}GD5>{nWu3QO>b;FH$w5DfKgEg;_%w%;gg|LIG-TeEuLVvc!J&H33gkDV7GM$c3X#F zSjQ9=!C7`GecGdb3%cmH>~&I)Mygr(M(L>c8KT|l5$slvV7Gb%yRAbo)HC72whqB=>k!P=q3#2^XzP4M z>YWPp#^MvDquzIjcB@CQTRno^>JjX=4#95g5X{z5;t3|}ti(6JSn3et2ZT8&FrWy# z7tcrRFF`h77WT`<+>X%fm>u{nS%-)`d_{D$PKfHPHNkGJ33h8uu-m8vyNyb)+o%M? zsPu7@zHCBv=NFRT33e%cD5bBYDtJaQ!hhVq$2zFbK zV5no%BRI=0rLUQ4Y)3E+8aCnMV#(vcX5hP{qh3EmyVWDutscQ{^$2G5)L4#SsAt3z z4E2n7f>9+Cj={&aKSTP!EiwHN9Bd!`erTG^K&aXeeLB)YpcOM8fg^1&j`=Z&N@6iw z3E*R(ljn5k^cOLoZR~%Rq-k-GQ9UoS zFE>wr!?4Jco0;V{X-AR{?PtDp!BFX%D^JJMGmgll5>?>W~}+eh8CJ zdgRNQeDcy*=XV@BIC}EfFJ*rb`!t%N=Ti3N(Cjx1>saTvs64+2LoI6>Tss__(;}R0 z#o-rCG#rJ#$CJQ5g(>SqPeqvm*BcHi;TG0$6)jdQl~1%-d%|HC)NnX_`m!jycwa0u zloqLm%CGj!5-nN)Yb;z2+yuB>xJhuQ!WF=gu0?P&;fTHj{w%oJaC6}1!j;2S!kqzk z7TkO|qFo5T8g2>0=fJOrYlLfsYlAxggwbIb~wOS1V5;7?oE8*`9E!W>eP&pC8LYZxbtTzQ`XL%*sJyI zSBE6@-E!W|<4X_EyyJI|+&J;_4fkgM{)EXd#g4o2e-dWB{Pnst)Kn%!Mir@nRt6^^`t+3bamcie|-Ax zo;~loxqRfe_2Y{Uyf(9c%Bdf}f5ptW;?{*}rH`)8DLpkO@6MBF?Y-^&n_oL+{leIX zG9Ejn_TIBE+5GTTm)tvg<~y%$&$wYhOxpv0+ZTWEs(CA8FL zgu5DUJKRpVeQ*ci-h=xBE*>vbf4B^|32;Sl^Wc`kt$^DIcQxF0xSeqO;10sQ2loYB zd^e=nt0xHvz5)ZXVoHxD{|4;jV_;4!09-AKXE>lfu(yT?Th8+#PTa!#xN0I^1EnZ{U*9Kn{c(2{#$81WxUmg-SThq#m`S2cc`Q z`-dL2XBqyJpruFcRe}E|HLiH*3NmV=X_o*!bbyrL3+M;W>&IyLG3ZYZeN(2WwsZwr zbc~hY45q&U4L1cFdg*wz_KD!PkVDUXXtXIlWvBwJ6QL);MUX?!mSZ&>#rj_cI*NaT z>31`n4L#_29$V8WUh=0_zX3~r)V@Q&v7n-ev^JRiqkib%!YYL6D+FKLj4 zC&2Ib9bBJiO9d6>FYvP!y4?r69)yhJU=O;T_7d3bRt(DC!JsT3ZHQd$s8;=vPUNan zFa&cuqK-QN9+He7JZd2s{z2$V4;^nOJ(toC9@@x8K`DnFT+isj5PE32jpF4!P}`*d zPe(d>=wLp@f2SbSOD+e|=ZV2Oes@3ehJ>pc2heB0pG** zL~ZE?EboOnfdp9eRqM8ZrQClV(EOyF=?FdXkAY8*+Pwt-63C@zCFlPb&c9lv2L88b zU+GcDtKdt#+Aj>4j%d)MHgLh;&-qhZ0s%{YK14o9zO+j_kZ*#eT~f<~fbZshKrJ5w zzKQEG-Ht%?@59lfu1ME^$K(cAcr1xP658yKy5V!EPbfj;SX5&Up-jM-yHxFPhV~`#3r-=PWnn45C^>p zma-nh`pCPh_TeG^46d6udh$#6Ur_qq^n-`Cy-={2?RzH6le(i$8X{i$5Sd$28gg9a zRaoYhXO8>(MI#YMmmQ3OPxXx6C8`I+hu#Bv_o$twcb?jJYJ;iYroM^B50oFWF_kmf zg4$5(r>SqG`bPGp_nGWS?*+A?WMgWR=)IxxqB5tk2fZiMhfx_*8yE~&)^0eehg46f zKcIJ?@=Rj|YR{=pBAZhiMszWH!PaOF8OH{7W(=&Tq^X9q9A9fo& zFKJ7k>lVCM-fK$JXX6ULYCh$6TPNTB&d(EHx^vabUyoY)W}mEe8xsQq4*w)@)|4+- zMqR&TMDuHZ_(S~sS6bs9jUD!fSqrAzP%(1T^{3tNN#^T4Q<9e7`^6(?elTLt#>6k1 zuDal^$70@G_0o5#lVdhtdCOZ*-fIk7eC1=4!XO|w>Qw{j9fCo1P-pXEah81;H zWv@lReG1%fXMK^h7~y3v_qnHS@i{L%vO4GMxQm95xwYe~bMODW`PniQ?qay*a9iMR zhPxl`X*l{O_bprs3V$fvIJjcC`EZSJ7s6c$w;k@caKDFp501_S_l(8IOt`UdGvLmI zTL!ldZYvyJU$P7CMYwn2zJyD{J9#|ZM7R>TTDX;Pm%-ftcQ@Q~aBslTS;|;c$o_CA z!4<;IgF6TA0yw(Z;MZ`E!qGhRL%8qYdZ7XjgBuSw6K(+W2spv`tLeU)yjB4hDbbk!Xr;8ehinjkTFWQ|#sENZ3)oFkU zMN6zqMYnbkitfu`UbOXxP_!F}QB)3u8UmkDbSVX)=!Oc`i!MYUyVB(dF{p5kE$F*C z5!0Sq7EJq$2t{XI8AUabP?H^l>;XuqMmUy2^@&jQZG;oj)hC3aW5}!?-3US`x+H{A zudyZD92==!O`sa=C~*QOqzhA6B3&Lr`J#(Nkgr3IVES@TQhtnlF)`iyKq$Hhf>A4& zB^>}}jp?QuqN2M|n2K)GAQWA#!6@29M1p6+N5V>Y9PUua%PwU)-qD60}qTOADqOD$xqN_tlirSZpmmhj?3@tU-!ws3C}A)C)*Js1F^*jG`4#LeX+4C#3Bp zgrdDAjH1g^2z3n-GKyAQ2}R4VjH2a9LeW|!qiAmkp=hHBqc*TX>CPTjVko0%afwkE zpq@}d+AhZ^T5cp1tvxa?+Rs5K+T6jY{QwEI5snkmLLi}NRgkIZP8>o}3&2!#Zw#U6 zIvGZN29QvKgLNW};&^|vRruz?=r3}*uO%Fz+>LIur zhG{e$VibAQyuL7xzT4zW5weB6{j0l#g5k@d_I4aQ2fc7I=d0<1e=;jMHL#@p9<__5R`V zC-)T0MSQg#?Mp9L3sgmjm)ig$#mfQy1rgHAnftRM#LH3nvk@Q8K60A<5yXefpPWIz z1@YnPpPV|!q>Ub5{^g`O)t_+bp{ z`O2x>Nb=m)AY$W+>@O6fsNbz#;^>fgKYk%ZC>H`tt zO9P0&b1Gc8_T#bu#o_>#_I&oeCZHoC#ox~Hk^1igM~IIatoh#rFI@iQ$Y-SYUk-WF z*C9MU{ihDm5s~aGM>r$J)5-}wcfy6!Z{koDEu%7@d^tjS0?5L>|8lhQ0>pQJACvg0aBIqYa7RP8ced*<#A@xsqeDQMNj#faz=_jYvdPPVt2hZvv#LIcI)e+*K z!HAU}9<}=PlapW*5fiR_Xo^HnB>N5K_!Ld%<1dG^BE`$Gt4Q&3vMN%%oSBMbKRFgv z4*kN_AMW=o`~108k?{-<- zrr6CfKfxCOO^$6X}&iNww!(fj`zSeruJU~4{&w3Ky63`uFI+_otN9bm( zkGsrROXq7f=>Ng=JU?*s<>V^=pnI9=c%BfJ?m5u?k?E*CQjf@IP~{(VuQ1)^j5l@) zqvtS`<%Dl^{%Ibe9^pH6y()jwvjlX@nU3cZK0Qf(E9gQ@NAn8x2){7(>K4%4_??zd z^NddPW&ZMd3G_wLs@kfZcAe-sIqCZi=q528&p*QII}AB2X1X#?-<7>8Kwro7G%rz) zpG@8TT?mq@w_Lh{)7JKOi%L}^+WGt)_b zV%`rzJ;q{M3N%7e}C@{9FdQpE2Fhrq032E9D$DVGZJ)dOm{TpGavL{F@0C{?IO^fov8EORetUOT^ZALm7kYDS9%0G z%Fj2To5^%ECQ^@-PndpqBtD+^OwxMNe6cHfdf(@R{z|5&`J;M-zpMSa2y}Na9nTZP zmggOy+j0R}B zHRvjPXnXSfGi<(Z0o_!l>#E$J1Kp`dpribJ4!X%qNAptkNV$0Wb;{4MB&-K9J;CY` zdIkw!0=oN{?gYjgJGsV*t)RPy>1f`n9^vP*&$XaS=&9|4SGhACgCpTT0lN2@-;Wq? z!3?J3Of9!IP8)-a=DBI-3M$Rnop}o?8Ei@ zr@d(njm{a^_SZdo;MXQg!r7UXEurR?%<9pZ(?Tuhv^F+n&M2!aURJ#%bn>$5mex@7 z$zwBXo2!?F&TDKwC$qeKmIv&6#EO)vdLS&C6Oc>&likHiXLSmbC%Z*gUF)UEVnT?BnwD{kmMEOdXWLaiO-J<5|=9QV##V{?I(;M3wYLr1nIp!(~ zRoB3}|6!`mZVENbC@Cxtr|AEpHe}Y#F8{aW&|M>{T30rO{?iOy(AXR*4b{|DhqLs* z`4wte*^>DmYqS~7)lEz57PtI|*e&u~PbD0zs|hv!hiK}4C2HzgnyOnDFU58!ZqcXL z)uTZlwTv46S>>}A{V24!b<|SYU7?_Yxor)tb<0A6DsOGBYghsZUuKrns}~GFjKfbg z_bZ4+EViYz)itz^$*v+0Q`&;k3e5_g4mH=nLXK!MyREgUjVPf>71E6xtI}aSMG$iV zB=oAGUDQ@v3-wi^f*Dh*TS!yP77Av}2sJJXwKlKR@T~Iu=H_Ywpm;%WswBg}x*({! zw$7-sx)q^%H_AxW_EG|8l$13$E-cJYHUheRQfTo>2X)a#>T~e z8k^n<|CQK&apa#CJDmOA%3mMbpW$QKPjkV8;+7!Ig|P!#V~+=mSVWDCI}?7?f@5Nn z;-UlC6mxlOdUVCiSUY+oJ`F`zMNP3|6S~Jwi9I%cd2DT5{2j5I?U}J@Gh_SV++tlOIzl^wJ zfarBS;eHJ^Cq%yjTsm+Au8-{%cPFH8UmHIY_*cF7TQ&YQFa8$7A0PcE;CsCTjn0kA zw`2c5_TD@`s_Oh7zmv%wh6E;I35L~yAVy_LLV$pv2_Z0n0D%OE3r<2Zkd%7d_F1S_PFfMJWwHB>y`QR3pkK$4VTb0_{M(cuWskVyRPx-#z=RRkao0)*0eqO)! zkKcXe=6#>%Jm)#j*_S!@+(FKipgAyM3GOA z+(XS%lHB9WOjp8;!DdRr$%D-aF82`g6!%Ze39aVf=O{ioB%UySD0Gzc(&0)vh|Is& zbh_NPn+eKF_j=QjwAeJV0M7o1UBW3Rm?r#YxOSRjU5jBmGrr!;O!^#2odl+{jZt2B ziRo}T2UM7u&dm$W5iTUF>AFvOI}ydyg!XilHOJpz{Zeyy(zRytvxzC@Fy}``(46Ml zo9KXfi2gov`den|-%LlnY21&HowHaNlaau%$&=*1R#}kbDgoZhqMI?yoPYdK9?x52TA|v6H zp=RbLRPUXx7Sp^Lj8liA3b|i3M{Y;HUkevRC)4#19_}?KKo=bELkYMP4=~^LuJZ)< zUT2+qq03!?XuH!G7#b3UI}S=OFim$(!lDt(y$tue5*B1`3I&Cz>Y!e=g_JO1h-oHF z9O_E&4MrT@ER(h70F)CX0_#MsDl}GObQW@kjn!GE)fic{12nR9WD*i>1fo#jLMy{! zf{O4nvd1a*9F}Wgzeo19ihX*Rop4fGm>(f7{H?v@$1C}bz4#f5U#s{fF83J{Y{G;z zb5fEU1=sofMF~C!GU^x3gi{@+<2>~ zfr#^0&V&i@{5#XQ()1=RGUvKxn*$l$caxk?U$oP?*XiDAJw1Xa1j%Y^I3K?#p`2kp z=1f=+3N!N>Fek7GC#+JqbRX8;_Z+Ke;Gjio>jO zzT*5;!hHk&Hg8ATq9~4WRhV9surcWFMxYK3RPFL-rtwgc^KKaM2W1MM{uF7-?PAKC zmMO_JrM0&yL!)!}Rx#ymyD6h+$_SV;3Z{&3U1Brj1_b}1GK5c`h#{!whI6|Za@dL5 z>+myX$28+g$@I^huSzi+flSEJ#q7Bx=l2lI=PE!xeJKG>WPq1RfL}Y&lpJS(mq>vB zM7*tXZ4dD1g*%`S?KmrpwOHQNpgOA;X>zCiT7F$ zSM%YoFzD(;)zk9vT0XMUSrwo(Y|Y8`x@I%x{R>&YtDH9~V{8=wqaT`3o8){Kf!wT; zf={K-IxlcnILEyDnd$ffy*>&dI@>O!?mpLdU9XyJTpP@RH=&zOL1*o}|J#?KXKrzC zN3ZR5zKPCpV8Zkv7$5CKg>z3ux<9<}R&$7Z7{+)N=8#KJ6%U$Yb~Br1BbT2w4a-;# zS{)c2pdaX;RC3>~9GkjcH2W_?h1rR)e`<~fI$VD^Xkn~vqtlFx-DKNHCt&5@^( zYx%p6@&gc6(}k}*yPSh3n@LFtCAHq;^g7d!(jA5sQn0poTX)-60i6k@Dm0HE ze+B+#0)GyDCh%s2_r=MU{sX|f!T%-jKHzPFmjZtVx)OLlknhP*Zi={%5ce;zP*3-d zfOP*o@FwVg97sDK1j6n)KNY$jNWB3d<9gZv^O!_5b>-0<57 z4FAYDi~kAmHTe6Z(60e8J5Kv=Aj9EXw9MZJ#QiQH^|S%0r_6Gna|ZBP=ot=Vcn;uM zko$Zr-lze-0o()mXMoh(4W!&JfDCUdkoq>G68IYqTnsdT^#A!7E1f?9(w=vK)bkr4^*jk=Jgx## zU!Bn9z!#u*B9QVPU@`PMfj-~|qb>cf0BPTgK*~J{q~7a+)Yk!|eWkz!@K*$!59F6p zXrC9z@ZZO#I?6ugks^YF(L5vX@Pa4!5+0t>HlIN!z%_d{P9Ak0QbV*|BS#MBjAg`hv0r6km2woo717^GT0HwGy^HO4oG|QfYd(;NP9jz0dJ|p-yvW& z@Fn0LxIYP`Jy!xLUn_JO@EQ1<0;Jv(fRo^F01&^Kjs9$y<^K&J!+#Y>x#xil|5hON zT?1tJRlw8WZzb?l;2a>s=hxa8J~ygT{`YAX{WS1J_`4NIy-R>-T1OWG(L|0u6-fVS zK!)!DQqBov_y>ks`kn?d{MA4-iKCYS(Nv9|1f>75z*m5u;`giH0)Gu8y$ASf_`3>7 zy=Mba5gr`?(*IdNhBpRC z{{w;4=MwtsK~_KgIFRoAOeEd!75Wa~4b&&}D&PUQmkM13qbXaqkt+LkA*z>f$qD7z6Lh z#X#y?AnrN9{qW}kK7erlIM8zEXH*&9&w;N%{!-yzApAPugOFb(^kN{xp9y3-=Lml+ z5aG{BviOTXA7JVIwcz7|JbjGe?F7=^D}?6h7u4G<^f`hvfs~sh?k52muM@@H1!TP5 z#*#1X`3;cq`-w#_z6!|j+JTH;0Qhsbp9!R150K%yfYkd53OD)u=q~xM1Ia%Cq@E{% z%(tt6kHY;j;11+(P~7W){|$Zx@Fn0J;P>G^UFea(>p}BmtY_ig4|pADR;njJ{}q8S zoOki>M)3axd>s5&fKLLS2R;RS9C#(%e*wG-_+#MJz}tW|Z1F5+LF`XEty*a2k;D{>p9n{|xvW(C-PoU+`%lP0kmax($apLP(m&56p!{HQ=jn;0KLOJIw}I6ElJI%b zBGY@1xZeYW{y8@Ssc$=w{x28z79jm&X0O7p6!)`$)RPCKeG|n!9Z369fYj#(QeO`U zhVvj0@tAWv@M+k0nP4lBa%+Lq%Tqg8zLx;;m$m@^=*~~ovtEoB{vhD>pecmEv@e~O z++HB*p9_5(km+%)(EM%*!?^@VyMjQb?>Zp;oeiY?QXu})eE7%k3xM=@GVlj*9}T2@ z3Xt-NK+63+!E*l)NcT5@bblF0_b0{uzr_6~;@&0hmkV-lJmt?5oDZbEGk`1~6M@t_ zM%)Jo?GXAahh^_!AoKBkAoaZ^{5yfv_dUUlz~4jPY#>yO&IaOd^ho?;zdRJkdg2Dc z-{P+fs~#K%J_7zbK(;UF+g1C5woJ7zPXXD!`~r9r@E+i`z}tbHK-49r?|Z;oKwk=E zye7rII4N})@I&KEjMXs^(zLIYHII}kYH>fxz27XY^bHv`*& zZNN6*CSVhABd`|O3akVMffc}ufIK0`56lPt3YZ1NpDR_+4Lk>YGS3DcLMEf@b@c!# z*DbgQSPu8yK%}*2yYROGmxFExE(2ByzXG@jbSV&d;>iP2ZK3hWr3}ffYc?l>#Z3B?w)t{~oVJd)yX{ z)>`phKH%kW&jUUTq(9UV5B>d8{Ivj6#hw0t1R7x6Du_Dc@ghCp=1Lc2dXr{)6Pez` zBZxoouprZ)bdTUc!To~!1iJrl40aT`*P9EocZb-&Ont4+-`N9u(X!xKFTKaF5__!Cit~f;$Aa3vLr^7i<%3 z608-h6s!;|74!+_3+4%C31$j<1=9sn1>J%G6>s{x7v+Wi?qRtB{uoGqyMXlfQy~5Q z5C|}S0&K!~xdT`U+y<-wUIr`$ei!Hivi#=@W&&9cyn^Y1JYkr8x1b?-1mkG(c@i;^ zC(ILj1P==G#A5RI33dza0>W5V7ZA3)b^xycYn$*njwinj*a?2E@GFI10o=iO2tQx= zc|i0>o=o9;g`W;Y|K)KD-w^(hB-Oup4gqOT50K#=1YQHyKH+x@e-H3x@OKHnOZYp0 zSAxGy`0c`P16~Dwt?(;_Uje)te4p_1g`Wr94t}Qay~0liVtnOs3*Qj_5p=Q`UwIAz zmHj|vKk$06cv3a_-NN4kyaB9T!tWCP4&aU8Zv&nWY!~-7ac=@PfnO{9O5s-k8^JFX zzEAl1zy|R1gr6n+OyCCay~0lyek!mTe7Eoo;q!Fvdhibe84sS=&G_};-+HhP3ZL^8 z^7rB2x4`cf{vP4)2G)VUOZZ*F-vO)zf4lIv3BMh<4*WLZHwnKMxEB0M;a3R16c_;C zC;WWj=K*WL&k}y7@V&rl@Y98#DttF^4fuxekMy(Rbr@I)K2JPX`7Hc{z|~;w7ydrs zcLUD_pXbL=ez)*Bk6Hm%m+*H8e><=Q{B6Q-7k(SC2>d4D*9yN9cn0_t!Y>uR4>$w- zeBtK_KMRPq%#$g6ukh1>r+}X-e7Eoo;5hI(AEW(;fk+Y;PmCW4R*&!x3V%Ov1o%8z zp7Pzo=ZR{=!P+hSUBd4Iq7C)z5dL=IZv&nHe!KA7gx>@l27ayZD}`SHOas4E_&(w1 z1BZg2C;TkoX99`1!)m z12Su~gr6yVFOX497k;Yn-9W_>{t*nu7~jJ{TppePNjrOlzXy03Si6DW2J*B>_G|6H zJ3u!9DPJpCDOe#`D(Dl;7t9mP63i6z3Z@FWfwb=kIyr`O7^w0`=z~J<6S`aI-9qmY zdWX>4g>DzRO=!*^sJ~L^QlWi9=Lwx9v{&eKp$*`jP;nUJO6uV}g4iQ?P;kHCKEZCm zJ%YOhcL{b0?hxEAxJ|HKuuZT@uvV~AutKmD2vc1?!F<6y!7RZ{L9bxCpaEpOj>!12 z2T1y$(EEh$7J9ePyM*2$^md`!g>DnNR_IEhONI6cohNjb&|aa_g?0;V2z{7^8ulFm zvfLaLdcV-!LhliJm(X28Zx?!-&}~9D30*04h0s2s^M%e5I#cL$i&o=G+T|907jP>~ zrQS<{wZKb&l|a@v>irJrJYYMJ`nCY6?_wbJP>y&9Xn-n@#P5NA=p?mn;o|SiNE(;= zv^;R5(0PJcf?tofvm?Sk6`*9e|1_&W>&81DmuKNI|s;Dv%Mf=dM#2#ysTF1Qzi2kLu3P`&`-+9ve5 zg5`o)f|-H|f?r{=)Xts zQNdpdeoycc!Se)H3T6pr3OAK=WrD?mZ)1=~_df`35^NMq5=;=hE!C30L2#nrctQUDNPX`Ko+g+f_##?R zx<4(rSMUMBdchjOC(-y){vpBd3T_cxBv>ezD9A4c(ceD7ZozGW?Sdl(hY0drX8L=JAjtQ5=_^a>h+J&EF9uuHIAuu?Ez&?{&N_Bh4A zV3%OKV5MNbpjXfk>_K@|_6v3iwhLAY<_mfS4Z$9GR{jOM1lt8G1@i^Hf`(v^l-F*- zF2Q!eO2K?VuONUbT)&WfoQ?j(1BSk4pnW2(&l6jL^1{>jw@>#r+2uAJJW(Lpw%jeeUd0v4{OAufL$bp}am< z_BGL$HN|pIm+0{!DPt{t?V_&$ z<5lVlof9keREm42#7CbK>kwL>3p-81)91jx!SVrp`rOxtMBjeV_fN6+ZIp9fmwPRH zc8mKj#a*BKI$vmg&TF;gpFY=hQ;HRyKF4*4#Lt_h)Ejq8dg^mrkI;VBC2>Dr;-k-T zeOtZCA`BDUJ26!@xQ{WoQ=mM{9Ak3 z@q()FqVECr(?wpNQ~CkI_F$luI@j`l)gUW8$9Rk8enW=eU+9~~zdncb0%@=G zxuZkGU7s`hp7_`2igNx#eeX=L^v@Rm`rJ^D$m?@LpO^kZp9}h#*f;zX%m0VsK33?5 zM1Qu>BgDNx=qJR!WkPemBkidYdaKa-oX!UHD;|{T$}%gw^L2U^So9c-FPMH=Lib?2 zK)O`uL*m{f^f^Lr7y4w;w_E62#eKif_lf&qq1Q@z>XQ8ZFZ7$VFKdBi&kGoDkS-OP z`&USNi!FDxE(bba=)1*zo6u^#3+|Z9b2{?&G3-x6u6h z4rzCZCC`tFDECr}<{5OP4=uN7{$7v*o;Sy$ufh2F#AJ*|@-2EY>?O_3*t{mAJfwi` z&R3-IBRrGdBlL3^&ye0N^arUHy-Vn?pr7t;(f1Y9klrEgUyJ`kLi2Z3x*rreyT3*6 z7y4Xr?-AN5{tpYCi~30a`-Hwu+`EM4zCyYm5&DNHPo%dAeUhY)FUL?mAAQ`^;M6H4UL9rP|K@7#X{k04bKDk5Ux4^V()^t`l3r<}U$KS%g3bRhl)Xs* z+@BUne}(*wqN=`B%J}9BI(C$>AT(L{-({|OKk2z8@=2{SK8<^ zZ1f77y_;?E`GYNe`F=^H{UdDY_kt~b92=@4v&hwX_Ra$gx;o>D_D<+Y}BjhBe_exj0Ktz&;ocskV7gwzhpx6Xg z)dgz{TAJ{*oQIheH?-h%BRa5#%xkXNq^eL$>@<~AeS#`6Hyu1<8IC5v!Oh_(&K@ckc{!dCKM(A3bVGv|MuBH4La zvHUg!HmSp(mg6YB%>_XoDmAMrSd2>BHfwSn&ndJ_$Kh`=>v>d}lmOtnu9_a!)fd(W zs+tQM>l>R%MfMe?jW~%a&>U6orA>%#cf%5)1_8};alu?1u@`DutzsV*wVHQ(6KR(U zDU2g%#n|3eh?d@sMQpn*@48)Jf7+Ma@}+SF!tGKlp=euiMpp|Co@90QRW;PqBcc1s zzD9LkSi~t{v8APPSzFiKf+B(*ueT4KSWC*5v~F0#V5JZke!qVWn;(BopryLGt_f|D zKe(aE@E0y9tGgg@cA&XYx|cvh>xO{UU~%BVNc3q>9Zk^{M0B8Is;cYT+nTEC_3N5> zuB0lU3z`FgzCEl}=as35OG%e;PM_9UzT|W>rb0^)0sE_K*ZbF2)zurZ`r4Mdbq!T; z(n(fdhpJLlkF;!DL%!;TtthG{9g<7RFaoLuFR(xf_2#29s9rDZ&=4)V&VbjF#&x2U zT}1#V(=|4L(?`c%*HY9_gGiyCw_qe>_}A-FZB_EJS{}`59dQ@oSX$N662yq9bzLpW z&bkd4Pen^cjqR3{X$5^);%{okX{ZgssnsQA*N8{^;VK+WQ+HXO*h;h55@2uq=|gd?)Jpp}_|mb4{Mvpj%~yJ2NjeQV#w z+6wnvCEwiIP|&iufkW1Y#@3el%}X29>5AceT-F+(VhENUk6a(wBE`P3rH=L2njf?V z`!?G0)2o|`@El`YiZYMEN>rVQNU#uJB_CU(0-P(jF(84EF}JRvCPc=Hk>qGA3;Gg_ zhg7SF0h2m`u&}C$L#aMXj_OB6uuPw07*X+gV4)}ox1V#-Fx3aprL}CT!!eVS)eMYH zLhg)7=jh626-IAMASg`{2XfNZ6i7F|TH4*ZhK-Hu5e_s=kEKEN$g@yxMb)e(>qN#` z$E#p|ePdPdI2Gi@vY;3vf^~uB<5Mv$rV3?)8br^k4>YU`)*hd-+?lcL(eu}TUB}e5 z$EjmlEIZgD{44%f2C8%aMgLQe&;N|vUiQ~D)TwDtWWO*Ub7re)pS3os8;Ee|Rq9lW z7}(Gh-0ZKes;*Tfxo|#uJ#?t(M$~Dlh4tuQmIrW-X`rE6NrZdbb*)v+HPRl)47Sf& zYimN62jJP(J@ItWZ=$21zNr=-{Qm03rp^A^Ks}D|mfA@!Mn>p)?GC+Cv;l2U!A6W7 zxc(w7mm0CJHe$$bDzuJDWzrVvB@Ait12tCL7Q^Evq-l$7fg^_4F&9N*_+g2N!H!%i zh~YfBx~Q>URZpM&l43DVe zNVK*D;&mo5^wk8a>M?qb;nD&Fmad&YcWErQK(BFnXm;0!xE@O%kF08&^o%iv&b}s? zF~s}s$$FP>YpJ3}S%I$0nz+W+8!G(q*6(J;@F#_`QK}i&Z`hD=emg7JYi%T!23S=c z2p746AZ^8(3>Segpomxvisf747wVfsS+m+W%{~g~Z4U+m5gvLq4oK`i`^y;Vp}p9< zl-QynvwICGdgr9p9J8Z|Dc;v`A*P2uBO4m+#Pr(dP@oSVaXS8(K6D{IzQnTUK;QO5 zI(8Qx(~^RQnxeKqHOA{=3+9f&Kp~nSc8YpniIRc8g`?0sVs|8_Ujs;aD%n%-BPdyy}=S$Xp=Rz z7=CCe7sVnfz!H2IB#sgG!FC^_z3WLI!nQ)#horK=R<7cS$Im$=WxOcPjb5O^0BqJe zF4D|egW2q?DvqU)I59_4le1^cj60&5oISlS$7y{z=Jw?{RXMJSvC0K|^5R)KJ+8~N zxGuSIU8X9Rm?KFTF@r|LHgI|$Zqxd3%k9H0Z+g5)&rmM0Etxs3kF3j6joP5_ODMPX@S7shYEYE6=#h>RK%R&_ioMlRPukeOdvM>iwgzE))HsL5VeRSTKIEyiR zN=}|Pd}Zg($eA{M#>{D8PRq)MLrxZ5v$L|M=jM97Q>W%lovy?ylk^H;`6m2|%%5Vc zkEt|bYYM)b{qaA!1qs_`)V>aEcQkfm&xhf~jSJhw4W5}0@A9m+TzC!#FHJ)yU)50G z2q)jKen{q%b@~0}MS9Pd<`HWpEUmAnR-LQC!*SXp<*+V-1rRRbTbEs**0V-7tK?x{ zXXJ%#G*K7yt&LRZ_s=URF9?h5$G#z6mFmA?bYY(@)2wL&US<$pByimZt4$%6U0;@@ zSH70OK3Z(GG`gUVXutf@{04%x4H)SmJ)_gFN%Xx=qj2RzU*y$0zN$HI3Dh?S*0wNz zqT^eNJ&?S1Szvgv51FdFVIPwcTl}z7DSU~2`0iSjV%qf`5q+iNWuNG)Z9w@7s|h`c zz83Z~w9u~4C!uS<>DY%#`*uN}WO*$6>NZw2t1#^PN<|vQOG^%%)Lw$=mg< zJw>sNeiC7fPwiJseN}7LV9KiMZvJtnSr!=gERlyW*!1D6mh}NY>ju>I(w9_dd7LQa z`Ss(}$5Kt7_V`Yhtgg4z8ZK`1jK1RA*Hl$)*LSDr8!tMVk5ixZF~#2YJuUkByDWv@ zKTdsEhg2%<_PtbM>CyJxUJ)HxP`3D1H*P>YgZ|crP54#R?=P7b>Enp#)4ujWAG4+j z)k!LvO<$naj~{r@wW-VA{vDD0+$FyDogLjiqx;iMxA?c}Z+%^Z(rAxw*D@=d2I)7O zWE^uC_DTN{W#35*MjlS%x3pf)`NA3MQT$CDd=~BG#9j+P4rX=LKPlzy1(wJU!uW z%8H_R=`?>yAgFRELM}#lWmqw7t_yCC7arrMKfS3m#S0H|QMRq{b-Yusvdq`9-`6?q zObohwSElX3*wxqZ_)*nm`8u8~%KqGU+3$k`d>wzXc*Px0hn`D14xdwS-s&fnqE%FN z=|_3R9WVMizV>yzrsbdUb*w(<>oi|s2pvT|2<&C_48AMBeXykCtCEht9-`FwsEI z-`4J6p(yfMp&}7^61-$rNyq2Nn2^M5Cm1CiN01@4OoG)a5svnhbbNakGITfcBfz*t z#A7Jq!FR4oIwvu)3XZ-4sWX+-G@fZmM#nQM{>2?nK{y#qRZL#_G-Xgx7yd2YfgJb; z`W>Xy9$&{FC9$Uc6|Byp{T=hhr~5jK_WAIDvRkyr*SWYGg?Bs(Z{qmumrFX{`!pq$ zno<|X`QmXewns!5#&$WYxy(t~75=>R~Ea;j)PX5{1DI;PxXPi&PZkt^xUWAG@& zJVUdj<6YSJ*qcb%j;AGsv^tcgN7;T`dY-iDVPT8wn_k)G#L>8yubF2*Ta?{h(z$ro z@d#NpUZOCslda1%z5}Pz3-+@F4NV50XK|o#AYRJ+aA5N~z9{Z^+=>n(nf>|RL~W#% zCe!Z4x`-;iC~uMus`#pml;6` zya3suQV~`eupm>nLYF-o>@Q9qCdmVvl8&L0RuMeM5uelQ1ulEpmoo2&ud|=;(w?t< zNB8+IJ(AFDreq%Y(3O(8KPB_=l+5QMk{Yq|A$C$d=eEzDimE4ySr1b#YsV1OcV$s3 z5+JxjD)!Tf$&OIhR?4m|8O;O!n$R!=lkty*OqI9x*~$2T>)fXkr#d=)11^1Y(4Ijk zPBR}5>H2V$a{MOhv~HRarL;9MyZb{FJr#0iNixHm`FP6p-B!d-h_ET;hR5CeS_i&= z2dvrJowD^Npv1eg#7U1lPQ#dapmk&@olDSxcP#Glb+Ub#=X8HK*ylLt>+}iN?d!}( z)Qb*6Xg`WdH$3KJhz{01RJk`WJwhAWqZ`xxXiOn0jcHN#QIwYWo|buZ0ujcxkmw#}#aHY6vm ze2(()Z6mg}9E-1p@|+i7du)!eF)#njEGBZqwa=P%h1Q38{$b>$-EWe0THErcq22En z_rc;>uj@wY;&Y~*A@oz?Ur!SCuhrjl%c6ljT`Jb$?LOF^$ZQA~Eo+C8(Q3V*B@_d+ z?_D#hYHC6|*=AvmZQJGE+Q8qL4eT1Qb~Ic2==FvSqoua0IZ%V05*x7O#Sgm|sy&k} zdbgNi?NF2aS=z*1+AYS~0Ja)Oc+y)Oq$r8ltj31=&Ej*Gf%O8czy<>m-VAM;Y#)iS zE7=g0hFTrfRJb-py^+RPs$V(O?gYKt%;;-x8Oorw?-XW5yk`)xS;W9*a_*p<&(~R$ z@rAVkq^Phln`>;a642s*!>wSjF3vX1P;4SnEVR`wq$X= zABxwTf}aZ}Vz|#MO>mT8uHYiU6@uRqY~bvb(9#vd*6_IP=rLxP|><1~@`r}*b2%dK3je{;p1-y!71 z`5Wgr`l>sI`&My3LHyhGUnlOvBlI(m^~H0Uc*S$qziZ4D|CE&?%twRY&*K%({rAUk z|MVE{ru;q{Pyg^^xM#<4--<}Ej`fqsye9SJo7R{7oZS4ZS$X-{(~bP8Ir0dmu`zo( zDPyC>Z9Z>p_H_J%%lXkR@OnPwbF(Oaq4g@~oSK?%gFh96KFj|yODe)So_ube(sSmV z^XrPwrxI+F$RDTMkBA;^96rpj%((E(Ipa3+UAS@QkK;>JE!9=^fpK-?*49_8YZ+HO zF3^PY8OELeZGK(Vc6mV;@Yg4ANy*B^7>YNyUJD>iap;U5!)7x4c|yaKca&%f|ZJP+aFc~^~06n5n$ltRK^;54k*s|V?GM1FBkj+#WuVFgUiqiNT1?Nk;nu4-9tv?4R6=JSbIsA>o^t1;XU<(V!h)}Ejc+eTXNuVA9k*jisxwxO{xSX;ljj5SDH<}O`Y zV)z-92oP8$Vu}*lp1TAjdSQl7@A4c#t zxOH|#d84HXvkOsXAn{cJ#Xp{gq3TlPEDC88;1p%9npyb$EZ2U&s^=K#2l3n-Ko#A{ zm$dxzTN|oN@f*LDx`t{YgixtVAJcP@rmEPhf7B6bK}1%i1!YzGTVbgdMcj+nx*)jl z3+*86JIIWXT^zR?0d;5&BCFmHlA5e%Uq~?7290|Ii3aMv-+S6eL6wz{qi$i#BXmDC+Sgp6Qsjeni3qtMHG-?`KF-J0L13V2x zPt&x)L2GtzEGS_yH8#|#m%$?gvogE|ZH=5EWStR&^9h=pt2P_es9eyhPBf9Iqk5>* zBO=!pRMM%J{`4EwRuNTv#Mbtvb?^7O@#cb6DqB|Jy|(acZR!QSzF+K(d@ao=Tv=Mz z7O0=AX4H7k5DYcpk7R_O{rK-Iv~n=!8mi z#Hma0)_06I*n|K7tQ}2EAG7v|AH&B@ny22uU0O2FKd-o~w4l7uXPtAU zj?bEtHO`pAVI2C#2&;crS(-oHkK_@>Pl-H z8vGUrH?i%B6W(&a*TEL_~XK9QNe-|BVq^1f0p%O!y@eGK99wLn!2ig zM?Uva6hn4J*lO+V`OivJWmANW;rCXf2e#g0F7d9$$mm$Bz{k`cInRn%K925GBOJnk zep8Y&12Z~w<+$Jf%=&qz%E z_$TDW*BSMz%xWWw#AK)#6E>W5V@*IgYQ|JS9fMYMerr{Id7~PQ;yn(WUsb)K#waT) zv8KmhVS0?y^rBlIS^kL}_X}%sulcB+qUtln_)?Tz$d4n3YS~P1wA$E$sUe>AtQsp| zY$-I!K-Gi|Qx4mql1#f^6BrRwzg|&5MO6#xyjK&_a%+((U_|7n^^DPZd81XA)u2lK z=G3azC2G`igDUt-n_xSZ9m;}r_4R6+W;9_XY-xjXReoAfn6p)2IidBziSpzyR)l!A z2X1KKPM~6!B4P9UpkC)g$)b!wQi@ean}~hHT+*|{~)A&dFU~u z>O8HzB+Sx}5!!e6(w-&J$`3_vg?_v(#Ojsh+E-Yl{63L>JmjlaDbT(OLn6!c7~)phPQ*SR%)MEL!TjTOov#E^Y9ZsoAC@;Y}v z;baPiyo3Ui2OZ|G!;#UCQ^jwLN~e7t3i&D@DbitIQvG6_DFv9b#6^x7s*E|YWn*jK7_&7v__W!J`z4`f%T;A2#Wt0-AAQ3b%ug~ zeyGy4HbF%Jd`*Xg1{0y%gT6)d{UjW;e%vC$$fQnr{Ck-7Kk~S+zojxpR%+dU59uyX z7GLv1iptNH$8d1vy@M;)!3_xoSH46ZSA<#dV)vVn1-;6^i{hliOu*|o`dK4*4*je{ zqn!P6404?08Dcs;sjiWpH@6IUXG`)R$6)k13Au*TQ#|C%0ke`%PfkD&?wnv055X_q zDGJOX4yPwMnU3#n!Nw8SD6sP&)~_AE*B;seuXOux3)*A%K&6UwUQ!N(`wxS#(*p)v zlZL=`Hui)hhqw?KFdp19l9TZ`Fws#wWWxX*9A41Qgxe_mbe}TB@zEAKm?1k-ZNbC; zAS(c6=3vWgd|=$Ni53qX;&^+@0EU#tU!aGjIZlQ(CzvXp=|db=Eb+U0WHj(8b>)p# z;dATZ)WG}VV_@EQF7mWri7Y>wn3U|`S0g41&!nwWdWVr~*_$;PsRXZPD9+iY zrA&FuNi#(hXzt4HM*qxp{7sRUeYxcQY1>(cMhC;SlfeB2I)v%fP7*~ZJc2>%jG z@y|Sff9}NjsjfymBxD%}^{w_}bY zk^6y@J|>ZT5B?v;?Ho8D2?q9a52P-~C_KB(ex7U^?J2^4hvzK(Pw+J0zth9*4vC&y z@Za=s#OLz-3IF>U1IGd!pWqiAH-uKVwaYyNOs~(inM8pToFxf)TAmHs_(s%!ZVcc{dkNZpN=M9k0$>DQW-c? z`8^7fH7MaXMXQR`hGe^8!B4g2T-q8cCd9+ph(vyw8UB3qf?SRiA^je47$X z&(oA4)!^Sra*`sqMU%IIWE7L8DA)U<$)}^qgCJFy*-Dt7TvOy!MfQUlMXF3Ql5=6l ziLkhT{($j-1V>^%ID^i^vm-TmIi5TD=uBLN$H7hKQv zFStKwxeR#>&%aR5?jg^Io(Bwh70(YVe(I1SU=0jR$VkVY%4gtWCMG@(<}k+zF9J?r z{V)<)PLuzL#~wWNt4>evch>Ot@Hi4)`<(+bhNr+WkJPyd8SdeeKrJD)Iw51g@Ts8A zB6VIuMyioK0goS3&!l9uoyM2cJ!XIdLZ&;p5S-z7>^D7`wx5K1z?kH}zzDW3{YsSY znG~3lSO?h=4kl6RkO2O(QG+c*8bZ%*Bl&s=Z3n}XK9VrXlRErP;8C#AM8Wc(Yie*p zM&j^CG&O|rcv4eC8INZ*m4Kd7l;2^m9&|4CCPFe#JS9^MPqz=4VUyqWnqp52}i z;c}gX@L8ffqfp~>K(JtXMuRB8!;N$q1ELfJON-}3wDQT7VDsx=sos$aQb!FR2J$kn zQ%5r{r)g>otT&Rk!(kLyDW44(4@h(?yNdBRa7f~h;ApPLvwKiWs*4|%g9gLAKygyT zmRv@e;i#)@^w`M_8&R9eDT;a?S)2NmejZhe{>ZAD!;nE}@l!R490EBUB$I0xvIyi@ zO(Ks#PShka3GIt2UQ59nn3DWcz+HUw4B!wwF){gm7{VUV?3efyIOZHQPVN)@sjgQ+ z!M|ZHQyh#(buX+F=Y&)y4!2|mai?b_Qef0BwEI8D{VMLw7|o4#xJ)>Y`54dSe-0%7 z#2eA!lR?7EZ)}H%oe_jF>TaR5M`-MSIy8=UB>5CLsDHF0ais#&a&ysb47XTQ?SnuS zj%JX6p8UMN)sq{C>(z&%QrXiiX4P7H7<)gNd{nSX@TSSV6gv7lq+a7g_K zQjQT0Hqef7bh#a`hy0q%aY$6-Zcs0i%HV3$L!cZZ7Ex@hR-@OO94k3qGBLJtj2Crx zLN2WCAgHjqvB=B)R5zaLGFE|9+7)Sx*IMVI&*9}*c?~tsbU04xg6N;=bLJr$W=zmB z%R;gr!xFwu>^ReLvSS6?Twu9EV}cf|42h3IS|+7Li5r>P`N5FbJcx~>7zP64UWFBm z8#mWF#tnc_C~iik_VeE%zwPk5mVOsH9H%%|gnXXjD39=`<@LgkV-8ST%ER!-bB7$OVCxi^5eji!TcoWS1JS}4VN~r{^&`Y2V?D?vA<`JDHR`1p$I2xr zqRp5OIxcry&-9NU8|_E0PB>Ox4!_)e>$nzHJ&T~iRviTuN{NhV$g(P$aV>`d8S6o| zDw07OnOb9LNn~XYG!GpF4|hOw8e7Fs-YfzY)_ez4T|!lNu!YZH52Q5TVQJPH^)iKH z9aR7 zym7J$hAN6t&31>Mjl}t= zh{^nP^p6>cGx04vCjFGpiF^@Y6q!(qb~;s#tye0fRS`N+ja(EpxhwCwq3U0U_^{CK>p9-1V zwD#fCBdByEk*$=I+7s`Eh?4_e3H8UOa?Sqxy{qXIfPyTA;^sjoFKkWF?*%#e?*Z8YGxcH3`Wpkfc(KLNw<@u`< zTYvTFUpA%|G=ArmoKwzy?W+TSKI_ys@BGCX>%TY5xJ1|IhosY$>|z!JHRMVEnnb>v3O%`wHB*;=UL6!?<6-{RiA1;r<71 zHp!!KPsBYNcM0xuao6L%2=^7ZZ^eBt?uT)|fcp=)Kf?VF+yjs}qj3L_?G@sE8WRWC zLDnMR21!)aBY-{$EiSJg;--5R30ya_6$Vy`yXu!fza%w9wTGbBiGEdAK%avmz)SUe zz`I2L3$aJbs~#8bMdIEg;oT(Rson$bnpSNY=#gUoJc-Za68 z(f;R(JqIK_)w01|r;qA|Kx_AtST#YvDdDSL5wuPp)wh7w>8(0u(EpV9sa7n)e+4TN zXdVA=iGH1aYJdax&!x`%8R<%SP3yWs9`9InSA4G-F2eICaRih)nWQUlcDM{Yc|YK zuDTARbx|iVu^v+=<@qBj>#`U3Slk)7PsV*J?$dBj#+`%vp(RHKynp`YyFPg8+#d(p zir({%{OIbgA3gu&lDnQd;imWR$)25f)eRMwjrsZH+BehAp8omP4X>pAytR7$fk!Ty z_Vr7jwXe8x=c3!|Q$Bptd(NCM?|$pqAHQ=`@^1&-a>+%TMtPn*W%Rb>FPpx9aaQ}b z zP2RV1+Rie@BkyM5UWmH}_a@xm!+jg>U*UcZ_ZztR>!cHjJq-6LxN#_f!7neb!QF~` z8}3_h--r8g+`q-m>GoH+2O=Z9xH+kwkNYg#^|-g-z7{uUosZ#u8TUK5kKj&51B``M zH9_Z4l^S)A$$i_4{C-Gf^!<|LXd z&ZtEf7d6P@T8DV#ss>qHB@q@U8kyQs>!a7MSj%~$-i_`SaS){NIfF!FFx2WXWHCYq!Z#)ne zM}uT>Xed$~b&|yquIS>r2w7Yt5h*Tfk;Sz#k>XkfSzOl@78e-E;!jtCa#;lk1#0VR2%A5j$MSN!w{!EwQI!_k)NNFC76y&Y04^6cdg?PgIqdQ_JKqrj7Tc|zepSK+0JY;!0# z4|o6jEjgAGb!oZcOUS2P`?37jeAsZzO>&Jt}8<^XS}b6{MEm((y6cTABJ3;$g%vXOY5C)r91V#4Y@Z(j^$8YS}r2q z15np;erbg(hX-Z#Nw*za(p?U1r#O*>^Ja)fV3X# zHEr-+KawL*atC_y#tfu@qFeU_qd9 zLm=3^*`no*auA4ye(f3*y5^{Nv^6W@J#LE?3f20MiZVI$dNo8;VuoMu1qT7O=&w10 z91ynLmJ`Y|hM`Cp>v9fvn1hqLu))Z^*BszlZ8{z@4fjy++y}u-$Q^8&t{cput{`x$ znXd3`bELvK<|sjnKgS#{^k~5`3ePZyDRjSMo`8pmu7gmPuwXC(tTY|hU<27E_ort6 zq}T8?-yJlkI!|9{=D1!p4VSaXJ=p9|ItxBYFEmef&RJ+qa4jTRsGLEMx10-Sn;FhC z7MlH)^Rr3Lf`!gA?^W=Waj$76J#4z%uOawXO^3@p$22yAS7Op$hYM>%S&F3DikxbC zlHAuq+debNRRVk!2ygve(B*Q!U`~Rh`Kmd>NQ=ib$Fm@&XGHvYj>JRcA9Cro;L@-iwM1K&VJim_O@xh?K;a$=rX;xn z&%44*zf;tXOj`DWIm~$h)y_s_kkW;w!+oJ?oDETD&Zo|0LBtx)LDw73Ar)f5B2^9t zy4;tV8PA!XbIjCt%@dt#x10UXLXHGYx;&>!h6ll>y0e^vf@aba@LgeMOg2x4zE9!2 z)m-gDrj2*+G)rcitKWtZmzpOgWDPO);?500JzECN3Th{h=`5s0QH?Rot3!u>%YR*Fa80Hpkd!e1?PDey$_ zvw)NvC+GmCgMJfj9QAPBkNzJPybp+#=h00-{3B46L+Y12K1+^e}KP@K)iY%~0{<3NGa~1F`x( zx*15ha^Mu`Lt#_&6yPM#nZN=(%CgYtp`d4j{wF#YhWiEZbkH9IDfb2tbJIDm0x9| zDR&i+;d~cZ1iLO4ehZN0jB{X?m&HJqqcec{kedL+THWY$AoX!mE%kAWE%W;@ko@<7 z{Z9-3F(Bi2E0Ez_C)f^LgmAtEM7VSOK^t3 zeblh(<==sf|A#+$a?uJAj|zOAnWH1K-$v*WV&1cWIP&y zOqVJk(*tEo$)S!Y8ahhFR5|KyRdP;#-90F2*kMIuy`-8t< z`1^$44Mf@T>=FKM;qLJj-?I{J) z&U7HlAAr9!durea|E_ZdKR~2Oza_X)ut9LVAkT}X+;dPyd_s`tk&>#zM<_KLZ zj6xO`xa;4AE=RrdAVT?&kJnW~>)&}E6I%bS^BK~g z^7?lir?~6iZT>2>{+;Grk=MV=WD2c+hj~(H{kzK*LhIjIIR0gL`gfHjc=n*|rLx1q zwMponREvHIK=({E(!6fPO}ZA1y1F2rf;7|Lc^m>aj;(izfBvdZx=ZM$5qUgKf80pSk%8~RX&=pCuUyG#mkE%L=@7Ua5 zxB35-&E13aiPXpbB$A$n^oXQ6zKo>b0uf1nZPWL-&3%b2{{OJ)<1WfbeYP91 z+rsufZ`jtqZ@E&VRDxqoQ0?+qLM0?J#YKFpb-=*S($&lUoTe4I$iX4y!n000FD$pcqLPVU8@4_CBf8QfHI4G)-1V-}gFPC8m$)=uWl{((mn6N&$|8>3tqda6^+J zC)AuBXl|6UWwXo{PWW*C(0TpGZ=PEF?c1LuMD&@B))#G2{PA&=*j9=++X<1@QIaw3 z3nh3x>VZl&IqgZljnHQ>Ypt^~t>ZQgzh1QWhZc_gJk=Km9{c@E%21oDVLA@1sj6Nt zC*7{AmteB%q?Whf{2z!k2GdrDBIjnT?=a(TU+WkFKtl2m*7;=>VP^7c3Eqn6<-!sZIP|K zL?vvge8DDsoanLrNL*tbG8)sfPNS%Rt<%B!Ql$^jZ}4&acuYE%K`XG6=nGMpKQ zifjFhR@{Kosd4!A@kBYCC+g^{dHQQ7$Ky95bB@Ea6dzlSU(Um|W0lj`;?|+NNSK)C z4f53NZ*t&Z9|z>cJq9o8)V0;|4{Hmbog8X?TKW)2BOc?sLC5wGQBGAJ^x;Dvwiode zXv9f*aU-m~>0{KsiJzzg{Q5Ahuk-Nw@D_1~+bkTptB!x0)tCG?J6W+0P5KDX$SyJB zxX!gvhhs-L9EVC|PsG96QGTPUds!<^8_tPcd29`D)NtnbysTAYj2I&m{Ptud;mXLK zGIhE)d}Zg($eA{M#>{DXUhlN5Y&hg((KS0OYkF?3*E@CE^z0lZUYQgcT-P=S@VSGg zR(#co1EI-{P%hU?Uw!;fPMt9QQS&3UPY!DZhSw6n8mCc#d3U_)_DajeOFy_Y4V_%y zx={S2-OMjdm?VMAL*e2wyA^rd^-b^9Pv(Zo(pK z&FTF0& z*TULI3+?*0i9YRjm*}g7KFRV}_Tg)HhyX6TzU?;qc8k7Vh6zLLQy*oCWnYiYKK|Ij z_%_A0&t6`l^Y^gm^Gf)s&=;$mh%@4+@>ki%0%I>PsY5JD{1&3FEa;28;*^(=k@ob< z5`8L?P*f`MZ9{w)L@JhNu@Ad|YSp(c?Dl1`km35o0;6=CJP5?IkKfCwuWJd~?ej|g z*X1QY!^)4{t$mjleh8qhVQr&bU#3l;5BhAEt^C#CV~*>%zN5sTZ&kta`5`Y^qVG*v z?=9`EFDlCXbP4t0n<_E&4Vq}F&XEXb=Y@jO4>9#styzPwRjT?CWnW>g<&EpIysGmR zME;AZk7-9Cdwj>wu)NN~k666s6E6T|NKWJ>wiCcb>4Mq68}=) z>Kc?rdwh3GU;GytzwEEHH05s!wJ%ZjodjpAf#4`f?K$A@-i8nIRJH9Q^cDCam+BW$en(Cq5R;m*PRO|MDtkcpedOj7B?Z(ZP!X#L#-Q5Z+AfFFx0$7iM1G`1;8%6W0e z(pNmMSe?fZCp@J~DZ#%udaQ38#CNCNT!)DlPWU4a5>T9YQIB=Z^s(ivZ<}x~>v*y#`*YuAzYh-Zb^OWV6?Z%xdM@cWjIVY_e{DUl zxZ}m>Z`(hEPle+v;%3@ls>b)hJEtY7z`lL3q~oiSj=vtF)d;Jk}R*}8|BKW?vvUw=eX#ucUL1a_sn1!O_={79}06`|(}#-6{?x9bZ^nU+1^?>m-zP zLt5c0=XnudIWJgMu(F^W$^W&lb51E!q;uMrXz%1(^#w;?^>r3{#r~4cnF~8-=RxF; z5J5)qlqe;#$Xn9M7RQ*|kvNt#~UofmumA9rs8A60e!58s=aJ4_ZP2_b}?fq(=BvapCiGywt$CTt0d3x-H0B$@@2 z34$9aU`Zn_t=ii5SEQ|4ZLOu%R_g{;t5~}rZPl(WMT=rvtJYd=%m4d5=Q%TXmPG9D z|GxUZ_cLdn^E~G{&w0*r&prEDdqRoR=vFscTef?>HD3(F%L)6+86_%A5dsHZV!;t#F0vC_l0DT+iB=kI?lAx;RF%Y{z#LEKuo0-`a`|wwD z6EdNZ!0b=gMZ^;GQJh9d{U*~0NW zI3$yLXZ!|8@ev(`Xi~hDndObVH@z0n$h(N_02+O(6gtwQqItk7!`@J)+<`}Sh%G7< ziXd%}Exi+35o&eME70@6i?H@QE~#X62G_%^leMfzlgiqoWPN}T)+k!YV+lf7K>ARD z;d_nOXbg;6_xsS!FMhJ3_+WK!&Fy{Y9>b(-kEo;tz0;8nrL7ouLE2aM{6}ROl7dAo zwX%0`I#Owsa(zN;snR1Vb3xBPs(OCt4w@npWerY8f&Cx}2bk`~@7(W-vdO9$TTr{G zw+*jCg`_#&Jz$bq>OE5gDQ7tmCsjLW9b;a?M|I7kqI)0ndE4Aft2+?&m-&6~fM{J& zyR5S3sj8k6l|9eua?3B&_V?{@2|iri=SRE^MeQsMy>rJ@^?1jaVs6US@q&|OE@yRh zd~{{68UpJ>a20~VEBC2Ltp`3-H-7yIh*q+!=n7cHZGX=WUtGEKNaoJn%;_Fg$vzM7 zmAaB`rFHj}$BK`zCV7FC0RFNoo>PgaP>BHSIQ?yE#dF;YFIxbl%n$5`-Dg~OdL)L{ z@rhC9EI1$T9)8)-DDS|_(#8F8e0iaFfvK>!|I-c!DtA8FohuB-2e_n0>^*}elT^I2 z5wC94Z91(zvyMl~0qg@RJ^HKKJD_s=3-4E+I8?d)-IPuzv*79DzRZHdnFT-0EckIW z%gyIOrJ5;ev$oBhV}{sd{&J7FEjJaV=As$^9HGk9+6XQNLBa zOVC`X_GDG{2C8~jq57?3bHQEDDe~eOHWn}uSfR}cz6I^PXYd8_QX^04|k;bX5-Q>sUB@c?90ZmJzHgDdsWW@1oaNBdTjx$&c_cOh~b zpWCWlA5sRHEMHqKxA-7F!H0Kw)93B-=EIz(-h@blLDyBf^cKIP+ffZ+3|?Q@9S-64 z>h;ru>arW$j58+~=b)w(WTH7bSALRgB`3)@ZB7uwqFXSSPHjqp9I5Z_47tPW-yH$< z&%h8mS{j3GSlUrADR_BsLuy*A1PaMoj3nVMw$IllJq~ygo08 zTH3U5-qPeZHaCUB>ziGk7It*1c~mKaa!>N?j`r3qlKZnQj89<(Asljf!#!Z@FXp{$ zveu^yazwLo+|||?+C1A_y=>_#+$DhM>qRe-Y2U~dZ!wd)ANsaBj=OfY$;HX#7h-|h z61fbmJj^8?vrpoBMVTzeUE!TNb=A~&KbP8>Ic!(*M5eJL@ruN>!6Z-8`Q`pEZ;M$T zV1=onp5TlY0&|-&-6R8}NggR}!lgV5mt>^8;YQtQ!dctVjXSG_b(#)Z#aAty(aVSQ zY60P~T+3aeN$K(!St_TZp=8Cb^Wdv%=J$r76Ub+p!1)4~3v3b?7PwR3bpme@_<+D4 z3H*(~0J^Gtc!DIKi2^GG)(ET>*eP(A!21Mh-~adjxle@;&&c6ZD)3B!JQt47c!Au{ z!iQ(?@Zr7|K0$#RbN_F{h>|jA2_#OtGJVadoBDJo(cb>>LY5=gse~uoUw${hdrwIMxIJzkZTjJ=8h5s{g z^hTlI97n%Q=s%33e_rVE`Ueqlba^7rt-|+=_-FUsA92O$k>dVmacAF=omTU__yO+! z68FFMAwQkXcRYXVLw-=)-*UM#ugy~^?jvPBkaTxZo&N#u=X`*BYai}A5D4FmG6`%_ zj@IbImfNzD>19Q;XO$Jtw92NHh!sR@Q}Ik<)+SBuyr8LgCjQ`ZNvsRJUPAuqMdZI+ z->q5N*mx!A(@Kp0<(kXo+!z1!SxU}XrI)l+T|yz#i>$J7<~??Os>WF@)^cnDzWl7x zaah^c9U6DZxG+AIUF#cKL*rV;HMKTu=o(iwF0`>@ee<|WuH-)Hm?sE~hwOxc)zzzN z(3bA(LYqE#IxZS73Krnw-@akW=|w=MPAi`D-<^D9)UJzP($n_ghR$ zs?|$umefWpOE0_#x0qU3MrY0ET)V#8R5xr|L+u;F%{ZxKWtIDm)b4h!lMXeaArFt7 zP-hV8-qA(XO|2abVN3tB!KM}im{^)`Zw>B&k7~R`-z|!yjnWins5;aXj;F0?+0g7F zE^KYtsDsDC?MNb!TG`Rra#;u0b4SQps*;f0UmSyo2q(%Yo>e4=uPkIKvSbOVLh7-8 z8_P&zNRAZLB_f1j?*Tr=xSnPdP}U&C7}%sXr%Vx$_A`ShWgO zZ5vx#LXB!AxuVoGbX{zj!(-5dcV*!`O#g)%+M~qvXn#jeeu*!cQHM)AbQ4XjL5q;} zlC%h_*G;2I-_hOLSliao5pHhXQp-0`T;?rZT5Z)+2Vtt((2mKwmFfoBE?no_+|s3+ zy;cJ!D=XU9cQm4FD>PHI)K#;qF=dARG2w>J4WV#dhn9rKxCpb5D{2)D{#fXn*tm4} zcaUhIFv_8<_pj$$QD5Jra+rm^zP>Zm73$o?#kck5(p{bGma1W-OsHf>gIt}lqc0Y2 z#TEhe!bEBy;Z+#lwO{vhb@!qHk%RLyN^ioU68*3Uix3qP)=_0D= zi0%52p({!Uz6YHxjd~%bqBOL&>QdRY8Y|ChunmKoG1@{4xQMR*oda@txhl9gB*}Fm z(uz=1?5RnbFi&-iX~$~!RT@j|Xk!u?lEbZAR)p4vS~lUeiE5=@UUY&wyU=grTGE8B zmUMfO@WvMH>^EA7K5|BP-K#q`#9f0;%0}Ixr!_JR)@6ndx{R|Dq{S#1#;SMgBy2@l zRLw%rq+F#Of2eMtm1HG-97%6LiX*B$HgPn)tiGkIqP;O%jaZWC`VCSALzOb~@iPg4 zokii$3aq^E=tKoCm5!?nN6)uHxppDRHPW|QYClvGmY^y?fiV#( z(S=BrAJu8r!A5c2iC)N(COPKrLo2#sc2l)>njGD15$RgHf{4(fY_Z*K7jLY?|IddR zTPtR5W~PbY+L6=r!NGo5pJ)Zm zntl>7{;+b_)?di^0GyDyspDeq(nz|2?gRJFB}kN^t5=US|iJk&P;R^ilK#74jz;xj#AmZzb%{ zwLhsb(>iOd7!#P-~N`))CTF{T3(bL$`9oprN(C7-7dV)nAJDfG<27*BxExyTWd|{R{M-S%WfA z)uT*&T{!cV(8Cfom0x5~Q8kRF1Xx`tZFPEhEac8pZAYh}u0zk^AtBmAs`1^e22L8) zc!(zoM73S-?BAzfgsMvWv>;yw(5;iJm^q!)f=mk z?Xfo9zE!(M|4o!{i%4H#tWoI~80jM;(l0Ppm-PJ!(jS&+@z^dtcqfe2oKObc%VjZ2 zy+DvOd-UH3iu$Tc^i{{xbop$L2ueszBk1XfM$3)$g$OC(%`v{7im=?u zjV_-S0munsohV+Dyb#8hx=IzoP_F+Z0;0a^3Ppg~^p~WTdO5%fSrcHJ2wb3sIQ!mDRw4@@<|CzOHzNR&(fDcG!L>;{5n8@maOeDRN+ zZBGc~I3C=BJ|ghq){K|8rf1uO@Wo1*Zg~P#IcH_ePM?#Wf+%=Sv8pid?9Eib$+10w z^mIDDvK6uMjRbiX*amFFZ1u6N@JhGiTd^+IKTwGxJ}a#R%&9}b>12zNT%vVf$i5Ynl1 zwsxZiL*J62Jnujl?>=p*i;JTj}6X zj7o!HDovvJ@VKOayb(IGihZO`LL9@O(}$@yI>$b`HG{Dp!!;qnTzev7GuBaQJ}$@B zDUMTq-ARfCHOd>c!~y8hoWYHSqoMBAR|K|Q5xC|GtRg~vM0JNEx&@<=gD$5@f-AmL z#h*e>OU!_(9F+x=jf+ld$(Skb)Mjo>HEbpam1mq{o|2}st4L>;Mv9rQCT~jOy-v)S zuCssIROk;jXJUqEGaU!oD++USMy|!Avt}Y4^;cW3F3M7Omhv^Y491oZdUOqF%IzR8 zq?7GU_3V=snVz#j@h-!k^DF%My$iE^9kAeL=mGx%ycxz@ZQGXf2Rf(B$nyUQmR&F@ zGr^Q%rQQJhaTvSQ_I?2{?QcZVzkz?=u;&?=!6QZo_y?LAz`VBhs#n1CQ!FmEU$gB% z5L|^Y_UU%2$DBNnnT}5eZz(TCbnVOyz&-)29$9W@;fC(752o+&_zGt~3b!>19She% zuK@iH(KmT1q?N-n!UwOwpWpJ70i>Uezo{@zAY&$g*PF}bUH$<>7-zeJcHe-!a{;Zq zcKq9U*Wf=T@ALTg2ikJ8w4rQ}R}k zmKVmqKacIMtUMlXI?_u2C4Br8)&XNOc<}20Z|a{w`6H~UGwh7xfPQ<;eQk8G1Q>LQx!TCZ=FKZ6gmy)TXaoVD692j^qZm3)j*ku z!v`v~2`E!-c&0)xi$(XuqF*y;7MZPKJdECN4}+rZuz}`(2;oxEVOmk1noG@wX+_^R zs8)0cqCrK6X+8B$xS`9L* z+CTg{AlK35j5P!9f&C`hXT#xlKn@a_(>#DTyejW=;r$^Xzd@R%mm)2BO)b+h{WPV> ztw7%*Iz^$l%*2g850p_%FI28?#G-!4bh!=(s=_Q*%##f|O`%l=Rhed`?}V%dXq;A- z(FBlUdwJ2th<&izS?OPc{in2gy|=?U@-Xbys6XNF0iY0QscO>uBVeQL;HdZE?jQuX zjIt43pR)T$4UE_`Mh%61prU7u`ULFXQ}&_On2c0lj@LT~grGf^2StzN>tcCXPSXov z9S4hl{kWn2bMko+Z!1Xt^AK46a$xL?`p-|v_vd#2yP4S9l>ChRZeYAk#D76bewLMf zDXfJc`KP2`1M3`EGe&332XOr9H-K^;9cQLf_YJTP9G%W;lGUKUTKT@545i-t!7$#w z0Z7)UujBt4P?ZtiAF=zbbatwafDjlufna1HEB`3qGUR3;o0|XKV1rWfz4<2$mcw{B zNLIx;nDIzAST5p`KiptLQt}7qqxGRV^HTDMTIsB~{{m6YK<_$)BX&MPLB6oI6B{g-Jji+_JpvI{0|w%iyo1p9SkqSaUX|FNXDVunwy5E`>GitFYVNb76J72&Q0&OI`p3 zMrp_}ysN{3u+=bRc=Pa6jeSJ(@VUl5ve~}~cD|ZJkU^+!Ru~jH1eEVElWPdF2;)mHcz{{i2olBstKd(N^mkSKsma|h)(C9af7?Tuv zSxkzvz;`=XhUR<8a065-81R|&2=Q%4T(Jqn)K&T<4OQiA0UI zxUxB5xEJj&d(_!vJI#nOLxT3IuS48$w$&zzxUYhb4LB{18yX`GxNJ5I@20qk6qmgK zsFJQwYqF7=iE4z8z3O&Ko@Lupc7yeC`kd8GHLa{aD>X=bp)aiH%U$g-EWQRV@*h_dVzO5y<}@iZgJbY<*SpNGVq zl=yR-I@p;Pp`bA#KIE$?4Y zkkc=M@9P+d*V_SW+8$-U4Au$H!CGL?@|%{6JqvZO?Kh1VqJGpVo;&w4}|`ws>*@i z`C%?>sO9B5@1b<;q(+LG>*PUDCq<&PsfTVhhH3fGP8)LowW~T2iG1{fV0eoWZyw?; zI_l8Fk$~ZbIlnpZuUm5(#?Ed0`ngx!vew&uZ%+2B|K9i8+s2);_NmuPXZ*f$*(U=N zN+zBE?1oFeIB(xwQ-|KubbRcL^#2LY{l@l@P4}$(#E>l~ZvWoW&wcaHHrm=|E)fWZgV;;j!sm?D@mm}M~QU^c>RgV_VK4`x5iL72lZFTlJ3W8uyA zu_VCy9T-09RRugG38|`o;5+as;B%O-GGM#7kKyYA-0;_kykmHk_^9d?uo2ZBpL>O$ zUpzkduqp)HC+?~O170HXFBblB!hb(9jr=o2AN3Id{*vITLI7^~)vE>E=%cD$;Lk~T z>Z1ZYAh;UA0B+JleMNxtHW@xa1kUgeE6lR4l=LwA-VQq5i^N@3C$O9Ns!s-R6W@2^ z;?u!$4|kK^t&%<_{qiI{qra-O!Ef@zybqK?Bgv@j=6!hSNb{qU;l@!2x-+g!Plm~G zs2k-oPL#{MWqL9WCLP`3zniv?K3nF6?|)x$B9uxqM$o!vtZ*!c2fEfSCj{8Kw}X80HJFexrCx%H9n> zy?*X@zjMI*;@V@i**|}4+sd%-Vdv#9r2n#H^EuWnFFkq3154h`@GLAGSbB5abN>EH+;QI1?>=sLM`7kqKs$kBC>43Qg=0+Iyq#uF#70h2@QcyYP!tmR`GRqGItbEvSBZ-|jA#qrZ zB#yL=Cy(x$f@-mwityRBzBHTVxL(^>=={8Ub4tiO(c*wA}w4TNGI1a7~x_Mog{YIg~Xu- z#ii2-juyvqNa85UcoGmdA#vP9JaR06T&f4HnAA8sN$m5B5*&pkiG#)BksW`MI36He z9AY4eqYe_{90`#_KElPp19EY=Q%LNEGl$tDhX=M)jYtWYZA=l#K^!u3AP-zG1Bgl- zc&B8J#S1fs6G`Ium2k0}NYXc8gv)#D~l))9GZ35Kn@;>1FoiZn~Fs$}zu)^)nqTekm1;hLL~MU0R|k3Hq6C)b%JG$@Di} zA1Mb3{!Qz^zHEhMZ_cu_G6wkB`eh;E7yiC)u^gN@Ve;834`f}NGJl|N{&w%DP|nD= z0Or@i$8w+^!&kN4`IPt59<~TtVg7iRmdEm-9>ce2yYD*1smYZ4KQN2Ft@$PY@fnry zHJb|mG1#Y`1mEl6%N0JB7xfr<726RT9Uq=KP%eB@ZW6*}d^p*4s_?P=sK>~w**@Sp z-|k3^7@td-P zv^*(iNyE)R89Gh)q`W2YG2YX`w_NyG?qb4C67NRv-1B`MzLdiRxyRA+O|j;p61462 z0|W7|-W6zW7p}yf$F9PL;zF#&yg1ykvCwP=ozm9Og=L*nrWdMpkvwm;P@nVhQS2cp z?C$C;Y-wNL+T9o`ROd;5yfzLb+iO!;8ER-m>V72Y)%Uib#BDE8MgNP^P}s7x_9Ka* zyF}FMBfLLeWg^L@muO1!OoW#8YSUs@;Tmkm4o$`3>xJsPsP=FdUdK(L)(%|sP`IqM zAnnmgJ#iRaX2 zHo_G)e+BlMQ(hk}06Y2+H4W?Q zwrmV_0mH|TpApy)s*$7js)Gi-uw6+VJpc@yE@C`fKx2kq?G4ZyV6>%~ z+Ox1N@`s%g&+NrcvF{nj@_82e2RW(43*nXcVrQaf?qcT@-(sQ*lr!-0+IhiTC*M=L z*hy8+Po{b1E%uywrvi^!cREhmgO1PtEP{W=v3>qh$Jzv1wL|@E-`S2e%?YIWKMU`N zoHSoG;4^^W)0Pc@5aRRy#F+vg&NI$%pFhVr&*#6>*=GBjoMHZ{PF~9FLGW~~llMik z1|6So11!|(W+%;mCg5V=PdS5LK`f3sbB{X9k2=m#-#JdoJ|}pyGlrg04mkne15OGQ zaeVun{F|L|itM}4an5(LyFoo<=y!t6v$@G})@g^mNdJ9Kif0r2deYW7L;Z!ox&=$Q z*%|Q}XEkDWjs2#x>KS?tzo|I)IU~O1tU?s8w)Z$ImDsL5%H=C}dA5Y>9q8!zu0f2R zR50J?+0^9tJn77RMsS0ZzYliaf3M-H(V|*jTqv1d{)*yAa2{;PY=d z-~`2{@*vf>1x{h6In#PE*0qzo5LtU>2n?1f4O6w3s%o_mVd72n_KrHO`Dv#D0*Sv@0~FW z=4|BXUT2`szx{0#DcY)k?BpYyfUm~MV&**}8lR0s)|^iM+s;6+rFsVLQQD`XBn^ij ziqVd5qf}nJ*9ky|C(l0@#b6zzHaVpzzI9N~KL`tJuesT&@mv;mHv8}nR6paS9`gB{ zoiQn=40eK_amJjj63}zx%A-zp+TxT9xfI1_L;AV$+iT@82!@NPiH^Bkeq2z`OjvA~71WurWRSJQkNF8f zy6y*L`rQf$*4(XtOX1WCi1e#z5_irglU@Ue(YBfefXt7XfDETl+{cQ0F5p~*lM2Xi zQ^fsk1V;bI0H=Wd3&FnwNIs4ZQyxdq=7D7k;8f5r0AzUc0rAV7j=x24&j(x#_%D1d znLft=G4n9$ML^OY1|Fdgwqz*B*j16BdY!e9=l zjhX_u0C*lC_2FpxeBeGn^1Xvkc?tae6_9)!kYhSL1xUUh0+Np-^OHdT2H*nVHvv-5 zYXO-qTLH<>)nOHY7XvN?gTiGam`1%TrKDQ5&A^DkHMf8+a!K7Fa0 zIe`1~z>%M&Ts~I>$eD%ZklzbP|2qKDx1X|Ea1Qs9z8a8x)q+<5rhz^Oknh`cp`QYH z8t^gV{tiC4OfSxOFg<<+NdBJzQtm-O#`}AkUh{3C^Zp*bFPntE5fCDCIio^<=K(UD zIzX1^vxQy;$nrc1kmYtbAj@4kU?uq8LJNcW$pyuf_Xj}AdkT={=OLkgU+A|3GMq00 zQt#`9ejOm=-vY>R)(NZutVKAd10vkg$$$uF)L1~MFp4Y5&jS4z21U*Wd=ZfK%d>!t z?@s|SYc}dpK-LHM0`k4M9gyYxMnHzw1ITz^21xxo02%KFK*pD6s*{i7Im8i$Di?zR z8SjCB^anTUQT>YXmM6SShef;4Fbf0t*BN1r8OMCD1PrK2w(*T<_gRQJch(X8V8;O#8_5P~;=V@QmuWmu zDfBX-&jLi*3=|2yKnfXLgxeL~+a^xFaP2@C8K`b|RL1Bmx0uuJIMguWS&s%#W`v(VQ8;t8zbAG|ID zq@F_oSv~-G4_M%Dh&=rJUKMzyz;1!33B)cQ#rHHklmAJ9mkR630xRD#^BydU|)=RCxl?q(kA62Z;972C0NH}g~@kT}H6ywtf8o|%XG zr0|=0rzOH~=9wN6+{`O|LU1#WR3P%qybkcUtS^ZB;m&k6n|yd-o# zD0mLioA^G#cj3(;ev{y5h<|hM>o&O2eZRPK2Q%^e1n0^N;@x5{K-iI!3_n*hPpNjNxyE}36%!&!4 zAip1Oes2D9<6M2>#!rpo=U#5Ndoe0AH~yzMeYh6e?Oqxe-ml|uE|hokm&JwmALOsw zo&7I2&i;%We>_hAKgZ?Ak~n;ET>5$APvt)2JlhHx&7@=;S!S8jZnp;v~pptIppCArJ0 z@9(6VsVy;w6~pIz9DLh3zoV6hs%~g?Yr3ohqoz1ZHo2~`Ly$?-Gm(m8Y}Mk%*HtoHPsskVsPTEQ8BVOsL$ge21XNP1&TpA?TQH|S2&b&;jpd?4kA)WGC;bp>=J;}opZ*gaw z>cdd`3#Unq>8k{g^TXuEjedjCzRbb0^=8VYJ~HTE&m*cET9JNBYEd_=hw3=PsA2uZ z^VAJ3cwZ%$;ueVLZ7KN0U*s)33QcW>(IJ(shnbobqmpLB-G&YFrV* z(P!=YIOqP7ATG_+S+Vt<-R-qo+Ia+Udq;Oy>z1YMYQ8IaQta~XP&dw$Q*~Qh-b-Fc zA|)Jx`@w!BuF1}IP3k$CN-;s>^zF|6Zd*w%EA|D^kyNRS275PD!*V1kxpInesQ~jUqoHUIjmDLw%e#1tduvZ&u!`v;( zUh=TwA|E~NRvr75G?0W$RkfU|LHh9&n|rR)b5Gij>xP_#JoQ(F*hj3AWQ9JgI@G8N zUw?jMHFbrmb5gwizjZXED!-w&jo~fz>(zx-sQKqFMAg+5#&O`frcrk+;MDFA4p3Z= zj8=Zyx;E5?+Ht159N}Npj>F_}R(9*;O!3!n2h3 zxQcQ`sE=4CXV>R#BUzK4!pS4@QTcDFZw|F$@ritO`#YYn&+{eM_U9|+6vKWwlO5>U zuLpbud3=4e;H#AF*NZurQWf^N11(R=qd9EQbrR)=KL@iPAN{q+`&BUM8J7L~z*`jR z#GMiP$kGo!#lUX*22l1VS5rnky(8mynAvlZcN*5S|2q<{M)WS#7P=zA5K8r zjcGA;SZz1nyplfjiLF0kqHuCv`iww{m0w&~GAkH;il?7mGGpfHXUqU`Mo}>wN{Z-O zTvRl3`t)FM+KkhuD?)Hxnya(63|HVt-NTs`?Am$n&;Q}j0=mPhf31eMFqUQoVenu~ z-dcmcc3;l}4caA0KX?odnH*nMyCg}kuMhLw?#NSLUstiFE`mlZMIy(@`&}D$@6gq2 zZHq9$QeQ78n@-o%czH$+y7B5+h5=~|nM5AO*ZtJ%Y;NRL7JTaK7nIkPM>%GRUL4=% zvj*}gWY`QOXOkLMLoBRyvax-Ta&WHNdb|EHA~IyI0_Z| z#irjLk;nZreD-qy-u1ZSPO{N2)Jp9V<9iH~LwqTV^Aq-64Ndu1ox67r)!#$jhESImKmJV6rxzNz?l;(`!yiBG?E zB5%CJcN^rnpTzWA-{cmUkiUbq@1V%LJ*eXwMto(+)h!k^t3rs?MG3mvJ?>C=q<1{q?iSboUxrmbS`fU?=9Eatz5AvA5 z=R?04iW2+hD$nYMop}A8lk&S)yuCX<)_-66@s6+7macHTew!tt=6$jsYZDK^MkUA|&r#LF&`_cJLswY ze$R?Lt~=uMkCT*#kGc{Wuir10YdJ>0x7KRh^&c1C^&M@9XSlw*{Zb4|)Yn%paPeC2 zioAnTpANl1zrQ25U|vo$#>opc*EjLhaP1ghzuZ@=>0E!q=ec?-tQAxB?C0**f1sW*E=eT5UfiNzI8ANr_u-onQ;Op1$Nn_aup+KGJ*s!X=@w${`nDlJGDf)Q!slxAYYr^)_24l%&4G17D18D=T|m zE?-@~s(fX6U2Wy|*PE+*c5lX(wwj*DD|?=*?D^hCAXPp8uI|O^A{6_cXUk7KTh;Se zWzX}lRQ5bt-SZD+sn}N8`w)F9_a~}*+74CrIup=rt?a2dT-iJ0GPF1=cVBs^y62_J zo?joMw5pyTRrjjagA(^lbkoVnvk2H9J>8Z9bFD1(IiF%NB> zP>rR^o+p%)%HDxWSnm}BA#uS#3jz={X$X4P6BT=4d*q3V8x&=?ak!~6V%=BW^H=dv z)$@doS7p!I+beso+@>S9AF65FeU-gCnI;f@5YgGCRZyuRae)YUyiaLy<$eur2T&rQ z8D#?btNMSpa{FV==arvdzP9{=^7^%p#^=YZs-6=_fwfG$-Wdx~rBwH_Zb2k}33`R5 z&jg(WlOjEjR`sqfsOnu>1W#k(sM0s$4u_y9ySR65@!}qDadj_C421kjvHq&6cTo^- z^#3Y8;Sj##VCK%NQPoxTZViI^TTONGJssua-fx%70qqi1?}wE=HHRyAm->*g#Rn^U zex{2%NX^Qf zzpdUqy?y0 zz$Zhf>{YKvk2gEQxjXm#7#7Lxc|G1q5uV;r%e1uRF|0|YE$M>=32--rXqkgqc)UQB zUW=fYdQW@j`XjkLuXk<%UVvHA7vNQttL%9nwVBRH^~&msp*IU!uY#t?*y^5tR`ndN>G_+hc)*QToe`o!;J9jTijl9>@J?|jB z=nVR8r1!j2-SYxdh|+X~P4(70cfi_6ib?ub_IfibpTL>rc<{!pJ)x?L*m~va*LT6S zs^{lbJpmPgW<^$`6$bCJ#b!2J+FR@zM^@hB_q!d&{b;OUf2fHOB#qV zb=4OX*Nou+EaOsFRrg%EO(p*f9*l@2gxi~$*%iC+r@llefIQ_6buHetKd7Pu>92#- zTXDE&!T6z-y%mQlVL`^>b?mJ6?kxt` zg+!l*x^P;wE`)c~h&4Sg(+Qzog-}^V_RhEhw&Ej7U7%8QthX|=yokFC&4@*rGA`GV z9u=PhRvA{NA#JS#kL(be@KyKDQe~lc#vmQ`ffrFWdmfi`FtU(K53`BV2l;*VLzu~Ce8zO^ z!1cZ%Z|A6wEfYeIZFBRjaJG2ufwO*P?#Jhj zMHi|xYCi`aHThWGs|yy~mWf+p4ldAd8P6a!MQX-uAS_{MkNisIZ8Q@X^q@)hLw7bZ z|2Z5JPh**g`io>f%IT;QxHV<2J_z$<=ISFlzoP{)NzU^PsPmhgpN5>D2Jw;xI&E?y zDTuV3t4nu6y%F2USyqE6_B>P7^RLRDpX>BQvob2DrgyRzi6XV^8NUywirewDC{tCh z7fcn0QQ`0)ok%q;uQKrJo>!2NEP}nI6TyPG@R*zhJ#RAmqYWp}p938q-^0443TG+X zDr=+}r)q}PSpd4GHx0OGZCknXNH`eLaP9yI{saZ@R$phSmLu*=F0wQxu(0N?U4~DU z${{8V5~DT?|0-lx{eJRXsPT1k-hRIL9W6J3;8BeleCA9*uQIbSl6aPe|IhsYx6@X* zG;lp{A#Uj0!f7)sNoZJ){?csRTOCpzzv!|R%xJ5*iY{CeA8PEwaihNbd0|JVdjhRi z4KdF~zuGnZB}CWthm9_~p2~+>t~(K1TiP!+*GDJ6dU})V4mfh?p=iczW!=JACPcZZ zxw4_Xu@!6mniX8w(9(+47**{xm`mtroQ)AHTsAiwb5Eh!2spH)yY0eI=WKJA9MWud z^m=P`pBoaby@kgf2!<(Iy(mSmIg&L`vsEOil3F8yrA-?`?zD1GHgXY#V(4??P|wEq zC&b0krxdH9u`!a)vlH(V?`~IXuXN5sN*l&lo3NN+zFP0VYvqBuVDEf;`d*gcejaw{SdyiaYZdA30XEThYlJ6azXNT|}gusED0>dF-UFGeK z+PQ0G7v@aVinL_;*=ItZRAw|q6Br8XwMMvkvkf=TYs8%@ANEF07RvU}p35O&- zQGCLo`MAcO%QQ@iHbv5ScDO@g8nXlfiG^v8#zd7gT~DVko!dV3{`zI?Cle{S|IoD@VQLjPJuk! zn9tV*J|yrb0)6QB@!@IXe8vl$EAZz6dG0TtzX<%hzzo%Yfq#Lg39J{`CGax>zaWr3 zDL%Idd{p2efzJx$pvH%Jo)hMS0uKrNiNM1Ge<|=jfs#i-R{6o!jt#Se6Ur>}S_M%N zVZld`L*uBPBksBy?aTGQIX5bDv=mn1xz-4@S#wvmU)fLK43!amPSP%wyco6Zd3u$@EYb<131^i$66v8zrkTe4=6F?s60BvP4pp z5)|u)^`CTYij^|fNZyIAQvnbf_p>fO;oOc%?3`OchsiSai7h2)$Mg3HJuQy^2SOhiM>qA?)HwP(eaH_&XDK>Ld#@CnGsHhTf9|q4 zQrwsI;a()}YsH-%MfUQ|!x26{eYtmkfcuRf;QoDauaDDj2g(EM&KDRso=s8?K5Tg? zn?9?oXf~^uvXbd#sBoqiSp*T9wFyqZEV2-?Rs!t2ps9E!{!lM%nxBy&$P1b1GaCNa(WSvsnd!lS^rn7{|_ZBa#oXRd)DCSG%K=EVTr!zncs*A zO>u^*Lrvj$+KQG9%`W1?)|QR@?BQIt)+j5fl^vZem!V_lB5SEiLUMm`3?d?&D5H2* z5zf6@i8ga+1A0)c*m@D{Zs*R8P-74~sN@K%g{=)6x-41VtdM$as=yNG7*b_J*St`u zeMLt%n(}dO%T!x&6S`$h?BZ^T^|>Up0msqx<;tFc@`c3KM`~#ms@ialU8qrQ?@*MQ zhOUb(a|9PUajtln!W#4ak7TI+>_<>(sz>&yVO6g+pDS(G+Wn-F0Z@_4x%rLCpi_D%?yn-4V!UzW1BA8ijLT>4;i|mpkvzE z+0uxY6lts|=u7HS*|i#bAZoA^iuMCg>yR zXve;bRT@hi!jLha)-8IM2?}{sE2X!kwp1vqJ3*V&E;so!A>oZJy2iiJLiCX{dX$Hw zPD^U_NR!nXYTtmoZHgK9BF9EOOh#)%7=vRMqBGuQhL5_8vl6VuDjCMARZ8eZFREst z&i;+fy+<&Ps5ZgH(ewt6madBS#%LvDNtWpM zOBI_I79jJLG|8bxClWj8krEzlARysgNDFuUChW0Fvf(f+;{v*jyEETCE@3i0hL(^A zZr6VDz|EE{CqBUaLycs()~$@2vOw)RTw1-LenD03vhuq5mG#S3EUjBwch0hk+R~zN zAIT}JeV-N@)jfJ#=trTV69sO3tXirNyKIEo*ae^rz(sg|qBy%=YYsMzMA_|->j&_eCoi7Z%aBj)8_Ph0rzUqVMv5-gyLMt3Loi#NN9f^mDS&4OVXbW=! zOA$IYnl6u)Wa4ai)v6#hx@kuBZEK~mZc`52G_h7}31C8mrOsIQU|5)s$J+D;c1|RJ zN`!1%%Z*hnO#>MUB=@85`lFj|tr#slQD3#jxcvu{x*y>5|ogWAUWX&L6XEo_O2eOfsSfX8f#vLjnlG#&qYh2=JZ zNmzJvD4*y0X5p#3e0WD7pCpChMp5%?5p@&N%dp%WVW~6L2P33f9YXYk|=@*#a5yW_(3i z>SkdvGoMugk?NWd{WrdPM6kzNe!bTqMwG|8;CdP{2@T0)6ki%qJfRjfak?nNvU00fcSlJ&km&zc#p#0t2X*spJmczA{R zFkmEDXCagQ1Ho36LqD_9O5l>3V;j+mGi@7YqmOMBp5t5bN~On<;0r62s&a7na}K1< zMWh1Sq9kN$wXhXbi^iGUI#7l`D91j!HG^8_a52*0TzewC=Q>KMH`pMk5?3OT=h&TDpn{E=ibkiIS#kU8m++O#Q-B zRO(yJ$PwLq;X&Qp%6qC5;Y$H+Y1!Z^0{G#R(vCm-R{Z%>26%W#wB`93NuHPRpW^uk z37&zF<@JomzvHREzt7W*{{fbF3!HfpvpvwcmK1-=cj@^i*uCCr51Veb=U)7$cz!{e z=WqD;dw4i=mS-aVM_S&8;A1hYo-s}>zyPn$UI+NXP*2u?GJ4Io{0p%}1lPb=Lmgl# z{tJNCAwz}^P-rJmo~t|5uh2cQ=)DF_Rj$v*qVEEoM!)HFwNiQi!F@SJSp&|61*Ehi z2(|!WG2naY({e+(h>=?ZO+MS0M)%k}fI=$$~7f@dhd4+6cFTFp`D&wv)dG3{%K;*Dn$v>#{weQs;k^LJuVMV9NXyT_!nE|CrWE1TA8!(!qR<(! z=whIZqQ6kNo)?RD#iG2ySA|)um_KjOX$rl^peoa>)Ef{Dzi&pC|I4t1ptetCkmcP7 z`&U47JQ>}v4*WXow)a|Ce*)WpGUsW46g%UypajzKXJ=)86@V83XM7!hS#$7bWmE3` zupx9yNy>N(*dRNY-2~`GGQcIf6?Psoos#d*<~1SOo{_yB_6$YO%6=2}dz5{smE(jJ zS4K7ngYDeW0J-`2voctyy;EUj?s(S^8R|VJ?*>?T>xuU~1eW(8Fy2$_Js-j4{RSBC zH}|eh$L1s@c z5FAF36&RWKDB!O^4vb=4o-^2JXm5F6fWwm@4SdUa8o=vUdhrUJ^qh=;z%g|w{`{F; zSp!m0(?Eiiiti98Sy4?3L11m4IfyE-m-0L)gTCTD6V^9i&EDj#g4Kq}s>oOZFmNF8 zjC1gx+JV13Tj76#89cl>{Z?Zi(VTv-v5#!_KLR`7;ZNvMo6UI(6fBmVrk3!_oo3j(8RZMMuxc%Yxo$!j7LaJ z{Wc_yz}0gK*pxrQ@$!nP5sstXd~_Q*Ui=mUs&EW}2$(bSp!x74!o{{S9Y#0fv>nb!AsP7Iy&E>2BS7ZUR8M3ig@$Rf~Xw*7>n>D^2L|ANAT7QLCJ2(?q4zRb0 zjb%Qa3e54d+>E^i=%Oh4XP`|{bSByXJ0hqx&V*@3QtVX?0f@@B?fk33dJ9>z(N4DP z@kNj{flUx@C3QwJunE5b8X!7aq5lRtglLfHczCcT1W{9tCM};dJg1nj%s7m_YBN%0 z3>sWckv(xfYgQCEdt#HZS*I9QGoE3u`X;epbbCgTiA%Ol{9 zrsW8vZ!|5J15=4NgUXKm1W=V)3bhK1)bHZ;;$yFxhQjDz#jbOfZ3hp7T}fto1$~G_ zM6xx;_<17Yw+nvHrQb@MA8C7%y)xo^l3f?|TVVW{zCEH3zh9=`8oM8VhTrsT?Nz+( z!D z+alvk08YBOo)#RLcxrL_=pOT zwT}u>p(eyfRER&3ke-hT@lhS(6cdu^lGv+`pn~`{L-pX&@!-pl97(GnTcwdqu`(V* zL^A&ke)bkKQjqooN5W=j41{&q_hBtVMPOP}4jT%#-!!O*`fa~yQxVOu{o9d%Uxsg@ zS+<`ot6KyeYWtNY2#>BoT-1pW_|6e6u>E}N3|eISjiPj&Wm_3vg`BB&#vRn{5Lkmw zcAjbQkjKh1O&((YyyM{E1ro%v^8Vq%hN9(%f?vp*HRGRPDP*6(n~DtXM0O6_lM#S* z(1&PAGRg==wIr9oFPlFZwXl3p%PeCvn1<~^s6pp}Xi`5Ao76zvNextz`X})10F|UZ zCMeE#%y=4hv|m}i^dC!;m7&^EJg8)tYBD+xMAMLgM$?dCS{ZpLtiv8u>OB%w?~z#b zfV$NK>Q)b^TRosq&+wQKaBjc-0D%U@YrUWs7TQCmD>3t6om(rkT$ zmBpY?{LmLy*Ka9aWTZNJ4DnV+dF2AGd8cbm=$6^<y>*mTdjPfWS(k}r++{Pi#2J2vZ`g~JBS{NB>fee=hUKCq_dtQlnuZ%;exCy&3M zQvRs{8Q=NyU#__GshM95UtI9~dr$xIoJ$JNd)^C$2E%ZCU^>hKm^zq7m@v!^m>Xbj zfw>3fF_>S%9EEus#*1_r3^N{PI?Mu?I+#Wne%8Tay@J=C4?hCLAHxShJ$NUGe^(NR zl@;+a!CAEvA1zhS&&0nO{oN(F87JrGoc!nF^UH@HI^xEi)e>sy!MIDT;U%q z`te&&cV1J`2Q>p=SQ6GCOkG7h#UX>*b+DKEtK#~ z`tfr@_n(RWrp%E>ldQ}gKR@-4li{`w`9n3S8^faxOecm#`Al=h)1;MKHoPUs#^F>a z49_sQm%!k)RS(NK%e=>Ou-!*1i{LH#F%Nn89x$n>H|dDJI^mV?0N)|fD0?^zXHD6P z9S3s?%p{moVWz+o!#uF$-HcZ++48m59y|YzC0~0i?+dSfqj;|OQ#Y>JIr{FY%`fJj zJM*0#ZNJLByLFp>BhHa{`C5}-+k?!6XD}9 zduFWNad*z&U+^p}9C&=d*fp<%Hg;q1rIO9(SR;{8g)sAA&WGU;R}T!^pS=F_5g1+* zdJN`$m;e%TEDR?*Ibd@xOdHHLnCoHK(fP4M!h90u%P{OEKMI4}yKw=u9&urrZo`QY>>q94$+GPQ1D}Ig8?JQx5R}5eq?5cUPN+SfFuqQ2x*;gJqEInI4ndiju8oo zZ4>;gAHWGDwxj^qY!LD=r)$C-ZkUJ>;;;3pw+Foj&~011gBAS7|1SV(MY zk;HbF$l@p=NgQSrE)Io~#KxVFOx;g1AJ*Y~hz~&B&$?R?_{R}|r`I@!H-=8cf!t*7 zrWZdMJYz9N8}TTXA3{YweYu;S`X=x+*q#Lcrmwve?%C6{>=y7zHEhMZ_cu_ zG6wjWmrQToYI>yZ2L&LB3mH8cu@mC*TVSAIpP!jJ$>0m97luZJ4`-kL5x= zhHue!-*u5#>F~!RJ&p*!loM>Um2?pA)Uz6V2ZV2|(Bt_Sei(fB2_MUidW^hfiRpR^ z_;bIf)9FQFkH}pd%TGPnn15XOtK<0vC*Qxo_nPpr{HVw1F>kxdLGrO9aO@=bs=@b) z@Ugt9Cr;j{(N;{cZeq=4zmJPjF`@u1_}zZkQ6R!Z3uJoZdYN;vgVHVP%XB)g4EGD zb)&erm}?iDoxpbn&Kl@yytuIcB4JLLj_%6&m@1oWyWPiBRlaKKUd4||qPpuQvqT(6 z*4Hk*@S^!Eu<06m-KRFQ-Z$Iy66IkMSW zqh?n%Fa+Y>>Z>V{8$^NPt7|02rkfIsl+vljfgG=6r6LFPGt3#3ma=BBljTb(ALNwy zZgd=<|4pYP>`eCk81|Hl200l%&senl-*PO^1u3&_CpFDq>ID6poK~OzPUmKOu`_0| zGwP6oWlF8rIK`gHz&y=iC)MW8P1iW5ct$RECV(p{`B3Rp&&0*fB(1?Y{<%&n@rk}L!#`)PGtE=57%8C?TyqGnK#R2Nn#Im! z&!ol9Y1(zQ@(g^Ec3wT#nc_JWJlc5`Jp(-zuBkqZx_IisI(bqxL)~5-cK+pXpUdD^ zta0)^g^PhQczfTNU}{tKKyn*TwBamY#YRRcc5O#g{91!r0jEoH#_4zW1exwcpAdcYA&+>LBK=K2;V*@<#ES3*BR_@i#%E3$FXBa~62(Qzi}qGt)O^;$ZMSg}1HRN%N$x z0qdRM^lU)^ryLZI#m?xovz>uYI;k5R>zEtyJbcwrCp+!UloB++t;reayI`DkBp}W? z8Ujaz@1sawP7WXv3#R%_Ts6{F7?|`VFb6)~Pc%{DutfXGz zeh`r1-3v&$ob9IEF9A*g{WE~%uLs1nM^kD6G1OC90Z6_gK!!5`@GQ7=&BCbDqgp4#@PJBRKE0p9WP%3Z4zfd`bgkdhl~Ve@F3QVt)P}a53cl2$1xf02czk zUhr;#&4A=vEBGov%Bu!MdX&x-`e}enkKurf_rJh274ClrROtXX8Tes9ro%zN(}4c~ zkn#KmAochkz(UY(1Y~@B0hzv612TQNq-P>XA;1Da&Z18OTm*P3AjbeHXR5$Fz(t^Q zHXoA}rSAYTKKB8V?>qQg2%HO|i1!M-5|DhIf?o^>QMp_+%5rtC(5nGiZYso`gT>63 ziQ+yCkn!O{1=9UOKgw@6@Sg!PKRAe91yMf`9A7pz403so2*bNp@U4Ilk&7>n%3lu3 zQ%(h7CE#?y3ji735J2*00M3V;6hQJF@#=KB4G?%KCjiP2KF6#H+W}c_*8$Q$Ckq(= zMSz%`88s7-`i%!iyg`TPqffjj*kJ7?-@YK`;p*0QJj2R1?L1m@e2W&?yCh~ z2B^XXL_AB+0Hpqt0V#J3Ao&LaqKM}X1f(1vApO0bVp&1BzXVABUjmZe_iNH0V!`DU=8GC05aeHgEkq08ub<+NTYrOcsl5h1G0WQ0LXCf1%%w1I{_K~ zt$++~J0Rt9Mxz3J7m0g4AhI$S@2Cm~VR51_FbnVuKn{OT2P^=b0T=|tyk&rsd35&! zjspbX1fGJJ+zVtuNfbdJm%bBHX~K8GNBD-oV*+0g_?*DQ0uKp1DDXak`vu-EaG$`N z1nv>IOW-zvn+0wZ*er0Jz%>Gw39J-YCUBO(B7p@0g93*N%o6Aq2%zE}1e}2MAzwbz z3Gfs^@{I)q;JBwsKUI|@-4JHr4bX|d07(3>;0FcYFZe#e_XxgC@Qs466MUKAWr7z8 z9uz!FZ~ztF?SPm;2X*AR-Z9Ale1Kpgw7Rl=r|3fTTYs^uvItuL1{!exK0y10u}8 zKB05MiREt(AnL8aHlc48`bI$1Ux9T(UnBHofOx+HWkR1N^#8-&yTDgfT>InuBst+E zgd~6zP{6}O3Cbhk4MI(Tz=;hINC>FlNk|SP8j_d?4_~CEw4~7%OKokdl~!A6uWh;N zt=7jaR;p;L($*?fTd~(xs(&>uk$%`)~q#a)~tE# z$2|6|LO|TtbEAN$v)o}4pD*$3|9ExDwS;~GfdCYdc{>`LFb(ySi-2*zWG4W=TWEZ~=7PuA zge^w-7;o0xss%S|Y~K=jW=-v&#G5s=7QxM$+1rAfH8OtGO8I6@><+=r8rVd^&6?Lx z^atu!jEkS{o4hFiHw%z_FQmM$kOucv@&h+(UN=krzn6G!Uc!=swVNFl?zqT5DvLH# z1&>O8+=xN`F2Q;I6F(&QV!`*J)6?w(o`*U$HlBZva31O=`gX_P?uq9~`{{lc-gYbs*+_3OXJYHtYkrXX{D`uk_J90 zP$#kFi-P$5YdTqGYTcT8OXd@8bpxzi?y6s3KBuvI;q})~x0g?&8^w|soE}l4PSC+x znlYE7#e3RRmKs{rF}tp%1OL90RJO^w2WSbWOe)>Z|FG8Nk}s=VrmVZLr>K5|(|J;l z8S2>7Dpv=tiQ2|ye~l$u&$*`h094-!vGr_1r}R7G(>Il0#b`-=7Lk;(ImYN+W@aZd zD_L=SaV5^fv2h@{U6tnaqK!>0>q+M_6b^@GRhnatmQ~_5R0mpOiDF8nNNAeFZp$T?MR)k-=k3^$YZ#L5JYf@;1=P>w!B#_T%wZYxa}342^^U1+eXQ) znR48$Z<^pvq)$_CX?9HN_zFnMw3kzCeG>=g-kT)pHL5{)y=uc*l7fTem8t z2kQNBX2!96$Dl{{D8ua*6;Gkv}^^zl9Ik|)pMuCXoNkZ8iL4|xOx zp0KyUS@^b(a$Fb4opbW9Faoa8)uPR+rWutcBIgAG{agLNOBJ%cM zs6TkpROeshwX@^3B{sBs<;}*}m(J+7M&uobJQ~DOe)=gBFMj16CIvO+os9)2 z%A0*rPl|5c#&}7$^DOWxpXz^9}x1WR}J*TG);;V{ZxCf z!+7g&ugE(~QXY^wQzIy~{?zqhE9ouoA(6+mR=Q(S-rdj-djL|Lt3NBVF<$+)%Kc=i zq`Xn)c#WVS{b+5dsj(yN#2O}!I0Hg9P0$~)|lcif{NM0>7} zdf1HJ$eAZq1jt)mvU0I0j&(%jZIXU`B2`{ek!b~p^6+5vl~+1ii~fsry2KESRdu#p{_)F_1lV#J#f%pH)QlBI;;FF=kqFcKV3z4?9{l#gR! zMKTH~7v-pJ+HQRU^j4EsZoViGPx;N~89{nE9~y|DAiWkZOLV9fa`E}(he35GEZ%Jk z%8%tUUtuUoLHU6%Nw-z8?q8RzE~zeARZ>+M+wpp=ynE@5OS=!ox_=n!zIu0g4+UAV z?q^F*{;aI~(OCD3D)2~o_bUj*x*v}9lW7l1MsJ#2H z<=uZQ>poK6v-HMe6jj!J&=yKr<=ta~gQhTA1*$HDxIOD@r^1NAE2$Q!uy0RBqv6@fAI+eb?eqfF>sPqS=JmpbAEkD6vL zJ%%1qdM`yBXGjSlgu^n$^ZYjQR19Qu}_3`!@ z(rOTx5qTr;k|l+2ywmnp}o+Mk_X zwH&G^1I;?)>$sBSg5w3%Gh?s5 zJsEdg-UbZ*kAv^OnLC)D)Q>u6{RMN_YIa7}vXv!|xwKNlwIy2C#UnP+REgI!49Hc4 zV;MIkN*1r$F?TG>XeAv+A}kRt->`VWa?0*()pOb4qwT}FVw@y7Gpj*c@r4OqcSbfZ zZPKfV)iffye8UE3{x_8;rfiBPGdc2m6XnC@Cv3A+m!GKK)p3>6H}NSHu;M1`q*{tQ z$&%>k-e$h&r|Ocx!59MH7I+#S3v^QiE)}?1ppM12?d%z@%GU&Uf>q%-qG-gjja&jU2*%yijNh2eA>f$GMM@auvf7x-s^ zCj`DD(7fz(52)J}xDi))q2zDUnW)(&;DKKLzRdMf#E0RjgI5nT4@926IF3z9;GV-j3H& z+ueVP_@k$Y&y;=_B!7~`KNOHZ&pV>g88~H@Eyu5m86t~WHZ10KA!nf>& z(E?1FHgB9Xs}RWKX+;y>)42sx`f^#~8|EpiV4bUdN^KE7vv0o)2D0pglQz}1W8=)E z=~J9Rx)Ev&1TV#x{f^E1Wi5v8(6l}K^2CM?FKwkVuWfH4S=`jvY996uE2%O40LIQ1 zn^{X$68zJ77(@h~;a(Xq2ELJPOO9QZ*oe~-f@1mdqEex@q8^4uJG>ub;~_}%YspJ;UMBr|WK%t;-tJ+40&mekz1n@C z&EBbrf7o(s>1?X6+|<(2(a^L_*_W4e3zjc0x8e&hlOs%J8=EoqU)72guta-ROI1T- zyS89%)pE|Kv>E3};O$RnrYkOO+1!{|jhP3uo;JN+)uJWgwN8XtXehOKfIsf7R2|y= z@`-v(@URNAEs8~n$2YJ_X=xr|+opXyZcN_kmasP0Heu_KM)VdYq~Le{x-+RBMHxJQ zpdD|rhF8@ErSlX3OXrnng_U-ZRjR_A^=q$dYiy+fL9-0)BH4N=>)i>pGZlqZn*gPa zjp=&Sn1`~dvDvg~d7`;{^3zUjm_?ir4u`+62-_p4rHPWEoi}~ipPH7Yt6sHidOIw>7+uON%>=LXS zyd8aTX=g_*BwXSCkgquG<>xaV0~9qSQ7u>0a5s8vAe@tM-eymfQPwDB1R*RK!6Iu2UJXhbQ^u z22IeXI53R8Kh+w80Yn_A(%i99*%sxJr5JW^+O{%LmuTD!lB1Q=asIX-LPIq_e$FGpK?JmkbXrpAAn-$~UNPssB9; zdaJ32sP-3nXnHSHV|!_Hy>pW>O`@+a)omKtf$T@741EJOUfVrtdt1hf4t(;#t=AUwoR`8inj_%IkMgI&HEqj^f{dJ6*QOi|3rIk~y zjZOG*v8%LXNx9`(+IoL!??UfkH$j&0Mm8xz%-H#P4xi`!Z@RjQp|bAya>yIAzIt2ZGo4m@pLuSPB@ zc$q7jJ@fzEDwX}Qjm?`|F5}if-(BDsw)ABaxPL!#rqzAs^-pD7zK<2_vnHSQ)jAU-U~v{&l}KP5ktYGO=IxCV{JlduS40?5K9+Hfpb2)W6()#-lazx_ z5=sF$14B7jx;H^572ZpErpvBReSf}H7p#D7|PCT@c1 z=_Bx;kv9Ang$TmT^m+iAnQmcxXgKUl?_yfmnO=?Evo~Ueb$EZ6A?ERj2Fcn1gyxfn zD+|s4Zn@eGMoT)0VQc4kn|o8B|%y&gw6v7^cyQK>xzD z+ERA*H;|*Ulsyu+URGWvvV9Gnma-!}yO4%}Xem3g&LFUqowXeZHPn`}l@V8Js4Zn@ z(dG#?)RwZd7AK<{4XO+=XYt@h)|IxDo%NMu^qyq&hso$sph`hyDLd;p&<1LCo@%2s zRK;r`X-nBzb^(;7?5upmvMRKt?5yQLX*g9ZWoLgEHKQzL=b-{vGrs|WdC^jKg!Z5n zLQC1_0;yokoHdb3gx4}mOWCxx^ARHFHAJcaRSHNJSXMHLe<>5N6Se_NB@+?yI@k4_uOW9dGaY@B$OWE0nP(WJB z&f@Dt0hBV9vZo=;V}`>0b7mtr;CX~Y8D$7^w>vCl({2YWWv>Dy_k4t5DLa916M{LH zB9PC$cGf`3y&5Q#v6Q5oj{_SNiVmc0nMZZZKyKhWq{5Mbci7>af%hQ%l%nSkJR6W! zrfA=AaCjeL!WlVFg9uB5F98hs4gO%k84($OMDQU7w59Ar2u?;)Z7KUWun!Sama=of zT1!k>%03NP6ESTmdk%t6QqH6dHqmnk!cz9H0AMM*8kD~>a%Ki~&x99C+3NmQp25_o zg9=O8S0Oko#7fN{xETN2c=v>*?B#YC)}q;xmxBOH*#xwdy#sI%nqFJV{*1wtrR*;m zOj*jNp)SR#EMEt zqlk4crlo8gK5SXvU<@o}M~Z;3YiUc_?I0fq220rlw3PiOAn%CUQZ~;XRhYJveJdhp zYa5ob!-x?}+2I+EO-8bsY>3OW7e@ z^WzYNrEJoJWe-GfKncR3oDm3SQwL=!+sOMS2rQDal>J>GJdl=_vVU&Eu$0X^ zr=pK&$YPefj-1K2^MNtfE{$QAh zgBqdeY+wt3RS_HgVPF>m3-@RL7<~`W%?^q;f9nPZEdzR&jap+&p0ue$7pmqlm|@s} zANv`w{*RQqUS_*vz0XR6PcTKc38Poo%Ac zNG()-0oeHca(GNA6nz|8u;j|pWt1;&PRYxF%{YyW?5oz(EGLQN&o?BKZ z%RKFgMnYNUflo9il*MO0KawSyAIjom|5-tYg|b)(UTchv!qo835I!fA^8&zd+F6c< z2Msk3Sn^mymqP#_x5OetPe%)kL=REYho0@iU^SW7$GMcAGZ8GqX(oJjc)FuLUz%L% z19htp)U7^HxB5UueO@qOpwUnkyEZ#E(E?mg#*!YcULKIEKG*|5f2L=*(P8L`;T3N7 z@Q|h~?BTAYHY3w2FfIOWJ=#5b@PF;SZ__KAOBeT_T${aU(p?iHGnddh@Kt}ve{$jT z2mZDuly>Dymt6j0{#Eri-hB7=@VA#PyZ5vIGvp+#2tN&Z$KX%EbFj$6YN;a+vyH*8 zfp384VVJw%Z-n0me=qzY_#^Pg;Cad6vao)JLj4w3J>8W!6&O+0Bo-8ow^TRItAO|? zSU@=TM&g6eHgp{B5&xOQ^VUfG>mu(0;XhyEm*FPC_;V%yuX*J20%pA7-zWT=g`YP) zcY5A*h<{Jwd8rXM`tZ(1+@$A-l(^BK_Z8Mj2GS1`9ZlPlk6wzZ!lvy%7k;sBBH}mz zX8W`LSSIE}-C1AM!Q|tX3HB73G!nP;`}s z^QoNWF_?9vLavD8b;ytM2~E5WqdOKZEd z7EG(Xv z$|ND*OiALas*v~~CyDwBi993u%c5la%=S#spSl_ZX3B_T&eByr>-T+d2Ejs`^* zFM4uuFeF@RS`Q??;0cMtUKGIUf(Ii<)e^&50jB3Wvyj*&$;`(eNE|OpX2zH=A1XrP zfQ{)nppx_)4wA&Np>T1uND{|b!o{&9Nvxl7fN*?EAc?OGlJIVz)P=VpsKxmsNzb`5 zGIN$rm^t1eiIZKz#Q_&d9D_+N9QTvN$pqozTnkAYONlIwU`gVTR!AI*lf?15B;;fO z)w@Z{;xvIUb9hT;jzNXl+|Eg+Ln)Obo??s_G>$X;?9H0-$1lO-7jMQKc#_kZ>@

    RU-%Ssnx*Sd5 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%0D{C&z&Mv`y03v@K3Gqr*dsu5rA9E2!ObjA*ZfN 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�_?L4XP}K-TfdE4vpRY0we^xn>a~qzZ$!H5cD*X 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 z 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

    =6iPCGUY5e) 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
    F>$gni9d|~ru%=VS1t4iCm);@dr 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 {9HG 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�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

    a9?GnHymZ}@rDaD&jy$Bfjc&3) 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

    Z>1axKbEWA6bg|w_K`1fT|6J;Rl2lyXm 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�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%0DZup0(p`=4dj~yPXW&We*)wi28V%1flmUD0G|gQ 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 L$Et};_l>$yOSsGwiI!< zrHH#NMI4smgecn<%xcD4ia0El_Fbyit*mpqWb5QlnB^2FWN zAx`Uz#f0Cydy#w@<_%+o^Dctj$rE=cPu!h6akq7dyRAdqZ5`sUj#F5~i|h(cf3n|# zF8VEdp6aoGD8fW#OuhFJ>{gGsTRq}#^@zKzLmcWk$rFcqPV&V0mQ`TJZ{AOkd^si# zW66JnV0ZGw-N_SoCr{jM9pY~55O-ULxZ66!jdj?4Ko@PD!&L7js8@`c%9wheBG|1S zakqNJ-Rco{TZg#YI>e22RPw}WohvZ;7sx`F5j-Qw$$&FvW3OUAgnk8VXUxa$xU@Ur zo1gY|{GWF^0?II*7}Gk#7q2yOx7NhnS`&90mAKoe#N9?E4x@6GlT(~XJN|_vUSd~p z#+1{gD!dd*S7M%R9tRXfn9q!g=T5O=FX+^r6AxAlm-tw$W{IO-8EvMV^Tsm6B1IcT^J z^KZ!3Daj54cPaNtw$rDGF%Zu1Pnm%li~XNnJ#{vQHdZ;@dN`xLMVigs_jp(? z^c}~OVIci9J^5+kY`A`KSY5QRlBIaDw4)$-vG9PSB&bnvn6R)g*0PvYG)xv%#n{+F zBc}K{BVG(Q5v~Mo3fy^c7r;%2qpq{z=E6~S1>k(R1#k=Ds^F^OE`qxR?lQQ=aOAxl zupVx?!LI~tg^R*7N;}FI)_2}{$4!AQ`jM?bk(2t+uv_0d*Zjxe7|?^ zNA9a0{YmS&vw!{a+}!L7-g$fD-1IqJm!E#&57$h*@PdhD5007tv-{t^@8$DvxID14 z;ED5>JzRIwt-HQ*)5GKDzWJN21^3pbt$6g0PX}N6%A(bQ>weQRyyLPTk6&5xeDnBG zi~r*fZ~gY$MK$jfJ{{UHWn1UoAHO?m;;U=k_|Mnh{PdH5oqzeYXAR3aFy~v%o9|tI zf5jE&HShdvkIl2!_B-wEPj(Fb>9wO4yk0SB^v&Zhzxv<4(P#OA9j_k$*7NOnS-Rmi zz-@-x4z~wxFWdpRcj5Rl@t9Qzt_ZFSt`e>et{tu$ZUfwAxb1Lz;P%2DfO{9t>Vf!h zA-E#AGPp{(Iyi31?S|U`w;66b+#a~Sa0lStg~K^KD;q8ZR|LmBu9a|gaP4s2a2wz@ z!)=G#1Gg9M0NlH9ys$YNj>m_J;L6}C;p*Vp;kw~Az-@-x4z~wxFI+GaZ37%HY38Bi z*>H>Cn&DQ#t%utLw-s&&+|zI`!5xA-1{XwwlMBZ)UnOv};TFL)!>xi_54QIr+XDA6+*5G-;10qag-b)jm;=W?tr)HxPHjAe2`96`#G|&%0N#$h5Pa0WU%=mj zmyg;K0{9{uRXmqsk&bQiLaZ?I;mJ(m*YO{o&-T^$OVFPWCz%O1ITBh!LKuT1bdFi zFZojo&cG!0)ez;_w_)Os-R4r8xwW1qvup7$V(^4PcW z;i3TXQd1s0F-cs?hv$ZgZ-?WfHu3_VZse(Lu)syWTHOUMcN?i4j=+nJelM8(%6;35 zQO_tp#LgPelaNb%Ki&^MYG*s3@T)B~!26+``KV2KfUjW36rabj7|ZxlU)0%Q;9(N+ zgof&HDG#-w4D=>b-_`a+;3JK^H%$Hgj45v}6H%0uhuT&H{7$2fI;sF%_|={+;OCq7 z<$1hkjL&w3k2+ZaDDQ_lt^oXYlO6{r zhw$%9(Cs0}--kMx1AEjU&Q-A6t!H5B4}-ChXhUY3db=$YpRPJZ0y#OxF6zht@N><$ zS*<$*_YK8AJUlnfd^DSUeS~!Am2#MG%5{@zm$>@IaCr~Z?j+zv(2WmIyfge$g`r-W z_@d9!p*sA|kY-SOq2TqI_+J8@@i!Yg{seU5*BQI1jd{SiIg5|lDGey^g*w3lT=XqV zDEB!bEl9epW1r|T=MgI{W{!Za2?3kuT0*Sn0HM2 zTy=5;aXvP6`7Q9PP5P3a z+Wmy^T_z9eFaU6|iQ3l-T>4bCm7em9e6_WNcnJUSJZ$8Pjkr3_^rcPsEc7NWW&eU{ zv*cY?8{rT>)zsDghF|i_izXPqAOGR`IqXWW)E#wF54iLp@=Zw|I#cD9U%n|Xo%F%F z(Fo%e0uumP&-gB}9#9V71HOA~r}@saePHf6ao?`%WaPqS}ieWN}3 zKGSY|FW83Crfie=-mrXF#vFU_Jz*clGG*Ia64Lf%J!HLLf50}MdFEJw?K%4-+L&z^ zZN)xZZ0xoHvgWY?zeR;4-q^H4|A-wwTrW{sdzD|r! z9NDzkz0%KzO&*Juel~|8IAlZNP+xtEj|3bA$1*8|D~3B4ZVKG_aMR#sz|Dc9oOyur zjepUNgC9EW&b4bM=lyse%hf-#u-BchUDfAskD-gQHuS%{_E7a{;r90@&G=Kt`On{8 z`u#V*)^p#3*Zk_EvCXgbFX~?3Gjzt0FNQ7)f4JIr&+<_nFaPqF!Nvd4mHxv({x9d( zhVQKz{jc}TyZ7C~{k^lZRz7@e_ocrZb>{k>AGUwxy6-)a_S!Z3KFujjyYXo?3kWW$+({|Dk?= zJg^x4{YB3XXuRo9R~-SZwa?+#YC-!w{CDRszW;Lg=im3#z;}Qzf&UMHe|VwiH?Gd> z{bU{RcY$x1Si7$7!e2jG5B$G?4{Z;qbua*3Eyq>IX+Vo~=aTHo&cf+W>bT91o5@1GgXU6S!;?{&2WSaC6`m z!$slN!hIQTE8OF7KZiR6_YoZL3K)+>3B;!F>pqg?DlY z++?^4xMgsw;ckJu7w-FT&%wP4_a0mT6*3p@9Jm>9i{P$=yAJL)xNpP#5bh9a8u#Y z;Q@J)R>iouL@X71k$` zc)y0>+GPyFqr67FuNkhN#`48W92jv`%to&mC3t6%k;R)w$i-_&Op3gcgZY{Zy^t^7 z_+gkiLr!K+mm6l@ra%&}S1_biMkLSBnuxsrg#KgG!$dC>JCFveG6QAqJByn-saB&wENn>IWc_9Z? zV(mu6KLQx$ZWEuYzlOy9IgHQEI)?NDB9O$3QcS{JswIi*wuXyagh*1G`~mTBj}Q~y z3y6r^#9^2pFw9(2HKgzL(D8Xyi%Er{6v^dR!^M3nByrPgNWP%WkR^0j?CPg zY(&a1jbuI;k*bGy4-C^d95N&gcxwlg#LFH3kk02AlEyg96D~Jwpm?Z*C;VeWNfj>l zXe>?BYY@@{>y#Rc{g=xWiV%{l{N$d3 zRPyC20+WAF`f_Uk%P(2}=hvkOmxJ}G!sSGKJLCJk^5rPIvTu@b zIfLGa_{sE_gW@|^lM~FT(wFnfslw%y z@^%PMrk@-yz6IgQ>?a3`n^T0#3E@=f%X#2b;c^N%m40%3HVl_tm((lFIoR9M?ls4lcasw9704qrEtmW=l&2w@g1sx$G!(cIv`c} z5ffenwq)}2hU)mK!YfSpX0Rn|pN^RD^(o}b$;vF9j7R_OVLBj{edX+As&F|mxeH>F z*i}Ie4}qMYxVGSS!F*ELugip|lE3aG;c^Zu zRs1a{i7&^fQpJDD#BW9(ki|5W8P`7_#uq;8Y*bC#{-}2^{6{G%R=e<`&Zdse!uoNA zX-uTPv#Y6NOmX3|j`~Q`)zOYC3#+3mIvSd+!l~`;tt}1p zT`keJ&ca0v(Z;5+_3iD2)1z%&O>JGBkhQX@HQL_PQCQhp-?c2-5$P;!sceq6H7%$f z+iplMuIlo6F^0)wCyecEys~gbXGdX6TSM!L#-_sP(kmMNhmx&cjci8>D_WLz)OV~d zoGF>_ESwo#(blLkJvL^N*-iD0u;4#jxdrV_ZL=z7R3}sIFDT=}mIc-SLwRzS^OCOB z?M?r9V@{8DG+o%#*ixU&n*ZaKzjJkG;r}AT%<8CbZ*FPm{D;{l^&84^ySSyXDf$o7 z&0U!rTRPk8yBg3cOPe~gr4>!;*a%zc`PB=SUeVOhHMW@_Bnq2ewW6)7CDJ6M>aLEK zw&lRkX)kY8uLck_?;=k%xT`24U|CC6w6t|i7{7!lCM>33SffRu*=O?!D$N}}v29laJt0@|3>grgn@%hzL zJ38u#K=J7pPm^evnVWvG>RjSUl`X59THPckRc$Yo;H-+uj_7i<#yb7^)#WV>?10cn z>x4R+BB+?C0YEYHHGP&!2?#V)wlR5xZH$q@1u^wq^;!U|q{{{dnoO(OYQiu`gSc?-xx{I7s~+T(#$L76 zB|}k$BI{7+9%NvQ{|&H=)+~2JQidX&tvT)n#|ZyHlOm$rb$zfDETjwvO9qT)`R|As zLd&@W`5f*)1f~p4*aVK@{A4>RWAS?KGzz&83R&Zrt zR3?mGknSt)8|dT9?;9AAjsV>BlB2m$LiG2|+y(r5PONms3Z(B0_|t5s+HCGq4b{cS2|1 zx0g4X;mgknj9hnvQl}U4H461s<=4Mztq$!4 z0drCG>(pyqfOm9cI$jlsN67hsQP51sIGXM&=!<;chy-99Bz%5wS|IQN#FV=ec{~vC zfA&;_uLuO79#rp(LJz))ngV6BGIJ;&MTGhh0CJ+n#fD{3lxJk31`k5Ern1)3a8`Qo zKV#&uX?TSC9mRZ}L-pnNC$lEUm^GP7QMQYHG}&2u66i%PF%>kPR)uoLD1OWT>>6LW z4Ff&mhY9UUywacbjb_6K#mDhApBpGie>^Y`d8k(n*)wZ=MF{sl>SsCsF<|{65X$Tq zmeY?ph$^FPA_k`ba6gpv&&VocNujKCaN=n>aaf>gf0Q< zXs<_^FGGdHN*VgzG0K$CHXDpG@A`KJ?1jvvuQ;(Zb_ME@#Jshpp8e|@AMV1>@W1bW z&lLM0l*M?ksA{$=)Bgpe@_|Z^z7I`$7$;c%8%=s2oiM#vrCw_)*{8_5u49Rb9lz#1 z|G%WMPSdvzJ~Z>b;{JgP@seO%FeV+ZE9%=~);FEQGL^#>vDe6L?4#E(d-eWX(pa9z zVtVkqDAW4`gEAjSjJbg#WK^{}Ea&&GvHiEEt<|0{((_-?;)`kQLh1VweC8d44zpuA zcwS|<4sTzh>-<-h4(uwNIv8@Hb+<1QPr$kXvQh{4A?WB72Ihy zGcpIT&paLGSqYy0fnokW!Gp*AD|h<)y?4Xs=K1T_`Um5k!+s*RjlEf0ZT}FCXO_JO z(=J7M47nC>&RTTIXJPPm?R)5qd-;Fin;Yo5NxfX?S;B#{!8*j3OG!;CXN2xQ!V*9t1*^*R$KveEsaBaxVEP0UXvW(MEFonXJgurGw9t0Cza zC7lULMnV?s#Q_lpaDC?nGBY`9Ivrz-b*N-WZfE-LKQP0AjBbn{VZDqSr2pes<}GF= zjc?R%(Swf2v;)?Anf}MGw=p#Q35GV-Jcqbb5r0bJY!YD|%io4!ZRUHvMVyzk_@jMQwdnx4)_lAXw@)W2Y4F7 z7i(Bs4EQJ8YUMmDU~Mj78p3lltmVQY_QAJ)jCowZ+9QArKcr#pOMn63`!uZOE(G%L z(6Dw3AmwwOm-24`Wc>9S)~*6%{4Nb^>i`*lv4*u}1}`;u0U+gZURmi2_r!0!Uzq+xgiAm3}Q z&j5zk15!?-fr|~S0i?Wgzy}e(Ov7*q;Aqf`On3nx*4QfYH4KLUzYRQ3!*C8D<)i`9 zZXaXa=>dcv(=hxlAobxdT~nXu09C#W+ycmW8x33oI0SedAmuIsY=OKQ4a4Pt-vZ7v z9Dv~xz;6OC)-aq8*c6UP!}}0Oy`D4hDFb%_7J|MF zka})5a1-Db#NVi4_!hwXfUnmuyb6$d@ORGvYxz6qj6WNY>692)WMHld4;n~i$$u!M z`40dRe+h6f;2uEcYZu_%NOy;Z;fDdw0ew9n)9D5zUn?N(*sNi=4v_LH0Pg~Qwua$y zz&nALX&5d7WIje~SQ`SQygb06;LFu8oDE2OW@#9H37cw|{$2y0HgJ!DI}F?oNc(O9 zq&^!ATxZ}az&jwfOT%z0;MagRYZzVxNd0OwtgQfK{VfNio~3}Bz+a+axCrp8z(;Es z&Ie?=M+a+t4;uI!AnCgd+yXcZcsC&Bt^%YzyEF{f0p1RLv4-Iqz%K!>)G%BINIgq6 ztSthhoY8=^V}XX@5FqWCr(yWenWp>=e96GQfVA5VK}y4Itx}0kXV`49qq3pn>n^K~ID~2S~l20%ZR8Xc*oCh_&2`%^HR`0p84X zH4JwHGTk*A)^-6>PCFp;->PA_5s>+>(=a?5kb31Cm}g)PAoKq*&U{e+cMUuQ_yxp2 zs9|_N;OBw!rfR_O(}2|DDGh7)05bl1K&G?Gz&b;(G_VAa2Id)<14z4AfXvs?(=|K-cmv`e(lC4ga4qot8it<(q#jReSo;(p<8K6HI_nH< zHT1;>mIKl*`GB;`QEZr^UEbBO_BlXRUjS8o(J;IX@H(WwRm1RRz-xiurD6CMKLI@BbNPvZ)2INn&2@sIg4Fm`pAdslhN|TT*B$|Kb4+OP! zwX{uJ+NLdS(<`k}bK7XS-n6A{w5X}lHn*j1wA7ngYNOINTC8cMHd@r*_j}GeJDbgH zw72)U_xU})-#nT5%zNH*-t(R_XU?3N?3_7|AFMLp5zXCaLE0GtS^hJcUcL{?@(*Zw zJ3;!@A#4}6fh>PBNdK#ZWnc@^->B&=2Ad%lYI=Pj{aCNLI|pR?1d#b$zza&`S&-rU z`T}_ZTnruo>Gxrfn%+u~>B}^|IUv)gg1ZqfMbn!g;VzKrqcy!3@Iw`*AJy~@f=qt` zd>`WVYI=`JcsI!OU7FsbAk%kfdRsxJF9WYfyc;#Wg%Vx>GJU?L*9S8FdQGnzWO^5P z9pXi6dPnhNAcl{COn*+(dlqE+Ax-ZI@Oj9+n%*Ap1<1!Vy*9UHgyk67GxjVK&&d~Ixg9Z3otm$=wS3~Ap zQ=r!cs`{Lw+x=;f@+oi^;`M8Kd%?-@_qgWn9*}-^gN)C4MXp5rPEBtINdMbK-v+LM z{*b0O05W}p=nI8DVYbi>G9KTnWj-#Db`6n75_CPD)7;JZP#CWtWIE1~!uY)s-UYHA z+rXXlN7EYs3nAaG>1_sgKyJ|VR)O0gS89511h+vh(exIA1^DBfT%b1}WIg9;dNV-! zl?w9tPKu^C31ol6H#H`qemO@Nxce+f|2a1d{qF&pzEi?GB)nb1IiJi{*gd4_Z3Wp* zn>BYY1Cx<{G05j%ZcT48NV`cOk6(hOHyWIa@bi=LE*&@szKnFIHN688ejFS|c#o#{ z7|8qEPVf&1KdR~FyV5BLKMXRzHgF65)%4yD@;ODTrnecKjd(TS9Iz6+2)q&Gd0nFE zEd+U9^SkVzHxJ}_?bGz;fIP3WHN6=i^Ir^ZM*eP1Z>of+fSVAWtm!pCw)+c{6nBq; zOn)BCL%b19?=Z;YH6%O*#v)z6=I)aqkK+lD>AS#oUd!< zBD`7CTLaQwrRd8*AM`hBdP_ic-4uNx$m?o>rZ*2{f9ccot_K-EN7I`P($5r-?IKyz zn*j1S@%>iNYk-V*!KI&TjcR&Ng6om4PtzL!Re!3vyA0&>vl}&cmw>cW46Z}ELQOB< zTw}eaiar_4fj&von*g$1kHUE#r}LV-Id>H6XBed2A&~vg8BOmga3;b}f;=DkG`+px zEQIsTE$R=8zD@M4AoFR~++7ByBVGxZ4g1BK-U9F!kn=UY*&zLJgShoANY(TvOLzi^ zThRiSrZ*bQgluSfM`QKzIax>Fo!ZAK&+8{2qpb-QW_$>(cagg6WWtYI>U)j(BAtx0I zVY8;U24wsy5Ra4!DmA@jAjdU)Umo-pfb4hkHN8HN>2g4}qijv@Vvzl?Thp5YG9KT< zXS+(!^twPiS}2It^o~a9@{S0Hg+szY;Q&Z`CqXf?`c?A&6U} zf&xu%KFD^Mr|I>9w4VX~9nbBTfw)yDNZ0hHg0!Cus`>&kbT3HI^co=3U2x)hig3OU z33|_gOm`M!x*-rl)Pggb-T{#5PJtK_7W8X+Pk>B!9Avs45JRwnW18Nh65at~h*NMx z)7vKDhd>M!3IdwmW(jWqamg;I(e##qEO&`8A7p=@r|De}(vNJAeq?~S)D<9%^twfl zYqruSgXroDk~F;uAltP|^wA)?;sQg{d%>agqnh61ApJQe>=GUk9u^)Fwt}iXfbea3 zrN|}1d?6+Y<}W7;ax}e|R@=a-Td+*in+o#&E=6;9GKjJ)PXOu91w;4$qnh6H;0%Nh zgB)j^)%2bLInEf=^bUX=XPnaXo&-70=+pG}g82VO!EsIRF_8aP?AG*lg8V5i!d~!R z$UR^u*e>C1;60E7;8(yh3FmqFdB}y}5ikc_3cG0Q%5IX7=hvs8H^5JV=;Mtg%pX+w z3wyzjLf->^1ndCQ5wBhJ4Zn4h&KW< zUmP37ey|a8A9xFhy26~z`nWS*05Zw;do$Po-UPCprXgOT=re@r42RwgE&^R3#xv@; z29&K=yBILDqK;$ogIb zvc6Y?qbUC>5NR>dyRQE%koBJd4uUJe0TA<&CH8~pdlLJ=%fMc6G1vnx1iL}habhR9 z0PFzggYDovunk0?l^6i$g00|1U;{V@tO8TOGH^Cn0?q;p!I@w_h(1moPt1Xpm;-q_ zm;p`$)4?PVJ{VI$*fJ79gc(yn7l^)5o#*i&kNaeB1e^p8gNUQf`#5kAax6FiqAyMC z2mcQCfp3Dn;2U5M2wSRs{0;1c{5seH{uOKoUjy5~zkmS{d8&5vD%b$|99RXu43>ez zU&K!2$3z$oXY|0rr7UgWcc& z*a`j|r`SD_*1Y9JO!43=fHgMC!i1fF_;75`jwat(vBPa z7MKF!`j_Ye{{u9@esFZMx=to?-rOHS9s+*|4uZb}`$5|215bjz;Ge*5un+76p9DKV zT(1-PT!G;M@CmRL#C1EdO2W&)??WyDUj*|d+y_1mIR`uorh_LyH~1Ks0{#JXNw@(% z3V9TRB8<-ydH>J&L*VzoL2wx4{r@9iANVlX3t}9W*bVlAo#1!D4iNX#iEZGI(e47^ zw;{KJ$H4~hKM-C87D6rqcYq~eKf-x`UjR8DWPSU9n_xQlLxj6Q#!mrx z{w9GxLAVRN3bFxy1LXbu4-h^AGX5~Q9UKCmMED@c_?(Yo9oP>(f$%nJi!Nf z2)qa!1Rp~90Qhyt{a_;42R?w^UhqN4Js__G-Qax)@1!1b2grWD9sB~q+rVzf0g%^= zR`AmZZvejrxe9cHWnde^OTe!}E(Cc!$p`O5xDWhS$T=XdD;eOe2u}yQAiF_ccT&J6 zgeQUbLw13@{up2l!uj0cKFFNQ`(AJu#8@+N2<(JB2;Kt@fO`<$4}Jx5ANXak7c4_K zr{g&ana?Ti20Ov`BfJCr7s&14m%ujgMuZ2z4#=(G7r_Sb2836EUw~W&ejY3VOAuZN z9)X+>eh&13*CIRz{4C@Q@H1dKcn!kcU_0a#@Y7%tSd4HN$aZUhvq3(;$Vd1H_$kQ4 z;2LlU^dg+kFFpx*09+0BgKH7q2defDPC|GO^$70<4@2$*KLK`ts}SA}@;qt-KMn@K zEQGg8cmv4mXcg!I%fOEzUJ1AsECg|_O3Vjo#|QFymjkW0Xf6wI1+Fup7J_41j+F8$k9yRUrG1 zGGU3Z5Tw8PAnVHq@_f$$d46YrJP*^sji4L!fk`0kx2iac*K>E=Ns(uHgKV_imZ$SE$53+yA0ojjafb2)yApJ}M z*-seYC^+K8|Aj%`N038cF*pd`1P*{TV86(HAdg!wxDV_Rxf`s6+zIXhJHS$~UDyV) zJ_6v4U@Le7*Z`J*RUqw_fy}=IECLI`TfuzrHqa+>4#;sx2G|Owg9ku2xF1XbISw&E z+C^E7TfiZZ@*r3b_Jho?53B=wK$g23tOYwjmcJdm84QRXc^cJ_t3c&9h z-V5f4J_Gbac7v>^6tDtxfh?y1mV+Z0x3S)a!7>nIKP3-_~jvR>Q3>%msA1Z)7W1Is}Ai$2P@2FwRpejk_(W`Oi39oz+`fS05FC4pYZE^rmt z3Elyo9LQBl#TUsEgJ49sBpinm-gi zCcH~{t8kOhD|86oNYm+03i^CVV7ImKPt=>t`+`%f!04Kd_Z`w@Z-X} zgqgx6!r}Qk{gCiBVUuvDaI0{EaJKL@JoI&--uZQR@(034g*OOy3HiG?#!DBzovP*6 zh0h3oCj6@KE5cSGfA2;+R|z)=zdu)pKP;3v!DBxyvR}AcxK@}cj2A`;yDrl9_`5Ua zcdM{b$oY{N?i2F&W0d*(G4fAyG=DGrsPGQqZs9e;%Yvv z+>bN9`SuArg#lri&?j^Y4dD7VUf3xN2+M>%p<8GOhj0*8dSRz9AS@I5 zgl?fB9Ey_k!cJj8SSIud-9ke+g!ZcP7j_B*!ZM*x=oT8nAtYAmg`L8HuuSL^x`l>t zNZMyDbezHVtYaA4QO5;*NWQ~))EVbI=Ip_?*LlL}aGs1k73*-e z$92Rxoq^~>(N1T3^bu^2MfYHPGP)nzbI~K%24XO4fb&R92e!vzdaykcGlcEo*!Eb& zjP1wvRO|q@?Qut7tt0Lzw!LvDus!5zb0NNK2;0Mx+VSnsPFEN9`(3B7J?|QI#X0+9 zPQ}DIM`JEv+Z}r>HqLo2b_Cngv4hwicC{nUaaS+4XI;bC_Qjoq+AC~xAS#5iYL;$du$CUzpcKk*c{rxOPgqod9zjwW7!)He0- zRMh&^lh~e_Iy4oUsiRW^NysVb2(|-Br<0Ys6H#sH*| z8RsEgm=Q=mgfEI7N$$Y5Gr0@f*j`8p%!!UVH)mwd`8h~Gw{0%+ zn%gxuI_mh`-nl0r_0K(p?a|cER2;k1Zftu}k7IixwGTNTo7Xe%_`K+-lk@xMpPG-n z=LZ%XT7Ysd=)ksfK^L~i7W81-yWqqEhjVDbIqVNDIE(GM1tZuVa<{or4tKvBHr;*L z_PbAEd&WJ4@Q#ID3sI7VN3rc%*o|%P!V?Q|q!u1pgqmA;0U?JLwPC+w(a}Y)zvvwH zhZdd1_S~WoYy)YB(j3myX+vqK(X>Hqhtkesdp>Ox;eCrwEygifd=lGJiwCehyLfo9 z%h_}B@r%)hFYd>7;NsI4!@?y)m%zd$gV+vTau(YYm-b!ia-P3r^b)kmOAlWf=R9(0 z2SU!JkEF*r14|Aq!8x*|eF;jjv}-9mTzVASuBF}Bwq17kGMBS=>4~Lr&QnVVupL}_ zW~s}0Vp-oZrmY-RUHoN>Zwr7?PVcWH$dxgt6vi$t=IOm}iZ7brO z?JJHTypTqX}s@_#D=Y{ORD&)NC z2)0L8b*_qzI=gCk)j4QRuIXQc@~k<7?b$WMYj9L@&gG!ia?WCVE@uSWzO^UU!bVPD zEoyCT2ezGSyATq%{LtkHxx540&da+lM>}8Ny&mmveJ8fv>yKf3e*Nfr)YSUE^{A=! zr?EY=erUbJdF+bbE701m=)t!4iW66$My?pV0_C{k9Jc4L7`?*bJnZZ6;hgfdW82|7 zitVuPoX_Pv=IimH7x10Lw%>OO;k~&ha&dGwjBdcu-FSE-yxQ2Y(cui_9nM3m$~%PZ z;k!KGwYeMHzRf4G zJ-nrT3q09!bPLM6r3?G#w~S&N$Ul@1ZGJnpNAo+eJ)Ym2ALs1K?`HVc_N_P%w;soK zVC(6vI09F7UIkCC9=sa8!PTQzUjW+*4i~f+L`R(}7$`VhfR)Up68_K`!9JZs|E^I^XZ##tT(SlCIKC-=IJ7R6`+kO%}vwdj$S@8V!(d`$&wjGCe zwC`{^yS8^j>fLc-N8gUS#w7()1J_ zN7$Ldp~AC;sGq_S#@N}h^XN_-y`4SSp5HaP3+HuFTM_&y>cF3b!;{}P?PL(-p{ujNjW10eJ77Wo_5TJ90~ zM%shESLDB3tmQtD`5h_h`$e7tCSq*Wi*#K0gB0oqME~kCtsfNq2gTl?=o98^{ix`h zb0MQX`h3cqF_5M04N3fOdm&>i_S9us|1q(jBK5)d@R`0}(l;#B>4zo#*Vk%!MC5qp z2mf;<{mo1d|3^jt+)Ax45&dM^L;O~e*NZ*=xR%TPKCSN%eI3)oo=f!mdHfyt-z$zG zm%}2P^X&6IHR{cI^|vn8>60Y=zcN1am->1e&p{Z!4dZJrUvfi6`3HQI@V^J2PM;#_ zQ^X&)$bZVw_IkzN?_8?mr;C2GTgw?D$K$@7`5ngn0GH~^b@~qRr(EO#i0_m5(?rkzn{he7^9AucME*YfX8e4K@4r;bg(6=s z>3KiJiUbw@TzX@uxxL z>EchT$X{Nd(+5Oe4bonl$gi)_a=XZL#a@TV{J=WncZ$sShbec9%;#bB*Zgk4{TsBt zNAz2Hyb!-v^cY68#y`Ke(XV zG1@VgrQ%V{vOk30E&9Jn z|Kang=*G1y5A2!WE%+jy6H`vbdBWv{ze5l$_S?mNgXC|1hv3sJFY<2? z{rj`Dee*j6-$yv}Grv2qQ1VMcy>MBTsP*P|1wQK2_J+jXmsV+g9@267GRuej`b0nC z*7{=6ub1-OF7jWb{<}mz&+{GrnBNI_0M`}T%fNBra;@Yyl%i#~lrKs2e?vdP^yYU0 zc1roo?*h1yj(YPu0H2yF@zIXB%=YR00%Gri)aPl@FPHL_iT)0^PH)cp{}i6f)4n;+ zKi@y5Y|iV?e?U<-=kdQm$~PeP0&BE>2zIzU&HfDK?-BijQa*DY|G%?8f<1HI{_T=q z9_pFP&!l|jy!=n#Jf}T3`WY@)NPgzL{LiInJztXGvdpdRoAdJDDdjWg;lC5djrp7N z?r&HR8P~f(A5-Ihc=Q+jTfR?;#>3K{%z5}?#yxWux) zV6V`pMB{4q=g9wzTg#uM|B%m$oF)FA6S5$={IWK>UlYj z-=k)FU%J+BmhyM|w5;A|hTfbfzgyySo+>V_k{{=>;_{zTe$I2na_$Y>wt{nKQ&=SkN6(_;FE_`i|#H?e(9 z#`VUh^IOUMp#Q7rzfF6Pr)FvWwHvg&Oympev|K9k6qXn9Zx;Cp)Eni1$oXRL!y^AV z7kVe=kU&4eAoV`cyLo*_`e``txIB#Wg!-+bzh3N>iTpDAU&LQ1@u$%q zNq25^_M~f2TdfZ96Gi?N`vb_! zMV^dwluJbZHv0$2w}^bToc{rlpJsmx{ij9VEB20x{6!pB>YosKgV=joWX{t@{jkWT zV$Z-hgv)DkKFkw2P3)}~`Il&iOn<$|m13_&0-!1kY68SrFKKxkZi|Ky? z+KU{|sOe+n$K?EYP2#ViJ;dK8@r$X4yj|p9@c2XCA@Zx2YPnG44$Ir)bo^tuc7@6xpdRTzF6n>4{u%z~ zNq*^UpU~eUdd@>h`QJo-Oxjnu#7|tL^#h{c#P*B$gCc(y{RHjbCh>p8_5%Hg=yyta z-WGY1_?NU%`(G#ieO}Uk566k=Q$(LE_4#elUnTxMD)Ivhb^cF_Jjn9_>D`jvOaD;6 z6_Wp*a(;|T{IekAUncR7@_d23T4dg5v3w4cgG-V4cZKLVuO{`eqW{feoqn_E*NcC% zMgIZuZ>Q*g>C@@6L_bgJuT=Cc^bhuL5PhDU&wE7v8t?buZ-c~tS*|Cyh<=^;cbCW? z68~OT<{~Y~8 zd$>i~L$4Du&ZmYg$~~h@WZzaTKg076VTWUY3AKCEBV_j4lixh3m6 z3jHLPPqMzCe@XP`!^cU&p zZPxaG&Hfv*N91Yr7xG4t%f;VoMDCF5OPR<{`iJ`cxcI+J{JTr^U&nb(eV6Df=pW?o ziTtqi-+vG}k^VvdSCQ-JALPmCce!+3tmS1QpJ)FKf4?gEJsk@f=SzBlj(-{bMf$Z8 z|I4{L{`VyQ;|QmIhv?VPU)XzE^sh>PzFYLg^cVWyik|%l)3=EJP3h0SAaaKI+avO) z#oy;8{bTcV`X@!7M*m=MP~?3e<#QtcSgtn?)H9d6;wzPtrfc zUoY|RjD?KjHB_kc|GD(nr{Oo31@za6cm71?a~sOeXGs;}i=lEY>LXO1i}n#JZw-_C!}5PTEWH!$GcAxN(9}e?Jem@JZ^n!P=$M~}^tiFF5mj1ag`O2{R zUKdtBWnuM`hHOL2|IM)aZ4c9*4lD0nVfyAUc~_WR7ACVB4b4A4%-@=@^1K#SpX>2_ zB{coxVfE1ymi}vD`u$<;?Q>z}8xE6y92WnzFxe>GvEizXr5g)!i;7AYmu@fG*3w+Q zr^au6LCz@MSF@>(Vb}T_oBgf1&G_`*9`zMFs;;T4=0{Aol_Rt@d++{`u(6Vkku@g9 zSjjU+mq}@ibLOY-1#jdpEuY2mIN#XC0cC@9^vX>(D~PNYciCx1s? zY4P=io8CS0*6l^bx!X5xD%GhXBq+$;u&Kau!z#-dAA)X%>r2f~F_s2D5?Femyt-K` z(7t|3Q9JmwYjJtwKL6OdC@d}5T2zd7q`%;3Q%~bcwWDyt_+zTWZ0#x^B+*3CEbNjFdxiq=I2h=l{at2N!z+^ zMK!-+tzE|lh4tAHcAk%Elac{aS63iGLFtO7=0>*cjWz!A#*Otg^-2o8JQUXBQ>p&O zF{i(D4P(1nD@L$iK##mNcLToH9PCYX>$jrn9zDEQ438Bw7$Ktl#YL=)?=$TE)~=Y{ z123Ty#oM(bVg##uvWqmmvH&rxNH=t`OZLV!FN;hsPs=n2KgTJxf zDCM_yOZ{~%wSL`iajd~YOz2NFT`|uSvC-&nF0YoA)*Hv*fCQZfW%UCr+?e zeNa~wTpGL#Z6@?ir;^X_vKE?}k#T87)y<`Q%d2Y)yUS}+^}f1tsLU#>sm7^NUW2-< z-@|ZKO}dDxXGhHKMHuu{Ak4o-MH(NDYeL1%5*!?rWmX$VT2Q}FjPi=%$ETC)>ky*G zR$=G8w1MiTO?8zh6i)Xh41SE#o6T0OPx7KFe%W1rgE>T5Sl-msj6qV%zAChxeYF@u zjg2{GIJdpXG%$fDr45b#{jjr34LFo9R_XTI7eYF(`u+aKMqG#0A!Q@9k1a)(A)l5a z#}?Zd@>cjOx0Sb6*S6HYYi!korBUg~A%{4(g$D&aX_LQlmmk;fx@*g8S|)ZjtZ{Ep z@f%y}a+?m;agI~T-tU)87_gzbt}-avl}L_g3mf`&42x8+ zhjEkoME1t=29BsEY&q(3DiMp!4{aNzH8uNdS5(wi)>PLaeXwZ!zP2d+=t3(i{go?f z>nmGo%uK94b^|&u1lN={9jL~)(pRV(Gj~KG!B&hK_W2v%n~7Dn zCX^3qyuGf*U$?Kh>b)7uUTf!%d0YF>+sNAc9&N0$^Mk#{Ka>7ie?|5`nLg{irC*ah z&j0GVYITPcdhOVZTWQ_>uiHE3QW2sU*Xs26p|+vI>RHFyG1 zw{K$&E<(Hfd;PdYtxz$nEAqaU^2SQ(Gisam72%pP;h7!Q&F=D>(XDedue`bZAF+{J z(@=#3rKJ`14F^lB{51{!MmakfiqR9U&f$uJ($bc?y7F3oWogA;L_jf1F$`C|S<$9~ zO&g1M?Ber>O}jSXaY0c~hhb@9>Gs@hn@V$wi+2TsIUX+Ma}Pd-2!`r1so19NV8k(@ zDx$i}56NSwaf|A5*#I`0&tK%)<*(Gev`xYT zIPy(lPiJhRz3USln>1{9KK5W!0Dq36hacrruOHQlRqN4hN9*sJuH*Wfk7 zvR+OzK9FK}%NzD}&Ep>S*ja#A6@IJ9xHuYg93BT~!M-93?Zs0TiNSc;yFNe0#CmPh)CYZ3W!7-U_ z(g_DF6QqbRJh4q-HsbeIS>Z=uV*e4_exPCNNp4-`rdEFi?mWa7+yyuLH=+yTrQ00- zqGh99?`tftUDsT%ZjtR;@PB!fGTt-O)YzNg(2>pfG-y_ZVYj+=UfQ0eb`fE(r9s~u z;OtU|%%<&E*TG<|evaRiy9ZZ;?egSM9va%Dp{IPj7jgn@$Jiu-6XCZ66GR<AJpVODJvVs*`0`@!pqOlV|C8fMH=gpEg6 zc!bK+D4<(WGc=0+YB^K)p9e(o0QCKG*U%28p+JkL}>2gj+8c;l@WBq zHlfGThc&`XOJkc-mojHuzS?2W+DMvAOJi?0QbJEoP-B}g^Ii0oI#^Qk6wP7t*<I%+lDJ%v5^SU0{!wpv>{6B$J35kEOBC z#L@>HmlHi=W_X{)zBBe%8vD#FeOP9?d~3$pmD6HvP-Ab`(udi#QHaT$pvkZ#nGrQM z3Nf~3%>=zZl=jtSDZROC4@9XLaO; z1>Hmq*;0oaU89WJU0R@-$fTtXKQ}z9gDFFv&Ek3+47M$}r4ILTRWRWgdsc8*0!tC@ zT2^+@R9G61r5Tfn6>RIYr4F-~l@&3kh?-1G6KVKh#R$*O6EQzaV_SqwOCM$v3Uww& zvYeGUUL&2LrLoV`(ud_~qcG3p@tH|il@Zj~XJ+ZcGSlT-Ww!I6Rtm9pRpb*6I{OQe zjY7=jD08;|DZwpmBzqARo;ATF_QkgJ!Gh@uvlQXyhiCN!MTXA4$TkWo@~R2UL8pI_ zwLX{eUQ zw$?3mSfyuqB4%czk<2WOZDvrbi|TmGI(=5=c#X708;#^?X>9Yf)WHHuZDs^BvrXu+ z^ud&pWkd~*uKGQa{E(=q1;6C+s4{za-2bUx*p*ITBK#j}5q_j6CTxEqH~t@O6B_w% z`< z9g2giCa?ybq_TCF!0E0t|_mO9L6R@V6Jq;!_X)?}uo54Rb~ zWR@qA#$##hGqdzznL(khBjYWb*O8zmv{iaCgTeM0TKcdIZ4~B3Bxo`$i6MYNAjreY((K%)+ja?hf)F)shlUbQTjcqISSo*Mf$+R@K zDJ^v{p&XlxcgfPy2UAKZl}6Q`E>=c_Chu7rNt0=5Y`wPBVR?IUGI;JqxLb#EqU(vJ z4sCOuHOi#@B?G#NEL!StKUYs+6uOCwTI%p8E?KLBDZ}%FCgOEZrLt+25v^rqN6ZJB zi20~gHu*%fmX#IEXUq|?f^AzzrlpV6VB(_hOJ?>O&#KjH z)_PXE-K#P(q3~o-o0*ZZIy>9#&dSMNtpeO-lg(GDiVxt;eZKdq-UMAykEuS4pTGIa z+vXG;oVQ~p)(iv~Zmd}5U@gI%8N(_k@WOcP^p#dJw(DOE4;ivX0C7H=w% zIdiN~%u|Hrd~15R)Taa+6Z79T<{21zbGOh;r2{Bdt@?_;#t9@YKOK%7ub_G zPjqN$XKzwZ-=a6#3O*vPYvSxHdI`5TAohHs=REzG zrpQ=at0}=jl*-MxzqzUoKSmu_e@RmR&(bL@Wv~~zj4!Xcxo`5Lw^WY!b2&P!V%rDj={#EjIAui$eIwW?XBpDWa=U@+0!i-zQUK5`>(8F+h z!(z`&n}deNqA#lp&Oc-4U-ka-MwM5%y%C9>EuQ#bFTBn|ofQ8n_%@cEf9aTqiHqr9 ztN52av46@Q4{&&U&JcS%AGrj~6HANZd^P{y8GUqg9CxV`sp(g_z!`iI`5J$43m<-JSn zO_KKV^n0|2SGknQaQ{AW^;rLYeVtWM*$XRgMSU&G*^Dvo0lXrQ^H*w2$Lp7V>qWdY$(LaB_Qi`@UvJi!TOIb%aI@*EAv~9HT=Uwgm}3vmDTmd_4PG->RVM*#&ct}v$r*Gs}aEt^Ha8z5o{vZxn}Ftn7S*n zo_6?(V5EF@;tlEMTNz6-n!q3Rwys2rWRI5ABov|X+z`UbzoWrlw*^!FL@L)dO!%Ts zo;JgVqLLqc>$cnn&hL1lyDzHrnb)s-6#KA!oAZIUK4g66ohZjsuSG>Y z$h1Sqi+2Bt{qu8;H!yB!cOl>51$y6s{h=p~&%6*d^T8J-Px>$fndyEJXB;=v(B~zN zz{7Xkv}817Kj*)DzuGzJ6O$+T-dH-xc*Ah?dEJhHSNjlnxXS5*j^Sn)$`XgN_$wN|B&(2TeodMJ?B2~ z`gKp*);sHs`5UNHl66aa+9%%|)zf`%B%}V^)y<=(-aP({R|P%mauwnj)vJ0b8}AaA z$HS;zB5_-KLw$tJWOtJCA=waywnO^++SCQg7u6_)HMa@%f=XE*m>Rgg@$d%f;eM#!Q+i8>G!>CWQ4Vqyu zsIXZN8uPlhFP!(l_9!E;i}{##O@C70OVv%Sqh&Ycj1EaZF%*S#h+Bqm(;j6r&1{wC zKu$NNe7B23pPV6mikVK1^NCQo{HCfgGU{cFTmhMR4@FJ)kiL#~RSwez{WpD>rH+yI z{dv@z`^24N;!6I#&qpm#w#q_m%~5s^;&?_%ui9wu^Kt4cCc(N0wfRKgu3fBWJT}?& zJL%(0KO@J}eT0q|c)0nds$TAoIo@nP@Grd0{0?PgS(q>T8Z&R!Qzv|QA!@$IA;;aU zqtJF-b`#61^RK$;Ku$l7XPCdEv^7!t4n6;jsw#CphF>%O8g{+lId_di_x&?bF0<{n z-PAG~xM@|e9pbhk+4N_kcsh>m6FzoRdQJd#7{)r(ZD$6qX;%M=u;iE09<3d7T|+;U zj&o`f&Mo?PpVRm@XkF97`Y$)mDF@CiwsYoT`f0@YYTXOV<{L5P^Y6qbW=!AifM22g z{7Y$1*0AnAgzK>xCpx6OJl@W#^ijsSYl1i~!}SUFudX*f@L5-k@zjDz#-E+*%jdh- zm(9;jy>C0yhxW_wpszCfJYFxVZfaKNvFStAO;tH<3C60lDDBrI#6kb!sk&)N@LJ4k z=v6L#4fPrN8fsprt8c2#*@|{lbyIfE)&$?f>CV8eB@Wl*D>oUpxTB0>Gu}lgtG1i{ zp6z}NcFpwkC)_>;&ZzIeE|ewNj7MLWOo1QpVF7#?o_)_n)hP24hh>XCU+FMzc`5Fm zi(HOLOREfHO&V_k1xj#lQ6D$Da}yhilM0i?`s$v=z2vT zjd20@*(Qh6u*PGYFtyJ+6cz9eeTZWu<1;vaRa?3Pb*IyDJcM==b`8Wi{j{ma)0$7P zJ(sH)lrd?6dq1XSayQ5_7IRwcU@Ov-%or_t(qNI8VfgezMtNmra5AEGM)=f1u)vpz4NUx?r`OYyI+}B8 z7)@2>js8kCZ{D7ky_k7xqnezn$(-=V(31?wG1}30j^#Af9HwUXVjQkl37aiUm!KXggIf5G12ru zXoq@&Gq@Ep>1D`#9|orX<0M#{Ik&2Eeq)s%H7dcl+pMqC6{y4i!P$J^U4)sof~5(m zvEXb;L1l36onUcgIv;bA4QV@LrnW+Adaddz#JaIp{r5~4Ne-M<)xlOK(Nt=QB?nMW zYtttWVw#o4X^bUXm7|iY%A1NXKM*5{Ap=2r?j*FzVB*lwkO~hme_eT#epaDNrm_fz zSzf3^l&249WvDx274Oyo{J){^XED*&Ik58olu=ltvBqGH#X11>FxEb-C$aKbUg%=~ zzghE6s2qZNlaM2K^y8$#X33-JG4Uq=w=1WcxDK<@oTPsV~bTy9hM)XRfAX z?AM`<@86rb8XIVC8LL6kTNpn(gYj?E^MrdVD?fm6{Pa}P@6@qE)RE$6=O{Z@dT*)T zdJB!QrPTgo){Nl9-KHJ6 zMuv_zi`0ywMsPmv;1@1%jWag#KhTEy=d2z+=}C1F`x<$T03$HmWVGO$7yIh`l^FUr z8)o^;i}*JF<2mTc_TXm^tS}YR&#y~_hpBHqSb_Y0gr3A~aZARTk{i zg+;JFEn%6~QShAwW8*dsI5x9^7&nIqrPpFQ&&shu`Q=R;Fa_8y{$B#q#*T@u@1pi& zV)DHlIUXFV-R|Fqe`G|`awMiwp*}-h*jn3AQ|+&WCoS5;ZRJfj8!b2(S)S5njNn6# z&IbHH%3oe*1y*1HA3SDeL(#v23I>OXdQwpg{p(w5DvN6C>zk`;4i@no63vDkI|__a zW+jof?yJK;gRW`7ziIqU#r4Hi)lKsKm~#G;Y*QV6oq)Sl2{T*Jw)*|m{_F6s7<_C% ze<7u~UR%Qbf*3PU`Kp0p!*8yrb1C$`2zBGM$0@p> z^ZS-=ZmFv%#IFW)?Ha0&5JA;0Q>@NLovLQ9Hnb7!LnN-M3&vITuk%uUis(17e?fNm zIjDRu0Ydl>IgOxS9Elr#^%*7)eg&GSBsjaRvk6Ho0x?teD9};i?|GO$O zxGkoS{ziO|02NwWj@r{uzhcoDh4h_Pb6|g^@AeGd=oz~IHV#x*HdjGVZz&m-^)0yT zF{=Fh=8SpcWjfrf@7awl1#G59ZMFK=Kxk(AfH$G9k*`weuTJ6f7mbbO2aO7xT(GLX zn7l++68gkIRh^nI+MKXoH&GRi(uPgsKmM};m`+l+%BJfu*|0U&a2|imHSxUh zp>qWr8?P;_ZuQq}Q1{4~q8b6}7Ctn<+Al5Lc&(Pk-;lrSY{vSoCc?d$+_FrC={7q&M_7EQ0G)4I1zU8;chyRx8q zPa~euu2g*azY#KeTog#W)l7d$*P zWKQd_!)O2Wd$;-c+j>T;pMFR5CBozKprMe*y6R8v}9Ncs1g-MGsovZGQd8 zbrJDV{q6~#;zz6z^Pd&!3bIEHEQ62tcVlD_`LhaW33|xB>6VuAn&NsjglWP^K2we7 zJ&{XbT4f5G%*F)2yA^Z5WMgTZDzddk^=Zp-pI5LAj%;P3fAa9~ME<5?WSe9DXR_NE zBjUzptN!4TzM13*7;l{5vu5~ly@3~=^ldGIa9fLyEROAoawH>uKDLheT8VM`8rk z+RTXNaaIklSU(){8zIL|?_*S5T(8e-H8fKH{b^Cp6DrkX0(BDXXn^l{Tu{_pT~niO zuZ#vf!P-%$v?`7HK+pW2fg|{fVN(;N`AFDd>@@$Ye4{846pR+OlN5}y%iLWY3@R~q zO@of{FO-;hv<6cZn!Egk6&Ht5sduccnd+zn!9z3lX?fghG_Z*0xPl9l49kwK{|hHYZfIZXsF2CwG367h6ZAE zN}C31I(s}?Y^JiJ>~u@)>|m;K6=bG57R+mxx!V&Ais)fi zFiMfR+ZzlTSBIt>#X)xp&E4)`P=!_Jde2PN5R9_(sO+Awf+D3V2}ao!9>p#Hi^~?G znVY+*_&F9AwCN1lZL@+pWOv94($TH0Y1=ZibG)IQrlFpop`E795i7{Ds`pIW$HZ@^ z(P;2Dm|PMh8Nlc6rP*mnC7@RaYjs3 zVp8nf#OLow_}v}x(;U;$!#T5!sKl)^u1r`Le|fxfGX5WaiLrGC{`EOkA!ddnDltBu z%HQ9CS6O0H5uAf)aRL0}Zukx)rS6Y+;2d*JQKl&8O!gr1q*;g@m52anC(nR(eF9#H z35Fs{!eWG85g(7;DbbFtGinpe>Yd2 z4P%D(i5@4rnAO7n5_$&J=5UfGrotK*B4Khx?U$4OQrF1eBzMnD%vwz02k+1vDu8( z;fR_PWxmuMbu~hw*|Wwxg^eqEb5bndT6CrvaiicpSfdN@laZKbsdlbPa=nP1HmuIo zh~zXT9l`z|usXbs=r4hjU!f5HAhz#djhd1$84kv|rqGrn75lE3xWr64owx~GN8zr{Arn6eOX`~{onxPrvDDI`uqA)SfKv5ii=8e3Ol zHMU8KcVe4r#4kgnF6_oGNccA(E_xDvu4+7jUDql{!V{!ps$)QLPE1nlJnW%Ju8*Pn znT!K6CyoVlbwd0i`tLcDl=vf4oUFtbARebSUWtE(_zR2;<|HW5K+hB+CP7?6ZKBeq zjTP696${6T6=TH%rZ`oZ`t%sli1`D`(mOLFDRvD;3WyPRF$y$@b!MK!5qC3o=*P@W z1+KW;O<{9^%k>oqEc;B4GJ71m(J0-_Y$dM2E~{eZDkWYsR@`rjs$sa=A>PNxYgFWK zj1_-4R(y7>_$ox@;98aT9f&+dW?rtuX;SAi*DEntfGd=^0NTfqV5U!r?}zwTin$bx znAcG=C6kv}%{&G*#Jnc2L1ip8g`5Ic(p3;Hr)F(QTqE|kaDN>X{{o?&!sS(QO`uA? z9?5Tm@G{0k7NJaYTq^EC&B%M8P8z3T}MR@~h;tyax@O@JL0o8xI7SecnIaAn`WMx_b|7rZ)cAh`?&oe|!q5Z73Dg>id^D1ms&g>*sjsbNu)|9kpMo8^OzyB?) z&tSb7SNeI5*chniKZSjUKMOK^K`q8444~k?B~)k*5scJZMKTk@;-t%Aah_vxzJi1H z=Q*OURfy5LSnB3;oXk8v4yt_2018Nxa6e+DF2Lx8v6g^T%yUfPeFGY%w(L}~9+g;6 z24lrMhgb_?NG;}54@d1B*eb$c*>RDB9kgQ+_1EF;fM*%F2$gEw2u_BBNkqMyDcAm$nHiUuaRO%C`d8q|y^MdQ<5EW<`&@9RqH&2C&3ydgs82;* zerIfSBi&S=Gp*LQxTM z5=UV$r8DE3&n6tTBS_c9bl1VxR1_hY<03z#V4i6l z?!3j?yzV$kl9mCFV=+M2qOs7lXg+3e)Ne-wh4o5bRt>d!OT4bkv z*|XNZk#6Q3e9}-m8K=b%J-8PhG$VP?_eBpv3VN_?9kaWaCewz@-0x-X%b!FcI7Z`g zMCkaMk#1%(WQNrrKxUUrgPn&WAHEfiT^pFyLmUjRa1^OxKBS7d(6nUU`a9}>3X9FO z_=vjoiP)Hy718D+bRQWgn~%`u$})zZVED=!?motBjdU{y^NE0?HVd&IVNOq>qM~r2 zu_~$*Qm~@Zz6a@cntF-@lC;+#s{Ec}ei^fn(?_WN6)!BAtTWGplpPK=elfDlEY15Z zNBzGeVImvlOvH+Ky2Sqi(ee;2Dj{Jz5QBR#oQLr*BeT;Znmg5mOv4){5#cp>;cq=si$n zJEE(BxsOBVcC4La4uDj4bIc)-%5BaIi1VOnea@dkq!c5XT~-vWM?Z`xQM@TouL!ah z`N|%b8`0TuF`qnX$=c=@<>sSW4D<%Z0<362YGIhez|q0NJ`SZcaOilQ>v^ovC}1+y#aOek=3ymjU1 zuy$cRj`bwg(^$`9J&!dSmBUV!cLCX0`7aTeH7-L>z@>}l3HYE?uDVP>z8Kvwm#<=_ zK7#_5jqIAia?!IpqwJIP>f#0Y=W=XSmkGIA@>3@V~SSAB)g!re%JtBl^v{W%=kcj|=OH^}{-#pQbON zdBM!Mym;=Jappjug*BNGv7l+fzgRE^Z=&df1$Wf>impVR-#p{thSIW6pgo@3oJ@>w zj?yN>c%G+Xbz@zKH4W>fSeIhG4C@N49<1NnKAP~-EeG#^`Q(ic_**yq!9Dlfr#rv) zlQ*{Ce{%MhUV1Qdee|b3U-IGk-&#@i{LC9xzkaCpmovZBQgQQBkKVrO?>~PnaLp&b za`inmQ~&t9`+eRwx?cE?2Y&aZ_|wzwzU%e_sfkZ6nb#KoM#C3Am=S1;zx(-Hrfzz( z@rsd^XA&=-|Mb5kCG0;w`sfWWf8+7!=e_q7FN-~NY1TpKSN0{e&;0W6$kuz7H2(VO z-NQxGybZ6d{^{q|fAi(n-)U}+eJrMZ)$T*zn(^16sLd;<{4s7}36I;t2KNh|*6UUO zum%-&71m0u2e5t|>zA>97weC){s!v^)+ki=EUZhg@_$l0uJT>w{Py#mfI%y@>U7tbf3thm6dNqXhA;jX}JPlOWy$ zGf3Szf>?Mj$RJ(-#TO1-8N_Fgl8`mWAU;2kSiJFN5buX2h|g3R^dMI8n0ML?;%&Fs z;*$>s@qvgW zx5QGT7zFVSOoI53iLv;^NnGWVAqMf8j5xuYW(M&-T7vlOfI)niAPIRjV-N??5{u9H z7{rH463YQCgZMm1V)4lWgZRKf{NfWJ9`skSA^{&TiH48A8Mz*-nB>hngLo$|L3{|q zAU=_iAU-@|P&I5x(8UtOCsAUa4+WU(X42AF=zUP*htV*5E)d6RZQ{$H-q@h zdohTGqeKRA$SAQm%w!OUv|@`7PZ-1}DH4m%z8J&@Y7&bNG#JE(zY@f!5Den8RSDuX zgFzg>iY-2cV-O$XNi6lS5kb6Jmmu>(z?fWcEl~^QI9v$WkxLLpir9k!smCtnt$Zt# z$aS2aBPlLjSnc%Y4LHihg-2t|5|EHcdh=Gh5~=L`GjFHmDmTtPo#GNnZ{8mBHw#lS zMAxycZ2(7-3kFSG#@RP-V}$(w1s!qs8(2|JQoBx^ z`9WuAf+^jR-29V#!QiN2A3!m5ZSR`sRmsvk z@Wcf!Xn&Op5;rLNJ5!wFO1iqfp@s_vgTi%@JvYt}k*!C6xClR(62xp_euoMQHwUEn zrKzSix2S#!1RkR8z-j`lo+GX`RNS_>zKeF_8dq`KZJ~CoUf#J~)AEfa2qeS)5D^rf zi=)0;w7nc(HfpbMta>vAWpem~Lx`x%jC}A0A4C-XtPLb?$7~%jC7}Z2<}rM;;hthz z<1|AS-JI7UOT9&(Kr$c6v?h6vA^aQGWFVfHaqcP`Z)JI_Efd4I?)zN@rj?$7=!ss$hvMUrD^eoM;SZU34-?Gw5SL`=3+~ubG)}0DY7)S?F z>-D_?8(z0eFXJ15U#>-)P46R?QK?9puE@1kc82SQTn0-=kPIXvT_wjgYm#*%;;?pF zH>&@s-lwg*y}rX%uj%WyrogPpu36&|VvS{e6lsUh>y{T$SU64hx~Cm;Z`x^P99NcF z-e;`wzFUx}*R4gbTkBqjuy>W^>a+ZhSXaT*1%25F?83Q)Je>K6H3N3Iyg#(8HP*OQ z@H}Qs1HoNWue1?N!j4?)CMk+K}PxSIIHG#}V`v$TOS9 zAOk%))-~?Wn#Vk*HOBqgM^_?YDvMW(T=fsFydOy{(=yzdD}VT-Wmft+)Ji;d!JZ6v zk#CWE-Aa{eL_HPx;a5>3ZNM?Gf98mly&7l7FgvKvy2`!jbt`?9HC1y*R0YZQ+5#i) zaman&5@+P~wjvAMpZ@6U*0>DQmCKuMw*MdE z#lt8%i%%Lx<%q_>8Q^1}PiqW35BwhF4g=@FpRa*|fdOC%=zSUky}-voKd3QK2kZmQ z(RN^95s-RIH3ss4l;=W#z`#ZHXXIbd7#IeA0`yspffGRL8`2m!A~Yw3Qhz`25%Bvo z23mmB-=r~c50Lsf859`cYh=<(gy!3UkAdclSYTizO%40BT+~>59{6$a&uI*t68`hT zKOy`f;ST`&A-_*!pda`d3|#eTtnCFdUt56JK(0w+pbp4o90Qh~#O$XwU{l+{X z-Xv7!Y7BUQjK|OzxP&VT|Hviv!X85rPXXol+pQZJwN zfPs5}--3S?@XOFwsj;>UNV`e|Zvf(1yK=V1fFF1m{2bt407r23qx?nS)sVZOF>nsZ z{2kU9I18lQX`mne9H|2aP6Bs=KA|x%1f<>p;6B*3Ph;&~@!tmg0{pu*)^-5D3;9Oi z!_ZTwF>nv?ApEOXJ3E-2Uhcwpm4cF&DAJJI5AGjCvfX3Q= zK*rBO#VZm2E{y?xSwR0jAnQ-B#sEiBzl!ip8fzPYl&b?`G`sR1je!~<>s6&-DR2Pc zN;K9M0Dl1fY#_tu05Kw7nWZt{6aP!N;$v;m%2ADh3qZ=B17ak-a#&;F43PRx3IBOu z9{49U22KD`_{u?zfy2T-0Q@5C+^?~AK>G*yE}ijq16j@;8Uq~jpnoHf z^|(%Bpa#hD_@H@Z_K-Tvf zje$xa?N|=PU03B2je#;?Cg?>P12+J7f}X80;0H1s=Sa~0JdJ@|U^?g=jRD@l(*8@P z!rD{^k)yie>ISHR|0nfR{?47N?HfMJLZv!>~ zmjUa5OMx4JOMq3t3Ls>;I+wDu90(hYGGGDlR^V*lEkHjo0L%m449o%E1oQzH00Dfv ztn{q|QqMPm)blkU^?V)Z2NnYvo_vPi0|XeK66_WHb6_13{{WEv#AYD-iM7BoU^UPW z>;mQiw*zy4sCU^c6#9>%Ft!1u-^d;YP5(2%`+@8)b^(XPe-OA8^bsKHWA=df?*;aN z-VH>(%^kw^0PF-^1?&fw0Xu-D!25s&K(wE1zxd|?+d=05(T=hW zU>k50?V}aQ_Ko_TJq)}Tcm~)4C1vUY913wAu1zr!_ z2D}s40o(*+dq-Ji*8xMo4M5hrD&Td%<-kT@8L$CZ3cMCr0Ne;%KO0E56$l>3K)7lAW?=Yh4rVc{GzIfhU1?0f&GSfP+BVe+2j; z-~r%x;DGq=1#SSn8#or&FaEti*5_?N53mDx2e1iP0IUPTMAcqy2UdYz56lCy{sD|$ z;NCGx&bwRi3c-nj-_O$gZwuB7en@b&;8MYnOf7#wuv2i0V2R)jf}HIMJH0OoeogQT zf?EVP3g!!5E0`wuZo1aP=N0NZCCKL#()$J12rd(R*Qfb^5JX?W{PfNSGMry<7zF7d z!2!Wu!8*Y*LBF6OI4pXG1P26r1?vRM1pR^ls_=d(O{2?|lbhzso9=S;o4ZVxYmd1X z|3j`5E|=?sc@pQR%+vTkYYyZ8ymMop)b!LxcMQ{x7;m+#dHOcdw`4<8tlx?7{zW&k+6(cn;(L zwC9W`&9&FF5C11TC*iZt8nD2%4qG1gpmp3D0(H`Q-b!I`swsDz>)OP z^h=QL%jnO5bjJRS0~xR@;{^VPGtR+pBx5w=5^!JUK<55T+wV@Fr#%Som+({3zmlFUbU*VObb-)QB>qyN?*fuvCiFK&-*Tb<$npWdO6X?M zw?XK)nP1@734Jq=bd%7JiM|e@&x*cnLa!8k%m=!IcK$&J-RC6z_Pbt}q~CtG`)?9| zzl8rMkw1=lLB|QAb`7tYLKgx}6I>OQ3-4g!aC4T$e?J(;L%EAM^bPYJ1^bY1H z%EqprpP)UcfA;5ye?|Qk${XpX>!yAO{SQ+A?D{^!{DQ4}#h!B5nvJl%$S1lh$cOFc zg};vF4V@Q-?qvSLR=d6rGJg@@3W@*2v=`}_hkT&>irCj6{MV=-{MEw0iTV+~OZeZV zKJe>=e~|eD{=>rO3`5dS3cZKv1HE79UyHsU2;IW=1^#iNKQ8)C3%yYEy(V)uQiCq3;%bJwiVXq&*)IdZFlhMCdz3-`9lpiM~OhAEi9< z#@;iwp5^VJzs3B6?e-q9Tcmt#dMWLJ{B6)n*T(XIJwFruUt|0@xA%NqMg0z%c9H&H zQeXJB3F()FzFN}r2l&wy(jMr~Mm%)4Ncyf7`o~NkWM7r=zm@uOhw$B`!T+Q1Z;<@# z5dQ5z^4*A+?&CNoJx*xOvSj?96nP)*1AmV2^TfVy3I7^N{{rD36#G6T^v}hw5z**3rKmh5oUq!_%dFZhHzfKwGmhVR z+Sh}-s1H0lzn0KGM}9s5eNYj0$hs){b6`68$6&9M?m=8mx&qfGC;fPgJjW%S{C|uI zkIlrQ_$KntDesQ4m*eqHepXEQpMmM*|0YJ?(HK6)ilXFy8>8<<a~uHN-P-3uvEf{ZPW_@ zC&+o*wkUxW$U28PGM^)UnQa|cjI`F2uXdt|TVX9>i0I_z>wRtFgGw#HnsD)p!gaTH z7_w5}U7^l)Nob5^G4Vw9$_a0ubNS|}X)3A1Nk&93xExeVz;|M!;O4f(R!Xp#<(>69 z&n{!z9nN*T>2z0kE@E87U#^NWJvIW9pi$zR`sTwk*u4Y&cOW7WF) zhI?h1`pqp8O<}X46W4`B03p(e{T7U1c<%!{^TjsZg!O9MdM=WL)>%{DLnUbRU7^P6 z5Z3N%)2rI2%7B<0Q;TE=JA2yJZ*Oa8f;H_uT`k+!wyDWnSW>(pq*iiY*AwaqT}~Fs zrgD+Bz*E_xvsKcXXoc{Ef$cnsDp9>$Xew1wrBrSuPDza71e;NzSJk_wNkr^s7dN*x zhDp_<$22JE7*a1TpD?A8!o=%`2U}XUw&r7T$rf(Yo-lk&f+9^>EuDBdK^(hhU3Qqn zJ9b@8Y>tqQC^=-~bo>+Y&*6Kd_~-X3gFTj3$zie+fy zUESC~KsQRYuL?E+2w`Q}23V%Tw03P?kA-H@xb>{S6>Zpl0=rvWPDVsZO0AK(#NMFn za>6=_>@osN6^rQ=s=0ecqPm<|T(7E+jA_6sqrs+73zk%us}G9_+hQbGrMNN}>}hMm zvgnP$hD{K_ej!2J%cxkfTZQw;RxibU%K9*mcOSfK338qHu&=&9SW~__ z;uRK*@>PPBE7sRIb510FK6_ zszizq_JY8U38s$Ke3K^F4rVX^`hLPhEi#R(dv+m~_*cu;E=(o={#J)h zp~+sx+<6suEIGa@YBLT8<1$pDcpMvfM1^g^UEWQ0LyB$#`3sUU<|kv!i)W~ImtPWQ zBxf)WjQGAT zzf`4VL9(a4m6~0&K-pQCT1v6`9Gb7i=f@>W8@V7EV}3kC zTR$(%aP;x{C1Kx~8d98$Q8ZttBN-pN-=( zWirP6WQ=)XM&ja2%`Q&OE-KcEOf6MNwrX<4(YKuIdvO0%q*N3ozKx4{Fo=5izPuot z)Dv-n=jfuiEY{7qG#O(-JVO`C{CI}+2+0^F$r#v!QrdP*O)t{fRG5q(VI(YO37tfF zX<-~gs#`omr)+*Q#=I~ip&ccu*~O{ZMTNS$QA*XP!mxZyc4@(axMWEYCu1y#XGjsp zGo*-xWbYJMf2t_xTy%9^9l;VC@LVg zu%KXmNr~TIQczk{s>JIu>=DA6rp^#HgY4+RF4i1r%5TSjw78$X{p4k^k#{q|V(gwf7NaluR62<_-z}Ym0v<)7Z7p`0|*v+k#!Y&xBS-PPnOomUmq%+%rMS!a+eN5pg-um+TaBtNOrR1!C-AuwkKsuS_KT)0jl07y5{?E+`N1q3$L= zpW+cVI{$`5-+sIspsRyEr;AUo8W6zNADy91h%?r{CcJ~7JEFnx;R6Gz9)K+7s&oFc zyxr0QVjni&tXCef`nZlZU6lr7Q1n$Hi|{%m&WXM*UN&f9tiC4EXNUFqwSBvxPl`N| zea&036DeJ+KF$%Ko2>y$h3fhzWE_ZnYRlS0_U(P3oY}>0));`s_*_n}3`mqny;gUcb~Ar1v&qIYIQ{i_j*u z6KJe`!>nX*ztLdy&Xf~@WcG14;g;sE?pXUyP1XVJ`qD8=+jj;NniJQTjm_N++*Vk- zV30d83jsJI`XsEe4f;|!^anC3s-0YxQYD zeVy2vJJc1gZ_830$o|i$w$H*CqYt}6wuFLgyHFQrpRKPz+S}#oW36F~vFZK7a&1SG z24f*#a!0%5_I1=Z#Oiac(1Go0^0mvD`d`!4L}b7HIDd%u69Y21J|2G_&wE zxfka=Xz!8{1(xb>Q&hNThGY zk`;=dBtE4JL6u9QNAFV!i6ng5%@=9O;)!g{>4+zZJ$kdS_m)$yIYlg)UG}OV$@r`B zn!1HLlH_w_y`1;3XW5!iH+PPG4|_10--Aumw0v^nHAWHte3D=n>G6$;~x-U$p&( z-MNR}*-?IQWbKa+47r0pfAh{~a1Px&TnFEI#CYOexB0>wZucRE9Y$Q#`+J;^Of%l{ zAwD1CJ%5!xH*r4vobklV?umzfA#u`%VbBaW!D}3~!_ekAX75uEZJ9IbIOpf-w*Pyc zH@ngw&qyzO>-u!#EyElN_|0Cf)TV7pgH2_F)#o2_&C!0ytFgAtIG(U_1Shdk1u;G z7y00C?jE)Ib~#e634G?sJjfW$^9D&9?;*>4HJay$Y|o(6M(E7-=O`O;4MAspqP=g7 zy-L}l%9i;kb`QIC{@Awr5KrBfri6AsTfw}E)GHmP_o-LiMp1gx>{8aXS7#n;eS5Qc za5U&b{<)El9@IMv_1b*mUF7Wu>fP^A=j=SR^RCXV78O?I?6e^ldHa%-U964K{@QN( zJzHVI&ZUTZ32dl^T<=X9@>5{E5AvHj4KYTx%!HOYurXJ?~L}?dTo31 zU`x}MZKHKtN=JvK%@4Z~4zhLdxAl>>!%S9T?k_!n&sG!3&{mhDf3U+zJ|B0|^;?>v zXyi*2-2j?#54*<~5zF@OR_U;H(0<#7NviC$?JptU{Kp@Tl9l)eUvgiibk)V^nxb@V zAAL#EpHfGfS_pPeuS3UF75;$~;Z>bM{8y^@?KC*;`f=~hYL*p-WvXA1KJUHdbYJ6? z>)z5dNO~gjgmvSk1iI`x=*+iQkZ;T%+QB}|wk1;jy-!hhyiQ%G?Yv8+X8>t?8F^qz zowUo(+4kzTupD%{>b5XX^?B2l`%6!v-Z|6C{)6_VYKQDAbeP_!(wmw}&m)Zo@u`MW zj}QKA1BtF-zmK_ou|Ij%Yy1xPr8S>*8$Yo1Ohg^9+hYHgp3&Yd^TO@QmSK5g7%tbQ z-#d)%^FF?1Hm_$YT&gg=h?lzA4t3j^fa`PQ8Uw%FS7$!c8g-3EUppIpN;>)$rY-0} z+FV8r`jH=ij$Ef>`f@+|78898+k2#rAYQAi)qi!}m4;P+0thzZ-y@+l=HnZo|WQN&OMJ_bFG?>`{hedKk`inc;kf z?{V7ad+Q^g@ma5~(Tc`A(_qvp9Z;|J*5i<-8~llz#mw|HIV zJ?~iAfJvH0aTRq40 zW!$>dxNj)UsIhh6u|J&0>99fDHRpZXwF2=nJx*JoOY)`nDGdLrc;e%@ymUwF*VkH= zui^A+Ki)$mN^`xcgT2*AH!H8_@R!`d4Py)=)! z0Y~!Vq6Rl{9^`M^esjE~MM>q05(g+w8lYGO_=u4>`eN;`S4-6SRcvf6ExWY<#jD*( zJ=|fF#vvITu{~n>GK^`njadHpFemlN?9}Y=AkBYwzLn9_6;kPr%y-88PL`YzuDyEN zn9)OT(Ub$69-L=LP8-LK3p@8+yz zN;G#<4LlQ1i!)^EWKC0Zr_Nn95fa6uf7f$IMV;Z8p&iLeN5Js69x541SM((0_iD=jU*hxI#YH#* zIBvnA_KpB@jhb8>T%*R1BjS3W#i%h4+A5v@XyBOylwN13kpEw7Z=X?@2%r+8y+_as`dTpGa}!^g{M==705Z4e!co= z1S@xkPu6bS5^Cr+@R@|6zR6L`ZU^B$F>b5e)Y4wxZRmgAf~n~fb}H?w>1xhg2wS|S-S&_8DW6bfXj6BrUv=~5 zCWq&;mgWu}J>DpVRnm8PduQ_l?fk?r?5(vb4T;0W2#5;4tcuZ5SXv-UmoH;IGUSUT zMFj6qUoAy>EwArd9168nxA)*it}$9%KLu^Y9Jo!qE88B;T@%_|kK4{9T;6%9P{>dH z(Udk}MQcY(bEpxP^n{ep>iVvG4SVTz+)_J=a4}wJhU(iQo(;I8j;uZ&u1|V;UW9Rf zyT0jCv-ZN?F;e&@>{RqvYxhvD$GaG*>0#l zMhKPdxW!g0)ayp0S`KxD`yi23c|lpOUyp{v+NAm<;V)(Xgy`@|SVL!X2R>f~v5}7* zPOq?C>|TwK`g|UV?dis}O6dpeCm-Zkj8AKGn_X&^p|+k@qqTmsc--Gv-?84{e+_L6 zb)r2XLtEL#HK+!zBXab<_TizB2Lt=0F08*sYqR>k))|>D@GkUJt9!cnT%uPCkX8JR2DCb4ysi~mH`)y!o{*+U z1}VGL7mJOn>$f$x_O$9Ms{E1KhLG*AeA;n6=xlD(Q&*KweM^h3m0fq@L&w$lGML{7 zw}zH*+F|OCS>*vwnTRb09Qz4Whc-p;IiNij_iVz)lRU@Am3L?={?Qq)y`j0gWqWm~ zA=JDT%_d@%YP@)?>Fm-^oX!m06!rCXc;fa*_{Km8SFbJxyL z2cfRG74;n)pIaYlt?y_;cgd&qj(QAfI6koN#zQxzZ6I@$=WAB&f$G>|+urcQvLlMHUqmeW0ooxO%}`I=`Woiw zrKDjMQd{zTgt zCEuBkGb9Uzvn=0t-30w9?QK9{d|bBFXxW0qc=re)g6pT zwC^`0?pR7o{%=?$x5dqETifsDHz*0$R!F?G!h4vb?|H(*##nJ6awin=b*@?vTa1ZE z(`%EBvZt`;eZC8*ecvw+QpBBf@V_?2dw~@C?6)22I8-33SD=Qt9h#=PhBQiXYD#`t=dY zFOhdDJ*nQEu%J@BSxHe=Q7>I;jVKa#s4JX9M7%}E$6I(f!FMGFJ|EQ2-SEP5H=bal zdleasaz0RqSAN`suKn!W!YBRumS7<&Lab2me!SRX^@J{g z(RQc@wFHf}PkX~&RdN;vI~2bBQVxl*PY;B>8tl{KVXwHP+Lj#&TUceEa;peBQ!U1< z&*i^LSao5MD*NU3{o@7es;mt}8+1w=G%}j;q=}Eem_aRen2^y*4>A#6GPGhlpJ8#5^CLk@!~XFx&%qJ72OaPsn)WQ|0S3_M%O3^3++?&4G~zV z={|l=1jijX=-{ujB~<;`z`q}jUb#BLXMp0UsE z_*~dkCN@I)*)iJD&@a~6`t5Jz6ZF^v61A<)g%7pta~t7j+UIs^C>QI@appDI6D)Uj zj(1x2OAlqe@=)eDb3FP-SBc@yUNPa;tc963XS(o)*L|(AVglaPj#XeyFx}ainPmRw zL&!kyba0_`#+XVB%Lu6RgsuG>2G9f}wiAg*3 zP1UJW;?s1VVO?sSAoaIBzm~u5N)(xcHCt#UH%G!L;`;a;Uok=D z`JdSwowrgFH#l>f*?*%gW*3+|i^uB; za1Y=xciU?&xL3i)!>-%<8UB2pWjWqw8Wi{}j0e>~S?9xjl#Z`VPn$<2jXQ!g~Dq4D9fWMq7!$d>mGG)_j1+lS>g_ z+C(PWT*`BA+N8UH#-uj4slRFN5qECxA3 zZl)p^lgqGKio6pfGjZw|MQ#GgT$?&pkq<t=OK3{mXkEBQsm5r z%sG*c<2HCOuFM6<4Bqf6qO{UCg*Wh@B<1C23CUJ99+7FPyD#RiL ze+I|)x+Y9vaC%2m+AQoe5MZI+|0?`kMn=zsmF5=r_)a1+?f7L z{2d1gg@)=UJwE|;h3TLENASIf0i5Y3lAET^ebdK;&$FiI;hg*OxMt=|e+=h8ROfld zm09VaERP2t*&0`wem}s^_F;HfPcsW}Is+%ZhO6^@ADS@-r>*ev-Hpg*aIySPkh;e; z(>J3X)Bvek*UYRL+&JOeq&|!&jm&L0oeMADjhT<&^k$r9U71w@uzZ=Hh0on&&d;Rn zn{hhk%FMl}sq6-Ql`8ZO3Ise)Ltv)42Sm>FZ{hzCOl88kv93P%8JYhHp%>wioi~dx zJv(Q{Ip8{!X7)H*{(GAm@0#hE@vcoxU^*;htCGxRIx=l)BGNHqs!dID&CH!~wM|WS z&CD}0*>V2{s;n`ddc_@}J?Ia|P4VYExIjdL#2?Fg^^gv2SE;0(gANuE%j| zP4K)$yS{^S-?*+EZzdWdG#J?TjXpUMOHaUqSFv%pUo4dGB zt8n@xPRB3xRN*w^YdAMOcjMIJ?$)y>IrMQ0CMIdp6tvZ;Ab8s_X=>Ay>+SPtO;Z-x z=hK^fx8a;ka}o*&m!@i)L3LFtrFmZRuKSFH{Sr{cV|$Q5n5Y5_l(bJMeKr*g1$BZgnqS>XSPKngd!&26j z2y{IZDQAyNnXMm!_a@#?U1732HgTh+Z@G9AZjME!I&Qf>1nLglfSFgUqS*De8hd=o zY&`&VKViu0MBUdQ$2&N!?hL5N9USir@1?rys4iy-NTpqo#-G_*%g~L`nXNUv4JcW1oW+k-O8kK!ww0jIqPm14Cx}5W?PwCs}iaY0fpP!Xf9H>m1>1 z`S74s>nOtA&v5GyC%1qOha4LM6%L#8OHf>X%3OB`Ow8emIIo6D<9b`8Ju+jq-+`+3 z1~q@oV%3j9MXbt1r+SHIJjsi9PB}<*pZ+AH zGzvZs9XSh4lUG&KEc}ipd2ufMe&pO3W5*mGy=l!s<$j75d>a?oxex%IIcSWrQ>Yr7qzuwklKOLFvzk!OI-(r?OaroTu#PMLDe7G~bioD@O%+vDheg9O5RqC* zlDsK6U$f$io!8d>!-W&y-u1?Tw!eL2^L<}f9GLg-%Rl-r%`-P0t$Xa?-r&>qS1)S( z)?E+ozxC%=_tkoO{_01+-I`N0=bnEa__uG)IJ)VztKWX%7a!`bzxiJ$ZGZQ`57s{U z?Po82W5T@5eg6OW+GDRz829Qs1K-WhTXg7==~bV|zUJ3^%btDoXwg6MY4;u++_C*Z z9J_F^e?5$22*)WL!#FPDz*X1C!QsbIfP;N2d%`*#9XNV%?8Y&G;|Pu+9H(#$l^65WhTKLz(Klz1e~h*K%1{FO`zxFxh<9_R%BE!1-e~qP}e8WkBZI*#YUU2`e^X&I9?O}?<9Pl*box^3nWeU zu8HdUfbce7^$(zJ{&N!kUnKmC68fHtizOQ3HNdDZ8Ew(U`E7<3_OFx@oP zbD*8RDX4^`ZN9pSg8qf1UtL>3+xDm{0%*I;{0PkOr*P2iXDbETWn#A%`teBAUS58& z>A4%g<1hyKOdG?~M&=Xqn(;GEmIKqq{9-+@?RLh4;BoP=joC8zD%~i-feuhPR7Ke4 zMb)&>b~9C5C4*tumf5P&W2%b`vxQlSV&^X5O2CqJ6s^wPv%z4>nU`HL&QGVY5zAG~Y+n|&=~Uwi4bw5vDtG~D~b z?s>I+bFS#m40OCPf9czux3vCj;`a-B`!ln4PyEt`N3Z<;tM_gH`u>A=zcBjDUBB|* z9eC@LUtaZ<`=@6=H>dO8Uc5N>Z1$S3pP2l`m+l*T&6O{H;h6{L{jmV$SAm10SK51BpaD4Ei7oP&fi{oIgikLH z8;CAGpV5mCYZ8#{pI*F$5HAia(2FAz5|EF|%v|2Yz>5#jBFy1X3Ui25BIW=Ky*Sz; zQXJQ%S2_MfCGSb-#Tyin;z$L(IDjEi9M++idfElTapaF)9L1;L&@EnkvZfawvqhJ>g@PByv_*o|<`k zBf=byq!$OkM2gRu^g4t?r0nYiz3FhdQI2#Pt_Hj=h?fALb-{(!XlFkImw}0>KZ>4i7)PS?*$Ep2A7e0a`t4_`Qt;v8^xIEJHA(pPlhZkbgeh_Q?dP6k>E{!@ z%itsl)BGbg7sj&?OALoO_jY`N)it-ia4u$Y-P_&XG1vYC?8esmE=&r$v1G2ARmF87 z=j!kE|1|T+=k|1U&TVdMXz6JT%~dPee$dm56V0igyBsSjAP4_Md6Im>fBaLr0c=#ow_)jg7%{D!%?L49P@HFpD-4bR8&&2!a?Ep6RhXh>T_ zE$vv!er{DueK)`B>zdnK)zsb=TDv~KL%bYP>zAyG2;79Pp}QLIbyoflpcuNgcg_7D zR1~-2gUP1mhOWpI|37hQByV=CDQXSh56m`a^RYi$!!rC;x2s963BH6!w{LIcoZrNY zk)kT9@l_{2=(oM}lwnY~;B9VE%@PDIJ+@|9p$MM1iwWA_LW9Jui~fig=eXpou5YN> z-Vy2oh3h*za-1PnTaW%K6n?NPh?&mwOM=~?aFa=jpYdwSmRGZR_2hOPsN%N8*nbx1 zc&M$o?Y0m;5$*2Wu4(yZ6$FxDf7l5M7sQG?R0ip9J#8PNo7VV@5i860s%82Dmf_n9+BG}Z zn&ckiDm5+3y=|wJ>)mNt-b!nV;53D+tUSRh#D9|an01491hTHO@m7|%+A^QUOrHB) z1*Vmr0rf?U!o6&#Rpef{(ketS!|Pt=TV$n^o-6c9>pJ(MmDaW1m1HkbY|yhbd&x>` zraQ3GN>}VRGTe(z_bodWJcq|t3#sw?UV#m-Tc(%s!JdpWoNi<$faC5 zWHP*O2tEQlM%!mivTlTOYo~Ri`k(53+Pd58J8bouzHVy@?3wJEH69_?Sk_0a$rOFv z@t2VTca`Ppv;2=(SHaT-UD*ie!nx(`vt~YG z&7imUhnBU*8n+6buiM_o;O*W91FJRTm^BS7mwPLMx-(WrN=! zX(Ez4sMOt!Gs;$ycLx&tuzAe7T`BH@VsKWExVNudXGvPT$Q!09lD0>znSCm|OjHL0 zl_nioo9!#J(uXV)K450JX5}77>W)Fq*YgLI1N$hN0ZqzV4^3)y$`D&|QgWUiYF!UWF{R{Hv_1R;f&OzxWZuV=X6h(w-8HwKoWVw(xyG#^=!(;M->EAJG^% z4`ldr8f#AjnVwS`YmWk%{v#S|cLS+!m&U+@K!)F@v9<~Lb#x6b5qVfvP?Or_)Z2fiuGAI*i95 zHw63y_{TK{4g+cD0gZwEKE93h9Q^w<*7gE_2!GB5dKh{;GzMCL zc)M|99gy+X09lSz8Uwhxa4)eNmjD^Q1c-6BmI95nHvk#l4`lcpAj>sNW33O!@CK0K zFM2Qn5B>#>wda8he-_B_r-67=QF%&Z-~^E6KBTesIFR~|0>1}54E#QD0Qecm?bBGh z8~Ep-cWJEc1?~a;pvKw`;AcU%Xsm4lGX8sjS0H|Vp92ikh<_DuI{Yg&21J(a9aFN0;jf0y$y}-%f@6j084MbC^<$Hjw2%OJl8H{PTcpSGgJkJ|N50qp_CXR8j9J5My7J zBN_vPz{fyyTo4!-08(xr5M6xbUX6i0z;U2=YYg-OX@9TA+6RHh5Uv}T1Gx^3fhHjP zy+)0JN+8Q=36TBEBH#~zejwY;bd7;rAnnKj;*wvPr7_?G;?h~^(HIypb$`G&)sMh_ zz6oHsb3ocZtTDiM8n`r6p3xXM38eieG}aCQ8SXd`U3BH3#=ub^%kzlFKrfK?cL+8D znT~sa&jLC0Ou7t+E~s*m#y|-WO|-H=Blao5+jhi1U1O~W*bly;F)(V#byZ{F0`TMD zpVt@|2KIqIt1)mI_$cU88UrVR9|L_tV_*n4i1=U|u@-%$H7a075D5IT(|K*$&sz%t-sU@5R1SOA2dvg=l$AM`E2Jm4Z=4sapR2SgZU zZy}KSYJk-9T_E)w0?r108|VijPgQvG8U6_%z<6A+S8zA*JTmtI;2B^u@D#8b$npEz zfd_zFfdjzpK(=GF@9ci@?*(oHy$y(ZmE9!%b-?>UZvdixWiJ>1GGGtrQXuMC_H1A` z&=2ea<^lVGK42%%0Nw{2MSb20WV`GD4g=ePY=@|y*=&ccz#(88knQea-~sU;0JebM z3q;-NCZUcS-*aZADU>)!-;09n5unKq`a5-=@unf2fSPHxr$o3cl&IUFD z{lII0dB6r>4savT2b>8sfc3yplnd+IMc@qJd0-uI7#IYe0bUI}1^h7ZB(N4Z1jKu& z>_Ol?z#~A`-vhw$zyTob-wV7OxEnYY*f0LQK-RZyKo773_#t2ukoBw%2oqI(-TOBUeJ>L^V z-ZEdkvxW8x4nc@=1A@JRb%JGrenCTU*bXl^AlNHdCs-!v7X(m+_n9<}E>})&nk#R* z%hhl0GF`4c=3e}tFi+zDlzAHeXU$>!pEobyf5aTcf3K_0<#Qc3hfJSqpKHLC<~rg! zivQ!TA(!bo;vRIn@P8ElgYM&QkNbrCr27=8Gw!qa@ALF~T&|1m5uESy40zI9!|rqL zG}kWAZup<`oF~^a;_9Qdfs;m|7Uz>;djAz(KiCT|y*LA3KEq;j!oNe_Kw>( z&gVLlb2i84>K)fN4zlCU!RN%dllVV1?lgS%j^8)l=ejhm7ytd^ca8VB&y7Dn{sM4x z{H5`|6I`xc6L#Z&WWp%^`*Qnpk)OGPxyN%+UncfVg#8ou;D6u5fr%dX@WgWy&jUv$ zj!wJ;?3>&_dDmpbGI`%*kNd#n!;_DI8k~F_|0gFukN@Gx=fF8K;pl|H2}tjR(-Y1B z&rLW#;R5hv?(?~)5aapW3%M5&;5K0oQyq|=k2W70W%KX)MaaIVj_ zf6{?TX|7X~Peb?Nyd!xp<7S#K@NM^1^gmAehiKpYHpbqk`KzSexQACgAMOoA9(}KJ zU-jwm`$XqExNc>m1K2I{378Mw|me|A*M0BQ&pHjNhJj@H*=c%EF#^{b`1G z(BGtej{551%>wFUuhf@9q&wR(j3J@_$ok@-mx_H&l0Wyde2^FRKI8mI0n-|cy~szp zPtjiFO_SLBBjz{KYVZ5~AFMx)`v3RLf5i8e#Q$;H3;TZwIl3ug-vsET+sOFAe^>b5 zq<(~-Df}Vo1An~edz$$JexdMBi@s$-XES}^bJi-|hk>L+LVuL)4RnjpUle_PLLU`< zUljT`v=8#%5c(D%Y0es^3yHqp2)$GExe$)-i=r=0=%0zcYlOZ=^l=t3U8U$N7P?vV z*{j}sj(kUb+9~>*ME*FC_U#q=Ddr#Q=#Z4(dDaI9eU$o<_rt>fjg-GlkEMN({}ad6D`ZbTRD({hIJAXbEkS8x{t7Y z!Ji=fufw0|9Rq*5pU__LrwRW}oRgj-^kmYIzh300!k_$d;a^Ytz+WPKd_k}HYlVNB z_JMzw@T+Ja!rv$SM);F|zwo&i1oL+`@`>&fV(+8E|Bl%EF$w?gV&4~q|6d48{a+G3 z^M(5VTKMC{-m^kqDfWIvr{}tMY@H2&fUhKI^=us)(N}bbH0#GNHTBmydPy=LOW~ zNdM!s&yhb9p&u&3ZaU7KG{$10=yJ4AC;x8{my>=XM&I}td48k>`5^r~H4QT{-E0jfwAWijG4?!(P)>cf z$I#?C`5cdT()(lht77a6#L%CK$v@6Zck1hlDgUp=#8)3f^W$!3cq6#EWvN(>Wo1?{OMGWo{P+|^5K%54dIY7ccT>8!tBY3VY8sn#jXZ^jb! zA;zuN?yC&ucVQ)dD5$_r2Avh{EnFpkbBoiss&-7y!R7#o&5NGtlE6wk9WjC}THUPR ziZ$zN%GXpZ4c<{+y`p?^<A(K~Jl#)Khajm}TJxOd{PQ9D`W>-ECp zqm|l)1t;TIoa}DxFl0f}yF#7qQV=nDkl02wJuJM4c|rpvJDRy!L3oYHpxVl!Gt`X@ z6%)rN!D1Gz*Q?v7ibt=2t};MYK$lI?QbwagVI6#K%Vz}bnSG80>AB|!wo(ZO*Q`f( z&;Zl1xMh9Ay|UfL<`#*ju-VXwBO!xMliesOC%e`I^E3mz5%jus55iQd#DB- zLszJ=I)p_&+w}e%sj?s@&(z}o!Ootx_1oLHr$bwNPgl$KwQXu5Wn}69bv>aTEIh0_ zz?ia^vXD%Q+tuK`!$?{aE!3Yda3q(aqQ-VADc7}6tSh>K=tSrh`cs)D6;$PX;#`UD zP4g3M6o6h_@A@baCD9YpyNRYK6L~>c+}vg_>YrGVbW^D}>qwYKlFRDCR1v#7L$IY~ zYimB%!fk18OHx5%vLdpXfm$6lVU%%2tol6FpQH#BU6zi`5iUE7V@tzj+|)tEm^eS< zOmu`*RWViAXiFU-b-7AVm9?SPjiE;Dtd!r{-q_Q^#lQbVYmBQp9%}9A-X3gF`;H>! zie>2Dy1KCkjP8vpTI##HuvJS4OLsTGHWj9|Yx8>S>WO|$&plqzh8={kK~dt8j?Rim z<%r(UB5~N*wh^f%mlHZVW=D0ojKI<+Vmi}mZl9E*kBkx5o2(#P8?cIVuqo7n4;ADB z%wkTwo_l35*wfaAwUrx#4V!Rph@EeOMx~Aw%TX__s99SbtX{foY4uXvw5<>Gcq7JJ zxFGk%2>a@rq&4NMBVJ*_C|@O5xng~dQ}?W3>czT~?5A3rDpb_!+bJazEmWT}K(dwU zQ!EW`FQ~3sWZW|Dml4pusd22Jei@;n7HUtKrc}=oDFb#UT6;Zpi1)WuZ%SSE-Ve?j z9LE+6o09L%kRtbNr6?@NeoYRwwV0pS+HsTJT%v1w{(^XhYAgBk;~A=Li%`Q&O zE}Ey)np&zb%#KNo4qXzLRw>0~jQQ~l=~0p~N|G^(lQFP2EqlAdWPHU)(CT!s;>0&H zad*8@Pwtl+NIzyJcnp7k3Szb_mpU0!LJNxH3P)N}JVWYRn31@?rDhkWW)~IfQb{dU zNVe)GkR#5U>h(RiM=Vk*ijtI2^lfca`CML*q@`07my=S>lQHJUGo+d)W0WLgU`OS| zRLr9Rc#8x@-fXp z3l=0v7WV#4oXZR189G_>lQHJSGj!QwTkFJe6enX873kE3`3ZBdumGBgJZec;e{E`yCzoe+RM0xn@G8`k}Rd}wIXS{Z*HGcZ` zum20LvDK>r{_*uAza2CDIN+w>*noEx$=obV(xj_m7&x28>mJVk=C=yU1%ut(4=?P3 z!J4HTYQkjr7i2o3WXyG_22*ag=zAXeXdWEiK1Q7A!*{|>e5i%~ z==3fZeS8l{x0f01a7???+4hB6XdUg1POm)=iSuviE?%kAdm8r51dV7C+1J2N8FKMWq|K>*>!<{y{B zq?;w_t@JB0{1=~p_NamuiM7wqiVx=(eH~Zp^yc0lo&ul+X_#p)}=`+mA3 z8jRgD^r9;Jp%2qk;+&MPDi2ne*z{f$eRee|W1%`+e0tU8HEd+8eK|5uf%Dbr>Y$J9 z;}Yzfr+lLS9Q9f4A02C7lNk182{w35bogZUvHrC*cXh|w=bNg-+wE<`wc5V@+mp4o zjm_O$C_|zR1}iJ?SRJt;NAyYY8g{m<0>KhlMul_ytsq#>R&CP9_+GEo@ zJ|?{zZ2SHeABDuYnDjQZw<4Y0coMuH?~u@bmpJ7IMBk8f2p6G`{omOKFmFl= z#^{sw!Ph}>vG&!i*MUx8UJ%_8e9S^uxg*?PMd`Z+Jl&vqmxR?Fg|318UPw}y-=19f z2o`Ju?t2{Hy`higwWA6L-Ph%y-*<7`h~xb_hT%1y@!g2w$<`28;llolouSpC#^!ok zUlO_Up2p_(n)ddVjqUuhM%&;ACepWJ$qHp-lK7M^>Y!tMejG7+^k%@x`Lvtw9h1cq z+5Z?i=#r$1dequ2S}LWSdZp}?^Mi=7+g>^=S-MtZQa}rJB(W#5E*OR2lE_soTNCP5 zC8))c#fSHCJ)O`1{22#UDm}`u2IPqhx7h5h zChr~h6-tKw>1OX!2evei4s4k-I_&m^{Z*W9#9202ef}YHj<&;i;(VrU6VAsPutleX z>HEV3(mE}}lX zhWBR~3+f~+%Z54=$qi>13ljM|ZG(LbzZ-|j<5cpjD>yD&p5=riq5M@yEA3{wob?Rl zw|lYJV%y33Vb`H|UB>T5$M=81uB*BY=z0;Wi~5~9HeOlwR)Ztoyol>3h%4mjtv)Ap ze^}auUDsG&sK>6WiOMAxWnkO=lGIz~BZdQZ&qLW7&GQEBd`%`dU&+l6%P}pf^v+T8 zbHeh;^xAT)pR~ahQ)d(IDx$Jp7L+r`3%BB{|?u|cOGFJ?n7)x zb|1)k$oyeHR79Qw*vq}}U&QTH?7$5J46A47e}v)o+OS4h8uvU_L8 zV#HmJbU&y1gLqqX+!K-ibz6E=yG&G0h`%PWPOxm6kpFdC=Ee1=c9~6w+)M81;W$`-Uc&Xs<){yK+9mIf zJL&o@O;I%RB#LeT&3qYlk1ryY?cJ@epSF(4syyxw*B`szcnSIBKmKr(ti(U~lKU#9 z%huua|8eimYUT%q|Egb+zU;l_bl*0BFfY5WEHWiO>$YgSRG#2EP5bHh(3SmmDn+F*p^Pkiltzw-9=MAZ+M?{V}Gs$Oe5 zQBNIy>vsZ7+3hvUO6?f&EQ^Vn-OKCS8e8zeNRz^4 z_026kc#3bsvvpH@<3fz2g&MjS;w^A!At&{&>A?)t&V`tb*wESB!8}`N)ORCc8)4gu zw#LvlWLjG@7grVvljiiyW^E5LixcM;szlNxHMJJ=~uL9L2Cs2t^gOcg!U_9&;tN|oyOJZrsc&z{Ll zO0|F6^L^j`&EC&?-*>Hdz3Z~~?6vl~czmSPVl^~1x%qr8vKZ?{xA&}41KlvN66r!e z?*>bkJhZf-?{^(WyUtewV!K=JidL;#G_T6ilRwy@f}E^Unbd8qi}o}&djg?usBwL) zOfhfQcC@!{k&wt(RLYGFJyB0EEMeOt(+9etLUMC%k7TxJvy`Fgvxp_E*noP5a|a?? z9Bpc~t5RiYEN$<(mT^=`xp#Ek7{z@Mg^y?#OaawBx4lV=yKm}7zNl#p$;vZjMqg54 ztcztZ4AukIt*&TW$Hu58yt#skjK$t-J0$Cv65e^7HFfR43{WXVDi&@=hfYsa@)Omk zCpy2OwUq;NO^&W}^Z44H4oPX;pj2cQJ{L6&G)eRIXJaWQ@hiLmlOwz#Bq6aT_u%W^8f$w2IRmg=s1e=IL@bWp1^q$=V6>u4q-ml z!>t|buMJ;OVVPSejE4;>c9`Arcm%t0{kM`z`q%6o;chR12^ya94sF()o7y+DcWi18 zquNHVw{+z-F)O3j;Xeao-8-d1xQ#j3MlceImHhj{tHI{FjiR4~EZz)W`pAxv_6M>I0vZ{i#j4BuPbC zc}2;!e5_PVE33dm2E)$?F3;Ks5h#mZhi#ASIk{0SHski~d**8KL z{H(-C=!)^CYJ1*J#*Z?r9PYb5uqcZ}r`H z-ww~hP9!DaBD~$Tub(oj1Vr)l(n;1E`p|z}%G`Yv%v-%tfs&o%&4 zoA5RqU5~a=D`w_~d)qm&H`)}&1bf*?V^M3v`ff{Rwke|SW;MGljsNbG1`rn_vV)F+J>(6(H^UTU&t4> zV`vf@7{W8AF7Mdb61@fAVNozW%6n~x)`WI~D6=rbkb^)t-VyCrwvpSSxC7B1V3TD& zUZ+~4Y`w~y>^df;u5O(wPnK_8T~`zvaBbuqzPd%d?TytKGNd!v+Q^I*LS-^uWYq2` zx}K=YLLJ<-rJLy&zbY^2mwTsJI<9DEM`N?d7b>@!>ZcmlT-;&66nr#+#4a`;(JZ4EG0gBrr7 zBl0}m+}h#gu`!H2UzCZPTAF&0#KntRJD{tnqZbBS%~5rq_r$e+OtyX??Lj3}d`TPEN|0a30 z6nn^6QY8BRQq`sXyR1#E8H zbqki(RL`xQzof2uRaI>j=O@%eO2+@4_H0YNFImjm*v4dkAEPXHIMtiIi=Q#XlLHHD zreQZT{P57W7S3HB<(#7q+H7O&YrRc77V=YC4Hc>{fOtG_=;0CTVonZNdjdKE3#M-O-JvE!?J8 zU;)0Gb#=HTn?7v!;NDco#uMqfI&_r4U5EAwCaS5nk7}4A{d|RwHD%m}61qwF^~b!K zd)o`T-@<*_*Qx3;4J-9E*iDB?*)(fIbPG!Y0|GiaP4mR`fM^xQ?{v2}vP4|ARc)Mm zUDkTnTY_V<>t&^JR-hA?hs`Zfk{{+vk8Q0o&T{dI=#z(ueI>B18uP)R!VMKQPBW2Z z5JhI1jBV8#XQivC(KwAAgD48Sp>8tH)h?^aIL)pANfdD*Umi!?JgYX&{n8Q>dxNja0+giCS&i{wu;qe?PP<-Y zZdc4>5r)L`SS^UUVw^i&R^vW#?#a}?la!B9RPTmb*(}b!7|SR+9%FG|P9EC@Q64+Q zxjV+%E-@c*El8P^T37cf<206_4jT*V<(nB;#@Qq+pY?$vW7Qrpfjn(z>}rzCoh5mo zbd56>;W`uHQ8&VM+I#G35_Q^5T(xm>HzFRk6|EL$eT=1Lv8z$UJz;quFHNY;F&1~Q z<#8^?(u~;EC_3d@w8}WSe=QH&YSNC_)r7({6m=j&jFY=4@ksJ4GNDeoUTTdq7FVM& z`ivX>fa-42V};zf^2IqZ#?rFbmHPtoSn_(jtTMhUQ-^965jU>lktFE@y{t06x26uY zM@0K$UX1gs%Nme7_AvX3>^#Sxos%{y``K-wUv0}8X6NF+#}}}d=Cy_V*;!fFW?hHu z^%q(G?9oH;S$KrCG|!){xz0pzug}VYhqOHVg>7ztUvC2|eKfq5qXdIP;B9Fh!<1)E zgCrx*Hma4+%szbSJ-bc(JiiUkrmO@OLWPDxA2w;ogEsDLlC2#|!%%G&rip6R*hf-F z%J_5h>@(X!v{G#tl0V$O3c-gvO5KP&+a$8UYbSRzVK5qsl|5n>V{6Z`u;86rv-`GY z-?J5CMMecJrj5Iwj2?@Wc|>D`R{q9HI7M7ujNH$)D>9oTJFf~Y%|jVjR@kwy;W#pb z+n9~h1oboV<4q`C1XqPrhzVX#3^g%JDaS5zWlEO`ex(U+B2~e!Lhwu-T@f{D=cGix z64}-CZOpqy6Gs2!GUSXQrVLb2rtK{rZm|TWUa3mJ+KOrD`lW*#;Bl(&)dU<^U%|5F zeFW2c5r&7a9T)p^xCDLa{>RAjf1fP>FL3qw|3HR+2y_MfT=K&4FT^#?-;8Uz71#pt z-Ei7NoOhEG^gYDDeD?|jD*gK?@;`#B&;Re_`TqykpnoXr$njr=>u4+RHH26Or~h)N z29O>|v+IHVh5nrM3I?5E1sCDz{x($QLI;#DcpFIm`4pxrvI}Gu25}Sy70Ed^9`X@G zW+>@T;zi-Pb~}7>*}MT-Tf##tW(nJ_o_M zJ@9|v3`UTbAB2N>8N5ark^|?9B&R5HMm)I;B$F7Ns-$m^C%faxdqJu=OO@x38gjZK z4;fMwnw7B|$q1&+$O(QDjwsAdQw3xNxC!uQz;pbeUO0z*0d70+ZaANYE4{+`A;4#c z{u!L?EL`lIp`QhCQ{d1SaLKt27i$>xJ_Z+Jx0I&PF;Ka7c-T5%0NDV^Fm5&MD0gt! zX4f4W_AaZ%1SWM?mc$wZ=CgSnyL&pCYx^Hz8Ee59$F@xA`XISb>djejKd8l)yXT{5+f) zW1W8mIKjY&!1)%1GXu2!88|b?2Kr!xdN@?7(7&dKNa#^`D760qB4=1G+Fq zYJ_h>e!)&d75F9;S^+-JZUrlANT?1mW!w*UFmze$CU^u4R=?0_JRW`yg0(m_2E=dS z_%BMvf_N1KD_-bw+qMD+!Dj0&J3Nw*lRdiNDd3O5&K|?GoHEo{SZ@XTA^0{}Ltb)z z2nYm~T`$9#l^6O0gc*gn1c!F#q-Wqs0}WON{)xcJiCH=o3_k6L=F$Z2qw;fbaz7Ke z9?o-c4%--53a5=TXJKdsV8{^Cp<8jy=)k2Y-=l8}7)(g7`0-`Ij|kea^T? zHD^6y+@qU=Pr}XnI3ERshxqpli4p?&WBQ~NMFjFc4T&-W`J5q9NO%~9UI3l(VO)a4 z7sZnJDKMDC;gw7xt6&HZu&kkhae#U{vz=x@AP^{lx6k49rH9JF$@n8K!4Y*i>C50i z999N*SqqNHj%ha;I3kDId*H7WUJ53J_&~gD0-7?#I9KBQHO^5^+7@^jU5U3Q@^1o? zKZZMgkwIcCw?TD@-+2h@vfm430zzZPm!NT!lgY>WD95J$QBL4H3LGs2(<2vF(Y?c;xZe4~uwQ@i06*L=U4G@fAM? z`54KuihKp+lO)3=Ck7>y8=Cu_e~0o3l;gP4*kC$d?6zIVrSH<768kE9Vdg9!I0L^RU~#fdKtFKvA#j@p9wAbTrs)zk|mM^f*Iu_>1rz%VBON6wBeOVY|xG z88mfVJxG;@inJyft(Hy)%vg$A^JTn1IycyM_yKrVnh~8H{y8XDGs<4V|A??@ zIS9MN=3lpcwO#FozS>?H3p>e#G3|T1;~NOOlwp_KgM>5wO@r2Mdj;YCnc;4Ny*^~F z8)NuJP;Q*#z6a{3EVP?~NX@wGVc;)a(wby6nij6zR)aet3q!}92cY>q@E+5A0#r=% zNMyjvRP_K~;Ko&f{IeqY@;8o8#Sli=I}fPs5+|7mcuVoHJB}ctPcfoL5YhMH-Hphb zY1i1Rrc%u#?F=>E1UKzlyN$cFIgg|E2VjM&{f~2_Q2QEt_)uiiycIRO~i3zVBtMej9o9RcKC{S61j4@@Od9tkyC34vm0g2zNKN zL*w8ac{_@y!WkAcZ&(gr9_*lb$s!rFgXTSpWXKM_3)%N&geI9|2l=*jSja*ps72QmfKe7s|Z+ZhrR|F$xZFT&aeXW5=1{%fq4xg6)gBD z{BRROQaJ_pd#FOZ4Wgn?<(@T(s?|VhY0A&Lr_60bPatrEAyU=nfGM8c_6*!f%KXO(rX?_m}f1i znY#p_mdh%jVK{k^XUkI)rYjc;$HEg#`9(&n<-cH;TAqumLau(f`?~19YyX%x?73IR zpFT7G)Z4y!+oV^2{Au6E?>M^dQ2l$ReE!Z)jP?KSw_iD1{_>)c=`+7l^^q@r=c&h6 zFTY_%MZ@{&H$45VKl$dqKRxv2|NiaP1K*wb*`5tWKmX$oe|hVjQ{Vpc01V2<$u>Rz zTo>T1#o2_j2j_O2yK(Nrc?jn*oF{Rf!Fe8M0RJ@kI49yP!?^%wEzTyKta|Wb{Tiv|5*uNCiFU?`BzK-UHEh4!M`EW zM$U%@X%ioxx1>KQ`muD9qOTTxtbLTAwqw>!tY@ zOWMT8KXlS2JpT$woAmxnXp?_@*i&x$YE7LZk7u$v_xzfSUrvUs9_2$bX&d9C4a_IT zMg7ck=8MTIuWkezp!+X4j2}+rnuZg%l{#3@S?B#&1U8^*Ii4WkF^oCrhxY-qiguHa zayz1b3E`$oRe@~jdKdlQk;*kxDa~o&Mo)<=GdACR@{HA z;A77{SUM;0{tvIdckIK(&Cd>h+sv1@xBY1N!@Z3ge)zSmGye30m-=pc-=}W;bnDRP zpAEk~^2)wneEWf4eJtzbGr=`K8TN^Lwr(1o{nVr}JF;Hs{Kz{>`gUY};@LZgF8pKH z_2;IZ&c0&oGat_hZ9H`0Yj69_m!Akc8~JqY z_RQL|HNzsEFU|bkhvq!=o0tF6^E}R7GuCc@IPdrU{zX%VJfA*p^$XyQ>kR*5+U8p= zzGhCvIS=O=oa~nRN1XTJ{1VP5asCMBS)6~u$t|eI;Vi?+PL{XfY{S`y^FuhVDq$A2)k%L{Q{gY$ZvD{(gAdZyRDU5@?Kp+SS7>-t4Qa5bgcSe>oBEWnRSn4* zfJpdXNzMG@6c$@-WU&b+EVhx!V#`t@V>^&6{y7SZxl2|BE)tN9ezMq4AimfzCX4N5 zVX@PbEcRGT#EFABL>8OnqKlbN7W*9};J1Xut`=djWlvvh?29h;(vZc@8}Y?%0J7Lu zAT0j5lf^eDVX+&EEdDJDi;aD<_!=!Nz8{gr2AQy~lNi}aCDyYuiN07}#4fg>$zrow zSnO^fi~SE0key&;y&DR|7yA&&Vn3AlVt)}??~JKuX9QX7qY%5;;6oUz4<|gbPf8@a zMI{^IqLOWShG)ZGSoPxT7}&yMR}Ou#Uq@Jccfikj6e6(rrUT$>g?L~$7Q?V>LE`@$ zNLp5c6I^z$iiDlo^!yM`VX?=8EOuXrO7?k^#cuG4IC1b5l`OumiZ8xOk;V5aVX;Go zEcVU_>(^o)JLx1wc7V_qnj3xre4nAg(V($m{x6}<_?gX*6VJ>d^x(0;sS#(ZO}3#4&^dHZkmouQs_5r z!c^&RmXb*&H|?!j=ueivNAYstvo2$8vj2n))X@fGiQ%;WK0~B?ySt{gv^Tc)Hbtj$ zUfN$bTeGFA=I=9AV5-;NI=x!)-zTF|Pn<|H%6;mRD96Wj|5ds9Cgf!ImhP!lX?(epPA%QO2^v)owK97ynB zvO6hLlV8sCoruixg z949S!#+i1HGdb-%+`iShPAJVkZkc00?pXfYe5-9IBhxoA&j|;wcUsee2b{~7Ib-mx zEY07#%qjIxUgl)@o54zhL$mL3vi&2LIpe{}hSDKG4$FAV$@5>f%*oZ{x)+@*{iByT zSAZP#qBAV*U5Kuc%&`f~1~S75%(@qyEBxb^Il~@zhWPf{c?i5F*yCL7ziOE?Nyl(2 z=nT?VrQJgVZe8X~_ZKa5rfKo&7a;{%qNS^sIg|a9mO0mG=`AWS=t)|9%Q9z*|7!Tr z;+q*5f@c)YKmp7}9_J%( z9z*W?CKot%FydIje|6F_k?juH{_UCe8>8|;{e7e11~t)nZA;IC-Xd_ ze31n?d4w|s-kp1#DfjSt8H(cVX}*cMPM?iZ9Ek)L_=<8JXPHy*nB%m=uI+yz!?twLrp@6poUvx$h&pA$| zQwYm_zoW}{qvM=+SgnwB|H^xuQHa35;V~!dM;&TNg9Y!lae=-uuqZRF%5fH|isZ58 zT{;zyAzA(_?(wg=2cH;Kt~zO7JMT<@Jxt_dFyLLzEiecr;{@lxE`JVG(?pu)_}d@z z=iYNZ7}@Tmy~JcX1qhIF#F?;NWth!EWD#7J>6<(pEa=Eg+u_^*1$8K&%(P%XYR-%J zzIeu|OA8)^7i4RiuLuRgIb%=Blmd>?~X{}zO1F<4YHHWPL9aVG;6{ADlU|N1*n z?=xTYEx;S=S-b=P2l|Rm0Uxle%99!+PYeGj@C)D{(HJ=_`~$!T!QZbjvKx33dNu=3 z0h@$gA~c7MJp+CTuma&GYm5{DuLsTHlE6qI@CnOm&DXd#2gq)EEf>8IG+h zhP!}=4edFvG4cYC_8b>HDtH)3efxoP;Gf@lff0`T{0aEGMZObw9ppPSMz#a51>L7H z!ojW7(+d0%un9OD@_LPtS|HO=t#R!FApOq)Qg6A&2s;<4w?t#42uOdUfz+E1q~08j zksy%i3}}p8z<&VK$&cobBR+mf2d?EPSccyXJPzCe{5s?u)eKy_8OU(0K*m=O{2s6x z_+8)<;M2e|;0a(M@bic_Ut=T(_yh0*z(2Ypy$4deiA(j2=@>;uj~xUCu^&A@LUolP3o)&uFU z7RY*Btuayw#NTn{5|PgVGC#@$CjuXUJghM?8p!&Q52QYhkt6mCo&ZvQTxgEHrhYEi z42*CgU+O;~@_oQ5knhzP*#l($?*KCYnt@o{xs@Ztfoto9Ujf9B#MU_)*OmiW4n@F6 z!JnvcZ5YV>%3{tr{a7LZa%W;A-Ge z=&RMZwi?KMUIL`v$v|{+R~BiEOcZ`T5bgTP9F38H@Gs!?Y%2I1eF%)41yWx>korym ziy=R$F>(Tkpp{RH{1|XN=%X4V2St7W$op@<#b_F zkm1+`Og%wCzJZeFtR2eL=q}(1p$`MU4|g5V z{nrA=fnTjLQUTltdXC0O8Ib-a1H<4KX^cz+qR*`|tTB=U+z&dWF%keW+(on}n9mn9 zM$Q615BiM8$Y~(`odl|U*BIePhtcqNTw{b|44EH?1P=)A6TDAwH<0>v07oJGc8!rf zAU+0FZq*oR1+rc@0qMUUI1=(T8Y8QL=$EUk)flM;GX4cXmPZ+|0P+%zks=`Vg@M#J z8i@YR%0i8ieBf}Aa3!>7c@pr1HXyq z0^SXYYhi=3;~4Nk_&cgGg8w>|-a|m<#{nR2wMyK3#K=A%s#4`%jgdV-re~MncHqB* z?g1ieD?2qtnt_WzH))Kl2GZ_I!3x1L!6m?VqDqtl{|#6Id=gj$dw#;5tATF^ zRs(MZE&<*GtN_*k%YmzaCBT)yA|U*#e5nE!f?fg40WJpyfj0sH7IZ0p4+H7%%Ru@& z1f;(&0Rj9-r1CFH8u|7u;5qOcf&DqK`sfZhc}nzH+ZzZv)u(4D}~1M7hw2CfF~237;V0IUFh2v`pM zXJ85N0bm$7A6N){4=@LaJW};P0<=JX0C)lEX1zWKEC-$iz8}~Rd>`->@EYI=;7;Ii z;6DM60u^34AxO8F(+S z9taav{of9(2HgTI1hPB;-0LsE|CQk91wSPi z5u73T%S`S6XM$f8ykD?GaJ}Gk!D|G6l%d0aPw;@?KEb;My9HMZvb}`-NV`lhSMYa1 z&HpdKZov(LMaUjnFwZTohl?MkzKC(}-+`FzLx z$NfIvN&hKa&-t7&wIMvA}U$PX$indMTL zm9`t#lWC`LJ)PE%>&3Lbbf52d`qQ}X4ekqq6YR_I`Oc)D1!re)7dS_PM{zw9JR3~+ z?R0iI>AoY*QCwee&f$76?NC~}Z%^8NxSmKqnGVa-FXFmCcmV!S1W)3+J$*-dz<)IJ zSmyCepYQ3+6PdQ}NY?Qz=*~Kd>+!6ov*0)DB(7(&&Vthy+8%&VB!}blsHFsYwaya*7E+n~Ub6)^;F}E+z=R2Ht1lMDE$8kNGcM8|O z{O$QZ-|qZ9`2qj-;X8)!9B%s#jyOER_VpF)C_ws#zcBpVaG!7ch#e!4iV?eUJvibJ zu7^h)84>WG7;$pMDNy|*&fwZtu)P2_7VN}zU%`G{&lg<4wXbk{VZgt;a8KcVg^(2P z#~i#Jg*$OQP)_b z=}8Agev#=x{Cg$*dl??`9Fbp*Ql%j1mbGlNEQC45-QYlG+y zi~n1oi{)#^e6$H|#(31?e}(eVOaqSL%rCf$B>Wwy3zVBN9XpsmkaHxq@-K3}#Pj%! z&}IxrhSX0pW@Dn{ce#XrSn6Yi&|Ok~ON4%z<%RgFg>I4fR}1ZkzIvf|i@s)|YeZkC z&_5AV0}eS3v|LG0Zx z^fQuQW=x7L<#$lz|4DuDb3)2@Z$Q(#ggzkmZ#nGd@m16tmRGaT^F{w2p>Jk-@J@J6 z=>LM>Y`DYf>4G)@!{ZrH0Xuo*F@1=0iO~J5KOUO*tx6w|$7kjKIxP0TpZ5>^zf;1$ zo%sQq`$hgIAmtwu`Fj~2^ut2`k@X++386Q!zJvCwH!8FhnI6zXg+4C&rU-qD=$j^V zuH4@jC4NrF=KXHy?;#%Ee_^@*{te-%KO*5P89)3FL%#6%F3St@Dv^JZ@k3rJ^4$`? zPUQ0>{Cy(-oa8T`8$7OOej@xAMShg_LjQJ=FQ`i=?xkm&oq&=W=9FNN+GeFgBxW47qKM(9zZZ>i896MZX%&Juk$ z3;l1RZ;jA=uG0Ryh5owKr#_)eVF%?O5c)Lp2l<~P`E`K$a1VAu505pHzn>BRBbmRD z9~Ak`tRHyBoD-Vw-Cnwk`VdDB^zh*He=ohC_91+l$j{JzlyNik@_2;$Jahx>p#8_h zoGMKgiT^IrXN6vYw2(d{G`~-fenIHt&`tV+&`&@oY4d!4LgFt( zntAa1%}|g1A0h2YUmE@^5yU;Nhs#S}hxokomIRtIuY3m5>!s%;=)V&8gIE6X1o>SF z;s1bp+w1>}335)#_R9G^z)P=3{&{JCLin4JA71&r3F-NGLV8Ch_-B8!H$3{R;%H7l z@XCLYK>u4p`VJ+~_a^win2??!3HDSbq%R+ld*k1fVBdrU`jv$EuvcYV_{$UW`?&;r zSEGJ=1>LdtTWDHf5htSiRilr(OBYqX(jen%@el~~{EO?Y(& z2Ej$K$%&47V%^deHMMhB%wJds^Ow$@SGlmpO+uU@NkSlNmQ*cB4*e zdvc2<+Jp@g^v()NGsLyC6_qmC-T_HNCCeDC>5^5%MQqkweVviH!OYNC&o&I)b*G^< zmX&6y)%C3%x0CP5O0y>GiW)q58j-!x#mdt_KJNR*4Z>dEDi4Fw77Nckwdkx;%3U3! zSUwlK7+H1hPDe>r&rPfbvgEGUw7I=hhKEUabX64V*0$>%a8h__iu0o$%n9{BdHqnE zY}9r2w%2TF=guna9lhPHTdLaC*k)w1?BlbtH;SEjl9o|?X%5)OB59b^l}K;X)X^T> zg)^ywxJU=t9wTYs)UgkyNotKM5Zm%8ebJ-w5_veOI@SdP8eA; ze-ZBf?jCF~r0+wu)fV;vielyTMr57})7HJd1`DYVdJ`l(e7Wz}eEt5)y1L%>c8r{Fs%u<_R}kz+RA*J{Sg{`X!uhpTtLj!QT(of2 zLcD3zxH7&#@V%ps8@9My{inKO?(!JR^%%!h9xIpD)OvMKtV_9q`MTKPes`(-wJCka zEpVRNTWss3nq*7;r&`-Rq0&l+4jb8zttH<~inHGS|P(*_rpx?(p)>h3Ns zEpa7D6EfRkev}W$4;^~8D@Yo++!edAsz*iftW<)TsRT1zLDHDY1{Y6v#R-OB>riUhgiwH}LSm&Il1 zz*nH+a@U6&wJwlZsRT1q31(1`BzMZ(07(-+onn0tm+5SD{U?}ITAEUlQc#jgqT`w# z%evU+FYLo8o;}@UT~e#d2N%y8Ts)IvmF5|)tIQ3OknHKMAgLwOrt4gDeYwHS--atm z8otyOCk8BWC8-_}$Ubj#qox;)fN9E{Y029Xsavy2I%J^Z4QdHux1vE>8O5_*v6}_@ zCMZuOn3YN}(-kDm>=}cL%Up5F9Cv*rm^w}8dub|pX=+KzASJFOX<{TsleGy3%`P>9 zq=Cx^7tb18Jku2?#5yCDpp1efPp9cA_|r=DZ8cDzxvgAD()5+O;sgszOHxWyj3ucb zNhKyn6I5bb^2Aq0d5EVH%%mVmZp=u*FC$+)u%^4NX(c*`$WT2<309Ssrj!g6nE$&H ze0Q2qI<>4U96L(OW=)$hbJpx>GsEE-C8ZEdE1|Tsq+}*NPMcjmQ!&EznWpz$9yHR$ zRnx%D&)a2F>*5YXg5w8&{O>>GGrIbW#0!TCaDJ;5#)*TUhB=Nl)$yCfT2jq0I1G(X zZx+unWa6l+>*4;T?on4)yKr@_OS+C6e6!*~efWH6&4HioWCW}}f;sB+Ll^s_Hz-zJ z-GaHbbBz?=sErOTC4nv>!5Vp%Q_C;H19rH6jy_OhOAt9>q?Vjn~ zC+S6W$?Q`b(Fya|pXf97uMiI++BX^#dXnF7 zx3~0gK^}>(uCB83W@8L^Cq$owb;lTr_W^+NmHv4xO4P@>6FiK*aePn?a+vzp*04U> z(!Q=EF}=?uq<8#4eF^t(Q}p)U^>w)ERIJc<%iL9qTnm0G`Z%VG2gmj%9C1a$-fHT@ z9+1jgqP~~HI`keE0*?7pG@YPv?mv2C41qY-mi>_n)Fqip46PA5$c*r26y< zXanu@&C;QMApdi#E>Ry|5|qkB`+g`7C1c;XrLSdQV@Dg(*@G9nP591-`*(pi#0Al} zSIT1v^s#CO)~LC%^qP=fxj*>H4o9MWdpI}@$0~WQo?WKtR_K!`;`H%3u5W0*C8_!P zitd4b&O@VTK0^1cRdXn$hp}lGPU&v4I1t zDfH;g+uTYHz9H!{@i&u9luHDfJ*9%}R5F#s`0KwmmoD@wN+f_5&~9 z;(OqHmH&ZP?+!fhs^9+LU;OqDU-CN-p7#eH{Jr1*;LCpN!G6E*K`7t-2jw2F+`m`u zeC0k5_sgTKSMUz7D`;1|a`tlVw&Cu7%KG3h`~?sG(m(vcGyePsf920pVP5it?}v=~ z`{9q+9k4irQ0q#Eu8PB}&TjKf(md;fSTJ1Tf;-Q8rC)T?j`IbeCvaM;wVVEFLola( zY(L_*#_V6=<$HO`jWE>FUr_N1{h@B;=UaWx82$9~1oG$AyB8qO<|FUsJ#e9J?gP(F z_-5--f8CES)ExoOhRlcjM4lq;OegKIXouKiY+zos5nDQWOhWkh?-{NIMP);6ymlVe6dt$zY@|=sbJgL&~+=Q>U z8Jl@86pjAOij2{FS7`mH+m}!uX=gv`;d2xGZKf`oI%VQ}Zo-qQ&IFNHrfgWY87(ar zZWw9(&u{$Jw58*|{qgUF`c_S{Gv7P$V-$kYHkko;ei*{kft5#vdSgYdpu`&Ln zBQc$Qk6wsW!@t^t2UkV1R3+A5CoQVKp~jWV#Y*#PNUScMt`k2+a%*mT|pm@AYdf436LcJFKJH ziofb;YYkr0&@ZI~OFFt*?&@gApWy(JjNt3WXcQSsIJd`WY`H61wQkY8D(dd-)Pt|! zuLk^UWjpzJjaGBgh+MzbXqGAqZfR-iX|7tgE;gcMpr0ktmi5g&@t$J(2UC^AS2ATA zCA*TT8r&RDI+F%|4Fjw?6ScQEth!jRIQ|=0(|cGmJehAPhBtGpjpY?Ll(@-{Go-d@ z@`}kfCpSKY?Ghw~)J@rO{krbbagB0t6Xm8`uOG5AIM3pI0p~fK=W$-Zc@ZZY30z;r z97V>F3O#=5r972C!x#UT(l^W?@5D(PUegYG9^_yfCLzlP@%`qD!Z0Co5Ht8*ANc>U zoNeUbAn7-9-WSZP*E;&(p&uvLSovFyin8*Gl55K=N@rF~E3243tpZAO>p9*9LuDvOo{deoxj%h^Hd4s&18VfZng;zTQ>>v|G-tN14uV=iiK=`?@i@!Tc)uNCcCHzuuB zX-FO}!Gow^n>ay7DZcZqsJUq==H;yC%p45d5BIin0ztGXjM+M}F!rL>hV|Xn2E9tQ zBI<5#Xl-eVXDw;yo)?X_uj=S+$I$C|nI6}^F}k#U9pAOK#7kF1*CRtyN%>l$LLsxg zCM@L_xM&kB>5VF*mN#^7u*|~VR$Mwv(GB(yFZl}AE?2(?xuhP=?k)*#wRAUFYT&e` z#xJN(4_0?`M{jFWOgv|1LT4qY!^9ihCmT7OyKYf$dt)`a$#qFs8=3n;sFJV{ zg6p2^%A{%(b#OiQZl+)Ss=T0Iu8MByxT2jMjm;uosN8DQcVkyeC+316?%UCyzJUY5 z4a>EQ&mk+S=Gq~#YK{|LVK8kZTGh#P)|7H)TIhnLq)+w`N-+Qb)N5Q|znpsT5)7n1|6X7$F) zcQUWRLSj{RR%xrPrMsKon>~@~0`Ep0T;AKmX@+`gp{xyWHR47@#_L+4b>miQ!IT!H zsk667vO{H^nhVghykT=oTW_1LqKc2yHbxC!aXRq0?rLemoeUL<)6m+gYi0K>m_o1| zb7(k|rY*XFUy}!)?IAVdvuBlhOh1TU$zC(`s`hka+QQA6vO4iiB--Ay3eyv! zoB&{Tt2Nrb9%YNW%QG;WK03QP)}z$uZ0NxZh1+{^hvV_o!m8A5#7ePNt8^Hr zHfg}TqQ#Z06xv`Z$oU-|U3f&``4O8vq&*}V31uZrzTjMq#g*$+wba)H4|*nD0#i+& zO5o{f94*}o+nZt!8B-+s{!-OO)j{_!Q?et)^isEmFKB7x?cC6{1sU%ll1~jvGC8gX zjaqzbZqjw!dpBvmHqcaoINpFV@Ja_M1FyGaCGi^aX=1V1Bn|fz8O7R}*cISuwZclb zhrn&?C2Pt`ECc;`+l%g*3zpVY&#j%mq^^2ZRc#f=Ak{=l#{Zr607|{rP0ZTZhAn>|qb&Dh&6~ZklQG1T z0}E@WS?gQz<43NAa~D@yo=;kDw!JY^JQl}3CBE6_xt4gW(;pPyY|E4t9;*gSP?Lvs z{20FQTdxy%t$OpgrKP8NQA<}hW@lo!%gvtmk41RRs!?+uuT?KJ$^-t>JTD*~FZzFG zFeM%zDYf9mtF(OP|K2Q>Mnp^d#*PgfNSJi8Y4W+Imzd~S=XR3b^|kC&mp{%V;(=2_ zlh@TGJ@ZQQfbMz>cb|Rfb|(g38=qU3u86fX@jc{PWnogu>qvI2GsF8bqjjf{U8;8T z>fu$KWKL%C5{bQC#0T$=wxY3u;cpfOb?bIGSZIf%MH{~qdmg-dr`!mdo@X5 zk2GoM;sH%*)4DdRMU*CKZ`W>D8 zdiPI^Y?{>`-K4t@OlRR_aoAS1aqe|l>x{2NY<9h@+$&CgAK+nID~qICluO$SOFIT$ zON3=xtBli(VS_~j{cDct-?yzA~RVcrn%R!MHb=6cGr&;thNl}h0`}6pwvazNE9=^<>oB6uUxYP0M`O50V1%_a z&!4Ti&O~sp&&uKohI#f2+Ze#1=-1o8N*@ic<@i(-?AvZzXSZc9&7E8s0ttGzPOgJ{BL=Dti5cM&!oR3*)rCuxZ`gmGLw zPz80Xn64RaF^eZ(sj}GmC@PM=YxM`*94_v!j(6i~o5z7WCB@fH_90w?zI6Y$>C^vz z$nyUWu0DSns;J*T8rOh-Ir z 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 !!l4|?O+Nj6ArHsf=qnOLWhZ|YXZ6namrd{UXr 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

    R4Sh=sOlc9~iXoN>mRcf(YOG87e+Vg`NzeoWF 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 z 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

    ;WSVn7Jb=12z!&IqxF0&> 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%0A+SwtE>vD=tBDV)?Tbk=MaoHv! z5|;JP7pYV}29hf$-0XBPed<_Q&req9#oJ**w#<(DwwBKI^%(uvHwBwJA~hqAsOjv$HxC+vSdG6T*wNY6d|gdrrz6xu#+*JCm<-ct>ug@Rsks)#-rUmJ z-neObv-)-dT1;)Qy&VJ8wVgrQQl%SJjFC;VrM-bCY<*qO*%2p>6j-cAdU*yS5|utU zx22`6uA#Z6Bltf~{bH76=v4)bhTXWKX>x5-U1LKt@~Eg_)7oHNU9fI)Q%hZEBe+#n z)2C0m(P{PlD>u-7OG8I(ePv5{hnTf4qSen@BWHq!<_#@3)2Q+z*woswsj9Z7wjQi? zZ9$dV+y&^??Hx7fF}NygUO%@HeQ8B-U9c_KTnh~qv#EXk%3yPyfyj;M_w=&1rFBzP zeXy}L*d~dQTNiBaXlscUlvh=CHaFKa1?#G6*FgcvRN*Q}HH?+>%jeInT)v`e#ry^H zSIozS&B~BWT^KE!bIts!IhBcdjlkBZ9u9yo6#$%&Ue=M7l_J)QEkF=(sfK8+zhgl+XGg zHk?AaR3x-poFXb)q+4>-V^?Xwpfn2wfdMSo*Xi3YWlgf7i}^B?k!p+!v`a?3oIZW= z)_3vpRyB4hFWAOeTnif7+A$j7-YI;HSp}{VXWK9peZg`uBVihGtz5c& zbhheIeL+hbPix5H#ET7{Jgo*d>T3f=!MImf(^kipx_q6!ft=Oeu)eA0QidW2+`q|G zluyfB@s%HB?qH_ejZU7)qqrmT4Y5>#q(#T!E!9UXz9%ii9`PA zv`XU%X2cUr4+)~qj+2Y0g+#GVs+0S~QBD+3WyJoc=*fy7SwvEdQ{u!>{FpIH;=}-- zTpU-x2r8wRnJq55xLl_?!?6)nA~PvaEvb}8F^XnJC~C~)r-#J-Ybhj(N_1L0 zLGe^dlsoDuvV5h{P6_F#qeva6@rQIuX6RB6F^Y@(4tW$AU(zUwC(+iX$1bXwViJ|zBF`Ocg6Qg9h zu7HqpF?}yCjuSmDzv$uyb*j^x;-1N)7$s0jzRFKbw`N>iJUt}tUsoYfRAo$yCn%mu ziEjM;b)4ZSq%)k{A`Q_>m3S8DHYWz<-j*87)del9Mwm>v@JuiTI*W}})G5{H~{Ix8hH+W6G|F`UjCC&rYxF-qdZ0AJO69C2}R z$YRV)T}oVZ@#vDc(Kxqaaq*O@;@IUdGY-F${P>N1Mo1j5T}%&Y^smg2C{$b0Q{xGW zr&6MOYJVN)L>AJS5;`g_2_51{)kcU>T+G9m19n_NQCx{KUZhHUT9wABf>Q)h3q?*g zW`>SRc@)cw86iQ;<}p1a?q9$mQOuarLgG;QJH3UHSiL1~j45$qD1Q9*Q(O`!9{8%3 z;)sijL!QLUni9vzKygtK)^}seEiRloHPE-={-9*q^cgctW&{G$ii#m9DWVh+rc-gs zl#(K?U!4>^vAhzK|9D!yK|Lps3Gx&4u(0Dz-V8ClbYOAW^yqpk#s;bKQt1A0w=ZN1);6{6RCBryzqgwyX z#gSd)J6ly%V?#%p(_1$8wYHA)g~kKae(R-plZn6B*|s8;Jkh1&;WubpT0w&1$=+|BjiM<(8@YV9(l;ctV`cMx!+JlYsj`@$Q4}OP- zTbJ77y>PrwM*sNH13HG+e`5L9u%V_+#fY}IQTjtbN%0;UI#RSxB9i#Zzgj+-iB*0( z#U9*JTPf_(zb^Qv{EY3Nvd039ZqNI~-dM3$!HyobMf)oC5o(0d`8^@_xUQYsM)7Ya z{F5O<3uGTwzx-%G{2CkDJEHwNAoiU8u?p|{(N%w4y!N*i zkKkJBf+2s)%dfk}NgeOyi#=((Mm6kRY(xK*XM$R*sw&bR*BNtj?A2V-o@y@*eEX@P zd0k6%et#I1-?jbiiH1&>kM-7euCKx%s2H$!{hSpGv=IAeMVs%%a=WR&y@)Dt?D0t= zw`hAG8>8693leKYiKfH$G40i?UE3Di(BIzjd>!+s#QMY3FiZL{rahJ&#nJu^m-k{n zGC)WE-VBXdXfLDmVN82%HO=es`d2@DoA|EQ|DjY^ez0fbog7SCJEZ{WpCPuYT4ZE@^;Xz|hpbx{>ZPQUTE zw%Ig(Huy}1jP1v^v?hUvvfZ)LEyv#p_H)5Y@T{9}!>6fZrLWQ1?;UjO8y=a!p~ zzJHtR(f98%KK<9bjOTlkjX&W$-t9BX{&aePKF-8(?_A^4FS#=xLjpVS50Q_pOfmLr zy{_-xaZ^73FuL1-9&r%xCHEku>%<{{u-Wz9`kOYKufA#e`ChkA$=8CWOr_z@cr09> z_8dFZF+roQy06x^Ejx5twAl%p)52_a;<(RNHPToM9mmFR-TX|Yq2e;?nNRQVzX>;kGGvY|~$(du>iXp1&amuTk;L?4D)e@tH1s zeBZI*Abmnv;1kweFE~8<^Azgv{oAfaz0P^`-Rqy;bI4uwi#I1e(e!$**>r9>>iIVJ zqwha$d^$h-i^~#`7VDB}u)ck$pAMJrzI!K^HN8Dxq$)4f4ia=bV19bt{A8H1;}fHe zrY=|6`(>l5bE>WSoPgWlXA@zE^-*8C$7M`&>>5^CQviB~Rg=?e8kLM^WYy<5`qek( zU+6ooKW~(+RkG;%e(GuFZ7%Y5^`o!n&S`pc;^9W-&xvc)*N5sDK4xBu?=yV&VZeVM zpK5>dM7$%MgIG@%|U(qa1YBH0o#GAaNo8Guc!s;8`jsi1~vq1 zO9GsrhpuT$UERm}N7PDD`HV^;jtXf+%hN*=eGo0rxP)A8YooOO{v_WwH1rF_ zHFdJMVU`hk3o+uA=CD@_4JcREw5<u6Mh%yh@h!&XYj46h)jrF> zn~{r=QbP?E7&M}%X;x*htqJda3r}gWt|O~hvFG=1Z2kGFErqk4hNF1up`?00u?D`> z1ve`00uJG`uzE%of-J)w(JUiIb3zWZ{b*eX=JXB6vy92L8#n5AusdrzV)clNbR5Uw zh^|X#bg7{jiKcGe4ebyu3Hksd1HF^-b5Vj$7BgES-+O#dx%nwI&Rn5q1&_WvI7InTpj#q{uRV{S#}>tSNw-)6=rE1q6f zG^^CuFtvz?lRk%9p7V>Re-y7gY$%yZejQ$#L(r;IN<>wSDO%UqAky&524R(rj_$o2 z#PldQ+US!yoU8FA){vRe8%NiT-ZZ-IWAQS|KjjSuIO~rq(6)9=y#!`Vo-(;8kdKEn z&Fd%4C;~BgO7Zyr**{-LyB_PIZ_@`eZG;x)IZKoxjYgcj^|Ar{&uZvEpPY?`_8LPi zI8uKyTcw^z8I8f_^&R!l{?KAv7_Z0j*2WgxjdeET#r)=A9qykx3@1k`S~}Eu{~A7x z3Awba#o_ny6en07T-OoJTY=lWFy?~BhSuw3X=yR-x9zZ3r%IUdOAc zO_4E|1=pj@;z@aVqGF*u!(CX6+t-F*9X#m_Di5!zX}{TU{&3icSv#?thPns~)u8S$ z3$b>yHN?~ZFKp;#j4RcRO5>)LSbG)}$<@o3mm5`AV=h>f7O!u{?BIu5F>e`c$J(Fz zhIW04Xw-1lcz!b;*Ws34cuwoNre#Az@OsQmqK$Q^E6U0iZ3zoH#F&ACSC7-M!}X-0 z=B@kIIL^h)e`Ao7rLrKlify{8YMrV?Hq|ODy>1V-Z9pYeRW0ajuC2ghG+naB2DRE! z6RKo!^{f6(SvPsr?rDSn``pg_OGH%`)a8FI8#=9EYfEjt$mgqLwH&Xut)UfbJdyTV zuGr<(p~DLK#o^KjsxLGkvz;A%OO&~Q1n(BGW@NI$;o#y~t^pU82b(*a3_NWV#x3~! z@s$SmmGm*##>;H15wC%(8q{N5oe=I_oA7jT9Tpsh>OY*bWzWHhREBfc()WzKXk^4zEf(bDO_xobhMJw9xFbi zib+UW52z{<{~#Xrci~v&8u^#vnsK#ij6ANYa{hnZXvLFd%+st;iwjXH2A*laa!2E) z6~WqI!v?VW>Q2?Jp;pPM!|-OO3*K2)ANpT%r}og=>kKp!v|qhSjjQ0-MVw8^X>Ds+ zkB-B`8uc|5teS4eAgsQ{(C&zpA#Fz4a1K@7>yt$Is_TX2>?+zp>Fs?pa(&CAwSvl+ zXgMD;Sc~rhtj9>+T&HHERv;@2%hiMz#wgtD8c_-hu?D$0nu$gbjONX0Y^|?xid@&L z>O2kXMxk@PWFL$AIT-K&!y&e!k+Jro-|Lrd%L`RUe&zCD=X$y&RxV$B~>oxi@q!EqR~bn@0(DU z>KdhR6<^7kj8|g{@kN6UjLq$Z^Dt;Pw&1nH!ivV44qkk;7dBMXw=@TrubkW}tT3&W z^Op80%)}j7d)>{2D>q@5ys5CfVQm}6j6&7l`PjR?u+Q7c7^3BMhJT1tM(82`KP0(} zl!4<&SP9HuSz@ej#19uP#{4-8%Z;#CA^zF^_PG+~ao;N_|7`a{o`iX)Uqtz5d#1by z^Q!;nG9qUH)I~;s7o}^|#SO2f)WppEk9OkZ(xOh_?YQ14Hn=Z|@p*$-2Gwl7Ts&j` zU(cqm(Ubhq?8`UFE6>PlR(t>eNyXq_rqTW*YOIeL#K~dABL_Y8uiS~jzf5U`XT~IIr89#ezjI#~c2&Cbt-++bg0o@m0=?h<_Xx$4Y^S=3QE4k*K(g z?lNt!Z@*e(9r4XLDjP3ihF@yswm-fZN9Djp% z)jBXFgFi+i)!sG@IGRMK2A(qN#R)(o_iIrdB*}#XARSbHCKkV%*4Sac65mu;Z z@TF*X+MS!zx;Ce6;lG&SH95+%P?#fgP>NxqfY3^Bl*CiS=*g(5bh9j}P8VGAxRk{i zs4x6!vt_uvEMNZPcHU$dWVwns0O!V7NS{1b-`M_kl$CL!luV_3ZIWJ+96wd1;E)qW zn8g`%W>xZsVSXZ&i=kF9!U*S20zb*|YqBOB6NUY~p#RE~qW&_G6h~zae_YN+>SWEh z0nI^oexDjv{l)}o=ywB685b~KNq2BP4mMYGn5H+;?JO8`F9pX_ft~d#c0SJnzqbVk zu3RGle{jw}AvHYZrfFDzpx8Cd?>mo!ZB&^KC6|%71IHH-OxyH41Wa-vo|*g@4l{A& zPE8pJNbsf7mRXErpOuid0BEG$fW4X4jJ+%EF6`ZD4`J_7|L<5+sKB7X>yshL-Rbo+i8Npj_-lFnAr(++7X@*R+LPRBK@w~>ST zfgZp2ddbRkc=0==H85$BCt*H_|AzL!WDxw@Y$ZuqT&Op|$aEQ`!-@qF|FeJ`gm2el3|MHVK3xcoW;8P^7s8866_NSuH zM)d6<_8=tMD7klVFdmL1PE?NYKf38x;v_{r6iI#^BsCHXmGr4d@|Th1>mXH{#Y*|l z4mm}US(4+#sU(f$N_fhJYre9SX#kh$sRpFCU}yT1+W@4g}V@3xmiZa2{0{> z2d^+2gUunVvLSC_XLwl0$?xOvj|d61Sy>4m9(o>!vk)`kMx-^Ar@!k-tww4?uf$Ok zsWqB)3`Iu4U_lG*#& z`4Y-i>?KsN@%Mu`Gnlp5`!hFS&pyw5-w`_Y8Oe`>_##4T)^I|0s(&b1IjEG>f%N>a zL#4ZNJwt!$P#Mg}afixeKK{$01|c6qUw5d%uH4L_XB}z?OEQ_m#gkyAqBB0>las-=-u7L=6tulu}1x5KQI?K7cSFFr45YkUbRV z64hx3j9^}7J5&z5HjoUAWO#lAur_1o^SArGCvX4@hIOCf z`1?G401S?u{&cwDp(VMAOt2S5Hfh>{EeQRom^Ao$l{^d@^ax-kDYl%IBMoZ?9Pb^59K57+;M<3EIBE^kejWii z4q=#%&Oa)ppTm4A7w<)qqa;(qbaBmzB-es`nQ_&*!mzGEiU$T4^$qZ=!T2+7HwMo` z!~7Bm7X9G)D9OhiVgV}U=OF0e;1cD-n;_}oU^U$Nnqhz*4xXl@+at-ZIixzd`+f|P z1v_|#Qa&9?a!Ep%bRZPNNaw^dc&3Uw7E<=N!94Z3e5D|NNy|LfxqP7vT&c(fkgzBQ zmnrgY9A=?(2G1dBBzr+OAX|gJn9M|P#bM@#4eV`Yeu35C4kJ`V$WG zhlKShH(Y1w4Z-<*-~bRy(WHkAs~tU#&x;GtzwyvG;(NG9dXFy!$U6rlq_L@OYBH0Y`X|WF>fBqw96p z`Le3~-ap|0@eOOE;@}>}xlnTkh%7(Hs9Y4(=b6d}j- zPJ-UZ5?rE_e+7{Iz)yuiV$=)a#LvSBW5kO>IT2wou@)9{%%oNYChg~#p4$~zTIQu} zWUs`16R6U07$guUC}^%T#yU>*I=q&vF<`HvbFFahBQU@MP|i&< zuMK5?va7pn57TeuP-u*H;ybeqX3PDs^EKM(G^t|d-Wku9G1iIYOhlM1M-clp#=aF^ z?2Z?6oO0n-Uh^7boyg7{gV~abHZdD7!kb+%^5b|$^51|&8R}Ab8S5BuW*N+u>tN^s z8oCFD_^*O7%Ot-T5@qNfZOAcj6fK0C+42Ysy-Y*fVdz6~4Y7ulq3z00p<{qoecI6P zU}!vUGSf3mb;WN^GAm*_WfVG*&W0jSK(DH0WWTPOi$r!J85ods%IgvNVMZQ&$;eJ5 zXDY^Q*^S6QXXNZlMJ{q8@%mGx-1I9%_OZ>)G*NoH;+39Jyc9|UvP@kvV|dvEiX}OQ z7d>)Z@(pSYQ%Z(sD%wCY|8u>D33xqaI7|xi*v-zLd>wXOAl)e`_W~@Rv1sL-MTlg; zDfQ<{Xs~J{&oqz@HoA@hNiCwL9F=DL6&vHAaT_QJ^+6qen}mG)=ZUV+R%S2Q zZDuT4JN$uDFYW#6mDbY-Z}`fqzj$Pgr}I0XzHZhJGX}o?{_I;uZrHTReyjQYT-Tb1 zS`w#?pJb+1KGyXAg1+Yu+`MDbvlR(dceut4pLzGr%`0Xc+j{f8Yp?&=?2awhA9(Sb zR|P+MD!E|xjfp?M`9~Zh$`Mv0G$Qbi*|sC>LfDJ&1j12-lL%)JE+FvFs5pmNfG``O z9APyAN0`kB+Yxpl>_vD2;V8mMgfj>nHUY*P7?F~t&>mz@2QOD>-aeD=VnJb3;}Ou2 zt5yK|Ns<4QT?#bMUEI_l4&#FYn`8NJ&{7?3XC6h`x#crc)of;(z1uyCwmIQ3zuY#v@EXC_pGg zC`Mr3H@O~O|J(z!zxj=)JTI*|y>j5s-tPL)!p@JK?C^fydgYNM%7__?b`5_T2v&f69jak7vBo>)kqT%FOH^9v{^jc=?UPs~`PS>w~vX zu77FJ>9dO;`K~=KZTGY_TgQ*smTb4a zJ$?RrZC5t^e9+@XUE7kA>c{1!bPxK%s=IR@fBmDIzI^`48{P=qX#eSx4=;V>mh7~r z$G5%s!r8);Y0JKRc*y5p`sjc$IWK(f$<5RLT!cEDi*Ox61HxShoI-mPf&H6x{4&Bj z2tE}0aD>SSa}aoW#H*=W5k85~gK!YxIRwsfyoZpA$_OA#L0EwBVT48m&Jz3!!oMOM zK==v5uMz%;;K6u~NoivOf{jptz(1Yafba=~T?o9neg@$r!n+8GXvf(I^q1|HqdvL< zH{Sh|#i;;caY~S^0_^gr11+%dGyZ@8A2@#^-<9GtB9%vBC#=n4l6Uc9k~4DDq7h;7 ztU?wq>m(xQ1IXejOIT`t2`rYRusF{{El&RkOHHzZwGBa7yo;cgx}gJNqw{37Aczw@ zr;)|eoMe^v5M=SDLbN#lLl#fTqQz+*vN(4nDe`uNEZ&<)M9x64*m$V|EzV7dgp*8E z<}8)O=d=lx)vX}f07y~h#2S^=EE^CT?~KS&ca@5x=A+2sJ(QT_ECX4b)eu{p&Ld0R zAnS;{nV$ z#XAa#_$o+hRUn8Kr+diaypFIqZ$%cT$Rr{s2Fc=-Tpkb`r*p{S+>S)#OdMI9mlGD} zn#khaso3JIJXxH@5f<;D$>NQ*usB~u7JHebm?Y*oe<)hK3#XQvmH=Yo%`0p88wgNT zH~Hin24`2P%t1p;ei0f}=Hwepa$-;%=j||+d50{@2@;=^p`yh{3)FfHLA0FH1=-wi z7E&AO1e`8-dJvYuyEhm`s*#&>SJw-+>FzIgZmhWe4jXe2vGockp4_=5;^_=qzxV}k ziknnC?^9OB8H5{oByF8|A5997V- z{I5WzyNo?-T;`wg$G5m8VD%xGg;>Vl)?QdsjF}+o0Wvm$i#W=Z%yOZmAmQd8(6YWy)Gj&Z`7yKrF;%d$G!HfdVciGc`nT(A64iy5^A$MnTY zN;&H+G(t4Y8qK{I+_4e) zL4D;?ln5&t_`={ye#Z!_ogxyI6<1C!`3_{b9Cu%#iv;(Trj?%LyYfBv#)Fpi-&T%y ziLGJ?Fd9XZt#>6yFBR^x;m?_o_8C$#=#Y?!I-4Wqr@e^1WiE zlzRqPW8A+mmv~HTp8K)e4_dX}x5)E?c@WGA?!90ZA;rWc*5EBLz0}J09wcRYeOJQl zCd*37wEW;1@GS+$L*$tJ;W+lfB}?&;Co+e@YcCAtfr*S5%q#hWAvd@6wrhu6Q0b}cs>k}1H(PyEo)%XTdpEpEE#+U?lXAw%>O~Z12cG~8to$C=K=2o zKcLa}0B;4&-UzhMp&4xk&Feg%eF}IxXkHfr?PEYJbuZ_2B+xzr>_&QrftXGyKcvxq z0*K4{a=yw3wD$s;?jDVH50L5d2AJt~1G_-;`W0wz1JdqR;3)9BG}@biw7XHG-3X-J zdX089kpA;Jnf|W=(hl!DMuK0V(Jlwl&LWNWY#{BFYP5@h%y)rCJ0D0pdBAM&13*j} zm1k?TvozoK18FBkqkRFLgXP8RewNocAnlw54g;T4r$GA@koDE8(dM)&^-ci&;PYis zpv@^)>hV4VXzvA5Zx4{=&$nNJb`OyG+ojR&2GXzX8ttt>mVcK6N!?v>SzA4MaJWuhwX<5`F~`cjM*d z8tr*N`ZZhRMLC1 zXrB`PaUjz>47?NaLmKTTfXwFsAWjbD`!(A8fH*Ui@6~AU`TyAa7Wk@;YW=;>Bj@Bn z5+JmJ@;H#th898+!lS^k39kYTkP_O`2PPpokhBSjc~Iyxwy067rdpM@s8qR?V!dLm zUfNO{6}_lcQMq39_FmIkmEKmR7Ax(g_Wyk|Yxddal?3Wl|M%DVojGgPS~F|bJofB8 zvuDo&WW3#gxUE&~(lESJ=yw6)PFU5eVYmm7`LzSGzqDu=ZUUs7I)Uo}aks5nr(w7n z5O?CLDhIakff9>o$8EaFk8ywFs~YcqL#R;3a^p7aTpDT@4rpWWEalD*zV&GXMF2%>QCQ<`0_6 ze=cA?@Hv3gV>Tf5K;0=lkVerzAoTYOy%&(>j}L0k;8G1GWQR4cG)Y6|hd| z>jBZW+0}sPyV=WyUIBO&@Ogj*fF*!e0u}*Y0T=?j05BgA*GhISU=3gpa0;LWxCZbP z+IcPD3BVBGaX``s0NJ080Zs%wBJ{(6>{tDOcny(#0Pu3a{ebLudjZD+?gnJJb^;udP>;j2S(RKH#Y2w7ZXQvGx}AW)tGo&6nzP?WT< z3w*!8cMGf%xI|!%z<|J?jL_-7C-D6O-z~60;5>nU&eHM!An*}^`vi6gY!NtJV4=W# zfw=;?v5orwLEuLOzE9u<0w)PXn{d2KD*|M?kiZ@w#OnlB2n-1%6Th?piQg}9x4<5O zbpk5{h6Dnr^j{5VXnU&G*`8hAJzkF|f4s+2Smg0kEb(}71NN+2@A0&>dpy0^Uf}WU zvUlVEVS7LR`|U&cKVhH5e~)K}2XxPV{6FnEg8yec1NcATIf?%r-d;%F<=u_{J>I?e z@AKT_33wj057<6$ukS8jpU>mj?c0O@hkg6;f5dkb|2_U4evjuae;@vL`FHz+o&n$U zzJOmmB5)G_J;5D8lp?qX{|ABxgBWXa(W%i;#(g9QIL0Eg{a`csF8o&9 z4Bhb`LFdR$hrJT?7rH|75jJ)?-bH!f^C5t4ANn=%py1yCWc=NNk42b#_E)-3QNGWz z`k^b`SHUBn{hBTx4>?S~SMarxUr6u|N`6Ix|3KuI2!36LmN!rEKeD`#Um^H(k+)p% zh{&rJ{7Ljr*2i(F!_SNS^}_$D$g2}P%=}QE0V&UofK1Q(65UvlHz4>3$-ha`zb^b! z!ta&*+J(Q0`awP)j_Brzd_JesO_lsZ!hcEloDa}FL4A?FLik@5{$0XfEbafa;QuA~ zfZ*>H{Z0s8BRC(1=pK^zW}W-97#FhCfCBnvFEuq<%+Af7>be3f33o z@kJcnR+b0&_XU56`2+u%;5SSDrvxvN^kYD$+aT#L5S;y*>E{d1hiBre1m6WY#2W?A z6?wM^9u|2lH(jsD`@Gb94rcou6F&Q`8-JF3@Qw=qO6mh|?Be{I@?7{y;j>=o z#tB{|csctQXtM;r5^{+z5WG$5+XG1VG|Pwj7$tZXam2q|;dHC@ZS%}^t*)rCF%?Qr-lDb(eKN`KQ8)wQ*e*qKNFnKA(Zzk!NY)*w_D`#`IqIZ z1C8#7Y(KR5FQvcSEB)ye!GA9Oi8ASC2tHZxHtLV`%LM;8^#^{X;Crb*@K(WpNPU6# z2!5RU0>4l248b21{O25>kfsT8>2@$Z!p4r$1B?$H`lWo|VRErO*LcP)Ba;wk2jtQ{2~V6~Q_+1K<0kPw!LhcXa9-zhH^P&Dm*89% z$N_$f;HMy;xEbGyh2JCme$l57^-Ncf{Bm65?;M14T;*Fr+*SU6hJ1*0+@?5uKbUTQ zdK^xkoB!{~-;MXi$-~?yhTjT(-0{s@f1}Vx;`kp%|8U30H;^&-qPYCI9mgGiO&niL zxGF1~wS~3jgf(q2a>bREYe6)N&1MNX*(-%)hXFfQCo7}k*XWb_-lBZ{^?!2nvx926 zG2tu;F_;-w52naidRJfC>lO1e&rpBTj{_au2Q!~>;i+|u2BtoZnx@Rr#eJ(q=TgXH zd8%uxR@AH;PCG`Etyo>Nu5$I_rM2h-D=HUNEv-4r^t1uGX36kUYn@Y-E=j+W7C|0P zAB(S(WT~WbbVh5}46l!yx`}2s?3BsNrJGbAuc>21MMtl?m{|IhmTMv%ZD-yWV-N3E z=Qo|f1)lmealYxpIhtLtG$E#dH6+<;>{A z{;v+hNGd^IK&pf3%o{VDiXuwu5>$3m_m&9WEjF%=;HBCYeW*sQlu~i5+Lo5Bt;G#u z8Bk-9){POIwBA_U+Sb_JLd%FMNu;&CYkO@&eM1vTwTqYG1uE@Jbm_9H6LxW)VFU*j zHW*b}J2%(hFvFy_a*Z+HWaeoNFV0}EA@fS)gsSDUA0QH6B)V? zDYD$cvTeEDIE>S9eX)4Anc@mSypBmaE zFH^G0QkKl&#Fs1;V|F4#O6D+{CyO1KnD4aX_0R((z) zLq;5j;d;s|E_bMo9JvltG0IAHlcwUArevseC05Jg>J=rmB}V^*k~y3>jpigWbdhJ1 zk>qMCcM>FRrdflt%b+Rl^rcR$RKp5lU_S#~LFvr$@=(;3md`DlJ!kI4WphKJ*(If5 zl$DTMT2eBH5oeW`N&LEu_?ar7H_XZ3de&FmX4Zjz^!o4qf+a7tl*2#l;jsp|W*LHq z!#idxC~IJf5chW!FTItMbu)u=*^+*|=3Wr6nLgbmWCq&*$kjH)kXH-{+$irsYCYmTuXx~#J zFD!*S#g652@ntspMOvs`VtMCD?mZ%79y%K9?!)kJgS<^4EL-j9crr`lK92WZ~1sV%;|KZz^vPZH%x ziy3{ieRqs8iU4_6Rjys8nfU*O$Xmq$n0QD5_g_qt(9X-o?#;EZ@1o+w%e&x0ope0b z<>@ZKrn5MgR9^kYjj(#5uD2Nd78mQ(Pf4o9*yI-HlFDPHCq9C@GQ!KNm< zXV6~?bug*C4w%M*)r$mq`4u{m`Oi%mN zSZmg;?8dlgZQO^F&LUW{%p6g<&-s@8t!)vG+PiSC6hb>Bm8cjXiY6bv@4Hz&YlC+B2YmNd zyk22j>tfhWt-IMyujEWp z^&f;z$=cG$HRXH?ee8{!D^bR8?q#`Nyy#%-3k7!T$u%CxMPK}ub$8MD2Ue$}&M4ol zZdk0#WyWm|6;nfRvcjUwc=5&0Osja>FO&<|++bpLB`#bcYh^EBnKnu<}w|fp!8`s&1#B`WAJ)obqxkv8_GlNV%TdzD30NN z5gaw9wjiV?cd(Aq6}q(Yikg}gm8)xODpyrw3q&X!x_AMsohnmqA!Ro$g!Ph0i_3^r zQoh>|)q)Tvx7)EKLiNg+p5Jb|6^P+)#Hvt~*?DceP8%Svt+_GOiudnD(?U0gHn-H8 zRV3&eEqy{p;3ltv;%(a(sPeaVw{$hrwrB_9mLMZ4OoeK?BJG0G3}Or3_D9;aX)(lP zw4(TWnXYTfT@%w5gkbk6RK%)o);TnX7ADj>bh+pvmMlh{qUO+yP*G8Qb%0npEi^M! zHVx8^s*tT3t0*dATIj-1yy`lEyRw@%AZf}<3SH#nupo46=vHIoFVx8oaj|&4M5k3x zJnM8jo9@-pc4ND$Sx>QT(fa}_DB#5iO#9jx*+op%ui{hx;(Qqzp(FP^Ov(f7OkKwQb zxOK!g@?FS`pdNcIid0RhGO4Z^n~hQp0-864id4dds;PAu*%wXSl!rRITXh-Ai%N=1 zkcNbd!sfy*TY~-#>qqWRFkK0AceIiX?2t%5`|Q$}n)Dc-&L;mdNncuacIjuC^k=Dm zxk*3o?DC&&(w}Aib4>cPEdN|dUvif9KhLCx{usb<+`(pLrxQI3&B@Uv(t>M6jqYxy zTp!6hS;EDG&dFiQb@^D)t3U;H2ak!du5tS6=~u?=9%CZ4&q{a>?vl37F|iI~?@EG; z$)IHA5+M{kt2pkkycaNp?RW@xyLkSCJ~tQNt;D70Jm2l&`5A5|!b9=nqW{%VZhpF| zxvObeb4Mq(jKK=(l`aFc%V3RI?<1S9EZV9F>>jNc*R(}hR}^iCbTA>V7%8Qgo1C&v zHQyLwV{dQ}-Hr~bZyXABZ^)s+>4pf7#DLvq-ia%f(dGG8edG1ron5Y&%wvTy%Ixf5 za;V0}Y?R~bXr0h&&8B6G)-ZZ^yMC<(W6fIM4w|TsH0n)FP{$F)*bY@pvd(YUhJ95* zmeFSJd?ZO=vc=S;q%M&7OHI0XR6|Mcy7&ymmDG@6C){jsba5?37Rf5CYy7X?8P7r> zzqjSLw*3A+1kdktOW=#(hkpO5z8O~QT197(w>t^f{AB&nO@2H47Hc4c^l?LMj6@FC zaYOQ7mCvZ>S29EnMhoUfU!`KA2wY(&O_%3X2*{UO7UOMMp*pjprLXotQ2^=YEKol|H zsJz@ac_B69Kmmt5W!sd-Dch$s-kP$oJbo<_;#);bb2>Vk+qQ(}!n$uss0c4@w``s< zw**M>tkP*`ckbQLgA9(tI-{crt%M!zi!dsiDYyIftZ&UYTgwTo(VxFGch*~K=eIWe zsNPOnEs-soyP6RDiWP2ykKJ23n>TNXG;*>yc-FDEY{}D<-`v_(@m;P{g4Jz?9;GQt zq$;w>m7S)o#bne)T-MUu&f?NycQiSv%iB7dZ))4(Cc7jgPZt+KL~!}u(N;$(omV0! zjV)`b-`r{4ppP9>NbQyNEzOOwq~-OUi(t!sZCm#iY|oG7=~mkcQ=6N3-`*a}T^-pB z`_-wqd;n6ZP@irUR`3w6NFy}qjwq#8)py=tnUm7+_~dF&(>mtc2zO7?&nnJcQceL| zrzga*M}5Udic1=Y>hB=L_;^igTU%FC%k~;HVnjHL)~usqU^?XsabPIL};0aD>rckTewl+tu!t0O-Oq#0b>)Ny=Jb;NX z3$3Nz;NuU*PpwU~)g65%T#T2EEfLxfUxYX4H{f+GFP+-jO{(R2MbzTc6Pzo$6)js^ zyR3UlLp9#q>*lbwvIzuH&0!%0kDaqx@M#LB@c5$)o_W{F@=IJ*7mUk8=`5XBq`j@7 zN%%`un6LIb8#*>74}y^`^&4BDWLtL^76YUe*R(71=xn|?N^A2L z(`r?bE#0kFYrP!nX5H9P-(I8s*HOnv2d*f@QlRrTANTf19z7gcnWwjpBZ ziqeKVNJn!cE@v?}ZPmB5=w8`*6~4Jy)wTt#h)Gjq2{&kUbK0>Qxhus{hiZ*xaeX`2 zf-HQIgX30pYMlD#I^qxC>%<-ds0sQ=K!)+1&y^ap+ObUold-i*7_zhQf)J9sTDGr^ zG(?)Wf)v$C>20a0oC>-tbdxgLEhh+~;!TL-Rx?Juo6xyXe6)<7_*J!S=GEky3X&po z7zUly@J=(O>oja7NQ+T2Oi-&J>*k}U+TGZit`#&59YafK12=b&HgHEv))GVT%S2<*N!l+(MX@*X*#PQ9T57Oq zgxw!?!AAq!*JH>gZZ-C;DTeEfis>Z@aoq0`Or)s%!9*pAl}uPdjxMd#HNxUK`M4#x z%IWakiHA_Ysx?{1)KYCUSq$C17~m`sFdz#7VtCxzhBKl_{+q5sxb`tjnXyEDcemY7x9Nx3X{}4x;e?CQWIFi)|Kt0 zbW*|`?2OXOyAMZ#c^5L=(lJ+go#Mz4eAs$acD7?`y_V0g_>>t{<|YhJ%0{V*WFJve zMYH-PLjj7q%DVT+>hz*#ss-?+Q^*2ONycW#A@R5Oq55V-&0!S!7Ch5_4 zWLLT-O0rNEW#U2HHER;KelSjWd6vjcni>fxZEK%nxOge0CgnH z1Q2pkU15TI98!aX9I#N{O;-toU=!?hNGVhC1aG<|)q0n(9(JNso1pp5$mVIivCgDA z=A^p(gamoYIUVvc0(fA$kaQsW-!G|5>Y&xP@?*ii%RZLy;w3(&PsNN%(jk*og_C8q z3GQ-84XIMCccLV8zum&x??kCKLG$t^Nj;fV$DLFu1-~RwJXT*tynZ~1pDs@zTHge_ z98!ah6a6=-Dx4?@nbU?F9c_crCChxj@cIXdV~@0_W{>uJVSoC(>}PM!`t|LZBkfVR zm_6l|H+#kCOS0x?F39v?2ZZ;0YsF~1@5)iYKic+YXJ(T5o7=H}B5gd#^AIi2v%|KI z-;Si@y-162!4XOn@p&0#h@5^7B73tz05@YaxC^uJwS_}Pl&nHf-;tS#;0T|+VsvYk z$quh=F&cC@WajZ+!j#lj(nDjBuJhqKYzfklCdQ1{)pWcS>Xea9_$-Hh$B zR5u@$IcXwl(Zvc0uHsFWbPAbLjFuW@S7bEmip#tpYsF}^7Y?@eTb?vFRXLDCjZi)t zYbwwT!#h7wgc5K8tWB^jREnZvXavMB@_8gAtj}v2MZ$z5MVj~*m8;whI(>p&I+}{E z&%7EbVI0wuR*F=`6D&7;t+8B+u6JD@5%l${=M0>itWq(FZ}zn-^71f_7oH_V2zjy#GZ|? zFHn_T320~2)PqMI`0mT*@r=Q2-W+nX58;2jmAMEhev4q*q%02L0bh>&2H?|Lb3#8p}@~VQtn}IxnTfn#g>m~T1SoAZo z=p&NSz8#Uh!Gi{Uw?e-w=(s$E{u@x{Y4;GtH?J6WbM3L-+_Wd5IcR}jfJ=SHWEruy5fE~7X1=X+TYC2 zB-ip^iyRN+mE@+a#mxbvz`bdf#q&z@me_XSmq2(ZX5LcNH!KJXiaH!?gQ3?4@P0U`^U0>4FAC11#131koIGd+yDT#p#6%k+zs zBL5DQCv&IIP$=!My3mnG#UiH9RNN`C==@l;3aHAnR7HNLL1!uSW`n9mvohBpr;kDX zU`5tW0FUjv7L-x=Ov$oyGkF;4n+z8CIuIP~K@srT3I5apXYsn*sih zG$)TXf{&sPeHzQPSyfoexL6dFweE~UjWGeJ^m~o z`)THD2(CjQ&@eVXaP_!r5uAghfoq}0xI2N>5WCJ(5FGaaux4T#JOx?fJ`b#m*gKJ> zm05`(4}}fP$YfQuBA78Ts~f-{%w%nSh|D>e)csxrGbd*HF(`6~4OFSrUu1-^ZwKO@ zXMYDsZr;!FzYnTHm%QhkaL~&95+eB^X+-{bg7G7A$DIQ>4y`$2BsIq!SYx9+1-@~m z1{=+C%rzKB!K`sKo~+W1K{>`%8SETSLEg9;gPqH&%;ZfW1X9)r--XD@e?7v%5#yr$ z`Zf^QqehI!75^X*cFYkIfP59mBjij3atH|f(uhg80cPF|@}0nPLgNW?bHE#+V@Q`{l7#wnA@3~b`%&SSbjEmFgG`< z>8l{{4w*ZOD*OfU9)zl+AIMC{wfip!j@p{ZkBbf?IC80PEP@$F5w?AW2>RzBLD3kO zyb2Ilq%mW0tyTfK48q5ZYZ`f-37^+Aa*GL%ZwhWlnAhSMG!X6|I}C~z;!O@Ht7{Bz zRG#3+4T?4b%BoRZG!n)a)xEw2T2@ZxVQ6>>e&cxNwrV}77qlik3-l%U96U_!fuCrnRYSz23_PijJ{pkp(1SuCGMNSv$W_P} zU5GW|D}tGXkeL2nNStVAd`tnG@+aE92NdvYUK)9m4oKQ>0V>gkKm=*Beveoa*5jF) znQsInW1>C6i`y{zu9oakv0jx}r=3{-X^1rif|PR>Fj{#k{atvjwC}VzpxdZ*m}AMq zao|X57w{~Gb-<1jE4&@p4Z!R>FGHyCtN80Bxd+J_bBvIwCuNuzL%&q#pHPe zbUM3j0C^wFMd&`A_f)&u$$6@Mxs$JTzDZ-&7woqDO!SqJNc&mamUMrij zxAMtuEz|w8Z5P}MRhXknS@0ELPM#P1nyUXZhYYLeK_tkTZ`-_g*!Hx?HA>#J{%F`b z-(+K^_jc=3$nHDL?onj-vzY9%Fuq2!8;{d8>_;i`LVN8WnD?VzG|NR-AXW}}Un6h& zHpqJ(Bs#MgVLvtl-zZz}1IsFAgwqlM501*&k6Gs%m3A9i>ow>-`J*8DDX8{OND{4y z{{ZHw27L;tz*Bt4xX`Xq$~{Hptn-aDGl#cZX*HmOQojqSe~FP=j;tN2g;xQaO}XFY z1!GU5scs`L@<@S_>)_7|S}11F?k5E<>B;j8l;;-wIqKnXe#=t9cC+_)a01 zv4LSPN2E-iHI;<*i2`KoCJ?vqZ|ZTwuKub94`pkPDc+`=Ugz%cua$< zllJ-)9};PMkoF8|%gTCv;UzcS-*ETil^+gdP22O$@{8ZI^Ok>`^V!=gYIZzvAalYW zZ~J+3!5(|`%8Ga0@~d4R`%%T>Uv9Uq*?F&>`@Mf&^NXvy_ipfY|I5(_)}L24?Ye&t zUa@lV_o@T6m6P{>?>E1=>leR$v+>fAg&&D*8BuWHiLC3tfB${&^Z()CjrjA3cutV9%4FRGzXzV<=pp!{@W{5JSr_?_^3 z;SazchCc>>9R3u15S=w2z6hSvGxjWqwO&IPrTZsdG=O(YOMgH3?v9B?K42KaV(&b&SW{}B8^cuu#UgI5cX zXqR62bKv2)_{gry>64I{8U;~vKae=1!*xl=83H-HeS*WegK&6bp%~t43K><;Xc?Ka zMnvW$S0ZzY!pNMn2#FIuk~k3(H8}AhiAz92;-VBu9B(CIND^|=E3r7sV=PYogv7N~ zlJ>!idYo30#5tzO;xwNm&i*AK=lLXY-9Sj3rjo>&tH|P#14*2iN-WN4N#d;o25J|`t5H>njLm-0-EE4%eP#L)m zULteyN)l(XLJEm4Tw)dy7eN_|tGGhqQUys|w-6GSSV-c6i;%c5LlW0(LEkn0H~adANsayf`3t}#h0 z&hbg&dZ>^%F(--3jY6uIgj~iFl3Hv-EKWX!WCndEro(+iIpP5f`W%>rM8M~vfXy0+ zb)?hb_(?j}RE#ro$`(yc;4c&kYYd_i{Xa0+Wy3)gc>9b# zMw?mF){U$--y>sS2NW~=Xi2fVb zOX>~lY_m)8Nmx^JLuYg=??04!>Lka%n{Mtw%Y1}0oWlq3T`-2@)iwH?-Qp(RWE8e| zExujDCxeEh_W%OJJ(2#j8 zb_DW!MPRs75aSn#8r$5W#ta~M)G&!%-wW{KS)+u@J1DHG>~QBkAAm**=7FmNHsm}2~Zwqc_mh!eZ zEEU$1NT25)C7kKtTuP2_9FloIf7|2!3o~#6;j0AD+w#6(1s5s=5xn=`{zryAxp?B? zgs%fL6Fw^ehI0Y&yjaC&E5Pt+TsrRp&Sx>e@JoQ5!1?S380Osheb{+40EqRAs%JC| z9|7#a5y4MuxZw~Wo+GRJH4Hxr$b9&W$b23Kq@2Bgl(R>}Fz4!&bB~4_?gHEjey@h% zTL7s)pGB#E7a-*{0^+&5s!qc&=aiIFt>K2{fZgCP(J)*A$aD(j3d=l5}EzpxwHoy&BpP{^?fS8n39nmn%bzREi#wWn= zen7mmYk6414ch=Iza5bBTQm$e0a9KaU@quf7Xl1(V-@99YZxvBq`Z)Z8^!}tUOphE z_*HothB=xu-f0YnfE&10&35FR3vk2JfK1m9h$gH$sA0Gd@cp3Q0{8*IE1k6Od zIt|0u3B4K+V|7)PhT-Kx=NUT~?yJf*3{MASzb(=*TnI?H;{kE+sNxwtfZ;4a_RFA# zVILsloyNo@06N#40K+c<@_IV1VfcAK#(M@3x3sEb8itPo;!>_UqG9+DU=Qk{U&9Rt z09oGs0{05s1=tJvJ%FsAJ`Ka5srJ~RVYm?xU8Jf`!|*ylRDD&ohT-LatjC1{O9WEh zEHqgU;Cleu0m}gE1ZVo0z$*l2x+35q!E*tp0tZm(gMiRO;p_s;cPZdJ!1n?&{hff2 zVL^8#=R!crA)o1SK8i|zqrf)6ZJ<{IwgXlGHUVA&SO@qH!1aJQjz7B^5M@;PE&!|m zJ|B?zUku3n5mx!n1q=b71DFpu8<2XG15yvfReH=I9ffKp4p;|x0)@K*knc?v1M+%< zPTBo{n*k31ZUW?W7XjQ0h&IaJ4cGv<6L2G7A7DKoug6-zcEEQ6@;b!$mc1VETEJ?+ z4S>r5F}`Nc6M6~Yb-;@N+X3^1o(p&l@E{<@v24B@x(e_F;MIV9U(^M7Oz6BGQHR-w z0daj~9}xO}z$=081;q7`y%Vqiun+KZz+OP~wd@|iDS+FA-VRs;ya{kJAg|Z8fa?L- zKGlFBz~z9HQvp~FI1g|VU4^PJk1D=L?fU zz~g|FGXThTJqDNucm!}2;9)@alYYQafCm7p0QUp3-|Pj<0o)CE8Q@O9d4PR@BLI5= zR|56`vVUy@%mQo&TmjewxE!z!5GtyEdMRKvaQ3TwK=vO1t|4Y~r!?ZFbqTyg;9P+o zfv+QT#{0IwCk5UnaI3(%0%r>RHI!qz{}gziz>f-CB9J@N8LvcOkw9*cAw3}QAq>XE z9}qZSAoshI?h*KUhQ_}m@aqCs3S1=cDb#}x>2OUeSOiEpA%VMr5bqIKC$K_bNT4Nf zK+^S_^a6VX)(NZ-7!n9T5otFCH1v3O*uA#L(`Vmf`@H@3A^R|}Blc1JAGcq^f3N2* zkH@pu^DzD&^&G(e)1D*vAMiZy33#g41w3_)0nah}89U%PWuM0XPR}mz4|@B(KJO9l zQSULp)7~E64xh(!k8h{X=iTkw%=pYaXg|0UlEa31#W_dn|Qcn9;Lf1Ob0ByS|A&HygWv>@29E(72tE&NPjGK=Kd@85)A;XAzboD6 zy(fKV`mS`3XHWWG{O?bH6#xC{hroF{{Yd&zV9%rv;Qx5~OZY#Pej5LGW%OluJi9V> zqy6cw%f&^2iZ^agFc$w0KX5O$yrBQl-OGy;crN-k-3juMW*+3w-Hdp|D+JHP^~3lj z5OACWS>fO0Z@ zoy6aeuK8w-`DxI}Zxa4G$-iB2p210ZX3hCKqR%$r_X@uRWuTiQ`t=C^dy;>z;52qX zdAlY47eQzKeZrqD`R^3`V(=K>hl`Z%^OFB=;h!t{?G@Z7@i{M``-0@ZU-(;uZ`P=< z7X6P){I5%Wo)Y{If}1tx4+(D8nD7;Da0YWPujZ%dNKZk z(1Y#@mJfYuxA3_&EE|31Fdnw)?qzwQ!wKPkoBauCjqNbLYI5U~$VZt?|NIW~M}Dgy zhc3+gkp6?9(_PK_LK_{B`r^j|jDNMnuO=UOqu}$YKhobT>Ay(%z#kO6P~?AA@Xv|9 zhXkKXd5C{h@NpvVMZrG=Nd6mw`$XPo)H~e=MBWU+CyKmzg4-f*k>I?~QQnn;zsULo z-Y)pNMBax4{{j0eWExv#7qfm{_=}W}G^YURj!SzPd=~l0BNq<=bOlWB!u_J}KFRMM ziC-x3kAu$m(*++dc)8%$vOM6g5d6ceAK>+Z{{&&;ZG!)WWKQH+AsW0$H1fMGSj|8u!{^0*Y@cWSm z_34r8y_5PP4`Vxy*Ht$B5z+tG%pY-#?Y0TTQC4Gn?Fz`vJ`eqGrBdHoh4#sDjW3@> z-jh&gN2Go*Cs6od!N&{E`ve^~xiJ1A!9RkrEeE(6FIEYDQ23dG_X~cTB{>4b|#?{vsPHO#)f}8&@(8rB) zUBZns?8d(kC*N#yFj@Q{j{hT+#hrdr9G@Fm-F&N79pVF1t(DrWY++RnpGn7mAb9$=Z+rA(;? zPo_^LxhB%lcIN%Yb?8L$#PTwtIp%PBAl*HBYK1wkOc#9k7fkeM zjkA^DD)yivV&BNP4~8=*($zXAvnDHYk~202PmuKFjHLB5Sf40Pbx7J-NJ@SPn;QLw z-(qTrQ^$BD)j;0&sZNGN-P9{C9u#8wSxW>j@T}UFmaVPD#&)X4BCQ)EjX2V_xV5dZ zyM?xVRo9HPws&o>ZK!W(BB^%qGQ5lIgvk?_51=7tb?z_@sf^$h$_A5-m|Rb4Q`;Er zPG(Ts@Zt=58?s}~TN&*(R6PnQljDZuMAXz_osPpZpU&d2m|@9|US-3~!F5p$H$}Xe zgJGtlYV1wJj6TQ-NyDlMlb%_+PFEUk+C|PWJve&kOcKdKNyAT68FR|fu(JBcJ2h;W z#Z7g1*RV>B7GF-plO?(FI)zF6rp z&*&02q!iC_II)98@$5u~Xz4JL4PC{v24|NI&MqYzMsR7ExY036Ut2s+m11tnQaBu^ z6k6HYi40w(<*696QZdR>F-pl$bv;*UIVYu-4#&|_D>FNhA$9FAlGpX%?6NsZA6Ofx z()Y-uLWW>#8MBRug#P1j;>(oCkTNAQq?e~+l+D)VNX0Kr#n9=>Q|j(;;&o4Ci0%#} zX;sb|oQ;!LTDn@>O9zjo*hww{op@Ht!Z;kKFmef`Vw5K`q#;r<%4X>Tq~e#7p{|5k z@}MP8KsDXiz*wddm!&L#!*L2AS4Sd4TEk%^Z;ip(Wm=!o!DA_QlGc#KrZA4mTC+K& z2@EMqB16iO$dJZJ#V9M)jgg99N``6-9kC>ZN^?>%W+yU4SBH_j-Unxwm1w;gD@nzc zmS91ppmgT!vQX5Omd`DlJ!kI4WphKJ*(If5l$DTMT2eBnyd2o<+2x85s>?7l+!{QU zx4-~sYdiMJZs~H*rDO)$W|nTOAHDv&zhF5{EywV0416Ef>Z}kv9QOZMH13+pExuH9 z_A?Ef!LeM)y&dYiPtt2^c~Buk+SS&sTe^Oo!J?2~z|c`1mWiyBc;UU81fSJIU|el& z3++JEx8OxGUA(;IB1e|!)LJ%{?Hq?Cuox$E9c4MCBeJOzcH=A8RYs%mz!f@E75sjX z@*1&$K~B zPSLLg`mwBFo2pPTYHJ(tjKl-fwTrL6Al8iOekv7pU`YKMHn|1H>osKLb%NI(@6WFNWb}8zQ?V+q$#LK&0%biFQ&`TxC`aMs7q3Lz1Xm$90yIfc^7Hu`cEpae&a?M1X2AjM!(+kb;>c4YF?R3 zk`5-7$GRgszPz6*(uw#khHh24hEJov$fc50UI$EW!3Il$yvJwj^!*xG*H=m)3gYD9 z+mMz>Eyn_gOOSWd9G$RF(qFhJDo8>}<+0b0A79=KY?z{}Q2&XatVG7^7skdvI-}q3mTTPgA1AK?&lmL# zU3ieWv3W})#)BoUxK@+Ms}N%T3K{ROaz3t$lPA}Q3<>f2?G<_V%iy^l^5}L!o{SMO z@}`2PFKB&16$`!x@pmH3$n3WZ*Q>p1)@f`2ya)F@KE{|a7JJvYe@)##xtGe^8xS0} zn}L|TbeP`^b!zjCZ5=mQ&WBM(P>Oh!G>5eghO;)dZBtPhF9e@V-ijqFxF0T6eo7YD z%B7H_%?Kby3O@DbqH?NyqLvd}`J^bn`W8c?rIN?|)Ym@lcp)Hhna4F&~UbZ^YrCLx&OO;wW0et9%cgT;qS}jhoXRdgD&}?l-?>{Wv&&_v({g&%Tp6)}tR!v+jP@JF#rQ zJ7ym;y5|+IweL?p>(O(po}XChO*l~2>a*>NH|${j#L4~j6Fs?GCN9sfpO{`$H_?9H zTJvmXPq^RH@M){JZlaanJdrZ2bc8E5POQ6W&Oy6>%EZY<^%H-U*&p7Ba3#W%$twy? z{H4cwdGh$s#GgTjr#$Dp_`n-)t{Y=pkM;t8!8>|i$gX(O%AY(jwA4Bn^jkmfee=z) z_IfHl8uYLG;G_xG%P(YFWn)U;f1g|blh7ZhI6WGK{^{^I=iu%NyWrE;X9Pc3`TmL- z1w~UPTEWQ^gXz}YIOyoplY_vEa2{@c!Ni`MrX9qAw0B=(k9l$NU*25DvRih=Yf=ZV zv25<}tH|qhuT_TcAIkQ=e*0H2^z_X|eBiI4|Me}x(Hzfu&sFuxbot;J`hfSGeb0LH z6|Womo(Em=h|qVj*Sfpsrkf91sH^1x>+XRZ>y6`?)@uU+>kZ`fnof7_zURDSRazXe zaQ8Kt*4?*zwa&@p4|wxb+yT@n%Yb2wN80rTp%2SP8p}f2Pu*$%_>G&Fq0cNu-&uk_ zv>1J9(L<-(Dj#~G;9q%-_UPj%Q&7akK zAM0zdzVIj1AN#@b|Iz(m4(c_wADpA=zRrU_jkX=|s$*SLAK|t4Eb5-^aE;e`G#`C| z{o!2X`Dc%HcT-0G2d(#1%wRtaB5e?DejNRQ@=e<3q@UrWHpM%YgvY*eyLa4+cj7u@ zdCrB7mjK6EAKc>M(na^#Ub)s@@D}a6WU}?;7hbvbk)peMe{pkm@cX#7KDy8!{9Yc? z-2)wQuk6c5->v&r?ZNu@RUGs{*E_uhpT=IvyM4IM>Vlz(@5XhfuQikbsBCfC+HD{h5V;B!HXvVM=FSHu@B4o`bF{lB%oUQfq)S8~e)hW8SG~-QBYe?D13t_<~(&Dl) zCQ*|_avLg(5xBL!V>{Lus9sr!FB+p6cV0WSrF%nc?6&5{P%E}U6iw6m+^oUomRe&E zBovM>rH-O9p!LO;NKIFyea)s#cq@g-q!+~(WV$YzTkB~HGL#`Rw|*rXARu|I6>r;) z1ge(#m#k!ir43yaO3?Mf(9}&*8)qeQMkSU^gmf#Ml>l~Umk3w!659IA`sLY`CRHDEsd$!xQ}i^KV0B^Os^tb8Wq?y( ziRDGeae65FS6W%$80s4PzSNXTGKR;vxp0OEv^ZLjbh5El?*?o1*6)W5}v0}`nyUeV| z+FZZ#|4*~;Lv{-1`cHf*=&%Oc3>hCuzfW|iaj4#k=p1;E*T0X>Ux)f7^_FV^@=2^iWGv{~%`M)xt{+-V&mBuj+2;YQ}+o zkq))cqL;{4Y*A-`b-GBEotQN?@KC@to76a{R-guppjR4H3?A!+*TbDnZQU)6Ya_g? za79jMc2#p%lak1t%9iUxF-Hs6o0hjN%gfn|$xc;#+p@fKG-a~tnVI@<#pwId=<$WF zm%;yl=XF~Dn3m-)y4Flrhn(|Z5x4^*QB4z1aUEj$eS;c4hZ)&A6D9EO-(>`PNHxwV z`k+Rtxj3x{Ks;sRg@k#`Ff+ibB3R{x!SqJhkH*s6noXL}i7hc3OYm1;Vr}WhmtlCX z;k@S1x0+5PDvqx0VrwyS=N6>RyeBbCd`8w--_aPWOQ+?;GYpeqr)orbnp|D8s=KRx zBbWTuPDUtPN`*_Uu8!`=>Y2kWIKr zlSngV5ekmWm(T$xPOfFb{X(;OgjlTGE9k=lA-d9p`=hi92|D1ogiHn6JnbvioiwOZ zMP`GeVOXXfmPmbguusW^dGa2e&GW@#omu!Sagy~_#>TLm#Ze;$1zQv!r%=+n;v{Sx zGY9XSbn?ozOxW}b+qxlMwCNYSox(e2#p}E}GP?F531TOQa_sFs9b6(1q#g+#h?2~4 zHYcMb>>5!H=cFo!gys;NP?V&3(SM`oE=SMHd88vT{G@Yl1unlrG7YV^W!;jCkdk@Y5nG*_E?bc;lsT z?1Uy<=oC2N%Hc_xbUewAj#rKen`Bf$F;d zl&eEKM2%gJiix${E4`45cbZcYzp7|!ELvF)EczB1HL3nVRF*Acjy7|{ zZsgfQ@?-c5dIH`blH`4kB=4*E_jogL|M7Y!eh;XMEm7%z$){6?_aiDih^_5eP9y8aZW-G*O=ZH5Zb> z^So+;;3(7I88648=b+oVxC>*^2B7a`T4kap1HHNg8HbS1XVHDMiSmqRfbK$pw2AVJ6F{k_Hc_6z1KV8aY=i3Rx*`_c3iM{C z)h5a_Pa?+yqf2rFpT*G3%Bx1UH2FCiCd$)40fbdQ8YarqKW`A2D9`vV5NbGDnJCYo zEpuu(T3Nf!=s=JvjaDYgGx}oDFB^0YTQKAMKv}V)m5K6J-J}M!gOq6GQB^Eslltm0E6Xh8{k40aOMZJiq z@>C|uGsYNHnJCXFGpLv-9|diL{@J-1=OI92OMcZr)`+hmJPEYyClJV)ijeK&5$`Jz zN~`d%0r1$_$3V$_Kbg6{|3>(02nHX|rZx7Fk0ET0qFfI&L~UwW**sWrv>h7tJUCUF zGwQz)UZujpQP_+t;jB?M1g%r_+)?capH|^~E6@K&#Pa*HuLfa^eGU)NI_C!bS=sE= zzO4vmBEGNT+vnY@RJ~C(Vlt!e;JJS%=7t_qIk4tp8tD; z(VlrervZvbd*=CGsHZU4qRz|5u5gVhd*;4Jpvu1^dgh31UM-opEn2~>anXxlHVEu~ zS+HlGPE&d8#aXatp56jvCc14FY(l5s41^soi}uWYrx0g8DA}QL1i9Jc^D6;4B4*Q` zdH$6KQ})b#MPOVC(ui05YXE#fr56u_%N(7337DBQ%ooh*%ne))3=*u&e^Qj(sHR^8 zf%lLc+B5gj0N)0vG3o)|dlB4%;K;4MyAiw{!Q7?UpFl9@g9zK%4mmM}rs~vn*P~@gT5>W2#t0cEJyTl9}UcM)dz;Fx&qd0H4pt zU0-~B@C34ZC~F)3X!AVqQ3O;4-lZtnQR$`vmCbYCL9o9Be{MlG2gLK9z-{KM6=B1H0;iHoFQ-CTTLm+}QS+$6DURk!*WFa6K$*i))9&IGbfgx z$JT}*NI5f+v|IlT^_H4)p;G`nP~S zg(orIuTWkE1qXrh(8ORi?{x*|;;#HtqJ@lHI31r(21n3xaN!aLr>fuv21|J)>eMR4 zqU%@x5bz$zdw>FRD8QO}NEibG3l(#sW*VYdk~u%{U6nTnvI4GV{7|7Bnyjh0!0F7Y zNWpyQ`Vu2tKxq!YLgE#?3w$qCou-QRaiBRwFH|U>-o_K1PSmn4;9tRi8ktL!hE~W_ zy0a|Mx)xpPMOJ=|R6cE3L@WOwuxRC9jvlKjzlQRrybq|V{2EpHuL4z-f1Oh4auj<9 zRqABq0uDQ>EjozmwzxLh0Nttq_CsMhGqo>x3Nlq4Z%`$eS_FOQmI%}h(4v?Zlz?%5 z;3nqTp(?!?dETy2Rp}S>Awt0?L41J32bt=EI?~!PD5=Wbt5oL)Evj-KQs@Dos&c=e z&}V@Di~=4eine-MlqrI;bOk>^7Edt7$C!n~A8+_RlikOaz#@~~Clt!lhgEi;)bgz& zK17T-iGF(kga-ob~?K5wCkDOm`~Wb0giDTi7ZZ9=ynL?#i5*3vS1D{ zb!wJ0Zjoa32y`M!V29A}63B-MIzGT8bMf)3B%WCrh)-h-NirHeime=rVJsRm%;Hdm zij2$t*jjScu6*2lBN%_^I0lh#@MWxG;3mG& zhcxa3Ul7|kbzVe64 zw1}WgeU1g30M8G-880MoGGGDxRQU7Zi{Qz>2(TD_CcLq1Osm7RoJgLOC)1j;v35-B$h3+~i^jBeY%C+w0x~Tr(<(D9B-6Svtuxa) zGA%H(E@^?8)|qL2nO2fBnl31$m1bH+rp0AiNTy|FT3)8*W?FO(+}}Tw)|vStfm81} z@GIc2gKvYs1D?Ytmn5Hn{~`Rd@SMX1P?_W4XTVp$*T8Rr-ww}y{u%g3;5j2X2LB@b zU*JcggYrrC9q=3_jkV;v5#9sO6L7x=|DW(~Ysn>OxW({%a%+aa1^y%O_<~AVOXda7 zzQ&v1Ie>7S1CYcC0oH)%_&7}xpT{K@=NTk%=nxVgJ4oW}Oh|lKA&E~fB8$({B=PB5 zNPOxiiIV|I$Y*qt_{=XPE^3g(XI~-lNsA;7Ng~TDdT~l2B-R^aabh3|xiUf$7fTA^ z;rJj+5^psUi)%0>ad4Mdd|D%kBd5gTBN|D3UXvVowA{`Byox+ zBtFfO#7A36$SDd*d~B2)IhP?xO>Y3<_@GP@pPwZb=L95if*`Uu5hUpw5FoMCauWr> z3yCu!6u|0%M?_Avgu|&K({ti1Bu*3+GMBp;nd@I7l2;>1T+0y> zpUO$%l87YaV>wBDQkPsBA(|vkIVBcnxh4o(PZ$t`$x3L z8*f<`W4^gUqqcN0c)M-s;=bhA(#42xj1XvBuN*{m$jEUl>*D5RXhZHs!)IBD?lQ!S z+my=?FR-W~Ufey5Tx^PM#Q{>AaLhK8fCR@7FK)FlhIoNT4e{bG^j9&&%Mw<}G3`2k zv!@>zGKn+G3(7Ff^17;SuA3(_oVKGH-hDVgICC{WIU=Us2`1 z87a5lL236x?);Vho6@}7nP8>={4{UI9sa3lFm+p-=FNcx;q+?1-`jeJcWiK>_r^Q? z>A^4gKWOjpr}y}8@)YL!mm?8O0)HU*jywIi-p6l$+;4ji(^9T7CH%izwDW_PXjLyt z`-8vCo4e9K!aE)6crUxdzsZ{qCH$z%^fXW5IRB*E{4;m>KWA3~UzryCqW`_NcRMPD zg-*x2>N{?KPq5NI0#Wbu7kE)Sg_rqfRr%*!=Dz_k%J1+uuk>HD(%**)d#?>k!k@H3 z9sx;V|7UIQjmWE+l30rn7OX&Jd`4BquTUADB0P>+73g#;FsaM~ybO@9Yc7QyQSQY z${sIZm=hCRDOFsk0t|EB$ox)Y93ngdi09fWE@%OUx%x-?en3n_s~*-cyi4f!0AkUk zs!zjkFCd1HDz5YZhPwcnz8w(bOjV19VQzXNy%7*aS9W#*m7QIvRK*o2!0_`JE|((S z0YE%wS3Rm>csJk@(CYwMujPQO*Xe-EQLjZBZU_OgUTI&GkShYr*9VA4@hUtp6NX>H zSWS9AAQp#|JzK!=exdIH%m972hT&a+tjC=ihVKDn`nv!z8dmjc814aNeQ+g?_0a^# zc#VLpk2(#NJzUb)1804#(=c2O$ok+SG3$dHJz4G^K-SATKop^>TEj5+hLR7U?5uJX zDTEb6v>ok2(}bC}y9o%MvgbJsumbWI0hRz30fq$UBJ~BpEx}J9-TA-=02%)X;8ehV z!S@3e0^cooA7BCS9>LoIrvR@Lyc%#a@Cw080I^z?9TGeja6E7TmETUli-4~O#Oj!` z$4Q*&5GfnFa|KJK$10Yx(}}L6%1=7WKOJy6U^(DCz{P+}{|-Q=r(MwyU>P9uC!gsm z00EReTSD3y{bzI@R88800%^~R_89uYWCV2QxzGIac32>hnN#|3^| z;D-cm6WA{BDuHVRK7mfk{CSWRAIo9O&Jt&+Y<+MoAp#{Vb5x%9-rqC)EPb@mq* zem(i{?-TuLvyI!1%vr#^-?{NI5})h3blk>4yNTwk-vZFwcpmyX@%@s22lYqWo3nh6 zN&Hj7KaYHb&Dp#^WchHTHD~KmPuj^dXXC2P2RW8y&bH+yl^KXuezcCK~LL9y?P9Dz9i;?&9 zI6mK?x$~PG7ynan_?P11Coz3yrhIaMyfIl;SgUOe@vwWh9kwAS8j^)h9W`J#+;qsV z^32nwHqJJ5zLGYYag2?&q0?(~8}T|PPS}#ved^hrRU6sX?ijGrhSD5UVS}0l;|HN# zO&x9Bo0~9$c71?lJ{eNBw~V?89~7xGrR%%9a0;g~o3%EAkCM0GaFA|%Kzf!Iv^I4_ zcpUth+0laeEp;$mGQ$DJx2Cd1cP}F=(5;1OLE=kx!7f_CHGJ&YG+3g+%RtsCO1yWMQn0cYfF^ev5WK{*#k3IAiC- z;C$4hhdEy5hHK~J7Kv}{eDp1p$8?|7BP@|OxSa|kCsUpYr^~aHk%32m7zeupgW9R+ z6*(bEH4h6uc+9hoL%(=gi~@Pa1cXX~bIW7whU^u2^2lqg7kQ^3&;9J85-WM?o|DoJ z#D0-iEeYyGo`q*VlZTN-XzYg23{f(>CR|9NGimpWyb8z@{W$G*oXAUQ*CZ(NE|3%l zAkXdM>(JMyAs5=-WWPJ76!Ya=K{{i*UMv-1&*lXn2}s9#UY_8r{L zN3O^-eYZbOKclCCL)rNl87J=>L&{UvM{{fa=14L-AEV;R`^`joas6d*J0Igj-uGo( z`Cg*Dm?jy@&d0BD=ri5b8dx9aq%qbdm6yuS$2;vwtzQy5A0HKYg(76pFy*DP^YJy2cav29reVs%@kvSTe3VSniW&U|u<#n^ z;>tU?osab*FC;>Ov-SA0KRUj|$s63x$2O4{ku{_u$fG-uLLR%PzMypib}!=nh|f!d znG+rZPSH&j_}s>;pEat1)A8Abo>d%zPlrEKHv2KYQB+9nOEZEmD zaf5cxW4B*lG|!xye-dZpBTZf&Y!4V3ZAUz{*n&-nO4x+>=H7m9?a$gfA`Q)*&?DqJ z)q6oG<}i00sKfKwqQ|7f@mnIB%o%Pe<8<)g899F?Wh88^8b*|=VPpqMYloBL#ik-DO1-p3ij&S&d6H_1 zGrKo$q?A&gbw8+-l(px`C>xH9!PS^Gq=>;P)6t}SNHHzR`iql(_K@k5cU>cZ?b8)$ zZC{}NdH6Y+$!V-s7&stdI>@s&Oe0;DyS08BOck`Y8@elXsY|PU-IY3p=A}Bd*2$$g=|iV3)2X#iuGFNvlb0*ibpchi zm7j^~vs7wbxhnOnp;IIGt=A6S0a6SS(gWCxs@YRC+@QsecA6CW53|`*x8gXLGHXA{sy_7&U}c*dp_ zoR^a#CE2S-vw_yxW}N(Zd^s|EP%{Rm(f@B*Zuq}uoWb3roPFK1w#|~6Mh(p};h<#w z-o}X#hl)uBeZp}~Yg=1aQ_J=myd94GKlZK$Fs`Cn-`(scn>L%IN!liD+HU_KKuOcI zloq;}^uG|=&;(kMnxx653C$n*DJ>KT1+_k_7DZoG#Db_T_GurY7KCS&%EJfvilU+q zH9*Cp6)PeZE%Lr^=FINhyLUGMeEd8!$=oyN%$YND=g!_cbAP@gISW^8b6kZE5YPZRp+*frB$T7hTc;ug<7eWM(K`*tw}SvIZ_Jf!Ext z)N4DnB|w*oF{`ynJ95CywMb(xVcpv!cuBlbMUvuDPvY zLk~_{y-0UQ@EOgfNE4Dv`#Kt{;cZzTc59P*$gUavz#S##&Z+CQl)r>wrwPMO6FN4m z#9avWWyJqOrwRBq+1^(fc9QV6bCQ4=vG_-{R8ny0V`AgHz?N%7Ee$=Z@Ip*?Yg1FC zBMM5t6u|eL-B#>-FKZZvei(+np|=@MIeTWdR=0F^L{`<5cC~2{K0V!(qI-s6=>PE@ zr@-)IUtwBjMq%jfvpYD}Z0%jAS7tqtwq~oYvAxN{`+0i01QDi7_@SFnCJDe78`1mtRh{Fg5f%J@24}T?kEb?# zc!-Ww>+2YH>L$oMItwXt)V+6rS;{QWjLbCino-&XkoY)?{10Ih@GZ?v=Nn)^Aj=nYQ8))!oeZ6H{WZEkQgw#8QF8BqERlIfF1-T{)~%l7;`=o3Y0x#>%gN024| zgOn8dbJO{5ICuJk=+%&zUoSZALffvrGeTH0RSu@H>snb6YZcKvi+zjb>a8 zrUVVm1m0-i2pINdrotNyG$L7vzRXm3qk--5>}SDp7c&*!Xy7aH?1S;_6JS-H3U4&< zTf-{6(Le?&QMnp#H1kJjE#ZCw6(gsCcs;&ff#kjy8&7WLA3;9EmII>LCP#XgkQ5Zfq#!&uTEac@b=R(m|KxbwtznV0$){c0v#=97j?d%q_ef^j3(23PSX2 zhEout_Zv<@i1L#yrKuo9zi&7NA^L>jfKFLZNYEaosUSo%dA`~QQC85$!Qv;nULZIw zHm(Ud$`KU=glI-N5*(O8K!|4Wv$44tBtbxkX7JlGj+P)HL^EFnN1WW8&^VIZoZ`YU zpgdvaC%E_z(`8<=^Bfkvd^JVTwLwJSqXZRW+@rQA8B0Ok% zA2`)H7b!`0V&^D$(9F+4uNNv~r}}sm9se}ayin)j?*A7Mi#_RgKxM*6%%mtU0Hu85 zmqb8j(wFVbS8R+m{%+w+L0HV>$+_4w;x~$TXusIw`?Df`otMtM3HM0ZL!hc2BOrq^ zSqssk@$bgOiA`$+Wk#_lxCSgnskZD@T7MC(SE5?}YoHZ^Ar;K5!_$5M;t%6xNY58N zJVARVGykg){1_RY$ry3g-Qa#s&hnL`_cMQu^gS#x!}nVxN8Hb}Wx$wVM7@y;p$aI0 z+;oM3M*;cy@7uNYtFLZ4{W~Q)_ALg_FRhyp?^Kq69|yAxcOX*VOsG{u!JB+jr>+A- z1$hjnPNw&4{r=}?fO2v{xm#K4Im;5W&)DZno_rInfQks*M>}31WwcE>hPrx#p1Xh} zsqFHDyoQOyq!D)!o5l=-t9g%Gy_TI}~pS+eheZ=`A1|V_y zh~-DDK4S3^&ySdZ#QY=HA94DKDR|=kOMgoYKw=CMJr$f5ZnQmLTy5 zi62OuKw=OQqtIXw5`U1mg2W{x{vdG*efQq+6Ji1qH;_1n#33}efy4}a5gn3&J|Bm8 zCSnC*4PrB5KjOy`zlcb*IJ!3Z72?Z?`RK$`5a%OSA=V*s`tUx)U5H;s{13#(5RV}K z1#yHAzaPXh#6^ggAhseB$>F1jyr6s?@gYQhMf^OX2dB;Ph^2@;rPm^EK;-$A$C4*p z9xDW1)G6W>UPL@cQ^Yfyyh6;`0Y#iJOan#Wxt$_j07Q$IMv8d76%j8L*l~5afru9o zsfF`UDs%QLBA(kR;%rpP^TbXO&-WtYd6Obe8AZe^97Vj`i7j5SSuwBP$mN7UlzAm) z4ljBT@fs~1InP6|bt*BFX;=@AhpOce1tA|ka0foMCTh zBMyU3Lly$3V$|Z)PHb^KN6}tH(c%=0B2LJ}JXcl}aj7LD&W9-CG)ZjnY70g6IRtXK zY>*sI5UI==rieH@rHJ#wX`l$alvBiIk7)5)P7yEfqQ$i{>rBAyduKqtsW;uTiCIiWp4;OZy1SC-C%U<%{K)AuCJ$i zW@|@dTVGRT<}j$>{{v7#VjjL7ar>e#AP{)de8k$$bG5-{C~e^-#)WdWM6S&k0NkXa(qGV1+Hv zbRAc4r$CN89?U9U`9Z@WP}EYzRS;;HD=e&JL4U^))W`l6HpeV{Ij47<96vota zP}-jYO8ZkmL!dYi3S)}-IFc4*syyma6yFFbin&GhcI4yJ(d>TE9MF1D?3cpALYov8 z7BJov<`wgi&2NmdZ-rs#rGHZBd5~jVCSXBPpL#@fCiQxA3%uUqkS}dP#o`R_v=S;H zEalEY!30ig?L3jzxijWFT4J*iQ^v*`e}_EkGT-5H z-|c)U+mHHAm-cXlNDLnHoo$5WZF~o^Sbmr2pGtikaPu84(ddcEW4?ps3Y3^U<~!D7 z?4xE#$TU@%? zoS2gr;S~;V+&S=bq!n>*8yR#QDWR}$UN_*)pinn%Xc-tR3J>M~0@NnuLwgMm!>s{t zVcI~aFg?qlqbSDUnJ8wqfE2a&Y^aHJG}RDwL4%73#E3x}QQCu|im){y23D2d=Pq7PyzOEin5Na#AJYi*N6{d>~!E9%CHaTPJ5tjdl(EKB*X~@ zLcQ8rRtP(WQ>0Z}jf=F%>|`)}kbbcz#OfD&H^QE?ZL}-+5lQhu=nskk#Z}lT_HKp% zm(_$|@Hdj-gA9m0Q+7b?Jq~+vh(tr1w&7b4ego~TU9y(9>m?i&?d?+dDD2sTbDvH7 zlHr4NVUopAqKVaoTjM+)PojOe%rd&QuN5D&suE5-k6mI)v`!6RUcbBx1zXUNXFq`B;=O zx~Xu9;s~&C!+~$9Rz`xU0Qncq6s5Z7o5v_FeHjIETH|cq37J zG608akE4b)JMl(pW&ajSvuZ0O5hKal=Ylt~OYBXP^1Fs;FB#s*ePZu!o;(rmt5C$g zacy5RypgVRbWzj3uBCQUD($eB8gFEm*sB*ayI_y!muagtMbcp}HQvYxvG+$#R1i)` z`xd~S9P&7O{5k2LrY=w_{9@?0AWdbS>-T|Q0lHuf?sY(wOU!CS211%JayoS$BJ*Br z;9Q759o9FDH!_Sjq8$w>yp?6$4P7m*jXi2er5Go%XEe}!Y0dq>{{Y^|)!x0Y+%P!i z2!3-rae}*PAkDhzNSgP~U#F$r2{Q_VBLR(?+W@c$PXb0C_;^mYk%1s(k8tV9Ux~KhfZr#AHoTnaN9vdvXJDPZnaoEBC&% z<^hF$^4!$>+wJ}ECt#-7+h)=Ym$#gpVr`aoSG*jkSU-{NZ@j!Ey06>^Yr-C^Tr9pn zD*M-R(rYg#W!P4uZ`$?qwH7hDt*40#ASY5TG2ABo&&kY$!lIFI~hF+i%n9p2R zH8=M}dR_DNw=YKFH6g{UhZC3BSLHqLakhyV4sq}&_-eaab{XxB?L8VA4@rYu_bw>i zyyaZA|LuKky{-7_GSUs*GE@|4EDy0kHN6p_cPO?8A4j%DDA2nHP09h)5#KK}bWhoP z0@xn-bR$&4u5Q&ew1yTW^g7yd#u=vp*d?wxC9R<|LnS57?tpOCX`z{+^3!15G!?eh z!77PaI4yK~$k}vVz~0%dL^?^@Nue{MHJlr|2A{*5k&zOtMh~yH&MUi8j4?ArG{TVT z=!D~k1Au20=zhT=iXI*N9yt34!^O0+9gmRu0K}okaZ_tgZ$n38WF}_b1d{wTeuRV_C zx4i&Ma#}HM;`jWEhE~#D z*II2E;a-yMEQ}GB#$=b+E1wb4LrrxZhqTdhIf@3gA%6GNo|T=2q9p)zz^}(xaP~P` z7+7=gmA#|R^7G#6-g@)TTMl$8&dg>yrWtCA zf~mP>&QUJYqLg{HO*2-`xTG#sajZaX;UT$CW<*=!?vCLFZb$wu$IUHgK5=*7%n-%X zYVGdnt?31dxZQt@4OgorOC%<@Hh2#2-SU3&KPrS^D3v|t;r>q2Fw}hB zlSUUMgnmfahx6Pr6SR{H3?AF2@;St1Yl4p%LW9JII)RT3sIZMTU^uxGxGA!tqnW4nE%CW4BO7p= zCs{7fxT;hnzSIf=u|=8`>ey0(m0j4-v(f6qUA)=lz#r@D=xN>15ozMxt)%B9bJUi} zeIgDj2b5bXf7emFqU0#*V245BhC$)PIlR@=dQ}APm)DS7+1k|G0!GaWtftPs^=%QW zMcuI^WEJn0uj=BXgC4`;rE!jPtGyL>H-SaS2W$Ezc0mE`!Mo}g_VqTvQe}5{!xr=E zy48qZXRm<@)VA^aY6TXcWxv0y+SS<5*b-^Fuwip+dtbXAyh@IFOJh{7B%K;03qNl> z%1{#c!P8KMJ!={|dN1tk=xl_4zxK%DhTaCNkBuG%h3heM${tJRe-`?&x2C0`32=_h zn9rJIYa3n&G*441&2uG;0uF*^m5bSE{9~1vnpRN9MzqW%aeYJM#tm@0*wLi!+^)uH zds&sbb8hLaLtz=5B6e5~AwHAtEB-*sY^PVVn~x#V;`Jbb@b}fq8cV@%$ZB3 z=?+ZQdn2nOJ-}X4cmEYGrENsVK9In$wlV7MpG6H_?1!32J07p%;~B22x*B>LTk4|U zQQ+dBXUBR>+kZV;t{aGkb51V0B9kXtvCg%ZNO278YHmkjko9mEXls@F zjd1s(_1G=g_A{DqFFZ&CtU6P5Trbtdip9x$Z9N=Y0$P0Dx4HpOwR%=`RJYm| zJs5E63!hcZ>JuH+yi^K$|C9#z38!j}D~q29E+3q-=*kE{tt_gaR-H>L-aZRU+glC8 z;E5^F0j*VCk&b0}=5M{#-wKfdHD; zd>V=Eh;}H;XTf_iHI(HsmEMc(-w^?2nTdg&5%7)&(e+QyOxw;|sR$b2ayhaHaJh~@ zf#4O`dV=r6)*JjZwrRor*!qJ1iLF0)6x;ORNbEWQF6V;rOhlRhm#2ezf?;gE!FN*@ zyb{|$@DteP2LBCP09;n0#9<@>aLKP`32@1;Yv*~!1L5+M$OK|p#_!R$U%@k$@tJ@; z%*4@CjGtg=fmw!4SL~(2dJck3vvU3pVIQ($p^E+Fk``N zH%uXzJHfE)$Bjn=z7A$J-V`6FVKIMZ6g4bnP7&^2=Xwax`7r8c^M8bQp4sA}kuY`C z#sppka}amJi}b!s#gEFyE{|tB;@MAteVAqSj^7o}9*$@K5YOgFn~O43r%jJzE&qAg zg@Hos0Y9{cM&KpXGaGwQsN2bJk@N@nR5ZE+8dP)# za@Z9DD#|)1qIV3aXd`+i4pfwQU#v@kivFu%04kdMO)yQ&0jMZ(IJ=kzsAz5mI&~Kr zfQk+vt%?&=^eC9S(4Pua^de}mF9lTeFxZF5YEaQX$Fn0)in}PFqT}P)+41ZWu&PcC zD!Rt78dS8`umUQ&4mIsS^8qS)69_;>TOk=m6i|SQUXAn#Ca3%Qk<9xW(pLV{*nAu; zMw6vMMTvS^;0fiQf?fQD&dHyF^e`81a1v8pSIMfTFk0K}Cx`4UVv63RJXc zH#j1K38?5QBrk;sprV%|*^DGWMTrCoP|-F>-p|arnQZ&VkOZix59dgpaRDmI(qE)P z*vDVZIM27iCRo zQTCrk-UI?rQMT(FNCH&!Ff#oFz*V54PlMxd^8ZFjY#^Y2fPj|;4Jw+2AMEGQRDg<( zMRGrq02Q5rHl3dbC{WQ?kx-rUA4*~a6*ZlsK}Ao)nd~X32&icBmAFoCL;M2b zIruzzf+xKcDie1jP5E9>$|o(rM34e9p$a>*$i`U3D}*xzVKK7_7AJT{T%m}E_9u9J z*D2!HdFjlXxKhf#8&uU}1Y}Sq>k()bKQCG*L~DX4_>{6Gmc2@A2d2Vo@5ew{e1gZH zfs5~C7*avc4lxGW7eYJ*^DfVKJv>2srZE3!5c~!io+%h{)-S;wBWF!D&2zqGv#)0(X!LN2ky^Gkv{-yx-nsq6i9##Lo2CtXeS)3o;058QXg{@X8k{=KI@__b|c9(&dA+WVoi6LB}< ze#C=_hY<%5k0Ww7Sl69w48oTX$(NBqSSb0EBwrl?$PK?u^6Mm@b5FZH)#K1N`J6^G ze?KCF9g~l8xBb6-=WU~BAdfR$_5tgrJ=12p4P+-3{(r0TmHw&yKoEUCK$B z$9~4BRp0aFfnt%Pa1Qt_G|^S57ZN%dl%sMQ;&j9kMCP9XT8cOmkqD?nUM0FI5mbq& zN|aQhpAsRJXs8AumB^|@NhPW(5n73oN<>y7tNyG1SB*qRC3-87SBbJpG*zOr60wyC ztwdoZax2kSiR}8j%QBxKsw)v%iTq0RRwAvke@C>OI*rJ$25psSutZ!XQY;Z!iT+Ad zSS}03BbFjoBGw{qK)ed^!-%^PzlKOCNUl(bb@M7>9y)V6;ylC)5D9gD1>%i}oQ&Ox zct7G{#Agr*i%PWfV#K+KD-atIHz9ry@fO6dB7PU~NyI-OdU3EuBNAZrT*Q@#4T!yn zA3(efQT+^Y9C(@#@JP;tIQ06F&BKepNd-lmm5A1}U@6*;C?cMqDdMzKL_Doi#Pht^ z;;e!q&M`#9xerC05=lYMR4C%iM?_rbQN$~)5rL(s8c}RDO6%)kKt!AeQHv8CDab=X z5!a8?KoNL3r-)}T(c)5Ws#p@bHoL-9-FJ=_+$|f~(5l0b6hln@>q=<7bvBg;_ zMVzRLh}U$Ac!8IKoTyR63#`=0868EOtac+p3Y$&*D!i*eVa73BYB`R~u1raAwQW=+lw9Iv^h&Yp>h!Y$s&v_C> zoHU6Rr%@Df@*!HBWKqOE%lU&DB#9IO);!=?!E>cCr z`3pr{>xnH+U?}38Mk?kUnIcZSMT>V+DC$HMTb%7t#Oa@iIBlhfGh`{qi8FVCb5w{p zr50sQ1*y!%t0<>Bue;&3@|usGLlyCXa)z4`Jpde6jBR5s@VJyQuzhji_h`S@x{{qW zjQ9Hb9ZJQXy2YM44CB4NZvR{^&v0VBIgIzZq{eNOy(#@tv!w@4r)O5RuJ6XTsWa6p z9#?jDZ|s@LV`e_Rf15V%?Tq*8cm#*{cyVSo(1E4Hkgw`>kA;2B&5>^O24=YC4O9L8 z5M=1D*9-X?_m-)c5}emmZ>h#>Ccf$#pYJ@vs>N6dM6bzd-%+5kfA-JvRuuWm(qHiV z14sO&+x)ZAF93VK-~R%+5$RQduso`)_!!!-40fIXT@HE} zly(n+Vun<8P}A^zBHs^+2};#IO~ZG9vR%714etVF`5Qr5Z@;GD%_46D#SE;fMbmH- zs2_a2rr}ypwx25xwtq3`QrMdV>VsaHreUtrF$b$E(KI{_6bG*=q-nSi6f?dmuD?OU zv^N&_6)Qj&fznPcXh?XZE!-BuJtUoveP?}&M?Klg!G}PxuNK;*%2$H2{)M2(v#@Sg zn7zzr`SUA<)yo9|XldWbYUG9?%l-yFqchvUh^w z)=Ktv&{IJBL8pUm2F(QR0!3eEw}7(!^`K~i!Wy0mS`B_ODE39Q6NLCe*P1{?6d$RmbwRdMS+{20hr z2v4jl>Tl*vAO!koVSc^j&zJmu$zRC&p}$@DJyO3}i_l{h^LI-A6_U^M4a1L^j~|Y? z=|~7fJHJ!vH|@QUJZ$t!d-7R7%AW!mLoV~tMuYvxdWdQKge<>)$o4~LK+1oFJZu;& z#&g*|8^1>O*YsZx?W4YL=ji%QNcpQrX?`4e3{-=ixJmLqDEVID?-2g4w1@f*3I7c1 z#~3tNi6svHT<$OS$6y~mDEnu4-a4SYr^Mc$$YJ#dqw3!yh8dK z$~f`4owc~{rn^=QRy&3x?$k^U)SW~#W;70~+o@eA(AXMGTR~Mj5X~JWN{9M=t?q$A zjOn-fQ@s9Y-kx{0CQF89{q=`@jo_*ozc8?WOJF`?s7w5qkuQ#4f=>k^oAqZV22DIs zQ#S;QXxj(YMq4`g{}_8*A4kFK#;>)muY!CcJ;Q+x?^Kc&%t7hIu~zCplXn)Ds%N8cDTZh15b);3gzJvZDtB*% zL8+Irj?rCOK1+4-tfct$%uwyqie+Hc8PajA%FDE!Xuf+R%Qz8u&G`58X3d=wVu<12 z*W!Fv)6&{3--(rW(y#~L+!upjd-F|Bw^%i;p?v-NpTq)vM! zQkY&f86JW?dth7bVK6*>zQ)MVueMl&VUA1FkJspTCPW-1gW>6~WoIK``K7`Mu~$&* zn6pW~;G-wS)2|nM=zbkA$7lPBVb9cIvPcbHeKI`#{f_oki@nQY?UPxwwray~cg52` zAoh3N>s}j?-J2*+!*2hHlcl(qVv9yTl*CL zJuN!z9TaNhW+Jz6=$#=UsrtoJ#s#|SPCxZiO3d`wJ#YyKX14( zn6bMX_IMngyd?Vja2$`+`1}E}XVyb|9PLw;**1gW^JhBj?H$yf8qZ1b`A0bR_s&Fn zj{QxI&z~puu9vm%U5WPM4#{Bn{2!mBJLi7sz}Yiwou!km_LAZAS5MZ37D%b%XAaF? zGJO6WQ+4@GvfnexG=Bu+1^0FtT-%onpWi!67c$%1!zLA_4tot`fCR3o9Jf68cZ?Z!&!T z2gTlh<3!BRT%m}41r{25*v6>}Pb_F7@d#^R{XIFyA`iAlOhw=IU(fItY0=s@-r1dg>7QmIS zc=>3KP7`B)V3Eex$Iw%F{P|fLkKaNb^+$s~CD{84b6)W2#{i4I1=#!bm(M*hkQTU; z<=5M=`=c23qECCq4($??ALD)JLihz>SzQ-x_QB>^Hk*A&3*J5Si1)u9I>yE`X;!%@ z&pOx!+Q3w8=Vb6luTyU^-uz111l303`MF%AMiB+ ze-jw1aXuEjfe(4C{vYxfk(zS#kiT+uC44n}cMtpJ)1PAa*}G<|@XWh3|NVElAjac9 zWITY4E3SNkR(T9aJ|*0JUq>r&i`oV7ySscbzFr4dk;2QU)m7U}X}o)dffMTO>{{B{ z*w<4P*%SeKyfI`~S>M^)+u1&tRx_B<-n;55iR&_e zxjXk9RoFY#t;W(Vs58DIg1N`)aQ69(kW&J`2rd;nhgrF*$${e9-nzNOaS&kN*^ycl z?Flsa8Y^zcEN7D}XM=3GFHx)*jrPjg93V3BwgnV6UYJm!XeG!K8X}4ba{P>A!HEmY zm)h;YnJ>$csERW`ZczuV!SbVq{=o^}u($Bb>}<3enws?U4h_aiP@VWEA2w)NDr=at za~g~bm#WT2g<5rv)j;GmmS460@O?v@5ZCJI5+*+`PH23GiFpeT{&Mv$tf3<5~Bg)f;~! z*Q$%RRhKX(>rxNCfABGXE#_LF+=bYWxE*mP;$}qi6xMOiI=Xlw20;n*7~e?XT4=-@ zG4Kv88$!F&Q?#9H*1$U;pXWJWigpe)>qd;H7AWr;YJntrDR6=}30`o;6f?LJUr3l@ z#d7tJeTvoOUKL;Wj)bbJF1Zl?n7Vs_Vi`KSbT(YPl;CD>$A&Y{E(23Kd)8^z%!_-V zFtcG6zHjK+h;zkE(||ME8!)ZtK6B2@X0t?{S<~4E6w0WI;|KWq@r7fC+#YxT1JQ-e z&KdN>3p<+taBHM1JB>UhQ<6wkq`B8ATTSmqG2zm-)-FETCrVztbh$Wx>6i zLqSXcNHAtvtIV2LX4yc0-ol8U@b#!)2JFnP zsB9SDcNpK-!0-~8aTwoMeRs38vskj@`V|7J*nuoN=wc~hu9+~^qzPSb^aq`I;frRa`rg8+t5*-! zqDyQaj;xL}L!kOhe@UVRv2Q^}oYm7Nj6m-}QN^IWpG}yvXB|9>4LZ;oq+YHwDt;8_yedBi(VxK`< z!{Eci;KL2Qd@|58v$eXVvm>&qrnIX~i(dbS_QT-AcvjNc73rQ?v-pBo&(6onzo%*A z%;cYECkG#Ptim2u{UlYW0 zncSaB0r5O1s&Y|U!k9x4_FMgBZTbp<9ZTQw1nQ7(?bsN6*4{&Vb z@U8z0!L5iI-})$e+xfk1$h`_hbz&Rl!ppmSLkS3CK zDbEwZh1hz6mtgA+Zp1b%cs;hhAm1bR2k*f)J@_QHK(Y>jc>aJ5k*xnlCdjW-y$aRZ z7hH~XAlQs;Ztz-cfnNRV$2Hy zba#tka>0DSFhru>WtcI5Hr@;7Fw1Co<%{s*9+4*VG@i1t=s5@W(*h01Wd)vd729Rl z1&SpwrOFMHwfz5$_O*=i<))v31VkBmsOvj8fs7il+?O#K%)_uXY9yF4lasaF7g!1A z6U@=r)0cpqz)}iM+VVdGYjIG;FF-&A1ywv23B?eq_-rsUnFFZeI?!{OCR8!MS8XH% zsN#A&>`^5MRont*E24rbehdjha0yg#HQK~>2~=@kJo_(Tmos-JcGVl;7tc2KYw_&& zz^XbmRPj#@tD%ZtG^{`s^9vE4cmY*B3ItHab3jHB7!Xj!L@3+LWQLEDysNRX@&~XX zY9JaTP{l3a3Ou3wFM^iq5tF|U={<_DJU71_J+KCmP{kwfh7d@_ zB%?iJcreF2h>hjrG0uDp$wv`08pi^uxbSf#`IWswDlR+;?hJB7DlQy{R3*7}K=>^T zAyq~0y+HW2GK-M>IqjU8ISt8Ykpxol^B_PfCca@hb?0WX>HHKONX5^i5&T5~shFkt zAwQ6cF9Rv^ybIgh{MFdUq);~FZoB}@wiFW{-<({Ec~W}Vne-XPdFb?qe@6&q_Xh%If3yst5d>>fCOODgU zKLwV1F;1VqzZuW|(y+R_{vOW~8TS1wEAaU2vjbzwVkhh(2tJ3p#w-RTb{!aY{g@@_ z$u7eX9{*!t*upX8=y7jg4_F0&sZL*kGhl!%9CMb+T@lY-ZdeVEeDcG&iw`G1E$+M9x*pzvYH6WS4#P>ZUN7N$i@f}9e{|zKd#@c=(2O(hZjV1c_ zBVaDTkRA*4?I%qd=-bbmG|;zSMw(Zfu{i0Vy*^k~tVZ7sg5@b-EKWPf9c@^Rz8x~G zpl|b(xd<|#Z}(!a{*}q>kvy_M-`CTIVavyXTYNKqnV&=aF5()@?f}947<4Ayk2K{Ef>J(-u-Fuk z39Yj;^)|*TZWhiIgvCr^Uju@>KoJk^1A=>s;uJ16DrMfpjZ$_KsH(>Z$e>JCC$x%3 zVnM)`(BBL*CU}B3+AVvP)?U&2YE;WlWaY^)q{0BYlEKr?bH=;yHi_q59!@+wQz*U+ zUpZY2ji?FWxJ?7&2v$-^=HnRE(a>fXs(`wCiyDog z&C1ZJ#=!olp%1_i5p?o$b;qDzt6gnbrHLZN$8pXD(s6drBID^tDo-z>d*`rIooC$joCnmdAPx2%2i zcay$8Zqdh=e&UPY{(kSWPh|aS>&(xlsA+(-zyyePloISeW|l_E9v!KGEWh4&S<*g;+pE1e|cOZ|PizV*HL&$nuo44D)!d z#PvdrVRVxk$3>uSNcB@7=h=EX;wgwFh_rJCXer`M#J2-dJ^R{;RzFmv`el9BJjvh6 zRK&T6D-e0Bu@i9{BK>OZLHrit4-lV1d=W7NojDHiOvDPr8pLMAEr>f1KZkf1;`b1r zK>Quz-w{XQq{6k`d5A=t+lY8A;!TKmAbu0^zYu?c$d%9t9Iy$9Wr&LqFF~Zk9s-Pi z6mc)&eTeE*hvRW6#=LxZ&IK`tCs)V$pa@)CQpDA%XdMAd(RM@;aZ*E(nhAm;a4JL* z=SE_St4oTw))W!fz!Y(5EVj5}rHCtF5%GQwMImfN^aHRIRU?Wm-tJHZK}E#%FhyMG zNay0eG^DIKNAs`%~V!P2aM-fWn7ujGM7nGKWG0G zaZw=Ud7`6;7hlm@D@TIsX%TUSO)bvhr6AYe6mdyD4HSXXa<*kZBATU^FO*vrm)2C~ zI$KP#Srl>lEh5hODN@TXPy|l;DdIXnYT>;Sig*J?+QR#z6m=qsEw1`0;__ZZynR6t z@03VE-auiCw`vh@t%x$0PgGXxNl*mdAf$-*FGb6o&M9WV)j$REZXos$4iRH z${BcNKwzulf|)2M%jemUL9WIL2zooaAcPsY7~ZA7-0w6!R{CT%DB?zCoC)+}yq?8SFaa6|zKW)(e=_J*z&yx0yF zD^+779>h~S3iyYi`(x@JoeZR%=kezOi~mI0RrmVyPx$lF1HFF#Hh=Cm|LAnU@dLuY zFdex4V->Xj0{`f3B27=f-#;F?{_{cp;y(*e{*_3c4`Ba&a00LZ(i?#Le}4Llfj<5L z{r@~c|9=kX{{{Zs^n3jljAS7_R??Igz*0KA2TXzt#x2%P`Pd=JeR(L6_KEAz0JsnE zTYt6@ANaH>FZf4|c)?qSNeSjHoZnxI#pOwK$mN)!p3pRW9F+1Sply&3Xc|5QieFY0 z=SHC6yFoXA=UfUjd7+^Z^?j$`$1XHR!zgb zpsc4$({LLo?X-a64nkFvrr~-}+Tlu?cB(;Xr%KcCVoiihC6^&d>INf zd_?D0aSjdr@FCEvp~t&yTS51LvfM48EXQ{oSPlRaO1=XW6V9sbnuhr;B<{>q^=lg5 z3d-`mpg6=;U7Cj5K(P|2YSA>@1WLWjK(Px|Yc&nmg5s`CRkfz!Dp2Yz2E|RVstQfR z^FZ0|GRdC?iura`NYij3=rzdCm3+Q^g8TYaK25_XFb46=pz1|U!^c5c&rwj^V5mBx zY4{0|KLpD94uJCb+^uPNzvS-&&4PT7rpoUGPAgTr!Gnfx0j2$$L2+WM+No)HhsgUu zv2d%xF(3{1g0j9QP#)KMO~aRg(oU_=D$oG(munhc42p?=RfVSEIiOcTzXTL3%c^Ob zhKoT@2ahpC8twuGd{=fo=#`+=pyz>B2ww)e0DMUJT+r#@L6klz_Fws-SOhu`{AN&= z>jP!|n?OULr-8CO^U-$VMkzb(LYqNbAP3x;YR|c#Yr&rbS`9iMbU7&MQ0+S#6lvv8 zg7uvRp7mkhReiHT3&EFzvR>RxRQ1jT1*`m5P>w!V@*a_QgYLxOtOxA}T?5($x)PM< zgG$hPQ1p5Ba?m=^3efk0@^`)tl)rBrv+NSk_ke~#F9j_GeK#n7*Vwo06Bw5@pvOTk z0X+(eKFEGTITn~a`Y-S%2`F_xO;P-$Qf$kRhE>Ir#ouFeu zw}UPR?FZ$4ZwAGk3*`@l_FKSn{M3WuK8G4lOF^r_&j2k1tpo)jrdjsXpjum}j~DuE zmgavcbg$6cgtiH75;|4rc%eVXNdR4w{zIWR3H_kZ8le{m9Vs+T=))s)`3HpJx5@oT zF9D_9kfC76b3-~H@`FNm3+)$LFSJ5vNGOOZ|Je*pJ>H7t9yl6#!t3!K^&ZEzKW%%O z*IQWZ^-e4CdMg%tz00e#Ba^ND@LjUgb92<2$=#jx z_i?13@IHy{QSUKq>BR*8P||Kh1>4hhV7n{r7Hn_yZue$*_jvZf!a&*)NRFi)$M!_p zN#^>t`%tg%W^8Zq?Z$SWZ@(|Yd$;cZ(g%HquzkdL7~3a(1CSr_9Yy-M??r4+`uhD| z?+*V?e}?yF|1P9=`|rSZzyEG*5Bd*bJK#Tp?Fm1Ie_^Ei&o4+;OMFW%k)@|pN;A~Jl1Jjxstp6{A4pLenurqCYJ^}=rirT#<0 zj|u4f7U55&Jw$^k{5&oWEZ-&h-(&kx{;=>Hq`u9RAz|9+`&zm)%rGe7V@$ zCHyhkL*IL0he7!{Lf)4p|JSsKeEJJw*g|{Y`En~mfbB;-F8lvJ_NR@nXL%eCgK_*5 zIX;FjW_zF?fL(@LXdhP}gJIlBdp5ou?IOP)Wf*?M_JjYH@MlQ>9Fq2bp8bRT2PA(3 zDEo&XaSV@0e+>wqEBqgYKV90pR@zt3_94$J`@4_rhy91eK3}t9eo*pjk!JpLl7FwX z_iw`INqZ-V{=cxjC^JL&mD1kxgntQbW`97AP49O3U2emC2T{BH^WFm%|SLfM~_w3h=RWDFOO&&BZ- zp6|P5V*z6@n_r?mEOZR!@@3?)z%-b!To>h_F7x}QZ{tbW$0O1oeDq2FsPK15{($gY z7v><}{5~=FRr<#y|C8XE|D^ESq`vKF2LoTO&as_u4wARE{|Dr4`?n7D!9+B0eQW2h zK#rYf+Rk6+(8ruEF8?p6&#r&O!Sji!J^yhWZ#&N?)pq_1j{4R(^7-7+t}m{Fv_Fz* zbt`Ksi7V#fKq%_X$lXUw{CBgZiC?sdI|xU8w%b!0G(dgqElLjmH_rQNz43L%oD(Jb zF>(}*siyE_Gyiteg}b8d#;MCVGu;%YrSRRmBgq{tIXa-!i3aE9oGGD<^D{$BI|l0M z#og4J-tJBSV8lEf#Y($DIoVx9Rrb+<@?q4pIs)v=4!{-lMTR!W6H)7o>3>G2Na90A z{ZN#nveiqLE?K=~ad9sX{k1AImL&-c# z#fww9c3w4zhpSk&!>q&gmDBywS&6={bhpe&mNAch>^g0qrk%!y{W z?)mK0*$J-WlKrw~m0>-K@S6R{&6+dM=|67v=GlunJ2rK;_3^2@o}?Nla&G?P2Cx>j zLWl^s&u;}}U8)3*&EN1qKm}QQ8=gy7Mm#@IVW|G&j+uoX>|t4Gom{Nn1jmEUer-u_ z2lMx4?C^z1hGVk!*POO((xij=dn=SasE|U1co2(askLCK%S(USUS~%So?=OG`rBG7 z_HZjgg|%YuGT1X+AX$po{B61VQ>zzyd!CPj_qR#* z7q=sD#~~KPUQ&N_Ww-~xP_2noCiZTGJ<|u0rHE-?GJkaaV$YQA7kh_d{pZ%cr2g5q zJM3+TJ!hY}v@fZDww+=Rw~f1ERi9=hiYTp=4H|G>^L5&{j<#zd*-(=&uu4d z?H$ZN+kA(;`GeX^?Vs%&$Nrv^XwR{~sr|Dp6nm?1pO#@^qP@67GMIn1o5qVB>A;&# z)x2%%YA>08wjarfJWWddsKjPTCtd9&^UwAZJaA^{k#YT#(=~q!#tSb$2(I>$`Da^k znl5CvE6y^hD0SFN?VruqE0+Ens=Z|X*&?!k%cVJyxzTo+MDq5z_-Fe!u{TXh|JxAl zCG*ernArO+PV5Yi4bfgQ|7;&G({@bzKE6Qnwyk4-Q~PH-Aolvjzya9f`Q=577oV0n z?4|b4HgA?LWS)`D!wW791vo%*$m8ryN1pycXDGc=;ftZa7HKN;6xs_Or)2B#Dzq&< z-ai}OeX$s60q;LpatcOj=;2JLmLRgeVgGCf{NCcr(Fz~f^kj;Dx}>!!(rMQVfpPSw zc@Ny89hdwIabLF$St{SAkYEd!yFUdLb~5_S8gxsSDpiN$p_& zmv!SM+SW$AF@=zdge=hwXzFROUNgsA^6 zv?=N%jlQq)z1H2Y!l&7*uX^_$9iLf#G~c>s;D+xm7+7@uf&f1nhM%&h)2y3}k1|7F zL|ND>D1e_VBinPsx)Xc6frpRcGcWo-`!@Wj(Jw5@XQOKTq3b1<#$C)llMxJ^DYNg7)?t3h0n;Y8cB-~5V%xM& zFShHItG~VX71a6a1J+~4PQVI$Xho>vp3KSCJr%x#VawkiuCPEo{b5YicbWcaA8j`oL_DEA}Uwc=my`gt@2(wkQs=TnF zx4U(7%tP6xNMm^@!3~!qzYU%n#MRiM&d%;8`20~$!0=)?V7lQR12($p$zd=h+_N5n z3LQlZK}~sn7)(z;cNv=2Q0mq8l2+Z>+Jr7|?I<}dbalua1N6^q@$oezuV_iyd|GMu zhV|#VS!KgtgJswKOm1E6>}xRZ-Z_c(=Y$#o!5--zlIdQj_cQn`i|gOEq4oh46UIYg z>t^c_J*38UyN-P~oA?0?$)ej2C5gSEA08MT>am$kKX*eOR-!w!UXAqhwZ%rOy_VAx zPgL(ITZe!6!$TFi+GH#ZfskniiLh8*>@*nqSuu&{?97P=TwxPGY_n_>8x@l-{7wdhTgCR zHUnQ&#M_wyX!g&O8 zWhGXbuCCvPeV#SI=bQ4IrhTRvw`-m7q>h&rDtmETX?+R-by2@ArQTC+NB zxq04N-_W>m1Kd+~G^qv4>PQo8D);S{-Z~VPVFJ-%IfU?$5^>5Z+qzmB5*+ZoeSDzx zMm9&Rrbvgn!CnK$cS{?%%yL<9;9?M6 zkXe|YaXK$+G7IxEOU=scJLsoZ9g?(V6QYNotrvQ9bS zOsQgfuimu|*Sjvt8KfadEW9OXsaHuLQg^2uPD1gK z1||qrN90QVg@svR&Xa_TJ0znrBdT&yg(T}^qOFqL9}`I`N=z1SyfC=bWmI^NfdM|A zj_6eMmIFjY{9srt)Ws8&F=R@62!RkEOzB<8tr(TNMa64%$J+q+j&qS@yd(Le-jQ

    (-Yj*$E>}^}|Qc`iiVp|IHfxR;ku9R$96NOiLlcbztLW$0ZR^&f*9bSBxtUVg7 z$e#mdO1yicsfndjnQ7W7k}fknQHdE!(ISStzUxLT4BkDH*IS5ZWO<@DTY(2qxY`wugY}0}t!qykO9b13!0c_KQ&thvl9lgw4 zcslZ9?>s?bns|f!^3xYwjcp*vujg}v+p!f-M_)z~o{sJYfu|$ScR(#q5g@6qfF-yj z$oMNBW*^4=?;}4M!G4 zBv1@Ik^~Nbp`}7?>A&LHXgTdnBU)0kzko6x%Ugxo6^Z{_fpnY$Cw@iC&QK1V78(W)oO0HKA#ySuIQ+^6bDXMBiW9f5C=}X{Lg zX$OSx;6w=DF}Gr4`8ZB9_ab=$3Gv{>hCd6D_TWS`5PB2R9-NkdDnI9&h^XF=n^ z>5pLji16UVgFv)zcyQw9*YMy(go;_roSVtEhY`ht6VDXz;Kb4wQ6cP`1KlFegPSOiLxih@&Mu&~5%r*eGFFkA_Lj+sSJBe+Gu_;Dmz1!Gicb=Jlx)1?(x$dSv^ ziYtQeF>5?=y$RgD1937Y7R8?QDjNI%(vZ$Ur&kx6m5@W6}DRXcc>cuPR$& z*{igAF!f@4w{Sj&;;3pm*boe)l?YmKaHp^cw<=f)Qf7D)n3g=q0V9j&+1xQ&_jhRCjPz;{--@)9!(%cpg zy~(g4?W!SvLw2+wQzoLoQX1OAnTj>t7%;OwPv?A;dIpAyay@D?6K4(nf1x18^{?&}R_fDMj)oH)k0lixg_aWYg_z2>Yh{q65 zB4)v`>KmjVVM7o~*;k-^^N>Lu3eanW?~{DPvrDKynmdM|4n3$T&xxTu|54F5^|5Wt zFGFOoreD4#N~lbG%POJO%Mo#1cg2p8;BmI1`ckvbgVu9}?pUB!d`m=XD{r$bZd++#3Th8yET6eT&RJiL;bEi-I;io@*>jj^C^y3Te z`t_$qK7Rk!v;J1v^3>?`8&946%?~X(S=PUOUG0;Aft?BIj%Q ze;x>bu6D+fzjmM3{^QYKTlx7zW3MdEejtG3FdnfKu@bQsaRcI2h&LmC3GrUUM-c}Q z|Ad&1PA)>6f%q=O)rb*9I)L~P;;o1W5FbYTCE_0uedzqLh^HfRj#7=-h{$QkPDDC_ zydUu}B7IZ5gqVwK&s0SEcUXaV86v%{J;zSXr+#<@tNJXV;Sp*R;Sz?kGJ1X<)CnCHY5V-ax>ejutc90e)Xi0+D078OWv|xuoUs@39-dVE=8R6iiopyia3dvf?O}Kd9_-^m4qmB225qH*+to$!6|02pXC$0 zlW>R8>98LkC}+4C5rz`-&7`8AN-p_ku27=$+4#8dZFH2^TF7o2_Uke1*JIePN9pX+ zo~Dg6?M@haw)DJR9G)aTlpOZ!(GgiyGhYr{YPTcmi@DhI$2Ym_>_aNiuZPO^E!DZWe2or-jfK2DL9yH8{iVN}Sd zucpdR0__mDopxq`E{2^#&?TT;l2f10qCmqwP}akV2__I#T(*NMKM0rxDL)9H;iHhV z-Xof>>vAnufWgu0VSVG+jr1%-OO-pyz?+f?~3Udm@@Ag*}Dm4mbmq zPki_Q)`6-|WKylm@?md={ z*}K7`PqKG`P6gcwiZ&_S`zfIP;JJUBK{3-+xc8GmTflRF>p{^Jg?k?Ytp-04l>N(g zf~ftOh{~XsK1S$|F(}DDDwM9&$zLmUsZiqdQjTN7d;X!us$-F!v34Tgc9H4P$R#26@;p z&yl$h;$pL2>Oai=vGF^Yk1}R|?`C<(wuwHSWD-BTOxiaAZ6n_IK|}`nwB(P%VB(y~ z@@Ox;jxyZEe8gR1??>D}qz&c`y}dI3i<19!=A$m&pJuq9?X~egq7(&k1SI zPi238A^M*p58XRO|6<91N%F@^{yxdC5qtI0zdPAp^ygmb&!2Jsz<*2lsiMC}^!eO~ zc+>_HCrBQ@YJ+KWnDynr#|Cs5xQ6D*&0xx`B##q;!Mu0?IytuE-;TN`q3t_lf1gMH z=YTiI^Lf!Xc;WomJ_l_!4N*TEkCqhS{E?fh39`OLHD7o)%I{Cgbb z&vWEwI{1qm{9N>(-QG_f_MSqfJ>LbPH;M$U@g!ql$_kQB!LphU8Qdl+G5r+a%R?+k zpgB7NvuiPT6yg-Bu$q9y?5f^oHysDDoJu`re()mp3Sv;pu1?Uhs6HCp$V=eI^jHjR^DR<{XSYyb!(F~1uYA|!#dfU735vMySYAnOGY6E1eY$U?aN(&M*bPEi+ ztSTMFe04Nap}i&!$WjCIstPCKu1eL+PyoXz5m?y+Q9M*<{m~599uPEDjfa|uWh%`` z%+Ng$#VTbBqR67r7D(wbTz_9HPUx(&=gyrMVyGWs&bL(!U2P4Gtql%{P&E&Dqd1`> z1aHgS%{M%zHC+3?W}MJ{s#Vxv&W7oLm4$^Orchk)^pluSSJ&1GERcpaj8ulYy4odc zYfWx!%@7h1eY#+(6b))I7UdL9XpeqlTMM1`4vQ|=I1GnnPN_NFR+A^Ut-Yu{fH-{3#gW-A_{DW%Ie@N`z0ehwn zdm9JC^(>S^rfeY={@mXqvG%FMY;4+aE?sd^Lt+TURS3bJJvjT&v@g=u9ck|2@mXA1 zTNx`+FZN6$>ZN_hPyuaW>Ta@BA+eVfC$vlKaqZ90HMI6c53;j;+r{2~ZO+;*?K_F~ z$&i#BO>F(=iW6$q%wpD>hZ{}ykfi_A{N6!XD2r zm&ML64tuF_LN|-OkI8j&v$U@%iM{ElOaGvC0Ukc`ZO{*avT_dT9pIVQR*7>y8pvBm z)rbrsiR@z9lb<|NLl0*{wFHs%4da9kp$8Az`C%+f7qmhLJZDl|KZjltTuE0gqR`1ry`+$z zHf%XJ)nP2m&i0|=EzYrH>xIGwk+pnrNoz+}U#~)RkUpMaGGoVO7z>jKtLA5*aSjLT z!(l8;Kx?{yP!3~ZCiF@;9xpUhR(jU!0?XvZ&IEHm#_$ijE&5I7KadW3hZ~RxZa9}L z=hloQ_av?Bq0D(L;~NQ_gL_gK=ttfY5>u!Rnq_bm6BXYi+(73|-F9o{#XXVko|z4^ z@Y-(AMx5Pdn$AA6y`cv;OV6A$vpG6r-e@vohTI-b4WkAAlc5F1hC>2S;G!6ut$v7V zM|E|7qH6}3Lw^`Wa2Q2!7)5XxMbMxC_84639!s#VEuho&8t6b=m`qZgl&XhO1p9g$ z*0)6#w>A<@5q>qSl{Ge|wY_0OWKlyG9DGM=BJJ=WgZo34dC9)6$B62BZE%4)`SwK- z9EJ>RYv=_^eET4uWer0HMmD8DRGgXoo0wt9z}MMv$sq$B(@8s8U@9y2s1tEk%nF{HRHka=_#Qf3HvzXWC}vpi{;Y36Mj8&cd4kQav(_h$%hMbt=fKV>$N z;s%h|j%Y`UI|ANwg+_||Ez_BMu|0_hq__;U&mhGWAx)&XQnop`5L-|15^TM}jo79I zugBIGB#xp#cn`Me!6&gbNO6B)E|B8>2I>j&O?GeabZmXW<=6&-&DiD!uf&%93h$bNr7O+5rW_`M8S$%ht{!$f)#glJbQ~_HCEg= zz;;quW5xY6o;?=N^8G2B@@Ux|!HSy>b_$!JvEqmZcRej@thne7Xsoy;$lbx*3hcKx za3k37k`=5tzOWyM6?X;%>#M%v07z~*eQ9Pt_} zt`c0nCzMC*itBYw-mj6~rqY2t;+yDnR^CaZKd9unc^g4zp}iU_?)S(6R@_G*1XkQ< zK*sFG2FNJL$ow*r1m_d1I5zVr+4rCsg@ms2!;r>``(O6H1wN{y`v2ZdHrYTD(g1CE zc6qdfR|p|cN=X~uU<0I(Qu@FUl7-zi$)T9qm)ZBenb6%_3M`<*$nd-vw} zO@*>_g0A$l*MiB*e;>BIM4>JD_r}t|iX&>pS0Mma90{@F4uJjuVvQBYZ)g;!u;K{p zqBw;W_mbfhR@`3fTMC8) zQ(?ueLZXg2gMk~l8VpB^#){+EnFtB6;z)=UM+6RDuryZORff}8am$b~9U@@G5spr< z;)qWJthiQW`tLznVa2^09EX#Chmtt3-F8C2yN1S!+YP;?h`@?_3?zaGthjH3+=2+K zI6mg@L2GvU^Vs^2Vv~Rs_bLS3C509DPcT=)II-gRVVOz;D=ui#z=|72#E5`Qf&P6{jT zL2#;b)+mVsE6#L|#)|tP^zMU-!HWA8`2M)%04t7!SaBmj^Pr-!;wBkRVZ}``oW_b9 z0JYH&0V|G#SaB?^F2o8ej-?f+u;N%+aT+V`TCjD9cOnkN=UKptTL6QDHX%*<`zS*k zJQy$hP(bFwp-$!^2V)HwEu1L`i&?yU11s(xMQqv!R@?)M_;p?e^9B)Tj&)oHs_HQU zGANUM3|a#Yiqa;>+=UsEELQd@F&M!(McjnA9r25Z-$eW=;!(tZ zAo7ddA&8}ja}cjXY(Q*B{2(Hs!S*5k1d(4TpF+&WfaaaE1d+(BOA&c9zXNd_;+GM> zg?I?@6-3^x&cnrTG~(rmyi?R6u0eb+;>QtpBk~Jj&Y?MmIH~5!1i|3+@m!JjbU78F z7Uw0R#k)F1oEC`I5wH|(K@<_MkQ8y=Cn8=QQK_1!L&WQ*nB*0g%De=Nh&OzSc>5O- zrzI3|wjw4uwWo;d0MX*Sf+F6lMT_eRih|gPh|4C5_zt8LG@p@j8YCk2J+(L;k%C;5 zP~-qClZCfXDH&_Mr?5oOA&AF zqQ&JRMVvi|h?6+(#GesS1Lug6qh`5~@=7ft&T**Bc@jjN{YYh;YtS;MAfn8f3`LyQ zh?cn)I)L{$_n{VN3{sFYBZ@d#l0D`mfEDjXM02>B5oNC2sLb`E)WYcmMO=D`7UvTb zaf%@(Ic24Y^I*~90-T~KqS)f(iz3dSM8sJnMVwqpLC#~@JWd%Q;tW@mIWwa&*OH=a zF76aFIBy;uFwCg%Fd~#uM`9q@xX-$dyVi{}*2x3y6i;m9{|R`(7@f@v5#ts|+nQ@b z<01E-u1{qh0ySDa9Ge=KUw*jJf`x=!O^zO>bMdGSm!|FDwUV zEUApZwVYFw_)3p}fmH~Qf@YonMMHwSeC!`*uvm{88~AwN^SvRlT6wj4k=g4L|3nS< zK}?1}_L_fiTE4H;1^}6Fcs>!xE+@d4Zy;gA6s9OvP-EM1s~(HrTF_CT^`N*>SA;b! z<6IW|R8gU6*-TK(AS%i=Rk&NDQ4Y4ahOH>nv}`yiW)~GfO%?7|E_kjGLCf+$F)c+> zt?Cp-d4;2e`G>;M8VOpA{EIAV|R<7#>I1m$NYVge>2j~^5>IB z8_l=9{MU#0O*?Qf8S+>j`C)b#LK=C*gPK*}t~>efxynC59y`8I?CmCx17_aUr7t1k z7abS-4>BLR=3D5GlSiKUmYH}uPW~h09qpgN_CbHT*t>`MI7!X7#{8GZ$w#P<`pvh) zBhj}`{%2C(Qn5Fc`q^Y_whIB-@2`6BY z>mn+x)qpK=ydQ5ZuV%P4lOq%*(Tp2S04H*58~mKsnnE8dikh9ks5gAzIf~52-E^YG`U*S6y3E8>Xmw#%vrJKnFFpYKMO_ z>T6nB7KLyF4K>z6Lw!a5uOjU5NL4SHwy0VGgBZw`vw_lycZLSY(I`5^P%#)ZOuL|A zDAHIh<6V#~%$cCEPdY-dXo!=p1FxjUSD8^cuee&{rHtxLCuJrIDOQd$Z$ z6cfgmUQ#k~(j}LcToMdUEFKSWNip-r7Z*>W;)LWgzD;6I$Mne zH%^Jk*pB-g1MT55Wo0h~UOxpLa8znj;+_~gvv6HzIEL%DGtjm(bcTC!6!$BJcD2R5 z1``b2My$;@;NKyUIZ0=@Cr!A&F_fzH`7mmBc z-k4>{`cGYfTH2c6?HR}?ZhJe$p6UCOVy_Rfh8oc-s8%TkO9KZ7~G?XbuG+g_dQ_@>5X znJo5XY*<@d?NgOGHl5+JThq%QP*%?Crsgf?;77?Ipuyd8AyKF@L03Y4bJj*t*)68kgme z*gGs2ghJTk_2u#9Sc_?+E_7+9$J(wf-yD#6}G$krz`XGt1+h5S_L z6E~d7yoKMj0{`fNK71qagmDkxZN3tbp-v*FUQLK{sw36)FczwXh^((0mnHU!bCyT`{7`F6J+f53$MJ~&UqmH@WbK)~Ak?amRkT{N z`WA<3+nOV->yp}eD{xtG?^f6;=nI9xf+i{al}9XVPiGh^XVy>K_1eO3?%bDF{rnr( zJb|>m>&$xJt~0k=_Z&_0eHN$L){($v8H#Aq!yM`1NFVNX;YpMCQl_Q!hENVHm*1xa zK5N>u*l+D&TLX6cqZ@B5oUGI3r}~0leq-B7@_kUw?8l2~eNKe_7+_V>-Ft!I3& zU0$$!u+g!?g{R94Y7%&zSAOa!`YTYrchS*}zL8pne(wdD>L;XoTc_B6hcB>B9Uf-g zqtj?VWKW{LGwYx7Ja#9rFL)-rb)TGopLDqQm-V^S5bzRsDxSo&63weS&#v z-}_iXo%lqrVZ3s`PhdPI^snqE$0OVFK!)|#AwH{0>u~Ia_d3$CHaldV`A^Q^xQL%W zShX(Vd1R<5|5BP&k`*@N9esrHzsT3xt6d`^MS596pau6zQA$e%w+b($lq!ksDs>7X+^Q0WRl zkwJv%%-q`xjMUZ`;a7jbmYRm9`cQMpOngM;!uYu?Xq42E2!`;m3eO`$jjLM2==KC; zC9R=%ft@ms{{y$+9@ZI*P`pTo{ux=+e3>2uF;tx{n@!s3iAK+=smYGF!=wX@s>@Av zlu6YE9NAsAN##_=)G5$qYu+bJhu!Y7J-x@N+J~<0vNhM(FtP%WkYghE&tIVL#1 zs2I3kwx2aUmUq5G{stj|J+*UM;oKHVf0;S z9`A`nk60b43pwNlY9_?1tPEb&AjRs@I>kBEv3H?*uTiWr)Zmv!I?n+ka*lB$3)i$P z1e`^41b-(ss_x_-%&w_zjW%1(b4sVB?rNtgJ;?rpx5v=7!-z)^k0KsNJc(%jL|~G^ zy!n&tKQ*m|w}g@4x!39WX9^^teD>4Tb3KWP{}bXM_EJAV^WI%Phe`L&Qqq4lpGM?T z>RAh)DF!@qw6LrBd^SkkvkmPia2Qd4O^(Dl27?<{UQ$|KJY_OiYxRT@CfCoH!^=Wh zUEQq|>inyaoIZXM^NpwuB19#M!0#iUUV4SM35PD(iHsL1&k>N$!(zgHP~Rp2coR!3 zTyZ1*m$xDrwtu`!qRyBs|u$F3#U6d9@Th)8A z^YN0b6$8jy5H<3+Oi4nV@wsJcz84qHu8%bFK94tW>l3AOqs@_9fZgK|YpcqFcR81W znBXJNSZlS)_{qiAjQLfOhS2Q#npG{SeMre%64)VL_xhFh{LPopiZ z#vOJg=P>IMOD+hlLZ2ne7x7+~DS8A`-d=&xSGLT9tZL zR9nIfMvPfF3~H!i!vU<&88JJGO|`h-=ldqp>!YX35aR#!KN0Q$HZ zhpf7Kc3Wd@Woxq>cWX8KRv6XKm`b%yDn;+sM;liK)rK}&F-Tgt|Dvn~wgMpbd$HggY zVcYa&*IJ`iH8bX@nW$A4Z9{{taEK3}IL~u7SXeZU1J-JYsEM)Dus+}|xa!Q;KwZYmTNFsj?a~6^6io~&gK`OcGYn7p_-Y_(4b)!=Js`=W?ee*EpWWt27yx6 zuZ3$tJdKy)mS_&saX>LOwk}e}P@P#d)UR63iH)^tP9)#L0@!$gfab>G0H#w-f4 zxNHqA3bo+;R`*18337~R2ilzTb$=_;b?7<0M%825d9bxypYXUEDhG`TvJUWn&Rn^c z#GffoGlv?>NG_YTVKu}=*DTaJ$uAKD(k3aDq@yqty&jb$Eb8JqrUgo(7l20OEMa7C z#fsALSLo2OGnJ>zg%vZaXUhFY zQQdHQ-Eewu^EY$J;q;QtfrGpeE>pKdhXd7=+Sf!{!?@}?Zjp{>klIvAm9Es|@!W2i z=fk|}>WLHMzE+dA+smHJJtK{)qc`!D{Mu;Ky6SMK9xuE~7KE6rwl+uI@~+h=7hR7h zmug>3dJtiyhv&YDvr~DL zp{KcOE~I8=MIF{v)iS2V`zgMRFp~Ista=SjZJq`M{Eg!CmKjK!)!|HiCK#48^hmU= z#muuXf;it&Pv$M4aO#z#dA<~sL<;0hd?=^_kT=b$tOo=IF41{gL;;@)Xd2g9ZmKcdtsSIv~XGw zi*HS-f|$x8lQgC6j!z^X67Bs$eb(0UxJ{ipCV7P7Verx^mAsiLbpC6BTmAoMfm{8S zFCz}!I;;qXFyAikQP*1wM`XXa5r5$fhgy%c+X@TrwUs;CycEx=T>afaz2P{dd_FD_2+ya+l-t)V{7nc zxmU!S%>lJ@g4p_Urc#!39kzj-wbgOR6nnK|^9{R%tmS_hO*~wH7G8w}M1fBRfcS;t1-fcN(@sW91jqJA zVA-&O0Car;BJ4TX-qNrFjbl3@k*xxIf@OQMEItgw1yRA;-h>21nXEP&3JTVCGZ^lb zg0=mSVF+vcH84~aSlb^W$rcK%Z6%UylEB(FCbI80>?GCxU0|Q5vWB(&ULyOOM3!xL zC%=XBdXCwzXiQ%mJ+J`;cDGG+}KY0rMakz}nsgs)`fVmT;$h`9#6mo&m$Y6j<90 zkQ4ArU~NB<$bJO)*ua7+jk?)TdbX#PTM z53sgu`{jrNYs*U#U~O4?5f#eP3B}jXCYWDd{%zRqLQ}cpcgE6ywLJi(T@V1)mV~gj zkAY6WVbHL)KQNqvwSC@j3fA@o!zozX-x^NA+WysWKuqmZaMEybSX-hB0@ij0YV!9& zD-vLBhe5y*rC@EZ1jB);U~RdB#D-O{wh=HKJQ~*aUWf}J0jw|JwwH=FO1CoHXEkUx!I;8FNG9>-1CIQy=_YiQG6s+xE!CVRBgtfJyuF`oBT>@)6#jqOIc9vmrkZ|Qy!z&CKU~OLnd7R1Ip8G)r z)|R(Tz}lXK#J>a=CIxHT0}0hRH!6t(*4A{6hP5q4_T7jAYdau_Th3_21&F^x1hnj> z$R0Egudq?R2$b@{zZU_S3tw_F#~h3`;8o#FL0HU+!Xlt$Hz;D$KA>gatB7CcWiW5h z-=wS$a~f5T5s*Qd?4Lnvz(W~9iU~kWuMZTh$#`ZE(2w8K+ERi9v6fm z70klUZkW$IA++r4ZC;@5AU2F=Q&l2s1&(pw0+a56!2KG~RV;)Tunnm9cT&fsG-U5Y-@y(gt&igbVhl~-< z02u6O1l{)r4c=jowkvt<2E9sAAQXw3S)19>ZBXxtukRe{)-aPDTirG6gW52vy$AdG zap!&x`3bn#o(|1IQzx;7@8LOa1&xXAu?F_SxVfFC?zMT^qN6H3JIxB3GGWPRb55Wz1U9j^2*4Bk)d-{h*z+&Y@SJ`7_x32YC^+hMD4KIcZ0~2Qv|x`CJM! zwZ_cnv>8*p9y`onN6*6m{XES)lETcL#>^wi%otOAL(I%Fm^lG6{d(9`Np8y;V+!3B zD|{ac55;in*R#{YrjS{a*wLS%@FEt@?W}M*VL-D8J9Rh5c4oRC$sYGGoyM~^y)XFw z&x0?tHwMg%!`_H1q#ZDm4zd9|VCEfUv+V$<9&353fX%Z5oPBH*w!jX=h81#ywv~P> zvc}r!n_1maR2Q^27MT0Is;T$fM}d=3IYmyqXKr= zGN9B1TPBa&p2ac66Bk!N1;UK8iv6NKBkcpqR}lLno<8s83qO6=?dQMaj;~Gs-qVjQ zU26N*XMOjI-xh!I+I3HV<@e*mSubtB@mH_?dgY$wcYgUVJGQ)V{-^$Us_fDk3l~)` zymtOK783mWD+@pTx$P};bF7l@zC2*{^6TdR^X82scfR+*JNA_P=;Zo43m(4jZ_nTP zMC*ljzmm6OG8#A+aVa7fb!!o~AkuxvPQ<;42M`Y-9z{Hf7{K5xKrBR@j7UhSrHEm~ zwTN2~w;}FC+>3Ys@etxsM0E~hKMQd(F?^h70_f+2-;Ff+Vnl`z&w0>Ku)`2O$_pIm zqqzJsaLGsh5jg=>Jyi8GS-o(Z1Q=*Ep&i<<%7!{4G*mT_3?4dtBc-+plgp$T$11F3sRg z|ELQTc+;O(NPn6ARd*cZ|5Mt}6Pfl+|8a3m-t@?_vCV`SRltOq7K)WdVj=Cy~5NU5TXc6K##F2xx^gPw{;oF8Z1%LbU z8*jEgw%}y;E15%vwInH$C&?6YWOe0jr9`#!SZ!TlGk8JPQY0LN(nViDpr#45y9h_@i#jkp7mPi4N1 z_;W)@d?C(h`&QrK3H%71|m*EoQGJ8xEk?2 zh`hyo5%HUdKSlftBA1SR5xGja3~>P>(U)5h??mMCTHRc5960sE=dKJ~-Ew$xsmsHQ zz=a}3Txp6H?>rRoHY8f=sTf3C5JijgaBA`Cf`~YKr-;*eDagemMO;dXh)Z0Gxbl^P zT#!=41+IwLvlIof5z%3=6jdUMEk4emi0fw&ak)zomw8f<56viY;GuKXMiD0oqQ!@M z6zxJBj)=hJ3q^c3BU)UuP{aj{)Oc7L@e*p5f_&0It#Dk#bs9xnv`IlOzA56GT+DNo zP7xRGVv9>ainuZqEv|Mc;?h@aakNpyDWqs|`b`lho+9EJA3uY7&PNE6!}%eVxrh)E z2N#t&O^1k!W2uaf_NdHfk0Rpglp-!#r99WZ6mic*i%VmQxS$j*E}SXiT3Ys)a}kO- zF_D5ibZpCRM6{64zoa~`YgFb_Mp5Phlp;Q?6D_VlDdM73YTzABHye0N$w5;&Hx7CG^4gC#E>lCtfKCM zj#vB5(kNMZv;0YxZL2_)di3!R2z$u8ay}}$%5R^*|I=&V;UColg|E#B9Pt;t>d(nI;hzX?DCC%qqA|C8Ik?jPC1_FE@3d7Z?Uhk4Id z%t}L+Rl&IuXjwbxO7NUpftEFat^&`w7-$(6Son`(Y#k^bR#Yt4w5$rW84JovO_$9D z4I`hgKY^A_24y{*^Rb>{P}&&-N;`#`mT^%|I|Z69%LBa;`PrJ5ahA>YoyOdk?K=({ z0nfQ6XxULv+U0Xv+T~giwCp)h+T}w4&}9ceZ$kclP0RLzazFQITDB9Eb~(qT-FDEm zu-gjC`kOQ@3xl$Kb()qf2c=#WDD72hS~eGy_080@jLXMcp;rvr7xFQhmJJ6j1RvD2 zEFJVV=$*zHwh{C-Q1XXCxu4I0;@MioK~UDaAC&Fer)e1JLCng#hlP0R8?)i~C)EC5P93p4<|(^%txmK_J>aX6-F*-=pH9R|&W z`~^+R4uNKXe@@e~1E4%E`!!wmI4JjLucl=WgL1s>0QEz@UDL9AK?}ie)wFCg=q<3* zuIVz26>A;%R!x`HgRTc3)^u4pDEny)DEnz3=myXNPz+t=F9cNi3&EkR$c7xWtO*nk zE_0WIt_H0H9Sd46d@<-~@Im48K#|7K(E7|T1&_9KnXmNnB_H)EJCi^sBYz?&^(TN* zzXUW0Iv$km90yAK*ay0-podCT&v4MW-~nr@?5qK$ofc5qL7yl)BS2Z6`7D1kD2P=r zv`%OfD9_V(g6;#o26Q(&1#~AU+M2rs6mZPB?VvY+t_8gwvh#a316y1ziMs81yPoo=+G*xd%WO zfbIjW1m$@Y2Hh$09iR)rZv(~n&fOyNcF_6Y*Med^=Y~NCgDwZ12f7sWN>H9(c;KBo zSLEfO?*Km;6k{ou=NI)0L2)c{gP?$|&Mg3)4a)P1$1ebiKdy2uk)K5W&jEiN6vsIC zC@A$0gU$jy1bPAJLC_hX2S8_n?gPa$qTIbA-wiq){7%q5pgTaPfo=okxY`QZ6Lbq` zIcPiR6`*TD(?Od+F9!{Say%^uMH7|ZnljKz@RxxWfKCPl;XBE>k7p~rj6Fj6Rw>G5 ztPwh0=oF#6KDyCFTT-QH|(v3(N;vAxT;)#vj)?Awj)Uf<)sOy3LkVLQ`z+HOaB zyKe{N?P;6Se7=X$c4E6HZEsq@w=ZpfTBh&0v_se)PCEkm!|A)zeZKwa2jHXqX!^1A z*T9`lZ}+1e{(G_A?%#p!9{*l!_xbl@yCdTvwEy9Z-PrEWIDqZJjOVaDl5rH<;~B4E z`%vc2Oq9ypi|zi*1DWY*2Q#0`JOu7=<`HaZm14cZbo10LMes=Pg;wDEw zMaDP5aPqjo8{Z6kdx!eC2CDGs9IaoV&LmvxF}_(oC_H^kuzUb=298(q=8w_eusz`C zO8%W7)rdGI$2KUM6vi2l{gN8UlP{~Ovz{hK9! zr`YG~YYZQyedK>t_|J&_+r<8pV*f{yzl!|{{bRx(Vm@q=GHhc1Irxdpr*1Emt^R~{ z@_cQG_Of7?p`G>-jW39L+H>$**naSbrN2)|`zd2sM;_@{B>z?J5A!gYWB4EPsBfs~ zf12$>ny+ ze@farO7iDOdtaCQebOGE9Pc^O-lja=o~wDhFg`b<9K-e02mgNITiAZ^pAi0guuJ~) z!VeIBpYRQAKk|Pld~d05sT|)!%!f_m>thso^quk5@d@r9+Gc!hWRpi(<16C>u$zmC z;h}QXTHdm;aE;Wt2^ygA=FKPSIe z@+Y7?`8~q_S?X^WelxCBy&TsozQEkeu|JE*JN6gFIj@L?@3{CD)aT59#g&gWK|(%X zc5v!{3-vkqFT40(p{>sRuekV2T>L5*|3{ZS8{@%gkFMICJpBqf`IlYxcrG~elX!MB z$d1~v+&uali@SYG`m{0;vrxfE#QnAnul9Cu*Hz=GaV}J4ZvS)%Ph34b?in1QL_P6M zH=L*!mDLsV7FSgp#bkSK#mdAy>Y>Z#O`BdZYw@`hrjs|PJHDj#dix0MMBRBzy1Hk& zYZH9$C9Op|BVJ9{iot`P`xEDC_?8pDdCl@37T zGEZ4PVF(sE!Dr0Z*wr|Ha9Y-)BY@{!Q+ty_;W^6=Ndyu-yFE!jCyimuEeO>#uUMxr z02ULJ957DAxHI5O@-chd6=TXwk0F(SO3}euMH}$JYT#Wl5xv6bt*Vz!ACGVE6}p-p zM$_8x**(6#hrh?VMZlA7Zq(nlS2wpcE?(D26xl|62w%T$VWaXyf@2^!Y*)2~fTU(@ zosGxHw+_`p?a064dlF|_trs#z5@?Ky>gu*eddRD*u3g#E+KfY7Z5&T}Iczj}>iVfX zKu)WwS`;h7i`%()u&mI-Rb7eHRe8~@*|QeSS}+6G*x}V(L2v+|K@v!eE+AicqjPkj zpoU}Vf}-PUbq)X%U9CW&7I(=$kUEkBnsn8Ix-!JDKDy9I)S7_gaaI+nodc#w7wX|* zNeODxB`avH8;yFI@;Q2GlCz+wG?o)P5yVSsvWyaD6yd}x8Xrp;SFLhVxJ;E!HnqDl zCUneDeq@VEVi{g%bkTTbcf1M|O;-DQNs`)1lVwckm?6#3ZfD1L%-4OSGE`R>|FrH7 z&~{2Eb!d{#n9wmpTP~TTUB$-oz55|`wze^`L*2TH(qtJEI%Y_B#9Z#WcT>8fV?mu^ zeDu1DN$->l1r0iOo(N8 zHm9UB2h6eJuA`~T6(?x<`-l|T zCeJL51)oU>6?;kjRTpz`Arxw272`z!_TN;rkB17;t9?oRK`#}1rmvR5p1Vy_l_E}m z#@u1|_**XaE|NmaVb2-dwv9bAXx!svi`X;cdW-CD9rl;!s5>~0ho}GM!?L5Jq~Kxv z!R-vm+E)+YaxeeQd2)>~{g>BQACECJlZ}_u{+kQLo;eo^U@uj``PNW}1%61Bs;et1 zmduZr=;yN6uTy(!C96<^>4VsPJo>x#w|_@_uJM=JfAdhWH%tCY7~0WZ!XfF*fAcE7 zRDh5z9k^<^<{ev4d&&Gax5yw%lTs~aV8;!5+DqoYc{N_-U}%*83RaKMd@05YZ$Aj0 z_LBK;KH_T6k@4DyW9zb)+JCdL$9K3Gx@wQ3hWZ#U*GyY9n@JsH|K=Kgf=R?^^7eW7 zZ=Ngm%we6|MSIEoH`j~35BYU_>bqzUxa`WLdw=b*+Ky?TeQ9hzO~SRmsr@$>ioJFz zT?l);-rt4slCEVgd#U|5?-YASGIimd(!PgbPY!v4Jq|B@LhAxW!ta58CDK&pDVIJ= z!==^D!@E3C+AO4-0i=)A*8%NJ3m5EgDJ&0iGQ;N zO{d>l`cKCF8-9_+AF#_`Eq&VJKS}YOtbN47XRRtjAF&vdF~85+4t?4d?qyo}kj=X> z=Ib~vI}88EEqoTcw+)9!!OH*MVaY#6RNx;@Xr^9=knxLoVT9arK> zY)U7*4j-5vs%>ZEdA2^fMh-`?)hv+D-Y;#UU(K>0o{w_}N@f-+FBQt|h_rMJoMLwS zP8GMiwQ#c%YMzHpmwfq3x5k}hI9$Zi4Qrv>p7L-SGe0soI#{U3PD~aY8*~+dyHV|I znBG)9EG8UlWzyvpHMzwuJ4MxsEv=!Z!q})B6ND6v^KzJq9F;AbnA21n0NvwLkxX|sV zu<8GnpTZ<#Bhgo($6GIn3JEU<#V&W+cU6qlzO%$nVYf5GZfAzw&J6kJqT88ai}7`+ zydr9!h|1-RNos$J9USS+sh~$o?S`hqf-vq#Pb+x2&|86*6jwFVjqHqQeYAN|s19y2 z)hfW!TbII|X1JZTT*B$}TrjEhu;qm7}3i!UvjP}EX)Q@1a} za|PtOs;#EE^%g!3jzcBEua>|{y*-{N$E5~Kasgaf%8TH?y=BRL8K#;iD}RQays6pw zqm1|)p`F&%!FOWH5_s$p%NK8U<~lXS@g8bS$K&Bd{2}Q%_=)S_n2nD(7(D!^>5Ld+ zBvh^{6_?>3VajQxkW zwOr{sHr<}T&>4OE+Vn?tzTcYH8)yu@?Vdg9R}6om=D=gtyxwFc;}6n)z3n3#v(s{W zBCCIIn+dHqU@-LFwIR2CL++*x_yBKUz+y%LtPL6rJxA7H;g#NnQcf{JFOONuU)B)q zl}kI;8mbxEXKTCW`OC|+IODQz#GdJ=XT+}HQ?OAoK;8{X;8-2Z+djTM;Q2Cv^1@}_ z9dmf$I*PmmFI>G~_kIYq7p}iDn_js7j>Hy3rx&h&g137p*E>DZQA~T`Iv*)`;Ti&B zyl_oGnqIhw*J0({fUTX=gsm^<4s6qMK89_2&X=+E=g=`jM$Q}98ZTVL38NRTzMysv zF-m+nLS^6YwO!a>#>D1DqRy#64CAI6hx7FI62zGfJ@@Os)Xbm4Un z49$uQuiqxJuP3rusI&o3J+%uj%YOl$aw@M}HK-l!2>ck2JQtu+@yhi_uybKtymI{m zEb9`lTzqB8!Im3Vd*xc5$i53~8p<25Tw_tS^2)Uy33k>^sCFQXE3aH%0>g$XuUy|W z483w40mBxGSFXP!$rg%Nu3M30lf*06#}Zj0IICRkm5V^mf1tAV%JsKIHXDs~PymArcfbL$5SFWk(kOZ$>#0_U% z$}1PKy%a;QTwB3xWDdM?5hRRI-pVW2VK9%7fmg0aK~)KQ<$4Ot5Ah0(^2#*|3HGIU z<=O@I4`j#Uc=!T8N@RZrmb)lkxn4_TvytP-9Sm00sl9R)8&-Senr~R~%C#1a3ZcdD z%5@_MymIkNk$#5B%=C{TdERqKTlu_Dd;u()YN<;@`d)Co?O^_!$Umub z^8KKvR63A6rr#Ub*}bz$;fi$oUswW2JMPX5m6> zT?`HJ$~6|rYKXK~uB*Y(vzhkF)dKDVIklE?&8AL~;T|@XFPOUyxeLj-@05%C;x$+_4E-9~E z^tg2;jMFPukx9cVSGh^UE7z4s^VAftTuThAy>eB9Wp{~Ju2qKBUb&hLD_*(SxgUZI zUb+4X@)DD|J((1*T)d6KD;FIP`ftZZdFASlgzB7+D2c->m+2hsm1`!l>CDl1~T!x#u>=I1cezlTkg@uhQX~LWQ?+b72Ih_HpTs9&D)245(KlzE1W59C;%D$m3 z)=wK|Kb&@;(!mb<(C7erPC0GqLq!DK`BYt)roui?6Wo3B(4MhqejLA)4o1Y#lLXhgPwj#ua?hK^e3(=#+(yT&|n+#%4NW zp)(gcb)iETI(?zz7CL;Pvlcp)p)(jdf}xWc_D%5mvQu;@Lx(YRC__gubP_{nGIT&g zCo*&vLnkzJRAZdb&;bpd%g`|m9njEG4V}W!aSR>V&=F1A>~T3Cd-3L8bQ*IS2c;K| z!BE7Bh{Qj<9yjmxy@Zq=h_e#W;_8bc zuG~b#xfYxEXGAofQ#q-Hb13F;x&jerS5k&IKAPclUX(dIpoo(O5pk+Z5oZ7*QcGNj zwjhd#Co{Di9!WTXp@?&u;h+dyEKtPRsWgJK4T?DR5D}NC6ghm}aMnW+r$C~`6*Wbi z=}04Z`=^L=0ny_9pCV2OM8p{?MVwif)=Rs1!xItb&D7#_T14u8015uF9YYnOSH77iOjcTIS9MCZW&)6xB>ymW!e=#bm+XH4)XYYJDxy8^ z>K1t07*{hMZai9UYK=CHGcTQuZK%N;h0SA2$E`GP%8Q$gx9M@a6Z&6$88hx}abl7D z|A+V=aPhxK;vP26p(Dpd7B2obbmo7ETaMTtOJ2SCwj65b2yZhmZa^ zDsVTS1W0(!1whMYf=P*DAvIhoHK!z6@#9SC2|n79F%fA7vhpx@uUIptPj|r3fF%cD9c?A%6f?39s~uv zgDTH_l;QW9$`0D5D8A)XdJ2yo`TfDOKCHu)KGx()4{cO9_v1i$9LInbgN^_#1RVq# z04)OLh#L!f6n3y)&piw}3iJ>tj-$e<9|^h-Jld*o>e0UnpB~Q!a(6&}G3YkXi$J%6 z;t_?yryma54xa5>3yO)P!lxew8U{ZUbU7%Rpz!I3fL4NM`wKwXP7sBA-w%TkdKu>l zeHN9F|DMnf2z{^68A2};ioWLY?||>V9CF$z7a9}_qU5)5_KSR8q&p`3Sw9={smY2hjDczIy?yzQgyBFFlRW>wCaG?%Rj$ z0pAZWp46gO;cBxY1TGw%Jn^!5Pz~k;u{Ow0Mtc~ZCl8$hP=;^dBw#+DFf+^$o`0k< z%#f8#fc+`={*={g6g5-PQ+9B=vE!%^Oox#AkpFA#v<{SMo^lvZ7%y@bS+Cv=X z8>IagqbuchGc$$J>iVj+d{!@YW3An-`j#$#bFB z88Jukxj@C9)ytk;RE~`VCoX7`gQ>o#=*oMmU98*nj%ht$u{(l=YP38B5vmShtn)M| zUTVZp1@Nhgc^#&tIG<8yGPq6y(#Zyok3na;8Wzv+tlD5|DjOZ~E~Nz>GZKL?Rp}Ud zrMm^O49^xA_)29XhCCUwAuZ^bp<9p&Vp3U*!8^JwGQ$H+(*QoI!b!mvnV~Ub6~<%? zD$#YO6_q%!5|bZ)LMB?n#*dp=5{!rOrI(aUoOH>hC6@$)6N|?qqokO*#Vn z{3XR&5RBs`&WtpNYFi`G#+v$Mciy6?Oai=c6SrbcWd*eY|Bof`NwRPm7K9AOmyO{$ zMPd|qtS;jw*3%dQ?P2<19h;*6>&HT?opKX8!%Z}Hel2scftY7H18qA)XSj)G%@Q<) z@V5)5S61m|x}8RBXlJ;IO)`fxT^kg8Ghxp;CyU!tH=Vkg)*2;p6pFnH z*fVwL9KAKTgl+hAr8%^+#cl6^t9@(5-d*wbVdfkU4xBzu+(ffR7$HU4Vb2*l9uKv@ zNpTZTy4tr>+IO$C57Tz9_SF*i&kN_!bkZ1U)b6geF9we3?!RK`^xb0bu(WSG+9yNO zx%)Uj)c!VvTEi)E4$ZOL%7;ddkfi_A{(9jY9u-5z-Zt3dc>Y1sse|6dWM5p#t|0TsaeATtTpX_MQHC|HV9R6MGjlg=7;jB^;8@a1Mvy zfgi)Qnpn>akwlz$+DnFWc#GJ3L=MQPp>ac!^0b!>=TJFAML~01el<*6c@EVoDwZD$`dEgxW zNbC(4Be!+YUNW4+SH<2f()pk4qP=7|hXyy%v~S=9*WPwGzNv8zx5|Y+C}zrGkJp#e z@#~AL|5D=|?iPFRlk5I+XSZJU1b>keGw>Q+6oC;ga^kj;DQvael^@3nr{kgCy z)Hnx@p!mOoI##ay`S5I{ri4lAiN8-F6(!M|F?&I%RUs8R^nysc>RTMDZEKFSu2bzv za{SGo*UD0|`tUDuLff2JfyrvMKCBaqAHFXg{B*q>^0R7J` zDq4&F92*~r@k2K@SW;9R9HsCkol?}9ICMq_9fvWlIa zFn$u66Eo#hG2EW7k0xJa_Dr!7uN86G+5kl z{oEQ_6l%fwt>nrJbc?lM@%*+{p3E~N`tQ}|b&xq2_3y)snkKH07Ka+}Z2}(OSmxdP z>J}rywFT?QP`&b`s*~D#t3zzwg;9z+*N9SjX?Hv=>W1d)hUTkjRp)mMn6Rj+UW@RN z-RczGlj6ghZfL%9?6~C6d|jCIsW+VjH4p!a!`C_-#aVcl#xj4DD9j3wvKKTShiOv%IgjIwW--E`#g=y zhL12bb{lcqdMn&EqPF$Ho4fyAaBtS10{V{${B@<)?s0gwyLpWHpM?tMsQVrRI~&oq zGqTdmD=KMMLXyru#r$tzlK{^)2zKvhc7<(Q{x_LTcs5qI1&kA(ji?!RorY)2XF6*a zH2BRA;MvB37Ub;x}ubIVokgJAC^J5Be@W!Uco&uH>SL_t2|*$?D1 zmcES&W$6Jlyq`^|le~O_o$#WAw&Xt&O9T0A0+fCV0g%r~h44VYxvxN|F%qZlu zHArw^D&(_wBQXhsL?NGj2n@%PMm~EJTooda&q#=Tc0DLBSQ`1P$#5F^j6+X->2#uJ z1UZ6y_CH7h`D`{a{kxG?$Y)EzaX9&(R1ydB*>@n|eLy3hZGs-JR6stv8)OS2kk9y; z6>;2veD-mW9-qR-PTz^GKNDwn0`l2;5O9|i^4TCTyay5aY^+HG`Rodl2J+cEkmk84 z$Y)m@RwJMBV#4kczn4=afS`OI{VMm~E0dXGZIAfJuEb-x7hYQ&cjfqeE5R0dUI_Cfizpp*|j zCIT`S9(OV)9E>&KlyIgXEN1-z7J+>BM@4Mf2lCnLiuiS22J;5}Q_5yx!lUXj0x~F* zJsm9{a6fX{w4I^__j+Ssch`w?ZojLn@eAhuy#zjGu*;eS^&l zv^|9RJ#%nQBEuen5r}s@=I0~xR2bY&d|1SMEUiw`s@{71M>@GWrL2HX_Iew z4@4Y{h_8ti#LPvYBM?U+vJG8D+al5y_myZ{$&j|*N|deiuRrvBDx|H~(Ak;j^Ztlq z5z7%5Bd$bjNBkfnr-F|n@)KGfpH~sH(YY5RUW!cn9J(#Lppq1Ce;6M-cyp z*aKIML5RhOGZ2>`Mi4h3z8~?Eh+jcGfcQ(qKO@?>Yz{yyLY#)k3pT%+nCc)b@9ubUKcjwm8C{vBXdyy;PkcR(@En>gF@XGFA+a|9{R zn=^BGAB2dvZ7IVmD$Ve^Ey}#@P{g~Dh&YF$h_@CIsbvX7TM$LW+aR@gXB-ZSz$qt1 zoa0E1yk}9w8<>c=hM>rSpT&D8MZA%U7MDB}@qQ^a@+LwN?eKe080^9dQu~&T@-OXC0d+8zhGl zL@INJDI(5JDdN0vI4A;#1Vvo-h!*eV6!G>hT3owQ#1CVnE#}HgF@y8!?1t2;M?UmW zYht()HTcvQ-Q9Rs4d?#MG5%EB3r?pS@5;;hOo~Ui-FR26p@wl4krmA~&FjXgzeV{{ zZ_7CI9BhTC>T79SYP_p1JYw&Ly?Q%guadpIQlt>8&f+~cT>#IX zI7v_;?Uw>^mF+9OfM`~}fq0~?R(Kaa^j<8D0ZHFHIe8^o6iaCbDHNq-T;TmBzr*Ms!k8FOkl6yZ4LoY+7kQtXl zj)_SJoFeK|PoZ&w8a$#*-*7hBQg}g7FoF0bPCOxE6>}%dx0o&D(GiuH^DwMor$ENJ z5d&A5PM(m!PW^f0(NOcp1My07(b4AH))!eG2f*O@jAK6L)#lyJk>pYLL8$H< z#(YP62a(4CF(3APo%#-*Fu|k3p|gnNc#?= z{lud&{mWHxFNb~lvgzfhzXtmF#llt>&pc=TRVeS|FL&`v&|YVLwk!W>WIFS^fHxCE zgPFHran-a1GiFuu1AiwdOBb&DQjZ&grt2k9X9obAu9QxW)N&T3wsggUHzrN8 z3$w@JFjwj1Mbw|u&G`B%(r8u3@L5tf&g(tcw+W`j3k<>lrFh|1n7l+-2_w}bNFvP?lu7@!g2Q#b)YCaT==nrKXo@h)f$`Ov&&)#6ZN-C}| z745i|T0yo(Kh@mHYk86|W2Vm7!7>Pj=cSU7PeU21tMLMsU>Z(~w`KZ_xc&}uj zJzUnTBb5MKr=SCFMSTQsZr0Rul7Qg0w?pj6Ey60tWJ5$sAD8ch&>0TKPAN=BJ`8g? zd2s}`)fqa&!PqJd+aZODF+pJ!kE2g;YwHj?!@($)V^l6B55gXsntip$!xYE`Cm|^g zMw8e>_p6YHCq8W77}zs?Dp`tjhJ&$B?3uF5#a=z^$-OF}M;$m0o;Vl>#NGo^I4n=3 zOq)6$5A%8tQ98K)GpAKeGum*;g82nQu_jgkA8K%aThTsDjW|#BYF}h^jeb?gZEu^{ z8!q-H!=AfMlBJ03ufmz|!V%dg_G0}f?RzM7|0TugI3V`MNh89r=M3()n)cykYjqa8 z_xGgOJ1GUXN&6l~`(`^0OWJXKJ#jjYt64Z6Hj4gMOvs%fS^J1f;)T;ui1{9a>AwT8 z$K(6LHOaDNaX;Yk!~ZXwNmCQ{!|@ z5qo9)>kHu*9qlC?lFo2C)&!LqD=Zy&!C1{Zwx0Hq;dK0Fh%Q+zr8X8hEa{}Dy<|8Y zm&=L!eYvmwS}qJnFkXOt%iw7*8BRymcwNYBca@n`jJoVOa4?|a#?>(Pwo0k4+T*BU zjc$7%ouJ#XTodcka!JHV^7eV)bes}<=KA;1F4{|m(=n)2H-ztKFg#JNh;!rFzGOHZ zU%pfqHSJr}@gn82ml~(zkl5QH<9RLY@%r+ErTSlEBwhAW<8-XOOtROpwZ0F`-(-*6ow1YTkln?$Zgo(mR)|v$PIlh&H60b)TfWt{;ZK5M%$mf-FoKC`swJSX}jLI=INdL(yE^~ z`w|F;CkN84iD%Y7x$6utOx}DNF6;6d2bUKtA8d52aN+6lf|>+g=arwriwCCy<$D($ z-RK*sW!61MdqIXa;;qPgj`p@rvF{FFV4XTVOk<=Rz5x3L*^{X6%=)KPdz@G+C$JwZ zk9`z7<);N(#Q&Y5`ZteW&ruX0Kv31M)-YAu%)H}U#B;h%*1CJ z_{vj38&zrb%YsHpn*wq|O)GIkts^6Hp*zuS;eYcGxwbfVjH^=rOBS2oi;XYKT4BBI-k7irR`+ ztpM}`us=oy#~L6AVpCq|^Ev6j#!Ee+9VYgp|>;;jlc#dnU+ zB3Ji$jdh{5Q!Jo}U!8DWR-%f8fuTgx@Coti(Bg1SU8uRTIf@HTgObnY?O_UTD)P1O zlqQp@fM8(1tw}!!pB-%`ztjhFZsm3BDCy%8l2L?cbK zWTYuST6UfiIxUT?POQSJPBeb@M|m%bJdU^zaX;b##Dj>35RW1rMsx=A4_E9SR#Tti zzX{8F7YcLCb~ou}SSzX<&a6PcPq?E!s zBoUdkBJiMA=V|rr$9YO|Lcb+YPq5$6@y|@Jf4RHSp8oHmJ*60haR8r0{HJa_r*1qa zgYndj=d=LNBGjwgm>8=EFoMJbJTA=5o2zP?SA|-w8A~c7Sbj}c$XJU)DLivqzcr`Aq&UBiXyi@{2#1(~>(xO;bd|L-;ch{REDM;dX>DzetY~WuwHN@SZak;| z5IiT>^2N1!`7c>yIsVw_hLlQynPi!-N33!G=5IwzL*k#YShE(FSgY#s!&TCnHEm9X z6~}SEGV6EKsZZ-iOb@ zK;oU7{gE7kO;7ODluseR7Ii>~HK4KbE^zgD3|qHS^_oa)m;;>nkBRr}yFUiEROu{^&1k_u($jk#7i1OqiSE*1BKsb{% zGp15mDanW8B2%5A`z7nSxQa>6<-J&e>Vc4HS=a}T3 zPN6fL&*%_Jg?iQ14Tgsf>f6^If!7Sr_gnLN152d0-BUsB;e{=YpEsrFWj%?Z*H2;S zrR5SuufN9FV-`ME8w~KhcWuaR-;ld$1O6!*7_gX80BeH=+X-2Ng;#nPN;$;@i*PXV z?eZRVz0-18d_?xV-Y;%M!-n`RUq%|x{z}0N?Wm@dhC!)^Q361dw!s~`$doW4BXz zznHXA;>w{4=3)GgR)y ziR@Icgr6t~sN8G8vU;1Sb!mZ+VW%s$*|0MdyUDOK$y)wCxb`UUKl*fsD02}kJ%*^j z|A?f;niTloF2fM~@B3i>gjY=k{O?7ue?%1UzdGz0+b`gMn-bXv4XeTbo&b9Xl{NU^ zuM^o5iEJi1%At%CSvOFF|BV4Vna#KiyW$I64)!Cotik_cJD|b;Dv1#;p+geD|4JZWXDIN$YYap1KYo8Ym^lFddjRQCOcVU?J75-(0r=kzP*t4Ze>=g{ zqx%&2-+4%|F9rN>E0T9$Cj|WOD~as)z;YJ_{O^~EEU^F`xqc|BIyLy;1%}n&f2D>M z@V^VtD1s0H{O>9dfd37HB=3Dl1N?6y(tDZANS}h_d5m!1V_B zACY1R#e$stV@PjP=|KL;SUNjD4YCK6JTIRxGIP*;4gQDM`3U~^5QG5#`x40cU&Y2s z=Qz!J3dtNq0srfR+^8(krP@mR^BmKYJsXy!;PfyNj1L?D)rG zX@LI`Snml40RBfp@V_5}63$VB{~b1*0{?s2a0>kIxZxD|-y4Qg;D3HtP*xQ9U$)`m z;D0}dI>7&4MUEf$p+xY%OCaEwQQ&{oU^p-p_+KLuw=ie0ZD-yJhGR*C|IL7y9SQJ1 z5`zED0OfT^ga0ixoCg1ELB>3Ya!>TU3PiyFRwD`UzxN{3zYS>x{ zxbA-(k)N4ejj0mA|Bgas&|^qbz8{qG!Pj8AL;;x#uXi%M;T`D3kqeXbs51+=MOZ4ay9F|9#A9*{8HVBU+!2 zY592z4#JQMX7OM*oQAjzU!B|YY+j)4AOWsQ8Nn`JNh%IUy-P84K>+j&0%8JcNJVTQ9oWu{G=F~!Zw$By0& zGpA_g))Z!fI1`kaTeTTe{07_$80_eCFmn~Y*049HFf-Gb*{sZrGR5m-W`a2OyI`gu z+ono#Th=I3XhW>gS&_(FR{z}&*^6}aTsfn%tUcS5oOJ78|)WV7u6 z@8xSbl)>iN0p8BJHX>VK2V%nvEDmS-t;iZ}r*CF;Z=kxMy`sR}I9bFhFt<)}fr5S* zjNdZW3odeS1y(vwi5Mg&l+=ejqzu?$#5g1;dyQinS10vx5A|@=VsMp&p(I=-Av-_u zWZz$oeD`aw-rqB4@O3*|i>JS{z4Fc{S}(j|&Zzu7Tm9EAwSDW`XJq~4D+@pTxliA9 z`}r&PEWh)^8xB4-;61(b*8KDxwY6WYIk5QySM0P(zWZ`npHD6SP|1UJcfXRi<98Q+ z=`(!r5kxFTEJx%cjpc~{kG*dJjHKg?hu0~Se9}=9)EAl@m<@1KH<6OBCFGFPboak%H=Tn2}Mt?Ob0XOZX9v#3< zd+rwfO#5-%V1CmccB6izC-+B?tZg@1Uz`KTB_*4Ive`bA$$GPF>PMN>i`T}~&n};` zlI61>8y@!Od5B}lh`@Uwok>^TM^FJHgw_X_Ox+u3N@c5%`S~3=h^HPL^M`?#9>40|D;B=Bdn|@03uBXbhYbLX<@8ZIZ#I>1$xB!tGhgTwYB7PK+TLljweh2X>#NQ*n zjhK%H4kDg|Sclkxcpc&`h)ZY0Iooa5EmkHc6}9M7vgqA&Ys!tIGx5O69boQBys&FB=$U#Y=%-fDJO|j zSuq;GQ5!o@B@64!IW#SKrAx)4PdGboeHU>~@Xt-WI23pNyvaub7DpX}1)lytN7 zU~hwnlytM)z{O`^OC$udzHmx63yYOHS4w`fVsJ_~OMxnf{AP~tlx`;P7$6u@%5O)b zF*v20DY#Sm&4c9sAsWVQRr89w-hnYS7Xpeybe)V_*i-Zazuk1DvUKo4zd#ayXXoE2z0ty-z!|*E)tx?w(4MyFiMPrkbv0Pu+AM)n;H`5%i*Yf|)o0~h< zJK6t$H^;Z#J8rwT2$^$`dHi;7nJx(yR z_b$kK-U87O9`;VmdI5wvzK6Z}SW5V^?!4hb(0&WrTtoX-Zq^+)xUzm{ZPzESVnybK z8Z#ip>-(5@6yR7CekSx-_AqN@`5sN+7%d!gz_B8MW1OVSL(1yRDV{>=x8sI~y|Z&& zUh54F{$Ru00Zd%1U6|`MV!q5d4`8Stuo*b#NPr>Qi`@X6b1J}417H(y&cOgf>jAHY zIU6o@$AMm>VQ48}H`Y+q8eUxm*oO2<4MQb>EQfPFmJf;0ExOX&5R2q`t)(hKc~m7XYOEJPku0K$dT57&`9KdcO&XozpP45CKC2 zfYkdL4X-`|7(n_{8iw`*Qm^{~KLWT1koxTg#BNvkb`3)}17bHUyi>!_7QkM}jcRyx zJKzSS)0P=vi0^Gs-}M@XssPy@l^TW$0a>mGkmYf`$aa4d5LF5v(=hZ3AXZP|qZ)=@ z03;uOy}$xA{FH{FCji-B4rv&A9FTmE0Agn?d_cp{{ebMBdo>K*1E{VyAhyK9yEP2m z49M%SQ^U{>K=N$^^n<=d!%#b5D{w@@P%|L;t^&luA-rD0P#qvv?co{?LrVd9U8*&_ zx)KmF=gtB2g0DowP%)qfcu>PoA>d5lV>Jxz0z{sIe!wUoWO7@sph0k!cLwlk!OH+= z0S^iu0L1nlF0Ibb^m5=VAB$PVN4wxmhhEAq`9i=d;C+DP|1co=VFgn0&j6%cruzZA z00FFP1U3MYzXC7_2pP)mcqt(B%>`sW@Th#J3G4(shRy-=T?GSxmjE6HL|Yad0z?}Y z>;=3Wa1S8bzJT}dWq`W?*8%PXycDn>unuqwU@c%b;95Z5r>g;L0BZnO0yY9x3B3$( z4e%1cX23$B2LLYy?g!iecpUwja(Ewx0gnRWekeEsco87C`Y!}L1c>{h-~ixqzW2fhmseY;?%(E9<;1HJ_?AFvw`X5k820nY(!0L%hh z4|q0U4d7XTg@Ei209FIwBN!}D72ke=^w&%LT7ioNo+HpJ@V#8k_n5%{CGc8-T>{Gl zmI!*# z0;>fE1u_x;z5(GsC~%L!et``Fs|5xH0;v3}vo&wX*$xt_rBDc2DkkGfvL@tEsPSGK!kPPTjfRoU(>+p^ueU3Y?V z!1V}H_qz|c-R>jqXK*~~e#Px~zv({i&UWw2x;ZP`eS6mKESLMKtY@+yGwVo}2WJCW zM}Zy7dK1Tf&km2;<(SVAIE1r1313oIfmoAo_?<y zj`w)?;<(>?0LRC@hmd~Q`;_+xumSH2IKJXNhU2^5ejjrBZuaehql4YPJ8`_nw-?9# zz5_@(=zH9E2-soYQ#d~38^G}u-!UBD_4Q{%uWW7~s_+zgsNE036~x{8Cj>J5Dhc0> zjCTHP;^-sBcJJ$W$k6YBv8_yBhfMEAe`Z)hc}U-f{>0$R)A(V*`Ccv4j|pBmQsaDG zk)fFRalS?5{TK5C?-zUx&Z!@t^9+2`jkwvXdV`AWq%AbJ6_6k+x6Ma_CtG^_iU#SM;*JN7sFZ5lYSib zqTLy8W&1#H~h|lN0zf@*^7C&9_k> z@c&BqZ)ADEe<%1Z@&l*;Plj($KI9!2{caNZBf!Tnm;DJc%=O+(`QV=_=^qjK9?%$G zr+l0*l=QDsKJpmb%{3_3j!$7a$~3l^`FywI^t?`awIZ*d`XP_8wR{fc+3>%oJn*j< zeh+cP-a!-$`RQP3ltxI>Ss}5A?5Gl)+F*e&FK- zzl-_;pC$NA!RHHpJLEEbx!@&&Un=;Qs4vnt34WU3*9rbS%4GXeZ-$pBA9XXfw7ZB0 zaQ{ku2Phv4FJsG^@4ppb0&Q$jzfAcso@{L8K7{&?wB7G#;+*#&=P3;IqDp+9;Pm`S z{C>gdHk0@P!9NN9k-+x~{wV53{2sxBg5N1PJ)AS$-0$@1LVS;;za{$Zmiw7+tkN%x z8L#-`=}23BuOn`24`kCR{bYwL^aPjEXk(RkIG#TPE2Lzjn+PV|0i4~I&^Q?mgS+!_!cvRZ~SO641^`kubd z+O3_mZ_?S-*W12zP3O9{=13Q+(nS9}oh_I2Mf&hnwsP>$6KRh$;-l62_V&#krA-~p z?QNX~i*#&=G&e_@OFO!n``Y;(_kY*-;YyWAM|X5Aax{2vw6QZ<3$rPm zElcQn1BPHCFcZ@R4wa`vyGMF|7b3B{y+2ur9gR)KPlHpweRufy{bb!*si%kXRJEwC zZf$*v6RWz*YnH{RgL}IQ+XgT7Oj^5a`Leak;I^$6kJ=Oepqv(SPU2f`+Zc7Sxz&(# z5}6ab#7PK9><1?y0QMQ`Xx1QRhTvq(4k!t#4bC|^6_QOvoSc+!vh{c%Oph$WWKIT4jZZhHlB-fm)&iuwBbIHi|6CCpEJG$(j2 zOy9PZ6)DO|M|Dc5h&e&b*ksI}rt=uri4NM7r)VQx*(sr-TsM_ddN~vH{iGPnto9`} ztIF!j915y*N|^7IPyvxx9+WdZO@%?9Sw63_5?&llD6c%LV!^_*&aOBs7+g?R4st~q z)5^=r7Lu`iVWlS6{61b5Y22iY@~!G@YVS+-^r*KX()oL==6**|r{ni6t5x=YG$rx) z_*{)Q$R3HoxdqCI-_2AQs=r744ygj=Vf(`>#t&JPgCBnT2~5B|O%JO=NcQ(=)Bxb`ga8j&|k`1e7cJtXTW@?dT!z5l~4N%|cT{i32DniV@+@nHM` za?(!)ldng=$eS)%28O0ztPzvjZ?DMPC-VH*SLF5B2K^){t{l!pKS%$T>s2Sy@8~n* z0g-n<%~{eP4<9m!#{F*==+Cm&)LixT;qbcE@f`e`g2Bj}IH)|e9&GDqY>Ck4Uh?&QIH|sqQspJp zH?zOO?~1&4ut&`>BUN6)B^k_L;iF@e(>FIX`=C=Iwds8IVM ztvn}xg+Iaz1q{Z=`Ro}Qe-r&hhQze;oct9&%*}UOm~^HM(WgoBGW#nu^2`W1RC(+* zEDrtUvPEl`$CM}y>QlTQp~9^vqF)++h1UeNoMH{Ee;uMcCx3;viah=%!0_4-qX8mzHrE4CRNU8*Idw?{T|yDHi3S^`fGJhTnU6z%FBOb%GWLnsbxYll+ehOTI| zt7EW2HP=we)tpX6_YK7nU83(d?WrrSz$*Ow+1c9`-3m`#QQhY0oxa7hq}0ylCe5_d zkj0t|g9v3?oruh|ZEMrh)~-VqYs-^K+x8PtmCTuhsct@G4b$HgDb*gbJYC~V`r+~o zSsHjViE4tK{YcNyr6ms#wrY0M*ndn?ZC?jEcf9|`65#UBbiX88Vs|@JGOOFr&Y5_r z&kQDAEtAilC85F23?^0DxHjzV!x+*Vh1$w*UU}()Il+`l#T+536gz)eX<0eE=_NKO z*jw7`VW75UNmqLp9Sg$CVr2=PL6(^E&d{Y$*6caT86*AR#X_#SLqZ*zpG+M8DD&j8!oYieH9J+DmrQ77S47- zhJ6)n&d{&sIX9fMuOg?Jp4~f9CWk9#F%*=O3|>#<=P<1OE-_2Ux>&ADj35Jt-F%=W z{-1L5VZDmoYyArlKZoXzHD}1x+zuFbonfxJdmqUBeNMT~Ft0nPAEfM6 zD3YH`DYqB5;e_1E?ZqC0(Cx){f!vE7C~(fYws7c6$-4fOdPa1gRflYPD*p z?LcoQDsC@mcQV24#cUAR7|QL%#Rj3QzoJv9xV`upv|WM-w-+k`;P&D-0D(Y!kzT7)Mn8}9I(6?+#Jz658l5>sw3F2mVzV%qJ+ z_i;Lk=-eDylbwPHw-+=%3%3`~0fZ3Y_JX>vLKL?by!+wyg1N6IL&(ERIMKBkNMQ6Q zaO9waCb7A|fZL1tVA_vFxV<2t+lwCn-UYIDdqJ%grrcgUYcS>Z;`atqZZB9P#i`t0 zylXJ!_JWP5(&BC}SUI@8cmOHhNjUiPCk1?6TF2~C5ZHy3+lzHLVaHT%FCsWuh)$y1 zUPOVgw`jK)e*wn&!0iPA-Cmpn$N@{cy;x%~?e=0G5~@Lh+l!R|;`X8gr*M0*9EslB zaIV~5tOv&K z%_VLxmKjvLz2G<4DplNGuzU4_2DcYsfFJU-UGT>#`qUo_fylI< z*b#mVO;)B@laB~yGD2bwKYxeYi{C5YqI|f$;5Y9@F0W4WF>T7fOWvb^svJX5qT%*p zF*KiiJ>KA8c{c$v0d6lY1HH&4lHH1HGG5yv*K|P5<-HzULFlN0nRU22_$2%~xLkEE z4$!XYO#clCKSzRVI(nS-0x)emMEeK$EmB@&7N6%OoaVmD^O%8s2vKjsfT#kl7gEsy z6vTA`Ebl4ZN(1^|iafe-DR8ROjHna={4B&W{7OlVqg_~AB16a&%^ipB9n3SH__PHX!A*k za}lc%YY{gh_9K1<@t+YNLVN=8H;Atz(wf`ph-V{)5$h3q5N|}>jrdhW&LDn@_yXb| z5pywW@G(_}xCC(>BA=Yw5N|`|m+#+1JcRgb#McmE@lF|v=0Lv)u@12Xk>e}-2?tzx z>5&h0lK6xd631wgICjaagPa|Z#0f(&AOgpBlK21+ETv@SA0kqU z>9aQT>ztZ0KPSY(#o?YLPEbW8$9j_Z2oMs7Qj$2S6cQhLB=HF-viK0EF0Ua%Lq1W3 znGa{C@Hq$)m6kjlQ7MM=L}BJ*ha^6YgtSBy=c7ePZ-IkcI}wG%#~?|3G8O|OaLP#% z=QvU#pIIdF0VX7_AxN^BJm<5MBtA%mi%TAo_`H-7`4AzAPZZ(eQ-mZwR)oZP4oQ4I zNk%p81Bt_?kU0Ay7bj&xQUfJO96*J{RS&s>I0$I~C`o)ZPfBEeCW-SY;o=mGBu-q4 z0TDt%;v`A9xSk`|y@qVd>aqcC$WE!1Qt)S~C2t=Ud#L$gW+}4FG zbJz~|yrq$o+%t=BXAj%qF70mD+qoy-oWpjwqmhnz;kFGucnNc!@=$$kSI?&2dBb+N zPxcOFmr`~R(%qn^+_ZbD9d4(+^oeszq4xaRL`K}wL2+IB}U?>0_lZ!A{ZGZ~L)I(XznjsK; z3dd?n+4aQqpr9Z8$Wzb&h-bdC--(r#vfl}r%6=!)S0WuNHf3*iCLmXh_|8GukEPwx zAaDp*c4L{28JY!}DsQ?#d?QhCm!1y#J}2;e@L{5nVm}jP>f^gi&v0O}F)xq}>z0dI z2_%^CHB{D)(;gu=AvtMhxPUnFln6eB`9U*_cDAP-4=~-vpG6!BnjaC~qC7OL`R4KS zN%%41w(>bOq@BQiDgWb1_zT3*7My)Eyn$%P|AXncVCEaaGpG;B?-BkZOvfgN`R1=X z37;wQxDmy05Rvi&(20QyE!qJz-}ucWjtg$S(Hl=3%Wm_HT@GA3o$$XE)Y9j zo|OKtN$Iq&ZRby8eks}DSG%@=Qd}Ris>QGQ?WVAt#sCqnjjY7&k`2NR=`rJDgN-s7 z3|u*uBK3(ElVH-yF`LZ}jLpWH(;%6qT}@q_v#8HDVOFWJt<$QHnL$dUQMz|cPsWCk zD)9Z-8cO$xz4?+qooxn_7PAL&g4THA#!}L>ih9#het)M40Arkl=f-9S&yCdzWhTHF zi%^KR^AIzrplE~GGcZ;Rw8;T07s1iKKvjDC0`n`X#2!IIuIVI88aq3;E^BUyEQOV= zrf6GNr`Y1+x>rIv`vL>pMht2O3|p2TW0g}_y;@Q*9x)i4LmMNX9SlRYFVKK-PX)-s zFl5!>1KztyNU<-_-iB`_8r!QBH{{nXTW=m%AQ?G)<})JNxKkiE7@tRPA$W!0Pr>pNudDfMQyp@<(QC@Yu z-oeIcI(cpQ;!Wj9Zoe%eZ;r^@0(tB&PQk8UI{OFwnS^1c2G%{0XAjA;jXYySB3VE4 zoyY;{bcdwA-Kg)?cENHk@;V~X*0lBt`guEUtba#J)A7t zLaID9&O6#aXu$l0!Sv?_3>>Wb`VCI~IkWwPR*@&&*=prLlpzde|DY{NUfZDZRDB)o zA6%1E-)mCkCH3db_78eQ-YT&((32`J;gSqy|KM9QbYm@-T;D29X}q-Zoa`UCPSg2~ zb0n91FK&~XR-TjngWOp0ZS{-$^HRMZ6$%=KX||P58iJ1*1gB;UH86qnfu;1*JR!M-bXz5zL(|t^uWkz z$MG!R<#$#8>1ej~C!UYR`9PNS>1VUX-iPj|Y$N<^w6&jU7SagE0X~~GPNf?@(kHn3 zA8Nhk+T#t^oOOI4%dgTm0B72GC3nny&t{ERbR#dFoI)jM3*=PUQ-nU!6znAtlD9ev_wOU(a`a-X< z!*q4M$J%Y2(4L8Dmj<{0Q!cCjNplU^h9^U#47*HY3x(I#pDOHg0c zH@3ryxYgL)toJ$2;b~oCPfH|<)1IEjt(Ub$Th}O01m{>V2)qh*l-nBHHFvKf)kS(b z+BywQkruc2^{j1dZtLq^)v3%iYEF{z8E&M#7Sl6)SGc;bJ=)gY-WKUmxsuH5vbZF( zz1D^l!Q^t1slEtHDJzykTP3y>mpYH7h{a=_q!BC8oH9O-y*AQQ*V+^5ZS87rR*I!p z!zyjsvPB!)?rVx#?R{)4m=BjPj#(o)jil~7S)E;-s~fkpb@X+>iYct*z?+=qAoaj^Y7ZpPe*IcN!Z8Q)Lf99HJj z??=pV-lP@?0+%hEq!f*20r=CV45zaNhT1+{Q^^umH{5^IaR=_VR>(g1KII#`CYviN ztIN)*YA#=BA@bDPEU_O#(>{kFa9FQq+8gQVo!3~77s`4! z!5q^()4}F;G{V|a&)mv+8{%};Exp#JC2^#FU1NJ&b0TSFWAEZfq;qXo zUnl&WB&OAL!NywK=E$nfjhw7)O-#Kw(t>aCol;jpoXQnR%(be66Ru`x(x)|C-PpUy z>TBza&abGCT759<*3ubi#_xI2*i+Pe^}o8S8PZJ6FYYq*I89L^G=!B*Q)aN@#O3X6 z-RmMf(Kg(hiPV){J#E)@VLllrYpF^?`g}KAu)wF}d#mQK7fc4;?EJV$!#y6RfndiC7gYV2!n>sr>?)YXhZOlao1tnS*}7P+j4 zzx7#BHI=XH(vp^U^@uPF-B9U-1D%Yiz8iPX!$GkegoVEkRU2gYAgu!bWD0D9Mq-^TGqClgj)6mr`A$m zku<$}qk0zsb?IH!*&OfA_6I1M(0H^-x0=lG5X}5IOJ3KRyD@1367LP#KovYmHDevA zE{L^comwm}R{aKkra)LlYvOi7{Jg$?$vTZ$SQu``6lSdwh7rMP>cdayozeEKYa>mO zw#{5?$F708O4i1n8xIkqBf&g3ef*EUZBcu7YooaY%a!`-rf6ep$DWx|eYkRqM%Kb~Vpor{tfK~8+x@$=O}&PK zm$1>$Hbni*x}>q2!$WPPqp`acj|$7Y)LY+cNEmh5r?ncf-Z$vnH^!MdEsiDCUE5Uy z-w4vI4u;i)Ny_hy!2Ln99!%{0PSZ7$>2nD*H50O5etT+$%Wr2(*9itmufUcNH5Q$u z>o{C9-WZ(EK%LkYmxas1=?vx~31q`74H#)x8&GRDZp3z$>7Xe*dQzXr6qlb#R2r^y z!ct1KX{ByYRxehLU4pHiv2=UpK@_m+P0N1**ouGLG;FIY)AwPP z`8vm%cS=4eaW>&(6p4T9VlAt!uv*&jkEgY@Y|)Ca6*rLef$JMr#inuWBd`x#y_hC8 z?Ua?Q4_q^6TU}0T=pbj4SF4%5&5@@gH=c;`;n$3^a3-0aJ`{kB@2X-f zmn@aj^>NZ}dDH80fv}M$i7{Z34#!w(Vrg>nj3ga(W_eSR)UO%HmPTV*qhKf$n1-cT zlFFP}&XXj5xx|o0N}VJ%IJ2}%(iUfy9g?)mndMGN+Uv}+Uy=?wvpgY5N1Rz`oPzIl$a)@L;V#f8ihZP33-1+bIk3p1OJMn<$GBd&A&**);p>NE z$GK)9`#7%>H-3!ERC0n{DRe`XjatEYOk6z}$xw)wl~ILHo(hdVx~-spTfz2i_yM`d zZ!wK->!wUawQNaK1y_92B%eZprMMcSUDdhG(!8_sR*iY~1}Hk+Yq@=Ftx6y>QrQ&K zOfcmdrecjy3AWg2sd*~%RIbxcS8ZSwBzA@pa>!ZDC_0ggqMrvnKaaO#@o-2{;Baesr^w&2|F$02+&z%C-ak8#JqARI{WlQE;6DrPL|Z}%L8FZr z4Jt=i|Jm#P=Kyk)^`C=;4LJEYk#k%9=VDY+Inc6xni1NA=ntWp@5c$cyyZVrDRL%G zsh5AQLTeIH+J|dr>O7UYIT5`z5#0k+m8onI=6u7T$`)bHPYkMU5$5vCVZU!dAm;#1 z=0I(qG8Soh&cZn@;COTL_^iqQF3w$^)j0h<&a$h$uK>7Rd6$DyK?so&&1C2M%{(;pDB7^R6d&Q zBZxFyIL3P$s9sMVpB7_X<9LC`y@Z36#~$JN15WukayN}HbYDJ!hIJ~Km4*u^{1Vt2 zVl-Shfvgc?G+a309bo(t%&iO;dT0#in;^O8dRF4}J2=gm>irRb*YCLklxLZ^&_mr{ zMa-S*DT5LmGu&a7+eKlayncW}*CZSRqvqns8ymWeS{OU`Tb{21S&x`kIFX=xoWO3U^3ibNgs&J(87}l}fGSat zM&#$6j*@a8!?{0iQv4=(5(IX?JeY*@zYT=q@}>aE0hOkn@}>eQ#0fiI-ZYoX@>~my zCWH!t6A1zZMHBu5ki${I6xQVpgDJy>p06O`1(5RJ@V)}z@hiPXfjVML-eUl{v=8MU z*&E0{j1x$(au+K~Ag<|!AaKAPIT|YDkuUF0IOOifeSTn4b|9OBfy(*>DdWoG1IVvI zI1O+9k6VhWOveeUGHw~}+X{og9&1h=5Z<@rDj>$4a}Cf-5XY(8Dd#<$`Y~FLTcA=W zmUj_A z{&*Z*dFx2!hk7OBZC7DC2yDIa6EPg#3giXE@snCdJYdczw~jby&Wl=eevEUDe&f-t z(Wt*Ls51AM^BbV-WaH7XkxI*k3RUJFb6z(nx;BRJycdDz-i3pI!t!{>_zDQ@7!$(m zo4j$yp~@phdZq%j@wCAEVE~WE69pTe*PiUW1)$`~}>J4PyDq zK28|}q{O650J6#;g+Mj|Va=vYM(^AVge^Zs86nQO!!T+i#FK7AIRRHuRv`O(QsP(e z@MeicBOvM#8@e5>VX9P<&uAY9M!V&cA}d8*;MN^EsfrAt&qXZvmyAll`g|W2F{?o@-FuTvsNd z+ko;unat@6de#!)x!*;T9tooSOM!uI<-SJBG+bEGC^jFP27}VE`PejE(j1z2pf=OA za?=x0Gv%44wJ}p3K`X(`OFKZ^SDmHzT zO{?j;1&vmM-YH5>*VpnJiKx+Px@uo5uLYMY_gU~9nPF?A$!@F{@)64rzt6RU*S8g% zQ_jRnh4e~5(x?7V2t=m+*pB=k8)8j;Zlj^!@0xTfFcB+Hs%a^*o` z23OY_U=lyik>F&X22+8S9iOs@7=?kkadGjrENi}Rgw z#+h5OTgwIa@@F zSDj>8r_A2|UxPbs=@UJ*|6D{$sIoi}65 z1~6JyS+~HQrvg;Ly@~k{0yX9xhUbfVo1S)cQM$6P%X7-X-KvaFLL+6H_qivV7T47k zEwBF2zyJ8$u964FjC%3Cf4=!+hBAy7b#cEC0{5AKZBR$MT;n`N@tyeE*+r z89DhAV*)ol8l85_%Yi*#S^ArAR6*gDi0cvQa)Gm&ort>;_aYuZJcM`z@hIYPL_Zph zI}jy^RfsDQ*CVzfZb96MxEpaV;sL}%h({2QBJ#pPgtdzefiNC7IPv?W0Xh5;zeaEl zXZG~*yaY(+P|t85x;63hcp(rrq3MZl!R^n$OKs<$F8FtapEsvHKW`J_CY=M2UEW=i zf2EYqVUp>ui@uzZ*>OHniRTLcFOur_70F*F`tpfR{vDzp2U6lDokJ1vKMOyHIO6|H zaNc0VjefjciJS8IR3~oQpA!n=MqX8tJPtZcH~QEuq>`Sl-~ax(t=G>%8h4>s4PHxL zU$znJ!D~Z(SthR=WwX7hBlV_k=K9*pgQ%49cpn)aSXZ-X00321f%jiJd)dsxz%c(T(U$^woA+02x!k(=%a2d^Q}^fouB?COh-34fDWJV>-;P=H zx7}!c@x>2s{qpQ7J4a+KpO?RD!PPtd?K9_nV@2Qf&y==4J1)0%R&nS{b#q32Vf(hP zf7|oy7oPp_$g7Xmjyig5)t6@X{QAi-u4_GF58{o8yw|^q_!#0(5nn+3BVsNt0IkUJ zCyFJA-0b1@&o)GE&HN)GH%<;A{u=Q$L~ezQMJz>Jgh;EtEr{14-h#+&g$EITfH;82 z9ReQ)*@=jA5HCPni^%P;Er_2&q-Ei+BR-D!OGG;6cn>jvzJCT{2$5Fmnh?3>XTRn| zoqYg--I%1u5rxFrD@mNn3W*yMByo?T7!ZLw3M6rRLAbaqB#G-pA#ue_5*N~9teA~L z61Ss-#MLTET)Ij|uDVI$VqCbm8As9_2oMrinIv)fE+n=wN!-H{5;rwT;>MVW=T-_y z+*c72cYsLZHj!lHT8AVqe1wY|SS0lW3W-}ZB&jtyAOaU@Byp7~T-?1TiThr~hzMK~ zlf?D0aB)M2B<|b@iECDp_@osQ_mdz_?RY>{?legX*J5Pm;!H@~pd*PJeo`-PGm*qe zh>*DFMG`l_BqO&EN#d@eaB=&OB<>0diCcjrad)s75P>_OBypNAT-?p0#_ZuBai330 z;eA79?wAURw+~629f?TpwUWf`S0QnWh9vG;Nh#c^Ac@-+B8v+|lDJwF5`Ru0=^KcW zk+UF@xcCqfw?|0ga#cv&=OKxkJ|c_1agfx3D0*>co+M5Jg^T+uBymeXWO46p+*c& z>BWPjn`MzxezWj#N^c)TzFD$327Un>W#lz_&1|o{Jr15 zLFL$Xe~b3q>&@4k+GM!?Di7y)QmRiAm#oD{VEFb9Bn#CkSW^sd5D&RP3yEAq_z=P|Lx#^067x8HPN2CgkJmD`8L|I3 z%H)-4RW{rQ{J38x{hrNZzy%T)?sMovQJ8rx04X@XCp?8eWe}Q+j?{yLbpbNRk z_o#QWrcR7gi$R^Ksng@s>7WKRb!wdI^F0FUg zwDAXR{7&@gHvSSDe=0rewi_Pyj>>)A-Hr(&=8$~T@YDDWB@DRLvcg>X0fwrDUI~b$ zM7T`D&>W!$0j~wUNW)N}(DMMV1KqD-$RqUQ80`KI^fxsO4FKMZa-RV_19ZOm0vI|B z$o!lK1BSTcLcYfVv91dr)G%~Fr-wP8Cf`0l^4$+O3w&Jf0*3bJ^f2e;>vej#PQy?Q zAo;?8LGZ2AFjTG6!{=!jssbcmB_MY2!ettUN_2X-Si?{dkbFge*zpS&Y8VOt@_OZI z81e&>&jUCKbW6j~aXgR6$MqOsh&~R;$F(`uCSmS?1BM24dYJ1v@^N>Zd`|&l!#B(q zi~&R3Ij20X56QO&@K*3~0eu_b4nXGH1_%|xTQm$s0eM}!H4L=_lCK#M|KSD=LstQg z1-@RxP#qxoRsv$l9bT$os9NZifYh%{!_XX|7XxBrI~>$7R0v2t1Cs6m#J)k8g#(88 zE5a_M9|L50uK;3Q9Of?!fT00EYzT*+(J;hcAIQgFA_xx%+$(SoAa*grcWM~gCG>tk z>d_6z`=njNP^+Xj2wV@ChjhB01`O2*y&91D%K*`T!*etYl}LI}U?CtLaN)5Uh5|yj z0Ga<7#sv27S2PSA1!O%21RepzgE{<^hM~hkKM2VD`vBPw?$bCvf<7 z4MS*KmA(TIQ;TrFhM_Hhl-CN#aj99uPy-<4tru7Whl*53m~WTtMn~ z4qzGJ*?=X0peg;%0xSf+5HJ9^0MHLO9}s}MOp1ReU=a9CfaKo}NdAujlK%0PX>VDe!__fVF@-0apU{16~B!3fKn6?Ka>sK(;5xr;h+05&B`k#lSfZZ38?Y^nHLe z!1n@f2HY+5U4U%ooq&CSTZG;X$m`b%xCL;%&}#sBJy!x=4_F0wHDDRwRe&Xce+O6y zcqL!}@CrabAnwP4%ie3*Z{SZa`HJz!KmMfENR<2V}ph0X!XWB_R2$0a?E) zz|#QB0Lfnh$o>}uoC#P6Nd5pIuY(_OI-mte{^RI3O8}1nP6Ip&Nd5u9#ehcurvM%X zB>y46MSuqZ@#|H=0YLKa160=ya3b(MfaKo|$opUy-~_;(faLE7ZK-GOC1pXM3 zh<{JuEdp;8xJ+P3V79=&Ip&=NQx`3{==0{aCv2&@(u6bL{Oz6bmoy4*{{F84E8N3&e+ zBc1_|%YDpq+~al^1>NqFId1pTm2P*q#_euyb-VjrJ6vw}?XKN8-tXFn<5R99IKJXK zM!I{q8+7+R9G`L@!SNOMF&yvA+LPr*2?IDD&3XmLe$Nh+u*Y)`j{7|OaeUl!2*)Fy zXK)ba<14;nI3D-Ci{p;$o!M^puI$@!yfb?b zj(fB3$8mr50UQrzKaS%Q*@tmFlKl*hZ)P9Iai{-gKluH7aNOtLkK-Z#6aGn<)YyGy zO%DLa*wcVc&k$s~4WA|Ht&;v9zQp{ii6a`n8s8?42d(jok;VL=?L%a^9Q~O10m1(P z{geDPhztkO|A-r(QSXeHMXh_+i1H zp*)-)5&W`TjSmR^u;|Ypo)}&e{f`O0R^%NQd@uSf+xKy_AwwJVApVTtk4kx*j4(Ve z{BKG+ziFaAeo5aW`8iK#_=4zz*Jo8YJx9yue4pVbqF3=}{@4 z>ko#zM86VA&zAgL$1qG3{rD3t!!9X*homnOd3OrFP4ul2{>z1bzoc^_LH(W(e4prF zE&OLm`7cO%J+CLujo+G1v>Sb(RY7ltYndN?^`P|E1FWwX*I)2^(YAK{S@t*3O#dyC z{%88HoBa#<|4s6T**?&jKMOLH1 zT3#Od<4D_h^DiKeL|@n@{jnYRG~o2v&d`hdn)q(Pr$RsS_Y3|rTwA8^5_|#pnQq1t zu9t}KkaWyl6+fQ?41Di|`R^1wfa^#6X2JP^9`o-MoL^K@|J^d)+=~1oZT08dAR}$< z^CWnoax5G{emnjM~I<}`jRZB90E9ab$`99~v? zGMSS-bUK!s-mB#x>~Ytbai^Y+S)?_z6VL=#n}cPE7c;bM>FY9tA9zminmbyLO0R&^ zk3T0^Y9>=z=?k{iJi{+l4mV2D&wVGTY_btbt>B3a1Ngl#X1gwK+{Qs!eamYbxVor# z--&n81TJNC*7#aov-rX#^+VN8jeN>9jir6A(qv);zp28etWdPvMSV}`O=%-8ftNi9a|CBl!jKi(%6`} z8d{bl8%;wkDao$X)ynbk+2&?Sy2nZv#!?b*v(g1l36-&gboX-U{LIM}nUl+7$uV`* zfKY0DG|Nq$QjIE8!K8c(oDwRX66QN4R5&G+#}d@!C3UPRtx^}^ETdzJ_OX+R<(awS$xheCcrACj zHkGErv1-Y+i6!VMxOB7_HHm$`Q$mIIlwR(X9#2TyO2*H+llt>h)R(IgOGqy^bMpMm z$rak+dwFKAcye-E$#hRCw*PD@<)tdS5IhN!9|Vgi5D``A!KHF$eb2*hxi| z$1#aY4Ng0gZXRFpBbysT^?8OzTq(}Z9{uGz4t>4{w17LBIyGE~~dG8lgH z_N#x!mZI8X;sNh4S=HDBwStHU_|4jC#eSVr_|iO`(!e|j2Iux3<0KLh>gzFY#R~x@ z)YsQ7TaOn4l0&NyC=XkE>PK?5b?UMDB}oDJ9q(0d!U{22o{@78_Rkm&iGCVO{on`k zHrfRy`<3TDCPPpi@%s+;eX(_D)!;{brKivhfIQ=(UXhaJnf-jzw7W!J1LUcTVFU@Z z`Kj-0?1-Q}6Wgy!^s5s7-H>Mw$vTQW82s#sY{Ux#$@+DRJZwFya9H$fmHMJtO_E9% zdCE^c6-?HTzk@K$)W8}TntriHOxDl*9=1>9`SFq*ug4bXCq+q$2BIIF;4~^ivb^=O zA6+B44v4(HkY}!uU7+oHD32}4_1!D-OkV#Od+yXeV{gCqw%%y6e*2Q-1t5?0JsR&X zN!MdTTNIvsB2sL9eK@>sbzFx7BG2?S8jQ>o(4RY+@$$EmyoZwHO&nC7+5=GzDCny` zxxNo4)pt^=yrlYSzvH-vRW%^*vPEl`$Ex&Qk(Z0#5*TKr%1gLK=pblAUrRk5n=&NJ zdx8Tc0)Jm&m@{2N+cB-Y#tj?bW+hc#6<+pXcu+3L?jg!!+c96VelPQf8H8)(ceRV; z#yf`oB12+Y{dyWZTi~`JMc$=J`h0VamTx;I$!qL}_osS}1rX;b&pZ-_Dv!N}WhU46 zN1`9z@ls*-TsesYXZ_$vHd&r`hR#?l`6EM=r@s_T)o-@Q`>ZtnCx$2w4^1U9S-;0- zCF(bIe!QY`mQ>#+xZ{F1i~7FKYuh@TF&-?n=Qt|zfxo|>c^Ygws(%jZ)1Uc|6qD!?pIA7b)wMDU#FNl~<-m0am_%5zf zc}f&d<2w4z7~Y+u?DMoh1`b4?W5a#st@vLtvqU$04vOkBx)zZRmQv* zPX51j(wyulT>NJ1VetcX+N}K!{}1()9F4gdwA87*&~9I8>jd?RmvJ9!V>Kju4nxc6 z`PR0>Gh^;j^#bae@Y4FFt7>Z&)h$_Bj~55(*6?@b+ECeyQ)IQw**aHT+qn6wQ=`h_dl%%MFasQd%^j3dPCB&UYh zZ}8iF4$=`~j@`jxuJLs^BJOE1FWEO^zVXdikm`eRWKxMJ0KZz(f1=WCl<}50I_@oT zOw3y%zl*lUX>W-zeoR+_6XMyInc0b2P8m4 zP%7-e(WR4cX0Ez&LdajJT`pfvmU$s0>mpD*{7K9EOC0>3^}qEh3KKb zB<}#u{O$z-|BE=;iRji&;&MKNbMCRYKIGXAkoyMDbMD2_3&pbXN6_d+wm*-eTr+U) z_h#pxMV<36!qJsqkE1(3iepy(Cvo)T-;JX;|GPN)@_&nCwv`tIa2?0NlO4{dxgl5n z1RUM@^Kta#UxK4QzYE7e{!KU*SvhBd`97Tbrj2+IAlp;mItX}dQdYpX3~6-S<9(i# ziJ&~JDcPS#vwjh;bWF?*`?K#c2s|TY?=uKp`aBBcYxwPOqVkvH|4AZB2Sm11Iv`r) z0kd+S1CMq1C2^n-g)TtpP{aR-AFl|Y&_XTkDWF9VUZ`9I`Hupnv_j=y$L|y2g3dLl z@)+b_orrb<{U!5i|3%(ODEh$IvVd<5PI!^mqu67JW8v~F`!1YN(XnuOmi;w@z~!0$ zr$DITSmpA}|9hNL!?DWcnV%lesNq=U^32b#Ep6z%22~x#|2?35-(swCdFH2IFdO=( zL^L0Dx24VisuWZ%&-@iY`DyT2{ohJN`QEL5L z^?AB*I*NABtNqhH54O$5Lt;pjid&htj+fcBK4 z2S#rJmY&!Sp>4 z@(U*s6y*mBe-1bSmm!~?91B@Zh0&8^;W2~JlVc&PtkU4{F0b%igVB>?;Rpy;X>fNp zws5q;lqbg=4wSzEdtSb07E1EYMzTMDQoLWoz@q9i`S9eJO*abcnECMJm>tClZ<>5~ za?Ji15cZ{fdUDL!0`g)|Mg}Jl1V$DWvIRL(j-)5Y!Veitd2-C*3v+8gDtKeWWdI(( z(u>zSZ;XdlQM`28;1Bc$d>mRJ!Seo#q6FfaeiH;fH3IbHnDY+!B8X$|&hg1Hj|S*#|}VX!K@#o&m+%je*HOzCPf44VY@29g0$r+BoCsZ!o72$zMU7 zFw?`w_vA5{s!c^)g!l`@BA0IplBb-9X%Xqm07;*ELt~wV7XxDV6yavL>NN`O@kF(wYR!hwC zRG{^9K7{k*%;NJj;WYPMp2u84VI)#7DM3FKkOQgc01Dzd0oJVf`)BB)>8-z;J83C! zzH{7+_zgtzn`!xrN;2*b6vLnt1vI$b>j3kmD|5<2yN}I58fP`+NtYMol)Q9rW90L_ zy?Kac1;IL|bE!i*Yl`luUUb5hRMx*ZZ^pZ;%6|jjQRI7t{85fCVoya3B2Gs<9dQ<7 z3F4WE)Pb&U=)Q(7aOl2sbZ^5pqw5^H(xH1Cy1k*R9^+Pr?sn*khpu_( zribou=+1{OcIZlnu5#!)=Up`TNVNM5M9$)9;O8yajO&;)94kKztgJPt?C4jz;f24Y3OGBE%0Nei(5F;y)nXhxjPs zVZ`SV`RK^O&{>4I5Rn5l4Lx)rZb#%e%l^WF7YiK*KHN#-lU_(1t4ZRJCU1*!mOv7p zlEr`s9OFsigFv|Wh$M;6T_N$2fy%4L4oG~MNGY6;l9_ENB#!YUaaJn%Ilz;|abHNB zLzBdLyJX~$sz`AzKKw}HlTf%g<0pwr03q@DPWAY#hw_|0NGW`7Glh>xkoZKGJREE( zhEqsk<`an|KB$Dm=@m(Q>Imsopd{@?6cV41B=MnH42ZzlC`p|DNQr!$k;G@4khrcP ziAx>H$j2&4e8vhFmtiFFQ7R?!`9cyOHp0aR3`u7!ZM7Qe}*D zaoI`Iy@8kT`KAiBra6Kmt7X2ow_|P~t`?vE_{e7Gg-z(1hqUrXs z<9;Siq9L_2l2cMEdt(lJlqsEG+S|M-p@;PjJ6oweTiV6>7T~V{=2hhQj|1_W;FR>` z%asMVz{IBAm z1O?h1l&I!g+SU}sd+2!aT(^*eOOk|FiL~yfQckZSC30oBkg6px<>s70g{+@hbjnblWjm{%wWKAPm@>_OpJN-KNMSe_O1gAQUr10b4D*>#3&W!D+YIAzzI z=_`?rsf)6kei|T`tF0ilbsf6jE4HvQ1 z6@aHzqv~58JI?91JwI0)w4+)k`RV1b2)9qA~MPw&VKPct1C-h3CzA4cr>Oz=?NG2#D#;Kq*b z4U~s9zWEOH3gYNc<~z=L#Ic28zQd#^SlX2|-%-BD^6)XY`Od2W^4SOaQD=rvBN8|I ze;L=7wi8YJ{*t&&K7RxnX)C`HIR0ayDG6tqJ)PIqj=z({PkZ$C^dBXqe=Z3ZLsg$&*$0NBn+K5-@)eG}W z+8cX&*GBN5jC3~P`+23AF~JtD$7hlJRJA!~1|VkYES-@CV_t$C=w!^G#f?olUsri6 zffgf-p(UOhGe0~xW@VIB31g&1Au*#UF%7jf3vDwc*~Un^Dwf7fiO^)lpk_D7#Ag!h zR?J@*jE9)riYh0&73B*wf81`x`pcI_dfGNOM%y+=^hl1jJRTS#ZGqFdxm*5a(gL(|XEUd1kvw@>696aDx-vs`jX(LnTbv{z9r7otXT z?ZJ)}uWu{lnQLShXuBS1?N#iOOeXI!*#R>$9Il75_mR$C#qK0|$3?%r@&1x@Ju=&? z*dy{{ea-wnViZh*gW0RNJ4v2vPrHY2`WDt2jMLpO4SgLTtw*d5szERTz0u5inGF>^01iY#-qc(GS&A;q4RAFO9v5 zUx++uHfv$22#$la^>wmW@wUh__A0IzqC6*i6}OdWMT~y`IX|wLoF(a(*5jV+Zgf@e9Fi2sch<7^1=8VzT!`k7XS2pX!4wjHl`^4s`e@pYyb>mr~$)8E2z8-Pg0fR_%xX8AO$1m^+3LToJ zC)TK1ne=_grgQt>uq})I;wYqz{TCiDSanhtsi&=QZw8fmZwd1wZnl9KN#G5>eqWA%ILtiw4 zcYSbQSsPVq$~q~|rWsbzB%*K`s|p($n>MxdboF&MD_d!6Bh8Sh3?y3mn8dK6Clcwj zl8Es96G^5mYVU4sw1y3F#4eS#{GlHR>8`{e=@l?9hu^ZAYji)6>sK4a#>m4Z-rLcxF+Ety~JSMAvW>042ts3*}4S4%-y4Q01XbzZ0LOhGFK3b~Hz&)y;bJquaTsX{1~~o*0zcZ)1~{H(G7WG%hm)O%b^{#0 z1MX_o1~^{fxiY}c&&pf&>>u?lDd97~XDGr+MOXg;Dbz`;*J6AW$T5q&8UeHW-IQybvmE8q&%1~|?%sLcS!5@-wq94i6bVt`{i z&cy)7*La$%4RCw|=ho=wa7b@}<10h{nOr69wR4lLLT*ga8~1L8Aa1 z{1RJnQ2>q#hycK`5<~zvS`jn=9G^fq7Jx%Ta<~99zKAHi07U^fHlTC@z|n}H0C4cL z3Io8g3t<7^cnQH601l3GtdauYcpJ=xFirrDEQ~TL3;>RCCJX?MsT_R}PXIW|466Y+ zf?yTmh6dnRW>^itQEgZk07oZe0>JS&gE^T`f(QTyFO3F(qYeX8EC5HhlDGgkOyfiW zIQSN#0pRfBwcK3zQuxQ=4FJbXyplutJW$HV{Xhg{#{bC89C0z$=${E^62ju30XTjx zXozsKM8c#CfP;fA&2S1SnemE5kqdx>(<_R2 z)sa{)fu(3Syoh*(q{s!p!PzK9E&vW*&M0yLaPYo{A{PJ$FRK)}062IXMiDQik|VD# z6uAI6c!8nF1;D{65JfHk4mBf$$c47Si5X+L&^FW<3XuzKgLh(#6~Lbqf;XHL@eNUV z0iQE6id<+LoSjkRLfhahO(oPv1xkzem=tj$Hkkq-bV;laA(oiuyoj+}XdArh@(3S* zht`F*!HFUxv-3)cIZLI;g|@*6ZYP+CJ+=D(M#|+#F z0XUkpSrjzZ-G~x+tV>xA`%m~#(uUJf?K66qe-?kE4d0|-?LWG-7lj@;leZ$IAm)y><(EpCx%JN-DfSixJoZ@3!?4q$)0jbEI_+raHQZa~izZ)1y|DfPqK zSdDp>8()Kv+HRg}{#@MLg!FWT;wD}O9uz2-#`MrP34acG#Nm92j^84=c|s$))Blt_ zW>o=6f0#U`f#y5jtK<0Zkav}*l=&h4YDxbH^$45qY_E*t|BXE6-{!m7AZBZB{s8q@ zDX2gkx})S_pX=^)gt8;PhWV~_WgLGK;?Ul+5}(*~fHKYgK_gu$MM91m1{9+UTgF-;=iS%=-zPR{TEcamz`JN^+16TI-`dc^ z4ZAfLZrvPiXb3kHw?-PeTOid*!maIHJ3{q!^-UE0y#Q(SZ?(Tm01e=0l$Ax{GXkf> z&nPRMU#jCr@iSJ|b#yd$;uFZWaL3YcS6Jb3$=rdr+jLL<@zpY2B9oBs9vW;8_v*e^uIFjPA(eqrErxE#C1-sO_8hz;d(EUVkW z-WGrjVTV>N#dqI}YZpgj9Fz7sB% z35(hed+vIR+MMI9$#6OP#2)7hbUm==cKz$Ca1oN?avYNbaZrrx#u7M9??(9uA%IJ^ zIaDgf>2NQ4hiF69nphR+XtY;x9Uc#f%uU2zXE$zYI>K8zNUB<-?dIKnjk zB$HCpWaT5eQz9Ia-GWnLj&IRqUB1H~Om=(+#v$1w_M~`L3G5BzPKQHsYn;8=r?odQ z4#_9u>Ra01UR?hh7>DGuVlS5;kijkNZ!hMMoDPR%|151M5BCOis}^bM`cG&t84k%q zb9Kt!N~%kjxGd>lLVL+@NbZ&scekvMS1!{=j-bCx8NgmL9Fpl(I?*9btRHTaK$OIl zZ(tmfm&M*DIp1!+G-^mf3GF4rA-PZnQgexZ`SQWpet+)4DP*fZTE zbcLfbfrRBthC}izvB!51=x!XOy<|8fwzR(~-(3ybuIoRpd;{Z<6q(~GsSd*)4~@Ua zxp2hU8yJVA=rUcBJ8|zxcX*4YyL+7RD#qS9Q0o&~HxQp9li!2*e#B(tLioKqE$cr( z%Rhm4jBrlVyfm$P3idhhymWmPel+}_hl4(!GF<6RJjx60o`-f{wf$tzRplr9Qv6E46FhYzXcuLD zK4pZG8+(cDj8t}Zz|I1fogD}#PfvR`@;EAOMShgBb1m#FblJIfKs)aG3|Hy5A^kj8 z`fV}kd#>81>ZjT;&3fxtny2*G4W6mYA6q2edMwwpF~T*T{Z2V2DLC5OdeA;QuiBw( zue`c0{#x+c9G-S~JWTtt?%1~FE%uXBDPvU|zky?H@?+Z_m1Ei`l=j?u zrZv2kw`m;H#K`t+?kAISoHB6@W!@MkhYpMDtF*`bA4PvWb=^|*(Mt5yCFrw@_y4i+ zd#Vqgy6#c*S?kt!ZnS=4<>@}h`mOY%pJrNbRal3DeJMS`qliO$kAj}M?%!2f_c`@W zrS%i`bC%JMW4Y<7rjw>VZXR)>=K+qPX@fpvA9md5*vr!&YW>Y5yY-Ka9+W!;<@cf< zKAdZ*`%m47bM3n}^7Y*JMv8qO&pF!TIdiPi#(AaBn`8AA52a7Ias7BZeQUsH)k-@$ zd86(2EYXm~&hh+%Qx~+2$NK%r{N11JODR;x=q>2_;?6Bo57ycA31frpiRtN{?<0>F zNA|2|-}n`d_X}dLFJ+{%Yiu6-u5~MqtyBIBD;}EKv-6C~|E8<_z>@y`GphW0JUFS! zuiGZRE!^cdHr(a+jdGV?+cWLbC+$s}Jmx*<1MYV5kLg`IbxKei?>ba`uB;$JQ?c*lFV>MyD4e!OVJqPW> zxbzvwhv&jPuT|!UKK-pr$K`;26lpO}+4IUItMp%P=vlvRRa5y_Jyuz6`VU4Ozbk!o z-UmH3mZyH4RoFDns@OaZJ2MWs8s)q7s;f^1E-QYd&!(nIPJo4joYY5)my7iq? zX}|yUIiLRQFW<<$`p2_BHp)N58ZzD)?1rAI2Y4;g1@S?ZdK!peZkKjy^-hka-0*(aBeKc zIZ}ypd&&OaOj_Lf^7O}Bc%5Q9k(zw0rkLY0^z`zgx7~5rHsskaT<6Xp?8N4qf^yN0 z2X#eTsPrkWFxvoSeLKGF(>jfeJe#fUTCuHSGcQxpSa1+{SOLw>5X| zI4__U`U1e9ZtiY15t?KvS0h;i%&4Teqzouwk>-X#D;@?EO$}V=hPk^)wW62!kY zFpa=GQv)*z(-WV#UM*|4g*#cV1gWD0-M8u z6;+}2E0!!SR!Mo!9*Ar~#C~R!G-2|K*Ve3Bv3A+g(2`4Qmla$1z`P#ElBZZ#b89%T zFmTS6Kx-#HKX=XyYjaC?$9f>=ba$?5Q}0G}TD1)`*3Q_FK;cfOBZb_euBMJ~XH%r5 zK`ex#0)6m0^#hY|gZj4Js;#(SMkTXKs0A8AxPyHgpT#S*NffMN;@X-u-CcE?Tf&Pw zI_h>zoUxwixtB|PTs6kX-(gwbFtT+RsNF7Jk4MchE?&PdMvHZXIQuJ3qnBkrCsurV zS)Oq8$pS@56b3)5GVUo=3^LL};J7q*S#>SI8L;Xa8uT+PExn|s66@^~z!=W2ob_SR;YdqQ@;nSJPayD^^BY+grj8!ofo3U0c`D816!l z2bGzxQy@*9D*Y-Hv$?KCmrsjoakK#>DKZrcz!h=*Scz+*U0w0DrjIVP8p68n`Xm)F zjdkrT8BP)Pn2ANXxOREDsd;@jo^!Nyt*mQnXbE>%O^PnBYewGTRc&jq?jC7ah}A$m z6AB5lJ zypTA+71Q#~o`AS?H{pQ~$1?iA#1$fO?q6cyY}zwwfdFD>4Uj^u)t}WTZGpd5`{W@9 zJnR3fyInXhn_%_uUufCjOjeYZRg^3&2WxGcJ&!?)Q+80-41I~w=*SI-46h&A7b4!BC)9r{A!*7lb;Glg)&+T_}+@XkEDlZv!+~ z6&Ii+adX#1jmpmw!hx!)4QmL*%FAS6J~pi^2^8U_gSN(*^Gm=K&zU{-fAdD>jK0~4 z0&pfC>tp7edLHHM^62ab32?DGtCFu7s68A*>J1C4CEV87)r3eFufqJk5fd&2HrS0h zN@H8N0k5ES{Xd6WsSr7F*w;iF!qKK(8!_^zOk;Nvt2$n$P^P28np$?$0JJ(RnkDPjRav1Wkw}X~ zTGiNw?F=q%$A?$p&e}*V?#uPvh*j6!&>UITRv!UoeWS=s-fJS;n!}fL@NGG(OWnNG zMzp2nn5}DLR&#^y&H9Fb7=W$er1wF1`G+S#D6~aku!cgICWkw=0mLs9THf7OUyV)n z^j@ddHig2enX`zT&aqc_Q+m5rtCKfXl`GV})iuox7)6@GSY+%XhF%wL*3505uHetX zxWTIr8@ZB1F!*;gH|RS$CBdz#?t-0{;HEEn&$qO$tIq1?5>HYHPA-i^Z}yZ)DW=kWh! zu)eshN2a=oW4{u@wuTU>dr%&-z zZflGlI(@sorMaWCO9kD%PPaP-3k4+Ve2!!e9(s3!f)@>M*QlaZkw%3v$~Ebzq+O?{ zvd(~4c4822MvucXps4=_a7yDqNY4U z8mv2->O>M(7L24ox@8jR|4xudxjLrn;GFIKXY-Cq;Jc+IYU;4ui1SX;6O)&lSU?+Y zslhvTJWHb+8N`T9+-l5AmEsa!N!D%Ig7q`g!2RN^RM(l zYIs#;87P9TjEcbu;2NtZdO*#^h{zi|{Un3Sw#uR!3_{T?oktw+cD2%6hX!|Z=yb_B z+vlKd)BqCO9i0oM=}!rkLrtFjZ!gX2?q9r8>UukD;>@M%maMJ}t*crZTDq#HdU0*# z%24(Cb+zkiFRfly6D*nd-k|E9h5Bt62<~`Yd$?^y)v}r>wt=;*rqpU|!4EynTDEva zm32{fT}RioSn3bI@5d}!6jzB^GKJ9az8B9aiK}!9WcPh9S#qe~#Op2kkuo3cU7==+ zRumifbO|_Yq9I~FY>QdGS*T5(J|6B_=gzVCf%hLajd$1{E z9xh)I_pBM;DQ>Ys_zc>@p7(m`3nDxVk95dPCHlc^%(!A*6Rz7@!_>w4G&j%6kuW4@ zzI>S)nk`#o=;buNWPm7~40d#dw&0O_C}g#%2kz^(NUK`v25t$~A=PwHAH*7Nv(ShI zmWJ?lbC=F2c<_&FrZQW(eDUVaNDKDn5SC;W7b~y;r;X|v>yGH18Ot)8WiDZef176; z^Xi6BnNkIk!rP>7zO{!ieO25nxit3mXrP>5f z$`d@>Y8Z+ar0EEIO$U()KiLnakox>b&KH(`^%$GXvqF92on zZmCyG?iXr1a3@YouaqQOqDDt20i(KHs_MZ9RwmrwR6k^bEsiK`f&|v3W6F4Un-sv* z&9=6fsuAOn4k8_h{vVfAmjdb`WI32%3-Z#2Qdm@?J# zSbJ8R`rYrC-?KVeH3^B%@fLH*;SnAE0S5?JYxjBbgRw<6w* zSKhD76PjRbAUZrLpreH4Nz)1g5tRKWGuAUXrClb|ryOO)Nob2=ibzGxH^ zZ1?NjY^&attqNkRhI4WXd?~(7VO7BeS=_r;v)B9hXXN zDpHoEQkM4Di3Z50I%9O2T`;QW5%`!5F3$l~xCvZzyOAzASv(Iwyqqd~SbB;9?r?24 z@)C40+l^$yEJQ_h;|Je_r+>{A0tASCQgZ2>Qlnz5-~~{yo_j;y)$34*%Zl?fCa)e+K`l*@XK_1AtgLQl?kp?@0*K^V8QN z_zZ&n@tOGQ$@1HouY&lz>5WkQ9>I*)Gx^Pm*Pm-!m=PQ<7?GFS4FR?mNFzA#<%m}> z8T(0m(=b!OJZ_k2RsKAJI`cwMFtaJ`1n5|XOBQ=k0}ZKMFcQ{0{^2+YXW%q07^T=I zAfar5s9>~WcY)nXc8p?eynsCnJ-uM8VrPMUkamIf4^xZ4&SA;ME7la$UJf?JZwh3u zQ0#?>%xc&x6}!=}s}x%gmL;}VleK)4(F#rZ-n`T&q!ntR`~W66`57y{Y4u=g;PW%V zbQn$6O0Rzp7~08Cg&mK7FM`~gBR`F-*FCX7z?eeAofkcSYzEzX1XfKClO@1 zvSupw8?o#YV2?8LET#QLEc-?*nA6`5N=u-C^= zL5B3=4|{$58stX|4)eYOlFtfT1w8ZcB`F)oQsE8yK51&0Q^8yg; z@j(D+?g^4QFP-JAM=)nx`T-PzBSmVJN_`C@1if#9jI{UQKd<0!{1aN573Ta}hq1@U z1RRtfLy%iIieyY~USS{TEfD9bJw8}%#i>0${$x0{$A^trN~iYtNHd(;C_${ zV-2VG_&AE9{1&Ftv%Pmf<153TKX+8LKd*#C8(l z1BdvQZ@-ebcJ%lf1PXj19~pWX&wB;_&ZJM>sf_DB^+Od#pZWp<=u;e&hSR=utcSp- zKZZYIr>Ey+{tt-P>pcQ;x+Cj-1Ce}%95lzK~WBvFwYn>|0=YT*j#3%ktGCufEa9^ba~y|D&+P zVP&+o_6*n{{Ae}4`Cmqmd5!j~ywb(EuqB4o8%9;fvR8wBiD@&L*79A291o5tiH^YB z+-V3Rj97{e^e7k>bi^{$ms4oPaKotAz_5fPN>v&Bm=>^vBh+~0zZon`IAX5S@?&@x z`yYnY8%DhVmPc~Ld=;7dU%A*Um~pXzSk{dEBlLz*bD`yVG2%RBY6aMz!;e^`Sf>K# zEB0b&*c2lw6nh(jW6(My7L&Eo$AJGZYB~I_^eG75j^MCu>7@wnLvZLa?|cL^xZ9QO zU4o!*I0{}==sFt$5U{}tN8)-i1I&f!x`m^f@)nu!=%&22CXD@PE=8D^k3tM4=tK>M z)%(%3g5{}Qh~WfU0{Saf??=;PSlN$;L*d##$!Bb^? zE_#cZCX6otbJS=?fJwpRLq#hDa}F4u(c?#>QWgN@f+x7I|=V1=#Gi;!cUJ$r_Z3T#j@P(#-)8bmYsysvdfLrvx|yY_R3iHA7a@%!KxDJ zQ}uxu*7EWM_qHQDUoR^6>;%;1bKux|W|}tv1C9SUv@GBRRea0$Bx47B&IsWQO92c% z&af0f!#g8UK$pObM8cZkETEg%3~0idfhnL{+&c=z_YK9Q?Z`ye=w!yaiLqmyuqKCz zI)9UcX00*Tz}imud*K)2c6F?s+Js!j^&(99eo)HCFT(N?1!MvhZl==3SYuWRXA;6< z`sZMAtex>?MQqw1YkMD3#HV$s)Qwv!X)gs;`4|Biq{&J}yN~%FiFHz9jkU8!LypU> zw(L={ZW*G>`$hOD{xd@*f!d7&EfYF&51_ zs@-~+R&TfMa}^phKAW^}|1XLrar!h_@toI9ss%e;v1*1l#aJ-wop$TxIC4{PPicSG zwkK{!be6A$f{9-N=akQyV$zs}H@kH&(q74^Pay42V$zPnRMJU1sT!Or#uF??(NVC= zSgNNuq7+r2!7e8I(^tuE16xn_1;suMb{pAWDRw*z>?HfktC4dNCz1D&eO_sQ1@@<8 zPf|PiB?kWwFEmrRB_3T17`mcIQHZ(JA7Oi2Q?n$3S+*^@!$f#eMVPh+u_hm9ieK}F za@r>FMb{$Lzf$%J^Pl`j247}y8oV|Aos{oW@){?(MTZdghl*vjt!X9rE4mZHf2Z(u zrkZ{#?TBKSfNq9qZL`#8M+(rpf5BFV;~;F$w5y$iHq*YyX?CmFBr=PDcBBf4i-#gn z22xMtR5xMLS)M%=sf8*U2T5y&v0&B;?Z{_g=|)=0wQa_+Cr(Rd%_=s@%o?E``6-fr zi^+$wAe`qWEJz9G$*LqnRW4SsF=5sc?MMJ8vKI)c_9&X-(sn{qPMt<+OEZjx+c4JC z*^xF_T0u*ghwD1=&M=`hYqm*tkCXggkbFCm7tFMI>u)DNGNmTb0VnZGNc^BqoIK$i zd%d}jw`QBPha4Nl7z46#{uWHp#ZO*<*(MR^TDtOEk+_11OKi?{?s3WH*?!*UF5wvhw$S!-C{-gi*Z^*KRzNjM-A~%L7n(at#<_SPFrVjZf zo{2w3_+;_T6P>+idOEMfZx^bi(SNhY5l%xZ0FSGzay;A3#&#G0Ei@(8(9jI<81B_) zq};d;z12eNSPY{@6vcpH5xI99eEUacEQpxWGhehz;7yDo1`32t8=Y*8U)aQiQGxb>@=}q}INP3h1NQrOC zr!Fn9zfH=sR_brc!*Q1Re?-c|VUN6NZ#C}%Z`w-@>)=g$@wSKYjeQQQZhLBm1^w$% ze>J#)H|@!xn(H!f^mM zK^B_?*{ky(hfzUlj|Anp4hZ{peGRzW(B8GM|2~`#h_- z>G@$($L`L2tNouo*j>N%Cl3_7(O1&5J9CHUbB$~7er&`d@5euV&(R<3-+0rw2hJJy z)Mu|5lk?rn=DoQqW%;b^e}4Yz+}nM>tiN%?wU19|4;(#qeAVZBzx2bmzPa{f7B|KG z&DA^ZK0Y;n)^8uXeE+wupZllOT~p?4`{u8g4f*Gt*Yns-Z2kShkA3dK&#&nIhv#0t zJpET0O;aXwQ_ADBp3C{|o9}exWo>)#3#=KQ3PIMaaEHdE^&&8OC1z(HAoVw)pLk=za}DH>A_iCM@B*} zI)ZQ#AZGZiiDr(%OPZGuq^KHRV)0QFMX$n7hKJ*$B8oUwl!TlpP{i90V+$El#FYvW zskskCkKyDM5tsTIi|hW9BbToz;;NR!;*vN;TxS;%A6-$zI|eCNnKTvGq{S8&#Su}h zKO^CUsD?{QOwTnYiOl7HiZ(@a;rcQ~T*#7)%caEZv67I>aE!%uNr}aEONzLlBC)vI zMG@CcBo-HhDdHNjRDz306mii?5^~L#A}#`ph))PEjQm&wGma_(eo~ct;VRU`oPT zX-VD!iHOUDjKwuW5pmU>A}+y;h!3qO;&Uvi5NGTZar!Q?_>_ktKKPMXT$ZJXtF=-t zJ~^R?k5@#*=SYu?a!bvW?_os*tq$Cy>>nP&Noy6jUT#EQ?cQPm( z*I1d$33#OC%Cn?5S4SqGb6-Id?EG1aD2NIhv5s=O$B+xI;r;Z5XgxY!fZ_V-%`!~` zl!@${rI@9#lbg~%y;(HCiAKk|#yAedbeyom_0yZX{bYJ`J71C{eZy(&n>+7h_RXy| z<~?-%%4hDL*uV=?_WylIhL;?LEjmQTu-e-OFQ5;+cGQU)Nbn@olf(zp-ZN zg`KmStD7Qi;lXTb8U4B{`gKWkU)T41C(@AK4q(=Ml5x$B&aQCltg7bC9RT~BrQU(Q zCepFBa~9st)*t^QYLvh2&2E!ds{dzM@9}|7UNpA1L5ok+f_Yu=o^X zJ0oD)rs4x(Mn`XKQ9~RUTmUOqEWsXq2xFE2B$j%Fa3M8T^tbwu;rd4m!FgrM2rhZ# zqy*qheAid~I#K0{6=7g6c6IE~SqLx)7))B6RO+id1y!R{8O1>DrpjcXC6Ejg))*WL zBl`Q?(blxUKws;}wpIU6{$usYKC+ID<$NVJAgotxn*Lv2YklQ%z^|}tsRDVY!ZCQ<&HZ$d)(PPaT2h934Ug-M@hM!pa17^EY+ z8qDjy(I$AKZ-x$zPQA%DH+83P^lD#*|9+nj#TcEs%a@V5I`xDo&iT`}C2&7)9s10g)N=Ep68J?2i52e1gGu3mCU6ATuv=f#0 z^xDIGWr$vyigXiUYHVss{%T)(O8aWxj7NOuKvK9GCejfHZL}$M4N|T46{|`Fm}orw z*xkPDi+tnP`X*lJ8=KO#+E@0Et9&ch!0Kw>n$^Bi*jnw&UhON{3DJeVRS-i~qQqk$ z7+>X^c%yIFE}xJ27Nr#I^i?vK)EiNUoyh!zZ`=u020PXN66!N~DC#rJXYB?Vink!J zYLxmdUlzh6Busfe(x$@vbjZ-=R;vF36@P*&eo^Yf-U6snZu#KDzKI#O&w5RhlxrXM zO(ma_{+h2m!}c<``8D5=jMqH3*_e={tMN;LA7D$MO`u=G+S%or25UvW67&m@FV!?y zA@VZNeUO)E8sxh`v=ac`5BV5PgM}i`0>wQ7Ugl6V=oLBl^Zg>^Co~Nn2c?}CKtB(8 zpQgdbgy;PTdIou2W5S>YZ~MNHS=!*rJV-QbD-a(X^{J%P6oeG(_k$q z^H~YX`jmsRK4qE)XMoZk7s6>T0LuD|(KJ{H%K8k|G?)j<`ebPuJei`?aWNJTG^+S1 zB53d)(8pl!4$v`>@6|N82ecCWEt&>*fj)|O*Mr^*`F2f%T_SG*Wq;wflk6{C$N4Ve z&j7_kl&T_4gC{(?p05af7L@hn14zc_e&{~L=QC9+d6fCHf{%JpZa{&@^~CDBHVM^i`lkp&o`-j68r&=TJwkVbVokP+IIp0=9+9_$GW{k{ zj(1%62Mul%eKjanAgii04XzY<1t_LMRf{wY@=1rPKPc@Lf_?#dE;oY)^F;3#YJplM!NZ`8e@N&-&~)e@)HH~(l6L`B_iGyL z1!X_K4Kxk%J(>o0gI0pyrDXT(O)QXlq2T= zMY*dq6jWvc8vqwu5c}Z34X*bQ5STDB@T(pw*!3 zL05ua1X=+KSx!0VI?xi(wV*|yt3d;xt3V4uktQb(bUCOWbSWr^bpa^tZ2_g7Z-LUz zL!h+tFlYdD2`JN3&-7mh1+l&?6pu1gx^I9o-9gX*=)Zw7fAk5J{%fF2{{Se6^{=4M zqVe{E9tQmw=t0o!pa(!3K=*+*f^s~(9dtM7KY{juej1eHAo^5JJLsoCn?OGax(W1F z(2bybK&wGN0lE_OO$=mAj1-v_!0v={Vl&^@3Z2Hg#M6KD_UeW2~2I0tf?KyL)y1bQ!M zHRw*zm7pI2tpL3Tv;?#VvFsK@WrO06hfyCC~$)<)HgOn?ZX)uL0$_HXn2kXgla`&~2bSpz}btgLZ?qgLZ*7 zfzAcp1lkF@5tQvz4Y~kyCFoYr3ec-T%R%RWmVnZJ5okSV0JIde5Htds2YNB6A9NO| zCGwN#S3GZygU$p!21+}9pqoIS1)TwU1eA6TgVul^0-X+e5VQ^S0B9>H+Kw+D<@AEK zfbIq5`LzdhH0W+nmcIvd1L$_pR8Zt;T?N_%%JXa!D2k}gXSQcG_@$tQpbelPd?c9j zv3wOT^(LX!LRShc5Sl6U$ss!a<3jlgGV)3NsL&dr7Ya=mY76~#o{s--LT?ayjnKJ5 zX9_);tK%ORS|{{Up%p^Qh3-VnSe|QzE*E;f(6_U-{)Esk2>qOoG2ZsD1p}j(Tgl-aAAv7S=651zr4hiiQ+9Pz6&Cp<^+|D2}}|GQFlr+7Sfr1awdM9NA0-{RflMNID@{2%r{f&Ul0$MC<) zw;MU$=G%+^eZKqg|A_Ap{vY!l_W3=BQ=Ujk^E{W*hyP+i$=6X{Q<+n&7{y%~s~_6p+M;@{&(UjDuKf7bsT z{`>qd;QyrmZTvrxek9%Fc{=@B{O`@U1F3p5?!o`Tj7RYQO2%>gpUik0|BqxI%Jg`8 zvUg>pj@iBVzd!pxcADow|3QD6=S2F+^fb?&?Asu@!`}U}0Cz z?i{pm&TaU=Bc~Vt`*QBb|ARRP@qZ}iG5jCNc{(S}^K8y@2)~eX4FAV-PT>FToSs~d zXLs%`_}`m*2mbHL-G~1Jxewz1Q0`;+@5_Aw|0i-!;(vGEEqTZ#uNVIZ@*c$hV|j=1 z|6E=l&XtDYIGNEgj2nyo5yShzr&-o9#HHi?evTJ>mgZ*-1COzLJLGg7wCCbeGQq<> z#yaJOFh1-Z7ki(ey$s7biSwMU7vlx>{E&gJ36#8fd2SlcSH@RwV1X3k{3P#3I=Tx+ z==j)UP`O-|2l_nG7r++FQ<$Rl&)_7@fj@-vmabUxE0pwaLC*XG!oP@m(_W$2`;FA6 zNc4>bI(~`prJzh-F8mRe7kq{A-={tBD~10Lu~#kp$HZQq@FC=_+EdEEQuG@|f0eX< zj~tI%rTsZyp({W<=C?`Wzas4!kotT{%F`tJ@3Xu}`zPc}_jQ&J#~+Xo%IzEq9=ak) zKM9of+a>*7(tg{8f13FreUYSpf#n6iQuun>L;42ZTQ;@ec{VO86tfzs}=}_TMeX^C{Hb&3{|k$DEJ%pd9Sa z2JYa)?9aH+_ep(rFnXCLy;LE0j;6Ww^W56XC4^i^y>*h@n? zx{-2zoD}`zEI;&FqA%z9i8d*b{=!d^sLvOD8tsE0EBr6mzThtq{yNqdWqKCJfzHqT zk>@6{w}tg{@jNe>eygN^6O{bNg&)uIfd7o}d>NVimxccT^8^2F;dz5V{wKo!rzf$!4 zxR3f?(SL^LEA%@>e~$Dg>|LxJ$6@L}Df+u<59uw~q1#1!(BCWi9~K8-(dL>|HGpHFw-N?cIjW$Jbo_z8I}+HcG2H~e97M^{6`Tcf3xuI z(w>K2kb&A?e?g*tl2O<0pl5`7AH=FN^*c zQr=q8e^<(zj($mZFXSvwyXdcy@{Sfg(J-jLMfB&hypXLC{Q@c9=S9z#!>QjY`ngiR z`$hkj9N#w4^Sw{TZx{YPDPM>1%$NCpQ_^3=@_|1rJjVg@|3`R!oJ)J%lKwlGd$7N) zM7z)}V1GgzXQAA5<5_<2q;yvz9r<$MXR|)wmkR$T+ZX&L!rw3FPo40*|DnD^_^VkT z@c$_M8rBE=y~5|RKHv`uf3uYL2-=OVi}ny_x76n%+JlWf!cU<+$Zi$>cWe)&`K0i# zu|39OyxyqoRUofi*LeOhTtCL++~@ro9jc@FD&Zf&b%*-Ph5t{)&jnv5{GTNLM&ZAJ zYbEuy!goMVeyQ*UI99aB`$9UtzDvCs|IbJL$(M_s>(k^H34ej)Um-kS0%v^=qYdaf zU_aM&z55+`SNohI?`psABMnSC?o#O8{6(D-X|4N+xm*_xl{qu44 z`CVLjzZIvyD9-+-IK36(3mPG81&U1)+JWe~!wM-d@>LrauMbTQnRf;TdTSzfgGgl$ z(5uE?2wPFsbwyg6>qGUC_IF{vUPHiY#C2V`%BsaRH7K3g5+)Q29J&I)uX@{1smz*X zwTq)^)~Ve>&%B=f0eH{cM*QBIjVxb(aZ*&QrGJY z27!S#oK4(FgL^IL%==h<|LtwhxHkQELrPqQ1bZVTj+pSo!sw+yl(8L$+1_}d)Oy=B z9V2=~qeHaLLt+^W=P0amsH?SIM*EI%S6y=(kdoKdR7TqB!G^I@PyJTCN4U=63=X{v z(6Kv>!!|cT(wCP`KtCgkjtF*s32hy?zsJB-%kG7-&9b(}h}E@5*Jg1y^Jod<#lwd6 zVeI?SrtzG00YqbkT3WWX7T32naF=M|!q_Xip&{H*+!|@y^~Mi_ z+i4&U%zbc)`p-KCU$pq?!C+G+I;RJl*6C$~P2lVrF}U{Vx1GVDlPz)fD{^hhFu2q_ z%BSCjW3V+&zBR$%N^?dVW(>|GisW38u|+})E*A^TSsHhi7cX!$vFC4bc{0WP{t7iT z6wm9gP(wlSTq-z~EiQASBpQi|=M1bab<{~lmEze>jJVn?P_0mITEWrkk}pW6DDSV( zRhpknF^`J=190(NCqcrRmpN*uXgZ@g$rPpKs!FpReL}lYb+RVYX6E;68J+!tWQy`+ ziuwH&(mkk9yABK;M* ze&xv&^OGs&If{gpoJ)0ru2kkEOICw9PK>yADV?X=&Cw^!82f_De4&5qIjV#ywfVUw zd0g%bk}1lQDdzWANN4J=&|PRQ6?&|3q9iQpoPpJ)b9GBOvEu47+fnpyBS#gNMw=|_ z*E%u?B~z3qQ_Oc1sw0GS3(TW5LAROf#7@{AWsW+o)N_(4O3QQ;QLkEjwiB~|n>eb( znJY_klC?~Kg|2FOGR1sH5z{i1>JiA%$5pn>Q6wzqoPpJ)b99Rg9Ba0t?%zy~Dz02} zVs98~y0O4lsxm80)@aET<^2`9HRn5ugms@cuzIeePBto)IWgiZmrPNrt2jHEKC0;7 zl1`e0l@Y`J+D^B`g4szF<^2`<9oTgbcRg%exGvt$ZvZJ#*Bd`FS6>hq{h&|-5b*F(Nz zz$uG93UiVvN>K|;k7qmjggHmm{Tr(U%kowR+@#sF%E|&!H@j?p>D+nq7nGI<0&`1d zLs42n?d+10d5k!FURjBbzbV74qpXc=ZV4w`Q!S1#AG#<1`0AhWNK8FS;2$4{Rp2?0 z6@Z5u3EzZg8OhvTGqq+D)4&-Xk1O~dw*qLQJQU&=q6}#l3e_&#SZlZ_H6q%>BOl9) zmq2O9@>)G4#)U%ldNo1>@%D@zzUNB!pp;K@+O`Rk!k#Q|XlW?4baCzCXpBu_Cm6JI>K8zS>D+C@;eSXQ$D`$#roDt`S5rNPxqou?A5nm|2GyezI=zo z-Xuv9fIYWMQa+~<W%YAXzJ|K4I;D%Zx0jWJtJcKgdn6Ry z0(+(nM5T!9c<=+~e#hgO*fVL(dm_e0vih?9TADk%;>&kD&R#X1Ra5jtw7sjqV$bxojj%V6Lw}aVQ5`GZ-dl0@_`dHzPTEgxzt`NhB@$oX zKgQMfvi|ns>e~?B+}#+$prEpay-OCaU+xsagXhI`#F(br+}~czAqj=FJ#2NV;>X+D zAOv;D7=i}|&E%qjhy_D$^h?0c$)qpPj%lEk0<5n(oQwC`d7fod{ zzI>0IqwSdTjhU@^*MD63>LabFXBVbC*EF{^;QU?cifi?Wy?_WSV2`KZ+tKkQ&Yqkf zd|m<D&=;%!-*qD?W>K;|wpdCMZ*g}+bEGyBY1tg% zmmcaH6Dt6k$lj`@tN0B{viy`SsFh>90DPPsy)icAN%Sl?x4Tc4PjoME*q|GrJgZu< zORJ7GU_6E1;*J*p6IX5n&XcU%Yw#qpg*K9uCklnaNN`EwRW4r}?ovlkM@yDpO}M_h zqZu!`B(sBdG>AO|=7)GOWjnF%+xt&lXYW5%Y2AwcxW~3D2oJYsiTeD^y6yE8>%Ipt zJ?%>=xDSSJI{_a0p+l{nr;MyGW$1mUu3NnS#Jcb7JCqXo**3s8HMcbenwlG%+5_9d z^`!w$uDd%h*^hKIG~>0J@Ogpmw&pF7j@CeDT`LCSj?$%p=C=0kE_D>yB@jItsU>nv zdtggTq^>LA+Qj(0z_v(pL!cE8g^Q*Jt_$EPU~_k?%5qL1`Y3!^OSm=M*3}sZnsSsb zE$Wxq45N$|a%yo$50TU;!RyEDPW~2fthOq(*mW% zB~t@41G9@u;uGs9U2Wk`)+JFGIa&n#)Fu|!)1GC(AP`jz;1sYpIz_Dpm zuqMa{2eYgQe{+gl*-vvHlc_UUSfs?)doFia##tju;|b?-gL_P+x2bm}b6|6l-%IM) z9|GaHN&lBPj`1=DN@%7B(q8c(e>1LP_PmOch2;s#Loly!fU|EL-HuMY)Df6pJg2xM zP=uSMw#J$BOTZM*nLX8-^=_cn2640BdS;d_=S7T!2R+ey7|xp)Yir~sy5`P0OTDC^ zHy>B`g;q*6lq(-dofqb8hKQvB;l&?macf&dJOa~ z;qsQ|_6>L?vl;JbM59u=GSbm}Encg1iM3T_A#u962x5YlU#GM>%4{sPnOY_68TxfS z6J?;c)=V7tt4T(tVZf};rbu^7LrrTW($&%gn4Rvo8f%i3@sjO(SyOg?KO+nU3d;G&Oih>hkEy*8pPEsu1F zF$+CTy;_66aDA8F=pHYy*5j%Gi)KhhP9F3)No#YP zyt%fbD%{rHYGG<9f@?bJ+G{NS*RqV^4)jJeXloscs)<@J(HXfQ+?=lEmUXghl`B*c zuW4?;*ipG+IcF(WL!=u8wwl7~)R5_qDX_5CiYlI)R%^35T5iMofOldjTGQRds_VCi z&3nW37*Wvhx>xAA62^pP9Cp+x+CZvY>P@YNHFevYTf19z7gci9wmxj+N)o~N-vMaD zRWzX_c*jcj%FavhYS)@b8;)WJAnbr;R%dmyi>*cOs^DltHFc}3Yv;tM>O>9t6+ zbBt>?oRm_l67=dV>P$tf&Sh;4(e7;Zf1${7%?2&!{T)kBPC8@X>|0T#CUEGHJV5H$ zbHa#|QWd<@icXfK(B@Q3@Vcbytz#1_!F$F7y*6x;NnUtS4*BcW26&$fsSmHw#iIFX z!IJJRc)gC{P{=_4S?yT7!Bls>GKRxr;kE&myIOXv57&pAw?Py=it0F9TbesMyHwEK z0req3+c)AK6CKrr7}Gyr)RLP3oqww?#2j+>yVoH zcN(=aq|GQBCa8LWzD`Ek7Mt`a3{M(eKsoQDQ}$>y9YIx0VqL8BwKn6G(Z&v5l-0C$ zJ*pBXT7lOZ+v0_I2`d~gTinv#RA(AlA4zrMH1iZvmnDo)rownvwJW?n%$G{lC07l~ zu5)~8b3F$%+&$sEcQMVpv6b_xCfr)r-h|7EWuQOt6@!Q{+79$Kv*~co+foC<8sZ#k ziF8z>snBP1&72`nHCwDo&Nw|x#eFP*VQ%w|uCSVj0C+Px52?rbVYzNcC(c}|UJYGW zwKTMJRZaEc+RBxDtG;#}AF|a1OD4YWIH%FlM)6~-)o&z z{7@{$*+cAeateGY*b;Vh&hs~9y?8_B5bVK*CB8B%C1+K^1z8I-&&%}SxkJji)~W(L zxy@C?S74{)WM)$N(hXR)O&tSqIijWY0QBtG4Mpa_m33}hj!2)UZ7TH; zT~d7HtBb)x78KYo+>phbhVseLuwnKT6aaf`vxXxIY+W&|QM*fy$LA^;ONFKBXafKn zXdH_7q3d&cuFu(dJ)TJc=aZEygtf8b&`>VbIN?>i@sdt4fnpqte7ho}LE2_Y)~W&= z5bSTV>mp?^UWjbMyRfBCs3YqqcLl(m#dpAK~qlYFGITF7?>y z`ypWmO3BU~3zFu~I?6b+5cZ~4WuM1L*=zCd$-auR?A`eHXMYj@dD-8_{}?NsSw4@T zZ+zx&LDIZgEROvLg#Br0*@XAAvIF?Hv&-=B$zFy3l{IPD%cVyi~R&Bxzs9gXVkDTk|Jlqup;CW(t`9FwC?nf9}&@ zPBGfdrnEmG{2hi%7JK~}ShM>y1o|2d$0)WC zhxB!_+@9UzUk;X^)aGMv;kc^eyv@Kvx zqEJIJ!E_r<)=IDcQ(#!!A$q&xe+IjXsnq_x7T|dSQkOn8+70GIzzFH{(Fm6trW}nx zT*?nnvtVP|J)n&YFNER=1U^CLyr#5!y^?$plK%@BZXJ~#1lTP%vFB!=>C;vHK8+yD zl|ECk+$qY%J_)v)+F4557t6AyE^UU?DSftzJjSqd6uZE%YV&d{o!g{b1n;lN+yLUS zy_-Pt_TbOXOXo+@-(oP;dkx5tL-@1uc@lgSAsDn&xA)!#uD}lDzYO}c*5v;l^rtH9 z&p+jav-16Dg6EVxFQ0oc?SjW1lh)8oK63YYz0ZRTvxoC&4#(33kL(9fjKakT5!p2La%?(T7(%Fx+!ff`vXEa^?;v+2cDA(Amm|m>a8qZd zUj)M4k21z(&H?fH)4B1{h488K(ph$HkCQnr{QwHVlQ*?WrQXU2LGMREM%pZXUjFU) z=UI=ksRHv4#BJf@8cl8JMrhw> PXu7W0&o{4u8rj%gn%Po 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

    _ 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

    $l*h!ecray( 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%0DbMhDO_>MLRS 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

    8i9;97| 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 SaSf^02WHC66m;xDg#QB%-!z3 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

    p5A~AW9WF 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 z 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

    TGGO_0W^Bkx1NAuKiD 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 z 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

    cGp2PJ>MreGMjDX{hD%ddWyGY{5 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 diff --git a/Vendor/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImage3x3TextureSamplingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageAddBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAddBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageAverageColor.h b/Vendor/GPUImage.framework/Headers/GPUImageAverageColor.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageAverageLuminanceThresholdFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageBilateralFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageBilateralFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageBuffer.h b/Vendor/GPUImage.framework/Headers/GPUImageBuffer.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageChromaKeyFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageClosingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageClosingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageColorBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageColorConversion.h b/Vendor/GPUImage.framework/Headers/GPUImageColorConversion.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorLocalBinaryPatternFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageColorPackingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageColorPackingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageCrosshairGenerator.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageDilationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDilationFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDirectionalNonMaximumSuppressionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDirectionalSobelEdgeDetectionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageDivideBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageErosionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageErosionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFASTCornerDetectionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageFalseColorFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFalseColorFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageFourInputFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageFourInputFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageFramebuffer.h b/Vendor/GPUImage.framework/Headers/GPUImageFramebuffer.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageFramebufferCache.h b/Vendor/GPUImage.framework/Headers/GPUImageFramebufferCache.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageFramework.h b/Vendor/GPUImage.framework/Headers/GPUImageFramework.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageGlassSphereFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHSBFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHSBFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHalftoneFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHalftoneFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHighPassFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHighPassFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHighlightShadowFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHistogramEqualizationFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h b/Vendor/GPUImage.framework/Headers/GPUImageHoughTransformLineDetector.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHueBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHueBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageHueFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageHueFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageJFAVoronoiFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h b/Vendor/GPUImage.framework/Headers/GPUImageKuwaharaRadius3Filter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLanczosResamplingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLaplacianFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLaplacianFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLevelsFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLevelsFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLineGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageLineGenerator.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLinearBurnBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLocalBinaryPatternFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLookupFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLookupFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLowPassFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLowPassFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminanceRangeFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLuminosity.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminosity.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageLuminosityBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageMedianFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMedianFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageMonochromeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMonochromeFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageMosaicFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMosaicFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageMotionBlurFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageMotionDetector.h b/Vendor/GPUImage.framework/Headers/GPUImageMotionDetector.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageMovieComposition.h b/Vendor/GPUImage.framework/Headers/GPUImageMovieComposition.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageNobleCornerDetectionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageNonMaximumSuppressionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageNormalBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageOpacityFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageOpacityFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageOpeningFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageOpeningFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageParallelCoordinateLineTransformFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePerlinNoiseFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h b/Vendor/GPUImage.framework/Headers/GPUImagePicture+TextureSubimage.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePoissonBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h b/Vendor/GPUImage.framework/Headers/GPUImagePolkaDotFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBClosingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBDilationFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBErosionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageRGBOpeningFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageRawDataInput.h b/Vendor/GPUImage.framework/Headers/GPUImageRawDataInput.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSaturationBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageShiTomasiFeatureDetectionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSingleComponentGaussianBlurFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageSolarizeFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSolarizeFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h b/Vendor/GPUImage.framework/Headers/GPUImageSolidColorGenerator.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSourceOverBlendFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageSphereRefractionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageThreeInputFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThreeInputFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThresholdSketchFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageThresholdedNonMaximumSuppressionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoInputCrossTextureSamplingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageTwoInputFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoInputFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageTwoPassTextureSamplingFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageUIElement.h b/Vendor/GPUImage.framework/Headers/GPUImageUIElement.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageVoronoiConsumerFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageWeakPixelInclusionFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageWhiteBalanceFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageZoomBlurFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h b/Vendor/GPUImage.framework/Headers/GPUImageiOSBlurFilter.h old mode 100644 new mode 100755 diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeDirectory b/Vendor/GPUImage.framework/_CodeSignature/CodeDirectory index 3e06d05d8f8676fc4542dfa029e22b4a1fac04bf..8fc3b9e04d6aa4f709bf208bb93c045993be60a4 100644 GIT binary patch delta 104 zcmV-u0GI!-0j~j&A_D9nkt8r%I5aaxOf*VZIYIzlZlS*DdE~-d_*Mjhduj%?nqIHV zw|CukAZv1`5H&>~Qv;+$8cjFDc;SUrXzt59H!i+z5?`SFv}Q;vG!>`{hYxeb>wg_V Kt12`(B|Qj@GAX+N delta 104 zcmV-u0GI!-0j~j&A_Adskt8r%M>IJ%Sy(nhLR0`=ZlS*DdE~-d_*Mjhduj%?nqIFl z_cx{R+8$rwaBQlmz3jtl@+Z#2c;SUrXzt59H!i+z5?`SFv}Q;V;=Ybvgu{Q(11X2| KkjpswkoKgToHMfk diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements b/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements index e2b0b718b0bd716123555c3e8a156ee2a48cd6b1..05a7c129f0db4fb735a5aa8407ef221b21388e06 100644 GIT binary patch delta 78 zcmX@WxQ9{Z*F7Fa1_p*bKn$Xpfmj462Ba8POq7XMQ_Bp<$j?hva7iso&B-rFEwWOG aOw3DH@F-Q#2sQFG3o^AZGV++XP#ypegB39V delta 82 zcmdnPcz{vn*F7Fa1_p)$Kn$Xpfmj462Ba9)Oq7Y%(#j0T$j?hva7iso&B-rFEwWNb e&PdHu$jQvj%u83$2s5{gbaHZbb@7=vR~`U)&KFex diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements-1 b/Vendor/GPUImage.framework/_CodeSignature/CodeRequirements-1 index 5be284c8d5a486ff1f0e5d65931794a8582fe694..0f99cb742a608e3526b11ec3dcc5504c56156612 100644 GIT binary patch delta 95 zcmV-l0HFWh0p9_TA_D9nkt8q*I5aaxOf*VZIYN8f$i@goR=c3Myo63=&ARw`8?|K*$-I+eM{n!;q9qO)^_1~3jSc>D~Te1gLPa&O! BEL#8o delta 95 zcmV-l0HFWh0p9_TA_Adskt8q*M>IJ%Sy(nhLR67nAs~>`3}nFhJq)E6{n{32-IK|> zRJeu>E}_Zv2Sb+qIa!gPARska5FdUu)bRB3nVOrba|0-4U<~o1AZkx09%U86;e9!| BD1HC{ diff --git a/Vendor/GPUImage.framework/_CodeSignature/CodeSignature b/Vendor/GPUImage.framework/_CodeSignature/CodeSignature index 667badb829e45ff612d31034a4463c7fa64d9884..ccf87fae2db337dfcf20c6ff7972730f98a5385a 100644 GIT binary patch delta 1158 zcmV;11bO@RB-A93HvxCCIOqrzjxd4*cAx_S0RjRDU|1m~4{8<|lQapje>E{RGc+_a zS{Ds5H!wIdH8C|aG&D0>FoA(F8Za0J3JH=XiIegyWB~yT3N}?kI7K-&N;pC>FEA|z z162eA3?^w%Xm4(1AVg($Wo&P7WpX+oSz&HxAV_r}C{;2|Hc~Y>GBQXhF%vKm1_MQ7Gt_TyCD)1REOk>}5p~ZKDVjw7Isex*sUAkQyBb zx`d?vr0Ly8yQUcsrxqb^!Vv!9pL){n=W#~~IRcsH?n9J^_&uZs1NXVYi-J4G2P%@A zS19TG4lfN*PNR;U{#W9yHxs`14;4-lFX%tz+afC>0^t9X!wXpya8_`@GH66v^ZBn> zfmp+*L zPK@W7OpTMseS**Z7`aufN_P!aaMSubDdb zztSSnh?~2tEtX$3=*r!9PqT+iI-YAlC4hfW?L)_4@lJc_LnqrJmZi8NMS%T5km_pc z>ef^JoIMnnoKidO4^TYQE=5~M*Olz5e6B`9T|5#1w48*D?oZX=U(%|Y!T&T6^Rigp zcZFG9qG|eriUJm?lhF>T2w+$tB@b#A7?XkzL^v@tGdMLkS}-pL2`Yw2hW8Bt2?Q}B z1R(q2Ih~qK#$l`_Ip54bQ%hDp4}Kgh1Ffr4v$#mC-};mO59>{ANlYtuQ*CN+Ge&fB za9BcFY%ee?N^L@KSTH>b2?;zeWMOn+J_-p5JY->XVLl2831LrZVK6vjPeE@>ZgfgQ zZF6}#Fx<;PE&gxG*Us(~z4Bq&e_;q~$l`cDYcW@1 zYpx^wvefy=bhJUh&;QJdm!SvT$7Vr}fR(z0n?XWUPVEB>pPb6md@UiC@!94g^hH9m zNKdD5gUd1Oa$>Tm((l&ZnD-kS6D4jg71U%)cNPn?5-SE^w2z>nj000000PK9{YXATM delta 1192 zcmV;Z1XugiB=#hbHvyTkIOqrzurPuIn4kj!0RjRDT&?yRKN$2tlQapje>N~UFgYMmAC{{N)SwccXMMO*~F%vKm z1_MJ3O3&lfrMJiUP=2HDMGW-{*@$#hB=ytE?#8?l;!e6L$_~!6n_qThu2Ftno znz2&jgN!{YUd-#&#b@mu*Xu-JAytkAow-Xs3 zAj z24Bp$Xm^TJ@B&9;tk26rD_3`_g-_|kD(j*SMiPkN(jeBbi^z(LK;G@qczNna+7Q2+ zc1Z0zz&*d#M3=xOuqWk%$yj-;Qo$$@NH-{eL35pqanz|-5*fM{ZX!eiv*VMm4yg!S zt@au}81z7sU=Kt%FgP+bH8WZ;F9r!JhDe6@4FL%RF(L#YC#IwD+8kUe>t7qA_PpZ(k$KcliUyMO-*=mbZbd9Q+Q-qXktTGaYsx=S}SN_b1zRcJqig4 zJTGKnbYVUU2?;!8VRT_W3JD2BXG3)_D_JmNH+L&*MN~~}SZP{vNODm%dQp=U5juaI ztOGrQM}GMZtlh&9A0xftPtA`1eH8)>^q++BaLT1rB54!Bel|;3gO>XHet5fnQ3;Mz z@PT(VJ^t4FAg;jtTo4@ft{}rSRaNFY*u#53!`3xJ%(axoFonk?Ba+;Y`%>bzfpg4M z1X}yHvDUyL1*ZGX;jvHn>?{QgR@Z-M`qGqh5@N21S$0r@k0j*CNKlVQrkFkB{8b#M zJj+I|*HKH&y9`8%gyyFc3sX!z9@brGk_0F96WS*^2pI+ z$EQwYNOn4Ra%T3_>HOT8v-1n*&KE9Ryma}>^&2o;y!|q(#RR)gdCmR*tW45^;3|u#aX)j$l(#U+utl51>W`-Y1 z(Y^6sQPU~D@`4(HuXlN5vEo=RT+iKOq6EK5Tb&K(_ zMzVXp5?&`cWpcV~`me%FTlWJmbeY*B#Z#S71JgL`dcNhVVyP%SVeY`OsWZAO6gQ;e z%B`ZfPVI+MOIltnO6?R?tM$z_MH0lTl5}%M7w~Y03|3x3!cFkcHkAfgAectKEoH-g>Ud3e!x%og)yGMQ#gwka0Rd8 Xr`W(0n|O#l6bFVs87(C_N%;A1h+XLP diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeDirectory b/Vendor/pili_librtmp.framework/_CodeSignature/CodeDirectory deleted file mode 100644 index e21da5422327f3c2c548d8fc49b1b56f012f6b9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmex$kB5nYfngZ~6NmzXNkGyBh?#+yk%8^d2N6cFIE?U4&d=4W%rDI@)ho!%$<)os zOe!kLEnsjru{4j2FmrYaVJKp}axvIoW^mU<%L~U^lNMZz{iig;A?2OFar7RxL}S}0 zJzGu+@a@^sBXVUYR~*CDO}p#5Vs=a^UC0_M&$nqK*W^#yisEx3Qr_MbFFeN@Pz(U6 CqBbW0 diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements b/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements deleted file mode 100644 index cb010c30f237ec7f5aa44e93dcdd792e4f379548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmex$kB53`u3lw+X?CezL1s>-Zcb)W zQAutAPzIugA4+qBMHm>kic6ESQj<&coc+KeAhWbG12XdSQWacM%Tjal3sQ@$6p}Mi t^AvJ2b2IbO6*R)kEhC+roLyafG{JiKfFwvCmsXoc+xO%YHYN}c2moubBVPaj diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements-1 b/Vendor/pili_librtmp.framework/_CodeSignature/CodeRequirements-1 deleted file mode 100644 index a1617f145961f44972829c06dd7d08ea2c329e6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmex$kB5nYf#Dhh6NmzXZ9vilh?#+yk%8^d2L-qkSl&B1KUc3Zzcjm4uOKrgQ#U6w zsi-8kfWh6w(mXQ4%-Jb~f%~-BOWVEt`)~KM%-#5Nw$tn~L)K>{_fow|0*|+DIAnO^ z#ebuYCYR+W-uk}X+}~q&QJ|}&=ORPTsis^H-pTIUY|idmFpD=n;Mz&Cjh5O^gp#Vy z>^k26;A7_X{(W2iv!79WW?jep>BWyz6+iFf9Nh7B*82?)4=4Hyb(9|S(ahf80{}C{ BSF`{C diff --git a/Vendor/pili_librtmp.framework/pili_librtmp b/Vendor/pili_librtmp.framework/pili_librtmp deleted file mode 100644 index 598a5476aef225d8ada132a05758aab1bddc61e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443120 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 SKcfM@h(f*Pf!nJ4ZT$gxDo_{z diff --git a/Vendor/pili_librtmp.framework/Headers/amf.h b/Vendor/pili_rtmp.framework/Headers/amf.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/amf.h rename to Vendor/pili_rtmp.framework/Headers/amf.h diff --git a/Vendor/pili_librtmp.framework/Headers/bytes.h b/Vendor/pili_rtmp.framework/Headers/bytes.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/bytes.h rename to Vendor/pili_rtmp.framework/Headers/bytes.h diff --git a/Vendor/pili_librtmp.framework/Headers/dh.h b/Vendor/pili_rtmp.framework/Headers/dh.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/dh.h rename to Vendor/pili_rtmp.framework/Headers/dh.h diff --git a/Vendor/pili_librtmp.framework/Headers/dhgroups.h b/Vendor/pili_rtmp.framework/Headers/dhgroups.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/dhgroups.h rename to Vendor/pili_rtmp.framework/Headers/dhgroups.h diff --git a/Vendor/pili_librtmp.framework/Headers/error.h b/Vendor/pili_rtmp.framework/Headers/error.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/error.h rename to Vendor/pili_rtmp.framework/Headers/error.h diff --git a/Vendor/pili_librtmp.framework/Headers/handshake.h b/Vendor/pili_rtmp.framework/Headers/handshake.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/handshake.h rename to Vendor/pili_rtmp.framework/Headers/handshake.h diff --git a/Vendor/pili_librtmp.framework/Headers/http.h b/Vendor/pili_rtmp.framework/Headers/http.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/http.h rename to Vendor/pili_rtmp.framework/Headers/http.h diff --git a/Vendor/pili_librtmp.framework/Headers/log.h b/Vendor/pili_rtmp.framework/Headers/log.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/log.h rename to Vendor/pili_rtmp.framework/Headers/log.h diff --git a/Vendor/pili_librtmp.framework/Headers/rtmp.h b/Vendor/pili_rtmp.framework/Headers/rtmp.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/rtmp.h rename to Vendor/pili_rtmp.framework/Headers/rtmp.h diff --git a/Vendor/pili_librtmp.framework/Headers/rtmp_sys.h b/Vendor/pili_rtmp.framework/Headers/rtmp_sys.h similarity index 100% rename from Vendor/pili_librtmp.framework/Headers/rtmp_sys.h rename to Vendor/pili_rtmp.framework/Headers/rtmp_sys.h diff --git a/Vendor/pili_rtmp.framework/Info.plist b/Vendor/pili_rtmp.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..f7c081a240659768bf6cd2b982cafaa88ffd57f3 GIT binary patch literal 730 zcmZWl%Wl&^6rDS~N`Yq5&_W6Y8s0C<#*~N^QtAeUC{2i+G=);jaVE*Y_#wxx67dcF z0d~Ni1z*4tvEc()AR$$(*s@^(wy|j??&i+ibI-l!+^);n$QQ-0WDf9wgNF_unL0Xs z?D&b949U*sPR`ArI-OrQb9V9E`3r^liTR_u;R%>Y%ZA1H zL?_ujUkPtBIc0LXY`Rxv1KaQeFLasNBgI`Cp$4XVzU69SQI?)Ecj(yE8QmA;wj{6K zk;NvpA4@H1`JpUzQdBF~)~l){h_9DAtPwHls(Mclby6@LOE6rQQz3lC21f$t+m>K* z!yX8dE~>?-F&j0G$73N9a61z4=IS*91gp{Nq9TdXUF|^_XbLT(5_*I*q@$N;2fan_ z(MPlk7z$8?613nsOkf9I!8`Z>pWrimfp4%2-{A-RgkSI*1D?h+SjI(M#cQ~Mo4Adi Qp*S%7&FEH=lZ3l}0ND@VGynhq literal 0 HcmV?d00001 diff --git a/Vendor/pili_rtmp.framework/_CodeSignature/CodeDirectory b/Vendor/pili_rtmp.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000000000000000000000000000000000000..2500b5d3751a35903102e690be10e1369023f119 GIT binary patch literal 161 zcmex$kB5nYfngy76NmzXULa`##LPg<$iQ~cL4*-34kO%>^Ki%YK@4cM9nR)WYqj8~EN-W=85Sp0XAf+erMaWF1_r(HxkrP^a xGwKzq!%hSwDDE%Z_S8Kxad*dqm7)>1XD%~b&NV4@gJ@{7{-3Bme|l#idDEsmUdJ&VFD%$Q-rIfQBO|W`CAPLgLrPb!q_B}a;jS0j90swUoA0hw% literal 0 HcmV?d00001 diff --git a/Vendor/pili_rtmp.framework/_CodeSignature/CodeRequirements-1 b/Vendor/pili_rtmp.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000000000000000000000000000000000000..379b63d9307243a32ad654a39c37916db0ee6096 GIT binary patch literal 209 zcmex$kB5nYf#D(p6NmzXjX=@_h?#+yk%8@?g92O%Ebo?_pQ~3u Info.plist - jBTUuQpeANWyu36KXLiUdaEFXR8= + IXtWyFBgIb9xtuVHWWG7iOCpFVg= files2 diff --git a/Vendor/pili_librtmp.framework/_CodeSignature/CodeSignature b/Vendor/pili_rtmp.framework/_CodeSignature/CodeSignature similarity index 58% rename from Vendor/pili_librtmp.framework/_CodeSignature/CodeSignature rename to Vendor/pili_rtmp.framework/_CodeSignature/CodeSignature index 97a31c1089808b44b9a31f81e241da4e518743d1..e99dddb42f047c7e62a0160be4eced74e5b337e6 100644 GIT binary patch delta 1158 zcmV;11bO@RB-A93HvxCCIOqrzjxd4*cAx_S0RjRDU|1m~4{8<|lQapje>E{RGc+_a zS{Ds5H!wIdH8C|aG&D0>FoA(F8Za0J3JH=XiIegyWB~yT3N}?kI7K-&N;pC>FEA|z z162eA3?^w%Xm4(1AVg($Wo&P7WpX+oSz&HxAV_r}C{;2|Hc~Y>GBQXhF%vKm1_MQ7Gt_TyCD)1REOk>}5p~ZKDVjw7Isex*sUAkQyBb zx`d?vr0Ly8yQUcsrxqb^!Vv!9pL){n=W#~~IRcsH?n9J^_&uZs1NXVYi-J4G2P%@A zS19TG4lfN*PNR;U{#W9yHxs`14;4-lFX%tz+afC>0^t9X!wXpya8_`@GH66v^ZBn> zfmp+*L zPK@W7OpTMseS**Z7`aufN_P!aaMSubDdb zztSSnh?~2tEtX$3=*r!9PqT+iI-YAlC4hfW?L)_4@lJc_LnqrJmZi8NMS%T5km_pc z>ef^JoIMnnoKidO4^TYQE=5~M*Olz5e6B`9T|5#1w48*D?oZX=U(%|Y!T&T6^Rigp zcZFG9qG|eriUJm?lhF>T2w+$tB@b#A7?XkzL^v@tGc_?eS}-pL2`Yw2hW8Bt2?Q}B z1R&|Nep(DPX6Cmy^UUKk&#Tte|8+bgb)r*J&UI7T^_-Lb59>`>addBba#u!kdQ4V& zZ)tB~ZE7}7HbGQQYEeB32?;zeWMOn+J_-p5JY->XVLl282}No~MqyV@Q*v5sICVL6 zO*L3DX?at2ZaHa5lQt1Lf3%;Jkg-EPPrD(~P9_U~eIh0R$16(}#kUoo4~73)xW>rD z!exk)j6SP<0>ETjZmtkoYx5Z6urC?uQi2VAgEk`vfuP@_-q%UwsPzGfkb|w0-TLD(`EF~LK6m2Uq1)>=j|Pd8C7dk5LP}H&cTgU78)%rf3!s#ulg;?zu`iD zvgSY7A)ydWRvfj0e0~M2sfM+7$iGH$7bCxXomx>#F-<6WxxV7pwHSp^1RIx;y?d%# zwfx_@J~n2OaB@RIO#8Nl>frq)EF-<`X4g%g(S(P+*uyZlV9*9ZioKP**RLdLVH%I* YP)rSjK`J|uA4|;)2zBxR000000DAxEL;wH) delta 1192 zcmV;Z1XugiB=#hbHvyTkIOqrzurPuIn4kj!0RjRDT&?yRKN$2tlQapje>N~UFgYMmAC{{N)SwccXMMO*~F%vKm z1_MJ3O3&lfrMJiUP=2HDMGW-{*@$#hB=ytE?#8?l;!e6L$_~!6n_qThu2Ftno znz2&jgN!{YUd-#&#b@mu*Xu-JAytkAow-Xs3 zAj z24Bp$Xm^TJ@B&9;tk26rD_3`_g-_|kD(j*SMiPkN(jeBbi^z(LK;G@qczNna+7Q2+ zc1Z0zz&*d#M3=xOuqWk%$yj-;Qo$$@NH-{eL35pqanz|-5*fM{ZX!eiv*VMm4yg!S zt@au}81z7sU=Kt%FgP+cHZWQ+F9r!JhDe6@4FL%RF(L#Ykb2qvX!!GW`%BdlKZDH9 zY%HVb#GKFM=qIoZRZo>_liUyMO=VG0Zb3w9F*QV0X?RI&XhlUZb!1dSdSOg3Jqig4 zJTGKnbYVUU2?;!8VRT_W3JD2Vd1F{(R#A0XD@;{SSXXR$Qch)9Vq#=ZX={@d5juaP z{}Q(x5Qjp0Mw`%Xw3R55VK7y^wXsMqNddY;6ZCfTrwa=LnehC7@?B{qVCn$BT$#da zt{E#ja*+GEW&h%zO)Nc+%6rQz?-}*C8AB{xl$|wDX1tw!0+|ywbs}Sc3|Km)9qj?t zi<2rZ`Dm62JwJ{*{BR?}X#t2na0F@1M;t_5i+o9po zEal(;zj9CHp>kgHti4r3|1y4JX^X%qeghgL;m5}s?^ZTi6j9-}CAM2nemV#OM*si- G0001-5BPro diff --git a/Vendor/pili_rtmp.framework/pili_rtmp b/Vendor/pili_rtmp.framework/pili_rtmp new file mode 100644 index 0000000000000000000000000000000000000000..7bc52dc17054bde811a9b9c58213f06aa6725951 GIT binary patch literal 873808 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�^%n)R#wRZqwLjmy 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 z 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�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�W=S}u;jwI$mQpnA9}6%;PJ>qzlF01KgW;Z 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%0D#U_<`fYNZl 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